From c82489bed014cd1bb5e12e8afefd45cba377eabf Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Thu, 7 Mar 2024 18:01:27 -0500 Subject: [PATCH 1/7] Add codespell config to setup.cfg --- setup.cfg | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/setup.cfg b/setup.cfg index 5a83020033a..8fc7305bdea 100644 --- a/setup.cfg +++ b/setup.cfg @@ -46,3 +46,12 @@ docs/conf.py = version = "{version}" readthedocs/__init__.py = __version__ = "{version}" + +[codespell] +# Ref: https://github.com/codespell-project/codespell#using-a-config-file +skip = .git,*.svg,locale,package-lock.json,*.css,*.min.*,vendor,*.ai +check-hidden = true +# some names and abbreviations and very long lines (minimized?) +ignore-regex = \b(Manuel|DED|Wile E. Coyote)\b|.{300,}|"pyton\b +# TODO: fix syntaxt -- would require transition? +ignore-words-list = fo,te,astroid,requestor,syntaxt From abefd0a007e6703a5fd30c0304770d75459b98a6 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Thu, 7 Mar 2024 18:12:48 -0500 Subject: [PATCH 2/7] [DATALAD RUNCMD] Do interactive fixing of leftover ambigous typos === Do not change lines below === { "chain": [], "cmd": "codespell -w -i 3 -C 2", "exit": 0, "extra_inputs": [], "inputs": [], "outputs": [], "pwd": "." } ^^^ Do not change lines above ^^^ --- docs/dev/design/better-doc-urls-handling.rst | 2 +- docs/dev/design/build-images.rst | 2 +- docs/dev/design/redirects.rst | 2 +- docs/dev/search-integration.rst | 2 +- docs/user/reference/analytics.rst | 2 +- readthedocs/api/v2/views/model_views.py | 2 +- readthedocs/api/v3/permissions.py | 2 +- readthedocs/core/middleware.py | 2 +- readthedocs/core/utils/__init__.py | 2 +- readthedocs/doc_builder/backends/sphinx.py | 4 ++-- readthedocs/projects/tasks/search.py | 2 +- readthedocs/projects/version_handling.py | 4 ++-- readthedocs/redirects/querysets.py | 2 +- readthedocs/storage/rclone.py | 2 +- readthedocs/vcs_support/backends/git.py | 4 ++-- 15 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/dev/design/better-doc-urls-handling.rst b/docs/dev/design/better-doc-urls-handling.rst index b2016d27ef3..e2e9a484501 100644 --- a/docs/dev/design/better-doc-urls-handling.rst +++ b/docs/dev/design/better-doc-urls-handling.rst @@ -61,7 +61,7 @@ Look up process --------------- Proxito will process all documentation requests from a single *docs serve* view, -exluding ``/_`` URLs. +excluding ``/_`` URLs. This view then will process the current URL using the root project as follows: diff --git a/docs/dev/design/build-images.rst b/docs/dev/design/build-images.rst index 4aabbcd8412..22169fa3d97 100644 --- a/docs/dev/design/build-images.rst +++ b/docs/dev/design/build-images.rst @@ -287,7 +287,7 @@ How do we remove an old Python version? At some point, an old version of Python will be deprecated (eg. 3.4) and will be removed. To achieve this, we can just remove the pre-compiled Python version from the cache. -However, unless it's strictly neeed for some specific reason, we shouldn't require to remove support for a Python version +However, unless it's strictly needed for some specific reason, we shouldn't require to remove support for a Python version as long as we support the Ubuntu OS version where this version was compiled for. In any case, we will know which projects are using these versions because they are pinning these specific versions in the config file. diff --git a/docs/dev/design/redirects.rst b/docs/dev/design/redirects.rst index 40619ef3d12..8a57482e18a 100644 --- a/docs/dev/design/redirects.rst +++ b/docs/dev/design/redirects.rst @@ -386,7 +386,7 @@ We can do this in three ways: We could limit the number of redirects that can be created with query arguments, or the number of redirects in general. -We hava had only one user requesting this feature, +We have had only one user requesting this feature, so this is not a priority. Migration diff --git a/docs/dev/search-integration.rst b/docs/dev/search-integration.rst index 984e803a4f1..aca618b90d3 100644 --- a/docs/dev/search-integration.rst +++ b/docs/dev/search-integration.rst @@ -190,7 +190,7 @@ will be indexed as part of the section content:

This is also a valid section title

- Thi is the content of the third section. + This is the content of the third section.

diff --git a/docs/user/reference/analytics.rst b/docs/user/reference/analytics.rst index 9956a1f76a9..b128a9d145c 100644 --- a/docs/user/reference/analytics.rst +++ b/docs/user/reference/analytics.rst @@ -5,7 +5,7 @@ Analytics for search and traffic Read the Docs supports analytics for search and traffic. When someone reads your documentation, -we collect data about the vist and the referer +we collect data about the visit and the referer with full respect of the privacy of the visitor. diff --git a/readthedocs/api/v2/views/model_views.py b/readthedocs/api/v2/views/model_views.py index 8498cd26af2..46c8e28c38b 100644 --- a/readthedocs/api/v2/views/model_views.py +++ b/readthedocs/api/v2/views/model_views.py @@ -370,7 +370,7 @@ class NotificationViewSet(DisableListEndpoint, CreateModelMixin, UserSelectViewS This endpoint is currently used only internally by the builder. Notifications are attached to `Build` objects only when using this endpoint. - This limitation will change in the future when re-implementing this on APIv3 if neeed. + This limitation will change in the future when re-implementing this on APIv3 if needed. """ parser_classes = [JSONParser, MultiPartParser] diff --git a/readthedocs/api/v3/permissions.py b/readthedocs/api/v3/permissions.py index 77d7b26afea..9add67f0da8 100644 --- a/readthedocs/api/v3/permissions.py +++ b/readthedocs/api/v3/permissions.py @@ -10,7 +10,7 @@ class HasEmbedAPIAccess(BasePermission): """ Check if the project being accessed has access to the Embed API. - The embedded API V3 allows getting content from external sites tha + The embedded API V3 allows getting content from external sites that aren't attached to a project. Those sites are restricted to the ones from ``RTD_EMBED_API_EXTERNAL_DOMAINS``, so we just allow that. """ diff --git a/readthedocs/core/middleware.py b/readthedocs/core/middleware.py index f5f060d7294..d7fd7df0cdf 100644 --- a/readthedocs/core/middleware.py +++ b/readthedocs/core/middleware.py @@ -216,7 +216,7 @@ class NullCharactersMiddleware: when trying to save the content containing a NULL character into the database, producing a 500 and creating an event in Sentry. - NULL characters are also used as an explotation technique, known as "Null Byte Injection". + NULL characters are also used as an exploitation technique, known as "Null Byte Injection". """ def __init__(self, get_response): diff --git a/readthedocs/core/utils/__init__.py b/readthedocs/core/utils/__init__.py index 7e30678fd63..fd399bea48b 100644 --- a/readthedocs/core/utils/__init__.py +++ b/readthedocs/core/utils/__init__.py @@ -355,7 +355,7 @@ def extract_valid_attributes_for_model(model, attributes): attributes = attributes.copy() valid_field_names = {field.name for field in model._meta.get_fields()} valid_attributes = {} - # We can't change a dictionary while interating over its keys, + # We can't change a dictionary while iterating over its keys, # so we make a copy of its keys. keys = list(attributes.keys()) for key in keys: diff --git a/readthedocs/doc_builder/backends/sphinx.py b/readthedocs/doc_builder/backends/sphinx.py index 5356b32feb8..7e23cb0bd3c 100644 --- a/readthedocs/doc_builder/backends/sphinx.py +++ b/readthedocs/doc_builder/backends/sphinx.py @@ -52,7 +52,7 @@ def __init__(self, *args, **kwargs): # `absolute_host_output_dir` because it's not defined in the host. So, # we have to re-calculate its value. We will remove this limitation # when we execute the whole building from inside the Docker container - # (instead behing a hybrid as it is now) + # (instead being a hybrid as it is now) # # We need to have two different paths that point to the exact same # directory. How is that? The directory is mounted into a different @@ -103,7 +103,7 @@ def __init__(self, *args, **kwargs): # # IMO, if there are multiple config files, # the build should fail immediately communicating this to the user. - # This can be achived by unhandle the exception here + # This can be achieved by unhandle the exception here # and leaving `on_failure` Celery handle to deal with it. # # In case there is no config file, we should continue the build diff --git a/readthedocs/projects/tasks/search.py b/readthedocs/projects/tasks/search.py index 4168fb61c8d..970d7ff5fd8 100644 --- a/readthedocs/projects/tasks/search.py +++ b/readthedocs/projects/tasks/search.py @@ -208,7 +208,7 @@ def _create_imported_files_and_search_index( # We first index the files in ES, and then save the objects in the DB. # This is because saving the objects in the DB will give them an id, - # and we neeed this id to be `None` when indexing the objects in ES. + # and we needed this id to be `None` when indexing the objects in ES. # ES will generate a unique id for each document. if html_files_to_index: index_objects( diff --git a/readthedocs/projects/version_handling.py b/readthedocs/projects/version_handling.py index 6efbd38effe..9ab6299ff22 100644 --- a/readthedocs/projects/version_handling.py +++ b/readthedocs/projects/version_handling.py @@ -97,7 +97,7 @@ def sort_versions(version_list): :returns: sorted list in descending order (latest version first) of versions - :rtype: list(tupe(readthedocs.builds.models.Version, + :rtype: list(tuple(readthedocs.builds.models.Version, packaging.version.Version)) """ versions = [] @@ -121,7 +121,7 @@ def highest_version(version_list): """ Return the highest version for a given ``version_list``. - :rtype: tupe(readthedocs.builds.models.Version, packaging.version.Version) + :rtype: tuple(readthedocs.builds.models.Version, packaging.version.Version) """ versions = sort_versions(version_list) if versions: diff --git a/readthedocs/redirects/querysets.py b/readthedocs/redirects/querysets.py index 54b2e942a59..a20006d16e8 100644 --- a/readthedocs/redirects/querysets.py +++ b/readthedocs/redirects/querysets.py @@ -58,7 +58,7 @@ def get_matching_redirect_with_path( normalized_filename = self._normalize_path(filename) normalized_path = self._normalize_path(path) - # Useful to allow redirects to match paths with or without trailling slash. + # Useful to allow redirects to match paths with or without trailing slash. # For example, ``/docs`` will match ``/docs/`` and ``/docs``. filename_without_trailling_slash = normalized_filename.rstrip("/") path_without_trailling_slash = normalized_path.rstrip("/") diff --git a/readthedocs/storage/rclone.py b/readthedocs/storage/rclone.py index ab88f3fe64d..4f6bba8484e 100644 --- a/readthedocs/storage/rclone.py +++ b/readthedocs/storage/rclone.py @@ -31,7 +31,7 @@ class BaseRClone: :param rclone_bin: Binary name or path to the rclone binary. Defaults to ``rclone``. :param default_options: Options passed to the rclone command. - :parm env_vars: Environment variables used when executing the rclone command. + :param env_vars: Environment variables used when executing the rclone command. Useful to pass secrets to the ``rclone` command, since all arguments and options will be logged. """ diff --git a/readthedocs/vcs_support/backends/git.py b/readthedocs/vcs_support/backends/git.py index 508de6bb316..bfd4614741a 100644 --- a/readthedocs/vcs_support/backends/git.py +++ b/readthedocs/vcs_support/backends/git.py @@ -80,7 +80,7 @@ def get_remote_fetch_refspec(self): This method sits on top of a lot of legacy design. It decides how to treat the incoming ``Version.identifier`` from knowledge of how the caller (the build process) uses build data. - Thi is: + This is: For branches: @@ -417,7 +417,7 @@ def submodules(self) -> Iterable[str]: yield value else: # This should never happen, but we log a warning just in case the regex is wrong. - log.warning("Unexpected key extracted fom .gitmodules.", key=key) + log.warning("Unexpected key extracted from .gitmodules.", key=key) def checkout(self, identifier=None): """Checkout to identifier or latest.""" From a4ed972b69a016fffb738371aa6c0bb5a057f8c7 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Thu, 7 Mar 2024 18:14:58 -0500 Subject: [PATCH 3/7] Add leftover skips for codespell --- setup.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.cfg b/setup.cfg index 8fc7305bdea..efea5367cf1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -49,9 +49,9 @@ readthedocs/__init__.py = [codespell] # Ref: https://github.com/codespell-project/codespell#using-a-config-file -skip = .git,*.svg,locale,package-lock.json,*.css,*.min.*,vendor,*.ai +skip = .git,*.svg,locale,package-lock.json,*.css,*.min.*,vendor,*.ai,setup.cfg check-hidden = true # some names and abbreviations and very long lines (minimized?) -ignore-regex = \b(Manuel|DED|Wile E. Coyote)\b|.{300,}|"pyton\b +ignore-regex = \b(Manuel|DED|Wile E. Coyote|Couldn\\u2019t)\b|.{300,}|"pyton\b|\|(ative|ment)\||"Hel" will match\b|ative: '' # TODO: fix syntaxt -- would require transition? ignore-words-list = fo,te,astroid,requestor,syntaxt From 2fcd527661b81633dad9e1d463c3f12b89ebf08f Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Fri, 8 Mar 2024 17:52:39 -0500 Subject: [PATCH 4/7] Progress common/ to inclusion of codespell --- common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common b/common index 4af0fffd2cb..9288beda547 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 4af0fffd2cbeeb40f0a71b875beb99d6dc88a355 +Subproject commit 9288beda54769b0f1140e56ce15b9940122c1d7f From 1817c6619d3d9aa176e22ee113f0f0fcf9e5a5d5 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Fri, 8 Mar 2024 17:53:25 -0500 Subject: [PATCH 5/7] Do not codespell migrations --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index efea5367cf1..15da141a42d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -49,7 +49,7 @@ readthedocs/__init__.py = [codespell] # Ref: https://github.com/codespell-project/codespell#using-a-config-file -skip = .git,*.svg,locale,package-lock.json,*.css,*.min.*,vendor,*.ai,setup.cfg +skip = .git,*.svg,locale,package-lock.json,*.css,*.min.*,vendor,*.ai,setup.cfg,migrations check-hidden = true # some names and abbreviations and very long lines (minimized?) ignore-regex = \b(Manuel|DED|Wile E. Coyote|Couldn\\u2019t)\b|.{300,}|"pyton\b|\|(ative|ment)\||"Hel" will match\b|ative: '' From d26e4bfdadeb5c35d4fb2c9780aa1bc31c1c324d Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Fri, 8 Mar 2024 17:57:02 -0500 Subject: [PATCH 6/7] Ignore "to perfom an" for now --- setup.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 15da141a42d..bb3c3aba542 100644 --- a/setup.cfg +++ b/setup.cfg @@ -52,6 +52,7 @@ readthedocs/__init__.py = skip = .git,*.svg,locale,package-lock.json,*.css,*.min.*,vendor,*.ai,setup.cfg,migrations check-hidden = true # some names and abbreviations and very long lines (minimized?) -ignore-regex = \b(Manuel|DED|Wile E. Coyote|Couldn\\u2019t)\b|.{300,}|"pyton\b|\|(ative|ment)\||"Hel" will match\b|ative: '' +# TODO: fixup help_text in readthedocs/builds/models.py : "to perfom an" +ignore-regex = \b(Manuel|DED|Wile E. Coyote|Couldn\\u2019t|to perfom an)\b|.{300,}|"pyton\b|\|(ative|ment)\||"Hel" will match\b|ative: '' # TODO: fix syntaxt -- would require transition? ignore-words-list = fo,te,astroid,requestor,syntaxt From 120e6933ac4e477aff511070b84cad549d3c22f1 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Fri, 8 Mar 2024 17:57:53 -0500 Subject: [PATCH 7/7] [DATALAD RUNCMD] run codespell throughout fixing typos automagically === Do not change lines below === { "chain": [], "cmd": "codespell -w", "exit": 0, "extra_inputs": [], "inputs": [], "outputs": [], "pwd": "." } ^^^ Do not change lines above ^^^ --- .github/ISSUE_TEMPLATE/feature.md | 2 +- .github/workflows/pip-tools.yaml | 2 +- CHANGELOG.rst | 26 +++++++++---------- docs/Makefile | 2 +- docs/dev/design/better-doc-urls-handling.rst | 2 +- docs/dev/design/build-images.rst | 6 ++--- docs/dev/design/new-notifications-system.rst | 12 ++++----- docs/dev/design/new-search-api.rst | 4 +-- docs/dev/design/pr-builder.rst | 2 +- .../secure-api-access-from-builders.rst | 6 ++--- docs/dev/subscriptions.rst | 4 +-- docs/user/api/v3.rst | 2 +- docs/user/builds.rst | 2 +- docs/user/faq.rst | 2 +- docs/user/glossary.rst | 2 +- docs/user/guides/pull-requests.rst | 2 +- docs/user/intro/import-guide.rst | 2 +- docs/user/science.rst | 2 +- docs/user/server-side-search/api.rst | 2 +- docs/user/tutorial/index.rst | 2 +- readthedocs/api/v2/views/integrations.py | 2 +- readthedocs/api/v2/views/model_views.py | 4 +-- readthedocs/api/v3/serializers.py | 2 +- readthedocs/builds/models.py | 4 +-- readthedocs/builds/version_slug.py | 2 +- readthedocs/config/config.py | 2 +- readthedocs/config/notifications.py | 2 +- readthedocs/conftest.py | 2 +- readthedocs/core/filters.py | 2 +- .../management/commands/contact_owners.py | 2 +- readthedocs/core/utils/filesystem.py | 2 +- readthedocs/doc_builder/director.py | 2 +- readthedocs/doc_builder/environments.py | 2 +- readthedocs/notifications/messages.py | 2 +- readthedocs/notifications/models.py | 4 +-- readthedocs/oauth/tasks.py | 2 +- .../organizations/tests/test_filters.py | 2 +- readthedocs/organizations/tests/test_forms.py | 2 +- readthedocs/projects/tasks/builds.py | 8 +++--- readthedocs/proxito/middleware.py | 2 +- readthedocs/proxito/tests/test_full.py | 2 +- readthedocs/proxito/views/hosting.py | 8 +++--- readthedocs/rtd_tests/tests/test_api.py | 2 +- .../rtd_tests/tests/test_automation_rules.py | 2 +- .../rtd_tests/tests/test_doc_building.py | 2 +- readthedocs/rtd_tests/utils.py | 2 +- .../search/tests/data/sphinx/in/page.html | 2 +- readthedocs/settings/docker_compose.py | 4 +-- readthedocs/subscriptions/tests/test_views.py | 4 +-- readthedocs/telemetry/collectors.py | 4 +-- .../deprecated_github_webhook_email.html | 2 +- .../deprecated_github_webhook_email.txt | 2 +- .../projects/project_dashboard_base.html | 2 +- requirements/pip.in | 2 +- scripts/compile_version_upload_s3.sh | 2 +- 55 files changed, 90 insertions(+), 90 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md index eba72fc685d..9a12e8d1afc 100644 --- a/.github/ISSUE_TEMPLATE/feature.md +++ b/.github/ISSUE_TEMPLATE/feature.md @@ -1,6 +1,6 @@ --- name: Feature/improvement proposal -about: Propose a new feauture or improvement for Read the Docs +about: Propose a new feature or improvement for Read the Docs --- ## What's the problem this feature will solve? diff --git a/.github/workflows/pip-tools.yaml b/.github/workflows/pip-tools.yaml index 77aa57b7282..6ea83ae0e6a 100644 --- a/.github/workflows/pip-tools.yaml +++ b/.github/workflows/pip-tools.yaml @@ -1,5 +1,5 @@ # Action to run pip-compile weekly and create a Pull Request with the changes. -# Althought GitHub says that pip-compile is supported by dependabot, we couldn't make it work together. +# Although GitHub says that pip-compile is supported by dependabot, we couldn't make it work together. # That's why this action exists. # If we ever find the proper configuration for dependabot+pip-compile, # we can delete this action. diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 657da7c1bc0..dc4c686352f 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -170,7 +170,7 @@ Version 10.15.1 * `@stsewd `__: Update docs requirements (`#11032 `__) * `@github-actions[bot] `__: Dependencies: all packages updated via pip-tools (`#11029 `__) * `@stsewd `__: Redirects: limit to 100 per project (`#11028 `__) -* `@humitos `__: Build: reset notifications when reseting a build (`#11027 `__) +* `@humitos `__: Build: reset notifications when resetting a build (`#11027 `__) * `@humitos `__: Development: define `SUPPORT_EMAIL` setting (`#11026 `__) * `@humitos `__: Notifications: use Template's Django engine to render them (`#11024 `__) * `@humitos `__: Notifications: render `Organization` notifications on details page (`#11023 `__) @@ -1026,7 +1026,7 @@ Version 9.8.0 * `@stsewd `__: Canonical redirects: check if the project supports custom domains (`#10098 `__) * `@stsewd `__: Fix .com tests (`#10097 `__) * `@stsewd `__: Fix migration (`#10096 `__) -* `@benjaoming `__: Docs: Move a reference and remove an empty paranthesis (`#10093 `__) +* `@benjaoming `__: Docs: Move a reference and remove an empty parenthesis (`#10093 `__) * `@benjaoming `__: Docs: Update documentation for search.ignore (`#10091 `__) * `@benjaoming `__: Fix intersphinx references to myst-parser (updated in myst-parser 0.19) (`#10090 `__) * `@stsewd `__: Update changelog with security fixes (`#10088 `__) @@ -1170,7 +1170,7 @@ Version 9.3.1 * `@humitos `__: Requirements: reduce complexity (`#9956 `__) * `@humitos `__: Build: rclone retries when uploading artifacts (`#9954 `__) * `@benjaoming `__: Docs: Relabel badges as feature reference (Diátaxis) (`#9951 `__) -* `@humitos `__: Build: improve `concurent` queryset (`#9950 `__) +* `@humitos `__: Build: improve `concurrent` queryset (`#9950 `__) * `@benjaoming `__: Docs: Make the GSOC page orphaned (Diátaxis) (`#9949 `__) * `@humitos `__: Celery: ignore task results (`#9944 `__) * `@agjohnson `__: Translations: a few copy issues and translator requests (`#9937 `__) @@ -1330,7 +1330,7 @@ This version upgrades our Search API experience to a v3. * `@Jean-Maupas `__: A few text updates (`#9761 `__) * `@github-actions[bot] `__: Dependencies: all packages updated via pip-tools (`#9760 `__) * `@benjaoming `__: Docs: 4 diátaxis categories at the top of the navigation sidebar (Diátaxis iteration 0) (`#9758 `__) -* `@ericholscher `__: Be more explicit where go to in VCS intstructions (`#9757 `__) +* `@ericholscher `__: Be more explicit where go to in VCS instructions (`#9757 `__) * `@benjaoming `__: Docs: Adding a pattern for reusing "Only on Read the Docs for Business" admonition (Diátaxis refactor) (`#9754 `__) * `@stsewd `__: Subscriptions: attach stripe subscription to organizations (`#9751 `__) * `@stsewd `__: Search: fix parsing of parameters inside sphinx domains (`#9750 `__) @@ -1756,7 +1756,7 @@ Version 8.1.1 * `@stsewd `__: Update json schema (`#9270 `__) * `@stsewd `__: Build tools: update versions (`#9268 `__) * `@stsewd `__: Fix docs (`#9264 `__) -* `@stsewd `__: Update commmon (`#9248 `__) +* `@stsewd `__: Update common (`#9248 `__) * `@pyup-bot `__: pyup: Scheduled weekly dependency update for week 18 (`#9157 `__) Version 8.1.0 @@ -1965,7 +1965,7 @@ Version 7.4.2 * `@humitos `__: API: validate `RemoteRepository` when creating a `Project` (`#8983 `__) * `@stsewd `__: Tests: fix mock.patch order (`#8909 `__) * `@humitos `__: Celery: remove queue priority (`#8848 `__) -* `@dogukanteber `__: Use django-storages' manifest files class instead of the overriden class (`#8781 `__) +* `@dogukanteber `__: Use django-storages' manifest files class instead of the overridden class (`#8781 `__) * `@abravalheri `__: Improve displayed version name when building from PR (`#8237 `__) Version 7.4.1 @@ -1985,7 +1985,7 @@ Version 7.4.1 * `@stsewd `__: CDN: avoid cache tags collision (`#8969 `__) * `@stsewd `__: Docs: warn about custom domains on subprojects (`#8945 `__) * `@humitos `__: Code style: format the code using `darker` (`#8875 `__) -* `@dogukanteber `__: Use django-storages' manifest files class instead of the overriden class (`#8781 `__) +* `@dogukanteber `__: Use django-storages' manifest files class instead of the overridden class (`#8781 `__) * `@nienn `__: Docs: Add links to documentation on creating custom classes (`#8466 `__) * `@stsewd `__: Integrations: allow to pass more data about external versions (`#7692 `__) @@ -2216,7 +2216,7 @@ Version 6.3.1 * `@stsewd `__: Custom Domain: make cname_target configurable (`#8728 `__) * `@stsewd `__: Test external serving for projects with `--` in slug (`#8716 `__) * `@astrojuanlu `__: Add guide to migrate from reST to MyST (`#8714 `__) -* `@astrojuanlu `__: Avoid future breakage of `setup.py` invokations (`#8711 `__) +* `@astrojuanlu `__: Avoid future breakage of `setup.py` invocations (`#8711 `__) * `@humitos `__: structlog: migrate application code to better logging (`#8705 `__) * `@humitos `__: EmbedAPI: log success requests (`#8689 `__) * `@ericholscher `__: Add ability to rebuild a specific build (`#6995 `__) @@ -2229,7 +2229,7 @@ Version 6.3.0 * `@humitos `__: Tests: run tests with Python3.8 in CircleCI (`#8718 `__) * `@stsewd `__: Test external serving for projects with `--` in slug (`#8716 `__) * `@humitos `__: requirements: add requests-oauthlib (`#8712 `__) -* `@astrojuanlu `__: Avoid future breakage of `setup.py` invokations (`#8711 `__) +* `@astrojuanlu `__: Avoid future breakage of `setup.py` invocations (`#8711 `__) * `@humitos `__: spam: fix admin filter (`#8707 `__) * `@humitos `__: oauth: sync remote repositories fix (`#8706 `__) * `@humitos `__: structlog: migrate application code to better logging (`#8705 `__) @@ -2413,7 +2413,7 @@ Version 5.23.5 * `@humitos `__: Organization: only mark artifacts cleaned as False if they are True (`#8481 `__) * `@astrojuanlu `__: Fix link to version states documentation (`#8475 `__) -* `@stsewd `__: OAuth models: increase avatar_url lenght (`#8472 `__) +* `@stsewd `__: OAuth models: increase avatar_url length (`#8472 `__) * `@pzhlkj6612 `__: Docs: update the links to the dependency management content of setuptools docs (`#8470 `__) * `@stsewd `__: Permissions: avoid using project.users, use proper permissions instead (`#8458 `__) * `@humitos `__: Docker build images: update design doc (`#8447 `__) @@ -2439,7 +2439,7 @@ Version 5.23.4 * `@stsewd `__: Contact users: pass user and domain in the context (`#8430 `__) * `@astrojuanlu `__: New Read the Docs tutorial, part I (`#8428 `__) * `@stsewd `__: Footer: remove auth block (`#8397 `__) -* `@stsewd `__: API: fix subprojects creation when organizaions are enabled (`#8393 `__) +* `@stsewd `__: API: fix subprojects creation when organizations are enabled (`#8393 `__) * `@stsewd `__: QuerySets: remove unused overrides (`#8299 `__) * `@stsewd `__: QuerySets: filter permissions by organizations (`#8298 `__) @@ -4754,7 +4754,7 @@ Version 3.3.0 * `@davidfischer `__: Allow extensions to control URL structure (`#5296 `__) * `@stsewd `__: Downgrade pytest-django (`#5294 `__) * `@ericholscher `__: Add modeling for intersphinx data (`#5289 `__) -* `@ovc `__: Tweek css for sphinx_prompt (`#5281 `__) +* `@ovc `__: Tweak css for sphinx_prompt (`#5281 `__) * `@saadmk11 `__: #4036 Updated build list to include an alert state (`#5222 `__) * `@humitos `__: Use unicode-slugify to generate Version.slug (`#5186 `__) * `@dojutsu-user `__: Add admin functions for wiping a version (`#5140 `__) @@ -4848,7 +4848,7 @@ Version 3.2.0 * `@humitos `__: Allow source_suffix to be a dictionary (`#5183 `__) * `@humitos `__: Upgrade all packages removing py2 compatibility (`#5179 `__) * `@dojutsu-user `__: Small docs fix (`#5176 `__) -* `@stsewd `__: Sync all services even if one social accoun fails (`#5171 `__) +* `@stsewd `__: Sync all services even if one social account fails (`#5171 `__) * `@ericholscher `__: Release 3.1.0 (`#5170 `__) * `@rvmzes `__: SyntaxError caused by comma in python3 (`#5156 `__) * `@humitos `__: Use latest docker images as default (`#5155 `__) diff --git a/docs/Makefile b/docs/Makefile index a42f00bcef7..231b159a8aa 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -4,7 +4,7 @@ # You can set these variables from the command line. # Options should be aligned with how the documentation is built on RTD -# (except for '--keep-going', failing fast is prefered on local builds) +# (except for '--keep-going', failing fast is preferred on local builds) # We also remove '-E' to reduce the time of rebuilding reference indexes # on each build. SPHINXOPTS = -T -j auto -W diff --git a/docs/dev/design/better-doc-urls-handling.rst b/docs/dev/design/better-doc-urls-handling.rst index e2e9a484501..8a031bf7710 100644 --- a/docs/dev/design/better-doc-urls-handling.rst +++ b/docs/dev/design/better-doc-urls-handling.rst @@ -42,7 +42,7 @@ Instead of trying to map a URL to a view, we first analyze the root project (given from the subdomain), and based on that we map each part of the URL to the *current* project and version. -This will allow us to re-use this code in our unresolver +This will allow us to reuse this code in our unresolver without the need to override the Django's urlconf at runtime, or guessing a project only by the structure of its URL. diff --git a/docs/dev/design/build-images.rst b/docs/dev/design/build-images.rst index 22169fa3d97..14c3064f899 100644 --- a/docs/dev/design/build-images.rst +++ b/docs/dev/design/build-images.rst @@ -265,7 +265,7 @@ and we can roll back if the new pre-compiled version was built with a problem. Installing always the latest version is harder to maintain. It will require building the newest version each time a new patch version is released. - Beacause of that, Read the Docs will always be behind official releases. + Because of that, Read the Docs will always be behind official releases. Besides, it will give projects different versions more often. Exposing to the user the patch version would require to cache many different versions ourselves, @@ -424,10 +424,10 @@ that doesn't seem to be useful to have the same OS version with different states Allowing users to install extra languages by using the Config File will cover most of the support requests we have had in the past. It also will allow us to know more about how our users are using the platform to make future decisions based on this data. Exposing users how we want them to use our platform will allow us to be able to maintain it longer, -than giving the option to select a specific Docker image by name that we can't guarrantee it will be frozen. +than giving the option to select a specific Docker image by name that we can't guarantee it will be frozen. Finally, having the ability to deprecate and *remove* pre-built images from our builders over time, -will reduce the maintainance work required from the the core team. +will reduce the maintenance work required from the the core team. We can always support all the languages versions by installing them at build time. The only required pre-built image for this are the OS ``-base`` images. In fact, even after decided to deprecate and removed a pre-built image from the builders, diff --git a/docs/dev/design/new-notifications-system.rst b/docs/dev/design/new-notifications-system.rst index 87d62432f81..9090d7540f7 100644 --- a/docs/dev/design/new-notifications-system.rst +++ b/docs/dev/design/new-notifications-system.rst @@ -34,7 +34,7 @@ Goals * Ability to add non-error notifications from the build process * Add extra metadata associated to the notification: icon, header, body, etc * Support different types of notifications (e.g. error, warning, note, tip) -* Re-use the new notification system for product updates (e.g. new features, deprecated config keys) +* Reuse the new notification system for product updates (e.g. new features, deprecated config keys) * Message content lives on Python classes that can be translated and formatted with objects (e.g. Build, Project) * Message could have richer content (e.g. HTML code) to generate links and emphasis * Notifications have trackable state (e.g. unread (default)=never shown, read=shown, dismissed=don't show again, cancelled=auto-removed after user action) @@ -43,7 +43,7 @@ Goals * Notifications can be attached to Project, Organization, Build and User models * Specific notifications can be shown under the user's bell icon * Easy way to cleanup notification on status changes (e.g. subscription failure notification is auto-deleted after CC updated) -* Notifications attached to Organization/Project dissappear for all the users once they are dismissed by anyone +* Notifications attached to Organization/Project disappear for all the users once they are dismissed by anyone Non-goals @@ -88,7 +88,7 @@ This section shows all the classes and models involved for the notification syst .. note:: Accessing the database from the build process Builders doesn't have access to the database due to security reasons. - We had solved this limitation by creating an API endpoint the builder hits once they need to interact with the databse to get a ``Project``, ``Version`` and ``Build`` resources, create a ``BuildCommand`` resource, etc. + We had solved this limitation by creating an API endpoint the builder hits once they need to interact with the database to get a ``Project``, ``Version`` and ``Build`` resources, create a ``BuildCommand`` resource, etc. Besides, the build process is capable to trigger Celery tasks that are useful for managing more complex logic that also require accessing from and writing to the database. @@ -116,7 +116,7 @@ and some helper logic to return in the API response. body = str icon = str icon_style = str(SOLID, DUOTONE) - type = str(ERROR, WARINIG, NOTE, TIP) + type = str(ERROR, WARNING, NOTE, TIP) def get_display_icon(self): if self.icon: @@ -201,7 +201,7 @@ It contains an identifier (``message_id``) pointing to one of the messages defin message_id = models.CharField(max_length=128) # UNREAD: the notification was not shown to the user - # READ: the notifiation was shown + # READ: the notification was shown # DISMISSED: the notification was shown and the user dismissed it # CANCELLED: removed automatically because the user has done the action required (e.g. paid the subscription) state = models.CharField( @@ -210,7 +210,7 @@ It contains an identifier (``message_id``) pointing to one of the messages defin db_index=True, ) - # Makes the notification imposible to dismiss (useful for Build notifications) + # Makes the notification impossible to dismiss (useful for Build notifications) dismissable = models.BooleanField(default=False) # Show the notification under the bell icon for the user diff --git a/docs/dev/design/new-search-api.rst b/docs/dev/design/new-search-api.rst index 4d829679185..f8048ec357a 100644 --- a/docs/dev/design/new-search-api.rst +++ b/docs/dev/design/new-search-api.rst @@ -139,7 +139,7 @@ like the projects, versions, and the query that were used in the final search. And the ``version``, ``project``, and ``project_alias`` attributes will now be objects. -We could just re-use the old response too, +We could just reuse the old response too, since the only breaking changes would be the attributes now being objects, and we aren't adding any new information to those objects (yet). But also, re-using the current serializers shouldn't be a problem either. @@ -230,7 +230,7 @@ the readthedocs.org/readthedocs.com domains. We have two types: Project scoped search: - Search files and versions of the curent project only. + Search files and versions of the current project only. Global search: Search files and versions of all projects in .org, diff --git a/docs/dev/design/pr-builder.rst b/docs/dev/design/pr-builder.rst index 94154f2299a..90e8f0256be 100644 --- a/docs/dev/design/pr-builder.rst +++ b/docs/dev/design/pr-builder.rst @@ -43,7 +43,7 @@ We might consider adding a ``VERSION_TYPES`` to the ``Version`` model. - If we go with ``VERSION_TYPES`` we can add something like ``pull_request`` alongside Tag and Branch. We should add ``Version`` and ``Build`` Model Managers for PR and Regular Versions and Builds. -The proposed names for PR and Regular Version and Build Mangers are ``external`` and ``internal``. +The proposed names for PR and Regular Version and Build Managers are ``external`` and ``internal``. We can then use ``Version.internal.all()`` to get all regular versions, ``Version.external.all()`` to get all PR versions. diff --git a/docs/dev/design/secure-api-access-from-builders.rst b/docs/dev/design/secure-api-access-from-builders.rst index 6ab927806ce..d4f9d2d928c 100644 --- a/docs/dev/design/secure-api-access-from-builders.rst +++ b/docs/dev/design/secure-api-access-from-builders.rst @@ -98,7 +98,7 @@ Why attach tokens to users? --------------------------- Attaching tokens to users will ease the implementation, -since we can re-use the code from knox package. +since we can reuse the code from knox package. Attaching tokens to projects only is possible, but it will require to manage the authentication manually. @@ -108,7 +108,7 @@ An alternative is to use the DRF API key package, which doesn't require a user, but then if we wanted to extend this functionality to our normal APIs, we will have to implement the authentication manually. -Kepping backwards compatibility +Keeping backwards compatibility ------------------------------- Access to write API V2 is restricted to superusers, @@ -161,7 +161,7 @@ since it also handles authentication). Decision -------- -Due to the fact that the required featues from knox are not released yet, +Due to the fact that the required features from knox are not released yet, we have decided to use DRF API key instead. Future work diff --git a/docs/dev/subscriptions.rst b/docs/dev/subscriptions.rst index a73439cb821..8a156492dd4 100644 --- a/docs/dev/subscriptions.rst +++ b/docs/dev/subscriptions.rst @@ -74,7 +74,7 @@ and it's manually created by the RTD core team. To create a custom plan, you need to create a new product in Stripe, and add the product id to the ``RTD_PRODUCTS`` setting mapped to the features that the plan will provide. After that, you can create a subscription for the organization with the custom product, -our appliction will automatically relate this new product to the organization. +our application will automatically relate this new product to the organization. Extra products -------------- @@ -87,4 +87,4 @@ extra product will provide, this product should have the ``extra`` attribute set To subscribe an organization to an extra product, you just need to add the product to its subscription with the desired quantity, -our appliction will automatically relate this new product to the organization. +our application will automatically relate this new product to the organization. diff --git a/docs/user/api/v3.rst b/docs/user/api/v3.rst index f49f5636233..de311b0125c 100644 --- a/docs/user/api/v3.rst +++ b/docs/user/api/v3.rst @@ -1876,7 +1876,7 @@ Remote repository listing The ``results`` in response is an array of remote repositories data. :query string name: return remote repositories containing the name - :query string full_name: return remote repositories containing the full name (it inclues the username/organization the project belongs to) + :query string full_name: return remote repositories containing the full name (it includes the username/organization the project belongs to) :query string vcs_provider: return remote repositories for specific vcs provider (``github``, ``gitlab`` or ``bitbucket``) :query string organization: return remote repositories for specific remote organization (using remote organization ``slug``) :query string expand: allows to add/expand some extra fields in the response. diff --git a/docs/user/builds.rst b/docs/user/builds.rst index 88587247c28..7b58ea75e7a 100644 --- a/docs/user/builds.rst +++ b/docs/user/builds.rst @@ -94,7 +94,7 @@ Read the Docs supports three different mechanisms to cancel a running build: When Read the Docs detects a push to a version that is already building, it cancels the running build and starts a new build using the latest commit. -:Programatically: +:Programmatically: You can use user-defined commands on ``build.jobs`` or ``build.commands`` (see :doc:`build-customization`) to check for your own cancellation condition and then return exit code ``183`` to cancel a build. diff --git a/docs/user/faq.rst b/docs/user/faq.rst index b33e5314d67..71275c73481 100644 --- a/docs/user/faq.rst +++ b/docs/user/faq.rst @@ -325,7 +325,7 @@ According to `its own documentation `_, Even though `Jupyter Book leverages Sphinx "for almost everything that it does" `_, -it purposedly hides Sphinx ``conf.py`` files from the user, +it purposely hides Sphinx ``conf.py`` files from the user, and instead generates them on the fly from its declarative ``_config.yml``. As a result, you need to follow some extra steps to make Jupyter Book work on Read the Docs. diff --git a/docs/user/glossary.rst b/docs/user/glossary.rst index adfe5b72cb6..e675b06e4d0 100644 --- a/docs/user/glossary.rst +++ b/docs/user/glossary.rst @@ -88,7 +88,7 @@ so that you have a reference for how we're using them. Another name for :term:`project home`. reproducible - A documentation project is said to be *reproducible* when its sources build correctly on Read the Docs over a periode of many years. + A documentation project is said to be *reproducible* when its sources build correctly on Read the Docs over a period of many years. You can also think of being *reproducible* as being *robust* or *resillient*. Being "reproducible" is an important positive quality goal of documentation. diff --git a/docs/user/guides/pull-requests.rst b/docs/user/guides/pull-requests.rst index a60800bdd9b..6425fdc3110 100644 --- a/docs/user/guides/pull-requests.rst +++ b/docs/user/guides/pull-requests.rst @@ -86,7 +86,7 @@ No new builds are started when I open a pull request Build status is not being reported to your Git provider If opening a pull request does start a new build, but the build status is not being updated with your Git provider, then your connected account may have out - dated or insufficient permisisons. + dated or insufficient permissions. Make sure that you have granted access to the Read the Docs `OAuth App`_ for your personal or organization GitHub account. You can also try reconnecting diff --git a/docs/user/intro/import-guide.rst b/docs/user/intro/import-guide.rst index 32fbac07ca4..be63a86a393 100644 --- a/docs/user/intro/import-guide.rst +++ b/docs/user/intro/import-guide.rst @@ -86,7 +86,7 @@ See our :doc:`/config-file/index` docs for more details. Using a configuration file :doc:`is required from September 2023 `. It is also important to note that the default version of Sphinx is ``v1.8.5``. -We recommend to set the version your project uses :doc:`explicitily with pinned dependencies `. +We recommend to set the version your project uses :doc:`explicitly with pinned dependencies `. Read the Docs will host multiple versions of your code. You can read more about how to use this well on our :doc:`/versions` page. diff --git a/docs/user/science.rst b/docs/user/science.rst index e27be70a953..65bdc85abfd 100644 --- a/docs/user/science.rst +++ b/docs/user/science.rst @@ -130,7 +130,7 @@ Here are some popular activities that are well-supported by Jupyter Book: Ready to get started? """"""""""""""""""""" -.. Note that this is a deliberate repitition of a previous segment. Should it repeat? Maybe not, but for now it's nice to be sure that people see it. +.. Note that this is a deliberate repetition of a previous segment. Should it repeat? Maybe not, but for now it's nice to be sure that people see it. * All new to this? Take the official :external+jupyterbook:doc:`Jupyter Book Tutorial » ` * Curious for practical code? See the list of :doc:`example projects » ` diff --git a/docs/user/server-side-search/api.rst b/docs/user/server-side-search/api.rst index 18a36f5ddf2..d7f6b02af4e 100644 --- a/docs/user/server-side-search/api.rst +++ b/docs/user/server-side-search/api.rst @@ -153,7 +153,7 @@ with the following changes: When searching on a parent project, results from their subprojects won't be included automatically, -to include results from subprojects use the ``subprojects`` paramater. +to include results from subprojects use the ``subprojects`` parameter. Authentication and authorization -------------------------------- diff --git a/docs/user/tutorial/index.rst b/docs/user/tutorial/index.rst index f4fcf889900..5de8c651f22 100644 --- a/docs/user/tutorial/index.rst +++ b/docs/user/tutorial/index.rst @@ -206,7 +206,7 @@ If you now click on :guilabel:`View docs`, you will see your documentation live! If you don't see the ad, you might be using an ad blocker. Our EthicalAds network respects your privacy, doesn't target you, - and tries to be as unobstrusive as possible, + and tries to be as unobtrusive as possible, so we would like to kindly ask you to :doc:`not block us ` |:heart:| Basic configuration changes diff --git a/readthedocs/api/v2/views/integrations.py b/readthedocs/api/v2/views/integrations.py index 824e1536195..e6b9b3de3bd 100644 --- a/readthedocs/api/v2/views/integrations.py +++ b/readthedocs/api/v2/views/integrations.py @@ -309,7 +309,7 @@ def get_closed_external_version_response(self, project): def update_default_branch(self, default_branch): """ - Update the `Version.identifer` for `latest` with the VCS's `default_branch`. + Update the `Version.identifier` for `latest` with the VCS's `default_branch`. The VCS's `default_branch` is the branch cloned when there is no specific branch specified (e.g. `git clone `). diff --git a/readthedocs/api/v2/views/model_views.py b/readthedocs/api/v2/views/model_views.py index 46c8e28c38b..f61b28d0ff4 100644 --- a/readthedocs/api/v2/views/model_views.py +++ b/readthedocs/api/v2/views/model_views.py @@ -156,7 +156,7 @@ def get_queryset(self): If an API key is present, we filter by the project associated with the key. Otherwise, we filter using our API manager method. - With this we check if the user/api key is authorized to acccess the object. + With this we check if the user/api key is authorized to access the object. """ api_key = getattr(self.request, "build_api_key", None) if api_key: @@ -247,7 +247,7 @@ def get_serializer_class(self): """ Return the proper serializer for UI and Admin. - This ViewSet has a sligtly different pattern since we want to + This ViewSet has a slightly different pattern since we want to pre-process the `command` field before returning it to the user, and we also want to have a specific serializer for admins. """ diff --git a/readthedocs/api/v3/serializers.py b/readthedocs/api/v3/serializers.py index a12ab8ad6fd..ab8fd30e572 100644 --- a/readthedocs/api/v3/serializers.py +++ b/readthedocs/api/v3/serializers.py @@ -575,7 +575,7 @@ def _validate_remote_repository(self, data): Validate connection between `Project` and `RemoteRepository`. We don't do anything in community, but we do ensure this relationship - is posible before creating the `Project` on commercial when the + is possible before creating the `Project` on commercial when the organization has VCS SSO enabled. If we cannot ensure the relationship here, this method should raise a diff --git a/readthedocs/builds/models.py b/readthedocs/builds/models.py index c6cef2b9587..3dbfb30942e 100644 --- a/readthedocs/builds/models.py +++ b/readthedocs/builds/models.py @@ -892,7 +892,7 @@ def config(self): """ # TODO: now that we are using a proper JSONField here, we could # probably change this field to be a ForeignKey to avoid repeating the - # config file over and over again and re-use them to save db data as + # config file over and over again and reuse them to save db data as # well if self._config and self.CONFIG_KEY in self._config: return ( @@ -1116,7 +1116,7 @@ class BuildCommandResultMixin: Mixin for common command result methods/properties. Shared methods between the database model :py:class:`BuildCommandResult` and - non-model respresentations of build command results from the API + non-model representations of build command results from the API """ @property diff --git a/readthedocs/builds/version_slug.py b/readthedocs/builds/version_slug.py index 3c15f0c1f8c..d7be140eba3 100644 --- a/readthedocs/builds/version_slug.py +++ b/readthedocs/builds/version_slug.py @@ -112,7 +112,7 @@ def slugify(self, content): space_replacement="-", ) - # Remove first character wile it's an invalid character for the + # Remove first character while it's an invalid character for the # beginning of the slug slugified = slugified.lstrip(self.ok_chars) diff --git a/readthedocs/config/config.py b/readthedocs/config/config.py index 2452621e647..53cf01260d7 100644 --- a/readthedocs/config/config.py +++ b/readthedocs/config/config.py @@ -530,7 +530,7 @@ def validate_doc_types(self): Validates that the user only have one type of documentation. This should be called before validating ``sphinx`` or ``mkdocs`` to - avoid innecessary validations. + avoid unnecessary validations. """ with self.catch_validation_error("."): if "sphinx" in self._raw_config and "mkdocs" in self._raw_config: diff --git a/readthedocs/config/notifications.py b/readthedocs/config/notifications.py index c43c148edb6..0396af277df 100644 --- a/readthedocs/config/notifications.py +++ b/readthedocs/config/notifications.py @@ -142,7 +142,7 @@ body=_( textwrap.dedent( """ - The name of the package {{pacakge}} is invalid. + The name of the package {{package}} is invalid. """ ).strip(), ), diff --git a/readthedocs/conftest.py b/readthedocs/conftest.py index 8a23a39bcd3..0a334657952 100644 --- a/readthedocs/conftest.py +++ b/readthedocs/conftest.py @@ -21,5 +21,5 @@ def clear_cache(): """ # Code run before each test yield - # Code run afer each test + # Code run after each test cache.clear() diff --git a/readthedocs/core/filters.py b/readthedocs/core/filters.py index a24db416165..177cdc93ca8 100644 --- a/readthedocs/core/filters.py +++ b/readthedocs/core/filters.py @@ -66,7 +66,7 @@ def get_filterset(self, **kwargs): :param kwargs: Arguments to pass to ``FilterSet.__init__`` """ # This method overrides the method from FilterMixin with differing - # arguments. We can switch this later if we ever resturcture the view + # arguments. We can switch this later if we ever restructure the view # pylint: disable=arguments-differ if not getattr(self, "filterset", None): filterset_class = self.get_filterset_class() diff --git a/readthedocs/core/management/commands/contact_owners.py b/readthedocs/core/management/commands/contact_owners.py index a4731bb7151..e40c69a1f0b 100644 --- a/readthedocs/core/management/commands/contact_owners.py +++ b/readthedocs/core/management/commands/contact_owners.py @@ -69,7 +69,7 @@ class Command(BaseCommand): .. note:: If you need to extend the behavior or add a new use case, - we recommend creating a simple script file that re-use the methods + we recommend creating a simple script file that reuse the methods and functions from this command. This is an example to contact Domain owners: https://gist.github.com/humitos/3e08ed4763a9312f5c0a9a997ea95a42 diff --git a/readthedocs/core/utils/filesystem.py b/readthedocs/core/utils/filesystem.py index 805120c409f..7008b1f8b75 100644 --- a/readthedocs/core/utils/filesystem.py +++ b/readthedocs/core/utils/filesystem.py @@ -162,7 +162,7 @@ def safe_rmtree(path, *args, **kwargs): """ Wrapper around shutil.rmtree to check for symlinks. - shutil.rmtree doens't follow symlinks by default, + shutil.rmtree doesn't follow symlinks by default, this function just logs in case users are trying to use symlinks. https://docs.python.org/3/library/shutil.html#shutil.rmtree diff --git a/readthedocs/doc_builder/director.py b/readthedocs/doc_builder/director.py index 806d264075b..8cc6bd6ed0f 100644 --- a/readthedocs/doc_builder/director.py +++ b/readthedocs/doc_builder/director.py @@ -590,7 +590,7 @@ def install_build_tools(self): ] ): # We cap setuptools to avoid breakage of projects - # relying on setup.py invokations, + # relying on setup.py invocations, # see https://github.com/readthedocs/readthedocs.org/issues/8659 setuptools_version = ( "setuptools<58.3.0" diff --git a/readthedocs/doc_builder/environments.py b/readthedocs/doc_builder/environments.py index c1f723fb423..d39d7fd0d2f 100644 --- a/readthedocs/doc_builder/environments.py +++ b/readthedocs/doc_builder/environments.py @@ -416,7 +416,7 @@ class BaseBuildEnvironment: :param version: Project version that is being built :param build: Build instance :param environment: shell environment variables - :param record: whether or not record a build commands in the databse via + :param record: whether or not record a build commands in the database via the API. The only case where we want this to be `False` is when instantiating this class from `sync_repository_task` because it's a background task that does not expose commands to the user. diff --git a/readthedocs/notifications/messages.py b/readthedocs/notifications/messages.py index b359fb15b59..0a89783c41e 100644 --- a/readthedocs/notifications/messages.py +++ b/readthedocs/notifications/messages.py @@ -294,7 +294,7 @@ def get_rendered_body(self): ), Message( id=BuildUserError.BUILD_OUTPUT_OLD_DIRECTORY_USED, - header=_("Your project is outputing files in an old directory"), + header=_("Your project is outputting files in an old directory"), body=_( textwrap.dedent( """ diff --git a/readthedocs/notifications/models.py b/readthedocs/notifications/models.py index be49bf21aeb..63685f3645c 100644 --- a/readthedocs/notifications/models.py +++ b/readthedocs/notifications/models.py @@ -20,7 +20,7 @@ class Notification(TimeStampedModel): message_id = models.CharField(max_length=128) # UNREAD: the notification was not shown to the user - # READ: the notifiation was shown + # READ: the notification was shown # DISMISSED: the notification was shown and the user dismissed it # CANCELLED: removed automatically because the user has done the action required (e.g. paid the subscription) state = models.CharField( @@ -35,7 +35,7 @@ class Notification(TimeStampedModel): db_index=True, ) - # Makes the notification imposible to dismiss (useful for Build notifications) + # Makes the notification impossible to dismiss (useful for Build notifications) dismissable = models.BooleanField(default=False) # Show the notification under the bell icon for the user diff --git a/readthedocs/oauth/tasks.py b/readthedocs/oauth/tasks.py index c98ba45ce80..7ca8293f719 100644 --- a/readthedocs/oauth/tasks.py +++ b/readthedocs/oauth/tasks.py @@ -66,7 +66,7 @@ def sync_remote_repositories_organizations(organization_slugs=None): It will trigger one `sync_remote_repositories` task per user. - :param organization_slugs: list containg organization's slugs to sync. If + :param organization_slugs: list containing organization's slugs to sync. If not passed, all organizations with ALLAUTH SSO enabled will be synced :type organization_slugs: list diff --git a/readthedocs/organizations/tests/test_filters.py b/readthedocs/organizations/tests/test_filters.py index ee3df5a4198..e07a5a2fff8 100644 --- a/readthedocs/organizations/tests/test_filters.py +++ b/readthedocs/organizations/tests/test_filters.py @@ -567,7 +567,7 @@ def test_filtered_queryset_team_invalid_choice(self, user, organization): indirect=True, ) def test_team_filter_choices(self, user, organization, teams): - """Team filter choices limited to organization teams with permisisons.""" + """Team filter choices limited to organization teams with permissions.""" filter = self.get_filterset_for_user( user, organization=organization, diff --git a/readthedocs/organizations/tests/test_forms.py b/readthedocs/organizations/tests/test_forms.py index 847db520ed9..3efabe8a971 100644 --- a/readthedocs/organizations/tests/test_forms.py +++ b/readthedocs/organizations/tests/test_forms.py @@ -122,7 +122,7 @@ def test_add_fresh_member_by_email(self): def test_add_duplicate_invite_by_email(self): """Add duplicate invite by email.""" self.assertEqual(self.organization.teams.count(), 1) - email = "non-existant@example.com" + email = "non-existent@example.com" self.assertEqual(Invitation.objects.all().count(), 0) diff --git a/readthedocs/projects/tasks/builds.py b/readthedocs/projects/tasks/builds.py index 4d3e38b8bb7..e584f268681 100644 --- a/readthedocs/projects/tasks/builds.py +++ b/readthedocs/projects/tasks/builds.py @@ -83,11 +83,11 @@ class TaskData: """ - Object to store all data related to a Celery task excecution. + Object to store all data related to a Celery task execution. - We use this object from inside the task to store data while we are runnig + We use this object from inside the task to store data while we are running the task. This is to avoid using `self.` inside the task due to its - limitations: it's instanciated once and that instance is re-used for all + limitations: it's instantiated once and that instance is re-used for all the tasks ran. This could produce sharing instance state between two different and unrelated tasks. @@ -773,7 +773,7 @@ def update_build(self, state=None): log.exception("Error while updating the build object.", state=state) def execute(self): - # Clonning + # Cloning self.update_build(state=BUILD_STATE_CLONING) # TODO: remove the ``create_vcs_environment`` hack. Ideally, this should be diff --git a/readthedocs/proxito/middleware.py b/readthedocs/proxito/middleware.py index b6807967a74..f9670245f7f 100644 --- a/readthedocs/proxito/middleware.py +++ b/readthedocs/proxito/middleware.py @@ -328,7 +328,7 @@ def add_cors_headers(self, request, response): """ # TODO: se should add these headers to files from docs only, # proxied APIs and other endpoints should not have CORS headers. - # These attributes aren't currently set for proxied APIs, but we shuold + # These attributes aren't currently set for proxied APIs, but we should # find a better way to do this. project_slug = getattr(request, "path_project_slug", "") version_slug = getattr(request, "path_version_slug", "") diff --git a/readthedocs/proxito/tests/test_full.py b/readthedocs/proxito/tests/test_full.py index 6d60009b9aa..9837cd1e6e4 100644 --- a/readthedocs/proxito/tests/test_full.py +++ b/readthedocs/proxito/tests/test_full.py @@ -190,7 +190,7 @@ def test_external_version_serving_old_slugs(self): """ Test external version serving with projects with `--` in their slug. - Some old projects may have been created with a slug containg `--`, + Some old projects may have been created with a slug containing `--`, our current code doesn't allow these type of slugs. """ fixture.get( diff --git a/readthedocs/proxito/views/hosting.py b/readthedocs/proxito/views/hosting.py index 8500715f505..15708dc71dd 100644 --- a/readthedocs/proxito/views/hosting.py +++ b/readthedocs/proxito/views/hosting.py @@ -35,7 +35,7 @@ class ClientError(Exception): VERSION_NOT_CURRENTLY_SUPPORTED = ( "The version specified in 'api-version' is currently not supported" ) - VERSION_INVALID = "The version specifified in 'api-version' is invalid" + VERSION_INVALID = "The version specified in 'api-version' is invalid" class BaseReadTheDocsConfigJson(CDNCacheTagsMixin, APIView): @@ -327,13 +327,13 @@ def _v0(self, project, version, build, filename, url, user): "external_version_warning": { "enabled": project.addons.external_version_warning_enabled, # NOTE: I think we are moving away from these selectors - # since we are doing floating noticications now. + # since we are doing floating notifications now. # "query_selector": "[role=main]", }, "non_latest_version_warning": { "enabled": project.addons.stable_latest_version_warning_enabled, # NOTE: I think we are moving away from these selectors - # since we are doing floating noticications now. + # since we are doing floating notifications now. # "query_selector": "[role=main]", "versions": list( versions_active_built_not_hidden.values_list("slug", flat=True) @@ -472,7 +472,7 @@ def _v0(self, project, version, build, filename, url, user): { "ethicalads": { "enabled": project.addons.ethicalads_enabled, - # NOTE: this endpoint is not authenticated, the user checks are done over an annonymous user for now + # NOTE: this endpoint is not authenticated, the user checks are done over an anonymous user for now # # NOTE: it requires ``settings.USE_PROMOS=True`` to return ``ad_free=false`` here "ad_free": is_ad_free_user(AnonymousUser()) diff --git a/readthedocs/rtd_tests/tests/test_api.py b/readthedocs/rtd_tests/tests/test_api.py index 027cc53607d..a5dbd67c06f 100644 --- a/readthedocs/rtd_tests/tests/test_api.py +++ b/readthedocs/rtd_tests/tests/test_api.py @@ -541,7 +541,7 @@ def test_get_raw_log_building(self): self.assertIn("Commit: {}".format(build.commit), resp.content.decode()) self.assertIn("Date: ", resp.content.decode()) self.assertIn("State: building", resp.content.decode()) - self.assertIn("Success: Unknow", resp.content.decode()) + self.assertIn("Success: Unknown", resp.content.decode()) self.assertIn("[rtd-command-info]", resp.content.decode()) self.assertIn( "python setup.py install\nInstalling dependencies...", diff --git a/readthedocs/rtd_tests/tests/test_automation_rules.py b/readthedocs/rtd_tests/tests/test_automation_rules.py index a6b9df0e507..55716ec0c50 100644 --- a/readthedocs/rtd_tests/tests/test_automation_rules.py +++ b/readthedocs/rtd_tests/tests/test_automation_rules.py @@ -400,7 +400,7 @@ def test_add_rule_regex(self): assert self.project.automation_rules.count() == 2 assert rule.priority == 0 - # Adding a rule with a not secuencial priority + # Adding a rule with a not sequential priority rule = get( RegexAutomationRule, description="Third rule", diff --git a/readthedocs/rtd_tests/tests/test_doc_building.py b/readthedocs/rtd_tests/tests/test_doc_building.py index 128dab250d3..58ba5faf369 100644 --- a/readthedocs/rtd_tests/tests/test_doc_building.py +++ b/readthedocs/rtd_tests/tests/test_doc_building.py @@ -233,7 +233,7 @@ def test_result(self): def test_missing_command(self): """Test missing command.""" - path = os.path.join("non-existant", str(uuid.uuid4())) + path = os.path.join("non-existent", str(uuid.uuid4())) self.assertFalse(os.path.exists(path)) cmd = BuildCommand(path) cmd.run() diff --git a/readthedocs/rtd_tests/utils.py b/readthedocs/rtd_tests/utils.py index 4c940367ac4..022fda710a0 100644 --- a/readthedocs/rtd_tests/utils.py +++ b/readthedocs/rtd_tests/utils.py @@ -214,7 +214,7 @@ def delete_git_branch(directory, branch): def create_git_submodule( directory, submodule, - msg="Add realative submodule", + msg="Add relative submodule", branch="master", ): env = environ.copy() diff --git a/readthedocs/search/tests/data/sphinx/in/page.html b/readthedocs/search/tests/data/sphinx/in/page.html index 224d82846c9..658d8638a5b 100644 --- a/readthedocs/search/tests/data/sphinx/in/page.html +++ b/readthedocs/search/tests/data/sphinx/in/page.html @@ -151,7 +151,7 @@

Footnotes and domains - +
1(1,2)
diff --git a/readthedocs/settings/docker_compose.py b/readthedocs/settings/docker_compose.py index 1b2a99cd405..08d50a4309f 100644 --- a/readthedocs/settings/docker_compose.py +++ b/readthedocs/settings/docker_compose.py @@ -57,7 +57,7 @@ class DockerBaseSettings(CommunityBaseSettings): def DOCROOT(self): # Add an extra directory level using the container's hostname. # This allows us to run development environment with multiple builders (`--scale-build=2` or more), - # and avoid the builders overwritting each others when building the same project/version + # and avoid the builders overwriting each others when building the same project/version return os.path.join(super().DOCROOT, socket.gethostname()) # New templates @@ -210,7 +210,7 @@ def DATABASES(self): # noqa @property def SOCIALACCOUNT_PROVIDERS(self): - """Allow settings social account settigs from the host system.""" + """Allow settings social account settings from the host system.""" providers = self._SOCIALACCOUNT_PROVIDERS for provider in providers.keys(): try: diff --git a/readthedocs/subscriptions/tests/test_views.py b/readthedocs/subscriptions/tests/test_views.py index c6517207545..504d597c65d 100644 --- a/readthedocs/subscriptions/tests/test_views.py +++ b/readthedocs/subscriptions/tests/test_views.py @@ -113,7 +113,7 @@ def test_active_subscription(self): self.assertEqual(resp.context["stripe_subscription"], self.stripe_subscription) self.assertContains(resp, "active") self.assertNotContains(resp, "Extra products:") - # The subscribe form isn't shown, but the manage susbcription button is. + # The subscribe form isn't shown, but the manage subscription button is. self.assertContains(resp, "Manage Subscription") self.assertNotContains(resp, "Create Subscription") @@ -131,7 +131,7 @@ def test_active_subscription_with_extra_product(self): self.assertEqual(resp.context["stripe_subscription"], self.stripe_subscription) self.assertContains(resp, "active") self.assertContains(resp, "Extra products:") - # The subscribe form isn't shown, but the manage susbcription button is. + # The subscribe form isn't shown, but the manage subscription button is. self.assertContains(resp, "Manage Subscription") self.assertNotContains(resp, "Create Subscription") diff --git a/readthedocs/telemetry/collectors.py b/readthedocs/telemetry/collectors.py index 4b32644654e..471dde3a1e1 100644 --- a/readthedocs/telemetry/collectors.py +++ b/readthedocs/telemetry/collectors.py @@ -17,7 +17,7 @@ class BuildDataCollector: """ Build data collector. - Collect data from a runnig build. + Collect data from a running build. """ def __init__(self, environment): @@ -58,7 +58,7 @@ def run(self, *args, **kwargs): def collect(self): """ - Collect all relevant data from the runnig build. + Collect all relevant data from the running build. Data that can be extracted from the database (project/organization) isn't collected here. diff --git a/readthedocs/templates/projects/notifications/deprecated_github_webhook_email.html b/readthedocs/templates/projects/notifications/deprecated_github_webhook_email.html index b55a906c932..31da9541464 100644 --- a/readthedocs/templates/projects/notifications/deprecated_github_webhook_email.html +++ b/readthedocs/templates/projects/notifications/deprecated_github_webhook_email.html @@ -4,7 +4,7 @@

To continue building your Read the Docs project on changes to your repository, you will need to add a new webhook on your GitHub repository. You can either connect your GitHub account and configure a GitHub webhook integration, or you can add a generic webhook integration.

-

You can find more information on our webhook intergrations in our documentation, at:

+

You can find more information on our webhook integrations in our documentation, at:

{% comment %}Plain text link because of text version of email{% endcomment %}

https://docs.readthedocs.io/page/webhooks.html#webhook-github-services

diff --git a/readthedocs/templates/projects/notifications/deprecated_github_webhook_email.txt b/readthedocs/templates/projects/notifications/deprecated_github_webhook_email.txt index 07eeb747b5b..3ced4a361fb 100644 --- a/readthedocs/templates/projects/notifications/deprecated_github_webhook_email.txt +++ b/readthedocs/templates/projects/notifications/deprecated_github_webhook_email.txt @@ -9,7 +9,7 @@ you will need to add a new webhook on your GitHub repository. You can either connect your GitHub account and configure a GitHub webhook integration, or you can add a generic webhook integration. -You can find more information on our webhook intergrations in our documentation, at: +You can find more information on our webhook integrations in our documentation, at: https://docs.readthedocs.io/page/webhooks.html#webhook-github-services {% endblock %} diff --git a/readthedocs/templates/projects/project_dashboard_base.html b/readthedocs/templates/projects/project_dashboard_base.html index 875c1080aed..adfde6d7717 100644 --- a/readthedocs/templates/projects/project_dashboard_base.html +++ b/readthedocs/templates/projects/project_dashboard_base.html @@ -77,7 +77,7 @@

{% trans "Projects" %}

{% trans "passing" %} {% else %} {% trans "failing" %} - {# TODO: What whould be show here when "not build.sucess and cancelled"? #} + {# TODO: What would be show here when "not build.success and cancelled"? #} {% endif %} {% else %} {% trans "No builds yet" %} diff --git a/requirements/pip.in b/requirements/pip.in index ce480229257..fdd3cde7a97 100644 --- a/requirements/pip.in +++ b/requirements/pip.in @@ -76,7 +76,7 @@ redis celery==5.2.7 django-celery-beat -# Docker images need a dependency explicity marked for tzdata in order to have +# Docker images need a dependency explicitly marked for tzdata in order to have # necessary timezone data. # https://github.com/readthedocs/readthedocs.org/issues/10453 # TODO: remove this dependency once we upgrade Celery. It should auto-install it. diff --git a/scripts/compile_version_upload_s3.sh b/scripts/compile_version_upload_s3.sh index e9f30458b5f..8d1dd6e3f50 100755 --- a/scripts/compile_version_upload_s3.sh +++ b/scripts/compile_version_upload_s3.sh @@ -6,7 +6,7 @@ # This script automates the process to build and upload a Python/Node/Rust/Go # version and upload it to S3 making it available for the builders. When a # pre-compiled version is available in the cache, builds are faster because they -# don't have to donwload and compile the requested version. +# don't have to download and compile the requested version. # # # LOCAL DEVELOPMENT ENVIRONMENT