← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] ~cjwatson/launchpad:codespell-3 into launchpad:master

 

Colin Watson has proposed merging ~cjwatson/launchpad:codespell-3 into launchpad:master.

Commit message:
Fix spelling errors in lp.{archivepublisher,archiveuploader,blueprints}

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/427124
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad:codespell-3 into launchpad:master.
diff --git a/lib/lp/archivepublisher/ddtp_tarball.py b/lib/lp/archivepublisher/ddtp_tarball.py
index 3412ed7..eea7678 100644
--- a/lib/lp/archivepublisher/ddtp_tarball.py
+++ b/lib/lp/archivepublisher/ddtp_tarball.py
@@ -3,7 +3,7 @@
 
 """The processing of translated packages descriptions (ddtp) tarballs.
 
-DDTP (Debian Descripton Translation Project) aims to offer the description
+DDTP (Debian Description Translation Project) aims to offer the description
 of all supported packages translated in several languages.
 
 DDTP-TARBALL is a custom format upload supported by Launchpad infrastructure
diff --git a/lib/lp/archivepublisher/diskpool.py b/lib/lp/archivepublisher/diskpool.py
index 6404ad9..7c01d46 100644
--- a/lib/lp/archivepublisher/diskpool.py
+++ b/lib/lp/archivepublisher/diskpool.py
@@ -117,7 +117,7 @@ class DiskPoolEntry:
     the disk for this file.
 
     'tempath' must be in the same filesystem as 'rootpath', it will be
-    used to store the instalation candidate while it is being downloaded
+    used to store the installation candidate while it is being downloaded
     from the Librarian.
 
     Remaining files in the 'temppath' indicated installation failures and
@@ -360,7 +360,7 @@ class DiskPoolEntry:
 
         # XXX cprov 2006-06-12: it may cause problems to the database, since
         # ZTM isn't handled properly in scripts/publish-distro.py. Things are
-        # commited mid-procedure & bare exception is caught.
+        # committed mid-procedure & bare exception is caught.
 
         # Update the data structures.
         self.symlink_components.add(self.file_component)
diff --git a/lib/lp/archivepublisher/indices.py b/lib/lp/archivepublisher/indices.py
index 42b7364..05fa6ec 100644
--- a/lib/lp/archivepublisher/indices.py
+++ b/lib/lp/archivepublisher/indices.py
@@ -85,7 +85,7 @@ def format_description(summary, description):
     # description or the summary only if include_long_descriptions
     # is false, as:
     #
-    # Descrition: <SUMMARY>\n
+    # Description: <SUMMARY>\n
     #  <DESCRIPTION L1>
     #  ...
     #  <DESCRIPTION LN>
@@ -243,7 +243,7 @@ def build_translations_stanza_fields(bpr, packages):
     :param packages: a set of (Package, Description-md5) tuples used to
         determine if a package has already been added to the translation
         file. The (Package, Description-md5) tuple will be added if it
-        doesn't aready exist.
+        doesn't already exist.
     """
     bin_description = format_description(bpr.summary, bpr.description)
     # Our formatted description isn't \n-terminated, but apt
diff --git a/lib/lp/archivepublisher/tests/archive-signing.rst b/lib/lp/archivepublisher/tests/archive-signing.rst
index c9b2927..97b69c1 100644
--- a/lib/lp/archivepublisher/tests/archive-signing.rst
+++ b/lib/lp/archivepublisher/tests/archive-signing.rst
@@ -156,7 +156,7 @@ object has to be adapted to `IArchiveGPGSigningKey`.
     >>> from lp.archivepublisher.interfaces.archivegpgsigningkey import (
     ...     IArchiveGPGSigningKey)
 
-We will adapt Celso's PPA after modifing its distribution to allow
+We will adapt Celso's PPA after modifying its distribution to allow
 proper publish configuration based on the sampledata.
 
     >>> cprov = getUtility(IPersonSet).getByName('cprov')
@@ -184,7 +184,7 @@ It also implements exportSecretKey() which receive a `PymeKey` and
 export it in the appropriate location.
 
 We will create MockKey objects implementing only the methods required
-to test the export funtions
+to test the export functions.
 
     >>> class MockKey:
     ...     def __init__(self, secret):
diff --git a/lib/lp/archivepublisher/tests/test_indices.py b/lib/lp/archivepublisher/tests/test_indices.py
index faff734..e1dcfda 100644
--- a/lib/lp/archivepublisher/tests/test_indices.py
+++ b/lib/lp/archivepublisher/tests/test_indices.py
@@ -259,7 +259,7 @@ class TestNativeArchiveIndexes(TestNativePublishingBase):
     def testBinaryStanzaDescription(self):
         """Check the description field.
 
-        The description field should formated as:
+        The description field should be formatted as:
 
         Description: <single line synopsis>
          <extended description over several lines>
@@ -267,7 +267,7 @@ class TestNativeArchiveIndexes(TestNativePublishingBase):
         The extended description should allow the following formatting
         actions supported by the dpkg-friend tools:
 
-         * lines to be wraped should start with a space.
+         * lines to be wrapped should start with a space.
          * lines to be preserved empty should start with single space followed
            by a single full stop (DOT).
          * lines to be presented in Verbatim should start with two or
diff --git a/lib/lp/archivepublisher/utils.py b/lib/lp/archivepublisher/utils.py
index 55cb176..6156c2c 100644
--- a/lib/lp/archivepublisher/utils.py
+++ b/lib/lp/archivepublisher/utils.py
@@ -104,8 +104,8 @@ class XZTempFile(PlainTempFile):
 class RepositoryIndexFile:
     """Facilitates the publication of repository index files.
 
-    It allows callsites to publish index files in different medias
-    (plain, gzip, bzip2, and xz) transparently and atomically.
+    It allows callsites to publish index files with different compression
+    formats (plain, gzip, bzip2, and xz) transparently and atomically.
     """
 
     def __init__(self, path, temp_root, compressors=None):
@@ -141,16 +141,16 @@ class RepositoryIndexFile:
         self.close()
 
     def write(self, content):
-        """Write contents to all target medias."""
+        """Write contents to all target files."""
         for index_file in self.index_files:
             index_file.write(content)
 
     def close(self):
-        """Close temporary media and atomically publish them.
+        """Close temporary files and atomically publish them.
 
         If necessary the given 'root' destination is created at this point.
 
-        It also fixes the final files permissions making them readable and
+        It also fixes the final files' permissions making them readable and
         writable by their group and readable by others.
         """
         if os.path.exists(self.root):
diff --git a/lib/lp/archiveuploader/changesfile.py b/lib/lp/archiveuploader/changesfile.py
index 6a7b3a7..61c722c 100644
--- a/lib/lp/archiveuploader/changesfile.py
+++ b/lib/lp/archiveuploader/changesfile.py
@@ -160,7 +160,7 @@ class ChangesFile(SignableTagFile):
         """
         if self.signer:
             # We only set the maintainer attribute up if we received a
-            # signed upload.  This is desireable because it avoids us
+            # signed upload.  This is desirable because it avoids us
             # doing ensurePerson() for buildds and sync owners.
             try:
                 self.maintainer = self.parseAddress(self._dict["Maintainer"])
diff --git a/lib/lp/archiveuploader/dscfile.py b/lib/lp/archiveuploader/dscfile.py
index c72c28f..9a00f35 100644
--- a/lib/lp/archiveuploader/dscfile.py
+++ b/lib/lp/archiveuploader/dscfile.py
@@ -903,7 +903,7 @@ def find_changelog(source_dir, logger):
         # Policy requires debian/changelog to always exist.
         raise UploadError("No changelog file found.")
 
-    # Move the changelog file out of the package direcotry
+    # Move the changelog file out of the package directory
     logger.debug("Found changelog")
     with open(changelog_file, "rb") as changelog:
         return changelog.read()
diff --git a/lib/lp/archiveuploader/nascentuploadfile.py b/lib/lp/archiveuploader/nascentuploadfile.py
index cd18961..6d3b37f 100644
--- a/lib/lp/archiveuploader/nascentuploadfile.py
+++ b/lib/lp/archiveuploader/nascentuploadfile.py
@@ -197,7 +197,7 @@ class NascentUploadFile:
     def verify(self):
         """Implemented locally.
 
-        It does specific checks acording the subclass type and returns
+        It does specific checks according to the subclass type and returns
         an iterator over all the encountered errors and warnings.
         """
         raise NotImplementedError
@@ -1026,7 +1026,7 @@ class BaseBinaryUploadFile(PackageUploadFile):
 
     def storeInDatabase(self, build):
         """Insert this binary release and build into the database."""
-        # Reencode everything we are supplying, because old packages
+        # Re-encode everything we are supplying, because old packages
         # contain latin-1 text and that sucks.
         encoded = Deb822Dict()
         for key, value in self.control.items():
diff --git a/lib/lp/archiveuploader/tests/nascentupload-epoch-handling.rst b/lib/lp/archiveuploader/tests/nascentupload-epoch-handling.rst
index ec6ddf1..c1c1664 100644
--- a/lib/lp/archiveuploader/tests/nascentupload-epoch-handling.rst
+++ b/lib/lp/archiveuploader/tests/nascentupload-epoch-handling.rst
@@ -166,7 +166,7 @@ it will be ignored (with the error message below) every cron.daily cycle.
     'REJECTED'
 
 We also detect a collision when publishing the newer 'epoched' version
-containing a orig file with diferent contents than the one already
+containing a orig file with different contents than the one already
 published in 'non-epoched' version:
 
     >>> bar_src_queue_epoch2.realiseUpload()
diff --git a/lib/lp/archiveuploader/tests/nascentupload.rst b/lib/lp/archiveuploader/tests/nascentupload.rst
index 101c900..a19d443 100644
--- a/lib/lp/archiveuploader/tests/nascentupload.rst
+++ b/lib/lp/archiveuploader/tests/nascentupload.rst
@@ -197,8 +197,8 @@ ed_binary contains only one 'architecture dependent binary':
     >>> ed_binary_upload.is_ppa
     False
 
-As expected 'native' and 'hasorig' doesn't make any sense for binary
-uploads, so they are alway False:
+As expected 'native' and 'hasorig' don't make any sense for binary
+uploads, so they are always False:
 
     >>> has_native(ed_binary_upload)
     False
@@ -738,8 +738,8 @@ Import the test keys again since the transaction was aborted before.
     >>> from lp.testing.gpgkeys import import_public_test_keys
     >>> import_public_test_keys()
 
-When using 'insecure' policy, NascentUpload instace stores the DSC
-sigining key reference as an IGPGKey:
+When using 'insecure' policy, NascentUpload instance stores the DSC
+signing key reference as an IGPGKey:
 
     >>> bar_ok = NascentUpload.from_changesfile_path(
     ...     datadir('suite/bar_1.0-1/bar_1.0-1_source.changes'),
diff --git a/lib/lp/archiveuploader/tests/nascentuploadfile.rst b/lib/lp/archiveuploader/tests/nascentuploadfile.rst
index fa9091c..24b3011 100644
--- a/lib/lp/archiveuploader/tests/nascentuploadfile.rst
+++ b/lib/lp/archiveuploader/tests/nascentuploadfile.rst
@@ -251,7 +251,7 @@ present in ChangesFile and DSCFile:
     >>> sig_file._dict['Source'] = 'some-source'
     >>> sig_file._dict['Version'] = '6.6.6'
 
-After initiliasing sig_file we can parse addresses and look them up in
+After initialising sig_file we can parse addresses and look them up in
 Launchpad:
 
     >>> addr = sig_file.parseAddress("Foo Bar <foo.bar@xxxxxxxxxxxxx>")
@@ -395,7 +395,7 @@ ISourcePackageRelease.dscsiginingkey:
     >>> print(ed_source_dsc.signingkey.displayname)
     1024D/340CA3BB270E2716C9EE0B768E7EB7086C64A8C5
 
-A DSCFile provides a verification API similiar to what we have in
+A DSCFile provides a verification API similar to what we have in
 ChangesFile itself:
 
     >>> errors = ed_source_dsc.verify()
@@ -404,9 +404,8 @@ ChangesFile itself:
     >>> len(list(errors))
     0
 
-Apart of other consisteny checks DSCFile is able to check also ensure
-the digest declared in in the DSC matches the content of the files on
-disk:
+Apart from other consistency checks, DSCFile is also able to check that
+the digest declared in the DSC matches the content of the files on disk:
 
     >>> ed_broken_dsc = DSCFile(
     ...     datadir('ed_0.2-20.dsc'),
diff --git a/lib/lp/archiveuploader/tests/test_ppauploadprocessor.py b/lib/lp/archiveuploader/tests/test_ppauploadprocessor.py
index 1091e56..ce409a5 100644
--- a/lib/lp/archiveuploader/tests/test_ppauploadprocessor.py
+++ b/lib/lp/archiveuploader/tests/test_ppauploadprocessor.py
@@ -1054,7 +1054,7 @@ class TestPPAUploadProcessorFileLookups(TestPPAUploadProcessorBase):
         sometimes contain unicode characters.  There was a bug
         https://bugs.launchpad.net/bugs/275509 reported about getting
         upload errors related to unicode.  This only happened when the
-        uploder was attaching a .orig.tar.gz file with different contents
+        uploader was attaching a .orig.tar.gz file with different contents
         than the one already in the PPA.
         """
         # Ensure the displayname of the PPA has got unicode in it.
@@ -1134,8 +1134,8 @@ class TestPPAUploadProcessorFileLookups(TestPPAUploadProcessorBase):
         """When available, the official 'orig.tar.gz' restricts PPA uploads.
 
         This test guarantee that when not previously overridden in the
-        context PPA, users will be forced to use the offical 'orig.tar.gz'
-        from primary archive.
+        context PPA, users will be forced to use the official 'orig.tar.gz'
+        from the primary archive.
         """
         # Make the official bar orig.tar.gz available in the system.
         self.uploadNewBarToUbuntu()
diff --git a/lib/lp/archiveuploader/tests/test_uploadprocessor.py b/lib/lp/archiveuploader/tests/test_uploadprocessor.py
index 606d2c4..e80db4a 100644
--- a/lib/lp/archiveuploader/tests/test_uploadprocessor.py
+++ b/lib/lp/archiveuploader/tests/test_uploadprocessor.py
@@ -1235,7 +1235,7 @@ class TestUploadProcessor(StatsMixin, TestUploadProcessorBase):
         )
         self.assertEqual(queue_items.count(), 1)
 
-        # Single source uploads also get their corrsponding builds created
+        # Single source uploads also get their corresponding builds created
         # at upload-time. 'foocomm' only builds in 'i386', thus only one
         # build gets created.
         foocomm_source = partner_archive.getPublishedSources(
diff --git a/lib/lp/blueprints/browser/specification.py b/lib/lp/blueprints/browser/specification.py
index 82f9fb5..c5fea56 100644
--- a/lib/lp/blueprints/browser/specification.py
+++ b/lib/lp/blueprints/browser/specification.py
@@ -829,7 +829,7 @@ class SpecificationView(SpecificationSimpleView):
 
 
 class SpecificationEditSchema(ISpecification):
-    """Provide overrides for the implementaion and definition status."""
+    """Provide overrides for the implementation and definition status."""
 
     definition_status = Choice(
         title=_("Definition Status"),
diff --git a/lib/lp/blueprints/browser/specificationtarget.py b/lib/lp/blueprints/browser/specificationtarget.py
index 3d8a19f..aaf0af4 100644
--- a/lib/lp/blueprints/browser/specificationtarget.py
+++ b/lib/lp/blueprints/browser/specificationtarget.py
@@ -156,7 +156,7 @@ class HasSpecificationsView(LaunchpadView):
 
         # ProjectGroups are a special case, as their products may be a
         # combination of usage settings. To deal with this, check all
-        # products via the involvment menu.
+        # products via the involvement menu.
         if IProjectGroup.providedBy(
             self.context
         ) or IProjectGroupSeries.providedBy(self.context):
diff --git a/lib/lp/blueprints/browser/tests/test_person_upcomingwork.py b/lib/lp/blueprints/browser/tests/test_person_upcomingwork.py
index 320d5c6..c8db194 100644
--- a/lib/lp/blueprints/browser/tests/test_person_upcomingwork.py
+++ b/lib/lp/blueprints/browser/tests/test_person_upcomingwork.py
@@ -135,7 +135,7 @@ class Test_getWorkItemsDueBefore(TestCaseWithFactory):
         self.assertEqual(current_wi, container.items[0].actual_workitem)
 
     def test_multiple_milestone_separation(self):
-        # A single blueprint with workitems targetted to multiple
+        # A single blueprint with workitems targeted to multiple
         # milestones is processed so that the same blueprint appears
         # in both with only the relevant work items.
         spec = self.factory.makeSpecification(
@@ -178,7 +178,7 @@ class Test_getWorkItemsDueBefore(TestCaseWithFactory):
         )
 
         # Future milestone date has the same specification
-        # containing only the work item targetted to future.
+        # containing only the work item targeted to future.
         containers_future = workitems[self.future_milestone.dateexpected]
         self.assertContentEqual(
             [spec], [container.spec for container in containers_future]
diff --git a/lib/lp/blueprints/browser/tests/test_specificationtarget.py b/lib/lp/blueprints/browser/tests/test_specificationtarget.py
index a4baddc..8d51ef1 100644
--- a/lib/lp/blueprints/browser/tests/test_specificationtarget.py
+++ b/lib/lp/blueprints/browser/tests/test_specificationtarget.py
@@ -87,7 +87,7 @@ class TestHasSpecificationsViewInvolvement(TestCaseWithFactory):
 
     def test_adaptable_to_specificationtarget(self):
         # A project group should adapt to the products within to determine
-        # involvment.
+        # involvement.
         context = self.factory.makeProject(name="hazelnut")
         product = self.factory.makeProduct(projectgroup=context)
         naked_product = removeSecurityProxy(product)
@@ -250,7 +250,7 @@ class TestHasSpecificationsConfiguration(TestCaseWithFactory):
 
 
 class TestSpecificationsRobots(TestCaseWithFactory):
-    """Test the behaviour of specfications when usage is UNKNOWN."""
+    """Test the behaviour of specifications when usage is UNKNOWN."""
 
     layer = DatabaseFunctionalLayer
 
diff --git a/lib/lp/blueprints/doc/specification-branch.rst b/lib/lp/blueprints/doc/specification-branch.rst
index 02ccb50..ecc12ec 100644
--- a/lib/lp/blueprints/doc/specification-branch.rst
+++ b/lib/lp/blueprints/doc/specification-branch.rst
@@ -12,7 +12,7 @@ Specification Branch Links
     True
 
 A specification can be linked to a number of branches.  For example,
-the Ubuntu media-integrity-check specifcation has a branch link:
+the Ubuntu media-integrity-check specification has a branch link:
 
     >>> from zope.component import getUtility
     >>> from lp.app.interfaces.launchpad import ILaunchpadCelebrities
diff --git a/lib/lp/blueprints/doc/sprint-meeting-export.rst b/lib/lp/blueprints/doc/sprint-meeting-export.rst
index 51cc5b3..7433b45 100644
--- a/lib/lp/blueprints/doc/sprint-meeting-export.rst
+++ b/lib/lp/blueprints/doc/sprint-meeting-export.rst
@@ -140,7 +140,7 @@ now, it is not listed by the view because of its priority:
     >>> js_spec.name not in spec_names
     True
 
-If we decline the extension manager spec, it disapears from the list of
+If we decline the extension manager spec, it disappears from the list of
 specs:
 
     >>> link = ext_spec.sprint_links[0]
diff --git a/lib/lp/blueprints/interfaces/specificationworkitem.py b/lib/lp/blueprints/interfaces/specificationworkitem.py
index 9af5a74..c22d724 100644
--- a/lib/lp/blueprints/interfaces/specificationworkitem.py
+++ b/lib/lp/blueprints/interfaces/specificationworkitem.py
@@ -49,7 +49,7 @@ class ISpecificationWorkItem(Interface):
         readonly=False,
         vocabulary="Milestone",
         description=_(
-            "The milestone to which this work item is targetted. If this "
+            "The milestone to which this work item is targeted. If this "
             "is not set, then the target is the specification's "
             "milestone."
         ),
diff --git a/lib/lp/blueprints/interfaces/sprint.py b/lib/lp/blueprints/interfaces/sprint.py
index d9d293c..9809925 100644
--- a/lib/lp/blueprints/interfaces/sprint.py
+++ b/lib/lp/blueprints/interfaces/sprint.py
@@ -259,7 +259,7 @@ class IHasSprints(Interface):
 
     sprints = Attribute("All sprints relevant to this context.")
 
-    past_sprints = Attribute("Sprints that occured in the past.")
+    past_sprints = Attribute("Sprints that occurred in the past.")
 
 
 class ISprintSet(Interface):
diff --git a/lib/lp/blueprints/mail/notifications.py b/lib/lp/blueprints/mail/notifications.py
index 64ac1bf..52d1263 100644
--- a/lib/lp/blueprints/mail/notifications.py
+++ b/lib/lp/blueprints/mail/notifications.py
@@ -21,7 +21,7 @@ def specification_notification_subject(spec):
 
 
 def notify_specification_modified(spec, event):
-    """Notify the related people that a specification has been modifed."""
+    """Notify the related people that a specification has been modified."""
     user = IPerson(event.user)
     spec_delta = spec.getDelta(event.object_before_modification, user)
     if spec_delta is None:
diff --git a/lib/lp/blueprints/model/specification.py b/lib/lp/blueprints/model/specification.py
index 225ef65..707d397 100644
--- a/lib/lp/blueprints/model/specification.py
+++ b/lib/lp/blueprints/model/specification.py
@@ -1142,7 +1142,7 @@ class Specification(SQLBase, BugLinkTargetMixin, InformationTypeMixin):
 
     @cachedproperty
     def _known_viewers(self):
-        """A set of known persons able to view the specifcation."""
+        """A set of known persons able to view the specification."""
         return set()
 
     def userCanView(self, user):
diff --git a/lib/lp/blueprints/model/tests/test_subscription.py b/lib/lp/blueprints/model/tests/test_subscription.py
index c2d3d02..bc63f20 100644
--- a/lib/lp/blueprints/model/tests/test_subscription.py
+++ b/lib/lp/blueprints/model/tests/test_subscription.py
@@ -67,7 +67,7 @@ class TestSpecificationSubscription(TestCaseWithFactory):
         self.assertTrue(subscription.canBeUnsubscribedByUser(subscriber))
 
     # XXX Abel Deuring 2012-11-21, bug=1081677
-    # The two tests below show a weird inconsisteny: Sometimes
+    # The two tests below show a weird inconsistency: Sometimes
     # subscribed_by can unsubscribe, sometimes not.
     def test_subscriber_cannot_unsubscribe_user_from_public_spec(self):
         # For public specifications, the one who subscribed the
diff --git a/lib/lp/blueprints/stories/blueprints/xx-dependencies.rst b/lib/lp/blueprints/stories/blueprints/xx-dependencies.rst
index cdd8452..8d66756 100644
--- a/lib/lp/blueprints/stories/blueprints/xx-dependencies.rst
+++ b/lib/lp/blueprints/stories/blueprints/xx-dependencies.rst
@@ -269,7 +269,7 @@ is useful for experimenting with the dot layout using production data.
 Distro blueprints
 -----------------
 
-Let's look at blueprints targetting a distribution, rather than a product.
+Let's look at blueprints targeting a distribution, rather than a product.
 We create two blueprints in `ubuntu`.
 
     >>> owner_browser.open('http://blueprints.launchpad.test/ubuntu/+addspec')
diff --git a/lib/lp/blueprints/templates/hasspecifications-specs.pt b/lib/lp/blueprints/templates/hasspecifications-specs.pt
index 185965f..46d5fd5 100644
--- a/lib/lp/blueprints/templates/hasspecifications-specs.pt
+++ b/lib/lp/blueprints/templates/hasspecifications-specs.pt
@@ -45,7 +45,7 @@
       proposal.
     </p>
     <p tal:condition="view/is_series">
-      You can also use this sytem for <strong>release management</strong>,
+      You can also use this system for <strong>release management</strong>,
       identifying the specific feature goals of any major release and then
       tracking your progress towards completion of all of those goals.
       Currently, no blueprints have been proposed as feature goals
diff --git a/lib/lp/blueprints/tests/test_specification.py b/lib/lp/blueprints/tests/test_specification.py
index bb01e66..fa7404e 100644
--- a/lib/lp/blueprints/tests/test_specification.py
+++ b/lib/lp/blueprints/tests/test_specification.py
@@ -311,7 +311,7 @@ class SpecificationTests(TestCaseWithFactory):
             if error_expected:
                 self.assertRaises(Unauthorized, getattr, specification, "name")
             else:
-                # Just try to access an attribute. No execption should be
+                # Just try to access an attribute. No exception should be
                 # raised.
                 specification.name
 
@@ -326,7 +326,7 @@ class SpecificationTests(TestCaseWithFactory):
                     Unauthorized, setattr, specification, attribute, value
                 )
             else:
-                # Just try to change an attribute. No execption should be
+                # Just try to change an attribute. No exception should be
                 # raised.
                 setattr(specification, attribute, value)
 
@@ -522,7 +522,7 @@ class SpecificationTests(TestCaseWithFactory):
 
     def test_special_user_write_access(self):
         # Users with special privileges can change the attributes
-        # of public and private specifcations.
+        # of public and private specifications.
         specification = self.factory.makeSpecification()
         removeSecurityProxy(specification.target)._ensurePolicies(
             PRIVATE_INFORMATION_TYPES
@@ -552,7 +552,7 @@ class SpecificationTests(TestCaseWithFactory):
 
     def test_registry_write_access(self):
         # Users with special privileges can change the attributes
-        # of public and private specifcations.
+        # of public and private specifications.
         specification = self.factory.makeSpecification()
         removeSecurityProxy(specification.target)._ensurePolicies(
             PRIVATE_INFORMATION_TYPES
diff --git a/lib/lp/blueprints/vocabularies/specificationdependency.py b/lib/lp/blueprints/vocabularies/specificationdependency.py
index 20d8961..de5b89c 100644
--- a/lib/lp/blueprints/vocabularies/specificationdependency.py
+++ b/lib/lp/blueprints/vocabularies/specificationdependency.py
@@ -64,7 +64,7 @@ class SpecificationDepCandidatesVocabulary(SQLObjectVocabularyBase):
         Invalid candidates are:
 
          * None
-         * The spec that we're adding a depdency to
+         * The spec that we're adding a dependency to
          * Specs that depend on this one
 
         Preventing the last category prevents loops in the dependency graph.