Colin Watson has proposed merging 
~cjwatson/launchpad:codespell-scripts-services-soyuz into launchpad:master.

Commit message:
Fix spelling errors in lp.{scripts,services,soyuz}

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/438102
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of 
~cjwatson/launchpad:codespell-scripts-services-soyuz into launchpad:master.
diff --git a/.codespell-ignore b/.codespell-ignore
index 5020e9f..8ff60e4 100644
--- a/.codespell-ignore
+++ b/.codespell-ignore
@@ -1,5 +1,9 @@
 buildd
 changee
 distroname
+falsy
+fpr
 iterm
 serieses
+tread
+troup
diff --git a/lib/lp/scripts/tests/test_garbo.py b/lib/lp/scripts/tests/test_garbo.py
index eae9163..1f0a51c 100644
--- a/lib/lp/scripts/tests/test_garbo.py
+++ b/lib/lp/scripts/tests/test_garbo.py
@@ -230,13 +230,12 @@ class TestBulkPruner(TestCase):
         # The loop thinks there is more stuff to do.
         self.assertFalse(pruner.isDone())
 
-        # Run the loop to completion, removing the remaining targetted
-        # rows.
+        # Run the loop to completion, removing the remaining targeted rows.
         while not pruner.isDone():
             pruner(1000000)
         transaction.abort()
 
-        # Confirm we have removed all targetted rows.
+        # Confirm we have removed all targeted rows.
         self.assertEqual(self.store.find(BulkFoo, BulkFoo.id < 5).count(), 0)
 
         # Confirm we have the expected number of remaining rows.
diff --git a/lib/lp/scripts/utilities/settingsauditor.py b/lib/lp/scripts/utilities/settingsauditor.py
index ba8a8af..efc63ef 100644
--- a/lib/lp/scripts/utilities/settingsauditor.py
+++ b/lib/lp/scripts/utilities/settingsauditor.py
@@ -1,7 +1,7 @@
 # Copyright 2011 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
-"""Contains the seting auditor used to clean up security.cfg."""
+"""Contains the setting auditor used to clean up security.cfg."""
 
 __all__ = [
     "SettingsAuditor",
diff --git a/lib/lp/services/database/decoratedresultset.py b/lib/lp/services/database/decoratedresultset.py
index e4d8c7f..02ba68a 100644
--- a/lib/lp/services/database/decoratedresultset.py
+++ b/lib/lp/services/database/decoratedresultset.py
@@ -82,7 +82,7 @@ class DecoratedResultSet:
         """Extract the plain and normal results from a sub-result.
 
         This gets slightly complicated when there are nested
-        DecoratedResultSets, as we have to propogate the plain result
+        DecoratedResultSets, as we have to propagate the plain result
         all the way up.
         """
         if not results:
@@ -101,7 +101,7 @@ class DecoratedResultSet:
 
     def decorate_single(self, result, row_index=None):
         """Decorate a result or return None if the result is itself None"""
-        # If we have a nested DecoratedResultSet we need to propogate
+        # If we have a nested DecoratedResultSet we need to propagate
         # the plain result.
         ([plain], [result]) = self._extract_plain_and_result([result])
 
diff --git a/lib/lp/services/database/tests/test_isolation_changes.py b/lib/lp/services/database/tests/test_isolation_changes.py
index cddd36c..18c9043 100644
--- a/lib/lp/services/database/tests/test_isolation_changes.py
+++ b/lib/lp/services/database/tests/test_isolation_changes.py
@@ -101,8 +101,8 @@ class TestIsolation(unittest.TestCase):
         self.assertEqual(self.getCurrentIsolation(), "serializable")
 
     def test_script(self):
-        # Ensure that things work in stand alone scripts too, in case out
-        # test infrustructure is faking something.
+        # Ensure that things work in stand alone scripts too, in case our
+        # test infrastructure is faking something.
         script = os.path.join(os.path.dirname(__file__), "script_isolation.py")
         cmd = [sys.executable, script]
         process = Popen(
diff --git a/lib/lp/services/database/tests/test_transaction_decorators.py b/lib/lp/services/database/tests/test_transaction_decorators.py
index feef7c4..ef79e98 100644
--- a/lib/lp/services/database/tests/test_transaction_decorators.py
+++ b/lib/lp/services/database/tests/test_transaction_decorators.py
@@ -62,7 +62,7 @@ class TestTransactionDecorators(unittest.TestCase):
 
         @write_transaction
         def no_op():
-            raise RuntimeError("an error occured")
+            raise RuntimeError("an error occurred")
 
         self.assertRaises(RuntimeError, no_op)
         self.assertIsNot(
diff --git a/lib/lp/services/features/flags.py b/lib/lp/services/features/flags.py
index 5eebeae..4b19185 100644
--- a/lib/lp/services/features/flags.py
+++ b/lib/lp/services/features/flags.py
@@ -125,7 +125,7 @@ flag_info = sorted(
             "space delimited",
             "Allows us to change the YUI version we run against, e.g. "
             "yui-3.4.",
-            "As speficied in versions.cfg",
+            "As specified in versions.cfg",
             "",
             "",
         ),
diff --git a/lib/lp/services/features/tests/test_flags.py b/lib/lp/services/features/tests/test_flags.py
index 04a919b..3d5c949 100644
--- a/lib/lp/services/features/tests/test_flags.py
+++ b/lib/lp/services/features/tests/test_flags.py
@@ -75,7 +75,7 @@ class TestFeatureFlags(TestCase):
         # If only one scope matches, its name is returned.
         control, call_log = self.makeControllerInScopes(["default"])
         self.assertEqual("default", control.currentScope("ui.icing"))
-        # If two scopes match, the one with the higer priority is returned.
+        # If two scopes match, the one with the higher priority is returned.
         control, call_log = self.makeControllerInScopes(
             ["default", "beta_user"]
         )
diff --git a/lib/lp/services/feeds/feed.py b/lib/lp/services/feeds/feed.py
index a15cecc..074f653 100644
--- a/lib/lp/services/feeds/feed.py
+++ b/lib/lp/services/feeds/feed.py
@@ -84,7 +84,7 @@ class FeedBase(LaunchpadView):
         """See `IFeed`."""
 
         # The self link is the URL for this particular feed.  For example:
-        # http://feeds.launchpad.net/ubuntu/announcments.atom
+        # http://feeds.launchpad.net/ubuntu/announcements.atom
         path = "%s.%s" % (self.feedname, self.format)
         return urlappend(canonical_url(self.context, rootsite="feeds"), path)
 
diff --git a/lib/lp/services/feeds/interfaces/feed.py b/lib/lp/services/feeds/interfaces/feed.py
index b22ad74..0067c00 100644
--- a/lib/lp/services/feeds/interfaces/feed.py
+++ b/lib/lp/services/feeds/interfaces/feed.py
@@ -93,7 +93,7 @@ class IFeed(Interface):
     # all time and domains.  That sounds harder than it really is.  To make
     # our IDs unique we follow the Tag ID standard proposed in RFC 4151 which
     # composes an ID using 'tag:' + domain + creation date + unique URL path.
-    # So an ID for a Jokosher announcment feed would look like:
+    # So an ID for a Jokosher announcement feed would look like:
     # tag:launchpad.net,2006-5-26:/jokosher/+announcements.
     feed_id = TextLine(
         title="ID for the feed.",
diff --git a/lib/lp/services/fields/tests/test_fields.py b/lib/lp/services/fields/tests/test_fields.py
index cbbaa9f..d0e550e 100644
--- a/lib/lp/services/fields/tests/test_fields.py
+++ b/lib/lp/services/fields/tests/test_fields.py
@@ -480,7 +480,7 @@ class TestWorkItemsText(TestCase):
         milestone_2 = "2012.03"
         title_1 = "Work item for a milestone"
         title_2 = "Work item for a later milestone"
-        title_3 = "A work item preceeded by a blank line"
+        title_3 = "A work item preceded by a blank line"
         work_items_text = (
             "Work items for %s:\n%s: POSTPONED\n\nWork items for %s:\n%s: "
             "TODO\n\n%s: TODO"
diff --git a/lib/lp/services/gpg/interfaces.py b/lib/lp/services/gpg/interfaces.py
index 48bae87..0302da0 100644
--- a/lib/lp/services/gpg/interfaces.py
+++ b/lib/lp/services/gpg/interfaces.py
@@ -314,10 +314,10 @@ class IGPGHandler(Interface):
         Currently only passwordless, signo-only 1024-bit RSA keys are
         generated.
 
-        :param name: unicode to be included in the key paramenters, 'comment'
-            and 'email' will be empty. It's content will be encoded to
+        :param name: unicode to be included in the key parameters, 'comment'
+            and 'email' will be empty. Its content will be encoded to
             'utf-8' internally.
-        :raise AssertionError: if the key generation is not exaclty what
+        :raise AssertionError: if the key generation is not exactly what
             we expect.
 
         :return: a `PymeKey` object for the just-generated secret key.
diff --git a/lib/lp/services/job/model/job.py b/lib/lp/services/job/model/job.py
index 80def4c..b0455fa 100644
--- a/lib/lp/services/job/model/job.py
+++ b/lib/lp/services/job/model/job.py
@@ -127,7 +127,7 @@ class Job(SQLBase):
     def createMultiple(self, store, num_jobs, requester=None):
         """Create multiple `Job`s at once.
 
-        :param store: `Store` to ceate the jobs in.
+        :param store: `Store` to create the jobs in.
         :param num_jobs: Number of `Job`s to create.
         :param request: The `IPerson` requesting the jobs.
         :return: An iterable of `Job.id` values for the new jobs.
diff --git a/lib/lp/services/librarianserver/db.py b/lib/lp/services/librarianserver/db.py
index 281de3b..f138c14 100644
--- a/lib/lp/services/librarianserver/db.py
+++ b/lib/lp/services/librarianserver/db.py
@@ -107,7 +107,7 @@ class Library:
                 )
             else:
                 # The URL-encoding of the path may have changed somewhere
-                # along the line, so reencode it canonically. LFA.filename
+                # along the line, so re-encode it canonically. LFA.filename
                 # can't contain slashes, so they're safe to leave unencoded.
                 # And urllib.parse.quote erroneously excludes ~ from its
                 # safe set, while RFC 3986 says it should be unescaped and
diff --git a/lib/lp/services/librarianserver/swift.py b/lib/lp/services/librarianserver/swift.py
index 4fb79e6..c7da839 100644
--- a/lib/lp/services/librarianserver/swift.py
+++ b/lib/lp/services/librarianserver/swift.py
@@ -307,7 +307,7 @@ def swift_location(lfc_id):
 
     # Don't change this unless you are also going to rebuild the Swift
     # storage, as objects will no longer be found in the expected
-    # container. This value and the container prefix are deliberatly
+    # container. This value and the container prefix are deliberately
     # hard coded to avoid cockups with values specified in config files.
     # While the suggested number is 'under a million', the rare large files
     # will take up multiple slots so we choose a more conservative number.
diff --git a/lib/lp/services/librarianserver/tests/test_gc.py b/lib/lp/services/librarianserver/tests/test_gc.py
index e45ad22..bbb3ed4 100644
--- a/lib/lp/services/librarianserver/tests/test_gc.py
+++ b/lib/lp/services/librarianserver/tests/test_gc.py
@@ -663,7 +663,7 @@ class TestDiskLibrarianGarbageCollection(
         # Directories with invalid names in the storage area are
         # ignored. They are reported as warnings though.
 
-        # Not a hexidecimal number.
+        # Not a hexadecimal number.
         noisedir1_path = os.path.join(config.librarian_server.root, "zz")
 
         # Too long
diff --git a/lib/lp/services/librarianserver/tests/test_web.py b/lib/lp/services/librarianserver/tests/test_web.py
index 1127213..8eda8fd 100644
--- a/lib/lp/services/librarianserver/tests/test_web.py
+++ b/lib/lp/services/librarianserver/tests/test_web.py
@@ -151,7 +151,7 @@ class LibrarianWebTestCase(LibrarianWebTestMixin, TestCaseWithFactory):
 
     def test_checkGzipEncoding(self):
         # Files that end in ".txt.gz" are treated special and are returned
-        # with an encoding of "gzip" or "x-gzip" to accomodate requirements of
+        # with an encoding of "gzip" or "x-gzip" to accommodate requirements of
         # displaying Ubuntu build logs in the browser.  The mimetype should be
         # "text/plain" for these files.
         client = LibrarianClient()
diff --git a/lib/lp/services/mail/commands.py b/lib/lp/services/mail/commands.py
index d0efaa1..e12c670 100644
--- a/lib/lp/services/mail/commands.py
+++ b/lib/lp/services/mail/commands.py
@@ -21,8 +21,8 @@ from lp.services.mail.interfaces import EmailProcessingError
 def normalize_arguments(string_args):
     """Normalizes the string arguments.
 
-    The string_args argument is simply the argument string whitespace
-    splitted. Sometimes arguments may be quoted, though, so that they can
+    The string_args argument is simply the argument string split on
+    whitespace. Sometimes arguments may be quoted, though, so that they can
     contain space characters. For example "This is a long string".
 
     This function loops through all the argument and joins the quoted strings
diff --git a/lib/lp/services/mail/interfaces.py b/lib/lp/services/mail/interfaces.py
index 65781c3..d2d8eee 100644
--- a/lib/lp/services/mail/interfaces.py
+++ b/lib/lp/services/mail/interfaces.py
@@ -85,7 +85,7 @@ class IMailHandler(Interface):
         The 'log' is the logger to be used.
 
         Return False if to_address does not exist/is bad.
-        Return True if the mesage was processed, successfully or
+        Return True if the message was processed, successfully or
         unsuccessfully.  This includes user or input errors.
         Programming errors should cause exceptions to be raised.
         """
diff --git a/lib/lp/services/mail/mbox.py b/lib/lp/services/mail/mbox.py
index 0a33fa8..4e05d35 100644
--- a/lib/lp/services/mail/mbox.py
+++ b/lib/lp/services/mail/mbox.py
@@ -42,7 +42,7 @@ class MboxMailer:
             self.filename,
         )
         msg = email.message_from_string(message)
-        # Mimic what MTAs such as Postfix do in transfering the envelope
+        # Mimic what MTAs such as Postfix do in transferring the envelope
         # sender into the Return-Path header.  It's okay if the message has
         # multiple such headers.
         msg["Return-Path"] = fromaddr
diff --git a/lib/lp/services/mail/sendmail.py b/lib/lp/services/mail/sendmail.py
index 16717f6..5b3cab3 100644
--- a/lib/lp/services/mail/sendmail.py
+++ b/lib/lp/services/mail/sendmail.py
@@ -354,7 +354,7 @@ def simple_sendmail_from_person(person, to_addrs, subject, body, headers=None):
 
 
 def get_addresses_from_header(email_header):
-    r"""Get the email addresses specificed in an email header.
+    r"""Get the email addresses specified in an email header.
 
     >>> get_addresses_from_header("o...@example.com")
     ['o...@example.com']
diff --git a/lib/lp/services/mail/signedmessage.py b/lib/lp/services/mail/signedmessage.py
index 97b7c65..ab97714 100644
--- a/lib/lp/services/mail/signedmessage.py
+++ b/lib/lp/services/mail/signedmessage.py
@@ -67,7 +67,7 @@ class SignedMessage(Message):
         signed_content = signature = None
         # Check for MIME/PGP signed message first.
         # See: RFC3156 - MIME Security with OpenPGP
-        # RFC3156 says that in order to be a complient signed message, there
+        # RFC3156 says that in order to be a compliant signed message, there
         # must be two and only two parts and that the second part must have
         # content_type 'application/pgp-signature'.
         if self.is_multipart():
diff --git a/lib/lp/services/mail/tests/helpers.py b/lib/lp/services/mail/tests/helpers.py
index 77df877..be55469 100644
--- a/lib/lp/services/mail/tests/helpers.py
+++ b/lib/lp/services/mail/tests/helpers.py
@@ -1,7 +1,7 @@
 # Copyright 2009 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
-"""Functions to accomodate testing of the email system."""
+"""Functions to accommodate testing of the email system."""
 
 __all__ = ["read_test_message"]
 
diff --git a/lib/lp/services/mime.py b/lib/lp/services/mime.py
index b264efc..8612721 100644
--- a/lib/lp/services/mime.py
+++ b/lib/lp/services/mime.py
@@ -27,7 +27,7 @@ def _patched_mimetypes_init(*args, **kwargs):
     # viewing .debdiff inline is the most common use-case.
     mimetypes.add_type("text/plain", ".debdiff")
 
-    # Add support for Launchpad's OWL decription of its RDF metadata.
+    # Add support for Launchpad's OWL description of its RDF metadata.
     mimetypes.add_type("application/rdf+xml", ".owl")
 
 
diff --git a/lib/lp/services/oauth/browser/__init__.py b/lib/lp/services/oauth/browser/__init__.py
index 3b30e33..475bf53 100644
--- a/lib/lp/services/oauth/browser/__init__.py
+++ b/lib/lp/services/oauth/browser/__init__.py
@@ -335,7 +335,7 @@ class OAuthAuthorizeTokenView(LaunchpadFormView, JSONTokenMixin):
             self.token is not None
             and self.token.consumer.is_integrated_desktop
         ):
-            # Nip problems in the bud by appling special rules about
+            # Nip problems in the bud by applying special rules about
             # what desktop integrations are allowed to do.
             if callback is not None:
                 # A desktop integration is not allowed to specify a callback.
diff --git a/lib/lp/services/openid/interfaces/openid.py b/lib/lp/services/openid/interfaces/openid.py
index 2e86ef6..2a30a22 100644
--- a/lib/lp/services/openid/interfaces/openid.py
+++ b/lib/lp/services/openid/interfaces/openid.py
@@ -1,7 +1,7 @@
 # Copyright 2009 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
-"""Miscelaneous OpenID-related interfaces."""
+"""Miscellaneous OpenID-related interfaces."""
 
 __all__ = [
     "IOpenIDPersistentIdentity",
diff --git a/lib/lp/services/profile/mem.py b/lib/lp/services/profile/mem.py
index 128f9b8..1e4118f 100644
--- a/lib/lp/services/profile/mem.py
+++ b/lib/lp/services/profile/mem.py
@@ -189,7 +189,8 @@ def readCounts(file, marker=None):
     """Reverse of printCounts().
 
     If marker is not None, this will return the counts as soon as a line
-    containging is encountered. Otherwise, it reads until the end of file.
+    consisting of it is encountered. Otherwise, it reads until the end of
+    file.
     """
     counts = []
     # We read one line at a time because we want the file pointer to
diff --git a/lib/lp/services/scripts/logger.py b/lib/lp/services/scripts/logger.py
index a899113..7801a83 100644
--- a/lib/lp/services/scripts/logger.py
+++ b/lib/lp/services/scripts/logger.py
@@ -329,7 +329,7 @@ def logger(options=None, name=None):
     """Return a logging instance with standard setup.
 
     options should be the options as returned by an option parser that
-    has been initilized with logger_options(parser)
+    has been initialized with logger_options(parser)
 
     >>> from optparse import OptionParser
     >>> parser = OptionParser()
@@ -416,7 +416,7 @@ def _logger(
     hdlr.setFormatter(formatter)
     root_logger.addHandler(hdlr)
 
-    # Add an optional aditional log file.
+    # Add an optional additional log file.
     if log_file is not None:
         handler = WatchedFileHandler(log_file, encoding="UTF8")
         handler.setFormatter(formatter)
diff --git a/lib/lp/services/statistics/tests/test_update_stats.py b/lib/lp/services/statistics/tests/test_update_stats.py
index 2f3c874..9d7652e 100644
--- a/lib/lp/services/statistics/tests/test_update_stats.py
+++ b/lib/lp/services/statistics/tests/test_update_stats.py
@@ -247,7 +247,7 @@ class UpdateTranslationStatsTest(unittest.TestCase):
         # another transaction and thus it won't see the changes done on this
         # test unless we commit.
         # XXX CarlosPerelloMarin 2007-01-22 bug=3989:
-        # Unecessary flush_database_updates required.
+        # Unnecessary flush_database_updates required.
         from lp.services.database.sqlbase import flush_database_updates
 
         flush_database_updates()
diff --git a/lib/lp/services/tests/test_osutils.py b/lib/lp/services/tests/test_osutils.py
index c576c21..c8e5267 100644
--- a/lib/lp/services/tests/test_osutils.py
+++ b/lib/lp/services/tests/test_osutils.py
@@ -39,7 +39,7 @@ class TestRemoveTree(TestCase):
         self.assertFalse(os.path.exists(nonexistent_tree))
 
     def test_raises_on_file(self):
-        # If remove_tree is pased a file, it raises an OSError.
+        # If remove_tree is passed a file, it raises an OSError.
         directory = tempfile.mkdtemp()
         filename = os.path.join(directory, "foo")
         fd = open(filename, "w")
diff --git a/lib/lp/services/twistedsupport/processmonitor.py b/lib/lp/services/twistedsupport/processmonitor.py
index 18d979a..60588a5 100644
--- a/lib/lp/services/twistedsupport/processmonitor.py
+++ b/lib/lp/services/twistedsupport/processmonitor.py
@@ -93,7 +93,7 @@ class ProcessMonitorProtocol(ProcessProtocolWithTwoStageKill):
     to report on what it is doing to some other entity: maybe it's a multistep
     task and you want to update a row in a database to reflect which step it
     is currently on.  This class provides a runNotification() method that
-    helps with this, taking a callable that performs this notfication, maybe
+    helps with this, taking a callable that performs this notification, maybe
     returning a deferred.
 
     Design decisions:
@@ -244,13 +244,13 @@ class ProcessMonitorProtocolWithTimeout(ProcessMonitorProtocol, TimeoutMixin):
 
 
 def run_process_with_timeout(args, timeout=5, clock=None):
-    """Run the given process with the specificed timeout.
+    """Run the given process with the specified timeout.
 
     :param args: tuple with the command-line arguments.
     :param timeout: command timeout in seconds, defaults to 5.
     :param clock: Passed to `ProcessMonitorProtocolWithTimeout.__init__`.
 
-    :return: a `Deferred` of the spawed process using
+    :return: a `Deferred` of the spawned process using
         `ProcessMonitorProtocolWithTimeout`
     """
     assert isinstance(args, tuple), "'args' must be a tuple."
diff --git a/lib/lp/services/utils.py b/lib/lp/services/utils.py
index 495be31..1e220e2 100644
--- a/lib/lp/services/utils.py
+++ b/lib/lp/services/utils.py
@@ -251,7 +251,7 @@ def seconds_since_epoch(dt):
 # See https://lists.ubuntu.com
 #     /mailman/private/launchpad-reviews/2007-June/006081.html
 
-# This verson of the re is more than 5x faster that the orginal
+# This version of the re is more than 5x faster that the original
 # version used in ftest/test_tales.testObfuscateEmail.
 re_email_address = re.compile(
     r"""
diff --git a/lib/lp/services/webapp/batching.py b/lib/lp/services/webapp/batching.py
index a7c0a69..4b88dbe 100644
--- a/lib/lp/services/webapp/batching.py
+++ b/lib/lp/services/webapp/batching.py
@@ -207,7 +207,7 @@ class DateTimeJSONEncoder(json.JSONEncoder):
 
 
 class ShadowedList:
-    """A (partial) sequence impementation which maintains two
+    """A (partial) sequence implementation which maintains two
     sequences: A publicly visible one and a "shadow" sequence.
 
     Background: StormRangeFactory.getSlice() returns a sequence
@@ -522,7 +522,7 @@ class StormRangeFactory:
         and PropertyColumn instances must not appear in the same
         expressions list.
 
-        memos are the memo values asociated with the columns in
+        memos are the memo values associated with the columns in
         expressions.
 
         Given a limits value of
diff --git a/lib/lp/services/webapp/errorlog.py b/lib/lp/services/webapp/errorlog.py
index 9d98412..2cd45c5 100644
--- a/lib/lp/services/webapp/errorlog.py
+++ b/lib/lp/services/webapp/errorlog.py
@@ -499,7 +499,7 @@ class ScriptRequest(ErrorReportRequest):
     :param URL: initial value of the URL instance variable.
 
     :ivar URL: pointer to a representation of the resource for which the error
-        occured. Defaults to None.
+        occurred. Defaults to None.
     :ivar oopsid: the oopsid set by ErrorReportingUtility.raising. Initially
         set to None.
     """
diff --git a/lib/lp/services/webapp/login.py b/lib/lp/services/webapp/login.py
index 0d06084..975c538 100644
--- a/lib/lp/services/webapp/login.py
+++ b/lib/lp/services/webapp/login.py
@@ -119,7 +119,7 @@ class BasicLoginPage(BrowserPage):
                 self.request.principal.id, self.request
             )
             return "Launchpad basic auth login page"
-        referer = self.request.getHeader("referer")  # Traditional w3c speling
+        referer = self.request.getHeader("referer")  # Traditional w3c spelling
         if referer and self.isSameHost(referer):
             self.request.response.redirect(referer)
         else:
@@ -554,7 +554,7 @@ def expireSessionCookie(
 
 def allowUnauthenticatedSession(request, duration=timedelta(minutes=10)):
     # As a rule, we do not want to send a cookie to an unauthenticated user,
-    # because it breaks cacheing; and we do not want to create a session for
+    # because it breaks caching; and we do not want to create a session for
     # an unauthenticated user, because it unnecessarily consumes valuable
     # database resources. We have an assertion to ensure this. However,
     # sometimes we want to break the rules. To do this, first we set the
diff --git a/lib/lp/services/webapp/notifications.py b/lib/lp/services/webapp/notifications.py
index bdf75fc..399da1a 100644
--- a/lib/lp/services/webapp/notifications.py
+++ b/lib/lp/services/webapp/notifications.py
@@ -3,8 +3,8 @@
 
 """Browser notification messages
 
-Provides an API for displaying arbitrary  notifications to users after
-an action has been performed, independant of what page the user
+Provides an API for displaying arbitrary notifications to users after
+an action has been performed, independent of what page the user
 ends up on after the action is done.
 
 Note that the current implementation is deliberately broken - the only way
@@ -47,9 +47,9 @@ class NotificationRequest:
 
 @implementer(INotificationResponse)
 class NotificationResponse:
-    """The NotificationResponse collects notifications to propogate to the
+    """The NotificationResponse collects notifications to propagate to the
     next page loaded. Notifications are stored in the session, with a key
-    propogated via the URL to load the correct messages in the next loaded
+    propagated via the URL to load the correct messages in the next loaded
     page.
 
     It needs to be mixed in with an IHTTPApplicationResponse so its redirect
@@ -77,7 +77,7 @@ class NotificationResponse:
         # Do some getattr sniffing so that the doctests in this module
         # still pass.  Doing this rather than improving the Mock classes
         # that the mixins are used with, as we'll be moving this hack to
-        # the sesions machinery in due course.
+        # the sessions machinery in due course.
         if not (
             getattr(request, "cookies", None)
             and getattr(response, "getCookie", None)
@@ -89,7 +89,7 @@ class NotificationResponse:
             try:
                 # Use notifications stored in the session.
                 self._notifications = session["notifications"]
-                # Remove them from the session so they don't propogate to
+                # Remove them from the session so they don't propagate to
                 # subsequent pages, unless redirect() is called which will
                 # push the notifications back into the session.
                 del session["notifications"]
@@ -203,7 +203,7 @@ class NotificationTestView1(LaunchpadView):
 
 
 class NotificationTestView2(NotificationTestView1):
-    """Redirect to another page, propogating some notification messages.
+    """Redirect to another page, propagating some notification messages.
 
     This is installed into the real instance, rather than added on the fly
     in the test suite, as this page is useful for adjusting the visual style
diff --git a/lib/lp/services/webapp/servers.py b/lib/lp/services/webapp/servers.py
index a1038b8..602f0c5 100644
--- a/lib/lp/services/webapp/servers.py
+++ b/lib/lp/services/webapp/servers.py
@@ -1539,7 +1539,7 @@ class ProtocolErrorPublication(LaunchpadBrowserPublication):
         self.headers = headers
 
     def callObject(self, request, object):
-        """Raise an approprate exception for this protocol error."""
+        """Raise an appropriate exception for this protocol error."""
         if self.status == 404:
             raise NotFound(self, "", request)
         else:
diff --git a/lib/lp/services/webapp/tests/test_batching.py b/lib/lp/services/webapp/tests/test_batching.py
index bc461db..a9268e0 100644
--- a/lib/lp/services/webapp/tests/test_batching.py
+++ b/lib/lp/services/webapp/tests/test_batching.py
@@ -72,7 +72,7 @@ class TestStormRangeFactory(TestCaseWithFactory):
 
     def test_getOrderValuesFor__one_sort_column(self):
         # StormRangeFactory.getOrderValuesFor() returns the values
-        # of the fields used in order_by expresssions for a given
+        # of the fields used in order_by expressions for a given
         # result row.
         resultset = self.makeStormResultSet()
         resultset.order_by(Person.id)
@@ -691,7 +691,7 @@ class TestStormRangeFactory(TestCaseWithFactory):
         return [str(elem) for elem in sequence]
 
     def test_ShadowedList__init(self):
-        # ShadowedList instances need two lists as constructor parametrs.
+        # ShadowedList instances need two lists as constructor parameters.
         list1 = list(range(3))
         list2 = self.makeStringSequence(list1)
         shadowed_list = ShadowedList(list1, list2)
@@ -710,7 +710,7 @@ class TestStormRangeFactory(TestCaseWithFactory):
         )
 
     def test_ShadowedList__len(self):
-        # The length of a ShadowedList ist the same as the list of
+        # The length of a ShadowedList is the same as the list of
         # the sequences it stores.
         list1 = list(range(3))
         list2 = self.makeStringSequence(list1)
diff --git a/lib/lp/services/webapp/tests/test_dbpolicy.py b/lib/lp/services/webapp/tests/test_dbpolicy.py
index aa08442..a88d351 100644
--- a/lib/lp/services/webapp/tests/test_dbpolicy.py
+++ b/lib/lp/services/webapp/tests/test_dbpolicy.py
@@ -430,11 +430,11 @@ class TestFastDowntimeRollout(TestCase):
         self.assertTrue(self.store_is_working(store))
 
         # After schema updates have been made to the primary, it is
-        # reenabled.
+        # re-enabled.
         self.pgbouncer_cur.execute("RESUME %s" % self.primary_dbname)
         self.pgbouncer_cur.execute("ENABLE %s" % self.primary_dbname)
 
-        # And the standbys taken down, and replication reenabled so the
+        # And the standbys taken down, and replication re-enabled so the
         # schema updates can replicate.
         self.pgbouncer_cur.execute("DISABLE %s" % self.standby_dbname)
         self.pgbouncer_cur.execute("KILL %s" % self.standby_dbname)
@@ -464,12 +464,12 @@ class TestFastDowntimeRollout(TestCase):
         self.assertTrue(self.store_is_working(store))
 
         # The original Store is busted though. You cannot reuse Stores
-        # across transaction bounderies because you might end up using
+        # across transaction boundaries because you might end up using
         # the wrong Store.
         self.assertFalse(self.store_is_working(original_store))
         transaction.abort()
 
-        # Once replication has caught up, the standby is reenabled.
+        # Once replication has caught up, the standby is re-enabled.
         self.pgbouncer_cur.execute("RESUME %s" % self.standby_dbname)
         self.pgbouncer_cur.execute("ENABLE %s" % self.standby_dbname)
 
@@ -508,11 +508,11 @@ class TestFastDowntimeRollout(TestCase):
         transaction.abort()
 
         # After schema updates have been made to the primary, it is
-        # reenabled.
+        # re-enabled.
         self.pgbouncer_cur.execute("RESUME %s" % self.primary_dbname)
         self.pgbouncer_cur.execute("ENABLE %s" % self.primary_dbname)
 
-        # And the standbys taken down, and replication reenabled so the
+        # And the standbys taken down, and replication re-enabled so the
         # schema updates can replicate.
         self.pgbouncer_cur.execute("DISABLE %s" % self.standby_dbname)
         self.pgbouncer_cur.execute("KILL %s" % self.standby_dbname)
@@ -538,7 +538,7 @@ class TestFastDowntimeRollout(TestCase):
         self.assertTrue(self.store_is_primary(standby_store))
         self.assertTrue(self.store_is_working(standby_store))
 
-        # Once replication has caught up, the standby is reenabled.
+        # Once replication has caught up, the standby is re-enabled.
         self.pgbouncer_cur.execute("RESUME %s" % self.standby_dbname)
         self.pgbouncer_cur.execute("ENABLE %s" % self.standby_dbname)
 
diff --git a/lib/lp/services/webapp/tests/test_login.py b/lib/lp/services/webapp/tests/test_login.py
index 3647d12..270f0bb 100644
--- a/lib/lp/services/webapp/tests/test_login.py
+++ b/lib/lp/services/webapp/tests/test_login.py
@@ -933,7 +933,7 @@ class TestOpenIDLogin(TestCaseWithFactory):
     def test_pape_extension_added_with_reauth_query(self):
         # We can signal that a request should be reauthenticated via
         # a reauth URL parameter, which should add PAPE extension's
-        # max_auth_age paramter.
+        # max_auth_age parameter.
         request = LaunchpadTestRequest(QUERY_STRING="reauth=1")
         request.processInputs()
         # This is a hack to make the request.getURL(1) call issued by the view
diff --git a/lib/lp/services/webapp/vocabulary.py b/lib/lp/services/webapp/vocabulary.py
index 7357739..057ecbf 100644
--- a/lib/lp/services/webapp/vocabulary.py
+++ b/lib/lp/services/webapp/vocabulary.py
@@ -414,7 +414,7 @@ class NamedSQLObjectVocabulary(SQLObjectVocabularyBase):
         return self.toTerm(objs[0])
 
     def search(self, query, vocab_filter=None):
-        """Return terms where query is a subtring of the name."""
+        """Return terms where query is a substring of the name."""
         if query:
             clause = CONTAINSSTRING(self._table.q.name, six.ensure_text(query))
             if self._filter:
diff --git a/lib/lp/soyuz/adapters/copypolicy.py b/lib/lp/soyuz/adapters/copypolicy.py
index 0e78ced..1f78f08 100644
--- a/lib/lp/soyuz/adapters/copypolicy.py
+++ b/lib/lp/soyuz/adapters/copypolicy.py
@@ -74,7 +74,7 @@ class InsecureCopyPolicy(BasicCopyPolicy):
 class MassSyncCopyPolicy(BasicCopyPolicy):
     """A policy for mass 'sync' copies.
 
-    Exists soley so the classic job runner processes autosyncs last.
+    Exists solely so the classic job runner processes autosyncs last.
     """
 
     enum_value = PackageCopyPolicy.MASS_SYNC
diff --git a/lib/lp/soyuz/adapters/packagelocation.py b/lib/lp/soyuz/adapters/packagelocation.py
index bfc1493..3252484 100644
--- a/lib/lp/soyuz/adapters/packagelocation.py
+++ b/lib/lp/soyuz/adapters/packagelocation.py
@@ -152,7 +152,7 @@ def build_package_location(
             )
     elif purpose == ArchivePurpose.PARTNER:
         assert person_name is None and archive_name is None, (
-            "person_name and archive_name shoudn't be passed for "
+            "person_name and archive_name shouldn't be passed for "
             "PARTNER archive."
         )
         archive = getUtility(IArchiveSet).getByDistroPurpose(
@@ -177,7 +177,7 @@ def build_package_location(
             )
     else:
         assert person_name is None and archive_name is None, (
-            "person_name and archive_name shoudn't be passed when purpose "
+            "person_name and archive_name shouldn't be passed when purpose "
             "is omitted."
         )
         archive = distribution.main_archive
diff --git a/lib/lp/soyuz/browser/build.py b/lib/lp/soyuz/browser/build.py
index 81af820..91e1e4e 100644
--- a/lib/lp/soyuz/browser/build.py
+++ b/lib/lp/soyuz/browser/build.py
@@ -466,7 +466,7 @@ class BuildRecordsView(LaunchpadView):
 
     page_title = "Builds"
 
-    # Currenly most build records views are interested in binaries
+    # Currently most build records views are interested in binaries
     # only, but subclasses can set this if desired.
     binary_only = True
 
diff --git a/lib/lp/soyuz/browser/tests/test_queue.py b/lib/lp/soyuz/browser/tests/test_queue.py
index 4fa1799..1234756 100644
--- a/lib/lp/soyuz/browser/tests/test_queue.py
+++ b/lib/lp/soyuz/browser/tests/test_queue.py
@@ -301,7 +301,7 @@ class TestAcceptRejectQueueUploads(TestCaseWithFactory):
             self.assertStatus(package_upload_id, PackageUploadStatus.DONE)
 
     def test_proposed_admin_cannot_accept_release_upload(self):
-        # A person with queue admin access for proposed cannot necessarly
+        # A person with queue admin access for proposed cannot necessarily
         # accept uploads to the release pocket.
         login_person(self.proposed_queue_admin)
         self.assertFalse(
diff --git a/lib/lp/soyuz/enums.py b/lib/lp/soyuz/enums.py
index b3b63c9..bb48ccd 100644
--- a/lib/lp/soyuz/enums.py
+++ b/lib/lp/soyuz/enums.py
@@ -809,7 +809,7 @@ class PackageUploadStatus(DBEnumeratedType):
 
         An upload which reaches this state has, for some reason or another
         not passed the requirements (technical or human) for entry into the
-        DistroSeries it was targetting. As for the 'done' state, this state
+        DistroSeries it was targeting. As for the 'done' state, this state
         is present to allow logging tools to record the rejection and then
         clean up any subsequently unnecessary records.""",
     )
diff --git a/lib/lp/soyuz/interfaces/archive.py b/lib/lp/soyuz/interfaces/archive.py
index 1997cf6..e59bd64 100644
--- a/lib/lp/soyuz/interfaces/archive.py
+++ b/lib/lp/soyuz/interfaces/archive.py
@@ -1107,7 +1107,7 @@ class IArchiveView(IHasBuildRecords):
 
         Updates 'sources_cached' and 'binaries_cached' counters.
 
-        Also include owner 'name' and 'displayname' to avoid inpecting the
+        Also include owner 'name' and 'displayname' to avoid inspecting the
         Person table indexes while searching.
         """
 
diff --git a/lib/lp/soyuz/interfaces/archivesubscriber.py b/lib/lp/soyuz/interfaces/archivesubscriber.py
index f509309..50d1f09 100644
--- a/lib/lp/soyuz/interfaces/archivesubscriber.py
+++ b/lib/lp/soyuz/interfaces/archivesubscriber.py
@@ -168,7 +168,7 @@ class IArchiveSubscriberSetView(Interface):
         """
 
     def getBySubscriberWithActiveToken(subscriber, archive=None):
-        """Return all the subscriptions for a person with the correspending
+        """Return all the subscriptions for a person with the corresponding
         token for each subscription.
 
         :param subscriber: An `IPerson` for whom to return all
diff --git a/lib/lp/soyuz/interfaces/binarypackagebuild.py b/lib/lp/soyuz/interfaces/binarypackagebuild.py
index f294889..18bc50f 100644
--- a/lib/lp/soyuz/interfaces/binarypackagebuild.py
+++ b/lib/lp/soyuz/interfaces/binarypackagebuild.py
@@ -351,7 +351,7 @@ class BuildSetStatus(EnumeratedType):
     # Until access to the name, title and description of exported types
     # is available through the API, set the title of these statuses
     # to match the name. This enables the result of API calls (which is
-    # currently the title) to be used programatically (for example, as a
+    # currently the title) to be used programmatically (for example, as a
     # css class name).
     NEEDSBUILD = Item(
         title="NEEDSBUILD",  # "Need building",
diff --git a/lib/lp/soyuz/interfaces/packagediff.py b/lib/lp/soyuz/interfaces/packagediff.py
index 825d835..88a90fd 100644
--- a/lib/lp/soyuz/interfaces/packagediff.py
+++ b/lib/lp/soyuz/interfaces/packagediff.py
@@ -89,7 +89,7 @@ class IPackageDiffSet(Interface):
         """Retrieve a `PackageDiff` for the given id."""
 
     def getDiffsToReleases(sprs, preload_for_display=False):
-        """Return all diffs that targetting a set of source package releases.
+        """Return all diffs that targeting a set of source package releases.
 
         :param sprs: a sequence of `SourcePackageRelease` objects.
         :param preload_for_display: True if all the attributes needed for
@@ -101,7 +101,7 @@ class IPackageDiffSet(Interface):
         """
 
     def getDiffBetweenReleases(from_spr, to_spr):
-        """Return the diff that is targetted to the two SPRs.
+        """Return the diff that is targeted to the two SPRs.
 
         :param from_spr: a `SourcePackageRelease` object.
         :param to_spr:  a `SourcePackageRelease` object.
diff --git a/lib/lp/soyuz/interfaces/packagediffjob.py b/lib/lp/soyuz/interfaces/packagediffjob.py
index 8962db6..ef54775 100644
--- a/lib/lp/soyuz/interfaces/packagediffjob.py
+++ b/lib/lp/soyuz/interfaces/packagediffjob.py
@@ -10,7 +10,7 @@ from lp.services.job.interfaces.job import IJobSource, IRunnableJob
 
 
 class IPackageDiffJobSource(IJobSource):
-    """An interface for acquring IPackageDiffJobs."""
+    """An interface for acquiring IPackageDiffJobs."""
 
     def create(packagediff):
         """Create a new diff generation job for a package diff."""
diff --git a/lib/lp/soyuz/interfaces/queue.py b/lib/lp/soyuz/interfaces/queue.py
index 41d20af..a30538c 100644
--- a/lib/lp/soyuz/interfaces/queue.py
+++ b/lib/lp/soyuz/interfaces/queue.py
@@ -660,7 +660,7 @@ class IPackageUploadBuild(Interface):
         Returns a list of the secure binary package publishing history
         objects in case it is of use to the caller. This may include records
         published into other distroarchseriess if this build contained arch
-        independant packages.
+        independent packages.
 
         If a logger is provided, information pertaining to the publishing
         process will be logged to it.
diff --git a/lib/lp/soyuz/model/binarypackagebuild.py b/lib/lp/soyuz/model/binarypackagebuild.py
index 5471460..4a7a76d 100644
--- a/lib/lp/soyuz/model/binarypackagebuild.py
+++ b/lib/lp/soyuz/model/binarypackagebuild.py
@@ -558,7 +558,7 @@ class BinaryPackageBuild(PackageBuildMixin, SQLBase):
         name, version, relation = self._parseDependencyToken(token)
 
         # There may be several published versions in the available
-        # archives and pockets. If any one of them satisifies our
+        # archives and pockets. If any one of them satisfies our
         # constraints, the dependency is satisfied.
         dep_candidates = self.archive.findDepCandidates(
             self.distro_arch_series,
@@ -1060,7 +1060,7 @@ class BinaryPackageBuildSet(SpecificBuildFarmJobSourceMixin):
         ]
 
         # XXX cprov 2006-09-25: It would be nice if we could encapsulate
-        # the chunk of code below (which deals with the optional paramenters)
+        # the chunk of code below (which deals with the optional parameters)
         # and share it with ISourcePackage.getBuildRecords()
 
         # exclude gina-generated and security (dak-made) builds
@@ -1440,7 +1440,7 @@ class BinaryPackageBuildSet(SpecificBuildFarmJobSourceMixin):
         # this series already has it set.
         need_arch_indep = not any(bpb.arch_indep for bpb in relevant_builds)
 
-        # Find the architectures for which the source chould end up with
+        # Find the architectures for which the source could end up with
         # new binaries. Exclude architectures not allowed in this
         # archive and architectures that have already built. Order by
         # Processor.id so determine_architectures_to_build is
diff --git a/lib/lp/soyuz/model/distroseriespackagecache.py b/lib/lp/soyuz/model/distroseriespackagecache.py
index bc7a9bc..bedc2fd 100644
--- a/lib/lp/soyuz/model/distroseriespackagecache.py
+++ b/lib/lp/soyuz/model/distroseriespackagecache.py
@@ -137,7 +137,7 @@ class DistroSeriesPackageCache(StormBase):
 
         'log' is required, it should be a logger object able to print
         DEBUG level messages.
-        'ztm' is the current trasaction manager used for partial commits
+        'ztm' is the current transaction manager used for partial commits
         (in full batches of 100 elements)
         """
         # get the set of published binarypackagereleases
diff --git a/lib/lp/soyuz/model/packageset.py b/lib/lp/soyuz/model/packageset.py
index 6091f74..20c8408 100644
--- a/lib/lp/soyuz/model/packageset.py
+++ b/lib/lp/soyuz/model/packageset.py
@@ -97,7 +97,8 @@ class Packageset(StormBase):
     def _addSourcePackageNames(self, source_names, store):
         """Add the given source package names to the package set.
 
-        Souce package names already *directly* associated are ignored."""
+        Source package names already *directly* associated are ignored.
+        """
         query = """
             INSERT INTO packagesetsources(packageset, sourcepackagename) (
                 SELECT ? AS packageset, spn.id AS sourcepackagename
diff --git a/lib/lp/soyuz/model/sourcepackagerelease.py b/lib/lp/soyuz/model/sourcepackagerelease.py
index 9cb4baf..0edfc3d 100644
--- a/lib/lp/soyuz/model/sourcepackagerelease.py
+++ b/lib/lp/soyuz/model/sourcepackagerelease.py
@@ -164,7 +164,7 @@ class SourcePackageRelease(SQLBase):
         if "copyright" in kwargs:
             copyright = kwargs.pop("copyright")
         super().__init__(*args, **kwargs)
-        # PostgresSQL text columns can't contain null
+        # PostgreSQL text columns can't contain null
         # characters, so remove them as this is only
         # used for display
         if copyright is not None:
diff --git a/lib/lp/soyuz/scripts/gina/archive.py b/lib/lp/soyuz/scripts/gina/archive.py
index ad06de5..b33e6bb 100644
--- a/lib/lp/soyuz/scripts/gina/archive.py
+++ b/lib/lp/soyuz/scripts/gina/archive.py
@@ -52,7 +52,7 @@ class ArchiveFilesystemInfo:
         self, root, distroseries, component, arch=None, source_only=False
     ):
 
-        # Holds the distribution informations
+        # Holds the distribution information
         self.distroseries = distroseries
         self.component = component
         self.arch = arch
diff --git a/lib/lp/soyuz/scripts/gina/packages.py b/lib/lp/soyuz/scripts/gina/packages.py
index cc918d8..de29c9d 100644
--- a/lib/lp/soyuz/scripts/gina/packages.py
+++ b/lib/lp/soyuz/scripts/gina/packages.py
@@ -3,7 +3,7 @@
 
 """Package information classes.
 
-This classes are responsable for fetch and hold the information inside
+These classes are responsible for fetching and holding the information inside
 the sources and binarypackages.
 """
 
diff --git a/lib/lp/soyuz/scripts/initialize_distroseries.py b/lib/lp/soyuz/scripts/initialize_distroseries.py
index 5ffe47d..8e76922 100644
--- a/lib/lp/soyuz/scripts/initialize_distroseries.py
+++ b/lib/lp/soyuz/scripts/initialize_distroseries.py
@@ -76,7 +76,7 @@ class InitializeDistroSeries:
         - first_derivation = False.
 
     Preconditions:
-      The distroseries must exist, and be completly unused, with no source
+      The distroseries must exist, and be completely unused, with no source
       or binary packages existing, as well as no distroarchseries set up.
       Section and component selections must be empty. It must not have any
       parent series.
diff --git a/lib/lp/soyuz/scripts/packagecopier.py b/lib/lp/soyuz/scripts/packagecopier.py
index 372c52f..8b62816 100644
--- a/lib/lp/soyuz/scripts/packagecopier.py
+++ b/lib/lp/soyuz/scripts/packagecopier.py
@@ -237,7 +237,7 @@ def check_copy_permissions(
 
 
 class CopyChecker:
-    """Check copy candiates.
+    """Check copy candidates.
 
     Allows the checker function to identify conflicting copy candidates
     within the copying batch.
@@ -588,7 +588,7 @@ def do_copy(
     raises `CannotCopy` if one or more copies could not be performed.
 
     When `CannotCopy` is raised, call sites are responsible for rolling
-    back the transaction.  Otherwise, performed copies will be commited.
+    back the transaction.  Otherwise, performed copies will be committed.
 
     Wrapper for `do_direct_copy`.
 
diff --git a/lib/lp/soyuz/scripts/tests/test_custom_uploads_copier.py b/lib/lp/soyuz/scripts/tests/test_custom_uploads_copier.py
index af1b325..7d98ed4 100644
--- a/lib/lp/soyuz/scripts/tests/test_custom_uploads_copier.py
+++ b/lib/lp/soyuz/scripts/tests/test_custom_uploads_copier.py
@@ -341,7 +341,7 @@ class TestCustomUploadsCopier(TestCaseWithFactory, CommonTestHelpers):
         )
 
     def test_isObsolete_returns_False_if_target_has_older_equivalent(self):
-        # isObsolete returns False if the target has an equivlalent of
+        # isObsolete returns False if the target has an equivalent of
         # the upload in question, but it's older than the version the
         # source series has.
         source_series = self.factory.makeDistroSeries()
diff --git a/lib/lp/soyuz/scripts/tests/test_initialize_distroseries.py b/lib/lp/soyuz/scripts/tests/test_initialize_distroseries.py
index 138c8f0..8c68fc0 100644
--- a/lib/lp/soyuz/scripts/tests/test_initialize_distroseries.py
+++ b/lib/lp/soyuz/scripts/tests/test_initialize_distroseries.py
@@ -186,7 +186,7 @@ class InitializationHelperTestCase(TestCaseWithFactory):
         self, distroseries, package_name, packageset_name, create_build=False
     ):
         # Helper method to create a package in a packageset in the given
-        # distroseries, optionaly creating the missing build for this source
+        # distroseries, optionally creating the missing build for this source
         # package.
         spn = self.factory.getOrMakeSourcePackageName(package_name)
         sourcepackagerelease = self.factory.makeSourcePackageRelease(
@@ -413,10 +413,10 @@ class TestInitializeDistroSeries(InitializationHelperTestCase):
         # Pending builds in a parent for source packages included in the
         # packagesets selected for the copy will make the queue check fail.
         parent, parent_das = self.setupParent()
-        p1, packageset1, unsed = self.createPackageInPackageset(
+        p1, packageset1, _ = self.createPackageInPackageset(
             parent, "p1", "packageset1", True
         )
-        p2, packageset2, unsed = self.createPackageInPackageset(
+        p2, packageset2, _ = self.createPackageInPackageset(
             parent, "p2", "packageset2", False
         )
 
@@ -1960,7 +1960,7 @@ class TestInitializeDistroSeries(InitializationHelperTestCase):
         child = self.setUpSeriesWithPreviousSeries(
             previous_parents=[prev_parent1, prev_parent2]
         )
-        # The same parents can be explicitely set.
+        # The same parents can be explicitly set.
         ids = InitializeDistroSeries(child, [prev_parent2.id, prev_parent1.id])
 
         self.assertTrue(ids._has_same_parents_as_previous_series())
diff --git a/lib/lp/soyuz/tests/test_archive.py b/lib/lp/soyuz/tests/test_archive.py
index 5851aad..df87bdb 100644
--- a/lib/lp/soyuz/tests/test_archive.py
+++ b/lib/lp/soyuz/tests/test_archive.py
@@ -539,7 +539,7 @@ class TestArchiveEnableDisable(TestCaseWithFactory):
         self.assertRaises(AssertionError, removeSecurityProxy(archive).enable)
 
     def test_disableArchive(self):
-        # Disabling an archive should set all the Archive's pending bulds to
+        # Disabling an archive should set all the Archive's pending builds to
         # SUSPENDED.
         archive = self.factory.makeArchive(enabled=True)
         build = self.factory.makeBinaryPackageBuild(
diff --git a/lib/lp/soyuz/tests/test_binaryandsourcepackagename.py b/lib/lp/soyuz/tests/test_binaryandsourcepackagename.py
index c403d54..017485e 100644
--- a/lib/lp/soyuz/tests/test_binaryandsourcepackagename.py
+++ b/lib/lp/soyuz/tests/test_binaryandsourcepackagename.py
@@ -35,7 +35,7 @@ class TestBinaryAndSourcePackageNameVocabulary(TestCaseWithFactory):
         self.assertEqual(self.bspn, term.value)
 
     def test_getTermByToken(self):
-        # Tokens are case insentive because the name is lowercase.
+        # Tokens are case insensitive because the name is lowercase.
         term = self.vocabulary.getTermByToken("BedBUGs")
         self.assertEqual(self.bspn, term.value)
 
diff --git a/lib/lp/soyuz/tests/test_binarypackagebuild.py b/lib/lp/soyuz/tests/test_binarypackagebuild.py
index ef513d3..9a9cfc3 100644
--- a/lib/lp/soyuz/tests/test_binarypackagebuild.py
+++ b/lib/lp/soyuz/tests/test_binarypackagebuild.py
@@ -87,7 +87,7 @@ class TestBinaryPackageBuild(TestCaseWithFactory):
         self.assertEqual(bq, self.build.buildqueue_record)
 
     def test_estimateDuration(self):
-        # Without previous builds, a negligable package size estimate is
+        # Without previous builds, a negligible package size estimate is
         # 300s.
         self.assertEqual(300, self.build.estimateDuration().seconds)
 
@@ -320,7 +320,7 @@ class TestBuildUpdateDependencies(TestCaseWithFactory):
         # dependencies. A build will not be retried unless the candidate
         # complies with the version restriction.
         # In this case, dep-bin 666 is available. >> 666 isn't
-        # satisified, but >= 666 is.
+        # satisfied, but >= 666 is.
         depwait_build = self._setupSimpleDepwaitContext()
         self.layer.txn.commit()
 
diff --git a/lib/lp/soyuz/tests/test_distroseriesbinarypackage.py b/lib/lp/soyuz/tests/test_distroseriesbinarypackage.py
index fa0af04..6b76c6f 100644
--- a/lib/lp/soyuz/tests/test_distroseriesbinarypackage.py
+++ b/lib/lp/soyuz/tests/test_distroseriesbinarypackage.py
@@ -79,7 +79,7 @@ class TestDistroSeriesBinaryPackage(TestCaseWithFactory):
     def test_none_cache_passed_at_init_counts_as_cached(self):
         # If the value None is passed as the constructor parameter
         # "cache", it is considered as a valid value.
-        # Accesing the property DistroSeriesBinaryPackage.cache
+        # Accessing the property DistroSeriesBinaryPackage.cache
         # later does not lead to the execution of an SQL query to
         # retrieve a DistroSeriesPackageCache record.
         binary_package = DistroSeriesBinaryPackage(
diff --git a/lib/lp/soyuz/tests/test_packagecloner.py b/lib/lp/soyuz/tests/test_packagecloner.py
index b6620d6..5f4c6e1 100644
--- a/lib/lp/soyuz/tests/test_packagecloner.py
+++ b/lib/lp/soyuz/tests/test_packagecloner.py
@@ -457,7 +457,7 @@ class PackageClonerTests(TestCaseWithFactory):
         self.checkBuilds(copy_archive, [package_info])
 
     def testCreatesMultipleBuilds(self):
-        """Test that multiple processors result in mutiple builds."""
+        """Test that multiple processors result in multiple builds."""
         package_info = PackageInfo(
             "bzr", "2.1", status=PackagePublishingStatus.PUBLISHED
         )
_______________________________________________
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to     : launchpad-reviewers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help   : https://help.launchpad.net/ListHelp

Reply via email to