We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[Docs] Clarify that "Keywords" page is an API reference for `setuptools.setup`
### Summary

https://setuptools.readthedocs.io/en/latest/references/keywords.html has no indicators what those keywords are for.

It also doesn't show up if you search for "setuptools.setup" in the sidebar search, and is generally innaccessible via search engines as well. It also has poor formatting, likely due to mismanaged indentation on the page.

### OS / Environment

_No response_

### Additional Information

It would be good to:

- have an introductory section in the page, describing what it is for -- explicitly mention "setuptools.setup" in this as well.
- provide anchors for each of the keyword arguments.
- fix the indentation for the list of various arguments.


### Code of Conduct

- [X] I agree to follow the PSF Code of Conduct

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `docs/conf.py`
Content:
```
1 extensions = ['sphinx.ext.autodoc', 'jaraco.packaging.sphinx', 'rst.linker']
2 
3 master_doc = "index"
4 
5 link_files = {
6     '../CHANGES.rst': dict(
7         using=dict(
8             BB='https://bitbucket.org',
9             GH='https://github.com',
10         ),
11         replace=[
12             dict(
13                 pattern=r'(?<!\w)PR #(?P<pull>\d+)',
14                 url='{package_url}/pull/{pull}',
15             ),
16             dict(
17                 pattern=r'(?<!\w)(Issue )?#(?P<issue>\d+)',
18                 url='{package_url}/issues/{issue}',
19             ),
20             dict(
21                 pattern=r'BB Pull Request ?#(?P<bb_pull_request>\d+)',
22                 url='{BB}/pypa/setuptools/pull-request/{bb_pull_request}',
23             ),
24             dict(
25                 pattern=r'Distribute #(?P<distribute>\d+)',
26                 url='{BB}/tarek/distribute/issue/{distribute}',
27             ),
28             dict(
29                 pattern=r'Buildout #(?P<buildout>\d+)',
30                 url='{GH}/buildout/buildout/issues/{buildout}',
31             ),
32             dict(
33                 pattern=r'Old Setuptools #(?P<old_setuptools>\d+)',
34                 url='http://bugs.python.org/setuptools/issue{old_setuptools}',
35             ),
36             dict(
37                 pattern=r'Jython #(?P<jython>\d+)',
38                 url='http://bugs.jython.org/issue{jython}',
39             ),
40             dict(
41                 pattern=r'(Python #|bpo-)(?P<python>\d+)',
42                 url='http://bugs.python.org/issue{python}',
43             ),
44             dict(
45                 pattern=r'Interop #(?P<interop>\d+)',
46                 url='{GH}/pypa/interoperability-peps/issues/{interop}',
47             ),
48             dict(
49                 pattern=r'Pip #(?P<pip>\d+)',
50                 url='{GH}/pypa/pip/issues/{pip}',
51             ),
52             dict(
53                 pattern=r'Packaging #(?P<packaging>\d+)',
54                 url='{GH}/pypa/packaging/issues/{packaging}',
55             ),
56             dict(
57                 pattern=r'[Pp]ackaging (?P<packaging_ver>\d+(\.\d+)+)',
58                 url='{GH}/pypa/packaging/blob/{packaging_ver}/CHANGELOG.rst',
59             ),
60             dict(
61                 pattern=r'(?<![`/\w])PEP[- ](?P<pep_number>\d+)',
62                 url='https://www.python.org/dev/peps/pep-{pep_number:0>4}/',
63             ),
64             dict(
65                 pattern=r'setuptools_svn #(?P<setuptools_svn>\d+)',
66                 url='{GH}/jaraco/setuptools_svn/issues/{setuptools_svn}',
67             ),
68             dict(
69                 pattern=r'pypa/(?P<issue_repo>[\-\.\w]+)#(?P<issue_number>\d+)',
70                 url='{GH}/pypa/{issue_repo}/issues/{issue_number}',
71             ),
72             dict(
73                 pattern=r'pypa/(?P<commit_repo>[\-\.\w]+)@(?P<commit_number>[\da-f]+)',
74                 url='{GH}/pypa/{commit_repo}/commit/{commit_number}',
75             ),
76             dict(
77                 pattern=r'^(?m)((?P<scm_version>v?\d+(\.\d+){1,2}))\n[-=]+\n',
78                 with_scm='{text}\n{rev[timestamp]:%d %b %Y}\n',
79             ),
80         ],
81     ),
82 }
83 
84 # Be strict about any broken references:
85 nitpicky = True
86 
87 # Include Python intersphinx mapping to prevent failures
88 # jaraco/skeleton#51
89 extensions += ['sphinx.ext.intersphinx']
90 intersphinx_mapping = {
91     'python': ('https://docs.python.org/3', None),
92 }
93 
94 intersphinx_mapping.update({
95     'pypa-build': ('https://pypa-build.readthedocs.io/en/latest/', None)
96 })
97 
98 # Add support for linking usernames
99 github_url = 'https://github.com'
100 github_repo_org = 'pypa'
101 github_repo_name = 'setuptools'
102 github_repo_slug = f'{github_repo_org}/{github_repo_name}'
103 github_repo_url = f'{github_url}/{github_repo_slug}'
104 github_sponsors_url = f'{github_url}/sponsors'
105 extlinks = {
106     'user': (f'{github_sponsors_url}/%s', '@'),  # noqa: WPS323
107     'pypi': ('https://pypi.org/project/%s', '%s'),  # noqa: WPS323
108     'wiki': ('https://wikipedia.org/wiki/%s', '%s'),  # noqa: WPS323
109 }
110 extensions += ['sphinx.ext.extlinks']
111 
112 # Ref: https://github.com/python-attrs/attrs/pull/571/files\
113 #      #diff-85987f48f1258d9ee486e3191495582dR82
114 default_role = 'any'
115 
116 # HTML theme
117 html_theme = 'furo'
118 html_logo = "images/logo.svg"
119 
120 html_theme_options = {
121     "sidebar_hide_name": True,
122     "light_css_variables": {
123         "color-brand-primary": "#336790",  # "blue"
124         "color-brand-content": "#336790",
125     },
126     "dark_css_variables": {
127         "color-brand-primary": "#E5B62F",  # "yellow"
128         "color-brand-content": "#E5B62F",
129     },
130 }
131 
132 # Add support for inline tabs
133 extensions += ['sphinx_inline_tabs']
134 
135 # Support for distutils
136 
137 # Ref: https://stackoverflow.com/a/30624034/595220
138 nitpick_ignore = [
139     ('c:func', 'SHGetSpecialFolderPath'),  # ref to MS docs
140     ('envvar', 'DISTUTILS_DEBUG'),  # undocumented
141     ('envvar', 'HOME'),  # undocumented
142     ('envvar', 'PLAT'),  # undocumented
143     ('py:attr', 'CCompiler.language_map'),  # undocumented
144     ('py:attr', 'CCompiler.language_order'),  # undocumented
145     ('py:class', 'distutils.dist.Distribution'),  # undocumented
146     ('py:class', 'distutils.extension.Extension'),  # undocumented
147     ('py:class', 'BorlandCCompiler'),  # undocumented
148     ('py:class', 'CCompiler'),  # undocumented
149     ('py:class', 'CygwinCCompiler'),  # undocumented
150     ('py:class', 'distutils.dist.DistributionMetadata'),  # undocumented
151     ('py:class', 'FileList'),  # undocumented
152     ('py:class', 'IShellLink'),  # ref to MS docs
153     ('py:class', 'MSVCCompiler'),  # undocumented
154     ('py:class', 'OptionDummy'),  # undocumented
155     ('py:class', 'UnixCCompiler'),  # undocumented
156     ('py:exc', 'CompileError'),  # undocumented
157     ('py:exc', 'DistutilsExecError'),  # undocumented
158     ('py:exc', 'DistutilsFileError'),  # undocumented
159     ('py:exc', 'LibError'),  # undocumented
160     ('py:exc', 'LinkError'),  # undocumented
161     ('py:exc', 'PreprocessError'),  # undocumented
162     ('py:func', 'distutils.CCompiler.new_compiler'),  # undocumented
163     # undocumented:
164     ('py:func', 'distutils.dist.DistributionMetadata.read_pkg_file'),
165     ('py:func', 'distutils.file_util._copy_file_contents'),  # undocumented
166     ('py:func', 'distutils.log.debug'),  # undocumented
167     ('py:func', 'distutils.spawn.find_executable'),  # undocumented
168     ('py:func', 'distutils.spawn.spawn'),  # undocumented
169     # TODO: check https://docutils.rtfd.io in the future
170     ('py:mod', 'docutils'),  # there's no Sphinx site documenting this
171 ]
172 
173 # Allow linking objects on other Sphinx sites seamlessly:
174 intersphinx_mapping.update(
175     python2=('https://docs.python.org/2', None),
176     python=('https://docs.python.org/3', None),
177 )
178 
179 # Add support for the unreleased "next-version" change notes
180 extensions += ['sphinxcontrib.towncrier']
181 # Extension needs a path from here to the towncrier config.
182 towncrier_draft_working_directory = '..'
183 # Avoid an empty section for unpublished changes.
184 towncrier_draft_include_empty = False
185 
186 extensions += ['jaraco.tidelift']
187 
188 # Add icons (aka "favicons") to documentation
189 extensions += ['sphinx-favicon']
190 html_static_path = ['images']  # should contain the folder with icons
191 
192 # List of dicts with <link> HTML attributes
193 # static-file points to files in the html_static_path (href is computed)
194 favicons = [
195     {  # "Catch-all" goes first, otherwise some browsers will overwrite
196         "rel": "icon",
197         "type": "image/svg+xml",
198         "static-file": "logo-symbol-only.svg",
199         "sizes": "any"
200     },
201     {  # Version with thicker strokes for better visibility at smaller sizes
202         "rel": "icon",
203         "type": "image/svg+xml",
204         "static-file": "favicon.svg",
205         "sizes": "16x16 24x24 32x32 48x48"
206     },
207     # rel="apple-touch-icon" does not support SVG yet
208 ]
209 
210 intersphinx_mapping['pip'] = 'https://pip.pypa.io/en/latest', None
211 intersphinx_mapping['PyPUG'] = ('https://packaging.python.org/en/latest/', None)
212 intersphinx_mapping['packaging'] = ('https://packaging.pypa.io/en/latest/', None)
213 intersphinx_mapping['importlib-resources'] = (
214     'https://importlib-resources.readthedocs.io/en/latest', None
215 )
216
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/docs/conf.py b/docs/conf.py
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -129,6 +129,12 @@
     },
 }
 
+# Redirect old docs so links and references in the ecosystem don't break
+extensions += ['sphinx_reredirects']
+redirects = {
+    "userguide/keywords": "/deprecated/changed_keywords.html",
+}
+
 # Add support for inline tabs
 extensions += ['sphinx_inline_tabs']

{"golden_diff": "diff --git a/docs/conf.py b/docs/conf.py\n--- a/docs/conf.py\n+++ b/docs/conf.py\n@@ -129,6 +129,12 @@\n     },\n }\n \n+# Redirect old docs so links and references in the ecosystem don't break\n+extensions += ['sphinx_reredirects']\n+redirects = {\n+    \"userguide/keywords\": \"/deprecated/changed_keywords.html\",\n+}\n+\n # Add support for inline tabs\n extensions += ['sphinx_inline_tabs']\n", "issue": "[Docs] Clarify that \"Keywords\" page is an API reference for `setuptools.setup`\n### Summary\n\nhttps://setuptools.readthedocs.io/en/latest/references/keywords.html has no indicators what those keywords are for.\r\n\r\nIt also doesn't show up if you search for \"setuptools.setup\" in the sidebar search, and is generally innaccessible via search engines as well. It also has poor formatting, likely due to mismanaged indentation on the page.\n\n### OS / Environment\n\n_No response_\n\n### Additional Information\n\nIt would be good to:\r\n\r\n- have an introductory section in the page, describing what it is for -- explicitly mention \"setuptools.setup\" in this as well.\r\n- provide anchors for each of the keyword arguments.\r\n- fix the indentation for the list of various arguments.\r\n\n\n### Code of Conduct\n\n- [X] I agree to follow the PSF Code of Conduct\n", "before_files": [{"content": "extensions = ['sphinx.ext.autodoc', 'jaraco.packaging.sphinx', 'rst.linker']\n\nmaster_doc = \"index\"\n\nlink_files = {\n    '../CHANGES.rst': dict(\n        using=dict(\n            BB='https://bitbucket.org',\n            GH='https://github.com',\n        ),\n        replace=[\n            dict(\n                pattern=r'(?<!\\w)PR #(?P<pull>\\d+)',\n                url='{package_url}/pull/{pull}',\n            ),\n            dict(\n                pattern=r'(?<!\\w)(Issue )?#(?P<issue>\\d+)',\n                url='{package_url}/issues/{issue}',\n            ),\n            dict(\n                pattern=r'BB Pull Request ?#(?P<bb_pull_request>\\d+)',\n                url='{BB}/pypa/setuptools/pull-request/{bb_pull_request}',\n            ),\n            dict(\n                pattern=r'Distribute #(?P<distribute>\\d+)',\n                url='{BB}/tarek/distribute/issue/{distribute}',\n            ),\n            dict(\n                pattern=r'Buildout #(?P<buildout>\\d+)',\n                url='{GH}/buildout/buildout/issues/{buildout}',\n            ),\n            dict(\n                pattern=r'Old Setuptools #(?P<old_setuptools>\\d+)',\n                url='http://bugs.python.org/setuptools/issue{old_setuptools}',\n            ),\n            dict(\n                pattern=r'Jython #(?P<jython>\\d+)',\n                url='http://bugs.jython.org/issue{jython}',\n            ),\n            dict(\n                pattern=r'(Python #|bpo-)(?P<python>\\d+)',\n                url='http://bugs.python.org/issue{python}',\n            ),\n            dict(\n                pattern=r'Interop #(?P<interop>\\d+)',\n                url='{GH}/pypa/interoperability-peps/issues/{interop}',\n            ),\n            dict(\n                pattern=r'Pip #(?P<pip>\\d+)',\n                url='{GH}/pypa/pip/issues/{pip}',\n            ),\n            dict(\n                pattern=r'Packaging #(?P<packaging>\\d+)',\n                url='{GH}/pypa/packaging/issues/{packaging}',\n            ),\n            dict(\n                pattern=r'[Pp]ackaging (?P<packaging_ver>\\d+(\\.\\d+)+)',\n                url='{GH}/pypa/packaging/blob/{packaging_ver}/CHANGELOG.rst',\n            ),\n            dict(\n                pattern=r'(?<![`/\\w])PEP[- ](?P<pep_number>\\d+)',\n                url='https://www.python.org/dev/peps/pep-{pep_number:0>4}/',\n            ),\n            dict(\n                pattern=r'setuptools_svn #(?P<setuptools_svn>\\d+)',\n                url='{GH}/jaraco/setuptools_svn/issues/{setuptools_svn}',\n            ),\n            dict(\n                pattern=r'pypa/(?P<issue_repo>[\\-\\.\\w]+)#(?P<issue_number>\\d+)',\n                url='{GH}/pypa/{issue_repo}/issues/{issue_number}',\n            ),\n            dict(\n                pattern=r'pypa/(?P<commit_repo>[\\-\\.\\w]+)@(?P<commit_number>[\\da-f]+)',\n                url='{GH}/pypa/{commit_repo}/commit/{commit_number}',\n            ),\n            dict(\n                pattern=r'^(?m)((?P<scm_version>v?\\d+(\\.\\d+){1,2}))\\n[-=]+\\n',\n                with_scm='{text}\\n{rev[timestamp]:%d %b %Y}\\n',\n            ),\n        ],\n    ),\n}\n\n# Be strict about any broken references:\nnitpicky = True\n\n# Include Python intersphinx mapping to prevent failures\n# jaraco/skeleton#51\nextensions += ['sphinx.ext.intersphinx']\nintersphinx_mapping = {\n    'python': ('https://docs.python.org/3', None),\n}\n\nintersphinx_mapping.update({\n    'pypa-build': ('https://pypa-build.readthedocs.io/en/latest/', None)\n})\n\n# Add support for linking usernames\ngithub_url = 'https://github.com'\ngithub_repo_org = 'pypa'\ngithub_repo_name = 'setuptools'\ngithub_repo_slug = f'{github_repo_org}/{github_repo_name}'\ngithub_repo_url = f'{github_url}/{github_repo_slug}'\ngithub_sponsors_url = f'{github_url}/sponsors'\nextlinks = {\n    'user': (f'{github_sponsors_url}/%s', '@'),  # noqa: WPS323\n    'pypi': ('https://pypi.org/project/%s', '%s'),  # noqa: WPS323\n    'wiki': ('https://wikipedia.org/wiki/%s', '%s'),  # noqa: WPS323\n}\nextensions += ['sphinx.ext.extlinks']\n\n# Ref: https://github.com/python-attrs/attrs/pull/571/files\\\n#      #diff-85987f48f1258d9ee486e3191495582dR82\ndefault_role = 'any'\n\n# HTML theme\nhtml_theme = 'furo'\nhtml_logo = \"images/logo.svg\"\n\nhtml_theme_options = {\n    \"sidebar_hide_name\": True,\n    \"light_css_variables\": {\n        \"color-brand-primary\": \"#336790\",  # \"blue\"\n        \"color-brand-content\": \"#336790\",\n    },\n    \"dark_css_variables\": {\n        \"color-brand-primary\": \"#E5B62F\",  # \"yellow\"\n        \"color-brand-content\": \"#E5B62F\",\n    },\n}\n\n# Add support for inline tabs\nextensions += ['sphinx_inline_tabs']\n\n# Support for distutils\n\n# Ref: https://stackoverflow.com/a/30624034/595220\nnitpick_ignore = [\n    ('c:func', 'SHGetSpecialFolderPath'),  # ref to MS docs\n    ('envvar', 'DISTUTILS_DEBUG'),  # undocumented\n    ('envvar', 'HOME'),  # undocumented\n    ('envvar', 'PLAT'),  # undocumented\n    ('py:attr', 'CCompiler.language_map'),  # undocumented\n    ('py:attr', 'CCompiler.language_order'),  # undocumented\n    ('py:class', 'distutils.dist.Distribution'),  # undocumented\n    ('py:class', 'distutils.extension.Extension'),  # undocumented\n    ('py:class', 'BorlandCCompiler'),  # undocumented\n    ('py:class', 'CCompiler'),  # undocumented\n    ('py:class', 'CygwinCCompiler'),  # undocumented\n    ('py:class', 'distutils.dist.DistributionMetadata'),  # undocumented\n    ('py:class', 'FileList'),  # undocumented\n    ('py:class', 'IShellLink'),  # ref to MS docs\n    ('py:class', 'MSVCCompiler'),  # undocumented\n    ('py:class', 'OptionDummy'),  # undocumented\n    ('py:class', 'UnixCCompiler'),  # undocumented\n    ('py:exc', 'CompileError'),  # undocumented\n    ('py:exc', 'DistutilsExecError'),  # undocumented\n    ('py:exc', 'DistutilsFileError'),  # undocumented\n    ('py:exc', 'LibError'),  # undocumented\n    ('py:exc', 'LinkError'),  # undocumented\n    ('py:exc', 'PreprocessError'),  # undocumented\n    ('py:func', 'distutils.CCompiler.new_compiler'),  # undocumented\n    # undocumented:\n    ('py:func', 'distutils.dist.DistributionMetadata.read_pkg_file'),\n    ('py:func', 'distutils.file_util._copy_file_contents'),  # undocumented\n    ('py:func', 'distutils.log.debug'),  # undocumented\n    ('py:func', 'distutils.spawn.find_executable'),  # undocumented\n    ('py:func', 'distutils.spawn.spawn'),  # undocumented\n    # TODO: check https://docutils.rtfd.io in the future\n    ('py:mod', 'docutils'),  # there's no Sphinx site documenting this\n]\n\n# Allow linking objects on other Sphinx sites seamlessly:\nintersphinx_mapping.update(\n    python2=('https://docs.python.org/2', None),\n    python=('https://docs.python.org/3', None),\n)\n\n# Add support for the unreleased \"next-version\" change notes\nextensions += ['sphinxcontrib.towncrier']\n# Extension needs a path from here to the towncrier config.\ntowncrier_draft_working_directory = '..'\n# Avoid an empty section for unpublished changes.\ntowncrier_draft_include_empty = False\n\nextensions += ['jaraco.tidelift']\n\n# Add icons (aka \"favicons\") to documentation\nextensions += ['sphinx-favicon']\nhtml_static_path = ['images']  # should contain the folder with icons\n\n# List of dicts with <link> HTML attributes\n# static-file points to files in the html_static_path (href is computed)\nfavicons = [\n    {  # \"Catch-all\" goes first, otherwise some browsers will overwrite\n        \"rel\": \"icon\",\n        \"type\": \"image/svg+xml\",\n        \"static-file\": \"logo-symbol-only.svg\",\n        \"sizes\": \"any\"\n    },\n    {  # Version with thicker strokes for better visibility at smaller sizes\n        \"rel\": \"icon\",\n        \"type\": \"image/svg+xml\",\n        \"static-file\": \"favicon.svg\",\n        \"sizes\": \"16x16 24x24 32x32 48x48\"\n    },\n    # rel=\"apple-touch-icon\" does not support SVG yet\n]\n\nintersphinx_mapping['pip'] = 'https://pip.pypa.io/en/latest', None\nintersphinx_mapping['PyPUG'] = ('https://packaging.python.org/en/latest/', None)\nintersphinx_mapping['packaging'] = ('https://packaging.pypa.io/en/latest/', None)\nintersphinx_mapping['importlib-resources'] = (\n    'https://importlib-resources.readthedocs.io/en/latest', None\n)\n", "path": "docs/conf.py"}], "after_files": [{"content": "extensions = ['sphinx.ext.autodoc', 'jaraco.packaging.sphinx', 'rst.linker']\n\nmaster_doc = \"index\"\n\nlink_files = {\n    '../CHANGES.rst': dict(\n        using=dict(\n            BB='https://bitbucket.org',\n            GH='https://github.com',\n        ),\n        replace=[\n            dict(\n                pattern=r'(?<!\\w)PR #(?P<pull>\\d+)',\n                url='{package_url}/pull/{pull}',\n            ),\n            dict(\n                pattern=r'(?<!\\w)(Issue )?#(?P<issue>\\d+)',\n                url='{package_url}/issues/{issue}',\n            ),\n            dict(\n                pattern=r'BB Pull Request ?#(?P<bb_pull_request>\\d+)',\n                url='{BB}/pypa/setuptools/pull-request/{bb_pull_request}',\n            ),\n            dict(\n                pattern=r'Distribute #(?P<distribute>\\d+)',\n                url='{BB}/tarek/distribute/issue/{distribute}',\n            ),\n            dict(\n                pattern=r'Buildout #(?P<buildout>\\d+)',\n                url='{GH}/buildout/buildout/issues/{buildout}',\n            ),\n            dict(\n                pattern=r'Old Setuptools #(?P<old_setuptools>\\d+)',\n                url='http://bugs.python.org/setuptools/issue{old_setuptools}',\n            ),\n            dict(\n                pattern=r'Jython #(?P<jython>\\d+)',\n                url='http://bugs.jython.org/issue{jython}',\n            ),\n            dict(\n                pattern=r'(Python #|bpo-)(?P<python>\\d+)',\n                url='http://bugs.python.org/issue{python}',\n            ),\n            dict(\n                pattern=r'Interop #(?P<interop>\\d+)',\n                url='{GH}/pypa/interoperability-peps/issues/{interop}',\n            ),\n            dict(\n                pattern=r'Pip #(?P<pip>\\d+)',\n                url='{GH}/pypa/pip/issues/{pip}',\n            ),\n            dict(\n                pattern=r'Packaging #(?P<packaging>\\d+)',\n                url='{GH}/pypa/packaging/issues/{packaging}',\n            ),\n            dict(\n                pattern=r'[Pp]ackaging (?P<packaging_ver>\\d+(\\.\\d+)+)',\n                url='{GH}/pypa/packaging/blob/{packaging_ver}/CHANGELOG.rst',\n            ),\n            dict(\n                pattern=r'(?<![`/\\w])PEP[- ](?P<pep_number>\\d+)',\n                url='https://www.python.org/dev/peps/pep-{pep_number:0>4}/',\n            ),\n            dict(\n                pattern=r'setuptools_svn #(?P<setuptools_svn>\\d+)',\n                url='{GH}/jaraco/setuptools_svn/issues/{setuptools_svn}',\n            ),\n            dict(\n                pattern=r'pypa/(?P<issue_repo>[\\-\\.\\w]+)#(?P<issue_number>\\d+)',\n                url='{GH}/pypa/{issue_repo}/issues/{issue_number}',\n            ),\n            dict(\n                pattern=r'pypa/(?P<commit_repo>[\\-\\.\\w]+)@(?P<commit_number>[\\da-f]+)',\n                url='{GH}/pypa/{commit_repo}/commit/{commit_number}',\n            ),\n            dict(\n                pattern=r'^(?m)((?P<scm_version>v?\\d+(\\.\\d+){1,2}))\\n[-=]+\\n',\n                with_scm='{text}\\n{rev[timestamp]:%d %b %Y}\\n',\n            ),\n        ],\n    ),\n}\n\n# Be strict about any broken references:\nnitpicky = True\n\n# Include Python intersphinx mapping to prevent failures\n# jaraco/skeleton#51\nextensions += ['sphinx.ext.intersphinx']\nintersphinx_mapping = {\n    'python': ('https://docs.python.org/3', None),\n}\n\nintersphinx_mapping.update({\n    'pypa-build': ('https://pypa-build.readthedocs.io/en/latest/', None)\n})\n\n# Add support for linking usernames\ngithub_url = 'https://github.com'\ngithub_repo_org = 'pypa'\ngithub_repo_name = 'setuptools'\ngithub_repo_slug = f'{github_repo_org}/{github_repo_name}'\ngithub_repo_url = f'{github_url}/{github_repo_slug}'\ngithub_sponsors_url = f'{github_url}/sponsors'\nextlinks = {\n    'user': (f'{github_sponsors_url}/%s', '@'),  # noqa: WPS323\n    'pypi': ('https://pypi.org/project/%s', '%s'),  # noqa: WPS323\n    'wiki': ('https://wikipedia.org/wiki/%s', '%s'),  # noqa: WPS323\n}\nextensions += ['sphinx.ext.extlinks']\n\n# Ref: https://github.com/python-attrs/attrs/pull/571/files\\\n#      #diff-85987f48f1258d9ee486e3191495582dR82\ndefault_role = 'any'\n\n# HTML theme\nhtml_theme = 'furo'\nhtml_logo = \"images/logo.svg\"\n\nhtml_theme_options = {\n    \"sidebar_hide_name\": True,\n    \"light_css_variables\": {\n        \"color-brand-primary\": \"#336790\",  # \"blue\"\n        \"color-brand-content\": \"#336790\",\n    },\n    \"dark_css_variables\": {\n        \"color-brand-primary\": \"#E5B62F\",  # \"yellow\"\n        \"color-brand-content\": \"#E5B62F\",\n    },\n}\n\n# Redirect old docs so links and references in the ecosystem don't break\nextensions += ['sphinx_reredirects']\nredirects = {\n    \"userguide/keywords\": \"/deprecated/changed_keywords.html\",\n}\n\n# Add support for inline tabs\nextensions += ['sphinx_inline_tabs']\n\n# Support for distutils\n\n# Ref: https://stackoverflow.com/a/30624034/595220\nnitpick_ignore = [\n    ('c:func', 'SHGetSpecialFolderPath'),  # ref to MS docs\n    ('envvar', 'DISTUTILS_DEBUG'),  # undocumented\n    ('envvar', 'HOME'),  # undocumented\n    ('envvar', 'PLAT'),  # undocumented\n    ('py:attr', 'CCompiler.language_map'),  # undocumented\n    ('py:attr', 'CCompiler.language_order'),  # undocumented\n    ('py:class', 'distutils.dist.Distribution'),  # undocumented\n    ('py:class', 'distutils.extension.Extension'),  # undocumented\n    ('py:class', 'BorlandCCompiler'),  # undocumented\n    ('py:class', 'CCompiler'),  # undocumented\n    ('py:class', 'CygwinCCompiler'),  # undocumented\n    ('py:class', 'distutils.dist.DistributionMetadata'),  # undocumented\n    ('py:class', 'FileList'),  # undocumented\n    ('py:class', 'IShellLink'),  # ref to MS docs\n    ('py:class', 'MSVCCompiler'),  # undocumented\n    ('py:class', 'OptionDummy'),  # undocumented\n    ('py:class', 'UnixCCompiler'),  # undocumented\n    ('py:exc', 'CompileError'),  # undocumented\n    ('py:exc', 'DistutilsExecError'),  # undocumented\n    ('py:exc', 'DistutilsFileError'),  # undocumented\n    ('py:exc', 'LibError'),  # undocumented\n    ('py:exc', 'LinkError'),  # undocumented\n    ('py:exc', 'PreprocessError'),  # undocumented\n    ('py:func', 'distutils.CCompiler.new_compiler'),  # undocumented\n    # undocumented:\n    ('py:func', 'distutils.dist.DistributionMetadata.read_pkg_file'),\n    ('py:func', 'distutils.file_util._copy_file_contents'),  # undocumented\n    ('py:func', 'distutils.log.debug'),  # undocumented\n    ('py:func', 'distutils.spawn.find_executable'),  # undocumented\n    ('py:func', 'distutils.spawn.spawn'),  # undocumented\n    # TODO: check https://docutils.rtfd.io in the future\n    ('py:mod', 'docutils'),  # there's no Sphinx site documenting this\n]\n\n# Allow linking objects on other Sphinx sites seamlessly:\nintersphinx_mapping.update(\n    python2=('https://docs.python.org/2', None),\n    python=('https://docs.python.org/3', None),\n)\n\n# Add support for the unreleased \"next-version\" change notes\nextensions += ['sphinxcontrib.towncrier']\n# Extension needs a path from here to the towncrier config.\ntowncrier_draft_working_directory = '..'\n# Avoid an empty section for unpublished changes.\ntowncrier_draft_include_empty = False\n\nextensions += ['jaraco.tidelift']\n\n# Add icons (aka \"favicons\") to documentation\nextensions += ['sphinx-favicon']\nhtml_static_path = ['images']  # should contain the folder with icons\n\n# List of dicts with <link> HTML attributes\n# static-file points to files in the html_static_path (href is computed)\nfavicons = [\n    {  # \"Catch-all\" goes first, otherwise some browsers will overwrite\n        \"rel\": \"icon\",\n        \"type\": \"image/svg+xml\",\n        \"static-file\": \"logo-symbol-only.svg\",\n        \"sizes\": \"any\"\n    },\n    {  # Version with thicker strokes for better visibility at smaller sizes\n        \"rel\": \"icon\",\n        \"type\": \"image/svg+xml\",\n        \"static-file\": \"favicon.svg\",\n        \"sizes\": \"16x16 24x24 32x32 48x48\"\n    },\n    # rel=\"apple-touch-icon\" does not support SVG yet\n]\n\nintersphinx_mapping['pip'] = 'https://pip.pypa.io/en/latest', None\nintersphinx_mapping['PyPUG'] = ('https://packaging.python.org/en/latest/', None)\nintersphinx_mapping['packaging'] = ('https://packaging.pypa.io/en/latest/', None)\nintersphinx_mapping['importlib-resources'] = (\n    'https://importlib-resources.readthedocs.io/en/latest', None\n)\n", "path": "docs/conf.py"}]}