← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~jml/launchpad/patmos-2 into lp:launchpad/devel

 

Jonathan Lange has proposed merging lp:~jml/launchpad/patmos-2 into lp:launchpad/devel with lp:~jml/launchpad/patmos-1 as a prerequisite.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)


This branch changes the webservice registration to be explicit for all objects, thus removing another thing that depends on the c.l.interfaces globs.
-- 
https://code.launchpad.net/~jml/launchpad/patmos-2/+merge/40396
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~jml/launchpad/patmos-2 into lp:launchpad/devel.
=== added file 'lib/canonical/launchpad/interfaces/webservice.py'
--- lib/canonical/launchpad/interfaces/webservice.py	1970-01-01 00:00:00 +0000
+++ lib/canonical/launchpad/interfaces/webservice.py	2010-11-09 16:27:54 +0000
@@ -0,0 +1,32 @@
+# Copyright 2010 Canonical Ltd.  This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+"""All the interfaces that are exposed through the webservice.
+
+There is a declaration in ZCML somewhere that looks like:
+  <webservice:register module="canonical.launchpad.interfaces.webservice" />
+
+which tells `lazr.restful` that it should look for webservice exports here.
+"""
+
+__metaclass__ = type
+__all__ = [
+    'IEmailAddress',
+    'IMessage',
+    'ITemporaryBlobStorage',
+    'ITemporaryStorageManager',
+    'IWebServiceApplication',
+    ]
+
+from canonical.launchpad.interfaces.launchpad import IWebServiceApplication
+
+from canonical.launchpad.interfaces.emailaddress import IEmailAddress
+from canonical.launchpad.interfaces.message import IMessage
+from canonical.launchpad.interfaces.temporaryblobstorage import (
+    ITemporaryBlobStorage,
+    ITemporaryStorageManager,
+    )
+# XXX: JonathanLange 2010-11-09 bug=673083: Legacy work-around for circular
+# import bugs.  Break this up into a per-package thing.
+from canonical.launchpad.interfaces import _schema_circular_imports
+_schema_circular_imports

=== modified file 'lib/canonical/launchpad/zcml/webservice.zcml'
--- lib/canonical/launchpad/zcml/webservice.zcml	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/zcml/webservice.zcml	2010-11-09 16:27:54 +0000
@@ -36,10 +36,10 @@
         for="lazr.restful.interfaces.IEntry
              zope.schema.interfaces.IField"
         provides="lazr.restful.interfaces.IByteStorage"
-        factory="canonical.launchpad.rest.LibraryBackedByteStorage"
+        factory="canonical.launchpad.rest.bytestorage.LibraryBackedByteStorage"
         />
 
-    <class class="canonical.launchpad.rest.LibraryBackedByteStorage">
+    <class class="canonical.launchpad.rest.bytestorage.LibraryBackedByteStorage">
         <allow interface='lazr.restful.interfaces.IByteStorage' />
     </class>
 
@@ -49,10 +49,10 @@
         for="lazr.restful.interfaces.IEntry
              lp.services.fields.IRestrictedBytes"
         provides="lazr.restful.interfaces.IByteStorage"
-        factory="canonical.launchpad.rest.RestrictedLibraryBackedByteStorage"
+        factory="canonical.launchpad.rest.bytestorage.RestrictedLibraryBackedByteStorage"
         />
 
-    <class class="canonical.launchpad.rest.RestrictedLibraryBackedByteStorage">
+    <class class="canonical.launchpad.rest.bytestorage.RestrictedLibraryBackedByteStorage">
         <allow interface='lazr.restful.interfaces.IByteStorage' />
     </class>
 
@@ -68,13 +68,13 @@
         for="lp.bugs.interfaces.bugmessage.IBugComment
              lazr.restful.interfaces.IWebServiceClientRequest"
         provides="lazr.restful.interfaces.IEntry"
-        factory="canonical.launchpad.rest.bugcomment_to_entry"
+        factory="lp.bugs.adapters.bug.bugcomment_to_entry"
         />
 
    <grok:grok package="lazr.restful.directives" />
    <grok:grok package="canonical.launchpad.rest" />
 
-   <webservice:register module="canonical.launchpad.interfaces" />
+   <webservice:register module="canonical.launchpad.interfaces.webservice" />
 
    <adapter
        for="zope.schema.interfaces.IChoice

=== modified file 'lib/lp/blueprints/configure.zcml'
--- lib/lp/blueprints/configure.zcml	2010-11-04 03:34:54 +0000
+++ lib/lp/blueprints/configure.zcml	2010-11-09 16:27:54 +0000
@@ -6,6 +6,7 @@
     xmlns="http://namespaces.zope.org/zope";
     xmlns:browser="http://namespaces.zope.org/browser";
     xmlns:i18n="http://namespaces.zope.org/i18n";
+    xmlns:webservice="http://namespaces.canonical.com/webservice";
     xmlns:xmlrpc="http://namespaces.zope.org/xmlrpc";
     xmlns:lp="http://namespaces.canonical.com/lp";
     i18n_domain="launchpad">
@@ -238,4 +239,6 @@
     <allow interface="lp.blueprints.interfaces.specificationmessage.ISpecificationMessageSet"/>
   </securedutility>
 
+  <webservice:register module="lp.blueprints.interfaces.webservice" />
+
 </configure>

=== added file 'lib/lp/blueprints/interfaces/webservice.py'
--- lib/lp/blueprints/interfaces/webservice.py	1970-01-01 00:00:00 +0000
+++ lib/lp/blueprints/interfaces/webservice.py	2010-11-09 16:27:54 +0000
@@ -0,0 +1,22 @@
+# Copyright 2010 Canonical Ltd.  This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+"""All the interfaces that are exposed through the webservice.
+
+There is a declaration in ZCML somewhere that looks like:
+  <webservice:register module="lp.blueprints.interfaces.webservice" />
+
+which tells `lazr.restful` that it should look for webservice exports here.
+"""
+
+__all__ = [
+    'ISpecification',
+    'ISpecificationBranch',
+    ]
+
+from lp.blueprints.interfaces.specification import ISpecification
+from lp.blueprints.interfaces.specificationbranch import ISpecificationBranch
+# XXX: JonathanLange 2010-11-09 bug=673083: Legacy work-around for circular
+# import bugs.  Break this up into a per-package thing.
+from canonical.launchpad.interfaces import _schema_circular_imports
+_schema_circular_imports

=== modified file 'lib/lp/bugs/configure.zcml'
--- lib/lp/bugs/configure.zcml	2010-11-09 16:27:51 +0000
+++ lib/lp/bugs/configure.zcml	2010-11-09 16:27:54 +0000
@@ -6,6 +6,7 @@
     xmlns="http://namespaces.zope.org/zope";
     xmlns:browser="http://namespaces.zope.org/browser";
     xmlns:i18n="http://namespaces.zope.org/i18n";
+    xmlns:webservice="http://namespaces.canonical.com/webservice";
     xmlns:xmlrpc="http://namespaces.zope.org/xmlrpc";
     xmlns:lp="http://namespaces.canonical.com/lp";
     i18n_domain="launchpad">
@@ -1052,4 +1053,7 @@
         mail_header
         recipient"/>
   </class>
+
+  <webservice:register module="lp.bugs.interfaces.webservice" />
+
 </configure>

=== modified file 'lib/lp/bugs/interfaces/bugbranch.py'
--- lib/lp/bugs/interfaces/bugbranch.py	2010-08-20 20:31:18 +0000
+++ lib/lp/bugs/interfaces/bugbranch.py	2010-11-09 16:27:54 +0000
@@ -12,10 +12,6 @@
     "IBugBranchSet",
     ]
 
-from lazr.enum import (
-    DBEnumeratedType,
-    DBItem,
-    )
 from lazr.restful.declarations import (
     export_as_webservice_entry,
     exported,
@@ -23,7 +19,6 @@
 from lazr.restful.fields import ReferenceChoice
 from zope.interface import Interface
 from zope.schema import (
-    Choice,
     Int,
     Object,
     TextLine,
@@ -40,7 +35,6 @@
 from lp.registry.interfaces.person import IPerson
 from lp.services.fields import (
     BugField,
-    Summary,
     )
 
 

=== added file 'lib/lp/bugs/interfaces/webservice.py'
--- lib/lp/bugs/interfaces/webservice.py	1970-01-01 00:00:00 +0000
+++ lib/lp/bugs/interfaces/webservice.py	2010-11-09 16:27:54 +0000
@@ -0,0 +1,86 @@
+# Copyright 2010 Canonical Ltd.  This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+"""All the interfaces that are exposed through the webservice.
+
+There is a declaration in ZCML somewhere that looks like:
+  <webservice:register module="lp.bugs.interfaces.webservice" />
+
+which tells `lazr.restful` that it should look for webservice exports here.
+"""
+
+__all__ = [
+    'BugNominationStatusError',
+    'IBug',
+    'InvalidBugTargetType',
+    'InvalidDuplicateValue',
+    'IBugActivity',
+    'IBugAttachment',
+    'IBugBranch',
+    'IBugNomination',
+    'IBugSubscription',
+    'IBugTarget',
+    'IBugTask',
+    'IBugTracker',
+    'IBugTrackerComponent',
+    'IBugTrackerComponentGroup',
+    'IBugTrackerSet',
+    'IBugWatch',
+    'ICve',
+    'ICveSet',
+    'IHasBugs',
+    'IMaloneApplication',
+    'IllegalRelatedBugTasksParams',
+    'IllegalTarget',
+    'NominationError',
+    'NominationSeriesObsoleteError',
+    'UserCannotEditBugTaskAssignee',
+    'UserCannotEditBugTaskImportance',
+    'UserCannotEditBugTaskMilestone',
+    'UserCannotEditBugTaskStatus',
+    ]
+
+from lp.bugs.interfaces.bug import (
+    IBug,
+    InvalidBugTargetType,
+    InvalidDuplicateValue,
+    )
+from lp.bugs.interfaces.bugactivity import IBugActivity
+from lp.bugs.interfaces.bugattachment import IBugAttachment
+from lp.bugs.interfaces.bugbranch import IBugBranch
+from lp.bugs.interfaces.malone import IMaloneApplication
+from lp.bugs.interfaces.bugnomination import (
+    BugNominationStatusError,
+    IBugNomination,
+    NominationError,
+    NominationSeriesObsoleteError,
+    )
+from lp.bugs.interfaces.bugsubscription import IBugSubscription
+from lp.bugs.interfaces.bugtarget import (
+    IBugTarget,
+    IHasBugs,
+    )
+from lp.bugs.interfaces.bugtask import (
+    IBugTask,
+    IllegalRelatedBugTasksParams,
+    IllegalTarget,
+    UserCannotEditBugTaskAssignee,
+    UserCannotEditBugTaskImportance,
+    UserCannotEditBugTaskMilestone,
+    UserCannotEditBugTaskStatus,
+    )
+from lp.bugs.interfaces.bugtracker import (
+    IBugTracker,
+    IBugTrackerComponent,
+    IBugTrackerComponentGroup,
+    IBugTrackerSet,
+    )
+from lp.bugs.interfaces.bugwatch import IBugWatch
+from lp.bugs.interfaces.cve import (
+    ICve,
+    ICveSet,
+    )
+# XXX: JonathanLange 2010-11-09 bug=673083: Legacy work-around for circular
+# import bugs.  Break this up into a per-package thing.
+from canonical.launchpad.interfaces import _schema_circular_imports
+_schema_circular_imports

=== modified file 'lib/lp/code/interfaces/webservice.py'
--- lib/lp/code/interfaces/webservice.py	2010-08-20 20:31:18 +0000
+++ lib/lp/code/interfaces/webservice.py	2010-11-09 16:27:54 +0000
@@ -1,7 +1,36 @@
-# Copyright 2009 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2010 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
-"""All the interfaces that are exposed through the webservice."""
+"""All the interfaces that are exposed through the webservice.
+
+There is a declaration in ZCML somewhere that looks like:
+  <webservice:register module="lp.code.interfaces.webservice" />
+
+which tells `lazr.restful` that it should look for webservice exports here.
+"""
+
+__all__ = [
+    'BranchCreatorNotMemberOfOwnerTeam',
+    'BranchCreatorNotOwner',
+    'BranchExists',
+    'BranchMergeProposalExists',
+    'BuildAlreadyPending',
+    'CodeImportAlreadyRunning',
+    'CodeImportNotInReviewedState',
+    'IBranch',
+    'IBranchMergeProposal',
+    'IBranchSet',
+    'IBranchSubscription',
+    'ICodeImport',
+    'ICodeReviewComment',
+    'ICodeReviewVoteReference',
+    'IDiff',
+    'IPreviewDiff',
+    'ISourcePackageRecipe',
+    'ISourcePackageRecipeBuild',
+    'IStaticDiff',
+    'TooManyBuilds',
+    ]
 
 # The exceptions are imported so that they can produce the special
 # status code defined by webservice_error when they are raised.
@@ -33,5 +62,7 @@
 from lp.code.interfaces.sourcepackagerecipebuild import (
     ISourcePackageRecipeBuild,
     )
-
-
+# XXX: JonathanLange 2010-11-09 bug=673083: Legacy work-around for circular
+# import bugs.  Break this up into a per-package thing.
+from canonical.launchpad.interfaces import _schema_circular_imports
+_schema_circular_imports

=== modified file 'lib/lp/hardwaredb/configure.zcml'
--- lib/lp/hardwaredb/configure.zcml	2010-02-02 17:12:29 +0000
+++ lib/lp/hardwaredb/configure.zcml	2010-11-09 16:27:54 +0000
@@ -2,6 +2,7 @@
     xmlns="http://namespaces.zope.org/zope";
     xmlns:browser="http://namespaces.zope.org/browser";
     xmlns:i18n="http://namespaces.zope.org/i18n";
+    xmlns:webservice="http://namespaces.canonical.com/webservice";
     xmlns:xmlrpc="http://namespaces.zope.org/xmlrpc";
     i18n_domain="launchpad">
     <include
@@ -187,4 +188,6 @@
         <allow
             interface="lp.hardwaredb.interfaces.hwdb.IHWSubmissionBugSet"/>
     </securedutility>
-</configure>
\ No newline at end of file
+
+   <webservice:register module="lp.hardwaredb.interfaces.webservice" />
+</configure>

=== added file 'lib/lp/hardwaredb/interfaces/webservice.py'
--- lib/lp/hardwaredb/interfaces/webservice.py	1970-01-01 00:00:00 +0000
+++ lib/lp/hardwaredb/interfaces/webservice.py	2010-11-09 16:27:54 +0000
@@ -0,0 +1,42 @@
+# Copyright 2010 Canonical Ltd.  This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+"""All the interfaces that are exposed through the webservice.
+
+There is a declaration in ZCML somewhere that looks like:
+  <webservice:register module="lp.hardwaredb.interfaces.hwdb" />
+
+which tells `lazr.restful` that it should look for webservice exports here.
+"""
+
+__all__ = [
+    'IHWDBApplication',
+    'IHWDevice',
+    'IHWDeviceClass',
+    'IHWDriver',
+    'IHWDriverName',
+    'IHWDriverPackageName',
+    'IHWSubmission',
+    'IHWSubmissionDevice',
+    'IHWVendorID',
+    'IllegalQuery',
+    'ParameterError',
+    ]
+
+from lp.hardwaredb.interfaces.hwdb import (
+    IHWDBApplication,
+    IHWDevice,
+    IHWDeviceClass,
+    IHWDriver,
+    IHWDriverName,
+    IHWDriverPackageName,
+    IHWSubmission,
+    IHWSubmissionDevice,
+    IHWVendorID,
+    IllegalQuery,
+    ParameterError,
+    )
+# XXX: JonathanLange 2010-11-09 bug=673083: Legacy work-around for circular
+# import bugs.  Break this up into a per-package thing.
+from canonical.launchpad.interfaces import _schema_circular_imports
+_schema_circular_imports

=== modified file 'lib/lp/registry/configure.zcml'
--- lib/lp/registry/configure.zcml	2010-11-09 16:27:51 +0000
+++ lib/lp/registry/configure.zcml	2010-11-09 16:27:54 +0000
@@ -1862,11 +1862,8 @@
             interface="lp.registry.interfaces.personproduct.IPersonProduct"/>
     </class>
 
-    <!-- Registers exceptions used in webservice defined in lp.registry.
-      Other data is in module=canonical.launchpad.interfaces as defined in
-      zcml there.-->
-
     <webservice:register module="lp.registry.errors" />
+    <webservice:register module="lp.registry.interfaces.webservice" />
 
     <adapter
         provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"

=== added file 'lib/lp/registry/interfaces/webservice.py'
--- lib/lp/registry/interfaces/webservice.py	1970-01-01 00:00:00 +0000
+++ lib/lp/registry/interfaces/webservice.py	2010-11-09 16:27:54 +0000
@@ -0,0 +1,106 @@
+# Copyright 2010 Canonical Ltd.  This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+"""All the interfaces that are exposed through the webservice."""
+
+__all__ = [
+    'DerivationError',
+    'ICommercialSubscription',
+    'IDistribution',
+    'IDistributionMirror',
+    'IDistributionSet',
+    'IDistributionSourcePackage',
+    'IDistroSeries',
+    'IDistroSeriesDifference',
+    'IDistroSeriesDifferenceComment',
+    'IGPGKey',
+    'IHasMilestones',
+    'IIrcID',
+    'IJabberID',
+    'IMilestone',
+    'IPerson',
+    'IPersonSet',
+    'IPillar',
+    'IPillarNameSet',
+    'IProduct',
+    'IProductRelease',
+    'IProductReleaseFile',
+    'IProductSeries',
+    'IProductSet',
+    'IProjectGroup',
+    'IProjectGroupSet',
+    'ISSHKey',
+    'ISourcePackage',
+    'ISourcePackageName',
+    'IStructuralSubscription',
+    'IStructuralSubscriptionTarget',
+    'ITeam',
+    'ITeamMembership',
+    'IWikiName',
+    'PPACreationError',
+    ]
+
+from lp.registry.interfaces.commercialsubscription import (
+    ICommercialSubscription,
+    )
+from lp.registry.interfaces.distribution import (
+    IDistribution,
+    IDistributionSet,
+    )
+from lp.registry.interfaces.distributionmirror import IDistributionMirror
+from lp.registry.interfaces.distributionsourcepackage import (
+    IDistributionSourcePackage,
+    )
+from lp.registry.interfaces.distroseries import (
+    DerivationError,
+    IDistroSeries,
+    )
+from lp.registry.interfaces.distroseriesdifference import (
+    IDistroSeriesDifference,
+    )
+from lp.registry.interfaces.distroseriesdifferencecomment import (
+    IDistroSeriesDifferenceComment,
+    )
+from lp.registry.interfaces.gpg import IGPGKey
+from lp.registry.interfaces.irc import IIrcID
+from lp.registry.interfaces.jabber import IJabberID
+from lp.registry.interfaces.milestone import (
+    IHasMilestones,
+    IMilestone,
+    )
+from lp.registry.interfaces.person import (
+    IPerson,
+    IPersonSet,
+    ITeam,
+    PPACreationError,
+    )
+from lp.registry.interfaces.pillar import (
+    IPillar,
+    IPillarNameSet,
+    )
+from lp.registry.interfaces.product import (
+    IProduct,
+    IProductSet,
+    )
+from lp.registry.interfaces.productrelease import (
+    IProductRelease,
+    IProductReleaseFile,
+    )
+from lp.registry.interfaces.productseries import IProductSeries
+from lp.registry.interfaces.projectgroup import (
+    IProjectGroup,
+    IProjectGroupSet,
+    )
+from lp.registry.interfaces.sourcepackage import ISourcePackage
+from lp.registry.interfaces.sourcepackagename import ISourcePackageName
+from lp.registry.interfaces.ssh import ISSHKey
+from lp.registry.interfaces.structuralsubscription import (
+    IStructuralSubscription,
+    IStructuralSubscriptionTarget,
+    )
+from lp.registry.interfaces.teammembership import ITeamMembership
+from lp.registry.interfaces.wikiname import IWikiName
+# XXX: JonathanLange 2010-11-09 bug=673083: Legacy work-around for circular
+# import bugs.  Break this up into a per-package thing.
+from canonical.launchpad.interfaces import _schema_circular_imports
+_schema_circular_imports

=== modified file 'lib/lp/services/worlddata/configure.zcml'
--- lib/lp/services/worlddata/configure.zcml	2010-02-20 03:00:48 +0000
+++ lib/lp/services/worlddata/configure.zcml	2010-11-09 16:27:54 +0000
@@ -5,6 +5,7 @@
 <configure
     xmlns="http://namespaces.zope.org/zope";
     xmlns:i18n="http://namespaces.zope.org/i18n";
+    xmlns:webservice="http://namespaces.canonical.com/webservice";
     i18n_domain="launchpad">
     <include file="vocabularies.zcml"/>
 
@@ -57,4 +58,5 @@
 
     <include package=".browser"/>
 
+   <webservice:register module="lp.services.worlddata.interfaces.webservice" />
 </configure>

=== added file 'lib/lp/services/worlddata/interfaces/webservice.py'
--- lib/lp/services/worlddata/interfaces/webservice.py	1970-01-01 00:00:00 +0000
+++ lib/lp/services/worlddata/interfaces/webservice.py	2010-11-09 16:27:54 +0000
@@ -0,0 +1,30 @@
+# Copyright 2010 Canonical Ltd.  This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+"""All the interfaces that are exposed through the webservice.
+
+There is a declaration in ZCML somewhere that looks like:
+  <webservice:register module="lp.services.worlddata.interfaces.webservice" />
+
+which tells `lazr.restful` that it should look for webservice exports here.
+"""
+
+__all__ = [
+     'ICountry',
+     'ICountrySet',
+     'ILanguage',
+     'ILanguageSet',
+     ]
+
+from lp.services.worlddata.interfaces.country import (
+    ICountry,
+    ICountrySet,
+    )
+from lp.services.worlddata.interfaces.language import (
+    ILanguage,
+    ILanguageSet,
+    )
+# XXX: JonathanLange 2010-11-09 bug=673083: Legacy work-around for circular
+# import bugs.  Break this up into a per-package thing.
+from canonical.launchpad.interfaces import _schema_circular_imports
+_schema_circular_imports

=== modified file 'lib/lp/soyuz/configure.zcml'
--- lib/lp/soyuz/configure.zcml	2010-11-04 13:13:24 +0000
+++ lib/lp/soyuz/configure.zcml	2010-11-09 16:27:54 +0000
@@ -6,6 +6,7 @@
     xmlns="http://namespaces.zope.org/zope";
     xmlns:browser="http://namespaces.zope.org/browser";
     xmlns:i18n="http://namespaces.zope.org/i18n";
+    xmlns:webservice="http://namespaces.canonical.com/webservice";
     xmlns:xmlrpc="http://namespaces.zope.org/xmlrpc";
     i18n_domain="launchpad">
     <include
@@ -925,4 +926,7 @@
         <allow interface="lp.soyuz.interfaces.distributionjob.ISyncPackageJob" />
         <allow interface="lp.soyuz.interfaces.distributionjob.IDistributionJob" />
     </class>
+
+   <webservice:register module="lp.soyuz.interfaces.webservice" />
+
 </configure>

=== added file 'lib/lp/soyuz/interfaces/webservice.py'
--- lib/lp/soyuz/interfaces/webservice.py	1970-01-01 00:00:00 +0000
+++ lib/lp/soyuz/interfaces/webservice.py	2010-11-09 16:27:54 +0000
@@ -0,0 +1,106 @@
+# Copyright 2010 Canonical Ltd.  This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+"""All the interfaces that are exposed through the webservice.
+
+There is a declaration in ZCML somewhere that looks like:
+  <webservice:register module="lp.soyuz.interfaces.webservice" />
+
+which tells `lazr.restful` that it should look for webservice exports here.
+"""
+
+__all__ = [
+    'AlreadySubscribed',
+    'ArchiveDisabled',
+    'ArchiveNotPrivate',
+    'CannotBeRescored',
+    'CannotCopy',
+    'CannotSwitchPrivacy',
+    'CannotUploadToArchive',
+    'CannotUploadToPPA',
+    'CannotUploadToPocket',
+    'ComponentNotFound',
+    'DistroSeriesNotFound',
+    'DuplicatePackagesetName',
+    'IArchive',
+    'IArchiveDependency',
+    'IArchivePermission',
+    'IArchiveSubscriber',
+    'IBinaryPackageBuild',
+    'IBinaryPackagePublishingHistory',
+    'IBinaryPackageReleaseDownloadCount',
+    'IDistroArchSeries',
+    'IPackageUpload',
+    'IPackageset',
+    'IPackagesetEdit',
+    'IPackagesetSet',
+    'IPackagesetViewOnly',
+    'ISourcePackagePublishingHistory',
+    'IncompatibleArguments',
+    'InsufficientUploadRights',
+    'InvalidComponent',
+    'InvalidPocketForPPA',
+    'InvalidPocketForPartnerArchive',
+    'NoRightsForArchive',
+    'NoRightsForComponent',
+    'NoSuchPPA',
+    'NoSuchPackageSet',
+    'NoTokensForTeams',
+    'PocketNotFound',
+    'VersionRequiresName',
+    ]
+
+from lp.soyuz.interfaces.archive import (
+    AlreadySubscribed,
+    ArchiveDisabled,
+    ArchiveNotPrivate,
+    CannotCopy,
+    CannotSwitchPrivacy,
+    CannotUploadToArchive,
+    CannotUploadToPPA,
+    CannotUploadToPocket,
+    ComponentNotFound,
+    DistroSeriesNotFound,
+    IArchive,
+    InsufficientUploadRights,
+    InvalidComponent,
+    InvalidPocketForPPA,
+    InvalidPocketForPartnerArchive,
+    NoRightsForArchive,
+    NoRightsForComponent,
+    NoSuchPPA,
+    NoTokensForTeams,
+    PocketNotFound,
+    VersionRequiresName,
+    )
+from lp.soyuz.interfaces.archivedependency import IArchiveDependency
+from lp.soyuz.interfaces.archivepermission import IArchivePermission
+from lp.soyuz.interfaces.archivesubscriber import IArchiveSubscriber
+from lp.soyuz.interfaces.binarypackagebuild import (
+    CannotBeRescored,
+    IBinaryPackageBuild,
+    )
+from lp.soyuz.interfaces.binarypackagerelease import (
+    IBinaryPackageReleaseDownloadCount,
+    )
+from lp.soyuz.interfaces.buildrecords import (
+    IncompatibleArguments,
+    )
+from lp.soyuz.interfaces.distroarchseries import IDistroArchSeries
+from lp.soyuz.interfaces.packageset import (
+    DuplicatePackagesetName,
+    IPackagesetViewOnly,
+    IPackagesetEdit,
+    IPackageset,
+    IPackagesetSet,
+    NoSuchPackageSet,
+    )
+from lp.soyuz.interfaces.publishing import (
+    IBinaryPackagePublishingHistory,
+    ISourcePackagePublishingHistory,
+    )
+from lp.soyuz.interfaces.queue import IPackageUpload
+# XXX: JonathanLange 2010-11-09 bug=673083: Legacy work-around for circular
+# import bugs.  Break this up into a per-package thing.
+from canonical.launchpad.interfaces import _schema_circular_imports
+_schema_circular_imports

=== modified file 'lib/lp/translations/interfaces/webservice.py'
--- lib/lp/translations/interfaces/webservice.py	2010-10-29 10:17:14 +0000
+++ lib/lp/translations/interfaces/webservice.py	2010-11-09 16:27:54 +0000
@@ -3,7 +3,13 @@
 
 # pylint: disable-msg=W0611
 
-"""All the interfaces that are exposed through the webservice."""
+"""All the interfaces that are exposed through the webservice.
+
+There is a declaration in ZCML somewhere that looks like:
+  <webservice:register module="lp.translations.interfaces.webservice" />
+
+which tells `lazr.restful` that it should look for webservice exports here.
+"""
 
 __all__ = [
     'IHasTranslationImports',
@@ -22,3 +28,7 @@
     ITranslationImportQueue,
     ITranslationImportQueueEntry,
     )
+# XXX: JonathanLange 2010-11-09 bug=673083: Legacy work-around for circular
+# import bugs.  Break this up into a per-package thing.
+from canonical.launchpad.interfaces import _schema_circular_imports
+_schema_circular_imports


Follow ups