← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~stevenk/launchpad/double-word-death into lp:launchpad

 

Steve Kowalik has proposed merging lp:~stevenk/launchpad/double-word-death into lp:launchpad.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~stevenk/launchpad/double-word-death/+merge/94065

Remove double words of: "be the for we will of".

Fix grammar errors that I noticed.
-- 
https://code.launchpad.net/~stevenk/launchpad/double-word-death/+merge/94065
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~stevenk/launchpad/double-word-death into lp:launchpad.
=== modified file 'lib/lp/answers/browser/question.py'
--- lib/lp/answers/browser/question.py	2012-01-01 02:58:52 +0000
+++ lib/lp/answers/browser/question.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Question views."""
@@ -1299,7 +1299,7 @@
 
         Those found in `values` are marked as selected. The list of rendered
         values is controlled by the search query. The currently selected
-        value is always added the the set.
+        value is always added to the set.
         """
         rendered_items = []
         rendered_values = set()

=== modified file 'lib/lp/answers/errors.py'
--- lib/lp/answers/errors.py	2011-06-16 18:51:45 +0000
+++ lib/lp/answers/errors.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2011-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 __metaclass__ = type
@@ -47,12 +47,12 @@
 
 @error_status(httplib.BAD_REQUEST)
 class NotMessageOwnerError(ValueError):
-    """The person be the the message owner."""
+    """The person must be the message owner."""
 
 
 @error_status(httplib.BAD_REQUEST)
 class NotQuestionOwnerError(ValueError):
-    """The person be the the question owner."""
+    """The person must be the question owner."""
 
 
 @error_status(httplib.BAD_REQUEST)

=== modified file 'lib/lp/answers/stories/question-search-multiple-languages.txt'
--- lib/lp/answers/stories/question-search-multiple-languages.txt	2012-01-15 11:06:57 +0000
+++ lib/lp/answers/stories/question-search-multiple-languages.txt	2012-02-21 22:50:24 +0000
@@ -31,7 +31,7 @@
 
 The questions match the languages inferred from by GeoIP
 127.0.0.1 is mapped to South Africa in the test suite. The language
-control shows the intersection of the the user's languages and the
+control shows the intersection of the user's languages and the
 languages of the target's questions. In this example:
 set(['af', 'en', 'st', 'xh', 'zu']) & set(['en', 'es']) == set(en).
 

=== modified file 'lib/lp/answers/stories/question-workflow.txt'
--- lib/lp/answers/stories/question-workflow.txt	2011-11-30 23:31:25 +0000
+++ lib/lp/answers/stories/question-workflow.txt	2012-02-21 22:50:24 +0000
@@ -159,7 +159,7 @@
     ...     "support enabled. You can use apt-get or adept to upgrade.")
     >>> support_browser.getControl('Propose Answer').click()
 
-This moves the the question to the Answered state and adds the answer to
+This moves the question to the Answered state and adds the answer to
 the end of the discussion:
 
     >>> print find_request_status(support_browser.contents)

=== modified file 'lib/lp/app/longpoll/__init__.py'
--- lib/lp/app/longpoll/__init__.py	2011-09-20 15:30:54 +0000
+++ lib/lp/app/longpoll/__init__.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2011-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Long-poll infrastructure."""
@@ -39,7 +39,7 @@
 def emit(source, event_name=u"", **data):
     """Convenience method to emit a message for an event.
 
-    :param source: Something that can be be adapted to `ILongPollEvent`.
+    :param source: Something that can be adapted to `ILongPollEvent`.
     :param event_name: The name of the event to subscribe to. This is used to
         look up a named adapter from `target` to `ILongPollEvent`.
     :param data: See `ILongPollEvent.emit`.

=== modified file 'lib/lp/archivepublisher/tests/test_customupload.py'
--- lib/lp/archivepublisher/tests/test_customupload.py	2010-08-20 20:31:18 +0000
+++ lib/lp/archivepublisher/tests/test_customupload.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2010 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Tests for `CustomUploads`."""
@@ -57,7 +57,7 @@
         self.assertEntries(['1.0', '1.1', '1.2', '1.3'])
 
         # `fixCurrentSymlink` will keep only the latest 3 and create a
-        # 'current' symbolic link the the highest one.
+        # 'current' symbolic link the highest one.
         custom_processor.fixCurrentSymlink()
         self.assertEntries(['1.1', '1.2', '1.3', 'current'])
         self.assertEqual(

=== modified file 'lib/lp/archiveuploader/nascentuploadfile.py'
--- lib/lp/archiveuploader/nascentuploadfile.py	2012-01-06 11:08:30 +0000
+++ lib/lp/archiveuploader/nascentuploadfile.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Specific models for uploaded files"""
@@ -579,7 +579,7 @@
 
         # Since DDEBs are generated after the original DEBs are processed
         # and considered by `dpkg-genchanges` they are only half-incorporated
-        # the the binary upload changes file. DDEBs are only listed in the
+        # the binary upload changes file. DDEBs are only listed in the
         # Files/Checksums-Sha1/ChecksumsSha256 sections and missing from
         # Binary/Description.
         if not self.filename.endswith('.ddeb'):

=== modified file 'lib/lp/blueprints/tests/test_specification.py'
--- lib/lp/blueprints/tests/test_specification.py	2012-01-01 02:58:52 +0000
+++ lib/lp/blueprints/tests/test_specification.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2010-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Unit tests for Specification."""
@@ -118,7 +118,7 @@
         self.new_names = NewSpecificationDefinitionStatus.items.mapping.keys()
 
     def test_new_with_open_definition_status_creates_specification(self):
-        # Calling new() with an open definition status will will create
+        # Calling new() with an open definition status will create
         # a specification.
         self.assertTrue(
             SpecificationDefinitionStatus.NEW.name in self.new_names)

=== modified file 'lib/lp/bugs/browser/bugtarget.py'
--- lib/lp/bugs/browser/bugtarget.py	2012-02-09 12:42:00 +0000
+++ lib/lp/bugs/browser/bugtarget.py	2012-02-21 22:50:24 +0000
@@ -774,7 +774,7 @@
     def inline_filebug_form_url(self):
         """Return the URL to the inline filebug form.
 
-        If a token was passed to this view, it will be be passed through
+        If a token was passed to this view, it will be passed through
         to the inline bug filing form via the returned URL.
         """
         url = canonical_url(self.context, view_name='+filebug-inline-form')
@@ -1173,7 +1173,7 @@
     def inline_filebug_form_url(self):
         """Return the URL to the inline filebug form.
 
-        If a token was passed to this view, it will be be passed through
+        If a token was passed to this view, it will be passed through
         to the inline bug filing form via the returned URL.
 
         The URL returned will be the URL of the first of the current

=== modified file 'lib/lp/bugs/browser/tests/bug-views.txt'
--- lib/lp/bugs/browser/tests/bug-views.txt	2011-12-30 07:38:46 +0000
+++ lib/lp/bugs/browser/tests/bug-views.txt	2012-02-21 22:50:24 +0000
@@ -358,7 +358,7 @@
     'edit'
 
 If we now unsubscribe Foo Bar, it will say 'Subscribe', since team
-unsubsription is handled by the remove icon next the the team in the
+unsubsription is handled by the remove icon next the team in the
 subscribers portlet.
 
     >>> bug_one.unsubscribe(foo_bar, foo_bar)

=== modified file 'lib/lp/bugs/doc/bug-watch-activity.txt'
--- lib/lp/bugs/doc/bug-watch-activity.txt	2012-01-20 16:11:11 +0000
+++ lib/lp/bugs/doc/bug-watch-activity.txt	2012-02-21 22:50:24 +0000
@@ -114,7 +114,7 @@
     >>> print bug_watch.activity.count()
     3
 
-And this time its result field will record that the the remote bug was
+And this time its result field will record that the remote bug was
 not found.
 
     >>> most_recent_activity = bug_watch.activity.first()

=== modified file 'lib/lp/bugs/doc/distribution-upstream-bug-report.txt'
--- lib/lp/bugs/doc/distribution-upstream-bug-report.txt	2011-12-24 15:28:06 +0000
+++ lib/lp/bugs/doc/distribution-upstream-bug-report.txt	2012-02-21 22:50:24 +0000
@@ -225,7 +225,7 @@
 Deltas
 ......
 
-BugReportData also offers a set of of *_delta properties along with the
+BugReportData also offers a set of *_delta properties along with the
 *_percentage properties.
 
 BugReportData.triaged_bugs_delta is the difference between the number of

=== modified file 'lib/lp/bugs/doc/filebug-data-parser.txt'
--- lib/lp/bugs/doc/filebug-data-parser.txt	2010-02-23 15:10:04 +0000
+++ lib/lp/bugs/doc/filebug-data-parser.txt	2012-02-21 22:50:24 +0000
@@ -189,7 +189,7 @@
 
 ==== HWDB submission keys ====
 
-The HWDB-Submission key is turned into a list of of strings, available
+The HWDB-Submission key is turned into a list of strings, available
 through the hwdb_submission_keys attribute.
 
     >>> data = FileBugData()

=== modified file 'lib/lp/bugs/javascript/bug_subscription_portlet.js'
--- lib/lp/bugs/javascript/bug_subscription_portlet.js	2011-09-27 06:06:13 +0000
+++ lib/lp/bugs/javascript/bug_subscription_portlet.js	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011 Canonical Ltd.  This software is licensed under the
+/* Copyright 2011-2012 Canonical Ltd.  This software is licensed under the
  * GNU Affero General Public License version 3 (see the file LICENSE).
  *
  * Provide information and actions on all bug subscriptions a person holds.
@@ -309,7 +309,7 @@
         .setStyle('textOverflow', 'ellipsis')
         .setStyle('whiteSpace', 'nowrap')
         .setStyle('width', '21em');
-    // This is the the node that description of the current subscription
+    // This is the node that description of the current subscription
     // status.
     var status_node = tag('div')
         .addClass('subscription-status')
@@ -328,7 +328,7 @@
             .set('text',
                  'You currently only receive email when this bug is closed.')
         );
-    // This is the the node that contains the links to subscribe at a certain
+    // This is the node that contains the links to subscribe at a certain
     // level.
     var actions_node = tag('div')
         .addClass('subscription-actions')

=== modified file 'lib/lp/bugs/model/bugwatch.py'
--- lib/lp/bugs/model/bugwatch.py	2011-12-30 06:14:56 +0000
+++ lib/lp/bugs/model/bugwatch.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 # pylint: disable-msg=E0611,W0212
@@ -331,7 +331,7 @@
             self.next_check <= datetime.now(utc)):
             # If the watch is already scheduled for a time in the past
             # (or for right now) it can't be rescheduled, since it
-            # should be be checked by the next checkwatches run anyway.
+            # should be checked by the next checkwatches run anyway.
             return False
 
         if self.activity.is_empty():

=== modified file 'lib/lp/bugs/stories/webservice/xx-bug-tracker.txt'
--- lib/lp/bugs/stories/webservice/xx-bug-tracker.txt	2011-07-13 06:08:16 +0000
+++ lib/lp/bugs/stories/webservice/xx-bug-tracker.txt	2012-02-21 22:50:24 +0000
@@ -31,7 +31,7 @@
     web_link: u'http://bugs.launchpad.dev/bugs/bugtrackers/mozilla.org'
     --- ...
 
-A bug tracker can be retrieved using the the bug tracker collection's
+A bug tracker can be retrieved using the bug tracker collection's
 getByName named operation.
 
     >>> bug_tracker = anon_webservice.named_get(
@@ -40,7 +40,7 @@
     >>> print bug_tracker['name']
     gnome-bugzilla
 
-A bug tracker can be retrieved using the the bug tracker collection's
+A bug tracker can be retrieved using the bug tracker collection's
 queryByBaseURL named operation.
 
     >>> bug_tracker = anon_webservice.named_get(

=== modified file 'lib/lp/bugs/templates/bug-mute.pt'
--- lib/lp/bugs/templates/bug-mute.pt	2011-03-23 16:28:51 +0000
+++ lib/lp/bugs/templates/bug-mute.pt	2012-02-21 22:50:24 +0000
@@ -16,7 +16,7 @@
     <div id="maincontent">
       <div id="nonportlets" class="readable">
         <p>
-          If you mute a bug you will receive no mail about the the bug
+          If you mute a bug you will receive no mail about the bug
           at all until you unmute it again.
         </p>
 

=== modified file 'lib/lp/bugs/tests/test_apportjob.py'
--- lib/lp/bugs/tests/test_apportjob.py	2012-01-01 02:58:52 +0000
+++ lib/lp/bugs/tests/test_apportjob.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2010-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Tests for ApportJobs."""
@@ -126,7 +126,7 @@
             data_dict['hwdb_submission_keys'],
             "Values for hwdb_submission_keys do not match")
 
-        # The attachments list of of the data_dict dict will be of
+        # The attachments list of the data_dict dict will be of
         # the same length as the attachments list in the filebug_data
         # object.
         self.assertEqual(

=== modified file 'lib/lp/code/browser/tests/test_sourcepackagerecipe.py'
--- lib/lp/code/browser/tests/test_sourcepackagerecipe.py	2012-01-15 13:32:27 +0000
+++ lib/lp/code/browser/tests/test_sourcepackagerecipe.py	2012-02-21 22:50:24 +0000
@@ -1255,7 +1255,7 @@
                     naked_build.date_created + timedelta(minutes=10))
         set_status(build6, BuildStatus.FULLYBUILT)
         set_status(build5, BuildStatus.FAILEDTOBUILD)
-        # When there are 4+ pending builds, only the the most
+        # When there are 4+ pending builds, only the most
         # recently-completed build is returned (i.e. build1, not build2)
         self.assertEqual(
             [build4, build3, build2, build1, build6],

=== modified file 'lib/lp/code/errors.py'
--- lib/lp/code/errors.py	2012-02-06 05:33:31 +0000
+++ lib/lp/code/errors.py	2012-02-21 22:50:24 +0000
@@ -297,7 +297,7 @@
 
 
 class UpdatePreviewDiffNotReady(Exception):
-    """Raised if the the preview diff is not ready to run."""
+    """Raised if the preview diff is not ready to run."""
 
 
 class UserHasExistingReview(Exception):

=== modified file 'lib/lp/code/model/tests/test_branch_privacy_triggers.py'
--- lib/lp/code/model/tests/test_branch_privacy_triggers.py	2012-01-20 15:42:44 +0000
+++ lib/lp/code/model/tests/test_branch_privacy_triggers.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2011-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Tests that the triggers to maintain the branch table transitively_private
@@ -133,7 +133,7 @@
     def testRemoveStackedOn(self):
         # 5 is private, 1 stacked on 5, so 1 is transitively private.
         # Unstack 1.
-        # 1 should no longer be be transitively private.
+        # 1 should no longer be transitively private.
         self.createBranches()
         self.updateStackedOnForBranch(1, 5)
         self.updatePrivacyForBranch(5, True)

=== modified file 'lib/lp/code/stories/branches/xx-subscribing-branches.txt'
--- lib/lp/code/stories/branches/xx-subscribing-branches.txt	2012-01-15 13:32:27 +0000
+++ lib/lp/code/stories/branches/xx-subscribing-branches.txt	2012-02-21 22:50:24 +0000
@@ -218,7 +218,7 @@
 ===========================
 
 In order to edit a team subscription the logged in user needs to be a member
-of the team that is subscribed, or must the the person who subscribed the team
+of the team that is subscribed, or must the person who subscribed the team
 to the branch.  There is a link shown in the subscriptions portlet to edit the
 subscription of a team that the logged in user is a member of.
 

=== modified file 'lib/lp/code/windmill/tests/test_recipe_inline_distroseries_edit.py'
--- lib/lp/code/windmill/tests/test_recipe_inline_distroseries_edit.py	2012-01-15 13:32:27 +0000
+++ lib/lp/code/windmill/tests/test_recipe_inline_distroseries_edit.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2011-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Tests for requesting recipe builds."""
@@ -51,7 +51,7 @@
         # Save it
         client.click(jquery=u'("#edit-distroseries-save")[0]')
 
-        # Wait for the the new one that is added.
+        # Wait for the new one that is added.
         client.waits.forElement(
             jquery=u"('#edit-distroseries-items ul li a')[0]",
             timeout=FOR_ELEMENT)

=== modified file 'lib/lp/code/windmill/tests/test_recipe_request_build.py'
--- lib/lp/code/windmill/tests/test_recipe_request_build.py	2012-01-15 13:32:27 +0000
+++ lib/lp/code/windmill/tests/test_recipe_request_build.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2011-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Tests for requesting recipe builds."""
@@ -78,7 +78,7 @@
     def test_recipe_build_request_already_pending(self):
         """Test that already pending builds are correctly highlighted.
 
-        If all possible builds are pending, the the Request Builds button
+        If all possible builds are pending, the Request Builds button
         should be hidden.
         """
 

=== modified file 'lib/lp/code/xmlrpc/tests/test_codehosting.py'
--- lib/lp/code/xmlrpc/tests/test_codehosting.py	2012-01-06 11:08:30 +0000
+++ lib/lp/code/xmlrpc/tests/test_codehosting.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Tests for the internal codehosting API."""
@@ -1041,7 +1041,7 @@
         self.assertEqual(expected, translation)
 
     def test_translatePath_branch_id_alias_owned(self):
-        # Even if the the requester is the owner, the branch is read only.
+        # Even if the requester is the owner, the branch is read only.
         requester = self.factory.makePerson()
         branch = removeSecurityProxy(
             self.factory.makeAnyBranch(

=== modified file 'lib/lp/codehosting/scanner/tests/test_bzrsync.py'
--- lib/lp/codehosting/scanner/tests/test_bzrsync.py	2012-02-15 17:29:54 +0000
+++ lib/lp/codehosting/scanner/tests/test_bzrsync.py	2012-02-21 22:50:24 +0000
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 #
-# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 # pylint: disable-msg=W0141
@@ -620,7 +620,7 @@
 
     def _makeProductSeries(self, mode=None):
         """Switch to the Launchpad db user to create and configure a
-        product series that is linked to the the branch.
+        product series that is linked to the branch.
         """
         with lp_dbuser():
             self.product_series = self.factory.makeProductSeries()

=== modified file 'lib/lp/registry/browser/mailinglists.py'
--- lib/lp/registry/browser/mailinglists.py	2012-01-01 02:58:52 +0000
+++ lib/lp/registry/browser/mailinglists.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2010 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Browser views for handling mailing lists."""
@@ -28,7 +28,7 @@
 
 
 class HeldMessageView(LaunchpadView):
-    """A little helper view for for held messages."""
+    """A little helper view for held messages."""
 
     def __init__(self, context, request):
         super(HeldMessageView, self).__init__(context, request)

=== modified file 'lib/lp/registry/browser/milestone.py'
--- lib/lp/registry/browser/milestone.py	2012-01-14 09:00:20 +0000
+++ lib/lp/registry/browser/milestone.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Milestone views."""
@@ -496,7 +496,7 @@
     def _field_names(self):
         """See `LaunchpadFormView`.
 
-        There are two series fields, one for for product milestones and the
+        There are two series fields, one for product milestones and the
         other for distribution milestones. The product milestone may change
         its productseries. The distribution milestone may change its
         distroseries.

=== modified file 'lib/lp/registry/browser/person.py'
--- lib/lp/registry/browser/person.py	2012-02-21 12:43:54 +0000
+++ lib/lp/registry/browser/person.py	2012-02-21 22:50:24 +0000
@@ -2244,7 +2244,7 @@
             else:
                 merge_action = 'merged'
             self.request.response.addInfoNotification(
-                "%s is queued to be be %s in a few minutes." % (
+                "%s is queued to be %s in a few minutes." % (
                 self.context.displayname, merge_action))
         if self.request.method == "POST":
             self.processForm()

=== modified file 'lib/lp/registry/browser/tests/browser-views.txt'
--- lib/lp/registry/browser/tests/browser-views.txt	2011-12-24 17:49:30 +0000
+++ lib/lp/registry/browser/tests/browser-views.txt	2012-02-21 22:50:24 +0000
@@ -8,7 +8,7 @@
 ---------------------
 
 The MilestoneOverlayMixin provides data that is needed by milestoneoverlay.js.
-The milestone_form_uri property is the location of of the rendered form. The
+The milestone_form_uri property is the location of the rendered form. The
 javascript calls newMilestone on the object at series_api_uri.
 
     >>> from lp.services.webapp import LaunchpadView

=== modified file 'lib/lp/registry/browser/tests/productrelease-views.txt'
--- lib/lp/registry/browser/tests/productrelease-views.txt	2012-02-02 12:30:53 +0000
+++ lib/lp/registry/browser/tests/productrelease-views.txt	2012-02-21 22:50:24 +0000
@@ -102,7 +102,7 @@
 It is possible to create a release directly from a series, the release's
 milestone can be created via an AJAX command.
 
-The view collects the the required release fields, and adds fields to to
+The view collects the required release fields, and adds fields to to
 set the milestone.
 
     >>> view = create_initialized_view(series, '+addrelease', principal=owner)

=== modified file 'lib/lp/registry/browser/tests/test_person.py'
--- lib/lp/registry/browser/tests/test_person.py	2012-02-01 15:26:32 +0000
+++ lib/lp/registry/browser/tests/test_person.py	2012-02-21 22:50:24 +0000
@@ -123,7 +123,7 @@
         job_source.create(from_person=dupe_person, to_person=target_person)
         view = create_initialized_view(dupe_person, name="+index")
         notifications = view.request.response.notifications
-        message = 'Finch is queued to be be merged in a few minutes.'
+        message = 'Finch is queued to be merged in a few minutes.'
         self.assertEqual(1, len(notifications))
         self.assertEqual(message, notifications[0].message)
 
@@ -423,7 +423,7 @@
             self.view.field_names)
 
     def test_init_registry_expert(self):
-        # Registry experts do not see the the displayname field.
+        # Registry experts do not see the displayname field.
         login_celebrity('registry_experts')
         self.view.setUpFields()
         self.assertEqual(

=== modified file 'lib/lp/registry/browser/tests/test_team.py'
--- lib/lp/registry/browser/tests/test_team.py	2012-02-17 17:11:57 +0000
+++ lib/lp/registry/browser/tests/test_team.py	2012-02-21 22:50:24 +0000
@@ -465,7 +465,7 @@
             ['name', 'displayname'], view.field_names)
 
     def test_init_registry_expert(self):
-        # Registry experts do not see the the displayname field.
+        # Registry experts do not see the displayname field.
         team = self.factory.makeTeam()
         login_celebrity('registry_experts')
         view = create_initialized_view(team, name=self.view_name)
@@ -811,7 +811,7 @@
         view = create_initialized_view(self.team, name="+index")
         notifications = view.request.response.notifications
         message = (
-            'Test Team is queued to be be merged or deleted '
+            'Test Team is queued to be merged or deleted '
             'in a few minutes.')
         self.assertEqual(1, len(notifications))
         self.assertEqual(message, notifications[0].message)

=== modified file 'lib/lp/registry/doc/distroseries.txt'
--- lib/lp/registry/doc/distroseries.txt	2012-01-06 11:08:30 +0000
+++ lib/lp/registry/doc/distroseries.txt	2012-02-21 22:50:24 +0000
@@ -448,7 +448,7 @@
 
 The distroseries getPrioritizedUnlinkedSourcePackages() method returns
 a prioritized list of `ISourcePackage` objects that need a packaging link to
-an `IProductSeries` to provide the the upstream information to share bugs,
+an `IProductSeries` to provide the upstream information to share bugs,
 translations, and code. Each item in the list is a dict with the 'package',
 total_bugs, and total_messages (translatable messages).
 

=== modified file 'lib/lp/registry/javascript/milestonetable.js'
--- lib/lp/registry/javascript/milestonetable.js	2011-08-09 14:18:02 +0000
+++ lib/lp/registry/javascript/milestonetable.js	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010 Canonical Ltd.  This software is licensed under the
+/* Copyright 2010-2012 Canonical Ltd.  This software is licensed under the
  * GNU Affero General Public License version 3 (see the file LICENSE).
  *
  * Dynamically add milestones to an HTML table.
@@ -95,7 +95,7 @@
       * @param {Object} parameters Object literal of config name/value pairs.
       *     config.milestone_row_uri_template is the Y.substitute template
       *         that is used to create the URL to get the milestone row.
-      *     config.milestone_rows_id is the id the the tbody that the
+      *     config.milestone_rows_id is the id the tbody that the
       *         milestone row will be added too.
       */
     module.setup =  function(config) {

=== modified file 'lib/lp/registry/javascript/tests/test_distroseriesdifferences_details.js'
--- lib/lp/registry/javascript/tests/test_distroseriesdifferences_details.js	2011-08-30 16:41:31 +0000
+++ lib/lp/registry/javascript/tests/test_distroseriesdifferences_details.js	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
+/* Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
    GNU Affero General Public License version 3 (see the file LICENSE). */
 
 YUI().use(
@@ -905,7 +905,7 @@
 
     test_request_wrong_click: function() {
         // Click on the placeholder has no effect.
-        // The listeners are on the the link with class
+        // The listeners are on the link with class
         // '.package-diff-compute-request'.
         // bug=746277.
         var placeholder = Y.one('#placeholder');

=== modified file 'lib/lp/registry/model/person.py'
--- lib/lp/registry/model/person.py	2012-02-20 10:32:23 +0000
+++ lib/lp/registry/model/person.py	2012-02-21 22:50:24 +0000
@@ -1050,7 +1050,7 @@
         return contributions
 
     def _getProjectsWithTheMostKarma(self, limit=10):
-        """Return the names and karma points of of this person on the
+        """Return the names and karma points of this person on the
         product/distribution with that name.
 
         The results are ordered descending by the karma points and limited to

=== modified file 'lib/lp/registry/model/teammembership.py'
--- lib/lp/registry/model/teammembership.py	2012-01-04 14:40:15 +0000
+++ lib/lp/registry/model/teammembership.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 # pylint: disable-msg=E0611,W0212
@@ -531,7 +531,7 @@
     """
     # Delete participation entries for the child and the child's
     # direct/indirect members in other ancestor teams, unless those
-    # ancestor teams have another path the the child besides the
+    # ancestor teams have another path the child besides the
     # membership that has just been deactivated.
     store = Store.of(parent)
     store.execute("""

=== modified file 'lib/lp/registry/stories/milestone/object-milestones.txt'
--- lib/lp/registry/stories/milestone/object-milestones.txt	2011-12-28 17:03:06 +0000
+++ lib/lp/registry/stories/milestone/object-milestones.txt	2012-02-21 22:50:24 +0000
@@ -83,7 +83,7 @@
     Mozilla Firefox 1.0                             trunk  A date
                                                               not yet released
 
-When the project is a member of a project group, the the user can see a
+When the project is a member of a project group, the user can see a
 link to the project groups's milestone's page.
 
     >>> anon_browser.getLink(

=== modified file 'lib/lp/registry/tests/test_commercialprojects_vocabularies.py'
--- lib/lp/registry/tests/test_commercialprojects_vocabularies.py	2012-02-13 21:01:51 +0000
+++ lib/lp/registry/tests/test_commercialprojects_vocabularies.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Test the commercial projects vocabularies."""
@@ -65,7 +65,7 @@
                                                  len(results)))
 
     def test_searchForTerms_success(self):
-        # Search for for active maintained projects success.
+        # Search for active maintained projects success.
         results = self.vocab.searchForTerms('widget')
         self.assertEqual(
             self.num_commercial, len(results),

=== modified file 'lib/lp/registry/tests/test_team.py'
--- lib/lp/registry/tests/test_team.py	2012-01-17 21:45:24 +0000
+++ lib/lp/registry/tests/test_team.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2010-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Tests for PersonSet."""
@@ -120,7 +120,7 @@
     def test_setContactAddress_after_purged_mailing_list_and_rename(self):
         # This is the rare case where a list is purged for a team rename,
         # then the contact address is set/unset sometime afterwards.
-        # The old mailing list address belongs the the team, but not the list.
+        # The old mailing list address belongs the team, but not the list.
         # 1. Create then purge a mailing list.
         self.createMailingListAndGetAddress()
         mailing_list = self.team.mailing_list

=== modified file 'lib/lp/services/database/sqlbase.py'
--- lib/lp/services/database/sqlbase.py	2012-02-07 14:39:27 +0000
+++ lib/lp/services/database/sqlbase.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 __metaclass__ = type
@@ -164,7 +164,7 @@
     def __init__(self, *args, **kwargs):
         """Extended version of the SQLObjectBase constructor.
 
-        We we force use of the the master Store.
+        We force use of the master Store.
 
         We refetch any parameters from different stores from the
         correct master Store.

=== modified file 'lib/lp/services/doc/limitedlist.txt'
--- lib/lp/services/doc/limitedlist.txt	2010-03-22 13:07:05 +0000
+++ lib/lp/services/doc/limitedlist.txt	2012-02-21 22:50:24 +0000
@@ -32,7 +32,7 @@
     <LimitedList(2, [2, 3])>
 
 If we add two LimitedLists, the result is a LimitedList too, its maximum
-length is the same as the the maximum length of the left operand. If the
+length is the same as the maximum length of the left operand. If the
 concatenated lists have more elements than left_operand.max_length, only
 the last elements are stored.
 

=== modified file 'lib/lp/services/gpg/doc/gpghandler.txt'
--- lib/lp/services/gpg/doc/gpghandler.txt	2011-12-24 17:49:30 +0000
+++ lib/lp/services/gpg/doc/gpghandler.txt	2012-02-21 22:50:24 +0000
@@ -303,7 +303,7 @@
     >>> len(list(gpghandler.localKeys()))
     0
 
-When we we need the public key again we use retrieveKey(), which will
+When we need the public key again we use retrieveKey(), which will
 hit the keyserver and import it automatically.
 
     >>> retrieved_key = gpghandler.retrieveKey(new_key.fingerprint)

=== modified file 'lib/lp/services/webapp/interfaces.py'
--- lib/lp/services/webapp/interfaces.py	2012-01-15 12:22:55 +0000
+++ lib/lp/services/webapp/interfaces.py	2012-02-21 22:50:24 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 # pylint: disable-msg=E0211,E0213
@@ -170,7 +170,7 @@
 
     hidden = Attribute(
         "Boolean to say whether this link is hidden.  This is separate from "
-        "being enabled and is used to support links which need to be be "
+        "being enabled and is used to support links which need to be "
         "enabled but not viewable in the rendered HTML.  The link may be "
         "changed to visible by JavaScript or some other means.")
 

=== modified file 'lib/lp/soyuz/scripts/packagecopier.py'
--- lib/lp/soyuz/scripts/packagecopier.py	2012-01-09 13:25:02 +0000
+++ lib/lp/soyuz/scripts/packagecopier.py	2012-02-21 22:50:24 +0000
@@ -66,7 +66,7 @@
     # XXX cprov 2009-06-12: This function could be incorporated in ILFA.
     # I just don't see a clear benefit in doing that right now.
 
-    # Open the the libraryfile for reading.
+    # Open the libraryfile for reading.
     libraryfile.open()
 
     # Make a temporary file to hold the download.  It's annoying

=== modified file 'lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt'
--- lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt	2011-12-30 06:14:56 +0000
+++ lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt	2012-02-21 22:50:24 +0000
@@ -581,7 +581,7 @@
 ------------------
 
 Users can inspect the full publishing history by clicking on a link in
-the action menu on the the distribution source package index page.
+the action menu on the distribution source package index page.
 
     >>> anon_browser.getLink('View full publishing history').click()
 

=== modified file 'utilities/format-imports'
--- utilities/format-imports	2012-01-01 03:20:03 +0000
+++ utilities/format-imports	2012-02-21 22:50:24 +0000
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 #
-# Copyright 2010 Canonical Ltd.  This software is licensed under the
+# Copyright 2010-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """ Format import sections in python files
@@ -65,7 +65,7 @@
 length.
 
 Comments stick with the import statement that followed them. Comments at the
-end of one-line statements are moved to be be in front of it, .i.e.
+end of one-line statements are moved to be in front of it, .i.e.
 {{{
   from sys import exit # Have a way out
 }}}

=== modified file 'utilities/paste'
--- utilities/paste	2012-01-01 03:10:25 +0000
+++ utilities/paste	2012-02-21 22:50:24 +0000
@@ -1,6 +1,6 @@
 #!/usr/bin/python -S
 #
-# Copyright 2009 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 import _pythonpath
@@ -131,7 +131,7 @@
         cookiejar.set_cookie(lp_cookie)
         browser.mech_browser.set_cookiejar(cookiejar)
 
-    # Remove the the check for robots.txt, since the one on
+    # Remove the check for robots.txt, since the one on
     # pastebin.ubuntu.com doesn't allow us to open the page. We're not
     # really a robot.
     browser.mech_browser.handlers = [

=== modified file 'utilities/top-tests.py'
--- utilities/top-tests.py	2012-01-01 03:10:25 +0000
+++ utilities/top-tests.py	2012-02-21 22:50:24 +0000
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 #
-# Copyright 2009 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2012 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """top-tests.py - Report about slowest tests in the test suite.
@@ -112,7 +112,7 @@
             raise ParseException('End of file before end of test run.')
 
     def handleStartTestRunner(self, line, ignored):
-        """Switch the the layer state."""
+        """Switch the layer state."""
 
     def handleLayerStart(self, line, match):
         """Create a new stats container for the layer."""