← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~sinzui/launchpad/apocalypse-interface-imports-6 into lp:launchpad/devel

 

Curtis Hovey has proposed merging lp:~sinzui/launchpad/apocalypse-interface-imports-6 into lp:launchpad/devel.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)


This is my branch to fix single-line glob imports in doctests.

    lp:~sinzui/launchpad/apocalypse-interface-imports-6
    Diff size: 6298
    Test command: ./bin/test vv -t txt
    Pre-implementation: no one
    Target release: 10.11


Fix single-line glob imports in doctests
----------------------------------------

Doctests are rarely updated to import interfaces from their real location.
These need fixing so that the glob imports from canonical.launchpad.interfaces
can be removed

Doctests with multiple-line import from canonical.launchpad.interfaces require
more than a simple find and replace fix.


Rules
-----

    * Extracted the deblobing ZCML rule and used them to deglob single-line
      imports in doctests.
    * Fix tests that imported more than one interface on the line.


QA
--

None.


Lint
----

Linting changed files:
  lib/canonical/launchpad/components/tests/decoratedresultset.txt
  lib/canonical/launchpad/doc/account.txt
  lib/canonical/launchpad/doc/batch_navigation.txt
  lib/canonical/launchpad/doc/canonical_url.txt
  lib/canonical/launchpad/doc/canonical_url_examples.txt
  lib/canonical/launchpad/doc/celebrities.txt
  lib/canonical/launchpad/doc/datehandling.txt
  lib/canonical/launchpad/doc/decoratedresultset.txt
  lib/canonical/launchpad/doc/emailauthentication.txt
  lib/canonical/launchpad/doc/google-searchservice.txt
  lib/canonical/launchpad/doc/gpg-encryption.txt
  lib/canonical/launchpad/doc/image-widget.txt
  lib/canonical/launchpad/doc/incomingmail.txt
  lib/canonical/launchpad/doc/launchbag.txt
  lib/canonical/launchpad/doc/launchpad-target-widget.txt
  lib/canonical/launchpad/doc/lazr-js-widgets.txt
  lib/canonical/launchpad/doc/librarian.txt
  lib/canonical/launchpad/doc/lower-case-text-widget.txt
  lib/canonical/launchpad/doc/mailbox.txt
  lib/canonical/launchpad/doc/message.txt
  lib/canonical/launchpad/doc/new-line-to-spaces-widget.txt
  lib/canonical/launchpad/doc/notification-recipient-set.txt
  lib/canonical/launchpad/doc/oauth.txt
  lib/canonical/launchpad/doc/package-relationship.txt
  lib/canonical/launchpad/doc/private-xmlrpc.txt
  lib/canonical/launchpad/doc/project-scope-widget.txt
  lib/canonical/launchpad/doc/renamed-view.txt
  lib/canonical/launchpad/doc/sample-data-assertions.txt
  lib/canonical/launchpad/doc/scripts-and-zcml.txt
  lib/canonical/launchpad/doc/security-proxies.txt
  lib/canonical/launchpad/doc/sending-mail.txt
  lib/canonical/launchpad/doc/stripped-text-widget.txt
  lib/canonical/launchpad/doc/temporaryblobstorage.txt
  lib/canonical/launchpad/doc/textsearching.txt
  lib/canonical/launchpad/doc/tokens-text-widget.txt
  lib/canonical/launchpad/doc/validation.txt
  lib/canonical/launchpad/doc/vocabularies.txt
  lib/canonical/launchpad/doc/webapp-authorization.txt
  lib/canonical/launchpad/doc/webapp-publication.txt
  lib/canonical/launchpad/doc/webservice-marshallers.txt
  lib/canonical/launchpad/pagetests/oauth/authorize-token.txt
  lib/canonical/launchpad/pagetests/oauth/request-token.txt
  lib/canonical/launchpad/pagetests/standalone/xx-opstats.txt
  lib/canonical/launchpad/pagetests/webservice/xx-hide-comments.txt
  lib/canonical/launchpad/pagetests/webservice/xx-service.txt
  lib/lp/app/browser/tests/launchpad-search-pages.txt
  lib/lp/app/doc/displaying-paragraphs-of-text.txt
  lib/lp/app/doc/tales.txt
  lib/lp/archiveuploader/tests/nascentupload-closing-bugs.txt
  lib/lp/archiveuploader/tests/nascentupload-packageset.txt
  lib/lp/archiveuploader/tests/nascentupload.txt
  lib/lp/archiveuploader/tests/upload-karma.txt
  lib/lp/bugs/browser/tests/bug-nomination-views.txt
  lib/lp/bugs/browser/tests/bug-views.txt
  lib/lp/bugs/browser/tests/bugs-views.txt
  lib/lp/bugs/browser/tests/bugtarget-filebug-views.txt
  lib/lp/bugs/browser/tests/bugtask-adding-views.txt
  lib/lp/bugs/browser/tests/bugtask-edit-views.txt
  lib/lp/bugs/browser/tests/bugtask-search-views.txt
  lib/lp/bugs/browser/tests/bugwatch-views.txt
  lib/lp/bugs/browser/tests/person-bug-views.txt
  lib/lp/bugs/browser/tests/special/bugs-fixed-elsewhere.txt
  lib/lp/bugs/doc/bug-nomination.txt
  lib/lp/bugs/doc/bug-reported-acknowledgement.txt
  lib/lp/bugs/doc/bug-reporting-guidelines.txt
  lib/lp/bugs/doc/bug-set-status.txt
  lib/lp/bugs/doc/bug-tags.txt
  lib/lp/bugs/doc/bugactivity.txt
  lib/lp/bugs/doc/bugcomment.txt
  lib/lp/bugs/doc/bugmail-headers.txt
  lib/lp/bugs/doc/bugmessage-visibility.txt
  lib/lp/bugs/doc/bugmessage.txt
  lib/lp/bugs/doc/bugnotification-email.txt
  lib/lp/bugs/doc/bugnotification-sending.txt
  lib/lp/bugs/doc/bugnotification-threading.txt
  lib/lp/bugs/doc/bugnotificationrecipients.txt
  lib/lp/bugs/doc/bugnotifications.txt
  lib/lp/bugs/doc/bugs-email-affects-path.txt
  lib/lp/bugs/doc/bugsubscription.txt
  lib/lp/bugs/doc/bugtask-assignee-widget.txt
  lib/lp/bugs/doc/bugtask-bugwatch-widget.txt
  lib/lp/bugs/doc/bugtask-display-widgets.txt
  lib/lp/bugs/doc/bugtask-expiration.txt
  lib/lp/bugs/doc/bugtask-find-similar.txt
  lib/lp/bugs/doc/bugtask-package-bugcounts.txt
  lib/lp/bugs/doc/bugtask-package-widget.txt
  lib/lp/bugs/doc/bugtask-search-old-urls.txt
  lib/lp/bugs/doc/bugtask-search.txt
  lib/lp/bugs/doc/bugtask-status-workflow.txt
  lib/lp/bugs/doc/bugtask.txt
  lib/lp/bugs/doc/bugtracker-tokens.txt
  lib/lp/bugs/doc/bugtracker.txt
  lib/lp/bugs/doc/bugwatch.txt
  lib/lp/bugs/doc/bugwidget.txt
  lib/lp/bugs/doc/checkwatches.txt
  lib/lp/bugs/doc/cve.txt
  lib/lp/bugs/doc/displaying-bugs-and-tasks.txt
  lib/lp/bugs/doc/externalbugtracker-bug-imports.txt
  lib/lp/bugs/doc/externalbugtracker-bugzilla-api.txt
  lib/lp/bugs/doc/externalbugtracker-bugzilla-lp-plugin.txt
  lib/lp/bugs/doc/externalbugtracker-bugzilla-oddities.txt
  lib/lp/bugs/doc/externalbugtracker-bugzilla.txt
  lib/lp/bugs/doc/externalbugtracker-checkwatches.txt
  lib/lp/bugs/doc/externalbugtracker-debbugs.txt
  lib/lp/bugs/doc/externalbugtracker-emailaddress.txt
  lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt
  lib/lp/bugs/doc/externalbugtracker-mantis.txt
  lib/lp/bugs/doc/externalbugtracker-roundup.txt
  lib/lp/bugs/doc/externalbugtracker-rt.txt
  lib/lp/bugs/doc/externalbugtracker-sourceforge.txt
  lib/lp/bugs/doc/externalbugtracker-trac-lp-plugin.txt
  lib/lp/bugs/doc/externalbugtracker-trac.txt
  lib/lp/bugs/doc/externalbugtracker.txt
  lib/lp/bugs/doc/hasbugs.txt
  lib/lp/bugs/doc/initial-bug-contacts.txt
  lib/lp/bugs/doc/malone-karma.txt
  lib/lp/bugs/doc/malone-xmlrpc.txt
  lib/lp/bugs/doc/official-bug-tags.txt
  lib/lp/bugs/doc/security-teams.txt
  lib/lp/bugs/stories/bug-privacy/10-file-private-distro-bug.txt
  lib/lp/bugs/stories/bug-tags/xx-official-bug-tags.txt
  lib/lp/bugs/stories/bug-tags/xx-tags-on-bug-page.txt
  lib/lp/bugs/stories/bugattachments/xx-attachments-to-bug-report.txt
  lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt
  lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt
  lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt
  lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt
  lib/lp/bugs/stories/bugs/xx-remote-bug-comments.txt
  lib/lp/bugs/stories/bugtask-management/xx-change-assignee.txt
  lib/lp/bugs/stories/bugtask-management/xx-edit-email-address-bugtask.txt
  lib/lp/bugs/stories/bugtask-management/xx-view-editable-bug-task.txt
  lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt
  lib/lp/bugs/stories/cve/cve-linking.txt
  lib/lp/bugs/stories/distribution/xx-distribution-upstream-bug-report.txt
  lib/lp/bugs/stories/feeds/xx-bug-atom.txt
  lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt
  lib/lp/bugs/stories/initial-bug-contacts/20-file-upstream-bug.txt
  lib/lp/bugs/stories/initial-bug-contacts/25-file-distribution-bug.txt
  lib/lp/bugs/stories/standalone/xx-show-distrorelease-cve-report.txt
  lib/lp/bugs/stories/upstream-bugprivacy/10-file-private-upstream-bug.txt
  lib/lp/bugs/stories/webservice/xx-bug-target.txt
  lib/lp/bugs/tests/bugs-emailinterface.txt
  lib/lp/bugs/tests/bugtarget-bugcount.txt
  lib/lp/bugs/tests/bugtarget-questiontarget.txt
  lib/lp/bugs/tests/has-bug-supervisor.txt
  lib/lp/bugs/tests/test_bugtask_status.txt
  lib/lp/buildmaster/doc/buildqueue.txt
  lib/lp/coop/answersbugs/stories/question-buglink.txt
  lib/lp/coop/answersbugs/tests/notifications-linked-bug.txt
  lib/lp/coop/answersbugs/tests/notifications-linked-private-bug.txt
  lib/lp/hardwaredb/doc/hwdb-device-tables.txt
  lib/lp/hardwaredb/doc/hwdb-submission.txt
  lib/lp/hardwaredb/doc/hwdb.txt
  lib/lp/registry/browser/tests/distroseries-views.txt
  lib/lp/registry/browser/tests/gpg-views.txt
  lib/lp/registry/browser/tests/mailinglist-message-views.txt
  lib/lp/registry/browser/tests/peoplemerge-views.txt
  lib/lp/registry/browser/tests/person-admin-views.txt
  lib/lp/registry/browser/tests/person-views.txt
  lib/lp/registry/browser/tests/poll-views_0.txt
  lib/lp/registry/browser/tests/product-edit-people-view.txt
  lib/lp/registry/browser/tests/team-join-views.txt
  lib/lp/registry/doc/announcement.txt
  lib/lp/registry/doc/commercialsubscription.txt
  lib/lp/registry/doc/convert-person-to-team.txt
  lib/lp/registry/doc/distribution-mirror.txt
  lib/lp/registry/doc/distribution.txt
  lib/lp/registry/doc/distroseries.txt
  lib/lp/registry/doc/entitlement.txt
  lib/lp/registry/doc/gpg-signatures.txt
  lib/lp/registry/doc/mailinglist-email-notification.txt
  lib/lp/registry/doc/mailinglist-subscriptions-xmlrpc.txt
  lib/lp/registry/doc/mailinglist-subscriptions.txt
  lib/lp/registry/doc/mailinglist-xmlrpc.txt
  lib/lp/registry/doc/mailinglists.txt
  lib/lp/registry/doc/mentoringoffer.txt
  lib/lp/registry/doc/message-holds-xmlrpc.txt
  lib/lp/registry/doc/message-holds.txt
  lib/lp/registry/doc/milestone.txt
  lib/lp/registry/doc/nickname.txt
  lib/lp/registry/doc/person-account.txt
  lib/lp/registry/doc/person-karma.txt
  lib/lp/registry/doc/person-merge.txt
  lib/lp/registry/doc/person.txt
  lib/lp/registry/doc/poll-preconditions.txt
  lib/lp/registry/doc/product-widgets.txt
  lib/lp/registry/doc/product.txt
  lib/lp/registry/doc/productrelease-file-download.txt
  lib/lp/registry/doc/productrelease.txt
  lib/lp/registry/doc/productseries.txt
  lib/lp/registry/doc/project.txt
  lib/lp/registry/doc/structural-subscriptions.txt
  lib/lp/registry/doc/teammembership-email-notification.txt
  lib/lp/registry/doc/teammembership.txt
  lib/lp/registry/stories/distributionmirror/xx-distribution-countrymirrors.txt
  lib/lp/registry/stories/gpg-coc/01-claimgpg.txt
  lib/lp/registry/stories/mailinglists/moderation.txt
  lib/lp/registry/stories/person/xx-adminpeoplemerge.txt
  lib/lp/registry/stories/person/xx-person-editgpgkeys-invalid-key.txt
  lib/lp/registry/stories/pillar/xx-pillar-traversal.txt
  lib/lp/registry/stories/product/xx-product-index.txt
  lib/lp/registry/stories/product/xx-product-with-private-defaults.txt
  lib/lp/registry/stories/team/xx-adminteammerge.txt
  lib/lp/registry/stories/teammembership/10-join-team.txt
  lib/lp/registry/stories/teammembership/xx-add-member.txt
  lib/lp/registry/stories/teammembership/xx-expire-subscription.txt
  lib/lp/registry/stories/webservice/xx-project-registry.txt
  lib/lp/registry/tests/structural-subscription-target.txt
  lib/lp/services/mailman/doc/postings.txt
  lib/lp/services/mailman/doc/recovery.txt
  lib/lp/services/mailman/doc/subscriptions.txt
  lib/lp/soyuz/browser/tests/archive-views.txt
  lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt
  lib/lp/soyuz/browser/tests/build-views.txt
  lib/lp/soyuz/browser/tests/builder-views.txt
  lib/lp/soyuz/browser/tests/distroseriesqueue-views.txt
  lib/lp/soyuz/browser/tests/publishing-views.txt
  lib/lp/soyuz/browser/tests/sourcepackage-views.txt
  lib/lp/soyuz/doc/archive-dependencies.txt
  lib/lp/soyuz/doc/archive-files.txt
  lib/lp/soyuz/doc/archive.txt
  lib/lp/soyuz/doc/archivepermission.txt
  lib/lp/soyuz/doc/binarypackagebuild.txt
  lib/lp/soyuz/doc/binarypackagerelease.txt
  lib/lp/soyuz/doc/build-estimated-dispatch-time.txt
  lib/lp/soyuz/doc/buildd-dispatching.txt
  lib/lp/soyuz/doc/buildd-scoring.txt
  lib/lp/soyuz/doc/buildd-slavescanner.txt
  lib/lp/soyuz/doc/closing-bugs-from-changelogs.txt
  lib/lp/soyuz/doc/distribution.txt
  lib/lp/soyuz/doc/distroarchseries.txt
  lib/lp/soyuz/doc/distroseriesbinarypackage.txt
  lib/lp/soyuz/doc/distroseriesqueue-ddtp-tarball.txt
  lib/lp/soyuz/doc/distroseriesqueue-debian-installer.txt
  lib/lp/soyuz/doc/distroseriesqueue-dist-upgrader.txt
  lib/lp/soyuz/doc/distroseriesqueue-notify.txt
  lib/lp/soyuz/doc/distroseriesqueue-translations.txt
  lib/lp/soyuz/doc/distroseriesqueue.txt
  lib/lp/soyuz/doc/fakepackager.txt
  lib/lp/soyuz/doc/gina-multiple-arch.txt
  lib/lp/soyuz/doc/gina.txt
  lib/lp/soyuz/doc/package-arch-specific.txt
  lib/lp/soyuz/doc/package-cache-script.txt
  lib/lp/soyuz/doc/package-cache.txt
  lib/lp/soyuz/doc/package-diff.txt
  lib/lp/soyuz/doc/packageset.txt
  lib/lp/soyuz/doc/pocketchroot.txt
  lib/lp/soyuz/doc/publishing.txt
  lib/lp/soyuz/doc/queuebuilder.txt
  lib/lp/soyuz/doc/sourcepackagerelease-build-lookup.txt
  lib/lp/soyuz/doc/sourcepackagerelease.txt
  lib/lp/soyuz/doc/soyuz-set-of-uploads.txt
  lib/lp/soyuz/doc/soyuz-upload.txt
  lib/lp/soyuz/stories/ppa/xx-copy-packages.txt
  lib/lp/soyuz/stories/ppa/xx-ubuntu-ppas.txt
  lib/lp/soyuz/stories/soyuz/xx-package-diff.txt
  lib/lp/soyuz/stories/soyuz/xx-person-packages.txt
  lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt
  utilities/migrater/deglob.py

^ Lint hates this list. I am reluctant to fix every issue reported. Most
issues are heading and indentation. I believe most of these tests should
be deleted and replaced with unittests instead.


Implementation
--------------

    * utilities/migrater/deglob.py
      I added a separate utility to do deglobing. I used a variation of this
      to fix all imports from canonical.launchpad.database. I consider this
      resource that can be extended when we discover rules to find and replace
      globs programmatically. Maybe this can be used by the import sorter
      to fix glob imports while sorting.
-- 
__Curtis C. Hovey_________
http://launchpad.net/
-- 
https://code.launchpad.net/~sinzui/launchpad/apocalypse-interface-imports-6/+merge/38333
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~sinzui/launchpad/apocalypse-interface-imports-6 into lp:launchpad/devel.
=== modified file 'lib/canonical/launchpad/components/tests/decoratedresultset.txt'
--- lib/canonical/launchpad/components/tests/decoratedresultset.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/components/tests/decoratedresultset.txt	2010-10-13 18:38:20 +0000
@@ -11,7 +11,7 @@
 
     >>> from zope.component import getUtility
     >>> from storm.store import Store
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
     >>> store = Store.of(ubuntu)
     >>> from lp.registry.model.distribution import Distribution

=== modified file 'lib/canonical/launchpad/doc/account.txt'
--- lib/canonical/launchpad/doc/account.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/account.txt	2010-10-13 18:38:20 +0000
@@ -14,7 +14,8 @@
 
     >>> from zope.interface.verify import verifyObject
     >>> from lp.registry.interfaces.person import IPerson
-    >>> from canonical.launchpad.interfaces import IAccount, IAccountSet
+    >>> from canonical.launchpad.interfaces.account import (
+    ...     IAccount, IAccountSet)
 
     >>> account_set = getUtility(IAccountSet)
     >>> verifyObject(IAccountSet, account_set)
@@ -273,7 +274,7 @@
 The account is still not valid because it has no preferred email.
 Setting the email to preferred fixes this.
 
-    >>> from canonical.launchpad.interfaces import EmailAddressStatus
+    >>> from canonical.launchpad.interfaces.emailaddress import EmailAddressStatus
     >>> email.status = EmailAddressStatus.PREFERRED
     >>> account.is_valid
     True

=== modified file 'lib/canonical/launchpad/doc/batch_navigation.txt'
--- lib/canonical/launchpad/doc/batch_navigation.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/batch_navigation.txt	2010-10-13 18:38:20 +0000
@@ -57,7 +57,7 @@
 
   >>> from canonical.launchpad.database import EmailAddress
   >>> from canonical.ftests.pgsql import CursorWrapper
-  >>> from canonical.launchpad.interfaces import IStore
+  >>> from canonical.launchpad.interfaces.lpstorm import IStore
   >>> ignore = IStore(EmailAddress) # Prime the database connection.
   ... # (Priming is important if this test is run in isolation).
   >>> CursorWrapper.record_sql = True

=== modified file 'lib/canonical/launchpad/doc/canonical_url.txt'
--- lib/canonical/launchpad/doc/canonical_url.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/canonical_url.txt	2010-10-13 18:38:20 +0000
@@ -184,7 +184,7 @@
 But, here, I want to test the variant of the zcml directive that specifes
 an adapter.
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadRoot
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchpadRoot
     >>> class CountrySetUrl:
     ...
     ...     implements(ICanonicalUrlData)
@@ -478,7 +478,7 @@
 canonical url chain that provides at least one of the interfaces given.
 
     >>> from canonical.launchpad.webapp import nearest
-    >>> from canonical.launchpad.interfaces import IPerson
+    >>> from lp.registry.interfaces.person import IPerson
     >>> nearest(town_instance, IPerson) is None
     True
     >>> nearest(town_instance, ITown) is town_instance

=== modified file 'lib/canonical/launchpad/doc/canonical_url_examples.txt'
--- lib/canonical/launchpad/doc/canonical_url_examples.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/canonical_url_examples.txt	2010-10-13 18:38:20 +0000
@@ -95,7 +95,7 @@
 
 == Distributions, distroseriess and so on ==
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
 
 The IDistributionSet.
 
@@ -173,7 +173,8 @@
 
 == Bugs and bugtasks ==
 
-    >>> from canonical.launchpad.interfaces import IBugSet, IBugTaskSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
 
 The IBugSet.
 
@@ -237,7 +238,7 @@
 to ensure that at least one person has the perms to edit it while it's set
 private.)
 
-    >>> from canonical.launchpad.interfaces import ILaunchBag
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
     >>> current_user = getUtility(ILaunchBag).user
     >>> subscription = distro_series_task.bug.subscribe(
     ...     current_user, current_user)
@@ -280,7 +281,7 @@
 
 An IBugNomination.
 
-    >>> from canonical.launchpad.interfaces import IBugNominationSet
+    >>> from lp.bugs.interfaces.bugnomination import IBugNominationSet
     >>> bug_nomination = getUtility(IBugNominationSet).get(1)
     >>> canonical_url(bug_nomination)
     u'http://launchpad.dev/bugs/1/nominations/1'
@@ -288,7 +289,7 @@
 
 == Remote Bug Trackers and Remote Bugs ==
 
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
     >>> from lp.bugs.browser.bugtracker import RemoteBug
 
 An IBugTrackerSet.
@@ -369,7 +370,7 @@
 
 == Specifications ==
 
-    >>> from canonical.launchpad.interfaces import ISpecificationSet
+    >>> from lp.blueprints.interfaces.specification import ISpecificationSet
     >>> spec_set = getUtility(ISpecificationSet)
     >>> canonical_url(spec_set)
     u'http://blueprints.launchpad.dev/'

=== modified file 'lib/canonical/launchpad/doc/celebrities.txt'
--- lib/canonical/launchpad/doc/celebrities.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/celebrities.txt	2010-10-13 18:38:20 +0000
@@ -7,7 +7,7 @@
 there is an ILaunchpadCelebrities utility available that gives access
 to these well-known objects through attributes.
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> from lp.services.worlddata.interfaces.language import ILanguageSet
     >>> from lp.registry.interfaces.person import IPerson, IPersonSet
     >>> celebs = getUtility(ILaunchpadCelebrities)
@@ -91,7 +91,7 @@
 For all the products using SourceForge, we have a single registered
 tracker
 
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
     >>> sf_tracker = getUtility(IBugTrackerSet).getByName('sf')
     >>> celebs.sourceforge_tracker == sf_tracker
     True
@@ -112,7 +112,7 @@
 
 The Launchpad product itself.
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> launchpad = getUtility(IProductSet).getByName('launchpad')
     >>> celebs.launchpad == launchpad
     True
@@ -159,7 +159,7 @@
 There is a 'Savannah Bug Tracker' bugtracker which represents the
 bug tracker for all registered Savannah projects.
 
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
     >>> savannah_tracker = getUtility(IBugTrackerSet).getByName(
     ...     'savannah')
     >>> celebs.savannah_tracker == savannah_tracker

=== modified file 'lib/canonical/launchpad/doc/datehandling.txt'
--- lib/canonical/launchpad/doc/datehandling.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/datehandling.txt	2010-10-13 18:38:20 +0000
@@ -25,7 +25,7 @@
 Then let's grab one of his bug tasks to work with:
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
     >>> bugtaskset = getUtility(IBugTaskSet)
     >>> bt = bugtaskset.get(2)
 
@@ -43,7 +43,7 @@
 An IBugTask extends the interface IHasDateCreated. IHasDateCreated can be
 adapted to IAging:
 
-    >>> from canonical.launchpad.interfaces import IAging
+    >>> from canonical.launchpad.interfaces.launchpad import IAging
     >>> bt.datecreated = one_minute_ago
     >>> aging_bug = IAging(bt)
 

=== modified file 'lib/canonical/launchpad/doc/decoratedresultset.txt'
--- lib/canonical/launchpad/doc/decoratedresultset.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/decoratedresultset.txt	2010-10-13 18:38:20 +0000
@@ -15,7 +15,7 @@
 
 First, we'll create the un-decorated result set of all distributions:
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> from storm.store import Store
     >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
     >>> store = Store.of(ubuntu)

=== modified file 'lib/canonical/launchpad/doc/emailauthentication.txt'
--- lib/canonical/launchpad/doc/emailauthentication.txt	2010-10-04 19:50:45 +0000
+++ lib/canonical/launchpad/doc/emailauthentication.txt	2010-10-13 18:38:20 +0000
@@ -36,7 +36,8 @@
 user in the launch bag:
 
     >>> import email
-    >>> from canonical.launchpad.interfaces import ILaunchBag, IPersonSet
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from zope.component import getUtility
     >>> launchbag = getUtility(ILaunchBag)
     >>> name, addr = email.Utils.parseaddr(msg['From'])
@@ -111,7 +112,7 @@
     ...     '\n'.join(msg_lines), _class=SignedMessage)
     >>> msg.parsed_string = msg.as_string()
 
-    >>> from canonical.launchpad.interfaces import IGPGHandler
+    >>> from canonical.launchpad.interfaces.gpghandler import IGPGHandler
     >>> getUtility(IGPGHandler).getVerifiedSignature(
     ...     msg.signedContent, msg.signature)
     Traceback (most recent call last):
@@ -124,7 +125,7 @@
 
 authenticateEmail() doesn't have any problems verifying the signature:
 
-    >>> from canonical.launchpad.interfaces import IPerson
+    >>> from lp.registry.interfaces.person import IPerson
     >>> for line_ending in '\n', '\r\n':
     ...     msg = email.message_from_string(
     ...         line_ending.join(msg_lines), _class=SignedMessage)
@@ -172,7 +173,7 @@
 
 An unsigned email:
 
-    >>> from canonical.launchpad.interfaces import IWeaklyAuthenticatedPrincipal
+    >>> from canonical.launchpad.interfaces.mail import IWeaklyAuthenticatedPrincipal
     >>> msg = read_test_message('unsigned_multipart.txt')
     >>> principal = authenticateEmail(msg)
     >>> IWeaklyAuthenticatedPrincipal.providedBy(principal)

=== modified file 'lib/canonical/launchpad/doc/google-searchservice.txt'
--- lib/canonical/launchpad/doc/google-searchservice.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/google-searchservice.txt	2010-10-13 18:38:20 +0000
@@ -11,7 +11,7 @@
 
     >>> from zope.component import getUtility
     >>> from zope.interface.verify import verifyObject
-    >>> from canonical.launchpad.interfaces import ISearchService
+    >>> from canonical.launchpad.interfaces.searchservice import ISearchService
 
     >>> google_search = getUtility(ISearchService)
     >>> verifyObject(ISearchService, google_search)
@@ -26,7 +26,7 @@
 argument of start. The terms are the same as the text that would be
 entered in Google search form; the terms should not be escaped.
 
-    >>> from canonical.launchpad.interfaces import ISearchResults
+    >>> from canonical.launchpad.interfaces.searchservice import ISearchResults
 
     >>> first_page_matches = google_search.search(terms='bug')
     >>> first_page_matches
@@ -112,7 +112,7 @@
 set. It is created by passing a title, url, and a summary. It is
 an implementation of ISearchResult.
 
-    >>> from canonical.launchpad.interfaces import ISearchResult
+    >>> from canonical.launchpad.interfaces.searchservice import ISearchResult
     >>> from canonical.launchpad.utilities.searchservice import PageMatch
 
     >>> page_match = PageMatch(

=== modified file 'lib/canonical/launchpad/doc/gpg-encryption.txt'
--- lib/canonical/launchpad/doc/gpg-encryption.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/gpg-encryption.txt	2010-10-13 18:38:20 +0000
@@ -17,7 +17,7 @@
 
     >>> from canonical.launchpad.ftests import login
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import ILaunchBag
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
 
     >>> bag = getUtility(ILaunchBag)
 
@@ -28,7 +28,7 @@
     >>> bag.user.name
     u'name12'
 
-    >>> from canonical.launchpad.interfaces import IGPGHandler
+    >>> from canonical.launchpad.interfaces.gpghandler import IGPGHandler
     >>> gpghandler = getUtility(IGPGHandler)
 
 Let's use a unicode content, it can't be directly typed as

=== modified file 'lib/canonical/launchpad/doc/image-widget.txt'
--- lib/canonical/launchpad/doc/image-widget.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/image-widget.txt	2010-10-13 18:38:20 +0000
@@ -23,7 +23,7 @@
 Let's use Salgado and the Launchpad Administrators team as an examples
 here, since they haven't uploaded custom logos yet.
 
-    >>> from canonical.launchpad.interfaces import IPerson, IPersonSet
+    >>> from lp.registry.interfaces.person import IPerson, IPersonSet
     >>> salgado = getUtility(IPersonSet).getByName('salgado')
     >>> salgado.logo is None
     True
@@ -74,7 +74,7 @@
 If we set any random file as salgado's logo, we'll see it there, as
 well as an option to delete the image that was just uploaded.
 
-    >>> from canonical.launchpad.interfaces import ILibraryFileAliasSet
+    >>> from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
     >>> login('guilherme.salgado@xxxxxxxxxxxxx')
     >>> logo = getUtility(ILibraryFileAliasSet)[53]
     >>> salgado.logo = logo

=== modified file 'lib/canonical/launchpad/doc/incomingmail.txt'
--- lib/canonical/launchpad/doc/incomingmail.txt	2010-10-04 19:50:45 +0000
+++ lib/canonical/launchpad/doc/incomingmail.txt	2010-10-13 18:38:20 +0000
@@ -23,7 +23,7 @@
 Let's create some utilities which keep track of which mails they
 handle, and register them for some domains:
 
-    >>> from canonical.launchpad.interfaces import IMailHandler
+    >>> from canonical.launchpad.interfaces.mail import IMailHandler
     >>> from zope.interface import implements
     >>> class MockHandler:
     ...     implements(IMailHandler)
@@ -155,7 +155,7 @@
 silently rejected.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> person_set = getUtility(IPersonSet)
     >>> bigjools = person_set.getByEmail('launchpad@xxxxxxxxxxxxxxxxxx')
     >>> print bigjools.account_status.name

=== modified file 'lib/canonical/launchpad/doc/launchbag.txt'
--- lib/canonical/launchpad/doc/launchbag.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/launchbag.txt	2010-10-13 18:38:20 +0000
@@ -5,7 +5,7 @@
 First, we'll set up various imports and stub objects.
 
 >>> from zope.component import getUtility
->>> from canonical.launchpad.interfaces import ILaunchBag
+>>> from canonical.launchpad.webapp.interfaces import ILaunchBag
 >>> from canonical.launchpad.webapp.interfaces import BasicAuthLoggedInEvent
 >>> from canonical.launchpad.webapp.interfaces import LoggedOutEvent
 >>> from canonical.launchpad.webapp.interfaces import \

=== modified file 'lib/canonical/launchpad/doc/launchpad-target-widget.txt'
--- lib/canonical/launchpad/doc/launchpad-target-widget.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/launchpad-target-widget.txt	2010-10-13 18:38:20 +0000
@@ -4,7 +4,7 @@
 and to help with this, the LaunchpadTargetWidget is used.
 
     >>> from canonical.launchpad.webapp.testing import verifyObject
-    >>> from canonical.launchpad.interfaces import IFrontPageBugAddForm
+    >>> from lp.bugs.interfaces.bug import IFrontPageBugAddForm
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
     >>> from canonical.widgets.launchpadtarget import LaunchpadTargetWidget
 
@@ -58,7 +58,7 @@
 If we select a distribution, the distribution with that name is returned
 by getInputValue().
 
-    >>> from canonical.launchpad.interfaces import IDistribution
+    >>> from lp.registry.interfaces.distribution import IDistribution
     >>> form = {'field.bugtarget': 'package',
     ...         'field.bugtarget.distribution': 'ubuntu'}
     >>> widget = LaunchpadTargetWidget(
@@ -108,7 +108,7 @@
 If both a distribution and a source package are specified, a distribution
 source package is returned.
 
-    >>> from canonical.launchpad.interfaces import IDistributionSourcePackage
+    >>> from lp.registry.interfaces.distributionsourcepackage import IDistributionSourcePackage
     >>> form = {'field.bugtarget': 'package',
     ...         'field.bugtarget.distribution': 'ubuntu',
     ...         'field.bugtarget.package': 'evolution'}
@@ -189,7 +189,7 @@
 
 If a product is selected, the product with the given name is returned.
 
-    >>> from canonical.launchpad.interfaces import IProduct
+    >>> from lp.registry.interfaces.product import IProduct
     >>> form = {'field.bugtarget': 'product',
     ...         'field.bugtarget.product': 'firefox'}
     >>> widget = LaunchpadTargetWidget(
@@ -241,7 +241,7 @@
 distribution widget is set to 'ubuntu' because it is the default
 value when there is no distribution.
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> widget = LaunchpadTargetWidget(
     ...     IFrontPageBugAddForm['bugtarget'], empty_request)
     >>> widget.setRenderedValue(getUtility(IProductSet).getByName('firefox'))
@@ -268,7 +268,7 @@
 Passing a distribution will select the 'package' radio button and select
 the distribution in the drop-down list.
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> widget = LaunchpadTargetWidget(
     ...     IFrontPageBugAddForm['bugtarget'], empty_request)
     >>> debian = getUtility(IDistributionSet).getByName('debian')

=== modified file 'lib/canonical/launchpad/doc/lazr-js-widgets.txt'
--- lib/canonical/launchpad/doc/lazr-js-widgets.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/lazr-js-widgets.txt	2010-10-13 18:38:20 +0000
@@ -84,7 +84,7 @@
 
     >>> from canonical.widgets.lazrjs import InlineEditPickerWidget
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IBugTask, IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTask, IBugTaskSet
     >>> bugtask = getUtility(IBugTaskSet).get(2)
     >>> def create_inline_edit_picker_widget():
     ...     view = create_initialized_view(bugtask, '+index')

=== modified file 'lib/canonical/launchpad/doc/librarian.txt'
--- lib/canonical/launchpad/doc/librarian.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/librarian.txt	2010-10-13 18:38:20 +0000
@@ -28,7 +28,7 @@
 
 == High Level ==
 
-    >>> from canonical.launchpad.interfaces import ILibraryFileAliasSet
+    >>> from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
     >>> from StringIO import StringIO
     >>> data = 'This is some data'
 
@@ -36,7 +36,7 @@
 This name is a mouthful, but is consistent with the rest of our naming.
 
     >>> lfas = getUtility(ILibraryFileAliasSet)
-    >>> from canonical.launchpad.interfaces import NEVER_EXPIRES
+    >>> from canonical.launchpad.interfaces.librarian import NEVER_EXPIRES
     >>> alias = lfas.create(
     ...     'text.txt', len(data), StringIO(data), 'text/plain', NEVER_EXPIRES
     ...     )

=== modified file 'lib/canonical/launchpad/doc/lower-case-text-widget.txt'
--- lib/canonical/launchpad/doc/lower-case-text-widget.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/lower-case-text-widget.txt	2010-10-13 18:38:20 +0000
@@ -7,7 +7,7 @@
 LowerCaseTextWidget can be used to automatically convert the input to
 lower case:
 
-  >>> from canonical.launchpad.interfaces import IBug
+  >>> from lp.bugs.interfaces.bug import IBug
   >>> from canonical.widgets.textwidgets import LowerCaseTextWidget
   >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
   >>> field = IBug['description']

=== modified file 'lib/canonical/launchpad/doc/mailbox.txt'
--- lib/canonical/launchpad/doc/mailbox.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/mailbox.txt	2010-10-13 18:38:20 +0000
@@ -27,7 +27,7 @@
 
 Let's look at the one we use in tests:
 
-    >>> from canonical.launchpad.interfaces import IMailBox
+    >>> from canonical.launchpad.interfaces.mailbox import IMailBox
     >>> mailbox = getUtility(IMailBox)
 
 Now it's empty, so let's add some mails to it by using simple_sendmail:

=== modified file 'lib/canonical/launchpad/doc/message.txt'
--- lib/canonical/launchpad/doc/message.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/message.txt	2010-10-13 18:38:20 +0000
@@ -57,7 +57,7 @@
 You can build a Message from an email easily. This stuffs the original,
 unadulterated, email into the Librarian and builds all the MessageChunks.
 
-    >>> from canonical.launchpad.interfaces import IMessageSet
+    >>> from canonical.launchpad.interfaces.message import IMessageSet
     >>> msgset = getUtility(IMessageSet)
     >>> raw_msg = u"""\
     ... Content-Type: multipart/mixed; charset="latin-1";

=== modified file 'lib/canonical/launchpad/doc/new-line-to-spaces-widget.txt'
--- lib/canonical/launchpad/doc/new-line-to-spaces-widget.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/new-line-to-spaces-widget.txt	2010-10-13 18:38:20 +0000
@@ -5,7 +5,7 @@
 
   >>> from canonical.widgets.bugtask import NewLineToSpacesWidget
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
-  >>> from canonical.launchpad.interfaces import IBugTaskSearch
+  >>> from lp.bugs.interfaces.bugtask import IBugTaskSearch
 
 We pass a string with some new line characters to the widget
 

=== modified file 'lib/canonical/launchpad/doc/notification-recipient-set.txt'
--- lib/canonical/launchpad/doc/notification-recipient-set.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/notification-recipient-set.txt	2010-10-13 18:38:20 +0000
@@ -16,7 +16,7 @@
 (see bugnotificationrecipients.txt for an example of a derivation).
 
     >>> from canonical.launchpad.webapp.testing import verifyObject
-    >>> from canonical.launchpad.interfaces import INotificationRecipientSet
+    >>> from canonical.launchpad.interfaces.launchpad import INotificationRecipientSet
     >>> from canonical.launchpad.mailnotification import (
     ...     NotificationRecipientSet)
 
@@ -29,7 +29,7 @@
 You add recipients to the set using the add() method. The method takes the
 IPerson to add along the notification rationale and header code.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> person_set = getUtility(IPersonSet)
     >>> sample_person = person_set.getByEmail('test@xxxxxxxxxxxxx')
     >>> cprov = person_set.getByName('cprov')

=== modified file 'lib/canonical/launchpad/doc/oauth.txt'
--- lib/canonical/launchpad/doc/oauth.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/oauth.txt	2010-10-13 18:38:20 +0000
@@ -157,7 +157,7 @@
 request token with the given key regardless of the consumer associated
 with it.
 
-    >>> from canonical.launchpad.interfaces import IOAuthRequestTokenSet
+    >>> from canonical.launchpad.interfaces.oauth import IOAuthRequestTokenSet
     >>> token_set = getUtility(IOAuthRequestTokenSet)
     >>> token_set.getByKey(request_token.key) == request_token
     True

=== modified file 'lib/canonical/launchpad/doc/package-relationship.txt'
--- lib/canonical/launchpad/doc/package-relationship.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/package-relationship.txt	2010-10-13 18:38:20 +0000
@@ -55,7 +55,7 @@
 
   >>> from canonical.launchpad.browser import PackageRelationship
   >>> from canonical.launchpad.webapp.testing import verifyObject
-  >>> from canonical.launchpad.interfaces import IPackageRelationship
+  >>> from canonical.launchpad.interfaces.packagerelationship import IPackageRelationship
 
   >>> name, version, operator = parsed_relationships[1]
   >>> fake_url = 'http://host/path'

=== modified file 'lib/canonical/launchpad/doc/private-xmlrpc.txt'
--- lib/canonical/launchpad/doc/private-xmlrpc.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/private-xmlrpc.txt	2010-10-13 18:38:20 +0000
@@ -59,7 +59,7 @@
     404 404 Not Found>
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import ILoginTokenSet
+    >>> from canonical.launchpad.interfaces.logintoken import ILoginTokenSet
     >>> token_string = internal_api.newBugTrackerToken()
     >>> token = getUtility(ILoginTokenSet)[token_string]
     >>> token

=== modified file 'lib/canonical/launchpad/doc/project-scope-widget.txt'
--- lib/canonical/launchpad/doc/project-scope-widget.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/project-scope-widget.txt	2010-10-13 18:38:20 +0000
@@ -92,7 +92,7 @@
 
     >>> form = {'field.scope': 'project',
     ...         'field.scope.target': 'mozilla'}
-    >>> from canonical.launchpad.interfaces import IProjectGroup
+    >>> from lp.registry.interfaces.projectgroup import IProjectGroup
     >>> widget = ProjectScopeWidget(
     ...     scope_field, scope_field.vocabulary,
     ...     LaunchpadTestRequest(form=form))
@@ -160,7 +160,7 @@
 used. Passing a product to it will select the 'One project' radio
 button, as well as displaying the product name in the project widget.
 
-    >>> from canonical.launchpad.interfaces import IProjectGroupSet
+    >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet
     >>> widget = ProjectScopeWidget(
     ...     scope_field, scope_field.vocabulary, empty_request)
     >>> projectgroups = getUtility(IProjectGroupSet)

=== modified file 'lib/canonical/launchpad/doc/renamed-view.txt'
--- lib/canonical/launchpad/doc/renamed-view.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/renamed-view.txt	2010-10-13 18:38:20 +0000
@@ -16,7 +16,7 @@
 like this:
 
     >>> request = LaunchpadTestRequest()
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
     >>> view = RenamedView(ubuntu, request, '+questions')
 

=== modified file 'lib/canonical/launchpad/doc/sample-data-assertions.txt'
--- lib/canonical/launchpad/doc/sample-data-assertions.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/sample-data-assertions.txt	2010-10-13 18:38:20 +0000
@@ -11,7 +11,7 @@
 == User Accounts and Teams ==
 
   >>> from zope.component import getUtility
-  >>> from canonical.launchpad.interfaces import IPersonSet
+  >>> from lp.registry.interfaces.person import IPersonSet
   >>> personset = getUtility(IPersonSet)
 
 Here we make assertions about each of the key user accounts which should be
@@ -41,7 +41,8 @@
 should be a duplicate, and should be incomplete.
 
   >>> from zope.component import getUtility
-  >>> from canonical.launchpad.interfaces import IBugSet, IDistributionSet
+  >>> from lp.bugs.interfaces.bug import IBugSet
+  >>> from lp.registry.interfaces.distribution import IDistributionSet
   >>> bugset = getUtility(IBugSet)
   >>> distroset = getUtility(IDistributionSet)
   >>> from canonical.launchpad.ftests import login

=== modified file 'lib/canonical/launchpad/doc/scripts-and-zcml.txt'
--- lib/canonical/launchpad/doc/scripts-and-zcml.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/scripts-and-zcml.txt	2010-10-13 18:38:20 +0000
@@ -11,7 +11,7 @@
    >>> script_file = tempfile.NamedTemporaryFile()
    >>> script_file.write("""
    ... from canonical.launchpad.scripts import execute_zcml_for_scripts
-   ... from canonical.launchpad.interfaces import IPersonSet
+   ... from lp.registry.interfaces.person import IPersonSet
    ... from canonical.lp import initZopeless
    ... from zope.component import getUtility
    ...

=== modified file 'lib/canonical/launchpad/doc/security-proxies.txt'
--- lib/canonical/launchpad/doc/security-proxies.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/security-proxies.txt	2010-10-13 18:38:20 +0000
@@ -8,7 +8,7 @@
 
     >>> from canonical.launchpad.ftests.harness import LaunchpadFunctionalTestSetup
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from lp.registry.model.person import Person
 
     >>> LaunchpadFunctionalTestSetup().setUp()

=== modified file 'lib/canonical/launchpad/doc/sending-mail.txt'
--- lib/canonical/launchpad/doc/sending-mail.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/sending-mail.txt	2010-10-13 18:38:20 +0000
@@ -40,7 +40,7 @@
 the person's name is encoded properly.
 
     >>> from canonical.launchpad.mail import simple_sendmail_from_person
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> foo_bar = getUtility(IPersonSet).getByEmail('foo.bar@xxxxxxxxxxxxx')
     >>> msgid = simple_sendmail_from_person(
     ...     person=foo_bar,
@@ -65,7 +65,7 @@
 simple_sendmail_from_person uses the Person's preferred email address:
 
     >>> login('test@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IEmailAddressSet
+    >>> from canonical.launchpad.interfaces.emailaddress import IEmailAddressSet
     >>> sample_person = getUtility(IPersonSet).getByEmail(
     ...     'test@xxxxxxxxxxxxx')
     >>> testing  = getUtility(IEmailAddressSet).getByEmail(

=== modified file 'lib/canonical/launchpad/doc/stripped-text-widget.txt'
--- lib/canonical/launchpad/doc/stripped-text-widget.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/stripped-text-widget.txt	2010-10-13 18:38:20 +0000
@@ -32,7 +32,7 @@
 
   >>> from canonical.widgets.textwidgets import StrippedTextWidget
   >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
-  >>> from canonical.launchpad.interfaces import IRemoteBug
+  >>> from lp.bugs.interfaces.bugtracker import IRemoteBug
 
 We pass a string with leading and trailing whitespaces to the widget
 

=== modified file 'lib/canonical/launchpad/doc/temporaryblobstorage.txt'
--- lib/canonical/launchpad/doc/temporaryblobstorage.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/temporaryblobstorage.txt	2010-10-13 18:38:20 +0000
@@ -13,7 +13,7 @@
 perhaps as attachments.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import ITemporaryStorageManager
+    >>> from canonical.launchpad.interfaces.temporaryblobstorage import ITemporaryStorageManager
     >>> tsm = getUtility(ITemporaryStorageManager)
 
 To create a new TemporaryBlob, use ITemporaryStorageManager.new:

=== modified file 'lib/canonical/launchpad/doc/textsearching.txt'
--- lib/canonical/launchpad/doc/textsearching.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/textsearching.txt	2010-10-13 18:38:20 +0000
@@ -647,7 +647,7 @@
 additional tables, you can pass in list of names of these tables as a
 forth parameter:
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> firefox_product = getUtility(IProductSet).getByName('firefox')
 
     >>> firefox_count = Question.select(
@@ -689,7 +689,7 @@
 For example, there are less than 5 questions filed on the
 mozilla-firefox source package.
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> from canonical.database.sqlbase import sqlvalues
     >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
     >>> firefox_package = ubuntu.getSourcePackage('mozilla-firefox')

=== modified file 'lib/canonical/launchpad/doc/tokens-text-widget.txt'
--- lib/canonical/launchpad/doc/tokens-text-widget.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/tokens-text-widget.txt	2010-10-13 18:38:20 +0000
@@ -5,7 +5,7 @@
 
     >>> from canonical.widgets.textwidgets import TokensTextWidget
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
-    >>> from canonical.launchpad.interfaces import IFAQ
+    >>> from lp.answers.interfaces.faq import IFAQ
 
 The IFAQ keywords field requires a space separated list of terms. In the
 spirit of Postel's Law, the TokensTextWidget permits users to enter

=== modified file 'lib/canonical/launchpad/doc/validation.txt'
--- lib/canonical/launchpad/doc/validation.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/validation.txt	2010-10-13 18:38:20 +0000
@@ -86,7 +86,8 @@
 make sense to have tasks open on just the distribution and also packages
 in that distribution on the same bug.
 
-    >>> from canonical.launchpad.interfaces import validate_new_distrotask
+    >>> from canonical.launchpad.interfaces.validation import (
+    ...     validate_new_distrotask)
     >>> validate_new_distrotask(bug_two, debian, None)
     Traceback (most recent call last):
       ...

=== modified file 'lib/canonical/launchpad/doc/vocabularies.txt'
--- lib/canonical/launchpad/doc/vocabularies.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/vocabularies.txt	2010-10-13 18:38:20 +0000
@@ -75,7 +75,7 @@
     gentoo Gentoo Gentoo
     ubuntu Ubuntu Ubuntu
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> ubuntu = getUtility(ILaunchpadCelebrities).ubuntu
     >>> ubuntu in using_malone_vocabulary
     True
@@ -130,7 +130,7 @@
 Now, if we look at bug one, we can see that it hasn't been targeted
 for any Firefox series yet:
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
 
     >>> bug_one = getUtility(IBugSet).get(1)
     >>> for bugtask in bug_one.bugtasks:

=== modified file 'lib/canonical/launchpad/doc/webapp-authorization.txt'
--- lib/canonical/launchpad/doc/webapp-authorization.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/webapp-authorization.txt	2010-10-13 18:38:20 +0000
@@ -7,7 +7,7 @@
 
     >>> from canonical.launchpad.webapp.authorization import check_permission
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
 
     >>> personset = getUtility(IPersonSet)
     >>> sample_person = personset.get(12)
@@ -60,7 +60,7 @@
 access to private objects.  For instance, the above principal has
 permission to read private and non-private objects (READ_PRIVATE).
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from canonical.launchpad.ftests import syncUpdate
     >>> login('test@xxxxxxxxxxxxx')
     >>> bug_1 = getUtility(IBugSet).get(1)

=== modified file 'lib/canonical/launchpad/doc/webapp-publication.txt'
--- lib/canonical/launchpad/doc/webapp-publication.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/webapp-publication.txt	2010-10-13 18:38:20 +0000
@@ -875,7 +875,7 @@
 contain its ID (as well as an empty '/' path, which is a Zope artefact
 allowing different authentication based on the traversed objects):
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> personset = getUtility(IPersonSet)
     >>> txn = transaction.begin()
     >>> foo_bar = personset.getByEmail('foo.bar@xxxxxxxxxxxxx')
@@ -912,7 +912,7 @@
     >>> from canonical.launchpad.ftests import syncUpdate
     >>> from canonical.launchpad.database import EmailAddress
     >>> from lp.registry.model.person import Person
-    >>> from canonical.launchpad.interfaces import IMasterStore
+    >>> from canonical.launchpad.interfaces.lpstorm import IMasterStore
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> txn = transaction.begin()
     >>> def get_foo_bar_person():

=== modified file 'lib/canonical/launchpad/doc/webservice-marshallers.txt'
--- lib/canonical/launchpad/doc/webservice-marshallers.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/doc/webservice-marshallers.txt	2010-10-13 18:38:20 +0000
@@ -18,7 +18,7 @@
 
     >>> from canonical.launchpad.systemhomes import WebServiceApplication
     >>> root = WebServiceApplication()
-    >>> from canonical.launchpad.interfaces import IOpenLaunchBag
+    >>> from canonical.launchpad.webapp.interfaces import IOpenLaunchBag
     >>> getUtility(IOpenLaunchBag).add(root)
 
 
@@ -29,7 +29,7 @@
 string is a URL corresponding to a vocabulary item, the marshaller
 returns that item. Otherwise it raises a ValueError.
 
-    >>> from canonical.launchpad.interfaces import IPerson
+    >>> from lp.registry.interfaces.person import IPerson
     >>> from zope.component import getMultiAdapter
     >>> from zope.schema import Choice
     >>> from lazr.restful.fields import ReferenceChoice
@@ -45,7 +45,7 @@
     >>> verifyObject(IFieldMarshaller, marshaller)
     True
 
-    >>> from canonical.launchpad.interfaces import IPerson
+    >>> from lp.registry.interfaces.person import IPerson
     >>> person = marshaller.marshall_from_request(
     ...     "http://api.launchpad.dev/beta/~salgado";)
     >>> IPerson.providedBy(person)

=== modified file 'lib/canonical/launchpad/pagetests/oauth/authorize-token.txt'
--- lib/canonical/launchpad/pagetests/oauth/authorize-token.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/pagetests/oauth/authorize-token.txt	2010-10-13 18:38:20 +0000
@@ -5,7 +5,7 @@
 and authorize or not the consumer to act on his behalf.
 
     # Create a new request token.
-    >>> from canonical.launchpad.interfaces import IOAuthConsumerSet
+    >>> from canonical.launchpad.interfaces.oauth import IOAuthConsumerSet
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import ANONYMOUS, login, logout
     >>> login('salgado@xxxxxxxxxx')

=== modified file 'lib/canonical/launchpad/pagetests/oauth/request-token.txt'
--- lib/canonical/launchpad/pagetests/oauth/request-token.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/pagetests/oauth/request-token.txt	2010-10-13 18:38:20 +0000
@@ -47,7 +47,7 @@
 
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IOAuthConsumerSet
+    >>> from canonical.launchpad.interfaces.oauth import IOAuthConsumerSet
     >>> login('salgado@xxxxxxxxxx')
     >>> print getUtility(IOAuthConsumerSet).getByKey('joe-feed-reader')
     None

=== modified file 'lib/canonical/launchpad/pagetests/standalone/xx-opstats.txt'
--- lib/canonical/launchpad/pagetests/standalone/xx-opstats.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/pagetests/standalone/xx-opstats.txt	2010-10-13 18:38:20 +0000
@@ -262,7 +262,7 @@
 But our database connections are broken.
 
     >>> from lp.registry.model.person import Person
-    >>> from canonical.launchpad.interfaces import IStore
+    >>> from canonical.launchpad.interfaces.lpstorm import IStore
     >>> IStore(Person).find(Person, name='janitor')
     Traceback (most recent call last):
     ...

=== modified file 'lib/canonical/launchpad/pagetests/webservice/xx-hide-comments.txt'
--- lib/canonical/launchpad/pagetests/webservice/xx-hide-comments.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/pagetests/webservice/xx-hide-comments.txt	2010-10-13 18:38:20 +0000
@@ -21,7 +21,8 @@
 not access in the Bug.messages array.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IBugSet, IBugMessageSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.bugs.interfaces.bugmessage import IBugMessageSet
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> bug_11 = getUtility(IBugSet).get(11)
     >>> bug_message = getUtility(IBugMessageSet).getByBugAndMessage(

=== modified file 'lib/canonical/launchpad/pagetests/webservice/xx-service.txt'
--- lib/canonical/launchpad/pagetests/webservice/xx-service.txt	2010-10-03 15:30:06 +0000
+++ lib/canonical/launchpad/pagetests/webservice/xx-service.txt	2010-10-13 18:38:20 +0000
@@ -102,7 +102,7 @@
 
     >>> from canonical.launchpad.testing.pages import (
     ...     LaunchpadWebServiceCaller)
-    >>> from canonical.launchpad.interfaces import IOAuthConsumerSet
+    >>> from canonical.launchpad.interfaces.oauth import IOAuthConsumerSet
 
     >>> caller = LaunchpadWebServiceCaller('new-consumer', 'access-key')
     >>> response = caller.get(root)

=== modified file 'lib/lp/app/browser/tests/launchpad-search-pages.txt'
--- lib/lp/app/browser/tests/launchpad-search-pages.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/app/browser/tests/launchpad-search-pages.txt	2010-10-13 18:38:20 +0000
@@ -5,7 +5,7 @@
 LaunchpadSearchView.
 
     >>> from zope.component import getMultiAdapter, getUtility
-    >>> from canonical.launchpad.interfaces import ILaunchpadRoot
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchpadRoot
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
 
     >>> root = getUtility(ILaunchpadRoot)

=== modified file 'lib/lp/app/doc/displaying-paragraphs-of-text.txt'
--- lib/lp/app/doc/displaying-paragraphs-of-text.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/app/doc/displaying-paragraphs-of-text.txt	2010-10-13 18:38:20 +0000
@@ -290,7 +290,7 @@
 To check a private bug, we need to log in and set a bug to be private.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> bugset = getUtility(IBugSet)
     >>> firefox_crashes = bugset.get(6)
     >>> login("test@xxxxxxxxxxxxx")

=== modified file 'lib/lp/app/doc/tales.txt'
--- lib/lp/app/doc/tales.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/app/doc/tales.txt	2010-10-13 18:38:20 +0000
@@ -41,7 +41,7 @@
 available for Person, Product, ProjectGroup, Sprint and Distributions, since
 they all implement IHasLogo, IHasMugshot and IHasIcon.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> mark = getUtility(IPersonSet).getByName('mark')
     >>> test_tales("person/image:sprite_css", person=mark)
     'sprite person'
@@ -84,7 +84,7 @@
 
 We also have an icon for bugs.
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> bug = getUtility(IBugSet).get(1)
     >>> print test_tales("bug/image:sprite_css", bug=bug)
     sprite bug
@@ -701,7 +701,7 @@
 Questions
 .........
 
-    >>> from canonical.launchpad.interfaces import IQuestionSet
+    >>> from lp.answers.interfaces.questioncollection import IQuestionSet
     >>> question = getUtility(IQuestionSet).get(1)
     >>> test_tales("question/fmt:link", question=question)
     u'<a... class="sprite question">1:...</a>'
@@ -730,7 +730,7 @@
 Bug Trackers
 ............
 
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
     >>> bugtracker = getUtility(IBugTrackerSet).getByName('email')
     >>> bugtracker.title = 'an@email.address bug tracker'
     >>> bugtracker.aliases = ['mailto:eatme@xxxxxxxxxxxx',
@@ -787,7 +787,7 @@
 Bug Watches
 ...........
 
-    >>> from canonical.launchpad.interfaces import IBugWatchSet
+    >>> from lp.bugs.interfaces.bugwatch import IBugWatchSet
     >>> sf_bugwatch = getUtility(IBugWatchSet).createBugWatch(
     ...     getUtility(IBugSet).get(12),
     ...     getUtility(ILaunchBag).user,

=== modified file 'lib/lp/archiveuploader/tests/nascentupload-closing-bugs.txt'
--- lib/lp/archiveuploader/tests/nascentupload-closing-bugs.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/archiveuploader/tests/nascentupload-closing-bugs.txt	2010-10-13 18:38:20 +0000
@@ -31,7 +31,7 @@
     >>> the_bug_id = 6
 
     >>> from canonical.testing.layers import LaunchpadZopelessLayer
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from canonical.launchpad.interfaces import (
     ...    IBugTaskSet, IDistributionSet, IPersonSet)
     >>> login('no-priv@xxxxxxxxxxxxx')

=== modified file 'lib/lp/archiveuploader/tests/nascentupload-packageset.txt'
--- lib/lp/archiveuploader/tests/nascentupload-packageset.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/archiveuploader/tests/nascentupload-packageset.txt	2010-10-13 18:38:20 +0000
@@ -72,7 +72,7 @@
 name16 does not have any package set based upload permissions for 'bar'
 at present.
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
     >>> ubuntu_archive = ubuntu.main_archive
     >>> print_permission(

=== modified file 'lib/lp/archiveuploader/tests/nascentupload.txt'
--- lib/lp/archiveuploader/tests/nascentupload.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/archiveuploader/tests/nascentupload.txt	2010-10-13 18:38:20 +0000
@@ -890,7 +890,7 @@
     >>> commit()
     >>> LaunchpadZopelessLayer.switchDbUser('launchpad')
     >>> from lp.soyuz.enums import ArchivePermissionType
-    >>> from canonical.launchpad.interfaces import ISourcePackageNameSet
+    >>> from lp.registry.interfaces.sourcepackagename import ISourcePackageNameSet
     >>> bar_name = getUtility(ISourcePackageNameSet).getOrCreateByName("bar")
     >>> discard = ArchivePermission(
     ...     archive=ubuntu.main_archive, person=name16,

=== modified file 'lib/lp/archiveuploader/tests/upload-karma.txt'
--- lib/lp/archiveuploader/tests/upload-karma.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/archiveuploader/tests/upload-karma.txt	2010-10-13 18:38:20 +0000
@@ -49,7 +49,8 @@
 
 Poke the queue entry so it looks like Foo Bar (name16) uploaded it:
 
-    >>> from canonical.launchpad.interfaces import IGPGKeySet, IPersonSet
+    >>> from lp.registry.interfaces.gpg import IGPGKeySet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from zope.security.proxy import removeSecurityProxy
     >>> name16 = getUtility(IPersonSet).getByName('name16')
     >>> key = getUtility(IGPGKeySet).getGPGKeysForPeople([name16])[0]

=== modified file 'lib/lp/bugs/browser/tests/bug-nomination-views.txt'
--- lib/lp/bugs/browser/tests/bug-nomination-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/browser/tests/bug-nomination-views.txt	2010-10-13 18:38:20 +0000
@@ -7,7 +7,8 @@
 
     >>> from zope.component import getUtility, getMultiAdapter
 
-    >>> from canonical.launchpad.interfaces import IBugTaskSet, IOpenLaunchBag
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
+    >>> from canonical.launchpad.webapp.interfaces import IOpenLaunchBag
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
 
     >>> login("no-priv@xxxxxxxxxxxxx")
@@ -43,7 +44,7 @@
 
 (Add objects to the LaunchBag that will be used by the view.)
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
 
     >>> launchbag.clear()
     >>> launchbag.add(bug_one_in_ubuntu_firefox)
@@ -169,7 +170,7 @@
 widget set up for accepting/declining the nomination. The widet is only
 set up if the user has permission to approve the nomination.
 
-    >>> from canonical.launchpad.interfaces import CreateBugParams
+    >>> from lp.bugs.interfaces.bug import CreateBugParams
     >>> login("no-priv@xxxxxxxxxxxxx")
     >>> no_priv = getUtility(ILaunchBag).user
     >>> ubuntu_bug = ubuntu.createBug(CreateBugParams(
@@ -227,7 +228,7 @@
 context, we mean a user that has, either directly or through a team,
 launchpad.Driver permission on the nomination.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
 
     >>> ubuntu_team = getUtility(IPersonSet).getByName("ubuntu-team")
 

=== modified file 'lib/lp/bugs/browser/tests/bug-views.txt'
--- lib/lp/bugs/browser/tests/bug-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/browser/tests/bug-views.txt	2010-10-13 18:38:20 +0000
@@ -11,7 +11,7 @@
 
     >>> from canonical.launchpad.ftests.event import TestEventListener
     >>> from lazr.lifecycle.event import IObjectCreatedEvent
-    >>> from canonical.launchpad.interfaces import IBug
+    >>> from lp.bugs.interfaces.bug import IBug
     >>> def on_created_event(object, event):
     ...     print "ObjectCreatedEvent: %r" % object
     >>> on_created_listener = TestEventListener(
@@ -444,7 +444,8 @@
 returned results, because an approved nomination will have created a
 task anyway.
 
-    >>> from canonical.launchpad.interfaces import IBugTask, IBugNomination
+    >>> from lp.bugs.interfaces.bugtask import IBugTask
+    >>> from lp.bugs.interfaces.bugnomination import IBugNomination
 
     >>> def get_object_type(task_or_nomination):
     ...     if IBugTask.providedBy(task_or_nomination):

=== modified file 'lib/lp/bugs/browser/tests/bugs-views.txt'
--- lib/lp/bugs/browser/tests/bugs-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/browser/tests/bugs-views.txt	2010-10-13 18:38:20 +0000
@@ -31,7 +31,7 @@
 in the future.
 
     >>> login('test@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from canonical.launchpad.ftests import syncUpdate
     >>> bug_eight = getUtility(IBugSet).get(8)
     >>> len(bug_eight.bugtasks)
@@ -92,7 +92,7 @@
 
 If Sample Person get subscribed to bug #2, he can see it in the list.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> person_set = getUtility(IPersonSet)
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> bug_two.subscribe(
@@ -111,7 +111,8 @@
 
 Only five bugs are returned by default:
 
-    >>> from canonical.launchpad.interfaces import CreateBugParams, IProductSet
+    >>> from lp.bugs.interfaces.bug import CreateBugParams
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> firefox = getUtility(IProductSet).getByName('firefox')
     >>> for index in range(20):
     ...     bug = firefox.createBug(CreateBugParams(

=== modified file 'lib/lp/bugs/browser/tests/bugtarget-filebug-views.txt'
--- lib/lp/bugs/browser/tests/bugtarget-filebug-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/browser/tests/bugtarget-filebug-views.txt	2010-10-13 18:38:20 +0000
@@ -7,7 +7,7 @@
 
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
     >>> from lp.bugs.browser.bugtarget import FileBugViewBase
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
     >>> ubuntu_firefox = ubuntu.getSourcePackage('mozilla-firefox')
     >>> bug_data = dict(
@@ -120,7 +120,7 @@
     ... """
 
     >>> import transaction
-    >>> from canonical.launchpad.interfaces import ITemporaryStorageManager
+    >>> from canonical.launchpad.interfaces.temporaryblobstorage import ITemporaryStorageManager
     >>> token = getUtility(ITemporaryStorageManager).new(debug_data)
 
 We need to commit the transaction since the data will be stored in the

=== modified file 'lib/lp/bugs/browser/tests/bugtask-adding-views.txt'
--- lib/lp/bugs/browser/tests/bugtask-adding-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/browser/tests/bugtask-adding-views.txt	2010-10-13 18:38:20 +0000
@@ -8,7 +8,7 @@
 affects and creates the new bugtask.
 
     >>> login('test@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> bug_four = getUtility(IBugSet).get(4)
     >>> len(bug_four.bugtasks)
     1

=== modified file 'lib/lp/bugs/browser/tests/bugtask-edit-views.txt'
--- lib/lp/bugs/browser/tests/bugtask-edit-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/browser/tests/bugtask-edit-views.txt	2010-10-13 18:38:20 +0000
@@ -10,7 +10,7 @@
 Person:
 
     >>> from zope.component import getMultiAdapter
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
     >>> login('test@xxxxxxxxxxxxx')
     >>> bug_nine = getUtility(IBugSet).get(9)
@@ -224,7 +224,7 @@
      not trivial to do at the moment. I will fix this later.
      -- Bjorn Tillenius, 2006-03-01
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> thunderbird_task.transitionToStatus(
     ...     BugTaskStatus.NEW, getUtility(ILaunchBag).user)
     >>> request = LaunchpadTestRequest(
@@ -256,7 +256,7 @@
     >>> thunderbird_task.bugwatch is None
     True
 
-    >>> from canonical.launchpad.interfaces import IBugTask
+    >>> from lp.bugs.interfaces.bugtask import IBugTask
     >>> thunderbird_task.status == IBugTask['status'].default
     True
     >>> thunderbird_task.importance == IBugTask['importance'].default
@@ -271,7 +271,7 @@
 a display widget.
 
     >>> from zope.app.form.interfaces import IInputWidget
-    >>> from canonical.launchpad.interfaces import IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
 
 The distribution owner gets an edit widget for the distribution task.
 
@@ -302,7 +302,7 @@
 A bug supervisor can also change the milestone. Let's set no-priv as
 Ubuntu's bug supervisor.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
 
     >>> login("foo.bar@xxxxxxxxxxxxx")
     >>> ubuntu = getUtility(IDistributionSet).getByName("ubuntu")

=== modified file 'lib/lp/bugs/browser/tests/bugtask-search-views.txt'
--- lib/lp/bugs/browser/tests/bugtask-search-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/browser/tests/bugtask-search-views.txt	2010-10-13 18:38:20 +0000
@@ -235,7 +235,7 @@
 
     >>> login("test@xxxxxxxxxxxxx")
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus, IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus, IBugTaskSet
     >>> open_bugtask = getUtility(IBugTaskSet).get(19)
     >>> open_bugtask.status.name
     'NEW'
@@ -285,7 +285,7 @@
 
 == ProjectGroup Search Page ==
 
-    >>> from canonical.launchpad.interfaces import IProjectGroupSet
+    >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet
     >>> mozilla = getUtility(IProjectGroupSet).getByName('mozilla')
 
 The simple search form returns only open bugtasks.

=== modified file 'lib/lp/bugs/browser/tests/bugwatch-views.txt'
--- lib/lp/bugs/browser/tests/bugwatch-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/browser/tests/bugwatch-views.txt	2010-10-13 18:38:20 +0000
@@ -5,7 +5,7 @@
 Deleting a bug watch is only possible when the bug watch isn't linked to
 a bug task.
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> bug_one = getUtility(IBugSet).get(1)
     >>> linked_bugwatches = [
     ...     bugwatch for bugwatch in bug_one.watches

=== modified file 'lib/lp/bugs/browser/tests/person-bug-views.txt'
--- lib/lp/bugs/browser/tests/person-bug-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/browser/tests/person-bug-views.txt	2010-10-13 18:38:20 +0000
@@ -3,7 +3,7 @@
 In every person page, the 'Bugs' facet has a series of bug listings for
 that person. These pages provide simple and advanced search forms.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> name16 = getUtility(IPersonSet).get(16)
 
 Let's define a helper function to make it easier to construct a view.
@@ -92,7 +92,7 @@
 
     >>> login("foo.bar@xxxxxxxxxxxxx")
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> bug_task = reported_bugtasks[1]
     >>> print bug_task.distribution.name
     ubuntu
@@ -229,7 +229,7 @@
 Unassigned, and In Progress bug lists.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
 
     >>> ubuntu = getUtility(IDistributionSet).getByName("ubuntu")
     >>> ubuntu_mozilla_firefox = ubuntu.getSourcePackage("mozilla-firefox")
@@ -465,7 +465,7 @@
 listed three times since there are three BugTasks for that particular bug (see
 bug 1357):
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> bug_one = getUtility(IBugSet).get(1)
     >>> bug_one.newMessage(no_priv, 'Some message', 'Contents')
     <Message at ...>

=== modified file 'lib/lp/bugs/browser/tests/special/bugs-fixed-elsewhere.txt'
--- lib/lp/bugs/browser/tests/special/bugs-fixed-elsewhere.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/browser/tests/special/bugs-fixed-elsewhere.txt	2010-10-13 18:38:20 +0000
@@ -33,14 +33,14 @@
 
 Simply opening a bug elsewhere won't increase the count.
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> evolution = getUtility(IProductSet).getByName('evolution')
     >>> evolution != bugtarget
     True
 
     >>> bug = filebug(bugtarget, 'Example Bug')
 
-    >>> from canonical.launchpad.interfaces import IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
     >>> elsewhere = getUtility(IBugTaskSet).createTask(
     ...     bug, owner=getUtility(ILaunchBag).user, product=evolution)
     >>> view.bugs_fixed_elsewhere_count
@@ -50,7 +50,7 @@
 by one.
 
     >>> from canonical.launchpad.ftests import syncUpdate
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> elsewhere.transitionToStatus(
     ...     BugTaskStatus.FIXRELEASED, getUtility(ILaunchBag).user)
     >>> syncUpdate(elsewhere)

=== modified file 'lib/lp/bugs/doc/bug-nomination.txt'
--- lib/lp/bugs/doc/bug-nomination.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bug-nomination.txt	2010-10-13 18:38:20 +0000
@@ -41,7 +41,7 @@
 
 Let's create another nomination, this time on a product series.
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
 
     >>> firefox = getUtility(IProductSet).getByName("firefox")
 
@@ -163,7 +163,7 @@
 Nomination status changes have an associated workflow. For this reason,
 setting status directly is not possible.
 
-    >>> from canonical.launchpad.interfaces import BugNominationStatus
+    >>> from lp.bugs.interfaces.bugnomination import BugNominationStatus
 
     >>> nomination.status = BugNominationStatus.APPROVED
     Traceback (most recent call last):
@@ -175,7 +175,7 @@
 nomination can approve or decline it.
 
     >>> from canonical.launchpad.webapp.authorization import check_permission
-    >>> from canonical.launchpad.interfaces import ILaunchBag
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
 
     >>> current_user = getUtility(ILaunchBag).user
 
@@ -211,7 +211,7 @@
 For example, there are currently no bugtasks on the firefox_trunk
 productseries.
 
-    >>> from canonical.launchpad.interfaces import BugTaskSearchParams
+    >>> from lp.bugs.interfaces.bugtask import BugTaskSearchParams
 
     >>> params = BugTaskSearchParams(user=no_privs, bug=bug_one)
     >>> found_tasks = firefox_trunk.searchTasks(params)
@@ -242,7 +242,7 @@
 each package the bug affects in that distro. For example, let's ensure
 bug #1 affects more than one Ubuntu package.
 
-    >>> from canonical.launchpad.interfaces import IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
 
     >>> ubuntu_tbird = ubuntu.getSourcePackage("thunderbird")
 
@@ -608,7 +608,7 @@
 IBugNominationSet is used to fetch bug nominations by ID. This is useful
 mainly in traversal code.
 
-    >>> from canonical.launchpad.interfaces import IBugNominationSet
+    >>> from lp.bugs.interfaces.bugnomination import IBugNominationSet
 
     >>> getUtility(IBugNominationSet).get(1)
     <BugNomination at ...>
@@ -642,7 +642,7 @@
 NominationSeriesObsoleteError. Let's make a new obsolete distroseries
 to demonstrate.
 
-    >>> from canonical.launchpad.interfaces import SeriesStatus
+    >>> from lp.registry.interfaces.series import SeriesStatus
 
     >>> login("foo.bar@xxxxxxxxxxxxx")
     >>> ubuntu_edgy = factory.makeDistroRelease(

=== modified file 'lib/lp/bugs/doc/bug-reported-acknowledgement.txt'
--- lib/lp/bugs/doc/bug-reported-acknowledgement.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bug-reported-acknowledgement.txt	2010-10-13 18:38:20 +0000
@@ -69,7 +69,7 @@
 The security proxies also prevent unprivileged users from editing the
 message.
 
-    >>> from canonical.launchpad.interfaces import IPerson
+    >>> from lp.registry.interfaces.person import IPerson
 
     >>> def check_access(user, context):
     ...     if IPerson.providedBy(user):

=== modified file 'lib/lp/bugs/doc/bug-reporting-guidelines.txt'
--- lib/lp/bugs/doc/bug-reporting-guidelines.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bug-reporting-guidelines.txt	2010-10-13 18:38:20 +0000
@@ -68,7 +68,7 @@
 The security proxies also prevent unprivileged users from editing the
 guidelines.
 
-    >>> from canonical.launchpad.interfaces import IPerson
+    >>> from lp.registry.interfaces.person import IPerson
 
     >>> def check_access(user, context):
     ...     if IPerson.providedBy(user):

=== modified file 'lib/lp/bugs/doc/bug-set-status.txt'
--- lib/lp/bugs/doc/bug-set-status.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/bug-set-status.txt	2010-10-13 18:38:20 +0000
@@ -5,14 +5,14 @@
 changing the status, the target, and the new status.
 
     >>> from canonical.testing.layers import LaunchpadZopelessLayer
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> LaunchpadZopelessLayer.switchDbUser('launchpad')
     >>> login('no-priv@xxxxxxxxxxxxx')
     >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
 
     >>> from canonical.launchpad.interfaces import (
     ...     CreateBugParams, IProductSet)
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> bug_params = CreateBugParams(
     ...     owner=no_priv, title='Sample bug', comment='This is a sample bug.')
     >>> firefox = getUtility(IProductSet).getByName('firefox')
@@ -28,7 +28,7 @@
     >>> commit()
     >>> LaunchpadZopelessLayer.switchDbUser(test_dbuser)
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> bug = getUtility(IBugSet).get(bug_id)
     >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
     >>> firefox = getUtility(IProductSet).getByName('firefox')
@@ -88,7 +88,7 @@
 If the bug is targeted to the product series, the product series bugtask
 is edited.
 
-    >>> from canonical.launchpad.interfaces import IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
     >>> commit()
     >>> LaunchpadZopelessLayer.switchDbUser('launchpad')
     >>> bug = getUtility(IBugSet).get(bug_id)
@@ -140,7 +140,7 @@
 
     >>> commit()
     >>> LaunchpadZopelessLayer.switchDbUser('launchpad')
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
 
     # Set a milestone to ensure that the current db user has enough

=== modified file 'lib/lp/bugs/doc/bug-tags.txt'
--- lib/lp/bugs/doc/bug-tags.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bug-tags.txt	2010-10-13 18:38:20 +0000
@@ -4,7 +4,7 @@
 one or more tags. A tag is a simple text string, not contain a space
 character. The tags are available as a list of strings on the bug:
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> bug_one = getUtility(IBugSet).get(1)
 
 There are no tags currently, so let's add some. It doesn't matter which
@@ -67,7 +67,7 @@
 To make it easy editing the tags as a space separated text string, we
 use BugTagsWidget.
 
-    >>> from canonical.launchpad.interfaces import IBug
+    >>> from lp.bugs.interfaces.bug import IBug
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
     >>> from canonical.widgets.bug import BugTagsWidget
     >>> bug_tags_field = IBug['tags'].bind(bug_one)
@@ -243,7 +243,8 @@
 which tags can be used. The tags are ordered alphabetically.  All tags
 are shown, no matter if they are used in open bugs or closed ones.
 
-    >>> from canonical.launchpad.interfaces import IProductSet, BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> firefox = getUtility(IProductSet).getByName('firefox')
     >>> login('test@xxxxxxxxxxxxx')
     >>> for bugtask in firefox.searchTasks(BugTaskSearchParams(
@@ -256,7 +257,7 @@
     >>> firefox.getUsedBugTags()
     [u'doc', u'layout-test', u'sco', u'svg']
 
-    >>> from canonical.launchpad.interfaces import IProjectGroupSet
+    >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet
     >>> mozilla = getUtility(IProjectGroupSet).getByName('mozilla')
     >>> mozilla.getUsedBugTags()
     [u'crash', u'doc', u'layout-test', u'sco', u'svg']

=== modified file 'lib/lp/bugs/doc/bugactivity.txt'
--- lib/lp/bugs/doc/bugactivity.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugactivity.txt	2010-10-13 18:38:20 +0000
@@ -30,7 +30,7 @@
 
 == User files a bug ==
 
-    >>> from canonical.launchpad.interfaces import CreateBugParams
+    >>> from lp.bugs.interfaces.bug import CreateBugParams
     >>> firefox = getUtility(IProductSet)['firefox']
     >>> params = CreateBugParams(
     ...     title="a test bug",
@@ -48,7 +48,7 @@
 
 == Bug title edited ==
 
-    >>> from canonical.launchpad.interfaces import IBug
+    >>> from lp.bugs.interfaces.bug import IBug
     >>> old_state = Snapshot(bug, providing=IBug)
     >>> bug.title = "new bug title"
     >>> bug_edited = ObjectModifiedEvent(
@@ -66,7 +66,7 @@
 == Source package assignment edited ==
 
     >>> from lazr.lifecycle.snapshot import Snapshot
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> from canonical.launchpad.interfaces import (
     ...     ISourcePackageNameSet, IDistributionSet)
     >>> mozilla_firefox = getUtility(ISourcePackageNameSet)['mozilla-firefox']

=== modified file 'lib/lp/bugs/doc/bugcomment.txt'
--- lib/lp/bugs/doc/bugcomment.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugcomment.txt	2010-10-13 18:38:20 +0000
@@ -5,7 +5,7 @@
 independently.
 
     >>> from zope.component import getMultiAdapter
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
 
 
@@ -185,7 +185,8 @@
 comment in sequence, it will be omitted. Let's add some comments and
 attachments to a bug to see this in action:
 
-    >>> from canonical.launchpad.interfaces import ILaunchBag, IPersonSet
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> import StringIO
     >>> user = getUtility(ILaunchBag).user
     >>> different_user = getUtility(IPersonSet).getByName('name16')
@@ -338,7 +339,7 @@
 
     >>> from lp.bugs.browser.bugcomment import BugComment
     >>> from lp.bugs.browser.bugtask import BugActivityItem
-    >>> from canonical.launchpad.interfaces import IBugActivitySet
+    >>> from lp.bugs.interfaces.bugactivity import IBugActivitySet
 
     >>> user = factory.makePerson(displayname="Arthur Dent")
     >>> message = factory.makeMessage(

=== modified file 'lib/lp/bugs/doc/bugmail-headers.txt'
--- lib/lp/bugs/doc/bugmail-headers.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugmail-headers.txt	2010-10-13 18:38:20 +0000
@@ -15,7 +15,7 @@
 You can ask an IBugTask for its representation as an email header value:
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
 
     >>> bugtaskset = getUtility(IBugTaskSet)
     >>> upstream_firefox_bugtask = bugtaskset.get(2)
@@ -73,7 +73,7 @@
 Let's use an example where Scott James Remnant is assigned to a task, but
 doesn't have a "preferred email" set in Launchpad.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> scott = getUtility(IPersonSet).getByName('keybuk')
     >>> debian_firefox_bugtask.transitionToAssignee(scott)
     >>> debian_firefox_bugtask.asEmailHeaderValue()

=== modified file 'lib/lp/bugs/doc/bugmessage-visibility.txt'
--- lib/lp/bugs/doc/bugmessage-visibility.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugmessage-visibility.txt	2010-10-13 18:38:20 +0000
@@ -6,9 +6,9 @@
 A bug message has a visible field, which is True by default.
 
     # Setup for creating a new message
-    >>> from canonical.launchpad.interfaces import IBugMessageSet
-    >>> from canonical.launchpad.interfaces import IBugSet
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.bugs.interfaces.bugmessage import IBugMessageSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.registry.interfaces.person import IPersonSet
 
     >>> bugmessageset = getUtility(IBugMessageSet)
     >>> sample_person = getUtility(IPersonSet).get(12)

=== modified file 'lib/lp/bugs/doc/bugmessage.txt'
--- lib/lp/bugs/doc/bugmessage.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugmessage.txt	2010-10-13 18:38:20 +0000
@@ -11,7 +11,7 @@
 IBugMessageSet represents the set of all IBugMessages in the
 system.
 
-    >>> from canonical.launchpad.interfaces import IBugMessageSet
+    >>> from lp.bugs.interfaces.bugmessage import IBugMessageSet
     >>> bugmessageset = getUtility(IBugMessageSet)
 
 An individual IBugMessage can be retrieved with
@@ -25,7 +25,7 @@
 getImportedBugMessages. Imported comments are comments being linked to a
 bug watch.
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> bug_15 = getUtility(IBugSet).get(15)
     >>> bug_15.messages.count()
     7
@@ -51,7 +51,7 @@
 
 To create a bug message, use IBugMessageSet.createMessage:
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
 
     >>> sample_person = getUtility(IPersonSet).get(12)
     >>> bug_one = getUtility(IBugSet).get(1)
@@ -122,7 +122,7 @@
 CVE watches and bug watches are also created, when a message is imported from
 an external bug tracker.
 
-    >>> from canonical.launchpad.interfaces import IMessageSet
+    >>> from canonical.launchpad.interfaces.message import IMessageSet
     >>> message = getUtility(IMessageSet).fromText(
     ...    'subject',
     ...    """This is a comment from an external tracker. It has a link

=== modified file 'lib/lp/bugs/doc/bugnotification-email.txt'
--- lib/lp/bugs/doc/bugnotification-email.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugnotification-email.txt	2010-10-13 18:38:20 +0000
@@ -456,7 +456,7 @@
 sending mail. Notifications from the janitor are sent with the address
 of the bug itself.
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> lp_janitor = getUtility(ILaunchpadCelebrities).janitor
     >>> get_bugmail_from_address(lp_janitor, bug_four)
     'Launchpad Bug Tracker <4@xxxxxxxxxxxxxxxxxx>'

=== modified file 'lib/lp/bugs/doc/bugnotification-sending.txt'
--- lib/lp/bugs/doc/bugnotification-sending.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/bugnotification-sending.txt	2010-10-13 18:38:20 +0000
@@ -12,7 +12,7 @@
     >>> from datetime import datetime, timedelta
     >>> now = datetime.now(pytz.timezone('UTC'))
     >>> ten_minutes_ago = now - timedelta(minutes=10)
-    >>> from canonical.launchpad.interfaces import IBugNotificationSet
+    >>> from lp.bugs.interfaces.bugnotification import IBugNotificationSet
     >>> len(getUtility(IBugNotificationSet).getNotificationsToSend())
     0
 
@@ -54,7 +54,8 @@
 Anyway, let's start our demonstration by adding a comment to a bug:
 
     >>> login('test@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IBugSet, IMessageSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from canonical.launchpad.interfaces.message import IMessageSet
     >>> bug_one = getUtility(IBugSet).get(1)
     >>> sample_person = getUtility(ILaunchBag).user
     >>> comment = getUtility(IMessageSet).fromText(

=== modified file 'lib/lp/bugs/doc/bugnotification-threading.txt'
--- lib/lp/bugs/doc/bugnotification-threading.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugnotification-threading.txt	2010-10-13 18:38:20 +0000
@@ -16,7 +16,8 @@
 
     >>> import pytz
     >>> from datetime import datetime, timedelta
-    >>> from canonical.launchpad.interfaces import IBugSet, IMessageSet
+    >>> from canonical.launchpad.interfaces.message import IMessageSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> ten_minutes_ago = (
     ...     datetime.now(pytz.timezone('UTC')) - timedelta(minutes=10))
     >>> sample_person = getUtility(ILaunchBag).user
@@ -24,7 +25,7 @@
     >>> bug_one.addChangeNotification(
     ...     '** Some change.', sample_person, when=ten_minutes_ago)
 
-    >>> from canonical.launchpad.interfaces import IBugNotificationSet
+    >>> from lp.bugs.interfaces.bugnotification import IBugNotificationSet
     >>> from lp.bugs.scripts.bugnotification import (
     ...     get_email_notifications)
     >>> notifications = getUtility(IBugNotificationSet).getNotificationsToSend()

=== modified file 'lib/lp/bugs/doc/bugnotificationrecipients.txt'
--- lib/lp/bugs/doc/bugnotificationrecipients.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugnotificationrecipients.txt	2010-10-13 18:38:20 +0000
@@ -20,7 +20,7 @@
 implements INotificationRecipientSet:
 
   >>> from canonical.launchpad.webapp.testing import verifyObject
-  >>> from canonical.launchpad.interfaces import INotificationRecipientSet
+  >>> from canonical.launchpad.interfaces.launchpad import INotificationRecipientSet
   >>> verifyObject(INotificationRecipientSet, recipients)
   True
 
@@ -62,7 +62,7 @@
 
 Let's up some data for our test:
 
-  >>> from canonical.launchpad.interfaces import IPersonSet
+  >>> from lp.registry.interfaces.person import IPersonSet
   >>> from lp.bugs.mail.bugnotificationrecipients import (
   ...     BugNotificationRecipients)
   >>> debian = Distribution.selectOneBy(name="debian")

=== modified file 'lib/lp/bugs/doc/bugnotifications.txt'
--- lib/lp/bugs/doc/bugnotifications.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugnotifications.txt	2010-10-13 18:38:20 +0000
@@ -51,7 +51,7 @@
 
 === Editing a bug report ===
 
-    >>> from canonical.launchpad.interfaces import IBug
+    >>> from lp.bugs.interfaces.bug import IBug
     >>> from lazr.lifecycle.snapshot import Snapshot
     >>> bug_before_modification = Snapshot(firefox_crashes, providing=IBug)
     >>> firefox_crashes.description = "a new description"
@@ -84,7 +84,7 @@
     belongs in the current development series. For backporting a fix to a
     specific distro series, see 3.2.
 
-    >>> from canonical.launchpad.interfaces import IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
     >>> debian = getUtility(IDistributionSet).get(3)
     >>> firefox_source = getUtility(ISourcePackageNameSet).get(1)
     >>> firefox_crashes_in_debian = getUtility(IBugTaskSet).createTask(
@@ -183,7 +183,7 @@
 
 === Commenting on a bug report ===
 
-    >>> from canonical.launchpad.interfaces import IBugMessageSet
+    >>> from lp.bugs.interfaces.bugmessage import IBugMessageSet
 
     >>> bugmessageset = getUtility(IBugMessageSet)
     >>> current_user = getUtility(ILaunchBag).user
@@ -231,7 +231,7 @@
     ** Changed in: mozilla-firefox (Debian)
     ...
 
-    >>> from canonical.launchpad.interfaces import IProductSeriesBugTask
+    >>> from lp.bugs.interfaces.bugtask import IProductSeriesBugTask
     >>> bugtask_before_modification = Snapshot(
     ...     firefox_crashes_in_trunk, providing=IProductSeriesBugTask)
     >>> firefox_crashes_in_trunk.transitionToStatus(
@@ -260,7 +260,7 @@
 attach it to the firefox_crashes bug that we've been using throughout
 this document:
 
-    >>> from canonical.launchpad.interfaces import CveStatus, ICveSet
+    >>> from lp.bugs.interfaces.cve import CveStatus, ICveSet
     >>> cve = getUtility(ICveSet).new(sequence="2004-0276",
     ...     description="a brief CVE description", status=CveStatus.ENTRY)
     >>> from lp.bugs.model.bug import Bug

=== modified file 'lib/lp/bugs/doc/bugs-email-affects-path.txt'
--- lib/lp/bugs/doc/bugs-email-affects-path.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugs-email-affects-path.txt	2010-10-13 18:38:20 +0000
@@ -40,7 +40,7 @@
 
 Getting a product is done by specifying the name of the product.
 
-    >>> from canonical.launchpad.interfaces import IProduct
+    >>> from lp.registry.interfaces.product import IProduct
     >>> evolution = AffectsEmailCommand.getBugTarget('evolution')
     >>> IProduct.providedBy(evolution)
     True
@@ -49,7 +49,7 @@
 
 Inactive products are treated like non-existant ones.
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> unassigned = getUtility(IProductSet).getByName('unassigned')
     >>> unassigned.active
     False
@@ -64,7 +64,7 @@
 A product series is a part of a product, so both the product and series
 name have to be given, separated with a slash.
 
-    >>> from canonical.launchpad.interfaces import IProductSeries
+    >>> from lp.registry.interfaces.productseries import IProductSeries
     >>> evolution_trunk = AffectsEmailCommand.getBugTarget('evolution/trunk')
     >>> IProductSeries.providedBy(evolution_trunk)
     True
@@ -94,7 +94,7 @@
 Getting a distribution is done by specifying the name of the
 distribution.
 
-    >>> from canonical.launchpad.interfaces import IDistribution
+    >>> from lp.registry.interfaces.distribution import IDistribution
     >>> ubuntu = AffectsEmailCommand.getBugTarget('ubuntu')
     >>> IDistribution.providedBy(ubuntu)
     True
@@ -107,7 +107,7 @@
 distribution and package name has to be specified when getting such a
 package.
 
-    >>> from canonical.launchpad.interfaces import IDistributionSourcePackage
+    >>> from lp.registry.interfaces.distributionsourcepackage import IDistributionSourcePackage
     >>> ubuntu_evolution = AffectsEmailCommand.getBugTarget('ubuntu/evolution')
     >>> IDistributionSourcePackage.providedBy(ubuntu_evolution)
     True
@@ -138,7 +138,7 @@
 A distribution series is a part of a distribution, so both the
 distribution and series has to be specified.
 
-    >>> from canonical.launchpad.interfaces import IDistroSeries
+    >>> from lp.registry.interfaces.distroseries import IDistroSeries
     >>> ubuntu_warty = AffectsEmailCommand.getBugTarget('ubuntu/warty')
     >>> IDistroSeries.providedBy(ubuntu_warty)
     True
@@ -157,7 +157,7 @@
 When getting a source package within a distribution series, the source
 package is given after the distribution series.
 
-    >>> from canonical.launchpad.interfaces import ISourcePackage
+    >>> from lp.registry.interfaces.sourcepackage import ISourcePackage
     >>> warty_evolution = AffectsEmailCommand.getBugTarget(
     ...     'ubuntu/warty/evolution')
     >>> ISourcePackage.providedBy(warty_evolution)

=== modified file 'lib/lp/bugs/doc/bugsubscription.txt'
--- lib/lp/bugs/doc/bugsubscription.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugsubscription.txt	2010-10-13 18:38:20 +0000
@@ -12,7 +12,7 @@
 
 IBug has a subscriptions attribute:
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from zope.component import getUtility
     >>> bugset = getUtility(IBugSet)
     >>> bug = bugset.get(1)
@@ -178,7 +178,8 @@
 After adding a product bugtask we can see that the upstream bug
 supervisor is also an indirect subscriber.
 
-    >>> from canonical.launchpad.interfaces import IBugTaskSet, IProductSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> firefox = getUtility(IProductSet).get(4)
 
     >>> getUtility(IBugTaskSet).createTask(
@@ -378,7 +379,7 @@
 
     >>> from lazr.lifecycle.event import ObjectModifiedEvent
     >>> from lazr.lifecycle.snapshot import Snapshot
-    >>> from canonical.launchpad.interfaces import IBug
+    >>> from lp.bugs.interfaces.bug import IBug
 
     >>> print_displayname(linux_source_bug.getDirectSubscribers())
     Foo Bar

=== modified file 'lib/lp/bugs/doc/bugtask-assignee-widget.txt'
--- lib/lp/bugs/doc/bugtask-assignee-widget.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtask-assignee-widget.txt	2010-10-13 18:38:20 +0000
@@ -15,13 +15,13 @@
 
 and a context, which is an IBugTask.assignee field:
 
-  >>> from canonical.launchpad.interfaces import IBugTask
+  >>> from lp.bugs.interfaces.bugtask import IBugTask
   >>> field = IBugTask['assignee']
 
 Let's borrow a bugtask to use in this example:
 
   >>> from zope.component import getUtility
-  >>> from canonical.launchpad.interfaces import IBugTaskSet
+  >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
   >>> bugtask = getUtility(IBugTaskSet).get(2)
 
   >>> ORIGINAL_ASSIGNEE = bugtask.assignee
@@ -81,7 +81,7 @@
 
 The input value is the current user:
 
-  >>> from canonical.launchpad.interfaces import ILaunchBag
+  >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
   >>> widget.getInputValue() == getUtility(ILaunchBag).user
   True
 

=== modified file 'lib/lp/bugs/doc/bugtask-bugwatch-widget.txt'
--- lib/lp/bugs/doc/bugtask-bugwatch-widget.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtask-bugwatch-widget.txt	2010-10-13 18:38:20 +0000
@@ -8,7 +8,7 @@
 
     >>> login('test@xxxxxxxxxxxxx')
 
-    >>> from canonical.launchpad.interfaces import IBugSet, IBugTask
+    >>> from lp.bugs.interfaces.bug import IBugSet, IBugTask
     >>> bug_one = getUtility(IBugSet).get(1)
     >>> bugwatch_field = IBugTask['bugwatch']
     >>> debian_task = bug_one.bugtasks[2]

=== modified file 'lib/lp/bugs/doc/bugtask-display-widgets.txt'
--- lib/lp/bugs/doc/bugtask-display-widgets.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtask-display-widgets.txt	2010-10-13 18:38:20 +0000
@@ -14,7 +14,7 @@
 person icon in front of the name.
 
     >>> from canonical.widgets.bugtask import AssigneeDisplayWidget
-    >>> from canonical.launchpad.interfaces import IBugSet, IBugTask
+    >>> from lp.bugs.interfaces.bug import IBugSet, IBugTask
     >>> bug_one = getUtility(IBugSet).get(1)
     >>> firefox_bugtask = bug_one.bugtasks[0]
     >>> firefox_bugtask.assignee.displayname
@@ -30,7 +30,7 @@
 If we would want to display a different value than the real assignee,
 we can use setRenderedValue()
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> foo_bar = getUtility(IPersonSet).getByEmail('foo.bar@xxxxxxxxxxxxx')
     >>> assignee_widget.setRenderedValue(foo_bar)
     >>> print assignee_widget()
@@ -86,7 +86,7 @@
 
 We can set a specific value to be displayed using setRenderedValue():
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> status_widget.setRenderedValue(BugTaskStatus.CONFIRMED)
     >>> print status_widget()
     <span class="statusCONFIRMED">Confirmed</span>

=== modified file 'lib/lp/bugs/doc/bugtask-expiration.txt'
--- lib/lp/bugs/doc/bugtask-expiration.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtask-expiration.txt	2010-10-13 18:38:20 +0000
@@ -106,7 +106,7 @@
 bugwatch prevents expiration, hence this bugtask will not appear
 in the listings of expirable bugtasks below.
 
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
     >>> mozilla_bugtracker = getUtility(IBugTrackerSet)['mozilla.org']
     >>> jokosher_bugtask_watched = create_old_bug('jokosher watched',
     ...     61, jokosher, external_bugtracker=mozilla_bugtracker)
@@ -409,7 +409,7 @@
 order to be able to expire them. If the Janitor is passed as the user,
 even the private bugs are returned.
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> janitor = getUtility(ILaunchpadCelebrities).janitor
     >>> private_bug.isSubscribed(janitor)
     False

=== modified file 'lib/lp/bugs/doc/bugtask-find-similar.txt'
--- lib/lp/bugs/doc/bugtask-find-similar.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtask-find-similar.txt	2010-10-13 18:38:20 +0000
@@ -52,7 +52,7 @@
 We can also search for distribution bugs:
 
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
     >>> similar_bugs = getUtility(IBugTaskSet).findSimilar(
     ...     sample_person, "Thunderbird SVG",
@@ -80,7 +80,7 @@
 the Firefox bug to private, and repeat the search as a user who isn't
 allowed to view it, only the Thunderbird bug will be returned this time.
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from canonical.launchpad.ftests import syncUpdate
     >>> login('test@xxxxxxxxxxxxx')
     >>> firefox_svg_bug = getUtility(IBugSet).get(1)

=== modified file 'lib/lp/bugs/doc/bugtask-package-bugcounts.txt'
--- lib/lp/bugs/doc/bugtask-package-bugcounts.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtask-package-bugcounts.txt	2010-10-13 18:38:20 +0000
@@ -83,7 +83,7 @@
 
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> from canonical.launchpad.ftests import syncUpdate
-    >>> from canonical.launchpad.interfaces import BugTaskImportance
+    >>> from lp.bugs.interfaces.bugtask import BugTaskImportance
     >>> [ubuntu_firefox_bugtask] = bug.bugtasks
     >>> ubuntu_firefox_bugtask.transitionToImportance(
     ...     BugTaskImportance.CRITICAL, getUtility(ILaunchBag).user)
@@ -117,7 +117,7 @@
 
 If we mark the bug as In Progress, the open_inprogress will increase.
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> ubuntu_firefox_bugtask.transitionToStatus(
     ...     BugTaskStatus.INPROGRESS, getUtility(ILaunchBag).user)
     >>> syncUpdate(ubuntu_firefox_bugtask)
@@ -169,7 +169,7 @@
 
 Duplicates bugs are omitted from the counts.
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> bug.markAsDuplicate(getUtility(IBugSet).get(1))
     >>> syncUpdate(bug)
     >>> package_counts = getUtility(IBugTaskSet).getBugCountsForPackages(

=== modified file 'lib/lp/bugs/doc/bugtask-package-widget.txt'
--- lib/lp/bugs/doc/bugtask-package-widget.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtask-package-widget.txt	2010-10-13 18:38:20 +0000
@@ -12,7 +12,8 @@
 to map the package names, we need a distribution, so we give the widget
 a distribution task to work with.
 
-    >>> from canonical.launchpad.interfaces import IBugSet, IDistroBugTask
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.bugs.interfaces.bugtask import IDistroBugTask
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
     >>> bug_one = getUtility(IBugSet).get(1)
     >>> ubuntu_task = bug_one.bugtasks[-2]

=== modified file 'lib/lp/bugs/doc/bugtask-search-old-urls.txt'
--- lib/lp/bugs/doc/bugtask-search-old-urls.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtask-search-old-urls.txt	2010-10-13 18:38:20 +0000
@@ -10,7 +10,7 @@
     ...     BugTaskSearchListingView, rewrite_old_bugtask_status_query_string)
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
 
     >>> server_url = 'http://foobar/'

=== modified file 'lib/lp/bugs/doc/bugtask-search.txt'
--- lib/lp/bugs/doc/bugtask-search.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtask-search.txt	2010-10-13 18:38:20 +0000
@@ -25,7 +25,7 @@
 a distribution, or a distribution source package. No Privileges Person
 isn't a bug supervisor, so no bugs are found for him:
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
     >>> no_priv_bug_supervisor = BugTaskSearchParams(
     ...     user=None, bug_supervisor=no_priv)
@@ -37,7 +37,7 @@
 
 Firefox has a few bugs:
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> firefox = getUtility(IProductSet).getByName('firefox')
     >>> firefox_bugs = firefox.searchTasks(all_public)
     >>> firefox_public_bugs = firefox_bugs.count()
@@ -48,7 +48,7 @@
 
 Ubuntu does too:
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet).getByName("ubuntu")
     >>> all_public = BugTaskSearchParams(user=None)
     >>> ubuntu_bugs = ubuntu.searchTasks(all_public)
@@ -67,7 +67,7 @@
 To get all related tasks to a person call searchTasks() on the person
 object:
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> user = getUtility(IPersonSet).getByName('name16')
     >>> user_bugs = user.searchTasks(None, user=None)
     >>> user_bugs.count() > 0
@@ -148,7 +148,7 @@
 If we add a comment containing the search string to bug one, that bug
 will be returned by the search only if search_comments is True.
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> bug_one = getUtility(IBugSet).get(1)
     >>> bug_one.newMessage(no_priv, 'No subject', 'some wordincomment')
     <Message at ...>
@@ -249,7 +249,7 @@
     >>> print list(BugNomination.selectBy(distroseries=warty))
     []
 
-    >>> from canonical.launchpad.interfaces import CreateBugParams
+    >>> from lp.bugs.interfaces.bug import CreateBugParams
     >>> nominated_for_warty = BugTaskSearchParams(
     ...     user=None, nominated_for=warty)
     >>> list(ubuntu.searchTasks(nominated_for_warty))
@@ -381,7 +381,7 @@
 
 The search filter can also return bugs that are related to CVE reports:
 
-    >>> from canonical.launchpad.interfaces import ICveSet
+    >>> from lp.bugs.interfaces.cve import ICveSet
     >>> def getCves(bugtask):
     ...     bugcve = getUtility(ICveSet).getBugCvesForBugTasks([bugtask])[0]
     ...     return bugcve.cve.sequence
@@ -400,7 +400,7 @@
 person has commented. No Privileges Person hasn't commented on any bugs, so no
 bugs are found for him:
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> import transaction
     >>> transaction.abort()
 
@@ -442,8 +442,8 @@
 If No Privileges Person reports a bug and does not comment on it, that bug
 will not be included in the results returned by the bug commenter search.
 
-    >>> from canonical.launchpad.interfaces import CreateBugParams
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.bugs.interfaces.bug import CreateBugParams
+    >>> from lp.registry.interfaces.product import IProductSet
 
     >>> firefox = getUtility(IProductSet).getByName('firefox')
     >>> firefox.createBug(
@@ -543,7 +543,7 @@
 a partner package:
 
     >>> from zope.security.proxy import removeSecurityProxy
-    >>> from canonical.launchpad.interfaces import IComponentSet
+    >>> from lp.soyuz.interfaces.component import IComponentSet
     >>> proxied_cdrkit = ubuntu.getSourcePackage("cdrkit")
     >>> cdrkit = removeSecurityProxy(proxied_cdrkit)
     >>> cdrkit.component = getUtility(IComponentSet)['partner']
@@ -558,7 +558,7 @@
 
 We can file a bug against it and see that show up in a search:
 
-    >>> from canonical.launchpad.interfaces import CreateBugParams
+    >>> from lp.bugs.interfaces.bug import CreateBugParams
     >>> bug = cdrkit.createBug(
     ...     CreateBugParams(owner=no_priv, title='Bug to be fixed in trunk',
     ...                     comment='Something'))
@@ -1207,7 +1207,7 @@
 a distribution, a distribution series and a distribution source package. No
 Privileges Person isn't a structural subscriber, so no bug tasks are found:
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
     >>> no_priv_struct_sub = BugTaskSearchParams(
     ...     user=None, structural_subscriber=no_priv)

=== modified file 'lib/lp/bugs/doc/bugtask-status-workflow.txt'
--- lib/lp/bugs/doc/bugtask-status-workflow.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtask-status-workflow.txt	2010-10-13 18:38:20 +0000
@@ -51,7 +51,7 @@
 The bug status cannot be set directly, but the value can be retrieved
 directly.
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
 
     >>> ubuntu_firefox_task.status = BugTaskStatus.CONFIRMED
     Traceback (most recent call last):
@@ -275,7 +275,7 @@
 to another. Like status, assignee cannot be set directly, because
 setting an assignee has "side effects".
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> sample_person = getUtility(IPersonSet).get(12)
 
     >>> ubuntu_firefox_task.assignee = foobar

=== modified file 'lib/lp/bugs/doc/bugtask.txt'
--- lib/lp/bugs/doc/bugtask.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtask.txt	2010-10-13 18:38:20 +0000
@@ -15,7 +15,7 @@
 
     >>> from zope.component import getUtility
     >>> import transaction
-    >>> from canonical.launchpad.interfaces import IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
     >>> bugtaskset = getUtility(IBugTaskSet)
 
 To create a bug task, you have to be logged in:
@@ -57,7 +57,7 @@
     >>> upstream_task.product == evolution
     True
 
-    >>> from canonical.launchpad.interfaces import IUpstreamBugTask
+    >>> from lp.bugs.interfaces.bugtask import IUpstreamBugTask
     >>> IUpstreamBugTask.providedBy(upstream_task)
     True
 
@@ -70,7 +70,7 @@
     >>> distro_task.distribution == ubuntu
     True
 
-    >>> from canonical.launchpad.interfaces import IDistroBugTask
+    >>> from lp.bugs.interfaces.bugtask import IDistroBugTask
     >>> IDistroBugTask.providedBy(distro_task)
     True
 
@@ -84,7 +84,7 @@
     >>> distro_series_task.distroseries == warty
     True
 
-    >>> from canonical.launchpad.interfaces import IDistroSeriesBugTask
+    >>> from lp.bugs.interfaces.bugtask import IDistroSeriesBugTask
     >>> IDistroSeriesBugTask.providedBy(distro_series_task)
     True
 
@@ -106,7 +106,7 @@
 == Bug Task Targets ==
 
     >>> from lp.registry.model.distributionsourcepackage import DistributionSourcePackage
-    >>> from canonical.launchpad.interfaces import IDistributionSourcePackage
+    >>> from lp.registry.interfaces.distributionsourcepackage import IDistributionSourcePackage
 
 The "target" of an IBugTask can be one of the items in the following
 list.
@@ -118,7 +118,7 @@
 
   * a product series
 
-    >>> from canonical.launchpad.interfaces import IProductSeriesBugTask
+    >>> from lp.bugs.interfaces.bugtask import IProductSeriesBugTask
 
     >>> firefox = productset['firefox']
     >>> firefox_1_0 = firefox.getSeries("1.0")
@@ -166,7 +166,7 @@
   * a distroseries sourcepackage
 
     >>> from lp.registry.model.sourcepackage import SourcePackage
-    >>> from canonical.launchpad.interfaces import ISourcePackage
+    >>> from lp.registry.interfaces.sourcepackage import ISourcePackage
     >>> distro_series_sp_task = bugtaskset.get(16)
     >>> expected_target = SourcePackage(
     ...     distroseries=distro_series_sp_task.distroseries,
@@ -308,7 +308,8 @@
 We'll open a bug on just the distribution, and also a bug on a specific
 package.
 
-    >>> from canonical.launchpad.interfaces import CreateBugParams, ILaunchBag
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
+    >>> from lp.bugs.interfaces.bug import CreateBugParams
     >>> launchbag = getUtility(ILaunchBag)
     >>> params = CreateBugParams(
     ...     owner=launchbag.user,
@@ -824,7 +825,7 @@
 later on the interaction between privacy and teams (see the section
 entitled _Privacy and Team Awareness_):
 
-    >>> from canonical.launchpad.interfaces import IBug
+    >>> from lp.bugs.interfaces.bug import IBug
     >>> from lazr.lifecycle.snapshot import Snapshot
 
     >>> bug_upstream_firefox_no_svg_support = bugtaskset.get(2)
@@ -868,7 +869,7 @@
 results:
 
     >>> from canonical.launchpad.searchbuilder import any
-    >>> from canonical.launchpad.interfaces import BugTaskSearchParams
+    >>> from lp.bugs.interfaces.bugtask import BugTaskSearchParams
     >>> params = BugTaskSearchParams(
     ...     status=any(STATUS_NEW, STATUS_CONFIRMED),
     ...     orderby="id", user=mr_no_privs)
@@ -1053,7 +1054,7 @@
 
 An IBugTask can be adapted to an IBug.
 
-   >>> from canonical.launchpad.interfaces import IBug
+   >>> from lp.bugs.interfaces.bug import IBug
 
    >>> bugtask_four = bugtaskset.get(4)
    >>> bug = IBug(bugtask_four)
@@ -1251,7 +1252,7 @@
 
 ..., a specification gets linked...
 
-    >>> from canonical.launchpad.interfaces import ISpecificationSet
+    >>> from lp.blueprints.interfaces.specification import ISpecificationSet
     >>> spec = getUtility(ISpecificationSet).all_specifications[0]
     >>> spec.linkBug(bug_two)
     <SpecificationBug at ...>

=== modified file 'lib/lp/bugs/doc/bugtracker-tokens.txt'
--- lib/lp/bugs/doc/bugtracker-tokens.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtracker-tokens.txt	2010-10-13 18:38:20 +0000
@@ -5,7 +5,7 @@
     >>> import xmlrpclib
     >>> from zope.component import getUtility
     >>> from canonical.functional import XMLRPCTestTransport
-    >>> from canonical.launchpad.interfaces import ILoginTokenSet
+    >>> from canonical.launchpad.interfaces.logintoken import ILoginTokenSet
     >>> bugtracker_api = xmlrpclib.ServerProxy(
     ...     'http://xmlrpc-private.launchpad.dev:8087/bugs',
     ...     transport=XMLRPCTestTransport())

=== modified file 'lib/lp/bugs/doc/bugtracker.txt'
--- lib/lp/bugs/doc/bugtracker.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugtracker.txt	2010-10-13 18:38:20 +0000
@@ -9,7 +9,7 @@
     >>> import pytz
     >>> from datetime import datetime, timedelta
     >>> from canonical.database.sqlbase import flush_database_updates
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
     >>> bugtracker_set = getUtility(IBugTrackerSet)
     >>> mozilla_bugzilla = bugtracker_set.getByName('mozilla.org')
     >>> now = datetime.now(pytz.UTC)
@@ -208,7 +208,7 @@
 
 A bug tracker can have a number of alias URLs associated with it.
 
-    >>> from canonical.launchpad.interfaces import IBugTrackerAliasSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerAliasSet
     >>> bugtrackeralias_set = getUtility(IBugTrackerAliasSet)
 
 The most natural way to work with aliases is via the aliases attribute
@@ -325,7 +325,7 @@
 
 We will forge some BugMessage records before trying again:
 
-    >>> from canonical.launchpad.interfaces import IBugMessageSet
+    >>> from lp.bugs.interfaces.bugmessage import IBugMessageSet
     >>> from zope.security.proxy import removeSecurityProxy
 
     >>> for num, bug_watch in enumerate(mozilla_bugzilla.watches):

=== modified file 'lib/lp/bugs/doc/bugwatch.txt'
--- lib/lp/bugs/doc/bugwatch.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugwatch.txt	2010-10-13 18:38:20 +0000
@@ -20,7 +20,7 @@
 Bug watches are accessed via a utility that provides IBugWatchSet.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IBugWatchSet
+    >>> from lp.bugs.interfaces.bugwatch import IBugWatchSet
     >>> getUtility(IBugWatchSet).get(98765)
     Traceback (most recent call last):
     ...
@@ -104,7 +104,7 @@
 bug. This method is useful for preventing duplicate bug watches from
 being added.
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> bug_one = getUtility(IBugSet).get(1)
     >>> mozilla_watch = bug_one.getBugWatch(mozilla_bugtracker, '2000')
     >>> mozilla_watch in bug_one.watches
@@ -125,7 +125,7 @@
 
 To create a bugwatch, use IBugWatchSet.createBugWatch:
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
 
     >>> sample_person = getUtility(IPersonSet).get(12)
     >>> bug_one = getUtility(IBugSet).get(1)
@@ -267,7 +267,7 @@
     ...         print "%s => %s" % (old_bugtask.importance.title,
     ...             bugtask.importance.title)
     >>> from canonical.launchpad.ftests.event import TestEventListener
-    >>> from canonical.launchpad.interfaces import IBugTask
+    >>> from lp.bugs.interfaces.bugtask import IBugTask
     >>> from lazr.lifecycle.interfaces import IObjectModifiedEvent
     >>> event_listener = TestEventListener(
     ...     IBugTask, IObjectModifiedEvent, print_bugtask_modified)
@@ -275,7 +275,7 @@
 If we pass in a different Malone status than the existing one, an event
 will be fired off, even though the remote status stays the same.
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> old_lastchanged = debian_bugwatch.lastchanged
     >>> debian_bugwatch.updateStatus(
     ...     debian_bugwatch.remotestatus, BugTaskStatus.NEW)
@@ -342,7 +342,7 @@
 event listener will pick up. We reset the `lastchanged` field of the bug
 watch so that we can demonstrate how it gets updated.
 
-    >>> from canonical.launchpad.interfaces import BugTaskImportance
+    >>> from lp.bugs.interfaces.bugtask import BugTaskImportance
     >>> debian_bugwatch.lastchanged = old_lastchanged
     >>> old_remote_importance = debian_bugwatch.remote_importance
 

=== modified file 'lib/lp/bugs/doc/bugwidget.txt'
--- lib/lp/bugs/doc/bugwidget.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/bugwidget.txt	2010-10-13 18:38:20 +0000
@@ -10,7 +10,7 @@
     >>> bug_widget = BugWidget(bug_field, request)
     >>> bug_one = bug_widget.getInputValue()
 
-    >>> from canonical.launchpad.interfaces import IBug
+    >>> from lp.bugs.interfaces.bug import IBug
     >>> IBug.providedBy(bug_one)
     True
     >>> bug_one.id

=== modified file 'lib/lp/bugs/doc/checkwatches.txt'
--- lib/lp/bugs/doc/checkwatches.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/checkwatches.txt	2010-10-13 18:38:20 +0000
@@ -19,7 +19,7 @@
 the watch.
 
     >>> from canonical.config import config
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> from lp.testing.factory import LaunchpadObjectFactory
     >>> from canonical.testing.layers import LaunchpadZopelessLayer
 
@@ -186,7 +186,7 @@
 bug watch. The timeout will be recorded against the bug watch we just
 created in its last_error_type field.
 
-    >>> from canonical.launchpad.interfaces import BugWatchActivityStatus
+    >>> from lp.bugs.interfaces.bugwatch import BugWatchActivityStatus
     >>> example_bugwatch.last_error_type == BugWatchActivityStatus.TIMEOUT
     True
 

=== modified file 'lib/lp/bugs/doc/cve.txt'
--- lib/lp/bugs/doc/cve.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/cve.txt	2010-10-13 18:38:20 +0000
@@ -23,7 +23,7 @@
     >>> login("test@xxxxxxxxxxxxx")
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import CveStatus, ICveSet
+    >>> from lp.bugs.interfaces.cve import CveStatus, ICveSet
     >>> cveset = getUtility(ICveSet)
 
 To create a CVE, call ICveSet.new(sequence, description,
@@ -46,7 +46,8 @@
 If we add another link, the count will of course increase by one.  The
 supplied user is the person linking the CVEs.
 
-    >>> from canonical.launchpad.interfaces import IBugSet, IPersonSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
     >>> bug_one = getUtility(IBugSet).get(1)
     >>> bug_one.linkCVE(cve, user=no_priv)
@@ -105,7 +106,7 @@
 distribution. The method that drives this report is
 ICveSet.getBugCvesForBugTasks:
 
-    >>> from canonical.launchpad.interfaces import BugTaskSearchParams
+    >>> from lp.bugs.interfaces.bugtask import BugTaskSearchParams
     >>> from lp.registry.model.distribution import Distribution
     >>> params = BugTaskSearchParams(None)
     >>> ubuntu = Distribution.selectOneBy(name="ubuntu")

=== modified file 'lib/lp/bugs/doc/displaying-bugs-and-tasks.txt'
--- lib/lp/bugs/doc/displaying-bugs-and-tasks.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/displaying-bugs-and-tasks.txt	2010-10-13 18:38:20 +0000
@@ -14,7 +14,8 @@
 Let's use a few examples to demonstrate:
 
   >>> from zope.component import getUtility
-  >>> from canonical.launchpad.interfaces import BugTaskImportance, IBugTaskSet
+  >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
+  >>> from lp.bugs.interfaces.bugtask import BugTaskImportance, IBugTaskSet
   >>> from canonical.launchpad.ftests import test_tales
   >>> from canonical.launchpad.ftests import login
 
@@ -62,7 +63,7 @@
 The logo for a bug task display the corresponding logo for its
 target.
 
-  >>> from canonical.launchpad.interfaces import IBugSet
+  >>> from lp.bugs.interfaces.bug import IBugSet
   >>> bug1 = getUtility(IBugSet).get(1)
   >>> upstream_task = bug1.bugtasks[0]
   >>> print upstream_task.product.name
@@ -96,7 +97,8 @@
 We define a helper that uses the BugTaskListingView class (obtained via
 +listing-view) to render the status:
 
-  >>> from canonical.launchpad.interfaces import BugTaskStatus, ILaunchBag
+  >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
+  >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
   >>> from zope.component import getMultiAdapter
   >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
 

=== modified file 'lib/lp/bugs/doc/externalbugtracker-bug-imports.txt'
--- lib/lp/bugs/doc/externalbugtracker-bug-imports.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-bug-imports.txt	2010-10-13 18:38:20 +0000
@@ -6,7 +6,7 @@
 methods.
 
     >>> from zope.interface import implements
-    >>> from canonical.launchpad.interfaces import ISupportsBugImport
+    >>> from lp.bugs.interfaces.externalbugtracker import ISupportsBugImport
     >>> from lp.bugs.externalbugtracker import (
     ...     ExternalBugTracker)
     >>> class BugImportingExternalBugTracker(ExternalBugTracker):
@@ -35,7 +35,7 @@
 When importing bugs, the reporter is automatically created in Launchpad,
 if he doesn't exist.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> print getUtility(IPersonSet).getByEmail('joe.bloggs@xxxxxxxxxxx')
     None
 
@@ -76,7 +76,7 @@
 preferred e-mail address, and the one that is associated with his
 account is marked as NEW, since we don't know whether it's valid.
 
-    >>> from canonical.launchpad.interfaces import IEmailAddressSet
+    >>> from canonical.launchpad.interfaces.emailaddress import IEmailAddressSet
     >>> reporter_email_addresses = getUtility(IEmailAddressSet).getByPerson(
     ...     bug.owner)
     >>> for email_address in reporter_email_addresses:

=== modified file 'lib/lp/bugs/doc/externalbugtracker-bugzilla-api.txt'
--- lib/lp/bugs/doc/externalbugtracker-bugzilla-api.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-bugzilla-api.txt	2010-10-13 18:38:20 +0000
@@ -369,7 +369,7 @@
 means that we can use it to import comments from the remote Bugzilla
 instance.
 
-    >>> from canonical.launchpad.interfaces import ISupportsCommentImport
+    >>> from lp.bugs.interfaces.externalbugtracker import ISupportsCommentImport
     >>> from canonical.launchpad.webapp.testing import verifyObject
     >>> verifyObject(ISupportsCommentImport, bugzilla)
     True
@@ -602,7 +602,7 @@
 that it can be used to tell the remote bug tracker that a given remote
 bug is linked to a Launchpad bug.
 
-    >>> from canonical.launchpad.interfaces import ISupportsBackLinking
+    >>> from lp.bugs.interfaces.externalbugtracker import ISupportsBackLinking
     >>> verifyObject(ISupportsBackLinking, bugzilla)
     True
 

=== modified file 'lib/lp/bugs/doc/externalbugtracker-bugzilla-lp-plugin.txt'
--- lib/lp/bugs/doc/externalbugtracker-bugzilla-lp-plugin.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-bugzilla-lp-plugin.txt	2010-10-13 18:38:20 +0000
@@ -334,7 +334,7 @@
 means that we can use it to import comments from the remote Bugzilla
 instance.
 
-    >>> from canonical.launchpad.interfaces import ISupportsCommentImport
+    >>> from lp.bugs.interfaces.externalbugtracker import ISupportsCommentImport
     >>> from canonical.launchpad.webapp.testing import verifyObject
     >>> verifyObject(ISupportsCommentImport, bugzilla)
     True

=== modified file 'lib/lp/bugs/doc/externalbugtracker-bugzilla-oddities.txt'
--- lib/lp/bugs/doc/externalbugtracker-bugzilla-oddities.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-bugzilla-oddities.txt	2010-10-13 18:38:20 +0000
@@ -12,7 +12,7 @@
 slightly different names, and they lack the severity field. We pretend
 Mozilla's Bugzilla is an Issuezilla instance here:
 
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
 
     >>> from lp.bugs.tests.externalbugtracker import TestIssuezilla
     >>> from lp.bugs.scripts.checkwatches import CheckwatchesMaster

=== modified file 'lib/lp/bugs/doc/externalbugtracker-bugzilla.txt'
--- lib/lp/bugs/doc/externalbugtracker-bugzilla.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-bugzilla.txt	2010-10-13 18:38:20 +0000
@@ -59,7 +59,7 @@
 slightly modified implementation.
 
     >>> from lp.bugs.tests.externalbugtracker import TestBugzilla
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
     >>> gnome_bugzilla = (
     ...     getUtility(IBugTrackerSet).getByName('gnome-bugzilla'))
     >>> external_bugzilla = TestBugzilla(gnome_bugzilla.baseurl)
@@ -576,7 +576,7 @@
 Importance gets updated for Bugzilla bugs.  Let's set it to some bogus
 value, and see that it gets set to a proper value.
 
-    >>> from canonical.launchpad.interfaces import BugTaskImportance
+    >>> from lp.bugs.interfaces.bugtask import BugTaskImportance
     >>> thunderbird_task.transitionToImportance(
     ...     BugTaskImportance.HIGH,
     ...     thunderbird_task.pillar.owner)
@@ -611,7 +611,7 @@
 the remote status hasn't changed. This can happen if we change the
 status mapping.
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> thunderbird_task.transitionToStatus(
     ...     BugTaskStatus.CONFIRMED,
     ...     getUtility(IPersonSet).getByName('no-priv'))

=== modified file 'lib/lp/bugs/doc/externalbugtracker-checkwatches.txt'
--- lib/lp/bugs/doc/externalbugtracker-checkwatches.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-checkwatches.txt	2010-10-13 18:38:20 +0000
@@ -20,7 +20,7 @@
     >>> from lp.bugs.externalbugtracker import (
     ...     get_external_bugtracker)
     >>> from canonical.launchpad.scripts import log
-    >>> from canonical.launchpad.interfaces import BugTrackerType
+    >>> from lp.bugs.interfaces.bugtracker import BugTrackerType
 
 get_external_bugtracker supports five external bug tracker types:
 

=== modified file 'lib/lp/bugs/doc/externalbugtracker-debbugs.txt'
--- lib/lp/bugs/doc/externalbugtracker-debbugs.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-debbugs.txt	2010-10-13 18:38:20 +0000
@@ -89,7 +89,7 @@
 
 == Checking debbugs bug watches ==
 
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
     >>> debbugs = getUtility(IBugTrackerSet).getByName('debbugs')
     >>> bug_watches = list(debbugs.watches_needing_update)
     >>> len(bug_watches)
@@ -122,7 +122,7 @@
     >>> bug_watch_updater.updateBugWatches(external_debbugs, bug_watches)
     INFO:...:Updating 5 watches for 5 bugs on http://...
 
-    >>> from canonical.launchpad.interfaces import IBugWatchSet
+    >>> from lp.bugs.interfaces.bugwatch import IBugWatchSet
     >>> for bug_watch_id in bug_watch_ids:
     ...     bug_watch = getUtility(IBugWatchSet).get(bug_watch_id)
     ...     print "%s: %s" % (bug_watch.remotebug, bug_watch.remotestatus)
@@ -280,7 +280,7 @@
 The Debbugs ExternalBugTracker can import a Debian bug into Launchpad.
 
     >>> from canonical.launchpad.webapp.testing import verifyObject
-    >>> from canonical.launchpad.interfaces import ISupportsBugImport
+    >>> from lp.bugs.interfaces.externalbugtracker import ISupportsBugImport
     >>> verifyObject(ISupportsBugImport, external_debbugs)
     True
 
@@ -364,8 +364,10 @@
 
     >>> from lp.bugs.tests.externalbugtracker import (
     ...     TestDebBugs, TestDebianBug)
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
-    >>> from canonical.launchpad.interfaces import IBugSet, IPersonSet
+    >>> from canonical.launchpad.interfaces.launchpad import (
+    ...     ILaunchpadCelebrities)
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
     >>> bug = getUtility(IBugSet).get(4)
     >>> bug_watch = bug.addWatch(
@@ -554,7 +556,7 @@
 interface, which allows checkwatches to use it to push Launchpad
 comments back to the remote DebBugs instance.
 
-    >>> from canonical.launchpad.interfaces import ISupportsCommentPushing
+    >>> from lp.bugs.interfaces.externalbugtracker import ISupportsCommentPushing
     >>> ISupportsCommentPushing.providedBy(external_debbugs)
     True
 

=== modified file 'lib/lp/bugs/doc/externalbugtracker-emailaddress.txt'
--- lib/lp/bugs/doc/externalbugtracker-emailaddress.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/externalbugtracker-emailaddress.txt	2010-10-13 18:38:20 +0000
@@ -9,7 +9,7 @@
 The BugTrackerType enumeration defines an EMAILADDRESS bug tracker
 type.
 
-    >>> from canonical.launchpad.interfaces import BugTrackerType
+    >>> from lp.bugs.interfaces.bugtracker import BugTrackerType
     >>> BugTrackerType.EMAILADDRESS.title
     'Email Address'
 
@@ -69,14 +69,14 @@
 to the remote email address, if it is known. The presence of a bug watch
 means that a message has been sent to the upstream tracker.
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> example_bug = getUtility(IBugSet).get(15)
 
 If the message ID of the email sent to the remote tracker is not known,
 we record a remotebug value of '' for the bugwatch (we can't use None
 because BugWatch.remotebug is a NOT NULL field).
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> bug_watch = example_bug.addWatch(bugtracker=email_tracker,
     ...     remotebug='', owner=getUtility(ILaunchpadCelebrities).janitor)
     >>> bug_watch.bugtracker.name, bug_watch.remotebug, bug_watch.bug.id

=== modified file 'lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt'
--- lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/externalbugtracker-mantis-csv.txt	2010-10-13 18:38:20 +0000
@@ -46,14 +46,15 @@
 Let's set up a BugTracker and some watches for the Example.com Bug
 Tracker:
 
-    >>> from canonical.launchpad.interfaces import IBugSet, IPersonSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from lp.bugs.tests.externalbugtracker import (
     ...     TestMantis)
 
     >>> sample_person = getUtility(IPersonSet).getByEmail('test@xxxxxxxxxxxxx')
 
-    >>> from canonical.launchpad.interfaces import BugTrackerType
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from lp.bugs.interfaces.bugtracker import BugTrackerType
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> from lp.bugs.tests.externalbugtracker import (
     ...     new_bugtracker)
     >>> example_bug_tracker = new_bugtracker(BugTrackerType.MANTIS)
@@ -91,7 +92,7 @@
 
 Let's add a few more watches:
 
-    >>> from canonical.launchpad.interfaces import IBugWatchSet
+    >>> from lp.bugs.interfaces.bugwatch import IBugWatchSet
 
     >>> bug_watch_set = getUtility(IBugWatchSet)
     >>> expected_remote_statuses = dict(

=== modified file 'lib/lp/bugs/doc/externalbugtracker-mantis.txt'
--- lib/lp/bugs/doc/externalbugtracker-mantis.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-mantis.txt	2010-10-13 18:38:20 +0000
@@ -49,7 +49,8 @@
 Let's set up a BugTracker and some watches for the Example.com Bug
 Tracker:
 
-    >>> from canonical.launchpad.interfaces import IBugSet, IPersonSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from lp.bugs.tests.externalbugtracker import (
     ...     TestMantis)
 
@@ -57,7 +58,7 @@
 
     >>> example_bug_tracker = new_bugtracker(BugTrackerType.MANTIS)
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> example_bug = getUtility(IBugSet).get(10)
     >>> example_bugwatch = example_bug.addWatch(
     ...     example_bug_tracker, '1550',
@@ -93,7 +94,7 @@
 
 Let's add a few more watches:
 
-    >>> from canonical.launchpad.interfaces import IBugWatchSet
+    >>> from lp.bugs.interfaces.bugwatch import IBugWatchSet
 
     >>> bug_watch_set = getUtility(IBugWatchSet)
     >>> expected_remote_statuses = dict(

=== modified file 'lib/lp/bugs/doc/externalbugtracker-roundup.txt'
--- lib/lp/bugs/doc/externalbugtracker-roundup.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-roundup.txt	2010-10-13 18:38:20 +0000
@@ -116,12 +116,13 @@
 
 First, we create some bug watches to test with:
 
-    >>> from canonical.launchpad.interfaces import IBugSet, IPersonSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> sample_person = getUtility(IPersonSet).getByEmail('test@xxxxxxxxxxxxx')
 
     >>> example_bug_tracker = new_bugtracker(BugTrackerType.ROUNDUP)
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> example_bug = getUtility(IBugSet).get(10)
     >>> example_bugwatch = example_bug.addWatch(
     ...     example_bug_tracker, '1',
@@ -150,7 +151,7 @@
 
 We'll add some more watches now.
 
-    >>> from canonical.launchpad.interfaces import IBugWatchSet
+    >>> from lp.bugs.interfaces.bugwatch import IBugWatchSet
     >>> print_bugwatches(example_bug_tracker.watches,
     ...     roundup.convertRemoteStatus)
     Remote bug 1: New

=== modified file 'lib/lp/bugs/doc/externalbugtracker-rt.txt'
--- lib/lp/bugs/doc/externalbugtracker-rt.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-rt.txt	2010-10-13 18:38:20 +0000
@@ -163,7 +163,7 @@
 Launchpad.dev bug #10 is the same bug as reported in example.com bug
 #1585, so we add a watch against the remote bug.
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> example_bug_tracker = new_bugtracker(BugTrackerType.RT)
     >>> example_bug = getUtility(IBugSet).get(10)
     >>> sample_person = getUtility(IPersonSet).getByEmail(

=== modified file 'lib/lp/bugs/doc/externalbugtracker-sourceforge.txt'
--- lib/lp/bugs/doc/externalbugtracker-sourceforge.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-sourceforge.txt	2010-10-13 18:38:20 +0000
@@ -136,13 +136,13 @@
 First, we create some bug watches to test with. Example.com hosts a
 SourceForge instance which has several bugs that we wish to watch:
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
 
 Launchpad.dev bug #10 is the same bug as reported in example.com bug
 #1722250, so we add a watch against the remote bug.
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from lp.bugs.tests.externalbugtracker import (
     ...     new_bugtracker)
     >>> example_bug = getUtility(IBugSet).get(10)
@@ -175,7 +175,7 @@
 We now add some more watches against remote bugs in the example.com bug
 tracker with a variety of statuses.
 
-    >>> from canonical.launchpad.interfaces import IBugWatchSet
+    >>> from lp.bugs.interfaces.bugwatch import IBugWatchSet
     >>> print_bugwatches(example_bug_tracker.watches,
     ...     sourceforge.convertRemoteStatus)
     Remote bug 1722250: New

=== modified file 'lib/lp/bugs/doc/externalbugtracker-trac-lp-plugin.txt'
--- lib/lp/bugs/doc/externalbugtracker-trac-lp-plugin.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-trac-lp-plugin.txt	2010-10-13 18:38:20 +0000
@@ -32,7 +32,7 @@
     >>> import random
     >>> from canonical.config import config
     >>> from canonical.launchpad.webapp.url import urlappend
-    >>> from canonical.launchpad.interfaces import ILoginTokenSet
+    >>> from canonical.launchpad.interfaces.logintoken import ILoginTokenSet
     >>> from canonical.testing.layers import LaunchpadZopelessLayer
 
     >>> class FakeResponse:
@@ -311,7 +311,7 @@
 three methods: getCommentIds(), getPosterForComment() and
 getMessageForComment().
 
-    >>> from canonical.launchpad.interfaces import ISupportsCommentImport
+    >>> from lp.bugs.interfaces.externalbugtracker import ISupportsCommentImport
     >>> ISupportsCommentImport.providedBy(trac)
     True
 
@@ -476,7 +476,7 @@
 ISupportsCommentPushing interface, which allows Launchpad to use it to
 push comments to the remote bug tracker.
 
-    >>> from canonical.launchpad.interfaces import ISupportsCommentPushing
+    >>> from lp.bugs.interfaces.externalbugtracker import ISupportsCommentPushing
     >>> ISupportsCommentPushing.providedBy(trac)
     True
 
@@ -491,7 +491,7 @@
     >>> commit()
     >>> LaunchpadZopelessLayer.switchDbUser('launchpad')
 
-    >>> from canonical.launchpad.interfaces import IMessageSet
+    >>> from canonical.launchpad.interfaces.message import IMessageSet
     >>> message = getUtility(IMessageSet).fromText(
     ...     "A subject", "An example comment to push.", poster)
 

=== modified file 'lib/lp/bugs/doc/externalbugtracker-trac.txt'
--- lib/lp/bugs/doc/externalbugtracker-trac.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/doc/externalbugtracker-trac.txt	2010-10-13 18:38:20 +0000
@@ -274,13 +274,14 @@
 
 First, we create some bug watches to test with:
 
-    >>> from canonical.launchpad.interfaces import IBugSet, IPersonSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.registry.interfaces.person import IPersonSet
 
     >>> sample_person = getUtility(IPersonSet).getByEmail('test@xxxxxxxxxxxxx')
 
     >>> example_bug_tracker = new_bugtracker(BugTrackerType.TRAC)
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> example_bug = getUtility(IBugSet).get(10)
     >>> example_bugwatch = example_bug.addWatch(
     ...     example_bug_tracker, '1',
@@ -311,7 +312,7 @@
 
 We'll add some more watches now.
 
-    >>> from canonical.launchpad.interfaces import IBugWatchSet
+    >>> from lp.bugs.interfaces.bugwatch import IBugWatchSet
 
     >>> bug_watch_set = getUtility(IBugWatchSet)
     >>> bug_watches = dict(

=== modified file 'lib/lp/bugs/doc/externalbugtracker.txt'
--- lib/lp/bugs/doc/externalbugtracker.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/externalbugtracker.txt	2010-10-13 18:38:20 +0000
@@ -134,7 +134,7 @@
 
 The Gnome Bugzilla is a celebrity in Launchpad.
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> gnome_bugzilla = getUtility(ILaunchpadCelebrities).gnome_bugzilla
 
 If the gnome_bugzilla doesn't have the Launchpad plugin installed, it
@@ -389,7 +389,7 @@
 logged saying that comments won't be imported.
 
     >>> from zope.interface import implements
-    >>> from canonical.launchpad.interfaces import ISupportsCommentImport
+    >>> from lp.bugs.interfaces.externalbugtracker import ISupportsCommentImport
     >>> class CommentImportExternalBugTracker(TimeUnknownExternalBugTracker):
     ...     baseurl = 'http://whatever.com'
     ...     implements(ISupportsCommentImport)
@@ -653,7 +653,7 @@
 ExternalBugTracker.convertRemoteStatus() will either return a
 BugTaskStatus or will raise an UnknownRemoteStatusError.
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> from lp.bugs.externalbugtracker import (
     ...     UnknownRemoteStatusError)
     >>> class StatusConvertingExternalBugTracker(TestExternalBugTracker):

=== modified file 'lib/lp/bugs/doc/hasbugs.txt'
--- lib/lp/bugs/doc/hasbugs.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/hasbugs.txt	2010-10-13 18:38:20 +0000
@@ -7,7 +7,8 @@
 
     >>> from canonical.launchpad.webapp.testing import verifyObject
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IHasBugs, IDistributionSet
+    >>> from lp.bugs.interfaces.bugtarget import IHasBugs
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> distroset = getUtility(IDistributionSet)
     >>> debian = distroset.getByName("debian")
     >>> debian_firefox = debian.getSourcePackage("mozilla-firefox")

=== modified file 'lib/lp/bugs/doc/initial-bug-contacts.txt'
--- lib/lp/bugs/doc/initial-bug-contacts.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/initial-bug-contacts.txt	2010-10-13 18:38:20 +0000
@@ -11,7 +11,7 @@
 no subscriptions associated with a package, an empty list is returned:
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
 
     >>> debian = getUtility(IDistributionSet).getByName("debian")
     >>> debian_firefox = debian.getSourcePackage("mozilla-firefox")
@@ -23,7 +23,7 @@
 IDistributionSourcePackage.addBugSubscription method. You have to
 be logged in to call this method:
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> personset = getUtility(IPersonSet)
     >>> sample_person = personset.getByName("name12")
 
@@ -86,7 +86,7 @@
 mozilla-firefox in Ubuntu to be pmount in Ubuntu, and see how the
 subscribers list changes.
 
-    >>> from canonical.launchpad.interfaces import IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
 
     >>> ubuntu = getUtility(IDistributionSet).getByName("ubuntu")
 
@@ -118,7 +118,7 @@
     >>> import transaction
     >>> from lazr.lifecycle.event import ObjectModifiedEvent
     >>> from lazr.lifecycle.snapshot import Snapshot
-    >>> from canonical.launchpad.interfaces import IDistroBugTask
+    >>> from lp.bugs.interfaces.bugtask import IDistroBugTask
     >>> from lp.services.mail import stub
 
     >>> daf = personset.getByName("daf")
@@ -309,7 +309,7 @@
 to another product will subscribe any new product bug supervisors to the
 bug that aren't already subscribed.
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
 
     >>> mozilla_firefox = getUtility(IProductSet).get(4)
 
@@ -320,7 +320,7 @@
 Then we'll reassign bug #2 in Ubuntu to be in Firefox, noting that Foo
 Bar gets subscribed to the bug in the process:
 
-    >>> from canonical.launchpad.interfaces import IUpstreamBugTask
+    >>> from lp.bugs.interfaces.bugtask import IUpstreamBugTask
 
     >>> bug_two_in_ubuntu = getUtility(IBugTaskSet).get(3)
     >>> print bug_two_in_ubuntu.bug.id
@@ -388,7 +388,7 @@
 The list of teams that a user may add to a package as a bug supervisor will
 only contain those teams of which the user is an administrator.
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> from zope.component import getMultiAdapter
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
 

=== modified file 'lib/lp/bugs/doc/malone-karma.txt'
--- lib/lp/bugs/doc/malone-karma.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/malone-karma.txt	2010-10-13 18:38:20 +0000
@@ -25,7 +25,7 @@
 
     >>> from lazr.lifecycle.event import (
     ...     ObjectCreatedEvent, ObjectModifiedEvent)
-    >>> from canonical.launchpad.interfaces import CreateBugParams
+    >>> from lp.bugs.interfaces.bug import CreateBugParams
     >>> debian = getUtility(IDistributionSet).getByName('debian')
     >>> params = CreateBugParams(
     ...     comment=u"Give me some karma!", title=u"New Bug", owner=foo_bar)
@@ -35,7 +35,7 @@
 Change the title of a bug:
 
     >>> from lazr.lifecycle.snapshot import Snapshot
-    >>> from canonical.launchpad.interfaces import IBug
+    >>> from lp.bugs.interfaces.bug import IBug
     >>> old_bug = Snapshot(bug, providing=IBug)
     >>> bug.title = "Better Title"
     >>> notify(ObjectModifiedEvent(bug, old_bug, ['title']))
@@ -50,7 +50,7 @@
 
 Add a CVE reference to a bug:
 
-    >>> from canonical.launchpad.interfaces import CveStatus, ICveSet
+    >>> from lp.bugs.interfaces.cve import CveStatus, ICveSet
     >>> from lp.bugs.model.cve import BugCve
     >>> cve = getUtility(ICveSet).new('2003-1234', description="Blah blah",
     ...     status=CveStatus.CANDIDATE)
@@ -60,7 +60,7 @@
 
 Add watch for external bug to the bug:
 
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
     >>> from lp.bugs.model.bugwatch import BugWatch
     >>> debbugs = getUtility(IBugTrackerSet)['debbugs']
     >>> bugwatch = BugWatch(
@@ -126,7 +126,7 @@
 
 Change a bug task's importance:
 
-    >>> from canonical.launchpad.interfaces import BugTaskImportance
+    >>> from lp.bugs.interfaces.bugtask import BugTaskImportance
     >>> bugtask.transitionToImportance(
     ...     BugTaskImportance.HIGH, getUtility(ILaunchBag).user)
     >>> for importance in BugTaskImportance.items:
@@ -152,7 +152,8 @@
 
 Create a new bug task on a product:
 
-    >>> from canonical.launchpad.interfaces import IBugTaskSet, IProductSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> evolution = getUtility(IProductSet)['evolution']
     >>> evolution_task = getUtility(IBugTaskSet).createTask(
     ...     bug, product=evolution, owner=foo_bar)
@@ -179,7 +180,7 @@
 
     >>> debian_woody_task.transitionToStatus(
     ...     BugTaskStatus.NEW, getUtility(ILaunchBag).user)
-    >>> from canonical.launchpad.interfaces import IDistroSeriesBugTask
+    >>> from lp.bugs.interfaces.bugtask import IDistroSeriesBugTask
     >>> old_bugtask = Snapshot(
     ...     debian_woody_task, providing=IDistroSeriesBugTask)
     >>> debian_woody_task.transitionToStatus(
@@ -191,7 +192,7 @@
 
     >>> evolution_trunk_task.transitionToStatus(
     ...     BugTaskStatus.NEW, getUtility(ILaunchBag).user)
-    >>> from canonical.launchpad.interfaces import IProductSeriesBugTask
+    >>> from lp.bugs.interfaces.bugtask import IProductSeriesBugTask
     >>> old_bugtask = Snapshot(
     ...     evolution_trunk_task, providing=IProductSeriesBugTask)
     >>> evolution_trunk_task.transitionToStatus(
@@ -218,7 +219,7 @@
 
 Adding a comment generates a karma event, but gives no points:
 
-    >>> from canonical.launchpad.interfaces import IBugMessageSet
+    >>> from lp.bugs.interfaces.bugmessage import IBugMessageSet
     >>> comment = getUtility(IBugMessageSet).createMessage(
     ...     subject="foo", bug=bug, owner=foo_bar, content="bar")
     >>> notify(ObjectCreatedEvent(comment))

=== modified file 'lib/lp/bugs/doc/malone-xmlrpc.txt'
--- lib/lp/bugs/doc/malone-xmlrpc.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/malone-xmlrpc.txt	2010-10-13 18:38:20 +0000
@@ -48,7 +48,7 @@
 
     >>> from lazr.lifecycle.interfaces import IObjectCreatedEvent
     >>> from canonical.launchpad.ftests.event import TestEventListener
-    >>> from canonical.launchpad.interfaces import IBug
+    >>> from lp.bugs.interfaces.bug import IBug
 
     >>> def on_created_event(obj, event):
     ...     print "ObjectCreatedEvent: %r" % obj
@@ -72,7 +72,7 @@
     http://bugs.launchpad.dev/bugs/...
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
 
     >>> bugset = getUtility(IBugSet)
     >>> bug = bugset.get(get_bug_id_from_url(bug_url))

=== modified file 'lib/lp/bugs/doc/official-bug-tags.txt'
--- lib/lp/bugs/doc/official-bug-tags.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/official-bug-tags.txt	2010-10-13 18:38:20 +0000
@@ -208,7 +208,7 @@
 Project group gets the union of all the tags available for its products.
 
     >>> login('test@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IProjectGroupSet
+    >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet
     >>> thunderbird = getUtility(IProductSet).getByName('thunderbird')
     >>> thunderbird.official_bug_tags = [u'baz']
     >>> logout()

=== modified file 'lib/lp/bugs/doc/security-teams.txt'
--- lib/lp/bugs/doc/security-teams.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/doc/security-teams.txt	2010-10-13 18:38:20 +0000
@@ -40,7 +40,8 @@
 bug is a security vulnerability, and the security contact should be
 subscribed to the bug, even when it's marked private.
 
-    >>> from canonical.launchpad.interfaces import ILaunchBag, CreateBugParams
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
+    >>> from lp.bugs.interfaces.bug import CreateBugParams
 
     >>> ubuntu_firefox = ubuntu.getSourcePackage("mozilla-firefox")
     >>> params = CreateBugParams(
@@ -69,7 +70,7 @@
 If the bug were not reported as security-related, only Foo Bar would
 have been subscribed:
 
-    >>> from canonical.launchpad.interfaces import ILaunchBag
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
 
     >>> ubuntu_firefox = ubuntu.getSourcePackage("mozilla-firefox")
     >>> params = CreateBugParams(
@@ -154,7 +155,7 @@
 
 We'll set lifeless as the security_contact for evolution.
 
-    >>> from canonical.launchpad.interfaces import IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
 
 (Make the bug public to ensure the security contact will get
 subscribed.)
@@ -224,7 +225,7 @@
     >>> from zope.event import notify
     >>> from lazr.lifecycle.event import ObjectModifiedEvent
     >>> from lazr.lifecycle.snapshot import Snapshot
-    >>> from canonical.launchpad.interfaces import IUpstreamBugTask
+    >>> from lp.bugs.interfaces.bugtask import IUpstreamBugTask
 
     >>> old_state = Snapshot(bug_in_evolution, providing=IUpstreamBugTask)
     >>> bug_in_evolution.product = thunderbird
@@ -279,7 +280,7 @@
 When a bug becomes security-related, the security contacts for the pillars it
 affects are subscribed to it.
 
-    >>> from canonical.launchpad.interfaces import IBug
+    >>> from lp.bugs.interfaces.bug import IBug
     >>> from zope.event import notify
     >>> from lazr.lifecycle.event import ObjectModifiedEvent
     >>> from lazr.lifecycle.snapshot import Snapshot

=== modified file 'lib/lp/bugs/stories/bug-privacy/10-file-private-distro-bug.txt'
--- lib/lp/bugs/stories/bug-privacy/10-file-private-distro-bug.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bug-privacy/10-file-private-distro-bug.txt	2010-10-13 18:38:20 +0000
@@ -43,7 +43,7 @@
 
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
 
     >>> login("foo.bar@xxxxxxxxxxxxx")
 

=== modified file 'lib/lp/bugs/stories/bug-tags/xx-official-bug-tags.txt'
--- lib/lp/bugs/stories/bug-tags/xx-official-bug-tags.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bug-tags/xx-official-bug-tags.txt	2010-10-13 18:38:20 +0000
@@ -84,7 +84,7 @@
 
 The tags portlet displays a mix of official and unofficial tags.
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> from zope.component import getUtility
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> firesocks = factory.makeProduct(name='firesocks')

=== modified file 'lib/lp/bugs/stories/bug-tags/xx-tags-on-bug-page.txt'
--- lib/lp/bugs/stories/bug-tags/xx-tags-on-bug-page.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bug-tags/xx-tags-on-bug-page.txt	2010-10-13 18:38:20 +0000
@@ -94,7 +94,7 @@
     >>> import transaction
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> firefox = getUtility(IProductSet).getByName('firefox')
     >>> u'an-official-tag' in firefox.getUsedBugTags()

=== modified file 'lib/lp/bugs/stories/bugattachments/xx-attachments-to-bug-report.txt'
--- lib/lp/bugs/stories/bugattachments/xx-attachments-to-bug-report.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bugattachments/xx-attachments-to-bug-report.txt	2010-10-13 18:38:20 +0000
@@ -22,7 +22,7 @@
     >>> import StringIO
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import login, logout, syncUpdate
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
     >>> login("test@xxxxxxxxxxxxx")
     >>> bug_11 = getUtility(IBugSet).get(11)

=== modified file 'lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt'
--- lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bugs/xx-bug-hidden-comments.txt	2010-10-13 18:38:20 +0000
@@ -21,7 +21,8 @@
 is now set to be hidden.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IBugSet, IBugMessageSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.bugs.interfaces.bugmessage import IBugMessageSet
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> bug_11 = getUtility(IBugSet).get(11)
     >>> message = bug_11.messages[-1]

=== modified file 'lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt'
--- lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bugs/xx-bug-nomination-table-row.txt	2010-10-13 18:38:20 +0000
@@ -12,7 +12,8 @@
     >>> from zope.component import getUtility
 
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IBugSet, IDistributionSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> from canonical.launchpad.webapp.authorization import check_permission
 
     >>> login("no-priv@xxxxxxxxxxxxx")

=== modified file 'lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt'
--- lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bugs/xx-bug-text-pages.txt	2010-10-13 18:38:20 +0000
@@ -30,7 +30,7 @@
 
 Next, we'll cycle through all statuses so the dates are present:
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> t0 = bug.bugtasks[0]
     >>> t0.transitionToStatus(BugTaskStatus.INCOMPLETE, mark)
     >>> t0.transitionToStatus(BugTaskStatus.CONFIRMED, mark)

=== modified file 'lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt'
--- lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bugs/xx-incomplete-bugs.txt	2010-10-13 18:38:20 +0000
@@ -108,7 +108,7 @@
     >>> from zope.component import getUtility
     >>> from canonical.database.sqlbase import flush_database_updates
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> login('test@xxxxxxxxxxxxx')
 
     >>> bug_11 = getUtility(IBugSet).get(11)

=== modified file 'lib/lp/bugs/stories/bugs/xx-remote-bug-comments.txt'
--- lib/lp/bugs/stories/bugs/xx-remote-bug-comments.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bugs/xx-remote-bug-comments.txt	2010-10-13 18:38:20 +0000
@@ -72,7 +72,8 @@
 the 'awaiting synchronization' mark goes away.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IBugMessageSet, IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.bugs.interfaces.bugmessage import IBugMessageSet
     >>> from canonical.database.sqlbase import flush_database_updates
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> bug_15 = getUtility(IBugSet).get(15)

=== modified file 'lib/lp/bugs/stories/bugtask-management/xx-change-assignee.txt'
--- lib/lp/bugs/stories/bugtask-management/xx-change-assignee.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bugtask-management/xx-change-assignee.txt	2010-10-13 18:38:20 +0000
@@ -66,7 +66,7 @@
 When assigning a bug to oneself, though, the warning message is suppreseed.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from canonical.launchpad.ftests import login, logout
 
     >>> login('no-priv@xxxxxxxxxxxxx')

=== modified file 'lib/lp/bugs/stories/bugtask-management/xx-edit-email-address-bugtask.txt'
--- lib/lp/bugs/stories/bugtask-management/xx-edit-email-address-bugtask.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bugtask-management/xx-edit-email-address-bugtask.txt	2010-10-13 18:38:20 +0000
@@ -2,7 +2,8 @@
 
     >>> from zope.component import getUtility
     >>> from canonical.database.sqlbase import flush_database_updates
-    >>> from canonical.launchpad.interfaces import IPersonSet, IProductSet
+    >>> from lp.registry.interfaces.person import IPersonSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> from canonical.launchpad.ftests import ANONYMOUS, login, logout
 
     >>> from zope.security.proxy import removeSecurityProxy

=== modified file 'lib/lp/bugs/stories/bugtask-management/xx-view-editable-bug-task.txt'
--- lib/lp/bugs/stories/bugtask-management/xx-view-editable-bug-task.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bugtask-management/xx-view-editable-bug-task.txt	2010-10-13 18:38:20 +0000
@@ -12,11 +12,12 @@
     >>> from zope.component import getUtility
     >>> from canonical.database.sqlbase import flush_database_updates
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IProductSet, IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
+    >>> from lp.registry.interfaces.product import IProductSet
 
     >>> login("test@xxxxxxxxxxxxx")
 
-    >>> from canonical.launchpad.interfaces import IMasterObject
+    >>> from canonical.launchpad.interfaces.lpstorm import IMasterObject
     >>> firefox = IMasterObject(getUtility(IProductSet).getByName("firefox"))
     >>> sample_person = IMasterObject(
     ...     getUtility(IPersonSet).getByName("name12"))

=== modified file 'lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt'
--- lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/bugwatches/xx-bugwatch-errors.txt	2010-10-13 18:38:20 +0000
@@ -8,7 +8,7 @@
 
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> login('test@xxxxxxxxxxxxx')
     >>> bug12 = getUtility(IBugSet).get(12)
     >>> bug12.watches.count() == 0

=== modified file 'lib/lp/bugs/stories/cve/cve-linking.txt'
--- lib/lp/bugs/stories/cve/cve-linking.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/cve/cve-linking.txt	2010-10-13 18:38:20 +0000
@@ -109,7 +109,8 @@
     # This should use a private bug in our sample data.
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IBugSet, ILaunchBag
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from canonical.database.sqlbase import flush_database_updates
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> private_bug = getUtility(IBugSet).get(6)

=== modified file 'lib/lp/bugs/stories/distribution/xx-distribution-upstream-bug-report.txt'
--- lib/lp/bugs/stories/distribution/xx-distribution-upstream-bug-report.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/distribution/xx-distribution-upstream-bug-report.txt	2010-10-13 18:38:20 +0000
@@ -10,7 +10,7 @@
 pre-existing linux-source bug 10. We transition the Ubuntu tasks to
 TRIAGED to ensure that they are picked up by the report.
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> from canonical.launchpad.ftests import login, logout
     >>> from canonical.database.sqlbase import flush_database_updates
     >>> from lp.bugs.tests.bug import (
@@ -203,7 +203,7 @@
 
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> firefox = getUtility(IProductSet).getByName('firefox')
     >>> firefox.official_malone = False
     >>> flush_database_updates()
@@ -239,7 +239,7 @@
 bugtracker is inherited from it's project group:
 
     >>> login('foo.bar@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
     >>> mozilla_org = getUtility(IBugTrackerSet).getByName("mozilla.org")
     >>> firefox.project.bugtracker = mozilla_org
     >>> flush_database_updates()

=== modified file 'lib/lp/bugs/stories/feeds/xx-bug-atom.txt'
--- lib/lp/bugs/stories/feeds/xx-bug-atom.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/feeds/xx-bug-atom.txt	2010-10-13 18:38:20 +0000
@@ -338,7 +338,7 @@
 This feed gets the latest bugs for a whole team.
 First, make a team responsible for some bugs.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from zope.component import getUtility
     >>> one_mem_browser = setupBrowser(
     ...    auth='Basic one-membership@xxxxxxxx:test')

=== modified file 'lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt'
--- lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt	2010-10-13 18:38:20 +0000
@@ -47,7 +47,8 @@
 Ubuntu's bug supervisor doesn't get automatically redirected either.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IDistributionSet, IPersonSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
     >>> foobar = getUtility(IPersonSet).getByName('name16')

=== modified file 'lib/lp/bugs/stories/initial-bug-contacts/20-file-upstream-bug.txt'
--- lib/lp/bugs/stories/initial-bug-contacts/20-file-upstream-bug.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/initial-bug-contacts/20-file-upstream-bug.txt	2010-10-13 18:38:20 +0000
@@ -20,7 +20,7 @@
 Robert Collins (the current bug supervisor) are subscribed to this bug:
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from canonical.launchpad.ftests import login, logout, ANONYMOUS
 
     >>> def subscriber_names(bug):
@@ -38,7 +38,7 @@
 For a security bug, only the reporter and the registrant gets
 subscribed, because Firefox does not have a security contact.
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
 
     >>> login(ANONYMOUS)
     >>> firefox = getUtility(IProductSet).getByName("firefox")

=== modified file 'lib/lp/bugs/stories/initial-bug-contacts/25-file-distribution-bug.txt'
--- lib/lp/bugs/stories/initial-bug-contacts/25-file-distribution-bug.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/initial-bug-contacts/25-file-distribution-bug.txt	2010-10-13 18:38:20 +0000
@@ -24,7 +24,7 @@
 subscribed to the distribution.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from canonical.launchpad.ftests import login, logout, ANONYMOUS
 
     >>> def subscriber_names(bug):
@@ -43,7 +43,7 @@
 When filing a security bug, only the bug reporter and registrant are explicitly
 Cc'd, because the Ubuntu distribution does not have a security contact.
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
 
     >>> login(ANONYMOUS)
     >>> ubuntu = getUtility(IDistributionSet).getByName("ubuntu")

=== modified file 'lib/lp/bugs/stories/standalone/xx-show-distrorelease-cve-report.txt'
--- lib/lp/bugs/stories/standalone/xx-show-distrorelease-cve-report.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/standalone/xx-show-distrorelease-cve-report.txt	2010-10-13 18:38:20 +0000
@@ -19,7 +19,8 @@
 
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IBugSet, IDistributionSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
 
     >>> login("foo.bar@xxxxxxxxxxxxx")
 

=== modified file 'lib/lp/bugs/stories/upstream-bugprivacy/10-file-private-upstream-bug.txt'
--- lib/lp/bugs/stories/upstream-bugprivacy/10-file-private-upstream-bug.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/upstream-bugprivacy/10-file-private-upstream-bug.txt	2010-10-13 18:38:20 +0000
@@ -31,7 +31,7 @@
     >>> from zope.component import getUtility
 
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
 
     >>> login("foo.bar@xxxxxxxxxxxxx")
 

=== modified file 'lib/lp/bugs/stories/webservice/xx-bug-target.txt'
--- lib/lp/bugs/stories/webservice/xx-bug-target.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/stories/webservice/xx-bug-target.txt	2010-10-13 18:38:20 +0000
@@ -50,7 +50,7 @@
 create a new product, owned by ~salgado.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from canonical.launchpad.ftests import login, logout
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> salgado = getUtility(IPersonSet).getByName('salgado')

=== modified file 'lib/lp/bugs/tests/bugs-emailinterface.txt'
--- lib/lp/bugs/tests/bugs-emailinterface.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/bugs/tests/bugs-emailinterface.txt	2010-10-13 18:38:20 +0000
@@ -90,7 +90,7 @@
 
     >>> from canonical.database.sqlbase import commit
     >>> from canonical.launchpad.ftests import sync
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from lp.services.mail import stub
     >>> bugset = getUtility(IBugSet)
     >>> from lp.bugs.model.bugnotification import BugNotification
@@ -263,7 +263,7 @@
     >>> process_email(comment_mail)
     >>> commit()
 
-    >>> from canonical.launchpad.interfaces import IMessageSet
+    >>> from canonical.launchpad.interfaces.message import IMessageSet
     >>> bug_one = bugset.get(1)
     >>> added_message = getUtility(IMessageSet).get('<yada-yada-test1>')[0]
     >>> added_message in bug_one.messages
@@ -757,7 +757,7 @@
 demonstrate, let's first make no_privs an indirect subscriber from bug
 #5, by subscribing him directly to a dupe of bug #5, bug #6.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
 
     >>> login("no-priv@xxxxxxxxxxxxx")
 
@@ -1222,7 +1222,7 @@
 bugs directly to series.
 
     >>> from canonical.config import config
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> from canonical.testing.layers import LaunchpadZopelessLayer
 
     # The script's default user doesn't have permission to change the driver.
@@ -1398,7 +1398,7 @@
 
 Everyone else gets an explanatory error message:
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> upstream_task.transitionToStatus(BugTaskStatus.NEW, email_user)
 
     >>> commit()
@@ -2877,7 +2877,7 @@
 To demonstrate this we need to set up some example objects. Firstly,
 we'll create a new bug on firefox and link it to a remote bug.
 
-    >>> from canonical.launchpad.interfaces import BugTrackerType
+    >>> from lp.bugs.interfaces.bugtracker import BugTrackerType
     >>> from lp.bugs.tests.externalbugtracker import (
     ...     new_bugtracker)
     >>> from canonical.launchpad.interfaces import (
@@ -2983,7 +2983,7 @@
 links it to the remote bug via the BugWatch that the original comment
 was imported from.
 
-    >>> from canonical.launchpad.interfaces import IBugMessageSet
+    >>> from lp.bugs.interfaces.bugmessage import IBugMessageSet
     >>> bug_watch = getUtility(IBugWatchSet).get(bug_watch.id)
 
     >>> reply_bug_message = getUtility(

=== modified file 'lib/lp/bugs/tests/bugtarget-bugcount.txt'
--- lib/lp/bugs/tests/bugtarget-bugcount.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/tests/bugtarget-bugcount.txt	2010-10-13 18:38:20 +0000
@@ -24,7 +24,7 @@
 
 It's possible to limit which statuses to return.
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> bug_counts = bugtarget.getBugCounts(
     ...     None, [BugTaskStatus.NEW, BugTaskStatus.CONFIRMED])
     >>> for status in sorted(bug_counts.keys()):
@@ -94,7 +94,7 @@
 Sample Person (the bug reporter) will still get the bug included in the
 count, but not No Privileges Person or the anonymous user.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> old_counts = bugtarget.getBugCounts(None)
     >>> bug.setPrivate(True, getUtility(ILaunchBag).user)
     True

=== modified file 'lib/lp/bugs/tests/bugtarget-questiontarget.txt'
--- lib/lp/bugs/tests/bugtarget-questiontarget.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/tests/bugtarget-questiontarget.txt	2010-10-13 18:38:20 +0000
@@ -32,7 +32,7 @@
 question.
 
     >>> login('no-priv@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> bug = filebug(bugtarget, "Print is broken", status=BugTaskStatus.NEW)
 
 
@@ -51,7 +51,7 @@
 A Firefox bug in Debian cannot be converted to a question because the
 distribution does not use Launchpad to track bugs.
 
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> firefox_bug = getUtility(IBugSet).get(8)
     >>> firefox = firefox_bug.bugtasks[0].target
     >>> IQuestionTarget.providedBy(firefox)
@@ -69,7 +69,7 @@
 would pass Sample Person as the Person changing the status. He may
 provide a message about why the report is a question.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
 
     >>> login('test@xxxxxxxxxxxxx')
     >>> sample_person = getUtility(IPersonSet).getByName('name12')

=== modified file 'lib/lp/bugs/tests/has-bug-supervisor.txt'
--- lib/lp/bugs/tests/has-bug-supervisor.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/tests/has-bug-supervisor.txt	2010-10-13 18:38:20 +0000
@@ -11,7 +11,7 @@
     >>> print target.bug_supervisor
     None
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> personset = getUtility(IPersonSet)
     >>> no_priv = personset.getByEmail("no-priv@xxxxxxxxxxxxx")
     >>> foo_bar = personset.getByEmail("foo.bar@xxxxxxxxxxxxx")

=== modified file 'lib/lp/bugs/tests/test_bugtask_status.txt'
--- lib/lp/bugs/tests/test_bugtask_status.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/bugs/tests/test_bugtask_status.txt	2010-10-13 18:38:20 +0000
@@ -2,7 +2,7 @@
 
     >>> from canonical.launchpad.interfaces import (
     ...     CreateBugParams, IPersonSet, IProductSet)
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
 
     >>> firefox = getUtility(IProductSet).getByName('firefox')
     >>> nopriv_user = getUtility(IPersonSet).getByName('no-priv')

=== modified file 'lib/lp/buildmaster/doc/buildqueue.txt'
--- lib/lp/buildmaster/doc/buildqueue.txt	2010-10-04 13:55:16 +0000
+++ lib/lp/buildmaster/doc/buildqueue.txt	2010-10-13 18:38:20 +0000
@@ -217,7 +217,7 @@
 
 Use all architectures available in ubuntu/hoary, i.e, i386 and hppa:
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
     >>> hoary = ubuntu['hoary']
     >>> archseries = [arch for arch in hoary.architectures]
@@ -267,7 +267,7 @@
 language pack build.
 
     >>> from zope.security.proxy import removeSecurityProxy
-    >>> from canonical.launchpad.interfaces import ISectionSet
+    >>> from lp.soyuz.interfaces.section import ISectionSet
     >>> section_set = getUtility(ISectionSet)
     >>> [transl_section] = [s for s in section_set
     ...     if s.name == u'translations']

=== modified file 'lib/lp/coop/answersbugs/stories/question-buglink.txt'
--- lib/lp/coop/answersbugs/stories/question-buglink.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/coop/answersbugs/stories/question-buglink.txt	2010-10-13 18:38:20 +0000
@@ -98,7 +98,8 @@
     # This should use a private bug in our sample data.
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IBugSet, ILaunchBag
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
+    >>> from lp.bugs.interfaces.bug import IBugSet
     >>> from canonical.database.sqlbase import flush_database_updates
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> private_bug = getUtility(IBugSet).get(6)

=== modified file 'lib/lp/coop/answersbugs/tests/notifications-linked-bug.txt'
--- lib/lp/coop/answersbugs/tests/notifications-linked-bug.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/coop/answersbugs/tests/notifications-linked-bug.txt	2010-10-13 18:38:20 +0000
@@ -5,7 +5,8 @@
 
     >>> from zope.event import notify
     >>> from zope.interface import providedBy
-    >>> from canonical.launchpad.interfaces import BugTaskStatus, IPersonSet
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from lazr.lifecycle.event import ObjectModifiedEvent
     >>> from lazr.lifecycle.snapshot import Snapshot
 

=== modified file 'lib/lp/coop/answersbugs/tests/notifications-linked-private-bug.txt'
--- lib/lp/coop/answersbugs/tests/notifications-linked-private-bug.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/coop/answersbugs/tests/notifications-linked-private-bug.txt	2010-10-13 18:38:20 +0000
@@ -9,7 +9,8 @@
     >>> from zope.interface import providedBy
     >>> from lazr.lifecycle.event import ObjectModifiedEvent
     >>> from lazr.lifecycle.snapshot import Snapshot
-    >>> from canonical.launchpad.interfaces import BugTaskStatus, IPersonSet
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from lp.testing.mail_helpers import pop_notifications
 
     >>> no_priv = getUtility(IPersonSet).getByName('no-priv')

=== modified file 'lib/lp/hardwaredb/doc/hwdb-device-tables.txt'
--- lib/lp/hardwaredb/doc/hwdb-device-tables.txt	2010-10-04 19:50:45 +0000
+++ lib/lp/hardwaredb/doc/hwdb-device-tables.txt	2010-10-13 18:38:20 +0000
@@ -9,7 +9,7 @@
 HWVendorName is a simple list of vendor names. A new entry is created by
 IHWVendorNameSet.create().
 
-    >>> from canonical.launchpad.interfaces import IHWVendorNameSet
+    >>> from lp.hardwaredb.interfaces.hwdb import IHWVendorNameSet
     >>> vendor_name_set = getUtility(IHWVendorNameSet)
     >>> intel_name = vendor_name_set.create(name='Intel')
     >>> print intel_name.name
@@ -151,7 +151,7 @@
 all busses use numeric IDs. Numbers are represented as strings with
 hexadecimal digits, prepended by '0x'.
 
-    >>> from canonical.launchpad.interfaces import HWBus, IHWVendorIDSet
+    >>> from lp.hardwaredb.interfaces.hwdb import HWBus, IHWVendorIDSet
     >>> vendor_id_set = getUtility(IHWVendorIDSet)
     >>> intel_pci_id = vendor_id_set.create(bus=HWBus.PCI,
     ...                                     vendor_id='0x8086',
@@ -482,7 +482,7 @@
 
 A new device record is created by IHWDeviceSet.create.
 
-    >>> from canonical.launchpad.interfaces import IHWDeviceSet
+    >>> from lp.hardwaredb.interfaces.hwdb import IHWDeviceSet
     >>> device_set = getUtility(IHWDeviceSet)
     >>> product_name='82801GBM/GHM (ICH7 Family) USB2 EHCI Controller'
     >>> usb_controller = device_set.create(bus=HWBus.PCI,
@@ -1038,7 +1038,7 @@
 We can limit the results to a specific driver. (See below for details about
 HWDriver.)
 
-    >>> from canonical.launchpad.interfaces import IHWDriverSet
+    >>> from lp.hardwaredb.interfaces.hwdb import IHWDriverSet
     >>> ahci_driver = getUtility(IHWDriverSet).getByPackageAndName(
     ...     'linux-image-2.6.24-19-generic', 'ahci')
     >>> for submission in sata_controller.getSubmissions(
@@ -1100,7 +1100,7 @@
 
 We can also search for submissions from a particular user.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> owner = getUtility(IPersonSet).getByName('name12')
     >>> for submission in sata_controller.getSubmissions(owner=owner):
     ...     print submission.submission_key
@@ -1131,7 +1131,7 @@
 they see in a store. HWDeviceNameVariant allows us to assign alternative
 vendor and product names to a device.
 
-    >>> from canonical.launchpad.interfaces import IHWDeviceNameVariantSet
+    >>> from lp.hardwaredb.interfaces.hwdb import IHWDeviceNameVariantSet
     >>> device_name_variant_set = getUtility(IHWDeviceNameVariantSet)
     >>> variant = device_name_variant_set.create(device=optic_pro_ut16,
     ...                                          vendor_name='Medion',
@@ -1178,7 +1178,7 @@
 The driver is not in every case a kernel driver, it may also be for
 example a Ghostscript driver of a printer or a Sane scanner backend.
 
-    >>> from canonical.launchpad.interfaces import IHWDriverSet
+    >>> from lp.hardwaredb.interfaces.hwdb import IHWDriverSet
     >>> from lp.registry.interfaces.product import License
     >>> driver_set = getUtility(IHWDriverSet)
     >>> usb_driver = driver_set.create(package_name='linux-image-generic',
@@ -1502,7 +1502,7 @@
 
 This table links devices and drivers.
 
-    >>> from canonical.launchpad.interfaces import IHWDeviceDriverLinkSet
+    >>> from lp.hardwaredb.interfaces.hwdb import IHWDeviceDriverLinkSet
     >>> device_driver_link_set = getUtility(IHWDeviceDriverLinkSet)
     >>> usb_controller_usb_link = device_driver_link_set.create(
     ...     device=usb_controller, driver=usb_driver)
@@ -1719,13 +1719,13 @@
 
 We need a submission to which we can link HWSubmissionDevice entries.
 
-    >>> from canonical.launchpad.interfaces import IHWSubmissionSet
+    >>> from lp.hardwaredb.interfaces.hwdb import IHWSubmissionSet
     >>> sample_submission = getUtility(IHWSubmissionSet).getBySubmissionKey(
     ...     'test_submission_id_1')
 
 A HWSubmissionDevice record for a system does not have any parent...
 
-    >>> from canonical.launchpad.interfaces import IHWSubmissionDeviceSet
+    >>> from lp.hardwaredb.interfaces.hwdb import IHWSubmissionDeviceSet
     >>> submission_device_set = getUtility(IHWSubmissionDeviceSet)
     >>> submitted_tuffbook_2600 = submission_device_set.create(
     ...     device_driver_link=tuffbook_2600_device_driver_link,

=== modified file 'lib/lp/hardwaredb/doc/hwdb-submission.txt'
--- lib/lp/hardwaredb/doc/hwdb-submission.txt	2010-10-04 20:46:55 +0000
+++ lib/lp/hardwaredb/doc/hwdb-submission.txt	2010-10-13 18:38:20 +0000
@@ -46,7 +46,7 @@
 
 The request created an entry in the HWDBSubmissions table.
 
-    >>> from canonical.launchpad.interfaces import IHWSubmissionSet
+    >>> from lp.hardwaredb.interfaces.hwdb import IHWSubmissionSet
     >>> submission_set = getUtility(IHWSubmissionSet)
     >>> submission = submission_set.getBySubmissionKey(u'unique-id-1')
     >>> submission.date_created, submission.format.name

=== modified file 'lib/lp/hardwaredb/doc/hwdb.txt'
--- lib/lp/hardwaredb/doc/hwdb.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/hardwaredb/doc/hwdb.txt	2010-10-13 18:38:20 +0000
@@ -119,7 +119,7 @@
 IHWSystemFingerPrintSet.createFingerprint creates a new row in this table.
 
     >>> from storm.store import Store
-    >>> from canonical.launchpad.interfaces import IHWSystemFingerprintSet
+    >>> from lp.hardwaredb.interfaces.hwdb import IHWSystemFingerprintSet
     >>> hw_fingerprint_set = getUtility(IHWSystemFingerprintSet)
     >>> fp = hw_fingerprint_set.createFingerprint(u'IBM T41')
     >>> fp.fingerprint
@@ -202,7 +202,7 @@
 If no Person record is yet known for the submitter's email address,
 the field `owner` is None.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> beeblebrox = getUtility(IPersonSet).getByEmail(
     ...     'beeblebrox@xxxxxxxxxxx')
     >>> print beeblebrox
@@ -716,7 +716,7 @@
 
 It is also possible to search for a distroseries and architecture.
 
-    >>> from canonical.launchpad.interfaces import IProcessorFamilySet
+    >>> from lp.soyuz.interfaces.processor import IProcessorFamilySet
     >>> amd64 = getUtility(IProcessorFamilySet).getByName('amd64')
     >>> warty_amd64 = factory.makeDistroArchSeries(
     ...     distroseries=warty, architecturetag='amd64',
@@ -730,7 +730,7 @@
 
 And we can also search for submissions from a particular user.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> owner = getUtility(IPersonSet).getByName('name12')
     >>> set(submission.owner.name for submission
     ...     in hw_submission_set.search(owner=owner))

=== modified file 'lib/lp/registry/browser/tests/distroseries-views.txt'
--- lib/lp/registry/browser/tests/distroseries-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/browser/tests/distroseries-views.txt	2010-10-13 18:38:20 +0000
@@ -3,7 +3,7 @@
 
 Let's use ubuntu/hoary for these tests.
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
     >>> hoary = ubuntu.getSeries('hoary')
 

=== modified file 'lib/lp/registry/browser/tests/gpg-views.txt'
--- lib/lp/registry/browser/tests/gpg-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/browser/tests/gpg-views.txt	2010-10-13 18:38:20 +0000
@@ -2,7 +2,7 @@
 This tests GPG-related pages of an IPerson.
 
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from zope.component import getMultiAdapter, getUtility
 
 Set up the key server:

=== modified file 'lib/lp/registry/browser/tests/mailinglist-message-views.txt'
--- lib/lp/registry/browser/tests/mailinglist-message-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/browser/tests/mailinglist-message-views.txt	2010-10-13 18:38:20 +0000
@@ -4,7 +4,7 @@
 The HeldMessageView formats a held message so that it can be moderated by
 the mailing list administrator.
 
-    >>> from canonical.launchpad.interfaces import IMessageSet
+    >>> from canonical.launchpad.interfaces.message import IMessageSet
 
     >>> team, mlist = factory.makeTeamAndMailingList('parrot', 'owner')
 

=== modified file 'lib/lp/registry/browser/tests/peoplemerge-views.txt'
--- lib/lp/registry/browser/tests/peoplemerge-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/browser/tests/peoplemerge-views.txt	2010-10-13 18:38:20 +0000
@@ -10,7 +10,7 @@
 team.
 
     >>> from lp.registry.interfaces.person import IPersonSet
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> registry_experts = getUtility(ILaunchpadCelebrities).registry_experts
     >>> person_set = getUtility(IPersonSet)
     >>> registry_expert= factory.makeRegistryExpert()

=== modified file 'lib/lp/registry/browser/tests/person-admin-views.txt'
--- lib/lp/registry/browser/tests/person-admin-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/browser/tests/person-admin-views.txt	2010-10-13 18:38:20 +0000
@@ -3,7 +3,7 @@
 Admistrators can access a subset of any IPerson's fields from the UI.
 The PersonAdministerView is registered under the +review name.
 
-    >>> from canonical.launchpad.interfaces import IOpenLaunchBag
+    >>> from canonical.launchpad.webapp.interfaces import IOpenLaunchBag
     >>> from canonical.launchpad.webapp.authorization import check_permission
 
     >>> login('foo.bar@xxxxxxxxxxxxx')

=== modified file 'lib/lp/registry/browser/tests/person-views.txt'
--- lib/lp/registry/browser/tests/person-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/browser/tests/person-views.txt	2010-10-13 18:38:20 +0000
@@ -64,7 +64,7 @@
 escaped HTML.
 
     >>> from canonical.launchpad.interfaces.account import AccountStatus
-    >>> from canonical.launchpad.interfaces import IMasterObject
+    >>> from canonical.launchpad.interfaces.lpstorm import IMasterObject
 
     # Only admins can change an account.
 
@@ -393,7 +393,7 @@
 The assigned bug is displayed in the "Working on..." section when its
 status is in INPROGRESS.
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
     >>> bug.bugtasks[0].transitionToStatus(BugTaskStatus.INPROGRESS, user)
 
     # Create a new view because we're testing some cached properties.

=== modified file 'lib/lp/registry/browser/tests/poll-views_0.txt'
--- lib/lp/registry/browser/tests/poll-views_0.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/browser/tests/poll-views_0.txt	2010-10-13 18:38:20 +0000
@@ -3,7 +3,8 @@
 First import some stuff and setup some things we'll use in this test.
 
   >>> from zope.component import getUtility, getMultiAdapter
-  >>> from canonical.launchpad.interfaces import IPollSet, IPersonSet
+  >>> from lp.registry.interfaces.person import IPersonSet
+  >>> from lp.registry.interfaces.poll import IPollSet
   >>> from zope.publisher.browser import TestRequest
   >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
   >>> from datetime import datetime, timedelta

=== modified file 'lib/lp/registry/browser/tests/product-edit-people-view.txt'
--- lib/lp/registry/browser/tests/product-edit-people-view.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/browser/tests/product-edit-people-view.txt	2010-10-13 18:38:20 +0000
@@ -8,7 +8,7 @@
 Person (name12).
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
 
     >>> productset = getUtility(IProductSet)
     >>> firefox = productset.getByName('firefox')

=== modified file 'lib/lp/registry/browser/tests/team-join-views.txt'
--- lib/lp/registry/browser/tests/team-join-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/browser/tests/team-join-views.txt	2010-10-13 18:38:20 +0000
@@ -4,7 +4,7 @@
 
 == Joining and Subscribing to the List ==
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> personset = getUtility(IPersonSet)
 
     # Set up a harness to make form submission testing easier.
@@ -22,14 +22,14 @@
     # policy.
     >>> from lp.registry.tests.mailinglists_helper import (
     ...     new_list_for_team)
-    >>> from canonical.launchpad.interfaces import TeamSubscriptionPolicy
+    >>> from lp.registry.interfaces.person import TeamSubscriptionPolicy
     >>> def make_team(teamname, subscription_policy):
     ...     creator = personset.getByName('no-priv')
     ...     team = personset.newTeam(creator, teamname, teamname,
     ...         subscriptionpolicy=subscription_policy)
     ...     return team
 
-    >>> from canonical.launchpad.interfaces import IMailingListSet
+    >>> from lp.registry.interfaces.mailinglist import IMailingListSet
     >>> subscribers = getUtility(IMailingListSet)
 
 Attempting to post a mailing list subscription request to a team that has no list

=== modified file 'lib/lp/registry/doc/announcement.txt'
--- lib/lp/registry/doc/announcement.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/announcement.txt	2010-10-13 18:38:20 +0000
@@ -30,7 +30,7 @@
 
     >>> from canonical.launchpad.ftests import login, logout
     >>> login('foo.bar@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> beta = getUtility(ILaunchpadCelebrities).launchpad_beta_testers
     >>> ignored = beta.addMember(mark, mark)
     >>> from canonical.database.sqlbase import flush_database_updates

=== modified file 'lib/lp/registry/doc/commercialsubscription.txt'
--- lib/lp/registry/doc/commercialsubscription.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/commercialsubscription.txt	2010-10-13 18:38:20 +0000
@@ -253,7 +253,7 @@
 The qualifies_for_free_hosting attribute is False
 if the product has License.OTHER_PROPRIETARY.
 
-    >>> from canonical.launchpad.interfaces import License
+    >>> from lp.registry.interfaces.product import License
     >>> bzr.licenses = [License.OTHER_PROPRIETARY]
     >>> bzr.qualifies_for_free_hosting
     False

=== modified file 'lib/lp/registry/doc/convert-person-to-team.txt'
--- lib/lp/registry/doc/convert-person-to-team.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/convert-person-to-team.txt	2010-10-13 18:38:20 +0000
@@ -6,7 +6,7 @@
 team and the name of the team owner as arguments.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> matsubara = getUtility(IPersonSet).getByName('matsubara')
     >>> matsubara.isTeam()
     False

=== modified file 'lib/lp/registry/doc/distribution-mirror.txt'
--- lib/lp/registry/doc/distribution-mirror.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/distribution-mirror.txt	2010-10-13 18:38:20 +0000
@@ -139,7 +139,7 @@
 It's possible to retrieve a mirror by its name:
 
     >>> from canonical.launchpad.webapp.testing import verifyObject
-    >>> from canonical.launchpad.interfaces import IDistributionMirror
+    >>> from lp.registry.interfaces.distributionmirror import IDistributionMirror
     >>> example_mirror = mirrorset.getByName('archive-mirror')
     >>> verifyObject(IDistributionMirror, example_mirror)
     True
@@ -807,7 +807,7 @@
 We want to make sure that the view._sum_throughput method knows about all
 the possible mirror speeds.
 
-  >>> from canonical.launchpad.interfaces import MirrorSpeed
+  >>> from lp.registry.interfaces.distributionmirror import MirrorSpeed
   >>> class MockMirror:
   ...     speed = None
   >>> mirrors = []

=== modified file 'lib/lp/registry/doc/distribution.txt'
--- lib/lp/registry/doc/distribution.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/distribution.txt	2010-10-13 18:38:20 +0000
@@ -387,7 +387,7 @@
 A distribution can specify if it uses Malone, Rosetta, or Answers
 officially. Ubuntu uses all of them:
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
 
     >>> ubuntu = getUtility(ILaunchpadCelebrities).ubuntu
     >>> ubuntu.official_malone
@@ -507,7 +507,7 @@
 
     >>> kubuntu = distroset.getByName("kubuntu")
 
-    >>> from canonical.launchpad.interfaces import SpecificationFilter
+    >>> from lp.blueprints.interfaces.specification import SpecificationFilter
 
 First, there should be one informational spec for kubuntu, but it is
 complete so it will not show up unless we explicitly ask for complete specs:

=== modified file 'lib/lp/registry/doc/distroseries.txt'
--- lib/lp/registry/doc/distroseries.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/distroseries.txt	2010-10-13 18:38:20 +0000
@@ -166,13 +166,13 @@
 canUploadToPocket method helps us to decide if an upload is allowed or
 not, according the distroseries status and the upload target pocket.
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
     >>> breezy_autotest = ubuntu['breezy-autotest']
     >>> hoary = ubuntu['hoary']
 
     >>> from lp.registry.interfaces.pocket import PackagePublishingPocket
-    >>> from canonical.launchpad.interfaces import SeriesStatus
+    >>> from lp.registry.interfaces.series import SeriesStatus
 
     >>> warty.status.name
     'CURRENT'
@@ -902,7 +902,7 @@
     >>> distroset = getUtility(IDistributionSet)
     >>> kubuntu = distroset.getByName("kubuntu")
     >>> krunch = kubuntu.getSeries("krunch")
-    >>> from canonical.launchpad.interfaces import SpecificationFilter
+    >>> from lp.blueprints.interfaces.specification import SpecificationFilter
 
 First, there should be one informational specs for krunch:
 

=== modified file 'lib/lp/registry/doc/entitlement.txt'
--- lib/lp/registry/doc/entitlement.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/entitlement.txt	2010-10-13 18:38:20 +0000
@@ -16,7 +16,7 @@
 
 The logged in user must be an admin in order to change the quota.
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> login("foo.bar@xxxxxxxxxxxxx")
     >>> foobar = getUtility(ILaunchBag).user
     >>> lp_admins = getUtility(ILaunchpadCelebrities).admin
@@ -256,7 +256,7 @@
 attributes.  Since ubuntu-team is restricted, an administrator must be
 listed as a reviewer for the membership to go through.
 
-    >>> from canonical.launchpad.interfaces import TeamMembershipStatus
+    >>> from lp.registry.interfaces.teammembership import TeamMembershipStatus
     >>> nopriv = getUtility(ILaunchBag).user
     >>> mark = personset.getByName('mark')
     >>> nopriv.join(ubuntu_team)

=== modified file 'lib/lp/registry/doc/gpg-signatures.txt'
--- lib/lp/registry/doc/gpg-signatures.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/gpg-signatures.txt	2010-10-13 18:38:20 +0000
@@ -8,7 +8,7 @@
     >>> transaction.commit()
 
     >>> from canonical.launchpad.ftests import login
-    >>> from canonical.launchpad.interfaces import ILaunchBag
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
 
     >>> bag = getUtility(ILaunchBag)
 
@@ -19,7 +19,7 @@
     >>> bag.user.name
     u'name12'
 
-    >>> from canonical.launchpad.interfaces import IGPGHandler
+    >>> from canonical.launchpad.interfaces.gpghandler import IGPGHandler
     >>> from zope.component import getUtility
     >>> gpghandler = getUtility(IGPGHandler)
 

=== modified file 'lib/lp/registry/doc/mailinglist-email-notification.txt'
--- lib/lp/registry/doc/mailinglist-email-notification.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/mailinglist-email-notification.txt	2010-10-13 18:38:20 +0000
@@ -6,7 +6,7 @@
     >>> from lp.services.mail import stub
     >>> from lp.testing.mail_helpers import (
     ...     pop_notifications, print_emails)
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> salgado = getUtility(IPersonSet).getByName('salgado')
 
     >>> from lp.registry.tests.mailinglists_helper import (
@@ -85,7 +85,7 @@
 address will be ignored, and the message will be sent to the
 individual team members.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> salgado = getUtility(IPersonSet).getByName('salgado')
 
     >>> super_team = new_team('super-team', with_list=False)
@@ -107,7 +107,7 @@
 
     # Make sure the sub-team has a preferred email, so we can show
     # that it is being bypassed.
-    >>> from canonical.launchpad.interfaces import IEmailAddressSet
+    >>> from canonical.launchpad.interfaces.emailaddress import IEmailAddressSet
     >>> emailset = getUtility(IEmailAddressSet)
     >>> email = emailset.new('foo@xxxxxxx', sub_team)
     >>> transaction.commit()
@@ -214,7 +214,7 @@
 
     # Fully rebuild our list from the ground up.
     >>> renewed_list.deactivate()
-    >>> from canonical.launchpad.interfaces import MailingListStatus
+    >>> from lp.registry.interfaces.mailinglist import MailingListStatus
     >>> renewed_list.transitionToStatus(MailingListStatus.INACTIVE)
     >>> renewed_list.reactivate()
     >>> renewed_list.startConstructing()

=== modified file 'lib/lp/registry/doc/mailinglist-subscriptions-xmlrpc.txt'
--- lib/lp/registry/doc/mailinglist-subscriptions-xmlrpc.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/mailinglist-subscriptions-xmlrpc.txt	2010-10-13 18:38:20 +0000
@@ -141,7 +141,7 @@
 Similarly, email addresses with an unvalidated status are not considered
 registered either.
 
-    >>> from canonical.launchpad.interfaces import IEmailAddressSet
+    >>> from canonical.launchpad.interfaces.emailaddress import IEmailAddressSet
     >>> emailset = getUtility(IEmailAddressSet)
     >>> new_address = emailset.new(
     ...     'frederick@xxxxxxxxxxx', fred, account=fred.account)
@@ -185,7 +185,7 @@
 Anne is a bad person and the Launchpad administrator assigns her a poor
 standing.
 
-    >>> from canonical.launchpad.interfaces import PersonalStanding
+    >>> from lp.registry.interfaces.person import PersonalStanding
     >>> anne.personal_standing = PersonalStanding.POOR
     >>> transaction.commit()
 
@@ -276,7 +276,7 @@
 This is true even if by dumb luck the address actually gets registered in
 Launchpad.
 
-    >>> from canonical.launchpad.interfaces import EmailAddressStatus
+    >>> from canonical.launchpad.interfaces.emailaddress import EmailAddressStatus
     >>> new_address = emailset.new(
     ...     config.mailman.archive_address, fred,
     ...     EmailAddressStatus.VALIDATED, account=fred.account)

=== modified file 'lib/lp/registry/doc/mailinglist-subscriptions.txt'
--- lib/lp/registry/doc/mailinglist-subscriptions.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/mailinglist-subscriptions.txt	2010-10-13 18:38:20 +0000
@@ -125,7 +125,7 @@
 However, should Anne register a new, but not-validated email address, she may
 not post from it.
 
-    >>> from canonical.launchpad.interfaces import IEmailAddressSet
+    >>> from canonical.launchpad.interfaces.emailaddress import IEmailAddressSet
     >>> address_set = getUtility(IEmailAddressSet)
     >>> alternative = address_set.new(
     ...     'anne.x.person@xxxxxxxxxxx', anne, account=anne.account)
@@ -139,7 +139,7 @@
 
 Once Anne validates her new address, she can post from it.
 
-    >>> from canonical.launchpad.interfaces import EmailAddressStatus
+    >>> from canonical.launchpad.interfaces.emailaddress import EmailAddressStatus
     >>> alternative.status = EmailAddressStatus.VALIDATED
     >>> transaction.commit()
 
@@ -169,7 +169,7 @@
 as the email_address member.
 
     >>> from canonical.launchpad.webapp.testing import verifyObject
-    >>> from canonical.launchpad.interfaces import IMailingListSubscription
+    >>> from lp.registry.interfaces.mailinglist import IMailingListSubscription
     >>> subscription = list_one.getSubscription(bart)
     >>> verifyObject(IMailingListSubscription, subscription)
     True
@@ -196,7 +196,7 @@
     >>> team_two = factory.makeTeam(name='team-two', owner=team_owner)
     >>> team_names.append(team_two.name)
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> salgado = getUtility(IPersonSet).getByName('salgado')
     >>> team_two.join(team_one, salgado)
     >>> sorted(member.displayname for member in team_one.allmembers)
@@ -378,7 +378,7 @@
 unsubscribed from the superteam's mailing list.
 
     >>> dirk.leave(team_two)
-    >>> from canonical.launchpad.interfaces import TeamMembershipStatus
+    >>> from lp.registry.interfaces.teammembership import TeamMembershipStatus
     >>> team_one.setMembershipData(team_three,
     ...     TeamMembershipStatus.DEACTIVATED, salgado)
     >>> transaction.commit()
@@ -805,7 +805,7 @@
     # Deactivation isn't complete until the list's status is transitioned to
     # INACTIVE.
     >>> list_one.deactivate()
-    >>> from canonical.launchpad.interfaces import MailingListStatus
+    >>> from lp.registry.interfaces.mailinglist import MailingListStatus
     >>> list_one.transitionToStatus(MailingListStatus.INACTIVE)
     >>> transaction.commit()
 

=== modified file 'lib/lp/registry/doc/mailinglist-xmlrpc.txt'
--- lib/lp/registry/doc/mailinglist-xmlrpc.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/mailinglist-xmlrpc.txt	2010-10-13 18:38:20 +0000
@@ -24,7 +24,7 @@
 
 Mailing lists are always tied -- one-to-one -- to teams.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> person_set = getUtility(IPersonSet)
     >>> no_priv = person_set.getByName('no-priv')
     >>> team_one = factory.makeTeam(no_priv, name='team-one')
@@ -34,7 +34,7 @@
 A team owner must request that a mailing list be created for their team.  When
 Mailman polls for actions, there will be mailing lists to create.
 
-    >>> from canonical.launchpad.interfaces import IMailingListSet
+    >>> from lp.registry.interfaces.mailinglist import IMailingListSet
     >>> list_set = getUtility(IMailingListSet)
     >>> list_one = list_set.new(team_one)
     >>> list_two = list_set.new(team_two)

=== modified file 'lib/lp/registry/doc/mailinglists.txt'
--- lib/lp/registry/doc/mailinglists.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/mailinglists.txt	2010-10-13 18:38:20 +0000
@@ -79,7 +79,7 @@
 
 However, if we make Anne a team owner, she can create the mailing list.
 
-    >>> from canonical.launchpad.interfaces import TeamMembershipStatus
+    >>> from lp.registry.interfaces.teammembership import TeamMembershipStatus
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> bart = factory.makePersonByName('Bart')
     >>> ignored = team_two.addMember(
@@ -161,7 +161,7 @@
 and associated with the team's mailing list, so that it can be used as the
 team's contact address.
 
-    >>> from canonical.launchpad.interfaces import IEmailAddressSet
+    >>> from canonical.launchpad.interfaces.emailaddress import IEmailAddressSet
     >>> email_set = getUtility(IEmailAddressSet)
     >>> print email_set.getByEmail(list_one.address)
     None
@@ -415,7 +415,7 @@
 
     # Register an event listener that will print event it receives.
     >>> from lazr.lifecycle.interfaces import IObjectModifiedEvent
-    >>> from canonical.launchpad.interfaces import IMailingList
+    >>> from lp.registry.interfaces.mailinglist import IMailingList
     >>> from canonical.launchpad.ftests.event import TestEventListener
     >>> def print_event(object, event):
     ...     print "Received %s on %s" % (

=== modified file 'lib/lp/registry/doc/mentoringoffer.txt'
--- lib/lp/registry/doc/mentoringoffer.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/mentoringoffer.txt	2010-10-13 18:38:20 +0000
@@ -5,8 +5,9 @@
 Launchpad allows people to make an offer of mentoring for a bug or
 specification. Here, Foo Bar will make an offer on a spec and a bug:
 
-    >>> from canonical.launchpad.interfaces import IPersonSet, IBugSet
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
+    >>> from lp.registry.interfaces.person import IPersonSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> from canonical.launchpad.ftests import login, syncUpdate
     >>> distroset = getUtility(IDistributionSet)
     >>> personset = getUtility(IPersonSet)
@@ -71,7 +72,7 @@
 It is also associated with the ubuntu *upstream* (this is a weirdness in the
 Launchpad sample data, we have an upstream product called Ubuntu).
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> productset = getUtility(IProductSet)
     >>> tomcat = productset.getByName('tomcat')
     >>> for offer in tomcat.mentoring_offers:
@@ -106,7 +107,7 @@
 We also can get lists of offers of mentoring associated with ProjectGroups.
 Tomcat is part of the Apache project group, so:
 
-    >>> from canonical.launchpad.interfaces import IProjectGroupSet
+    >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet
     >>> projectset = getUtility(IProjectGroupSet)
     >>> apache = projectset.getByName('apache')
     >>> for offer in apache.mentoring_offers:
@@ -119,7 +120,7 @@
 There is a utility which we can use to see all current mentorship offers
 across the whole system.
 
-    >>> from canonical.launchpad.interfaces import IMentoringOfferSet
+    >>> from lp.registry.interfaces.mentoringoffer import IMentoringOfferSet
     >>> mm = getUtility(IMentoringOfferSet)
     >>> print mm.mentoring_offers.count()
     2

=== modified file 'lib/lp/registry/doc/message-holds-xmlrpc.txt'
--- lib/lp/registry/doc/message-holds-xmlrpc.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/message-holds-xmlrpc.txt	2010-10-13 18:38:20 +0000
@@ -41,7 +41,7 @@
 This message is now in Launchpad's librarian and accessible through the
 IMessageApprovalSet interface.
 
-    >>> from canonical.launchpad.interfaces import IMessageApprovalSet
+    >>> from lp.registry.interfaces.mailinglist import IMessageApprovalSet
     >>> message_set = getUtility(IMessageApprovalSet)
     >>> held_message_anne = message_set.getMessageByMessageID('<first-post>')
     >>> print held_message_anne.message_id

=== modified file 'lib/lp/registry/doc/message-holds.txt'
--- lib/lp/registry/doc/message-holds.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/message-holds.txt	2010-10-13 18:38:20 +0000
@@ -20,7 +20,7 @@
 When the message is initially held for approval, a message object is
 first created.
 
-    >>> from canonical.launchpad.interfaces import IMessageSet
+    >>> from canonical.launchpad.interfaces.message import IMessageSet
     >>> message_set = getUtility(IMessageSet)
     >>> message = message_set.fromEmail("""\
     ... From: foo.bar@xxxxxxxxxxxxx
@@ -36,7 +36,7 @@
 
     >>> held_message = list_one.holdMessage(message)
     >>> from canonical.launchpad.webapp.testing import verifyObject
-    >>> from canonical.launchpad.interfaces import IMessageApproval
+    >>> from lp.registry.interfaces.mailinglist import IMessageApproval
     >>> verifyObject(IMessageApproval, held_message)
     True
 
@@ -44,7 +44,7 @@
 IHeldMessageDetails interface.
 
     >>> from zope.component import getAdapter
-    >>> from canonical.launchpad.interfaces import IHeldMessageDetails
+    >>> from lp.registry.interfaces.mailinglist import IHeldMessageDetails
     >>> details = getAdapter(held_message, IHeldMessageDetails)
     >>> print details.message_id
     <first-post>
@@ -282,7 +282,7 @@
 
 Here are some helper functions.
 
-    >>> from canonical.launchpad.interfaces import IMessageApprovalSet
+    >>> from lp.registry.interfaces.mailinglist import IMessageApprovalSet
     >>> hold_set = getUtility(IMessageApprovalSet)
     >>> from operator import attrgetter
     >>> def print_hold(message_hold):
@@ -299,7 +299,7 @@
 
 Here are all the messages pending approval...
 
-    >>> from canonical.launchpad.interfaces import PostedMessageStatus
+    >>> from lp.registry.interfaces.mailinglist import PostedMessageStatus
     >>> print_messages(PostedMessageStatus.APPROVAL_PENDING)
     <first-post> test-one My first test
 

=== modified file 'lib/lp/registry/doc/milestone.txt'
--- lib/lp/registry/doc/milestone.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/milestone.txt	2010-10-13 18:38:20 +0000
@@ -11,7 +11,7 @@
 All Milestone creation and retrieval is done through IMilestoneSet.
 IMilestoneSet can be accessed as a utility.
 
-    >>> from canonical.launchpad.interfaces import IMilestoneSet
+    >>> from lp.registry.interfaces.milestone import IMilestoneSet
     >>> milestoneset = getUtility(IMilestoneSet)
 
 To retrieve all milestones, iterate over an IMilestoneSet object:
@@ -22,7 +22,7 @@
 To create a new Milestone, use the .newMilestone(name, dateexpected=None)
 method of a ProductSeries or DistroSeries:
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> productset = getUtility(IProductSet)
     >>> upstream_firefox = productset.get(4)
     >>> ff_onedotzero = upstream_firefox.getSeries('1.0')
@@ -83,7 +83,7 @@
 
 Now, lets test all of that for DistroSeriess too!
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> kubuntu = getUtility(IDistributionSet).getByName('kubuntu')
     >>> krunch = kubuntu.getSeries('krunch')
 
@@ -131,7 +131,7 @@
 belonging to the Gnome project has any milestones, hence Gnome itself has
 neither any milestones.
 
-    >>> from canonical.launchpad.interfaces import IProjectGroupSet
+    >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet
     >>> gnome = getUtility(IProjectGroupSet)['gnome']
     >>> for product in gnome.products:
     ...     print '%s %s' % (

=== modified file 'lib/lp/registry/doc/nickname.txt'
--- lib/lp/registry/doc/nickname.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/nickname.txt	2010-10-13 18:38:20 +0000
@@ -38,8 +38,8 @@
     >>> _counter = 0
     >>> from zope.security.proxy import removeSecurityProxy
     >>> def new_person(email):
-    ...     from canonical.launchpad.interfaces import IPersonSet
-    ...     from canonical.launchpad.interfaces import IEmailAddressSet
+    ...     from lp.registry.interfaces.person import IPersonSet
+    ...     from canonical.launchpad.interfaces.emailaddress import IEmailAddressSet
     ...     from lp.registry.interfaces.person import (
     ...         PersonCreationRationale)
     ...     UNKNOWN = PersonCreationRationale.UNKNOWN

=== modified file 'lib/lp/registry/doc/person-account.txt'
--- lib/lp/registry/doc/person-account.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/person-account.txt	2010-10-13 18:38:20 +0000
@@ -97,7 +97,7 @@
     >>> [coc.active for coc in foobar.signedcocs]
     [True]
 
-    >>> from canonical.launchpad.interfaces import BugTaskSearchParams
+    >>> from lp.bugs.interfaces.bugtask import BugTaskSearchParams
     >>> params = BugTaskSearchParams(foobar, assignee=foobar)
     >>> foobar.searchTasks(params).count() > 0
     True
@@ -197,7 +197,7 @@
 It's also important to note that the teams/pillars owned/driven by Foo
 Bar are now owned/driven by the registry admins team.
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> registry_experts = getUtility(ILaunchpadCelebrities).registry_experts
 
     >>> registry_pillars = set(registry_experts.getOwnedOrDrivenPillars())

=== modified file 'lib/lp/registry/doc/person-karma.txt'
--- lib/lp/registry/doc/person-karma.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/person-karma.txt	2010-10-13 18:38:20 +0000
@@ -74,7 +74,7 @@
 silently returns, so callsites do not need to know who may be awarded
 karma.
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> janitor = getUtility(ILaunchpadCelebrities).janitor
     >>> dummy = janitor.assignKarma('specreviewed', product=firefox)
     <BLANKLINE>

=== modified file 'lib/lp/registry/doc/person-merge.txt'
--- lib/lp/registry/doc/person-merge.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/person-merge.txt	2010-10-13 18:38:20 +0000
@@ -8,7 +8,7 @@
 
     >>> from zope.component import getUtility
     >>> from canonical.database.sqlbase import sqlvalues
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from canonical.launchpad.ftests import login, ANONYMOUS
 
     >>> login(ANONYMOUS)
@@ -49,7 +49,7 @@
 Karma gets reassigned to the person we merge into. Let's assign karma to
 Marilize and save it for later comparison.
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> firefox = getUtility(IProductSet).getByName('firefox')
     >>> marilize_karma = marilize.assignKarma('bugfixed', product=firefox)
     >>> saved_marilize_karma_id = marilize_karma.id
@@ -109,7 +109,7 @@
     # a person's preferred email.
     >>> from canonical.launchpad.interfaces.emailaddress import (
     ...     EmailAddressStatus)
-    >>> from canonical.launchpad.interfaces import IMasterObject
+    >>> from canonical.launchpad.interfaces.lpstorm import IMasterObject
     >>> email = IMasterObject(marilize.preferredemail)
     >>> email.status = EmailAddressStatus.VALIDATED
     >>> email.destroySelf()
@@ -235,7 +235,7 @@
 then delete, the needed two people.
 
     >>> from lp.registry.model.person import PersonSet, Person
-    >>> from canonical.launchpad.interfaces import PersonCreationRationale
+    >>> from lp.registry.interfaces.person import PersonCreationRationale
     >>> personset = PersonSet()
 
     >>> skip = []
@@ -345,7 +345,7 @@
 
     >>> from datetime import datetime, timedelta
     >>> import pytz
-    >>> from canonical.launchpad.interfaces import IPollSubset, PollSecrecy
+    >>> from lp.registry.interfaces.poll import IPollSubset, PollSecrecy
     >>> test_team = personset.newTeam(sample, 'test-team', 'Test team')
     >>> launchpad_devs = personset.getByName('launchpad')
     >>> ignored = launchpad_devs.addMember(
@@ -389,7 +389,7 @@
 mailing list is in the PURGED state.  This state indicates that there are no
 artifacts of the list on the Mailman side.
 
-    >>> from canonical.launchpad.interfaces import IMailingListSet
+    >>> from lp.registry.interfaces.mailinglist import IMailingListSet
     >>> mailing_list = getUtility(IMailingListSet).new(landscape)
     >>> from lp.registry.tests.mailinglists_helper import mailman
     >>> mailman.act()

=== modified file 'lib/lp/registry/doc/person.txt'
--- lib/lp/registry/doc/person.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/person.txt	2010-10-13 18:38:20 +0000
@@ -330,7 +330,7 @@
 A Launchpad administrator may change a person's standing, and may give a
 reason for the change.
 
-    >>> from canonical.launchpad.interfaces import PersonalStanding
+    >>> from lp.registry.interfaces.person import PersonalStanding
     >>> lifeless.personal_standing = PersonalStanding.GOOD
     >>> lifeless.personal_standing_reason = 'Such a cool guy!'
     >>> from canonical.launchpad.ftests import syncUpdate
@@ -387,7 +387,7 @@
 whether a given object is a person or a team we can use the isTeam()
 method of IPerson or check if the object provides the ITeam interface.
 
-    >>> from canonical.launchpad.interfaces import ITeam
+    >>> from lp.registry.interfaces.person import ITeam
     >>> ddaa = personset.getByName('ddaa')
     >>> ddaa.isTeam()
     False
@@ -719,7 +719,7 @@
 team list is actually sorted by date joined.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> personset = getUtility(IPersonSet)
     >>> foobar = personset.getByName('name16')
     >>> membership_list = foobar.getLatestApprovedMembershipsForPerson()
@@ -856,7 +856,7 @@
 inactive is not included in the list, but we can tell findPerson to
 include them as well.
 
-    >>> from canonical.launchpad.interfaces import AccountStatus
+    >>> from canonical.launchpad.interfaces.account import AccountStatus
     >>> dave = personset.getByName('justdave')
     >>> removeSecurityProxy(dave).account_status = AccountStatus.DEACTIVATED
     >>> transaction.commit()
@@ -1144,7 +1144,7 @@
 
 To add new languages we use Person.addLanguage().
 
-    >>> from canonical.launchpad.interfaces import ILanguageSet
+    >>> from lp.services.worlddata.interfaces.language import ILanguageSet
     >>> languageset = getUtility(ILanguageSet)
     >>> carlos.addLanguage(languageset['pt_BR'])
     >>> [lang.code for lang in carlos.languages]
@@ -1189,7 +1189,7 @@
 First, Carlos does not have any completed specifications assigned to
 him:
 
-    >>> from canonical.launchpad.interfaces import SpecificationFilter
+    >>> from lp.blueprints.interfaces.specification import SpecificationFilter
     >>> carlos.specifications(filter=[
     ...     SpecificationFilter.ASSIGNEE,
     ...     SpecificationFilter.COMPLETE]).count()
@@ -1267,7 +1267,7 @@
 
 Inactive products are excluded from the listings.
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> from canonical.launchpad.ftests import login
     >>> firefox = getUtility(IProductSet).getByName('firefox')
     >>> login("mark@xxxxxxxxxxx")
@@ -1319,7 +1319,7 @@
 A person with bugs assigned to them in a context is considered a 'Bug
 Contributor'.
 
-    >>> from canonical.launchpad.interfaces import BugTaskSearchParams
+    >>> from lp.bugs.interfaces.bugtask import BugTaskSearchParams
 
     >>> cprov.searchTasks(
     ...     BugTaskSearchParams(user=foobar, assignee=cprov)).count()
@@ -1333,7 +1333,7 @@
 
 We assign a bug task to Celso.
 
-    >>> from canonical.launchpad.interfaces import IBugTaskSet
+    >>> from lp.bugs.interfaces.bugtask import IBugTaskSet
     >>> search_params = BugTaskSearchParams(user=foobar)
     >>> search_params.setProduct(firefox)
     >>> firefox_bugtask = getUtility(IBugTaskSet).search(search_params)[0]
@@ -1347,7 +1347,7 @@
 
 Celso is a bug contributer in the context of the `firefox` product.
 
-    >>> from canonical.launchpad.interfaces import IProjectGroupSet
+    >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet
     >>> cprov.isBugContributorInTarget(user=foobar, target=firefox)
     True
 

=== modified file 'lib/lp/registry/doc/poll-preconditions.txt'
--- lib/lp/registry/doc/poll-preconditions.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/poll-preconditions.txt	2010-10-13 18:38:20 +0000
@@ -9,7 +9,8 @@
   >>> from zope.component import getUtility
   >>> from canonical.database.sqlbase import flush_database_updates
   >>> from canonical.launchpad.ftests import login
-  >>> from canonical.launchpad.interfaces import IPersonSet, IPollSet
+  >>> from lp.registry.interfaces.person import IPersonSet
+  >>> from lp.registry.interfaces.poll import IPollSet
 
   >>> ubuntu_team = getUtility(IPersonSet).get(17)
   >>> ubuntu_team_member = getUtility(IPersonSet).get(1)

=== modified file 'lib/lp/registry/doc/product-widgets.txt'
--- lib/lp/registry/doc/product-widgets.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/product-widgets.txt	2010-10-13 18:38:20 +0000
@@ -19,7 +19,7 @@
 
 Firefox uses Launchpad as its bug tracker.
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> firefox = getUtility(IProductSet).getByName('firefox')
     >>> firefox.official_malone
     True
@@ -28,7 +28,7 @@
 option.  This is displayed by the widget as the project having a bug tracker
 in a specified external location.
 
-    >>> from canonical.launchpad.interfaces import IProduct
+    >>> from lp.registry.interfaces.product import IProduct
     >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
     >>> from canonical.widgets.product import ProductBugTrackerWidget
 
@@ -64,7 +64,7 @@
 Firefox chooses to use the Gnome Bugzilla bug tracker, and the widget displays
 this bug tracker as selected.
 
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
     >>> tracker_set = getUtility(IBugTrackerSet)
 
     >>> gnome_bugzilla = tracker_set.getByName('gnome-bugzilla')

=== modified file 'lib/lp/registry/doc/product.txt'
--- lib/lp/registry/doc/product.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/product.txt	2010-10-13 18:38:20 +0000
@@ -274,7 +274,7 @@
 
 This is true even if its project has a bug tracker specified.
 
-    >>> from canonical.launchpad.interfaces import IBugTrackerSet
+    >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet
 
     >>> login_person(firefox.owner)
     >>> bug_tracker_set = getUtility(IBugTrackerSet)
@@ -407,7 +407,7 @@
 informational.
 
     >>> firefox = productset.getByName('firefox')
-    >>> from canonical.launchpad.interfaces import SpecificationFilter
+    >>> from lp.blueprints.interfaces.specification import SpecificationFilter
 
 First, there should be only one informational spec for firefox:
 

=== modified file 'lib/lp/registry/doc/productrelease-file-download.txt'
--- lib/lp/registry/doc/productrelease-file-download.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/productrelease-file-download.txt	2010-10-13 18:38:20 +0000
@@ -13,7 +13,7 @@
 has ProductReleases 1.5.0.1 and 1.5.0.2
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
 
 First, get a product that has some ProductSeries in the sample data.
 
@@ -46,7 +46,7 @@
 
 Add a file alias to the productrelease.
 
-    >>> from canonical.launchpad.interfaces import ILaunchBag
+    >>> from canonical.launchpad.webapp.interfaces import ILaunchBag
 
     >>> login("foo.bar@xxxxxxxxxxxxx")
     >>> from datetime import datetime

=== modified file 'lib/lp/registry/doc/productrelease.txt'
--- lib/lp/registry/doc/productrelease.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/productrelease.txt	2010-10-13 18:38:20 +0000
@@ -5,7 +5,7 @@
 IMilestone.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> productset = getUtility(IProductSet)
     >>> firefox = productset['firefox']
     >>> firefox_1_0 = firefox.getSeries('1.0')

=== modified file 'lib/lp/registry/doc/productseries.txt'
--- lib/lp/registry/doc/productseries.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/productseries.txt	2010-10-13 18:38:20 +0000
@@ -54,7 +54,7 @@
 
 A ProductSeries can also be fetched with the IProductSeriesSet utility.
 
-    >>> from canonical.launchpad.interfaces import IProductSeriesSet
+    >>> from lp.registry.interfaces.productseries import IProductSeriesSet
 
     >>> firefox_1_0 = getUtility(IProductSeriesSet).get(2)
     >>> print firefox_1_0.product.name
@@ -190,7 +190,7 @@
 is informational.
 
     >>> onezero = firefox.getSeries("1.0")
-    >>> from canonical.launchpad.interfaces import SpecificationFilter
+    >>> from lp.blueprints.interfaces.specification import SpecificationFilter
 
 We will create two specs for onezero and use them to demonstrate the
 filtering.

=== modified file 'lib/lp/registry/doc/project.txt'
--- lib/lp/registry/doc/project.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/project.txt	2010-10-13 18:38:20 +0000
@@ -19,7 +19,7 @@
 While some of them (homepageurl, icon, logo and mugshot) are optional, others
 (name, displayname, title, summary, description and owner) are required).
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
     >>> test_project = projectset.new(
     ...     name='project-test', displayname='Test Project',
@@ -132,7 +132,7 @@
 We should be able to generate filtered lists of specs on a project.
 
     >>> mozilla = getUtility(IProjectGroupSet).getByName('mozilla')
-    >>> from canonical.launchpad.interfaces import SpecificationFilter
+    >>> from lp.blueprints.interfaces.specification import SpecificationFilter
 
 First, there should be only one informational spec for mozilla:
 
@@ -168,7 +168,7 @@
     >>> mozilla.specifications(filter=filter).count()
     5
 
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> firefox = getUtility(IProductSet).getByName('firefox')
 
     # Unlink the source packages so the project can be deactivated.
@@ -210,7 +210,7 @@
 
 An IProjectGroupSeries object can be retrieved by IProjectGroup.getSeries.
 
-    >>> from canonical.launchpad.interfaces import IProjectGroupSeries
+    >>> from lp.registry.interfaces.projectgroup import IProjectGroupSeries
     >>> mozilla_series_1_0 = mozilla.getSeries('1.0')
     >>> mozilla_series_1_0
     <lp.registry.model.projectgroup.ProjectGroupSeries object at...
@@ -394,7 +394,7 @@
 
     >>> from lp.registry.tests.test_project_milestone import (
     ...     ProjectMilestoneTest)
-    >>> from canonical.launchpad.interfaces import IProjectGroupSet
+    >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> test_helper = ProjectMilestoneTest(helper_only=True)
     >>> test_helper.setUpProjectMilestoneTests()

=== modified file 'lib/lp/registry/doc/structural-subscriptions.txt'
--- lib/lp/registry/doc/structural-subscriptions.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/structural-subscriptions.txt	2010-10-13 18:38:20 +0000
@@ -181,7 +181,7 @@
 
 Mozilla is the parent of Fireox.
 
-    >>> from canonical.launchpad.interfaces import IProjectGroupSet
+    >>> from lp.registry.interfaces.projectgroup import IProjectGroupSet
     >>> mozilla = getUtility(IProjectGroupSet).getByName('mozilla')
     >>> print firefox.parent_subscription_target.displayname
     the Mozilla Project

=== modified file 'lib/lp/registry/doc/teammembership-email-notification.txt'
--- lib/lp/registry/doc/teammembership-email-notification.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/teammembership-email-notification.txt	2010-10-13 18:38:20 +0000
@@ -606,7 +606,7 @@
     >>> removeSecurityProxy(jdub_on_ubuntu_team).dateexpires = utc_now
     >>> flush_database_updates()
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> membershipset.handleMembershipsExpiringToday(
     ...     reviewer=getUtility(ILaunchpadCelebrities).janitor)
     >>> flush_database_updates()

=== modified file 'lib/lp/registry/doc/teammembership.txt'
--- lib/lp/registry/doc/teammembership.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/doc/teammembership.txt	2010-10-13 18:38:20 +0000
@@ -21,7 +21,7 @@
 -- Guilherme Salgado, 2006-12-15
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> personset = getUtility(IPersonSet)
     >>> jblack = personset.getByName('jblack')
     >>> nopriv = personset.getByName('no-priv')
@@ -155,7 +155,7 @@
     >>> t3.addMember(
     ...     salgado, reviewer=mark, status=TeamMembershipStatus.ADMIN)
     (True, <DBItem TeamMembershipStatus.ADMIN...)
-    >>> from canonical.launchpad.interfaces import ITeamMembershipSet
+    >>> from lp.registry.interfaces.teammembership import ITeamMembershipSet
     >>> membershipset = getUtility(ITeamMembershipSet)
     >>> flush_database_updates()
     >>> membership = membershipset.getByPersonAndTeam(salgado, t3)
@@ -190,7 +190,7 @@
 As expected, the membership object implements ITeamMembership.
 
     >>> from canonical.launchpad.webapp.testing import verifyObject
-    >>> from canonical.launchpad.interfaces import ITeamMembership
+    >>> from lp.registry.interfaces.teammembership import ITeamMembership
     >>> verifyObject(ITeamMembership, membership)
     True
 
@@ -978,7 +978,7 @@
     ...     bad_user, TeamMembershipStatus.APPROVED, reviewer)
 
     >>> login('foo.bar@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IMasterObject
+    >>> from canonical.launchpad.interfaces.lpstorm import IMasterObject
     >>> IMasterObject(bad_user.account).status = AccountStatus.SUSPENDED
     >>> IMasterObject(bad_user.preferredemail).status = EmailAddressStatus.OLD
     >>> from lp.services.propertycache import IPropertyCache

=== modified file 'lib/lp/registry/stories/distributionmirror/xx-distribution-countrymirrors.txt'
--- lib/lp/registry/stories/distributionmirror/xx-distribution-countrymirrors.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/distributionmirror/xx-distribution-countrymirrors.txt	2010-10-13 18:38:20 +0000
@@ -40,7 +40,7 @@
 Note that unofficial mirrors are not included in the listings.
 
     >>> from lp.registry.model.distributionmirror import DistributionMirrorSet
-    >>> from canonical.launchpad.interfaces import MirrorStatus
+    >>> from lp.registry.interfaces.distributionmirror import MirrorStatus
     >>> from canonical.database.sqlbase import flush_database_updates
     >>> mirror = DistributionMirrorSet().getByHttpUrl(
     ...     'http://localhost:11375/archive-mirror/')

=== modified file 'lib/lp/registry/stories/gpg-coc/01-claimgpg.txt'
--- lib/lp/registry/stories/gpg-coc/01-claimgpg.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/gpg-coc/01-claimgpg.txt	2010-10-13 18:38:20 +0000
@@ -86,7 +86,7 @@
 
 Import the secret keys needed for this test:
 
-    >>> from canonical.launchpad.interfaces import IGPGHandler
+    >>> from canonical.launchpad.interfaces.gpghandler import IGPGHandler
     >>> from zope.component import getUtility
 
     >>> from canonical.launchpad.ftests import (

=== modified file 'lib/lp/registry/stories/mailinglists/moderation.txt'
--- lib/lp/registry/stories/mailinglists/moderation.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/mailinglists/moderation.txt	2010-10-13 18:38:20 +0000
@@ -22,7 +22,7 @@
 
     >>> from canonical.launchpad.ftests import login, logout
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IMailingListSet
+    >>> from lp.registry.interfaces.mailinglist import IMailingListSet
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> guadamen = getUtility(IMailingListSet).get('guadamen')
     >>> logout()
@@ -58,7 +58,7 @@
 and it is held for approval.
 
     >>> login('foo.bar@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IMessageSet
+    >>> from canonical.launchpad.interfaces.message import IMessageSet
     >>> message_set = getUtility(IMessageSet)
     >>> message = message_set.fromEmail("""\
     ... From: carlos@xxxxxxxxxxxxx
@@ -183,7 +183,7 @@
     >>> admin_browser.getControl('Moderate').click()
 
     >>> login('foo.bar@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IMessageApprovalSet
+    >>> from lp.registry.interfaces.mailinglist import IMessageApprovalSet
     >>> message_approval_set = getUtility(IMessageApprovalSet)
     >>> message_approval = message_approval_set.getMessageByMessageID(
     ...     '<aardvark>')
@@ -204,7 +204,7 @@
     >>> admin_browser.getControl('Moderate').click()
 
     >>> login('foo.bar@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IMessageApprovalSet
+    >>> from lp.registry.interfaces.mailinglist import IMessageApprovalSet
     >>> message_approval_set = getUtility(IMessageApprovalSet)
     >>> message_approval = message_approval_set.getMessageByMessageID(
     ...     '<bobcat>')
@@ -225,7 +225,7 @@
     >>> admin_browser.getControl('Moderate').click()
 
     >>> login('foo.bar@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IMessageApprovalSet
+    >>> from lp.registry.interfaces.mailinglist import IMessageApprovalSet
     >>> message_approval_set = getUtility(IMessageApprovalSet)
     >>> message_approval = message_approval_set.getMessageByMessageID(
     ...     '<caribou>')

=== modified file 'lib/lp/registry/stories/person/xx-adminpeoplemerge.txt'
--- lib/lp/registry/stories/person/xx-adminpeoplemerge.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/person/xx-adminpeoplemerge.txt	2010-10-13 18:38:20 +0000
@@ -37,7 +37,7 @@
 
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import ANONYMOUS, login, logout
-    >>> from canonical.launchpad.interfaces import IMailingListSet, IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> login(ANONYMOUS)
     >>> person_set = getUtility(IPersonSet)
     >>> person_set.getByEmail('andrew.bennetts@xxxxxxxxxxxxxxx').name

=== modified file 'lib/lp/registry/stories/person/xx-person-editgpgkeys-invalid-key.txt'
--- lib/lp/registry/stories/person/xx-person-editgpgkeys-invalid-key.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/person/xx-person-editgpgkeys-invalid-key.txt	2010-10-13 18:38:20 +0000
@@ -2,7 +2,7 @@
 Imports and setup of stub keyserver:
 
   >>> from zope.component import getUtility
-  >>> from canonical.launchpad.interfaces import LoginTokenType
+  >>> from canonical.launchpad.interfaces.authtoken import LoginTokenType
   >>> from canonical.database.sqlbase import flush_database_updates
   >>> from canonical.launchpad.ftests import login, logout, ANONYMOUS
   >>> from canonical.launchpad.interfaces import (

=== modified file 'lib/lp/registry/stories/pillar/xx-pillar-traversal.txt'
--- lib/lp/registry/stories/pillar/xx-pillar-traversal.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/pillar/xx-pillar-traversal.txt	2010-10-13 18:38:20 +0000
@@ -6,7 +6,7 @@
 canonical URL.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> login(ANONYMOUS)
     >>> getUtility(IProductSet)['firefox'].aliases
     []

=== modified file 'lib/lp/registry/stories/product/xx-product-index.txt'
--- lib/lp/registry/stories/product/xx-product-index.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/product/xx-product-index.txt	2010-10-13 18:38:20 +0000
@@ -118,7 +118,7 @@
 If the project doesn't have a license, a portlet is displayed to direct
 the owner to set a license.
 
-    >>> from canonical.launchpad.interfaces import License
+    >>> from lp.registry.interfaces.product import License
     >>> firefox = Product.selectOneBy(name="firefox")
     >>> owner_browser = setupBrowser(auth="Basic test@xxxxxxxxxxxxx:test")
     >>> owner_browser.open('http://launchpad.dev/firefox')

=== modified file 'lib/lp/registry/stories/product/xx-product-with-private-defaults.txt'
--- lib/lp/registry/stories/product/xx-product-with-private-defaults.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/product/xx-product-with-private-defaults.txt	2010-10-13 18:38:20 +0000
@@ -11,7 +11,7 @@
 
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
 
     >>> admin_browser.open("http://launchpad.dev/redfish/+admin";)
     >>> admin_browser.getControl(name="field.private_bugs").value = True

=== modified file 'lib/lp/registry/stories/team/xx-adminteammerge.txt'
--- lib/lp/registry/stories/team/xx-adminteammerge.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/team/xx-adminteammerge.txt	2010-10-13 18:38:20 +0000
@@ -33,7 +33,7 @@
     'http://launchpad.dev/~guadamen'
 
     >>> from canonical.launchpad.ftests import ANONYMOUS, login, logout
-    >>> from canonical.launchpad.interfaces import IMailingListSet
+    >>> from lp.registry.interfaces.mailinglist import IMailingListSet
     >>> from zope.component import getUtility
     >>> login(ANONYMOUS)
     >>> new_team.merged.name

=== modified file 'lib/lp/registry/stories/teammembership/10-join-team.txt'
--- lib/lp/registry/stories/teammembership/10-join-team.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/teammembership/10-join-team.txt	2010-10-13 18:38:20 +0000
@@ -47,7 +47,7 @@
 approved, though.
 
     >>> from lp.registry.model.person import Person
-    >>> from canonical.launchpad.interfaces import TeamSubscriptionPolicy
+    >>> from lp.registry.interfaces.person import TeamSubscriptionPolicy
     >>> myemail = Person.selectOneBy(name='myemail')
     >>> myemail.subscriptionpolicy = TeamSubscriptionPolicy.MODERATED
     >>> myemail.syncUpdate()

=== modified file 'lib/lp/registry/stories/teammembership/xx-add-member.txt'
--- lib/lp/registry/stories/teammembership/xx-add-member.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/teammembership/xx-add-member.txt	2010-10-13 18:38:20 +0000
@@ -46,7 +46,7 @@
 the team, we'll simply change the membership's status and say that it was
 successfully added.
 
-    >>> from canonical.launchpad.interfaces import TeamMembershipStatus
+    >>> from lp.registry.interfaces.teammembership import TeamMembershipStatus
     >>> from canonical.launchpad.ftests import ANONYMOUS, login, logout
     >>> login(ANONYMOUS) # login() because we need a zope interaction.
     >>> ignored = cprov_landscape_membership.setStatus(

=== modified file 'lib/lp/registry/stories/teammembership/xx-expire-subscription.txt'
--- lib/lp/registry/stories/teammembership/xx-expire-subscription.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/teammembership/xx-expire-subscription.txt	2010-10-13 18:38:20 +0000
@@ -25,7 +25,7 @@
 
     >>> from lp.registry.model.person import Person
     >>> from lp.registry.model.teammembership import TeamMembership
-    >>> from canonical.launchpad.interfaces import TeamMembershipStatus
+    >>> from lp.registry.interfaces.teammembership import TeamMembershipStatus
     >>> sampleperson = Person.byName('name12')
     >>> team = Person.byName('name20')
     >>> tm = TeamMembership.selectOneBy(

=== modified file 'lib/lp/registry/stories/webservice/xx-project-registry.txt'
--- lib/lp/registry/stories/webservice/xx-project-registry.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/stories/webservice/xx-project-registry.txt	2010-10-13 18:38:20 +0000
@@ -1223,7 +1223,7 @@
 through the API.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IProductSet
+    >>> from lp.registry.interfaces.product import IProductSet
     >>> from canonical.launchpad.ftests import login, logout
     >>> login('bac@xxxxxxxxxxxxx')
     >>> product_set = getUtility(IProductSet)

=== modified file 'lib/lp/registry/tests/structural-subscription-target.txt'
--- lib/lp/registry/tests/structural-subscription-target.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/registry/tests/structural-subscription-target.txt	2010-10-13 18:38:20 +0000
@@ -3,7 +3,7 @@
 
 Let's subscribe ubuntu-team.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> personset = getUtility(IPersonSet)
     >>> ubuntu_team = personset.getByName("ubuntu-team")
     >>> no_priv = personset.getByName("no-priv")

=== modified file 'lib/lp/services/mailman/doc/postings.txt'
--- lib/lp/services/mailman/doc/postings.txt	2010-10-06 12:56:23 +0000
+++ lib/lp/services/mailman/doc/postings.txt	2010-10-13 18:38:20 +0000
@@ -47,7 +47,7 @@
     >>> from lp.registry.tests.mailinglists_helper import (
     ...     get_alternative_email)
     >>> from canonical.launchpad.ftests import login, logout
-    >>> from canonical.launchpad.interfaces import EmailAddressStatus
+    >>> from canonical.launchpad.interfaces.emailaddress import EmailAddressStatus
 
     >>> login('admin@xxxxxxxxxxxxx')
     >>> anne = factory.makePersonByName('Anne')
@@ -356,7 +356,7 @@
     >>> helpers.ensure_nonmembership('itest-one', anne)
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> login('admin@xxxxxxxxxxxxx')
     >>> team_one = getUtility(IPersonSet).getByName('itest-one')
     >>> anne.join(team_one)
@@ -694,7 +694,7 @@
 However, a Launchpad member in good standing is allowed to post to any mailing
 list.
 
-    >>> from canonical.launchpad.interfaces import PersonalStanding
+    >>> from lp.registry.interfaces.person import PersonalStanding
     >>> login('admin@xxxxxxxxxxxxx')
     >>> bart.personal_standing = PersonalStanding.GOOD
     >>> transaction.commit()

=== modified file 'lib/lp/services/mailman/doc/recovery.txt'
--- lib/lp/services/mailman/doc/recovery.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/services/mailman/doc/recovery.txt	2010-10-13 18:38:20 +0000
@@ -68,7 +68,7 @@
     ['itest-one', 'unused_mailman_site_list']
 
     >>> from canonical.database.constants import UTC_NOW
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> person_set = getUtility(IPersonSet)
     >>> team_two = person_set.getByName('itest-two')
     >>> itest_two = mailing_list_set.new(team_two, team_two.teamowner)

=== modified file 'lib/lp/services/mailman/doc/subscriptions.txt'
--- lib/lp/services/mailman/doc/subscriptions.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/services/mailman/doc/subscriptions.txt	2010-10-13 18:38:20 +0000
@@ -107,7 +107,7 @@
 synchronized with Mailman.  Anne's non-validated address does not appear in
 the membership list, either as an enabled or disabled address.
 
-    >>> from canonical.launchpad.interfaces import IEmailAddressSet
+    >>> from canonical.launchpad.interfaces.emailaddress import IEmailAddressSet
     >>> login('admin@xxxxxxxxxxxxx')
     >>> email_set = getUtility(IEmailAddressSet)
     >>> email = email_set.new(
@@ -129,7 +129,7 @@
 
 Once Anne validates her address though, she may post from it.
 
-    >>> from canonical.launchpad.interfaces import EmailAddressStatus
+    >>> from canonical.launchpad.interfaces.emailaddress import EmailAddressStatus
     >>> email.status = EmailAddressStatus.VALIDATED
     >>> transaction.commit()
     >>> logout()

=== modified file 'lib/lp/soyuz/browser/tests/archive-views.txt'
--- lib/lp/soyuz/browser/tests/archive-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/browser/tests/archive-views.txt	2010-10-13 18:38:20 +0000
@@ -2,7 +2,7 @@
 
 Let's use Celso's PPA for the tests.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> cprov = getUtility(IPersonSet).getByName('cprov')
 
 

=== modified file 'lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt'
--- lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt	2010-10-13 18:38:20 +0000
@@ -27,7 +27,7 @@
   >>> pmount_deps = pmount_view.depends()
 
   >>> from canonical.launchpad.webapp.testing import verifyObject
-  >>> from canonical.launchpad.interfaces import IPackageRelationshipSet
+  >>> from canonical.launchpad.interfaces.packagerelationship import IPackageRelationshipSet
 
   >>> verifyObject(IPackageRelationshipSet, pmount_deps)
   True

=== modified file 'lib/lp/soyuz/browser/tests/build-views.txt'
--- lib/lp/soyuz/browser/tests/build-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/browser/tests/build-views.txt	2010-10-13 18:38:20 +0000
@@ -36,7 +36,7 @@
 The 'PPA' action-menu item will be enabled if we target the build to
 Celso's PPA.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
 
     >>> cprov = getUtility(IPersonSet).getByName('cprov')
     >>> cprov_failed_build = cprov.archive.getBuildRecords(
@@ -167,7 +167,7 @@
 
     >>> login('admin@xxxxxxxxxxxxx')
     >>> from lp.soyuz.interfaces.packageset import IPackagesetSet
-    >>> from canonical.launchpad.interfaces import IArchivePermissionSet
+    >>> from lp.soyuz.interfaces.archivepermission import IArchivePermissionSet
     >>> joe = factory.makePerson(email='joe@xxxxxxxxxxx', password='test')
     >>> desktop = factory.makeTeam(name='desktop', owner=joe)
     >>> main_archive = test_publisher.distroseries.main_archive

=== modified file 'lib/lp/soyuz/browser/tests/builder-views.txt'
--- lib/lp/soyuz/browser/tests/builder-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/browser/tests/builder-views.txt	2010-10-13 18:38:20 +0000
@@ -241,7 +241,7 @@
  * 'PPA build machines': a group of builders capable of building
    'untrusted' sources, PPA packages. The 'virtualized' build-farm.
 
-    >>> from canonical.launchpad.interfaces import IBuilderSet
+    >>> from lp.buildmaster.interfaces.builder import IBuilderSet
     >>> builderset = getUtility(IBuilderSet)
 
     >>> builderset_view = getMultiAdapter(
@@ -251,7 +251,7 @@
 builder table with several builders for different categories and
 architectures.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> cprov = getUtility(IPersonSet).getByName('cprov')
 
     >>> from lp.soyuz.model.processor import Processor

=== modified file 'lib/lp/soyuz/browser/tests/distroseriesqueue-views.txt'
--- lib/lp/soyuz/browser/tests/distroseriesqueue-views.txt	2010-10-04 20:46:55 +0000
+++ lib/lp/soyuz/browser/tests/distroseriesqueue-views.txt	2010-10-13 18:38:20 +0000
@@ -7,7 +7,7 @@
 
   >>> from zope.component import queryMultiAdapter
   >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
-  >>> from canonical.launchpad.interfaces import IDistributionSet
+  >>> from lp.registry.interfaces.distribution import IDistributionSet
   >>> from canonical.launchpad.database import LibraryFileAlias
   >>> fake_chroot = LibraryFileAlias.get(1)
 
@@ -128,7 +128,7 @@
 
 Accepting an item from NEW queue.
 
-  >>> from canonical.launchpad.interfaces import IPackageUploadSet
+  >>> from lp.soyuz.interfaces.queue import IPackageUploadSet
   >>> getUtility(IPackageUploadSet).get(1).status.name
   'NEW'
   >>> getUtility(IPackageUploadSet).get(3).status.name
@@ -232,7 +232,7 @@
     ...     SoyuzTestPublisher)
     >>> from lp.soyuz.enums import (
     ...     PackagePublishingStatus)
-    >>> from canonical.launchpad.interfaces import ILibraryFileAliasSet
+    >>> from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
     >>> stp = SoyuzTestPublisher()
     >>> hoary = ubuntu['hoary']
     >>> stp.prepareBreezyAutotest()
@@ -255,7 +255,7 @@
 
     >>> from lp.archiveuploader.uploadpolicy import ArchiveUploadType
     >>> from canonical.launchpad.ftests import import_public_test_keys
-    >>> from canonical.launchpad.interfaces import IComponentSet
+    >>> from lp.soyuz.interfaces.component import IComponentSet
     >>> from lp.soyuz.model.component import ComponentSelection
     >>> from lp.archiveuploader.tests import (
     ...     datadir, getPolicy, mock_logger_quiet)

=== modified file 'lib/lp/soyuz/browser/tests/publishing-views.txt'
--- lib/lp/soyuz/browser/tests/publishing-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/browser/tests/publishing-views.txt	2010-10-13 18:38:20 +0000
@@ -74,7 +74,7 @@
 'iceweasel' source in Celso's PPA contains binary files that can be
 inspected.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> cprov = getUtility(IPersonSet).getByName("cprov")
 
     >>> iceweasel_source_pub = cprov.archive.getPublishedSources(

=== modified file 'lib/lp/soyuz/browser/tests/sourcepackage-views.txt'
--- lib/lp/soyuz/browser/tests/sourcepackage-views.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/browser/tests/sourcepackage-views.txt	2010-10-13 18:38:20 +0000
@@ -2,7 +2,7 @@
 
   >>> from zope.component import queryMultiAdapter
   >>> from canonical.launchpad.webapp.servers import LaunchpadTestRequest
-  >>> from canonical.launchpad.interfaces import IDistributionSet
+  >>> from lp.registry.interfaces.distribution import IDistributionSet
 
 Empty request.
 
@@ -68,7 +68,7 @@
   >>> firefox_parsed_depends = firefox_view.builddepends
 
   >>> from canonical.launchpad.webapp.testing import verifyObject
-  >>> from canonical.launchpad.interfaces import IPackageRelationshipSet
+  >>> from canonical.launchpad.interfaces.packagerelationship import IPackageRelationshipSet
   >>> verifyObject(IPackageRelationshipSet, firefox_parsed_depends)
   True
 

=== modified file 'lib/lp/soyuz/doc/archive-dependencies.txt'
--- lib/lp/soyuz/doc/archive-dependencies.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/archive-dependencies.txt	2010-10-13 18:38:20 +0000
@@ -157,7 +157,7 @@
 
 We will use Celso's PPA for testing these mechanisms.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> cprov = getUtility(IPersonSet).getByName('cprov')
     >>> print cprov.archive.displayname
     PPA for Celso Providelo

=== modified file 'lib/lp/soyuz/doc/archive-files.txt'
--- lib/lp/soyuz/doc/archive-files.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/archive-files.txt	2010-10-13 18:38:20 +0000
@@ -3,7 +3,7 @@
 `IArchive` provides a method that looks up files involved in the context
 archive, getFileByName()
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> cprov = getUtility(IPersonSet).getByName('cprov')
 
 The given filename is looked up in the context corresponding to its

=== modified file 'lib/lp/soyuz/doc/archive.txt'
--- lib/lp/soyuz/doc/archive.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/archive.txt	2010-10-13 18:38:20 +0000
@@ -881,7 +881,7 @@
 Now we will emulate a duplicated reference to the same 'orig.tar.gz',
 upstream tarball, as if it was part of two different SourcePackageRelease.
 
-    >>> from canonical.launchpad.interfaces import ILibraryFileAliasSet
+    >>> from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
     >>> huge_firefox_orig_file = getUtility(ILibraryFileAliasSet)[3]
     >>> cprov_cdrkit_src = cprov_archive.getPublishedSources(
     ...     name='cdrkit')[0]
@@ -2078,7 +2078,7 @@
 source package.  Carlos, who does not have permission to upload to any
 Ubuntu components, has permission to upload "mozilla-firefox".
 
-    >>> from canonical.launchpad.interfaces import ISourcePackageNameSet
+    >>> from lp.registry.interfaces.sourcepackagename import ISourcePackageNameSet
     >>> mozilla = getUtility(
     ...     ISourcePackageNameSet).queryByName("mozilla-firefox")
     >>> ubuntu.main_archive.checkArchivePermission(carlos, mozilla)

=== modified file 'lib/lp/soyuz/doc/archivepermission.txt'
--- lib/lp/soyuz/doc/archivepermission.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/archivepermission.txt	2010-10-13 18:38:20 +0000
@@ -69,7 +69,7 @@
 permission than allowing access to the whole component.  Just pass
 a SourcePacakgeName as the "item" parameter:
 
-    >>> from canonical.launchpad.interfaces import ISourcePackageNameSet
+    >>> from lp.registry.interfaces.sourcepackagename import ISourcePackageNameSet
     >>> alsa_utils = getUtility(ISourcePackageNameSet)['alsa-utils']
     >>> alsa_permissions = permission_set.checkAuthenticated(
     ...     ubuntu_team, ubuntu.main_archive, ArchivePermissionType.UPLOAD,

=== modified file 'lib/lp/soyuz/doc/binarypackagebuild.txt'
--- lib/lp/soyuz/doc/binarypackagebuild.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/binarypackagebuild.txt	2010-10-13 18:38:20 +0000
@@ -224,7 +224,7 @@
 We will reactivate ubuntu/warty allowing the pmount build to be
 retried.
 
-    >>> from canonical.launchpad.interfaces import SeriesStatus
+    >>> from lp.registry.interfaces.series import SeriesStatus
     >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
@@ -302,7 +302,7 @@
 Initialize all the required arguments to create a binary package for a
 given build record entry.
 
-    >>> from canonical.launchpad.interfaces import IBinaryPackageNameSet
+    >>> from lp.soyuz.interfaces.binarypackagename import IBinaryPackageNameSet
     >>> binarypackagename = getUtility(IBinaryPackageNameSet).ensure('demo').id
     >>> version = '0.0.1-demo'
     >>> summary = 'Summmmmmmmary'
@@ -328,7 +328,7 @@
     ...     section=section, priority=priority, installedsize=installedsize,
     ...     architecturespecific=architecturespecific)
 
-    >>> from canonical.launchpad.interfaces import IBinaryPackageRelease
+    >>> from lp.soyuz.interfaces.binarypackagerelease import IBinaryPackageRelease
     >>> from canonical.launchpad.webapp.testing import verifyObject
     >>> verifyObject(IBinaryPackageRelease, bin)
     True
@@ -723,12 +723,12 @@
 
 Let's create a private PPA for cprov (and hence its builds become private):
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> cprov = removeSecurityProxy(getUtility(IPersonSet).getByName('cprov'))
     >>> cprov_private_ppa = factory.makeArchive(
     ...     owner=cprov, private=True, name='p3a',
     ...     distribution=cprov.archive.distribution)
-    >>> from canonical.launchpad.interfaces import IBuilderSet
+    >>> from lp.buildmaster.interfaces.builder import IBuilderSet
     >>> bob = getUtility(IBuilderSet)['bob']
     >>> binaries = test_publisher.getPubBinaries(
     ...     archive=cprov_private_ppa, builder=bob,
@@ -756,7 +756,7 @@
 If we include an admin user, we can see all the builds.  Here, we get
 an additional private build for cprov:
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> admin = getUtility(ILaunchpadCelebrities).admin
     >>> bob_builds = bob.getBuildRecords(user=admin)
     >>> print_build_details(bob_builds)

=== modified file 'lib/lp/soyuz/doc/binarypackagerelease.txt'
--- lib/lp/soyuz/doc/binarypackagerelease.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/binarypackagerelease.txt	2010-10-13 18:38:20 +0000
@@ -17,7 +17,7 @@
    >>> firefox_bin_release.name, firefox_bin_release.version
    (u'mozilla-firefox', u'0.9')
 
-   >>> from canonical.launchpad.interfaces import IDistroSeriesSet
+   >>> from lp.registry.interfaces.distroseries import IDistroSeriesSet
    >>> warty = getUtility(IDistroSeriesSet).get(1)
    >>> warty.name
    u'warty'

=== modified file 'lib/lp/soyuz/doc/build-estimated-dispatch-time.txt'
--- lib/lp/soyuz/doc/build-estimated-dispatch-time.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/build-estimated-dispatch-time.txt	2010-10-13 18:38:20 +0000
@@ -27,7 +27,7 @@
 The 'alsa-utils' package is the one to be built (in the ubuntu/hoary
 distroseries).
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
     >>> hoary = ubuntu['hoary']
     >>> hoary.main_archive.require_virtualized

=== modified file 'lib/lp/soyuz/doc/buildd-dispatching.txt'
--- lib/lp/soyuz/doc/buildd-dispatching.txt	2010-10-04 20:46:55 +0000
+++ lib/lp/soyuz/doc/buildd-dispatching.txt	2010-10-13 18:38:20 +0000
@@ -26,7 +26,7 @@
     >>> alias_id = librarian_client.addFile(
     ...    'foo.tar.gz', len(content), StringIO(content), 'text/plain')
 
-    >>> from canonical.launchpad.interfaces import ILibraryFileAliasSet
+    >>> from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
     >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> from lp.registry.interfaces.pocket import PackagePublishingPocket
 

=== modified file 'lib/lp/soyuz/doc/buildd-scoring.txt'
--- lib/lp/soyuz/doc/buildd-scoring.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/buildd-scoring.txt	2010-10-13 18:38:20 +0000
@@ -20,7 +20,7 @@
 Let's create a 'mock' class which emulate the real behaviour of
 BuildQueue entries.
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
 
     >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
     >>> hoary = ubuntu['hoary']
@@ -257,7 +257,7 @@
 
     >>> LaunchpadZopelessLayer.switchDbUser('launchpad')
     >>> from lp.soyuz.enums import ArchivePurpose
-    >>> from canonical.launchpad.interfaces import IArchiveSet
+    >>> from lp.soyuz.interfaces.archive import IArchiveSet
     >>> copy = getUtility(IArchiveSet).new(
     ...     owner=ubuntu.owner, purpose=ArchivePurpose.COPY,
     ...     name='test-rebuild')

=== modified file 'lib/lp/soyuz/doc/buildd-slavescanner.txt'
--- lib/lp/soyuz/doc/buildd-slavescanner.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/buildd-slavescanner.txt	2010-10-13 18:38:20 +0000
@@ -460,7 +460,7 @@
 
 The log was compressed and directly transferred to Librarian.
 
-    >>> from canonical.launchpad.interfaces import ILibraryFileAliasSet
+    >>> from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
     >>> logfile = getUtility(ILibraryFileAliasSet)[logfile_alias]
 
     >>> print logfile.filename
@@ -539,7 +539,7 @@
 
 Retrieve a known DistroArchSeries
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> hoary_i386 = getUtility(IDistributionSet)['ubuntu']['hoary']['i386']
     >>> warty_i386 = getUtility(IDistributionSet)['ubuntu']['warty']['i386']
 

=== modified file 'lib/lp/soyuz/doc/closing-bugs-from-changelogs.txt'
--- lib/lp/soyuz/doc/closing-bugs-from-changelogs.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/closing-bugs-from-changelogs.txt	2010-10-13 18:38:20 +0000
@@ -92,7 +92,7 @@
 will close the specified bug.
 
     >>> LaunchpadZopelessLayer.switchDbUser(test_dbuser)
-    >>> from canonical.launchpad.interfaces import IBugSet
+    >>> from lp.bugs.interfaces.bug import IBugSet
 
     >>> def print_single_task_status(bug_id):
     ...     bug = getUtility(IBugSet).get(bug_id)
@@ -236,7 +236,7 @@
 package, cdrkit, to cprov's PPA.  The bug status before and after calling
 close_bugs is "NEW".
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> arbitrary_ppa = getUtility(IPersonSet).getByName('cprov').archive
     >>> queue_item_id = add_package_upload(
     ...     cdrkit_release, cdrkit_bug_id, archive=arbitrary_ppa).id
@@ -295,7 +295,7 @@
     >>> queue_item = add_package_upload(pmount_release, fixing_text)
     >>> queue_item.setAccepted()
 
-    >>> from canonical.launchpad.interfaces import BugTaskStatus
+    >>> from lp.bugs.interfaces.bugtask import BugTaskStatus
 
     >>> pmount_bug = getUtility(IBugSet).get(pmount_bug_id)
     >>> [pmount_task] = pmount_bug.bugtasks

=== modified file 'lib/lp/soyuz/doc/distribution.txt'
--- lib/lp/soyuz/doc/distribution.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/distribution.txt	2010-10-13 18:38:20 +0000
@@ -91,7 +91,7 @@
     Unauthorized: (<Distribution...>, 'newSeries', 'launchpad.Moderate')
 
     >>> login('mark@xxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IDistroSeriesSet
+    >>> from lp.registry.interfaces.distroseries import IDistroSeriesSet
     >>> distroseriesset = getUtility(IDistroSeriesSet)
     >>> gentoo_two = gentoo.newSeries('gentoo-two', 'Gentoo Two',
     ...                               'Gentoo Two Dot Oh', 'Gentoo 2', 'G2',
@@ -129,7 +129,7 @@
 It also works if we look for a package name which is the name of both
 binary and source packages but for which only the source is published:
 
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> debian = getUtility(ILaunchpadCelebrities).debian
     >>> source_name, bin_name = debian.guessPackageNames('alsa-utils')
     >>> print bin_name
@@ -205,7 +205,7 @@
  * getPendingAcceptancePPAs
  * getPendingPublicationPPAs
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> cprov = getUtility(IPersonSet).getByName('cprov')
     >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
     >>> mark = getUtility(IPersonSet).getByName('mark')

=== modified file 'lib/lp/soyuz/doc/distroarchseries.txt'
--- lib/lp/soyuz/doc/distroarchseries.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/distroarchseries.txt	2010-10-13 18:38:20 +0000
@@ -9,7 +9,7 @@
    ...    IBinaryPackagePublishingHistory,
    ...    ISectionSet)
 
-   >>> from canonical.launchpad.interfaces import IDistributionSet
+   >>> from lp.registry.interfaces.distribution import IDistributionSet
    >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
    >>> hoary = ubuntu.getSeries('hoary')
 

=== modified file 'lib/lp/soyuz/doc/distroseriesbinarypackage.txt'
--- lib/lp/soyuz/doc/distroseriesbinarypackage.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/distroseriesbinarypackage.txt	2010-10-13 18:38:20 +0000
@@ -9,7 +9,7 @@
     >>> from zope.component import getUtility
     >>> from lp.soyuz.model.binarypackagename import (
     ...     BinaryPackageName)
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
 
 A DistroSeriesBinaryPackage is normally accessed via a Distro
 Series:

=== modified file 'lib/lp/soyuz/doc/distroseriesqueue-ddtp-tarball.txt'
--- lib/lp/soyuz/doc/distroseriesqueue-ddtp-tarball.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/distroseriesqueue-ddtp-tarball.txt	2010-10-13 18:38:20 +0000
@@ -20,7 +20,7 @@
 For further info about DDTP see:
   https://wiki.ubuntu.com/TranslatedPackageDescriptionsSpec
 
-  >>> from canonical.launchpad.interfaces import IDistributionSet
+  >>> from lp.registry.interfaces.distribution import IDistributionSet
 
   >>> ubuntutest = getUtility(IDistributionSet)['ubuntutest']
   >>> breezy_autotest = ubuntutest['breezy-autotest']

=== modified file 'lib/lp/soyuz/doc/distroseriesqueue-debian-installer.txt'
--- lib/lp/soyuz/doc/distroseriesqueue-debian-installer.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/distroseriesqueue-debian-installer.txt	2010-10-13 18:38:20 +0000
@@ -42,7 +42,7 @@
   >>> import_public_test_keys()
   >>> login('foo.bar@xxxxxxxxxxxxx')
 
-  >>> from canonical.launchpad.interfaces import IDistributionSet
+  >>> from lp.registry.interfaces.distribution import IDistributionSet
   >>> ubuntutest = getUtility(IDistributionSet)['ubuntutest']
 
   >>> from lp.archiveuploader.nascentupload import NascentUpload

=== modified file 'lib/lp/soyuz/doc/distroseriesqueue-dist-upgrader.txt'
--- lib/lp/soyuz/doc/distroseriesqueue-dist-upgrader.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/distroseriesqueue-dist-upgrader.txt	2010-10-13 18:38:20 +0000
@@ -275,7 +275,7 @@
   >>> from lp.registry.interfaces.person import IPersonSet
   >>> from lp.soyuz.enums import ArchivePurpose
   >>> from lp.soyuz.interfaces.archive import IArchiveSet
-  >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+  >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
 
   >>> beta_testers = getUtility(ILaunchpadCelebrities).launchpad_beta_testers
   >>> admin = getUtility(ILaunchpadCelebrities).admin

=== modified file 'lib/lp/soyuz/doc/distroseriesqueue-notify.txt'
--- lib/lp/soyuz/doc/distroseriesqueue-notify.txt	2010-10-04 20:46:55 +0000
+++ lib/lp/soyuz/doc/distroseriesqueue-notify.txt	2010-10-13 18:38:20 +0000
@@ -10,7 +10,7 @@
 sourcepackagerelease, person and a librarian entry for the changes file 
 which are all needed for successful operation of notify().
 
-  >>> from canonical.launchpad.interfaces import IPackageUploadSet
+  >>> from lp.soyuz.interfaces.queue import IPackageUploadSet
   >>> netapplet_upload = getUtility(IPackageUploadSet)[3]
   >>> print netapplet_upload.displayname
   netapplet
@@ -18,7 +18,7 @@
 Set up some library files for the netapplet source package.  These are not
 already present in the sample data.
 
-  >>> from canonical.launchpad.interfaces import ILibraryFileAliasSet
+  >>> from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
   >>> from lp.archiveuploader.tests import datadir, mock_logger
   >>> import os
   >>> netapplet_spr = netapplet_upload.sources[0].sourcepackagerelease
@@ -103,7 +103,7 @@
 uploads can be the signer, the maintainer and the changer, where these people 
 are different.  Unsigned packages only send notifications to the changer.
 
-  >>> from canonical.launchpad.interfaces import IGPGKeySet
+  >>> from lp.registry.interfaces.gpg import IGPGKeySet
   >>> from zope.security.proxy import removeSecurityProxy
   >>> gpgkey = getUtility(IGPGKeySet).get(1)
   >>> removeSecurityProxy(netapplet_upload).signing_key = gpgkey

=== modified file 'lib/lp/soyuz/doc/distroseriesqueue-translations.txt'
--- lib/lp/soyuz/doc/distroseriesqueue-translations.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/distroseriesqueue-translations.txt	2010-10-13 18:38:20 +0000
@@ -338,7 +338,7 @@
 different interpretations of "importer" in attachTranslationFiles.
 
   >>> from zope.interface import implements
-  >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+  >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
   >>> from lp.soyuz.model.queue import PackageUploadCustom
   >>> from lp.soyuz.interfaces.archive import (
   ...     IArchive, ArchivePurpose)

=== modified file 'lib/lp/soyuz/doc/distroseriesqueue.txt'
--- lib/lp/soyuz/doc/distroseriesqueue.txt	2010-10-04 20:46:55 +0000
+++ lib/lp/soyuz/doc/distroseriesqueue.txt	2010-10-13 18:38:20 +0000
@@ -123,7 +123,7 @@
 
 Check IPackageUploadSet behaviour:
 
-  >>> from canonical.launchpad.interfaces import IPackageUploadSet
+  >>> from lp.soyuz.interfaces.queue import IPackageUploadSet
   >>> from canonical.launchpad.webapp.testing import verifyObject
 
 Grab an utility:
@@ -161,7 +161,7 @@
 
 Retrieve some data from DB to play more with counter.
 
-  >>> from canonical.launchpad.interfaces import IDistributionSet
+  >>> from lp.registry.interfaces.distribution import IDistributionSet
   >>> distro = getUtility(IDistributionSet).getByName('ubuntu')
   >>> breezy_autotest = distro['breezy-autotest']
 

=== modified file 'lib/lp/soyuz/doc/fakepackager.txt'
--- lib/lp/soyuz/doc/fakepackager.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/fakepackager.txt	2010-10-13 18:38:20 +0000
@@ -160,7 +160,7 @@
     >>> content = open(changesfile_path).read()
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IGPGHandler
+    >>> from canonical.launchpad.interfaces.gpghandler import IGPGHandler
     >>> gpghandler = getUtility(IGPGHandler)
     >>> sig = gpghandler.verifySignature(content)
 
@@ -236,7 +236,7 @@
     ...     ComponentSelection)
     >>> from lp.soyuz.interfaces.component import IComponentSet
     >>> from lp.registry.interfaces.distribution import IDistributionSet
-    >>> from canonical.launchpad.interfaces import ILibraryFileAliasSet
+    >>> from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
 
     >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
     >>> hoary = ubuntu.getSeries('hoary')
@@ -301,7 +301,7 @@
 Since we are using Foo Bar's GPG key to sign packages, in order to test
 PPA uploads we will create a PPA for it.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> foobar = getUtility(IPersonSet).getByName('name16')
     >>> print foobar.archive
     None

=== modified file 'lib/lp/soyuz/doc/gina-multiple-arch.txt'
--- lib/lp/soyuz/doc/gina-multiple-arch.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/gina-multiple-arch.txt	2010-10-13 18:38:20 +0000
@@ -29,7 +29,7 @@
 
     >>> from canonical.launchpad.database import (
     ...     ProcessorFamily, DistroArchSeries)
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> celebs = getUtility(ILaunchpadCelebrities)
     >>> ubuntu = celebs.ubuntu
     >>> hoary = ubuntu.getSeries("hoary")

=== modified file 'lib/lp/soyuz/doc/gina.txt'
--- lib/lp/soyuz/doc/gina.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/gina.txt	2010-10-13 18:38:20 +0000
@@ -37,7 +37,7 @@
 
     >>> from canonical.launchpad.database import (
     ...     ProcessorFamily, DistroArchSeries)
-    >>> from canonical.launchpad.interfaces import ILaunchpadCelebrities
+    >>> from canonical.launchpad.interfaces.launchpad import ILaunchpadCelebrities
     >>> celebs = getUtility(ILaunchpadCelebrities)
     >>> ubuntu = celebs.ubuntu
     >>> hoary = ubuntu.getSeries("hoary")
@@ -211,7 +211,7 @@
     <BLANKLINE>
      -- Daniel Stone <daniel.stone@xxxxxxxxxx>  Mon, 11 Jul 2005 19:11:11 +1000
 
-    >>> from canonical.launchpad.interfaces import SourcePackageUrgency
+    >>> from lp.registry.interfaces.sourcepackage import SourcePackageUrgency
     >>> x11p.urgency == SourcePackageUrgency.LOW
     True
 

=== modified file 'lib/lp/soyuz/doc/package-arch-specific.txt'
--- lib/lp/soyuz/doc/package-arch-specific.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/package-arch-specific.txt	2010-10-13 18:38:20 +0000
@@ -65,7 +65,7 @@
 
 Create a PPA source publication.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> cprov = getUtility(IPersonSet).getByName('cprov')
 
     >>> pub_ppa = test_publisher.getPubSource(

=== modified file 'lib/lp/soyuz/doc/package-cache-script.txt'
--- lib/lp/soyuz/doc/package-cache-script.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/package-cache-script.txt	2010-10-13 18:38:20 +0000
@@ -12,7 +12,7 @@
 Database sampledata has two pending modifications of package cache
 contents:
 
-  >>> from canonical.launchpad.interfaces import IDistributionSet
+  >>> from lp.registry.interfaces.distribution import IDistributionSet
   >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
   >>> warty = ubuntu['warty']
 

=== modified file 'lib/lp/soyuz/doc/package-cache.txt'
--- lib/lp/soyuz/doc/package-cache.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/package-cache.txt	2010-10-13 18:38:20 +0000
@@ -21,7 +21,7 @@
  * fti, a tsvector generated on insert or update with the text indexes
    for name, binpkgnames, binpkgsummaries and binpkgdescriptions.
 
-  >>> from canonical.launchpad.interfaces import IDistributionSet
+  >>> from lp.registry.interfaces.distribution import IDistributionSet
 
   >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
 
@@ -304,7 +304,7 @@
 
 We will use Celso's PPA.
 
-  >>> from canonical.launchpad.interfaces import IPersonSet
+  >>> from lp.registry.interfaces.person import IPersonSet
   >>> cprov = getUtility(IPersonSet).getByName('cprov')
 
 With empty cache contents in Archive table we can't even find a PPA by
@@ -438,7 +438,7 @@
 We insert a new source cache with texts containing punctuation and
 duplicated words pointing to Celso's PPA.
 
-  >>> from canonical.launchpad.interfaces import ISourcePackageNameSet
+  >>> from lp.registry.interfaces.sourcepackagename import ISourcePackageNameSet
   >>> cdrkit_name = getUtility(ISourcePackageNameSet).queryByName('cdrkit')
 
   >>> unclean_cache = DistributionSourcePackageCache(
@@ -614,7 +614,7 @@
 objects uses a DistroSeriesPackageCache record to present summary and
 description for the context binary package.
 
-  >>> from canonical.launchpad.interfaces import IBinaryPackageNameSet
+  >>> from lp.soyuz.interfaces.binarypackagename import IBinaryPackageNameSet
   >>> foobar_name = getUtility(IBinaryPackageNameSet).queryByName('foobar')
 
   >>> primary_cache = DistroSeriesPackageCache(

=== modified file 'lib/lp/soyuz/doc/package-diff.txt'
--- lib/lp/soyuz/doc/package-diff.txt	2010-10-04 20:46:55 +0000
+++ lib/lp/soyuz/doc/package-diff.txt	2010-10-13 18:38:20 +0000
@@ -33,7 +33,7 @@
 
 Let's inspect the PackageDiff record created.
 
-    >>> from canonical.launchpad.interfaces import IPackageDiff
+    >>> from lp.soyuz.interfaces.packagediff import IPackageDiff
     >>> from canonical.launchpad.webapp.testing import verifyObject
 
     >>> verifyObject(IPackageDiff, package_diff)
@@ -44,7 +44,7 @@
  * 'requester', which maps to a `IPerson`, the user who made the diff
    request.
 
-    >>> from canonical.launchpad.interfaces import IPerson
+    >>> from lp.registry.interfaces.person import IPerson
     >>> verifyObject(IPerson, package_diff.requester)
     True
 
@@ -54,7 +54,7 @@
  * 'from_source', which maps to a `ISourcePackageRelease`, the base
    source used in the diff.
 
-    >>> from canonical.launchpad.interfaces import ISourcePackageRelease
+    >>> from lp.soyuz.interfaces.sourcepackagerelease import ISourcePackageRelease
     >>> verifyObject(ISourcePackageRelease, package_diff.from_source)
     True
 
@@ -64,7 +64,7 @@
  * 'to_source', which maps to a `ISourcePackageRelease`, the result
    source used in the diff.
 
-    >>> from canonical.launchpad.interfaces import ISourcePackageRelease
+    >>> from lp.soyuz.interfaces.sourcepackagerelease import ISourcePackageRelease
     >>> verifyObject(ISourcePackageRelease, package_diff.to_source)
     True
 
@@ -116,7 +116,7 @@
 
     >>> from lp.soyuz.model.component import (
     ...     ComponentSelection)
-    >>> from canonical.launchpad.interfaces import IComponentSet
+    >>> from lp.soyuz.interfaces.component import IComponentSet
     >>> from canonical.launchpad.database import LibraryFileAlias
 
     >>> hoary = ubuntu.getSeries('hoary')
@@ -172,7 +172,7 @@
 We will release ubuntu/hoary so we can upload to post-RELEASE pockets
 and ubuntu/breezy-autotest.
 
-    >>> from canonical.launchpad.interfaces import SeriesStatus
+    >>> from lp.registry.interfaces.series import SeriesStatus
     >>> hoary.status = SeriesStatus.CURRENT
 
 We upload version '1.0-9' to hoary-updates and get the diff against
@@ -410,7 +410,7 @@
 Using the utility it's possible to iterate over all PackageDiff
 stored.
 
-    >>> from canonical.launchpad.interfaces import IPackageDiffSet
+    >>> from lp.soyuz.interfaces.packagediff import IPackageDiffSet
     >>> packagediff_set = getUtility(IPackageDiffSet)
 
     >>> def print_diffs(diff_set):

=== modified file 'lib/lp/soyuz/doc/packageset.txt'
--- lib/lp/soyuz/doc/packageset.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/packageset.txt	2010-10-13 18:38:20 +0000
@@ -502,7 +502,7 @@
 
 We can filter the package sets by series:
 
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet)['ubuntu']
     >>> print_data(
     ...     ps_set.setsIncludingSource(firefox_spn,
@@ -612,7 +612,7 @@
 uploads i.e. in conjunction with `ArchivePermission` data.
 
     >>> from lp.soyuz.enums import ArchivePermissionType
-    >>> from canonical.launchpad.interfaces import IArchivePermissionSet
+    >>> from lp.soyuz.interfaces.archivepermission import IArchivePermissionSet
     >>> ap_set = getUtility(IArchivePermissionSet)
 
 So, let's assign upload permissions for the 'mozilla' package set to our

=== modified file 'lib/lp/soyuz/doc/pocketchroot.txt'
--- lib/lp/soyuz/doc/pocketchroot.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/pocketchroot.txt	2010-10-13 18:38:20 +0000
@@ -5,8 +5,8 @@
 Chroot are identified per LibraryFileAlias and we offer three method
 based on IDistroArchSeries to handle them: get, add and update.
 
-  >>> from canonical.launchpad.interfaces import IDistributionSet
-  >>> from canonical.launchpad.interfaces import ILibraryFileAliasSet
+  >>> from lp.registry.interfaces.distribution import IDistributionSet
+  >>> from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
   >>> from lp.registry.interfaces.pocket import PackagePublishingPocket
 
 

=== modified file 'lib/lp/soyuz/doc/publishing.txt'
--- lib/lp/soyuz/doc/publishing.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/publishing.txt	2010-10-13 18:38:20 +0000
@@ -595,7 +595,7 @@
 Now we override the first binary publication, the hppa one, to
 component 'universe'.
 
-    >>> from canonical.launchpad.interfaces import IComponentSet
+    >>> from lp.soyuz.interfaces.component import IComponentSet
     >>> universe = getUtility(IComponentSet)['universe']
 
     >>> first_binary = copied_source.getPublishedBinaries()[0]

=== modified file 'lib/lp/soyuz/doc/queuebuilder.txt'
--- lib/lp/soyuz/doc/queuebuilder.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/queuebuilder.txt	2010-10-13 18:38:20 +0000
@@ -128,7 +128,7 @@
 We will create a group of source publications that represent the
 exact circumstances we want to test below.
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> cprov = getUtility(IPersonSet).getByName('cprov')
 
     >>> from canonical.database.sqlbase import commit

=== modified file 'lib/lp/soyuz/doc/sourcepackagerelease-build-lookup.txt'
--- lib/lp/soyuz/doc/sourcepackagerelease-build-lookup.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/sourcepackagerelease-build-lookup.txt	2010-10-13 18:38:20 +0000
@@ -27,7 +27,7 @@
     >>> trash = hoary_i386.addOrUpdateChroot(fake_chroot)
     >>> trash = hoary_hppa.addOrUpdateChroot(fake_chroot)
 
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> cprov = getUtility(IPersonSet).getByName('cprov')
 
     >>> from lp.registry.interfaces.pocket import (

=== modified file 'lib/lp/soyuz/doc/sourcepackagerelease.txt'
--- lib/lp/soyuz/doc/sourcepackagerelease.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/doc/sourcepackagerelease.txt	2010-10-13 18:38:20 +0000
@@ -60,7 +60,7 @@
 Mozilla-firefox 0.9 has got some builds. including a PPA build.  The 'builds'
 property only returns the non-PPA builds.
 
-   >>> from canonical.launchpad.interfaces import IPersonSet
+   >>> from lp.registry.interfaces.person import IPersonSet
    >>> from lp.buildmaster.model.packagebuild import PackageBuild
    >>> from lp.soyuz.model.binarypackagebuild import BinaryPackageBuild
    >>> from storm.store import Store
@@ -157,7 +157,7 @@
 
   >>> from canonical.launchpad.interfaces import (
   ...     IDistributionSet, ISourcePackageNameSet, IGPGKeySet)
-  >>> from canonical.launchpad.interfaces import SourcePackageUrgency
+  >>> from lp.registry.interfaces.sourcepackage import SourcePackageUrgency
 
   >>> hoary = getUtility(IDistributionSet)['ubuntu']['hoary']
 

=== modified file 'lib/lp/soyuz/doc/soyuz-set-of-uploads.txt'
--- lib/lp/soyuz/doc/soyuz-set-of-uploads.txt	2010-10-04 20:46:55 +0000
+++ lib/lp/soyuz/doc/soyuz-set-of-uploads.txt	2010-10-13 18:38:20 +0000
@@ -149,7 +149,7 @@
 And we need a way to process the accepted queue
 
   >>> from zope.component import getUtility
-  >>> from canonical.launchpad.interfaces import IDistributionSet
+  >>> from lp.registry.interfaces.distribution import IDistributionSet
   >>> from canonical.launchpad.ftests import login
   >>> from canonical.launchpad.ftests import syncUpdate
 
@@ -305,7 +305,7 @@
 Force weird behavior with rfc2047 sentences containing '.' on
 bar_1.0-4, which caused bug # 41102.
 
-  >>> from canonical.launchpad.interfaces import IPersonSet
+  >>> from lp.registry.interfaces.person import IPersonSet
   >>> name16 = getUtility(IPersonSet).getByName('name16')
   >>> name16.displayname = "Foo B. Bar"
   >>> syncUpdate(name16)
@@ -371,7 +371,7 @@
   >>> simulate_upload('bar_1.0-6', upload_policy='sync')
   >>> simulate_upload('bar_1.0-6_binary', is_new=True)
 
-  >>> from canonical.launchpad.interfaces import ISourcePackageNameSet
+  >>> from lp.registry.interfaces.sourcepackagename import ISourcePackageNameSet
   >>> spn_set = getUtility(ISourcePackageNameSet)
   >>> assert spn_set.queryByName('bar-bin') is None
 
@@ -469,7 +469,7 @@
 Set ubuntutest/breezy as the "current series" to activate post-release
 pockets.
 
-  >>> from canonical.launchpad.interfaces import SeriesStatus
+  >>> from lp.registry.interfaces.series import SeriesStatus
   >>> breezy.status = SeriesStatus.CURRENT
   >>> LaunchpadZopelessLayer.txn.commit()
 

=== modified file 'lib/lp/soyuz/doc/soyuz-upload.txt'
--- lib/lp/soyuz/doc/soyuz-upload.txt	2010-10-04 20:46:55 +0000
+++ lib/lp/soyuz/doc/soyuz-upload.txt	2010-10-13 18:38:20 +0000
@@ -213,7 +213,7 @@
 So, load the GPG key:
 
   >>> from canonical.launchpad.ftests.keys_for_tests import gpgkeysdir
-  >>> from canonical.launchpad.interfaces import IGPGHandler
+  >>> from canonical.launchpad.interfaces.gpghandler import IGPGHandler
   >>> from zope.component import getUtility
   >>> gpg_handler = getUtility(IGPGHandler)
   >>> key_path = os.path.join(gpgkeysdir, 'ftpmaster@xxxxxxxxxxxxxxxxx')
@@ -267,7 +267,7 @@
 Include non-free in the database. This will be done by the
 NascentUpload in the 'sync' policy in the future.
 
-  >>> from canonical.launchpad.interfaces import IComponentSet
+  >>> from lp.soyuz.interfaces.component import IComponentSet
   >>> component_set = getUtility(IComponentSet)
   >>> non_free = component_set.new("non-free")
   >>> contrib = component_set.new("contrib")

=== modified file 'lib/lp/soyuz/stories/ppa/xx-copy-packages.txt'
--- lib/lp/soyuz/stories/ppa/xx-copy-packages.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/stories/ppa/xx-copy-packages.txt	2010-10-13 18:38:20 +0000
@@ -104,7 +104,7 @@
 for packages. This is certainly not part of the doctest story.
 
     >>> from zope.component import getUtility
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from canonical.launchpad.ftests import login, logout
 
     >>> login('foo.bar@xxxxxxxxxxxxx')
@@ -935,7 +935,7 @@
 in No Privileges' PPA.
 
     >>> login('foo.bar@xxxxxxxxxxxxx')
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
     >>> hoary = ubuntu.getSeries('hoary')
 

=== modified file 'lib/lp/soyuz/stories/ppa/xx-ubuntu-ppas.txt'
--- lib/lp/soyuz/stories/ppa/xx-ubuntu-ppas.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/stories/ppa/xx-ubuntu-ppas.txt	2010-10-13 18:38:20 +0000
@@ -219,7 +219,7 @@
     >>> from zope.component import getUtility
 
     >>> from canonical.database.sqlbase import flush_database_updates
-    >>> from canonical.launchpad.interfaces import IDistributionSet
+    >>> from lp.registry.interfaces.distribution import IDistributionSet
 
     >>> login(ANONYMOUS)
     >>> ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
@@ -567,8 +567,8 @@
 generated by our key-generation script (see doc/archive-signing.txt
 for more information).
 
-    >>> from canonical.launchpad.interfaces import IGPGKeySet
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.gpg import IGPGKeySet
+    >>> from lp.registry.interfaces.person import IPersonSet
 
     >>> login('foo.bar@xxxxxxxxxxxxx')
     >>> no_priv = getUtility(IPersonSet).getByName('no-priv')

=== modified file 'lib/lp/soyuz/stories/soyuz/xx-package-diff.txt'
--- lib/lp/soyuz/stories/soyuz/xx-package-diff.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/stories/soyuz/xx-package-diff.txt	2010-10-13 18:38:20 +0000
@@ -82,7 +82,7 @@
     ...     requester=name16,
     ...     to_sourcepackagerelease=biscuit_four_pub.sourcepackagerelease)
 
-    >>> from canonical.launchpad.interfaces import IPackageDiffSet
+    >>> from lp.soyuz.interfaces.packagediff import IPackageDiffSet
     >>> diff_set = getUtility(IPackageDiffSet)
     >>> diffs = list(diff_set.getPendingDiffs())
     >>> for diff in diffs:

=== modified file 'lib/lp/soyuz/stories/soyuz/xx-person-packages.txt'
--- lib/lp/soyuz/stories/soyuz/xx-person-packages.txt	2010-10-03 15:30:06 +0000
+++ lib/lp/soyuz/stories/soyuz/xx-person-packages.txt	2010-10-13 18:38:20 +0000
@@ -168,7 +168,7 @@
     >>> from zope.component import getUtility
     >>> from canonical.launchpad.ftests import login, logout
     >>> from canonical.database.sqlbase import flush_database_updates
-    >>> from canonical.launchpad.interfaces import IPersonSet
+    >>> from lp.registry.interfaces.person import IPersonSet
     >>> from lp.registry.interfaces.distribution import IDistributionSet
     >>> from lp.soyuz.tests.test_publishing import (
     ...      SoyuzTestPublisher)

=== modified file 'lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt'
--- lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt	2010-10-04 20:46:55 +0000
+++ lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt	2010-10-13 18:38:20 +0000
@@ -264,7 +264,7 @@
 
   >>> from zope.component import getUtility
   >>> from canonical.launchpad.ftests import login, logout
-  >>> from canonical.launchpad.interfaces import IDistributionSet
+  >>> from lp.registry.interfaces.distribution import IDistributionSet
   >>> from lp.soyuz.tests.test_publishing import SoyuzTestPublisher
 
   >>> login('foo.bar@xxxxxxxxxxxxx')

=== added file 'utilities/migrater/deglob.py'
--- utilities/migrater/deglob.py	1970-01-01 00:00:00 +0000
+++ utilities/migrater/deglob.py	2010-10-13 18:38:20 +0000
@@ -0,0 +1,77 @@
+#!/usr/bin/python
+#locate all the bad imports in zcml
+#create  a set
+#for each item in set
+#find true path
+#replace all occurences.
+
+from find import find_matches
+
+
+def get_interfaces(types=None, globs=None):
+    interfaces = set()
+    root = 'lib'
+    if types is None:
+        types = r'\.(zcml)'
+    if globs is None:
+        globs = r'\bcanonical\.launchpad\.interfaces.(I\w*)\b'
+    for summary in find_matches(root, types, globs):
+        for line in summary['lines']:
+            interfaces.add(line['match'].group(1))
+    return interfaces
+
+
+def get_interface_modules(interfaces):
+    interface_modules = {}
+    root = 'lib'
+    types = r'(errors|enums|interfaces).*\.py'
+    interface_def = r'\bclass (%s)\b'
+    for interface in interfaces:
+        for summary in find_matches(root, types, interface_def % interface):
+            # Chop lib/ and .py from the string and repace the slash with dot.
+            module_ = summary['file_path'][4:-3].replace('/', '.')
+            interface_modules[interface] = module_
+            break
+    return interface_modules
+
+
+def update_zcml_globs_to_interfaces():
+    root = 'lib'
+    types = r'\.(zcml)'
+    globs = r'\bcanonical\.launchpad\.interfaces.(I\w*)\b'
+    interfaces = get_interfaces(types=types, glob_interface=globs)
+    interface_modules = get_interface_modules(interfaces)
+    glob_interface = r'\b(canonical\.launchpad\.interfaces.%s)\b'
+    for interface, module_ in interface_modules.items():
+        pattern = glob_interface % interface
+        substitution = '%s.%s' % (module_, interface)
+        for summary in find_matches(
+            root, types, pattern, substitution=substitution):
+            print "\n%(file_path)s" % summary
+            for line in summary['lines']:
+                print "    %(lineno)4s: %(text)s" % line
+
+
+def update_doctest_globs_to_interfaces():
+    root = 'lib'
+    types = r'\.(txt)'
+    globs = r'from \bcanonical\.launchpad\.interfaces import (\w+)$'
+    interfaces = get_interfaces(types=types, glob_interface=globs)
+    interface_modules = get_interface_modules(interfaces)
+    glob_interface = r'\b(from canonical\.launchpad\.interfaces import %s)\b'
+    for interface, module_ in interface_modules.items():
+        pattern = glob_interface % interface
+        substitution = 'from %s import %s' % (module_, interface)
+        for summary in find_matches(
+            root, types, pattern, substitution=substitution):
+            print "\n%(file_path)s" % summary
+            for line in summary['lines']:
+                print "    %(lineno)4s: %(text)s" % line
+
+
+def main():
+    update_doctest_globs_to_interfaces()
+
+
+if __name__ == '__main__':
+    main()