Commit Graph

200 Commits

Author SHA1 Message Date
Adam Turner
9e3f4521db Drop support for Python 3.9 (#12633) 2024-07-22 15:05:15 +01:00
Adam Turner
3421e5382a Narrow `Generator[T, None, None] types to Iterator[T]` (#12241) 2024-04-09 03:26:44 +01:00
danieleades
d4c739cdd1 [lint] add PERF401 lint (#12070)
Co-authored-by: daniel.eades <daniel.eades@seebyte.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2024-03-14 11:16:36 +01:00
James Addison
2fe103acda Maintenance: apply pyupgrade suggestions for py3.9 (#11910) 2024-02-14 11:05:47 +01:00
Adam Turner
55f3089981 Improve uses of `str.join` with a throwaway list 2024-01-16 22:06:34 +00:00
danieleades
f7fbfaa471 Enable various pydocstyle (D) rules (#11878)
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
2024-01-14 21:13:46 +00:00
danieleades
64e7ba5e3f Enable the entire pycodestyle category (#11820)
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
2023-12-28 06:41:32 +00:00
Adam Turner
36012b7d96 Fix TCH002 (move third-party import into a type-checking block) 2023-08-13 22:50:03 +01:00
Adam Turner
d80eab689d Fix EM10{1,2} (exception must not use a string) 2023-08-13 22:11:15 +01:00
Adam Turner
1dcc112608 Fix B006 (Do not use mutable data structures for argument defaults) 2023-08-13 22:11:15 +01:00
Adam Turner
92e60b3f15 Fix PGH003 (type: ignore comment must have parameters) 2023-08-13 22:11:15 +01:00
Adam Turner
ad61e41157 Drop support for Python 3.8 (#11511) 2023-07-25 02:07:23 +01:00
picnixz
480630c649 Support PEP 695 and PEP 696 syntax in the Python domain (#11444)
* Generic classes can be documented with ``.. py:class::`` using PEP 695 syntax:

  .. code:: rst

     .. py:class:: Sequence[T]

* Generic functions can be documented with ``.. py:function::`` using PEP 695 syntax:

  .. code:: rst

     .. py:function:: foo[T](x: T)

* Default values for type bounds are supported.

Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
2023-07-23 23:22:40 +01:00
danieleades
4de540efb6 Enable mypy 'strict optional' for 19 modules (#11422)
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
2023-07-23 21:29:04 +01:00
TLouf
86b07d4a97 Allow multi-line object description signatures (#11011)
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
Co-authored-by: Jean-François B <2589111+jfbu@users.noreply.github.com>
Co-authored-by: TLouf <loufthomas@gmail.com>
2023-05-11 14:28:57 +01:00
Adam Turner
aee3c0ab75 Partially revert "Disable localisation when SOURCE_DATE_EPOCH is set (#10949)" (#11343)
This keeps some of the added tests, and avoids a full revert of ``sphinx.locale``.
2023-04-21 19:04:26 +01:00
James Addison
f82c3c9912 Disable localisation when `SOURCE_DATE_EPOCH` is set (#10949)
This commit disables Sphinx's localisation features when reproducible
builds are requested, as determined by a non-empty SOURCE_DATE_EPOCH_
environment variable.

The `Reproducible Builds`_ project aims to provide confidence to
consumers of packaged software that the artefacts they're downloading
and installing have not been altered by the environment they were
built in, and can be replicated at a later date if required.

Builds of localised documentation using Sphinx currently account for
a large category of reproducible build testing failures, because the
builders intentionally use varying environment locales at build-time.
This can affect the contents of the ``objects.inv`` file.

During investigation, it turned out that many ``gettext``-localised
values (particularly in Python modules under ``sphinx.domains``) were
being translated at module-load-time and would not subsequently be
re-localised.

This creates two unusual effects:

1. Attempting to write a test case to build the same application in
   two different languages was not initially possible, as the
   first-loaded translation catalogue (as found in the 
   ``sphinx.locale.translators`` global variable) would remain in-use
   for subsequent application builds under different locales.

2. Localisation of strings could vary depending on whether the
   relevant modules were loaded before or after the resource
   catalogues were populated.

We fix this by performing all translations lazily so that module
imports can occur in any order and localisation of inventory entries
should occur only when translations of those items are requested.

Localisation can then be disabled by configuring the ``gettext``
language to the ISO-639-3 'undetermined' code (``'und'``), as this
should not have an associated translation catalogue. We also want to
prevent ``gettext`` from  attempting to determine the host's locale
from environment variables (including ``LANGUAGE``).

.. _SOURCE_DATE_EPOCH: https://reproducible-builds.org/docs/source-date-epoch/
.. _Reproducible Builds: https://www.reproducible-builds.org/
2023-04-07 17:49:36 +01:00
Adam Turner
52a099b7ec Resolve lint errors from Ruff 0.0.261 2023-04-05 14:19:43 +01:00
Adam Turner
15553da9c8 Resolve lint errors from Ruff 0.0.260 2023-03-31 17:52:51 +01:00
Adam Turner
c8f4a03dac Fix COM812 2023-02-18 01:58:05 +00:00
Adam Turner
bb9821b968 Resolve Ruff SIM114 violations 2023-02-15 02:09:47 +00:00
danieleades
dbf36f8b37 Shrink 'any-generics' whitelist for 'writers' module (#10867)
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
2023-01-02 05:29:46 +00:00
Adam Turner
4032070e81 Run pyupgrade (#11070) 2023-01-02 00:01:14 +00:00
Adam Turner
14a9289d78 Use PEP 604 types 2023-01-01 20:48:39 +00:00
Adam Turner
26f79b0d2d Use PEP 595 types 2023-01-01 20:48:38 +00:00
Adam Turner
f4c8a0a68e Insert `from __future__ import annotations` 2023-01-01 20:48:37 +00:00
Adam Turner
5775912455 Collapse single line docstrings 2022-02-20 03:13:45 +00:00
Adam Turner
6bb7b891a1 Remove copyright and licence fields 2022-02-20 03:06:23 +00:00
Adam Turner
5694e0ce60 Fix module docstring indentation 2022-02-20 00:35:13 +00:00
Adam Turner
4f5a3269a6 Fix module docstring first line 2022-02-20 00:11:08 +00:00
Adam Turner
6b8bccec59 Remove module titles in docstrings 2022-02-19 23:17:29 +00:00
Daniel Eades
6697ed62ed address some unused loop control variables (B007) 2022-01-12 20:19:18 +00:00
Takeshi KOMIYA
05a898ecb4 Migrate to Node.findall() from Node.traverse()
Node.traverse() was marked as deprecated since docutils-0.18.  Instead
of it, Node.findall() has been added as successor of traverse().

This applies a patch to docutils-0.17 or older to be available
Node.findall() and use it.
2022-01-03 00:35:29 +09:00
Takeshi KOMIYA
f38bd8e952 Merge branch '4.3.x' into 4.x 2022-01-01 20:02:10 +09:00
Takeshi KOMIYA
b84771dcd2 A happy new year! 2022-01-01 18:45:03 +09:00
Takeshi KOMIYA
f2dc8a999a Fix flake8 warnings 2021-12-24 01:54:30 +09:00
James Knight
75914c67c7 drop translator-specific unknown_visit calls
Removes the need for various translators from raising a
`NotImplementedError` exception when missing support for a specific node
type. docutils will already raise [1][2] a `NotImplementedError`
exception for these cases. This help reduce the implementation inside
Sphinx as well as prevents the possible undesired replication of
unknown-node handling with third-party extensions [3].

In most cases, generating a warning message for an unsupported node type
can be preferred. Providing an indication that a node is not supported
can be easier for a user of Sphinx to understand a limitation of a
builder over a generic "not implemented" exception. This commit takes
the logging call which is already used by `texinfo` and applies it to
the `SphinxTranslator` base class -- which any Sphinx translator
implementation can use.

[1]: https://repo.or.cz/docutils.git/blob/d169015ee0f412cffd69b33654d8a119d99bc0f3:/docutils/nodes.py#l2048
[2]: https://repo.or.cz/docutils.git/blob/53716a13b48128af6045139d3cd2909f61e7ed8e:/docutils/nodes.py#l1897
[3]: https://github.com/sphinx-doc/sphinx/issues/9921

Signed-off-by: James Knight <james.d.knight@live.com>
2021-12-05 15:03:57 -05:00
Takeshi KOMIYA
179e0bf8a2 refactor: Node.traverse() will returns generator since 0.18 2021-10-10 15:50:39 +09:00
Louis Maddox
6b5dd4517e Improve sphinx.writers.text docstrings 2021-07-18 20:03:28 +01:00
Jakob Lykke Andersen
7126503eeb Decl styling, update writers
Add test objects so all builders gets exposed to the new nodes.
Make the fallback node post-transform change desc_inline as well.
Make the html4, latex, and text writers handle desc_inline.
2021-04-12 19:07:51 +02:00
Takeshi KOMIYA
dd24a4ef2d refactor: Use PEP-526 based variable annotation (sphinx.writers) 2021-03-13 16:20:09 +09:00
Takeshi KOMIYA
4b452338f9 Merge branch '3.x' 2021-01-01 13:57:19 +09:00
Takeshi KOMIYA
f996859420 A happy new year!
.. note::

   $ find sphinx tests LICENSE doc/conf.py -type f -exec sed -i '' -e 's/2007\-20../2007-2021/' {} \;
   $ git co sphinx/locale/**/*.js sphinx/templates/epub3/mimetype
2021-01-01 13:40:48 +09:00
Takeshi KOMIYA
279e547860 Merge branch '3.x' 2020-11-12 02:50:43 +09:00
François Freitag
0949735210 Sort imports with isort
Keep imports alphabetically sorted and their order homogeneous across
Python source files.

The isort project has more feature and is more active than the
flake8-import-order plugin.

Most issues caught were simply import ordering from the same module.
Where imports were purposefully placed out of order, tag with
isort:skip.
2020-11-11 13:19:05 +01:00
Takeshi KOMIYA
449a567732 Merge branch '3.x' 2020-11-02 22:25:10 +09:00
Brecht Machiels
c9d8eac5ac Don't remove substitution_reference nodes (fix #7953)
SubstitutionDefinitionsRemover is now a SphinxPostTransform, only
applied in the Sphinx builder, as was originally the case (see #4827).
2020-09-08 17:34:02 +02:00
Takeshi KOMIYA
327c187284 Merge branch '3.x' 2020-07-24 23:49:45 +09:00
Tetsuo Koyama
ae7c4cc3b8 fix typo 2020-07-19 00:43:11 +00:00
Takeshi KOMIYA
ec3754bd94 Merge branch '3.x' 2020-07-05 01:32:54 +09:00