Merge lp:~stevenk/launchpad/imports-once-more-with-feeling into lp:launchpad

Proposed by Steve Kowalik
Status: Merged
Approved by: Steve Kowalik
Approved revision: no longer in the source branch.
Merged at revision: 15001
Proposed branch: lp:~stevenk/launchpad/imports-once-more-with-feeling
Merge into: lp:launchpad
Diff against target: 528 lines (+78/-56)
27 files modified
lib/lp/blueprints/tests/test_workitem_migration.py (+2/-4)
lib/lp/blueprints/workitemmigration.py (+0/-1)
lib/lp/bugs/scripts/bugexport.py (+4/-1)
lib/lp/bugs/scripts/bugimport.py (+19/-5)
lib/lp/code/browser/branch.py (+1/-3)
lib/lp/code/bzr.py (+1/-0)
lib/lp/codehosting/scripts/tests/test_upgrade_all_branches.py (+2/-2)
lib/lp/codehosting/tests/test_upgrade.py (+9/-6)
lib/lp/codehosting/upgrade.py (+5/-2)
lib/lp/registry/browser/pillar.py (+4/-5)
lib/lp/registry/browser/product.py (+1/-3)
lib/lp/registry/browser/tests/test_pillar_sharing.py (+1/-2)
lib/lp/registry/interfaces/productjob.py (+0/-1)
lib/lp/registry/interfaces/webservice.py (+1/-1)
lib/lp/registry/model/productjob.py (+2/-6)
lib/lp/registry/services/sharingservice.py (+2/-3)
lib/lp/registry/subscribers.py (+0/-1)
lib/lp/registry/tests/test_pillar.py (+0/-1)
lib/lp/registry/tests/test_productjob.py (+0/-1)
lib/lp/registry/tests/test_subscribers.py (+1/-2)
lib/lp/scripts/utilities/warninghandler.py (+4/-1)
lib/lp/services/enterpriseid.py (+1/-0)
lib/lp/services/feeds/tests/helper.py (+5/-1)
lib/lp/services/scripts/tests/loglevels.py (+4/-1)
lib/lp/services/webapp/authorization.py (+4/-1)
lib/lp/services/webapp/tests/test_session.py (+1/-1)
lib/lp/testing/keyserver/testkeyserver.tac (+4/-1)
To merge this branch: bzr merge lp:~stevenk/launchpad/imports-once-more-with-feeling
Reviewer Review Type Date Requested Status
Ian Booth (community) Approve
Review via email: mp+98944@code.launchpad.net

Commit message

Clean imports, once more with feeling.

Description of the change

While working on a different branch, I noticed some files that put multiple imports on one line, which is against our coding standards. I have gone through and fixed the ones under lib/lp, and then ran format-imports for good measure.

To post a comment you must log in.
Revision history for this message
Ian Booth (wallyworld) wrote :

Mechanical change, looks good.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/blueprints/tests/test_workitem_migration.py'
2--- lib/lp/blueprints/tests/test_workitem_migration.py 2012-03-02 16:49:21 +0000
3+++ lib/lp/blueprints/tests/test_workitem_migration.py 2012-03-23 00:16:22 +0000
4@@ -5,15 +5,13 @@
5
6 from textwrap import dedent
7
8-from testtools.matchers import (
9- MatchesStructure,
10- )
11+from testtools.matchers import MatchesStructure
12
13 from lp.blueprints.enums import SpecificationWorkItemStatus
14 from lp.blueprints.workitemmigration import (
15 extractWorkItemsFromWhiteboard,
16+ WorkItemParseError,
17 WorkitemParser,
18- WorkItemParseError,
19 )
20 from lp.testing import (
21 TestCase,
22
23=== modified file 'lib/lp/blueprints/workitemmigration.py'
24--- lib/lp/blueprints/workitemmigration.py 2012-03-02 16:49:21 +0000
25+++ lib/lp/blueprints/workitemmigration.py 2012-03-23 00:16:22 +0000
26@@ -18,7 +18,6 @@
27 from zope.security.proxy import removeSecurityProxy
28
29 from lp.blueprints.enums import SpecificationWorkItemStatus
30-
31 from lp.registry.interfaces.person import IPersonSet
32
33
34
35=== modified file 'lib/lp/bugs/scripts/bugexport.py'
36--- lib/lp/bugs/scripts/bugexport.py 2011-12-22 05:37:22 +0000
37+++ lib/lp/bugs/scripts/bugexport.py 2012-03-23 00:16:22 +0000
38@@ -18,7 +18,10 @@
39 from zope.component import getUtility
40 from lp.app.interfaces.launchpad import ILaunchpadCelebrities
41 from lp.services.librarian.browser import ProxiedLibraryFileAlias
42-from lp.bugs.interfaces.bugtask import BugTaskSearchParams, IBugTaskSet
43+from lp.bugs.interfaces.bugtask import (
44+ BugTaskSearchParams,
45+ IBugTaskSet,
46+ )
47 from lp.bugs.browser.bugtask import get_comments_for_bugtask
48
49 BUGS_XMLNS = 'https://launchpad.net/xmlns/2006/bugs'
50
51=== modified file 'lib/lp/bugs/scripts/bugimport.py'
52--- lib/lp/bugs/scripts/bugimport.py 2012-03-16 03:50:33 +0000
53+++ lib/lp/bugs/scripts/bugimport.py 2012-03-23 00:16:22 +0000
54@@ -40,15 +40,29 @@
55 from lp.app.interfaces.launchpad import ILaunchpadCelebrities
56 from lp.services.librarian.interfaces import ILibraryFileAliasSet
57 from lp.services.messages.interfaces.message import IMessageSet
58-from lp.bugs.interfaces.bug import CreateBugParams, IBugSet
59+from lp.bugs.interfaces.bug import (
60+ CreateBugParams,
61+ IBugSet,
62+ )
63 from lp.bugs.interfaces.bugactivity import IBugActivitySet
64 from lp.bugs.interfaces.bugattachment import (
65- BugAttachmentType, IBugAttachmentSet)
66-from lp.bugs.interfaces.bugtask import BugTaskImportance, BugTaskStatus
67+ BugAttachmentType,
68+ IBugAttachmentSet,
69+ )
70+from lp.bugs.interfaces.bugtask import (
71+ BugTaskImportance,
72+ BugTaskStatus,
73+ )
74 from lp.bugs.interfaces.bugtracker import IBugTrackerSet
75-from lp.bugs.interfaces.bugwatch import IBugWatchSet, NoBugTrackerFound
76+from lp.bugs.interfaces.bugwatch import (
77+ IBugWatchSet,
78+ NoBugTrackerFound,
79+ )
80 from lp.bugs.interfaces.cve import ICveSet
81-from lp.registry.interfaces.person import IPersonSet, PersonCreationRationale
82+from lp.registry.interfaces.person import (
83+ IPersonSet,
84+ PersonCreationRationale,
85+ )
86 from lp.bugs.scripts.bugexport import BUGS_XMLNS
87
88
89
90=== modified file 'lib/lp/code/browser/branch.py'
91--- lib/lp/code/browser/branch.py 2012-03-07 00:58:37 +0000
92+++ lib/lp/code/browser/branch.py 2012-03-23 00:16:22 +0000
93@@ -121,9 +121,7 @@
94 from lp.code.interfaces.branchmergeproposal import IBranchMergeProposal
95 from lp.code.interfaces.branchnamespace import IBranchNamespacePolicy
96 from lp.code.interfaces.codereviewvote import ICodeReviewVoteReference
97-from lp.registry.interfaces.person import (
98- IPersonSet,
99- )
100+from lp.registry.interfaces.person import IPersonSet
101 from lp.registry.interfaces.productseries import IProductSeries
102 from lp.registry.vocabularies import UserTeamsParticipationPlusSelfVocabulary
103 from lp.services import searchbuilder
104
105=== modified file 'lib/lp/code/bzr.py'
106--- lib/lp/code/bzr.py 2012-02-24 16:51:25 +0000
107+++ lib/lp/code/bzr.py 2012-03-23 00:16:22 +0000
108@@ -18,6 +18,7 @@
109 # FIRST Ensure correct plugins are loaded. Do not delete this comment or the
110 # line below this comment.
111 import lp.codehosting
112+
113 # Silence lint warning.
114 lp.codehosting
115
116
117=== modified file 'lib/lp/codehosting/scripts/tests/test_upgrade_all_branches.py'
118--- lib/lp/codehosting/scripts/tests/test_upgrade_all_branches.py 2012-03-08 20:18:51 +0000
119+++ lib/lp/codehosting/scripts/tests/test_upgrade_all_branches.py 2012-03-23 00:16:22 +0000
120@@ -4,15 +4,15 @@
121 __metaclass__ = type
122
123
124+import logging
125 import os.path
126-import logging
127
128 from bzrlib.repofmt.groupcompress_repo import RepositoryFormat2a
129 import transaction
130
131 from lp.code.bzr import branch_changed
132+from lp.codehosting.tests.test_upgrade import upgrade_target
133 from lp.codehosting.upgrade import Upgrader
134-from lp.codehosting.tests.test_upgrade import upgrade_target
135 from lp.testing import (
136 person_logged_in,
137 run_script,
138
139=== modified file 'lib/lp/codehosting/tests/test_upgrade.py'
140--- lib/lp/codehosting/tests/test_upgrade.py 2012-03-08 20:18:51 +0000
141+++ lib/lp/codehosting/tests/test_upgrade.py 2012-03-23 00:16:22 +0000
142@@ -8,23 +8,26 @@
143 from os.path import dirname
144
145 from bzrlib.branch import Branch
146-from bzrlib.bzrdir import BzrDir, format_registry
147+from bzrlib.bzrdir import (
148+ BzrDir,
149+ format_registry,
150+ )
151 from bzrlib.plugins.loom.branch import loomify
152 from bzrlib.repofmt.groupcompress_repo import (
153- RepositoryFormat2a, RepositoryFormat2aSubtree)
154+ RepositoryFormat2a,
155+ RepositoryFormat2aSubtree,
156+ )
157 from bzrlib.revision import NULL_REVISION
158 from bzrlib.transport import get_transport
159
160 from lp.code.bzr import (
161+ branch_changed,
162 BranchFormat,
163- branch_changed,
164 get_branch_formats,
165 RepositoryFormat,
166 )
167 from lp.codehosting.bzrutils import read_locked
168-from lp.codehosting.upgrade import (
169- Upgrader,
170- )
171+from lp.codehosting.upgrade import Upgrader
172 from lp.services.config import config
173 from lp.testing import (
174 temp_dir,
175
176=== modified file 'lib/lp/codehosting/upgrade.py'
177--- lib/lp/codehosting/upgrade.py 2012-02-07 16:53:15 +0000
178+++ lib/lp/codehosting/upgrade.py 2012-03-23 00:16:22 +0000
179@@ -18,7 +18,10 @@
180 from shutil import rmtree
181 from tempfile import mkdtemp
182
183-from bzrlib.bzrdir import BzrDir, format_registry
184+from bzrlib.bzrdir import (
185+ BzrDir,
186+ format_registry,
187+ )
188 from bzrlib.errors import UpToDateFormat
189 from bzrlib.plugins.loom.formats import (
190 NotALoom,
191@@ -27,7 +30,6 @@
192 from bzrlib.repofmt.groupcompress_repo import RepositoryFormat2aSubtree
193 from bzrlib.upgrade import upgrade
194
195-from lp.services.database.lpstorm import IStore
196 from lp.code.bzr import (
197 branch_changed,
198 RepositoryFormat,
199@@ -35,6 +37,7 @@
200 from lp.code.model.branch import Branch
201 from lp.codehosting.bzrutils import read_locked
202 from lp.codehosting.vfs.branchfs import get_real_branch_path
203+from lp.services.database.lpstorm import IStore
204
205
206 class AlreadyUpgraded(Exception):
207
208=== modified file 'lib/lp/registry/browser/pillar.py'
209--- lib/lp/registry/browser/pillar.py 2012-03-22 22:30:38 +0000
210+++ lib/lp/registry/browser/pillar.py 2012-03-23 00:16:22 +0000
211@@ -16,11 +16,10 @@
212
213
214 from operator import attrgetter
215-import simplejson
216
217 from lazr.restful import ResourceJSONEncoder
218 from lazr.restful.interfaces import IJSONRequestCache
219-
220+import simplejson
221 from zope.component import getUtility
222 from zope.interface import (
223 implements,
224@@ -32,11 +31,11 @@
225
226 from lp.app.browser.launchpad import iter_view_registrations
227 from lp.app.browser.tales import MenuAPI
228+from lp.app.browser.vocabulary import vocabulary_filters
229 from lp.app.enums import (
230 service_uses_launchpad,
231 ServiceUsage,
232 )
233-from lp.app.browser.vocabulary import vocabulary_filters
234 from lp.app.interfaces.launchpad import IServiceUsage
235 from lp.app.interfaces.services import IService
236 from lp.bugs.browser.structuralsubscription import (
237@@ -50,13 +49,13 @@
238 IDistributionSourcePackage,
239 )
240 from lp.registry.interfaces.distroseries import IDistroSeries
241+from lp.registry.interfaces.person import IPersonSet
242 from lp.registry.interfaces.pillar import IPillar
243 from lp.registry.interfaces.projectgroup import IProjectGroup
244-from lp.registry.interfaces.person import IPersonSet
245 from lp.registry.model.pillar import PillarPerson
246 from lp.services.config import config
247+from lp.services.features import getFeatureFlag
248 from lp.services.propertycache import cachedproperty
249-from lp.services.features import getFeatureFlag
250 from lp.services.webapp.authorization import check_permission
251 from lp.services.webapp.batching import (
252 BatchNavigator,
253
254=== modified file 'lib/lp/registry/browser/product.py'
255--- lib/lp/registry/browser/product.py 2012-03-19 13:47:09 +0000
256+++ lib/lp/registry/browser/product.py 2012-03-23 00:16:22 +0000
257@@ -194,9 +194,7 @@
258 from lp.services.webapp.authorization import check_permission
259 from lp.services.webapp.batching import BatchNavigator
260 from lp.services.webapp.breadcrumb import Breadcrumb
261-from lp.services.webapp.interfaces import (
262- UnsafeFormGetSubmissionError,
263- )
264+from lp.services.webapp.interfaces import UnsafeFormGetSubmissionError
265 from lp.services.webapp.menu import NavigationMenu
266 from lp.services.worlddata.helpers import browser_languages
267 from lp.services.worlddata.interfaces.country import ICountry
268
269=== modified file 'lib/lp/registry/browser/tests/test_pillar_sharing.py'
270--- lib/lp/registry/browser/tests/test_pillar_sharing.py 2012-03-22 22:30:38 +0000
271+++ lib/lp/registry/browser/tests/test_pillar_sharing.py 2012-03-23 00:16:22 +0000
272@@ -5,10 +5,9 @@
273
274 __metaclass__ = type
275
276-import simplejson
277-
278 from BeautifulSoup import BeautifulSoup
279 from lazr.restful.interfaces import IJSONRequestCache
280+import simplejson
281 from testtools.matchers import (
282 LessThan,
283 MatchesException,
284
285=== modified file 'lib/lp/registry/interfaces/productjob.py'
286--- lib/lp/registry/interfaces/productjob.py 2012-03-19 20:22:48 +0000
287+++ lib/lp/registry/interfaces/productjob.py 2012-03-23 00:16:22 +0000
288@@ -17,7 +17,6 @@
289
290 from lp import _
291 from lp.registry.interfaces.product import IProduct
292-
293 from lp.services.job.interfaces.job import (
294 IJob,
295 IJobSource,
296
297=== modified file 'lib/lp/registry/interfaces/webservice.py'
298--- lib/lp/registry/interfaces/webservice.py 2012-03-08 03:12:23 +0000
299+++ lib/lp/registry/interfaces/webservice.py 2012-03-23 00:16:22 +0000
300@@ -44,7 +44,6 @@
301 # import bugs. Break this up into a per-package thing.
302 from lp import _schema_circular_imports
303 from lp.app.interfaces.services import IServiceFactory
304-from lp.registry.interfaces.sharingservice import ISharingService
305 from lp.registry.interfaces.commercialsubscription import (
306 ICommercialSubscription,
307 )
308@@ -98,6 +97,7 @@
309 IProjectGroup,
310 IProjectGroupSet,
311 )
312+from lp.registry.interfaces.sharingservice import ISharingService
313 from lp.registry.interfaces.sourcepackage import ISourcePackage
314 from lp.registry.interfaces.sourcepackagename import ISourcePackageName
315 from lp.registry.interfaces.ssh import ISSHKey
316
317=== modified file 'lib/lp/registry/model/productjob.py'
318--- lib/lp/registry/model/productjob.py 2012-03-19 20:36:29 +0000
319+++ lib/lp/registry/model/productjob.py 2012-03-23 00:16:22 +0000
320@@ -10,9 +10,7 @@
321
322 from lazr.delegates import delegates
323 import simplejson
324-from storm.expr import (
325- And,
326- )
327+from storm.expr import And
328 from storm.locals import (
329 Int,
330 Reference,
331@@ -24,9 +22,7 @@
332 )
333
334 from lp.registry.enums import ProductJobType
335-from lp.registry.interfaces.product import (
336- IProduct,
337- )
338+from lp.registry.interfaces.product import IProduct
339 from lp.registry.interfaces.productjob import (
340 IProductJob,
341 IProductJobSource,
342
343=== modified file 'lib/lp/registry/services/sharingservice.py'
344--- lib/lp/registry/services/sharingservice.py 2012-03-22 09:00:36 +0000
345+++ lib/lp/registry/services/sharingservice.py 2012-03-23 00:16:22 +0000
346@@ -10,7 +10,6 @@
347
348 from lazr.restful.interfaces import IWebBrowserOriginatingRequest
349 from lazr.restful.utils import get_current_web_service_request
350-
351 from zope.component import getUtility
352 from zope.interface import implements
353 from zope.security.interfaces import Unauthorized
354@@ -22,13 +21,13 @@
355 )
356 from lp.registry.interfaces.accesspolicy import (
357 IAccessArtifactGrantSource,
358- IAccessPolicySource,
359 IAccessPolicyGrantFlatSource,
360 IAccessPolicyGrantSource,
361+ IAccessPolicySource,
362 )
363-from lp.registry.interfaces.sharingservice import ISharingService
364 from lp.registry.interfaces.product import IProduct
365 from lp.registry.interfaces.projectgroup import IProjectGroup
366+from lp.registry.interfaces.sharingservice import ISharingService
367 from lp.registry.model.person import Person
368 from lp.services.features import getFeatureFlag
369 from lp.services.webapp.authorization import available_with_permission
370
371=== modified file 'lib/lp/registry/subscribers.py'
372--- lib/lp/registry/subscribers.py 2012-03-20 14:59:48 +0000
373+++ lib/lp/registry/subscribers.py 2012-03-23 00:16:22 +0000
374@@ -12,7 +12,6 @@
375 import textwrap
376
377 import pytz
378-
379 from zope.security.proxy import removeSecurityProxy
380
381 from lp.registry.interfaces.person import IPerson
382
383=== modified file 'lib/lp/registry/tests/test_pillar.py'
384--- lib/lp/registry/tests/test_pillar.py 2012-03-09 19:46:33 +0000
385+++ lib/lp/registry/tests/test_pillar.py 2012-03-23 00:16:22 +0000
386@@ -10,7 +10,6 @@
387 IPillarPerson,
388 )
389 from lp.registry.model.pillar import PillarPerson
390-
391 from lp.testing import (
392 login,
393 TestCaseWithFactory,
394
395=== modified file 'lib/lp/registry/tests/test_productjob.py'
396--- lib/lp/registry/tests/test_productjob.py 2012-03-19 20:18:41 +0000
397+++ lib/lp/registry/tests/test_productjob.py 2012-03-23 00:16:22 +0000
398@@ -11,7 +11,6 @@
399 )
400
401 import pytz
402-
403 from zope.interface import (
404 classProvides,
405 implements,
406
407=== modified file 'lib/lp/registry/tests/test_subscribers.py'
408--- lib/lp/registry/tests/test_subscribers.py 2012-03-20 14:59:48 +0000
409+++ lib/lp/registry/tests/test_subscribers.py 2012-03-23 00:16:22 +0000
410@@ -7,10 +7,9 @@
411
412 from datetime import datetime
413
414+from lazr.lifecycle.event import ObjectModifiedEvent
415 import pytz
416-
417 from zope.security.proxy import removeSecurityProxy
418-from lazr.lifecycle.event import ObjectModifiedEvent
419
420 from lp.registry.interfaces.product import License
421 from lp.registry.subscribers import (
422
423=== modified file 'lib/lp/scripts/utilities/warninghandler.py'
424--- lib/lp/scripts/utilities/warninghandler.py 2011-06-23 12:23:05 +0000
425+++ lib/lp/scripts/utilities/warninghandler.py 2012-03-23 00:16:22 +0000
426@@ -58,7 +58,10 @@
427 return '\n'.join(L)
428
429 # PageTemplateFile has .filename.
430-from z3c.ptcompat import PageTemplateFile, ViewPageTemplateFile
431+from z3c.ptcompat import (
432+ PageTemplateFile,
433+ ViewPageTemplateFile,
434+ )
435
436 # PythonExpr has .text, the text of the expression.
437 from zope.tales.pythonexpr import PythonExpr
438
439=== modified file 'lib/lp/services/enterpriseid.py'
440--- lib/lp/services/enterpriseid.py 2012-03-05 08:15:08 +0000
441+++ lib/lp/services/enterpriseid.py 2012-03-23 00:16:22 +0000
442@@ -14,6 +14,7 @@
443 from lp.registry.model.person import Person
444 from lp.services.config import config
445
446+
447 known_types = {
448 'Person': Person,
449 }
450
451=== modified file 'lib/lp/services/feeds/tests/helper.py'
452--- lib/lp/services/feeds/tests/helper.py 2011-12-24 17:49:30 +0000
453+++ lib/lp/services/feeds/tests/helper.py 2012-03-23 00:16:22 +0000
454@@ -26,7 +26,11 @@
455 from cStringIO import StringIO
456 from textwrap import wrap
457
458-from zope.interface import implements, Interface, Attribute
459+from zope.interface import (
460+ Attribute,
461+ implements,
462+ Interface,
463+ )
464 from BeautifulSoup import BeautifulStoneSoup as BSS
465 from BeautifulSoup import SoupStrainer
466
467
468=== modified file 'lib/lp/services/scripts/tests/loglevels.py'
469--- lib/lp/services/scripts/tests/loglevels.py 2011-12-21 19:44:48 +0000
470+++ lib/lp/services/scripts/tests/loglevels.py 2012-03-23 00:16:22 +0000
471@@ -20,7 +20,10 @@
472
473 from optparse import OptionParser
474
475-from lp.services.scripts.logger import logger, logger_options
476+from lp.services.scripts.logger import (
477+ logger,
478+ logger_options,
479+ )
480
481 parser = OptionParser()
482 logger_options(parser)
483
484=== modified file 'lib/lp/services/webapp/authorization.py'
485--- lib/lp/services/webapp/authorization.py 2012-03-18 01:26:52 +0000
486+++ lib/lp/services/webapp/authorization.py 2012-03-23 00:16:22 +0000
487@@ -20,7 +20,10 @@
488 from zope.proxy import removeAllProxies
489 from zope.publisher.interfaces import IApplicationRequest
490 from zope.security.checker import CheckerPublic
491-from zope.security.interfaces import ISecurityPolicy, Unauthorized
492+from zope.security.interfaces import (
493+ ISecurityPolicy,
494+ Unauthorized,
495+ )
496 from zope.security.management import (
497 checkPermission as zcheckPermission,
498 getInteraction,
499
500=== modified file 'lib/lp/services/webapp/tests/test_session.py'
501--- lib/lp/services/webapp/tests/test_session.py 2012-02-29 10:35:12 +0000
502+++ lib/lp/services/webapp/tests/test_session.py 2012-03-23 00:16:22 +0000
503@@ -6,8 +6,8 @@
504
505 from lp.services.webapp.servers import LaunchpadTestRequest
506 from lp.services.webapp.session import (
507+ get_cookie_domain,
508 LaunchpadCookieClientIdManager,
509- get_cookie_domain,
510 )
511
512
513
514=== modified file 'lib/lp/testing/keyserver/testkeyserver.tac'
515--- lib/lp/testing/keyserver/testkeyserver.tac 2011-12-29 05:29:36 +0000
516+++ lib/lp/testing/keyserver/testkeyserver.tac 2012-03-23 00:16:22 +0000
517@@ -4,7 +4,10 @@
518 # Twisted Application Configuration file.
519 # Use with "twistd -y <file.tac>", e.g. "twistd -noy server.tac"
520
521-from twisted.application import service, strports
522+from twisted.application import (
523+ service,
524+ strports,
525+ )
526 from twisted.web import server
527
528 from lp.services.config import config