From b26d89be7831cf3b01bd428832b830e03c45dd44 Mon Sep 17 00:00:00 2001 From: "Bernhard M. Wiedemann" Date: Fri, 26 Jul 2024 01:40:46 +0200 Subject: [PATCH 01/12] Avoid storing build time in gzip headers (#13) Co-authored-by: James Addison --- sphinxcontrib/devhelp/__init__.py | 2 +- tests/test_devhelp.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/sphinxcontrib/devhelp/__init__.py b/sphinxcontrib/devhelp/__init__.py index 0f14258..4ffa887 100644 --- a/sphinxcontrib/devhelp/__init__.py +++ b/sphinxcontrib/devhelp/__init__.py @@ -124,7 +124,7 @@ def write_index(title: str, refs: list[Any], subitems: Any) -> None: # Dump the XML file xmlfile = path.join(outdir, outname + '.devhelp.gz') - with gzip.open(xmlfile, 'w') as f: + with gzip.GzipFile(filename=xmlfile, mode='w', mtime=0) as f: tree.write(f, 'utf-8') # type: ignore diff --git a/tests/test_devhelp.py b/tests/test_devhelp.py index 680f7ac..1928174 100644 --- a/tests/test_devhelp.py +++ b/tests/test_devhelp.py @@ -1,4 +1,5 @@ """Test for devhelp extension.""" +from time import sleep import pytest @@ -6,3 +7,19 @@ @pytest.mark.sphinx('devhelp', testroot='basic') def test_basic(app, status, warning): app.builder.build_all() + + +@pytest.mark.sphinx('devhelp', testroot='basic', freshenv=True) +def test_basic_deterministic_build(app): + app.config.devhelp_basename, output_filename = 'testing', 'testing.devhelp.gz' + + app.builder.build_all() + output_initial = (app.outdir / output_filename).read_bytes() + + sleep(2) + + app.builder.build_all() + output_repeat = (app.outdir / output_filename).read_bytes() + + msg = f"Content of '{output_filename}' differed between builds." + assert output_repeat == output_initial, msg From 7d9c3accdeca3e27f38f611ff64f98c4737cc813 Mon Sep 17 00:00:00 2001 From: James Addison <55152140+jayaddison@users.noreply.github.com> Date: Fri, 26 Jul 2024 00:41:32 +0100 Subject: [PATCH 02/12] Distinguish the names of two mutually-shadowing variables whose types have diverged (#14) --- sphinxcontrib/devhelp/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sphinxcontrib/devhelp/__init__.py b/sphinxcontrib/devhelp/__init__.py index 4ffa887..bcb0d2c 100644 --- a/sphinxcontrib/devhelp/__init__.py +++ b/sphinxcontrib/devhelp/__init__.py @@ -118,8 +118,8 @@ def write_index(title: str, refs: list[Any], subitems: Any) -> None: write_index("%s %s" % (parent_title, subitem[0]), subitem[1], []) - for (key, group) in index: - for title, (refs, subitems, key) in group: + for (_group_key, group) in index: + for title, (refs, subitems, _category_key) in group: write_index(title, refs, subitems) # Dump the XML file From dfd5da02d9d846fea0162634d56d89900b0242f1 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sat, 27 Jul 2024 18:38:41 +0100 Subject: [PATCH 03/12] Update .gitignore --- .gitignore | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index b018007..10cef94 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,17 @@ *.pyc -*.egg -*.so -*.swp .DS_Store +idea/ +.vscode/ + .mypy_cache/ +.pytest_cache/ +.ruff_cache/ .tags .tox/ +.venv/ +venv/ + build/ dist/ -sphinxcontrib_devhelp.egg-info/ From ca445c4d752edc64ea746e8dd1dc6fa14303f730 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sun, 28 Jul 2024 05:02:29 +0100 Subject: [PATCH 04/12] Adopt Ruff and use stricter MyPy settings --- .flake8 | 4 --- .github/workflows/test.yml | 4 ++- .ruff.toml | 53 +++++++++++++++++++++++++++++++ Makefile | 2 +- pyproject.toml | 36 +++++++++++++++++++-- sphinxcontrib/devhelp/__init__.py | 20 ++++++------ tests/conftest.py | 15 ++++----- tests/test_devhelp.py | 11 +++++-- tox.ini | 6 ++-- 9 files changed, 117 insertions(+), 34 deletions(-) delete mode 100644 .flake8 create mode 100644 .ruff.toml diff --git a/.flake8 b/.flake8 deleted file mode 100644 index 5af0a95..0000000 --- a/.flake8 +++ /dev/null @@ -1,4 +0,0 @@ -[flake8] -max-line-length = 95 -ignore = E116,E241,E251 -exclude = .git,.tox,.venv diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8cd7db1..856df5b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -71,7 +71,9 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - env: [flake8, mypy] + env: + - ruff + - mypy steps: - uses: actions/checkout@v3 diff --git a/.ruff.toml b/.ruff.toml new file mode 100644 index 0000000..4b7dd2a --- /dev/null +++ b/.ruff.toml @@ -0,0 +1,53 @@ +target-version = "py39" # Pin Ruff to Python 3.9 +output-format = "full" +line-length = 95 + +[lint] +preview = true +select = [ +# "ANN", # flake8-annotations + "C4", # flake8-comprehensions + "COM", # flake8-commas + "B", # flake8-bugbear + "DTZ", # flake8-datetimez + "E", # pycodestyle + "EM", # flake8-errmsg + "EXE", # flake8-executable + "F", # pyflakes + "FA", # flake8-future-annotations + "FLY", # flynt + "FURB", # refurb + "G", # flake8-logging-format + "I", # isort + "ICN", # flake8-import-conventions + "INT", # flake8-gettext + "LOG", # flake8-logging + "PERF", # perflint + "PGH", # pygrep-hooks + "PIE", # flake8-pie + "PT", # flake8-pytest-style + "SIM", # flake8-simplify + "SLOT", # flake8-slots + "TCH", # flake8-type-checking + "UP", # pyupgrade + "W", # pycodestyle + "YTT", # flake8-2020 +] +ignore = [ + "E116", + "E241", + "E251", +] + +[lint.per-file-ignores] +"tests/*" = [ + "ANN", # tests don't need annotations +] + +[lint.isort] +forced-separate = [ + "tests", +] +required-imports = [ + "from __future__ import annotations", +] diff --git a/Makefile b/Makefile index 26f411a..438ee54 100644 --- a/Makefile +++ b/Makefile @@ -47,7 +47,7 @@ clean-mypyfiles: .PHONY: style-check style-check: - @flake8 + @ruff check .PHONY: type-check type-check: diff --git a/pyproject.toml b/pyproject.toml index f8492ca..0a9adc3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,9 +47,9 @@ test = [ "pytest", ] lint = [ - "flake8", + "ruff==0.5.5", "mypy", - "docutils-stubs", + "types-docutils", ] standalone = [ "Sphinx>=5", @@ -72,4 +72,34 @@ include = [ ] [tool.mypy] -ignore_missing_imports = true +python_version = "3.9" +packages = [ + "sphinxcontrib", + "tests", +] +exclude = [ + "tests/roots", +] +check_untyped_defs = true +disallow_any_generics = true +disallow_incomplete_defs = true +disallow_subclassing_any = true +disallow_untyped_calls = true +disallow_untyped_decorators = true +disallow_untyped_defs = true +explicit_package_bases = true +extra_checks = true +no_implicit_reexport = true +show_column_numbers = true +show_error_context = true +strict_optional = true +warn_redundant_casts = true +warn_unused_configs = true +warn_unused_ignores = true +enable_error_code = [ + "type-arg", + "redundant-self", + "truthy-iterable", + "ignore-without-code", + "unused-awaitable", +] diff --git a/sphinxcontrib/devhelp/__init__.py b/sphinxcontrib/devhelp/__init__.py index bcb0d2c..40e5ad0 100644 --- a/sphinxcontrib/devhelp/__init__.py +++ b/sphinxcontrib/devhelp/__init__.py @@ -9,11 +9,10 @@ import os import re from os import path -from typing import Any +from typing import TYPE_CHECKING, Any from docutils import nodes from sphinx import addnodes -from sphinx.application import Sphinx from sphinx.builders.html import StandaloneHTMLBuilder from sphinx.environment.adapters.indexentries import IndexEntries from sphinx.locale import get_translation @@ -21,10 +20,10 @@ from sphinx.util.nodes import NodeMatcher from sphinx.util.osutil import make_filename -try: - import xml.etree.ElementTree as etree -except ImportError: - import lxml.etree as etree # type: ignore +if TYPE_CHECKING: + from sphinx.application import Sphinx + +import xml.etree.ElementTree as etree __version__ = '1.0.6' __version_info__ = (1, 0, 6) @@ -80,8 +79,7 @@ def build_devhelp(self, outdir: str | os.PathLike[str], outname: str) -> None: self.config.master_doc, self, prune_toctrees=False) def write_toc(node: nodes.Node, parent: etree.Element) -> None: - if isinstance(node, addnodes.compact_paragraph) or \ - isinstance(node, nodes.bullet_list): + if isinstance(node, (addnodes.compact_paragraph, nodes.bullet_list)): for subnode in node: write_toc(subnode, parent) elif isinstance(node, nodes.list_item): @@ -93,7 +91,7 @@ def write_toc(node: nodes.Node, parent: etree.Element) -> None: parent.attrib['name'] = node.astext() matcher = NodeMatcher(addnodes.compact_paragraph, toctree=Any) - for node in tocdoc.findall(matcher): # type: addnodes.compact_paragraph + for node in tocdoc.findall(matcher): write_toc(node, chapters) # Index @@ -115,7 +113,7 @@ def write_index(title: str, refs: list[Any], subitems: Any) -> None: if subitems: parent_title = re.sub(r'\s*\(.*\)\s*$', '', title) for subitem in subitems: - write_index("%s %s" % (parent_title, subitem[0]), + write_index(f'{parent_title} {subitem[0]}', subitem[1], []) for (_group_key, group) in index: @@ -125,7 +123,7 @@ def write_index(title: str, refs: list[Any], subitems: Any) -> None: # Dump the XML file xmlfile = path.join(outdir, outname + '.devhelp.gz') with gzip.GzipFile(filename=xmlfile, mode='w', mtime=0) as f: - tree.write(f, 'utf-8') # type: ignore + tree.write(f, 'utf-8') def setup(app: Sphinx) -> dict[str, Any]: diff --git a/tests/conftest.py b/tests/conftest.py index d4b08e5..3934d3f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,17 +1,14 @@ +from __future__ import annotations + from pathlib import Path import pytest -import sphinx - -pytest_plugins = 'sphinx.testing.fixtures' +pytest_plugins = ( + 'sphinx.testing.fixtures', +) @pytest.fixture(scope='session') -def rootdir(): - if sphinx.version_info[:2] < (7, 2): - from sphinx.testing.path import path - - return path(__file__).parent.abspath() / 'roots' - +def rootdir() -> Path: return Path(__file__).resolve().parent / 'roots' diff --git a/tests/test_devhelp.py b/tests/test_devhelp.py index 1928174..52452fd 100644 --- a/tests/test_devhelp.py +++ b/tests/test_devhelp.py @@ -1,16 +1,23 @@ """Test for devhelp extension.""" + +from __future__ import annotations + from time import sleep +from typing import TYPE_CHECKING import pytest +if TYPE_CHECKING: + from sphinx.application import Sphinx + @pytest.mark.sphinx('devhelp', testroot='basic') -def test_basic(app, status, warning): +def test_basic(app: Sphinx) -> None: app.builder.build_all() @pytest.mark.sphinx('devhelp', testroot='basic', freshenv=True) -def test_basic_deterministic_build(app): +def test_basic_deterministic_build(app: Sphinx) -> None: app.config.devhelp_basename, output_filename = 'testing', 'testing.devhelp.gz' app.builder.build_all() diff --git a/tox.ini b/tox.ini index e54e565..290640b 100644 --- a/tox.ini +++ b/tox.ini @@ -2,7 +2,7 @@ minversion = 2.4.0 envlist = py{39,310,311,312,313}, - flake8, + ruff, mypy isolated_build = True @@ -17,14 +17,14 @@ setenv = commands= pytest --durations 25 {posargs} -[testenv:flake8] +[testenv:ruff] description = Run style checks. extras = test lint commands= - flake8 + ruff check [testenv:mypy] description = From 03e237039968130170fe2e8ac6715a6fa14cc48c Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sun, 28 Jul 2024 05:04:35 +0100 Subject: [PATCH 05/12] Enable GitHub's dependabot package update service --- .github/dependabot.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..47a31bc --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: "daily" From a26961d36e4030ba36181eb2752aa5540d7d879d Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sun, 28 Jul 2024 05:13:53 +0100 Subject: [PATCH 06/12] Use the latest GitHub actions versions --- .github/workflows/create-release.yml | 12 ++++++------ .github/workflows/test.yml | 14 +++++++------- .github/workflows/transifex.yml | 10 +++++----- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 40240ea..7982f83 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -17,9 +17,9 @@ jobs: permissions: id-token: write # for PyPI trusted publishing steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3 cache: pip @@ -35,7 +35,7 @@ jobs: - name: Mint PyPI API token id: mint-token - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: # language=JavaScript script: | @@ -75,15 +75,15 @@ jobs: permissions: contents: write # for softprops/action-gh-release to create GitHub release steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Get release version id: get_version - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: core.setOutput('version', context.ref.replace("refs/tags/", "")) - name: Create GitHub release - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: name: "sphinxcontrib-devhelp ${{ steps.get_version.outputs.version }}" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 856df5b..4586b92 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,14 +30,14 @@ jobs: fail-fast: false steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 if: "!endsWith(matrix.python, '-dev')" with: python-version: ${{ matrix.python }} - name: Set up Python ${{ matrix.python }} (deadsnakes) - uses: deadsnakes/action@v2.1.1 + uses: deadsnakes/action@v3.1.0 if: "endsWith(matrix.python, '-dev')" with: python-version: ${{ matrix.python }} @@ -53,9 +53,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3" - name: Install dependencies @@ -76,9 +76,9 @@ jobs: - mypy steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3" diff --git a/.github/workflows/transifex.yml b/.github/workflows/transifex.yml index c39d381..571fd4c 100644 --- a/.github/workflows/transifex.yml +++ b/.github/workflows/transifex.yml @@ -15,9 +15,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3 - name: Install transifex client @@ -44,9 +44,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3 - name: Install transifex client @@ -67,7 +67,7 @@ jobs: - name: Compile message catalogs run: python utils/babel_runner.py compile - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v6 with: commit-message: "[internationalisation] Update translations" branch: bot/pull-translations From f357a60ef9e9663e4f63ac30425df3160dcfb940 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sun, 28 Jul 2024 18:31:11 +0100 Subject: [PATCH 07/12] Run mypy without command-line options --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 290640b..bbd9ed7 100644 --- a/tox.ini +++ b/tox.ini @@ -33,4 +33,4 @@ extras = test lint commands= - mypy sphinxcontrib/ --explicit-package-bases + mypy From 8c5714131a786bfc569dcdbaea50300ba28ea97d Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sun, 28 Jul 2024 18:38:17 +0100 Subject: [PATCH 08/12] Run CI with Python 3.12 releases --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4586b92..e337f0f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ jobs: - "3.9" - "3.10" - "3.11" - - "3.12-dev" + - "3.12" - "3.13-dev" fail-fast: false @@ -44,7 +44,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install .[test,standalone] + python -m pip install .[standalone,test] - name: Test with pytest run: python -m pytest -vv --durations 25 From c4fba3d3af32edf1acdb4189f96c0caab049287c Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sun, 28 Jul 2024 18:48:22 +0100 Subject: [PATCH 09/12] Rename CHANGES to CHANGES.rst --- CHANGES => CHANGES.rst | 0 pyproject.toml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename CHANGES => CHANGES.rst (100%) diff --git a/CHANGES b/CHANGES.rst similarity index 100% rename from CHANGES rename to CHANGES.rst diff --git a/pyproject.toml b/pyproject.toml index 0a9adc3..2b78fbb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,7 +64,7 @@ name = "sphinxcontrib.devhelp" [tool.flit.sdist] include = [ - "CHANGES", + "CHANGES.rst", "LICENSE", # Tests "tests/", From d7aaab573af89ce7081dd1d270bf3316dd38f5f1 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sun, 28 Jul 2024 19:00:43 +0100 Subject: [PATCH 10/12] Rename LICENSE to LICENCE.rst --- LICENSE => LICENCE.rst | 0 pyproject.toml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename LICENSE => LICENCE.rst (100%) diff --git a/LICENSE b/LICENCE.rst similarity index 100% rename from LICENSE rename to LICENCE.rst diff --git a/pyproject.toml b/pyproject.toml index 2b78fbb..0eac906 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,7 +65,7 @@ name = "sphinxcontrib.devhelp" [tool.flit.sdist] include = [ "CHANGES.rst", - "LICENSE", + "LICENCE.rst", # Tests "tests/", "tox.ini", From d3f96f735cd1315d6b4970bd6ab8cf02da4171b4 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Sun, 28 Jul 2024 19:32:59 +0100 Subject: [PATCH 11/12] Update CHANGES links --- .github/workflows/create-release.yml | 2 +- pyproject.toml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 7982f83..5166a36 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -87,4 +87,4 @@ jobs: if: startsWith(github.ref, 'refs/tags/') with: name: "sphinxcontrib-devhelp ${{ steps.get_version.outputs.version }}" - body: "Changelog: https://www.sphinx-doc.org/en/master/changes.html" + body: "Changelog: https://github.com/sphinx-doc/sphinxcontrib-devhelp/blob/master/CHANGES.rst" diff --git a/pyproject.toml b/pyproject.toml index 0eac906..53d59b8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,11 +7,11 @@ build-backend = "flit_core.buildapi" name = "sphinxcontrib-devhelp" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" readme = "README.rst" -urls.Changelog = "https://www.sphinx-doc.org/en/master/changes.html" -urls.Code = "https://github.com/sphinx-doc/sphinxcontrib-devhelp" +urls.Changelog = "https://github.com/sphinx-doc/sphinxcontrib-devhelp/blob/master/CHANGES.rst" +urls.Code = "https://github.com/sphinx-doc/sphinxcontrib-devhelp/" urls.Download = "https://pypi.org/project/sphinxcontrib-devhelp/" urls.Homepage = "https://www.sphinx-doc.org/" -urls."Issue tracker" = "https://github.com/sphinx-doc/sphinx/issues" +urls."Issue tracker" = "https://github.com/sphinx-doc/sphinx/issues/" license.text = "BSD-2-Clause" requires-python = ">=3.9" From 0177fb44f165305f27b34e69e6e7e5ed6f24d752 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Mon, 29 Jul 2024 01:52:18 +0100 Subject: [PATCH 12/12] Bump to 2.0.0 --- CHANGES.rst | 8 ++++++++ sphinxcontrib/devhelp/__init__.py | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index bcd650b..6c64985 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,11 @@ +Release 2.0.0 (2024-07-28) +========================== + +* Adopt Ruff +* Tighten MyPy settings +* Update GitHub actions versions +* Avoid storing build time in gzip headers + Release 1.0.6 (2024-01-13) ========================== diff --git a/sphinxcontrib/devhelp/__init__.py b/sphinxcontrib/devhelp/__init__.py index 40e5ad0..aaefaec 100644 --- a/sphinxcontrib/devhelp/__init__.py +++ b/sphinxcontrib/devhelp/__init__.py @@ -25,8 +25,8 @@ import xml.etree.ElementTree as etree -__version__ = '1.0.6' -__version_info__ = (1, 0, 6) +__version__ = '2.0.0' +__version_info__ = (2, 0, 0) logger = logging.getLogger(__name__) __ = get_translation(__name__, 'console')