diff --git a/bin/lint b/bin/lint index 3ca9d5af5777..59a1559c43a5 100755 --- a/bin/lint +++ b/bin/lint @@ -15,7 +15,7 @@ find . -name '*.py' -exec python -m pyupgrade --py312-plus {} + python -m flake8 . python -m black --check --diff *.py warehouse/ tests/ python -m isort --check *.py warehouse/ tests/ -python -m doc8 --allow-long-titles README.rst CONTRIBUTING.rst docs/ --ignore-path "docs/**/_build/" +sphinx-lint --enable=all --disable=line-too-long README.rst CONTRIBUTING.rst docs/dev/ --ignore=docs/dev/_build/ python -m curlylint ./warehouse/templates ./docs/blog python -m mypy -p warehouse ./bin/flushes diff --git a/docs/dev/api-reference/xml-rpc.rst b/docs/dev/api-reference/xml-rpc.rst index f6a9c469e96e..271bbfe3acc0 100644 --- a/docs/dev/api-reference/xml-rpc.rst +++ b/docs/dev/api-reference/xml-rpc.rst @@ -49,10 +49,10 @@ Changes to XMLRPC API incident `_. - ``package_releases`` As Warehouse does not support the concept of hidden - releases, the `show_hidden` flag now controls whether the latest version or + releases, the ``show_hidden`` flag now controls whether the latest version or all versions are returned. -- ``release_data`` The `stable_version` flag is always an empty string. It was +- ``release_data`` The ``stable_version`` flag is always an empty string. It was never fully supported anyway. - ``release_downloads`` and ``top_packages`` No longer supported. Use @@ -81,7 +81,7 @@ Retrieve the last event's serial id (an ``int``). ``changelog_since_serial(since_serial)`` ++++++++++++++++++++++++++++++++++++++++ -Retrieve a list of `(name, version, timestamp, action, serial)` since the +Retrieve a list of ``(name, version, timestamp, action, serial)`` since the event identified by the given ``since_serial``. All timestamps are UTC values. @@ -98,20 +98,20 @@ Package querying ``package_roles(package_name)`` +++++++++++++++++++++++++++++++ -Retrieve a list of `[role, user]` for a given `package_name`. -Role is either `Maintainer` or `Owner`. +Retrieve a list of ``[role, user]`` for a given ``package_name``. +Role is either ``Maintainer`` or ``Owner``. ``user_packages(user)`` +++++++++++++++++++++++ -Retrieve a list of `[role, package_name]` for a given `user`. -Role is either `Maintainer` or `Owner`. +Retrieve a list of ``[role, package_name]`` for a given ``user``. +Role is either ``Maintainer`` or ``Owner``. ``browse(classifiers)`` +++++++++++++++++++++++ -Retrieve a list of `[name, version]` of all releases classified with all of -the given classifiers. `classifiers` must be a list of Trove classifier +Retrieve a list of ``[name, version]`` of all releases classified with all of +the given classifiers. ``classifiers`` must be a list of Trove classifier strings. ``updated_releases(since)`` @@ -143,10 +143,10 @@ Returns a list of name strings. .. warning:: Migrate to using the :doc:`json`. -Retrieve a list of the releases registered for the given `package_name`, +Retrieve a list of the releases registered for the given ``package_name``, ordered by version. -If `show_hidden` is `False` (the default), only the latest version is +If ``show_hidden`` is ``False`` (the default), only the latest version is returned. Otherwise, all versions are returned. ``release_urls(package_name, release_version)`` @@ -155,7 +155,7 @@ returned. Otherwise, all versions are returned. .. warning:: Migrate to using the :doc:`json`. -Retrieve a list of download URLs for the given `release_version`. +Retrieve a list of download URLs for the given ``release_version``. Returns a list of dicts with the following keys: * filename @@ -176,7 +176,7 @@ Returns a list of dicts with the following keys: .. warning:: Migrate to using the :doc:`json`. -Retrieve metadata describing a specific `release_version`. +Retrieve metadata describing a specific ``release_version``. Returns a dict with keys for: * name @@ -219,7 +219,7 @@ Deprecated Methods .. warning:: The following methods are permanently deprecated and will return a - `RuntimeError` + ``RuntimeError`` ``changelog(since, with_ids=False)`` ++++++++++++++++++++++++++++++++++++ diff --git a/docs/dev/development/email.rst b/docs/dev/development/email.rst index 0bfa125f2b5a..9200496979fd 100644 --- a/docs/dev/development/email.rst +++ b/docs/dev/development/email.rst @@ -40,7 +40,7 @@ Calling a function with the ``_email`` decorator does the following: response - A security log is added to the user's account - The email is sent using Amazon SES (on production environment) -- A metric is sent to Datadog named `warehouse.emails.scheduled` with the tags +- A metric is sent to Datadog named ``warehouse.emails.scheduled`` with the tags ``template_name``, ``allow_unverified``, and ``repeat_window``. .. _testing-e-mails: diff --git a/docs/dev/development/getting-started.rst b/docs/dev/development/getting-started.rst index 9bef627efbd9..c65617d2c2a1 100644 --- a/docs/dev/development/getting-started.rst +++ b/docs/dev/development/getting-started.rst @@ -188,7 +188,7 @@ application. (on Windows by editing the config file found at ``C:\Users\\AppData\Local\Docker\wsl``). If you are using Linux, you may need to configure the maximum map count to get - the `opensearch` up and running. According to the + the ``opensearch`` up and running. According to the `documentation `_ this can be set temporarily: @@ -369,7 +369,7 @@ They also have the following Recovery Codes generated: Using different accounts will allow you to see different parts of the site, and have slightly different experiences. -For example, using `miketheman` will require email verification. +For example, using ``miketheman`` will require email verification. See :ref:`testing-e-mails` for more information on how to see those emails. Logging in as users without 2FA diff --git a/docs/dev/development/legacy-application-structure.rst b/docs/dev/development/legacy-application-structure.rst index b7f76fbf513c..325bc6c5d181 100644 --- a/docs/dev/development/legacy-application-structure.rst +++ b/docs/dev/development/legacy-application-structure.rst @@ -40,39 +40,39 @@ The :action parameters are typically submitted through GET URL parameters, though some actions are also POST actions. **could be nuked without fuss** - - `display` was used to display a package version but was replaced ages ago + - ``display`` was used to display a package version but was replaced ages ago by the // URL structure - - all the user-based stuff like `register_form`, `user`, `user_form`, - `forgotten_password_form`, `login`, `logout`, `forgotten_password`, - `password_reset`, `pw_reset` and `pw_reset_change` will most likely be + - all the user-based stuff like ``register_form``, ``user``, ``user_form``, + ``forgotten_password_form``, ``login``, ``logout``, ``forgotten_password``, + ``password_reset``, ``pw_reset`` and ``pw_reset_change`` will most likely be replaced by newer mechanisms in warehouse - - `openid_endpoint`, `openid_decide_post` could also be replaced by something + - ``openid_endpoint``, ``openid_decide_post`` could also be replaced by something else. - - `home` is the old home page thing and completely unnecessary - - `index` is overwhelming given the number of projects now. - - `browse` and `search` are *probably* only referenced by internal links so + - ``home`` is the old home page thing and completely unnecessary + - ``index`` is overwhelming given the number of projects now. + - ``browse`` and ``search`` are *probably* only referenced by internal links so should be safe to nuke - - `submit_pkg_info` and `display_pkginfo` probably aren't used - - `submit_form` and `pkg_edit` will be changing anyway - - `files`, `urls`, `role`, `role_form` are old style and will be changing - - `list_classifiers` .. this might actually only be used by Richard :) - - `claim`, `openid`, `openid_return`, `dropid` are legacy openid login + - ``submit_pkg_info`` and ``display_pkginfo`` probably aren't used + - ``submit_form`` and ``pkg_edit`` will be changing anyway + - ``files``, ``urls``, ``role``, ``role_form`` are old style and will be changing + - ``list_classifiers`` .. this might actually only be used by Richard :) + - ``claim``, ``openid``, ``openid_return``, ``dropid`` are legacy openid login support and will be changing - - `clear_auth` "clears" Basic Auth - - `addkey`, `delkey` will be changing if we even keep supporting ssh submit - - `verify` probably isn't actually used by anyone - - `lasthour` is a pubsubhubbub thing - does this even exist any longer? - - `json` is never used as a :action invocation, only ever //json - - `gae_file` I'm pretty sure this is not necessary - - `rss_regen` manually regens the RSS cached files, not needed - - `about` No longer needed. - - `delete_user` No longer needed. - - `exception` No longer needed. + - ``clear_auth`` "clears" Basic Auth + - ``addkey``, ``delkey`` will be changing if we even keep supporting ssh submit + - ``verify`` probably isn't actually used by anyone + - ``lasthour`` is a pubsubhubbub thing - does this even exist any longer? + - ``json`` is never used as a :action invocation, only ever //json + - ``gae_file`` I'm pretty sure this is not necessary + - ``rss_regen`` manually regens the RSS cached files, not needed + - ``about`` No longer needed. + - ``delete_user`` No longer needed. + - ``exception`` No longer needed. **will need to retain** - - `rss` and `packages_rss` will be in a bunch of peoples` RSS readers - - `doap` is most likely referred to - - `show_md5` ? + - ``rss`` and ``packages_rss`` will be in a bunch of peoples` RSS readers + - ``doap`` is most likely referred to + - ``show_md5`` ? **can be deprecated carefully** - - `submit`, `upload`, `doc_upload`, `file_upload`, + - ``submit``, ``upload``, ``doc_upload``, ``file_upload``, diff --git a/docs/dev/development/submitting-patches.rst b/docs/dev/development/submitting-patches.rst index fdced742af68..9b2b6f040575 100644 --- a/docs/dev/development/submitting-patches.rst +++ b/docs/dev/development/submitting-patches.rst @@ -61,7 +61,7 @@ Documentation ------------- Important information should be documented with prose in the ``docs`` section. -To ensure it builds and passes `doc8`_ style checks you can run +To ensure it builds and passes documentation style checks you can run ``make dev-docs user-docs`` and ``make lint`` respectively. @@ -187,6 +187,5 @@ feature branch at least once while you are working on it. .. _`Write comments as complete sentences.`: https://nedbatchelder.com/blog/201401/comments_should_be_sentences.html .. _`syntax`: https://sphinx-doc.org/domains.html#info-field-lists .. _`Studies have shown`: https://static1.smartbear.co/support/media/resources/cc/book/code-review-cisco-case-study.pdf -.. _`doc8`: https://github.com/PyCQA/doc8 .. _`coverage.py`: https://pypi.org/project/coverage .. _`the Black Code Style`: https://github.com/psf/black#the-black-code-style diff --git a/docs/dev/development/token-scanning.rst b/docs/dev/development/token-scanning.rst index 52a1e7f539d6..7dddbcec7eb2 100644 --- a/docs/dev/development/token-scanning.rst +++ b/docs/dev/development/token-scanning.rst @@ -67,7 +67,7 @@ the request at the bottom. If all went well, you should see a ``204`` ('No Content'). Whether it worked or not, a bunch of metrics have been issued, you can see them -in the `notdatadog` container log. +in the ``notdatadog`` container log. GitLab Secret Detection ----------------------- diff --git a/requirements/lint.in b/requirements/lint.in index 36cb738f24b5..b89c02d73e1e 100644 --- a/requirements/lint.in +++ b/requirements/lint.in @@ -1,4 +1,3 @@ -doc8>=1.1.0 flake8 curlylint pep8-naming @@ -9,6 +8,7 @@ mypy celery-types msgpack-types mypy-zope +sphinx-lint types-babel types-boto3 types-certifi diff --git a/requirements/lint.txt b/requirements/lint.txt index a0998a0682c4..b2ba981d3732 100644 --- a/requirements/lint.txt +++ b/requirements/lint.txt @@ -144,16 +144,6 @@ curlylint==0.13.1 \ --hash=sha256:008b9d160f3920404ac12efb05c0a39e209cb972f9aafd956b79c5f4e2162752 \ --hash=sha256:9546ea82cdfc9292fd6fe49dca28587164bd315782a209c0a46e013d7f38d2fa # via -r requirements/lint.in -doc8==1.1.1 \ - --hash=sha256:d97a93e8f5a2efc4713a0804657dedad83745cca4cd1d88de9186f77f9776004 \ - --hash=sha256:e493aa3f36820197c49f407583521bb76a0fde4fffbcd0e092be946ff95931ac - # via -r requirements/lint.in -docutils==0.20.1 \ - --hash=sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6 \ - --hash=sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b - # via - # doc8 - # restructuredtext-lint flake8==7.1.1 \ --hash=sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38 \ --hash=sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213 @@ -289,10 +279,6 @@ pathspec==0.12.1 \ # via # black # curlylint -pbr==6.0.0 \ - --hash=sha256:4a7317d5e3b17a3dccb6a8cfe67dab65b20551404c52c8ed41279fa4f0cb4cda \ - --hash=sha256:d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9 - # via stevedore pep8-naming==0.14.1 \ --hash=sha256:1ef228ae80875557eb6c1549deafed4dabbf3261cfcafa12f773fe0db9be8a36 \ --hash=sha256:63f514fc777d715f935faf185dedd679ab99526a7f2f503abb61587877f7b1c5 @@ -301,6 +287,10 @@ platformdirs==4.2.2 \ --hash=sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee \ --hash=sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3 # via black +polib==1.2.0 \ + --hash=sha256:1c77ee1b81feb31df9bca258cbc58db1bbb32d10214b173882452c73af06d62d \ + --hash=sha256:f3ef94aefed6e183e342a8a269ae1fc4742ba193186ad76f175938621dbfc26b + # via sphinx-lint pycodestyle==2.12.1 \ --hash=sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3 \ --hash=sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521 @@ -313,21 +303,95 @@ pyflakes==3.2.0 \ --hash=sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f \ --hash=sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a # via flake8 -pygments==2.18.0 \ - --hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \ - --hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a - # via doc8 pyupgrade==3.17.0 \ --hash=sha256:cbc8f67a61d3f4e7ca9c2ef57b9aae67f023d3780ce30c99fccec78401723754 \ --hash=sha256:d5dd1dcaf9a016c31508bb9d3d09fd335d736578092f91df52bb26ac30c37919 # via -r requirements/lint.in -restructuredtext-lint==1.4.0 \ - --hash=sha256:1b235c0c922341ab6c530390892eb9e92f90b9b75046063e047cacfb0f050c45 - # via doc8 -stevedore==5.2.0 \ - --hash=sha256:1c15d95766ca0569cad14cb6272d4d31dae66b011a929d7c18219c176ea1b5c9 \ - --hash=sha256:46b93ca40e1114cea93d738a6c1e365396981bb6bb78c27045b7587c9473544d - # via doc8 +regex==2024.7.24 \ + --hash=sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c \ + --hash=sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535 \ + --hash=sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24 \ + --hash=sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce \ + --hash=sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc \ + --hash=sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5 \ + --hash=sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce \ + --hash=sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53 \ + --hash=sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d \ + --hash=sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c \ + --hash=sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908 \ + --hash=sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8 \ + --hash=sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024 \ + --hash=sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281 \ + --hash=sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a \ + --hash=sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169 \ + --hash=sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364 \ + --hash=sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa \ + --hash=sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be \ + --hash=sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53 \ + --hash=sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759 \ + --hash=sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e \ + --hash=sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b \ + --hash=sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52 \ + --hash=sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610 \ + --hash=sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05 \ + --hash=sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2 \ + --hash=sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca \ + --hash=sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0 \ + --hash=sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293 \ + --hash=sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289 \ + --hash=sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e \ + --hash=sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f \ + --hash=sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c \ + --hash=sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94 \ + --hash=sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad \ + --hash=sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46 \ + --hash=sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9 \ + --hash=sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9 \ + --hash=sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee \ + --hash=sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9 \ + --hash=sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1 \ + --hash=sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9 \ + --hash=sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799 \ + --hash=sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1 \ + --hash=sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b \ + --hash=sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf \ + --hash=sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5 \ + --hash=sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2 \ + --hash=sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e \ + --hash=sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51 \ + --hash=sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506 \ + --hash=sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73 \ + --hash=sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7 \ + --hash=sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5 \ + --hash=sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57 \ + --hash=sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4 \ + --hash=sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd \ + --hash=sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b \ + --hash=sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41 \ + --hash=sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe \ + --hash=sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59 \ + --hash=sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8 \ + --hash=sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f \ + --hash=sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e \ + --hash=sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750 \ + --hash=sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1 \ + --hash=sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96 \ + --hash=sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc \ + --hash=sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440 \ + --hash=sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe \ + --hash=sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38 \ + --hash=sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950 \ + --hash=sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2 \ + --hash=sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd \ + --hash=sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce \ + --hash=sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66 \ + --hash=sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3 \ + --hash=sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86 + # via sphinx-lint +sphinx-lint==0.9.1 \ + --hash=sha256:185cee19ff1129549c45e15a3b25404daeb47c54d15112dda589cedad82957aa \ + --hash=sha256:df34271ab65ce43676cbd90726f4dea5cd200b43b01448b2aee8f06e609edcbb + # via -r requirements/lint.in tokenize-rt==6.0.0 \ --hash=sha256:b9711bdfc51210211137499b5e355d3de5ec88a85d2025c520cbb921b5194367 \ --hash=sha256:d4ff7ded2873512938b4f8cbb98c9b07118f01d30ac585a30d7a88353ca36d22