# Changelog

To install the unreleased gp-libs version, see [developmental releases](https://gp-libs.git-pull.com/quickstart.html#developmental-releases).

[pip](https://pip.pypa.io/en/stable/):

```console
$ pip install --user --upgrade --pre gp-libs
```

[pipx](https://pypa.github.io/pipx/docs/):

```console
$ pipx install --suffix=@next 'gp-libs' --pip-args '\--pre' --force
```

[uv](https://docs.astral.sh/uv/):

```console
$ uv add gp-libs --prerelease allow
```

[uvx](https://docs.astral.sh/uv/guides/tools/):

```console
$ uvx --from 'gp-libs' --prerelease allow gp-libs
```

## gp-libs 0.0.18 (unreleased)

<!-- To maintainers and contributors: Please add notes for the forthcoming version below -->

## gp-libs 0.0.17 (2025-12-07)

### CI

- Migrate to PyPI Trusted Publisher (#57)

## gp-libs 0.0.16 (2025-11-25)

### Features

#### pytest_doctest_docutils

- Add `_unblock_doctest()` helper for programmatic re-enabling of built-in doctest plugin (#56)

  Uses the public `pluginmanager.unblock()` API introduced in pytest 8.1.0, with graceful
  fallback for older versions.

### Bug fixes

#### pytest_doctest_docutils

- Autouse fixtures from `conftest.py` are now properly discovered for doctest files (#56)

  Backported from pytest commit [9cd14b4ff](https://github.com/pytest-dev/pytest/commit/9cd14b4ff) (2024-02-06).

#### doctest_docutils

- Doctest directive comments with leading whitespace (e.g., `  # doctest: +SKIP`) are now properly matched (#56)

  Backported from Sphinx commit [ad0c343d3](https://github.com/sphinx-doc/sphinx/commit/ad0c343d3) (2025-01-04).

### Development

- CI: Add pytest 9.x to test matrix, with pytest 7.x/8.x compatibility testing (#56)

## gp-libs 0.0.15 (2025-11-01)

### Breaking changes

- Drop Python 3.9 (#54)

  The minimum version of Python in this and future releases is Python 3.10.

  Python 3.9 reached end-of-life status on October 5th, 2025 (see PEP 596).

### Development

- Add Python 3.14 to test matrix (#53)

## gp-libs 0.0.14 (2025-10-26)

### Bug fixes

- Ensure docutils/myst doctest directives auto-register so Arch Linux packaging tests pass without manual setup (#52, fixes #48)

## gp-libs 0.0.13 (2025-08-17)

### Bug fixes

- Type annotation fixes (#49)

## gp-libs 0.0.12 (2025-07-12)

### Bug fixes

- Type annotation and linting fixes (resolves #48)

### Deveopment

- Internal package updates to uv, py.test, mypy, ruff, etc.

## gp-libs 0.0.11 (2025-02-22)

### Bug fixes

- Fix for `pytest-asyncio` compatibility (#46)

### Development

#### chore: Implement PEP 563 deferred annotation resolution (#44)

- Add `from __future__ import annotations` to defer annotation resolution and reduce unnecessary runtime computations during type checking.
- Enable Ruff checks for PEP-compliant annotations:
  - [non-pep585-annotation (UP006)](https://docs.astral.sh/ruff/rules/non-pep585-annotation/)
  - [non-pep604-annotation (UP007)](https://docs.astral.sh/ruff/rules/non-pep604-annotation/)

For more details on PEP 563, see: https://peps.python.org/pep-0563/

## gp-libs 0.0.10 (2024-12-20)

_Maintenance release: no bug fixes or new features._

### Breaking changes (#36)

- Drop Python 3.8

  The minimum version of Python in this and future releases is Python 3.9.

  Python 3.8 reached end-of-life status on October 7th, 2024 (see PEP 569).

### Development

- Aggressive automated lint fixes via `ruff` (#41)

  via ruff v0.8.4, all automated lint fixes, including unsafe and previews were applied for Python 3.9:

  ```sh
  ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .
  ```

## gp-libs 0.0.9 (2024-11-26)

### Breaking changes

#### Project and package management: poetry to uv (#39)

[uv] is the new package and project manager for the project, replacing Poetry.

[uv]: https://github.com/astral-sh/uv

#### Build system: poetry to hatchling (#39)

[Build system] moved from [poetry] to [hatchling].

[Build system]: https://packaging.python.org/en/latest/tutorials/packaging-projects/#choosing-a-build-backend
[poetry]: https://github.com/python-poetry/poetry
[hatchling]: https://hatch.pypa.io/latest/

## gp-libs 0.0.8 (2024-10-19)

### Breaking changes

- Final Python 3.8 release, as it has reached end-of-life status October 7th,
  2024, see [PEP-569](https://peps.python.org/pep-0569/).

### Development

- poetry: 1.8.1 -> 1.8.2

  See also: https://github.com/python-poetry/poetry/blob/1.8.2/CHANGELOG.md

### Documentation

- Automatically linkify links that were previously only text.

## gp-libs 0.0.7 (2024-03-24)

### Breaking changes

#### Minimum requirements

To lift the development burden of supporting legacy APIs, as this package is
lightly used, minimum constraints have been pinned:

- docutils: 0.20.1+
- myst-parser: 2.0.0+

If you have even passing interested in supporting legacy versions, file an
issue on the tracker.

### Development

- Aggressive automated lint fixes via `ruff` (#33)

  via ruff v0.3.4, all automated lint fixes, including unsafe and previews were applied:

  ```sh
  ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; ruff format .
  ```

  Branches were treated with:

  ```sh
  git rebase \
      --strategy-option=theirs \
      --exec 'poetry run ruff check --select ALL . --fix --unsafe-fixes --preview --show-fixes; poetry run ruff format .; git add src tests; git commit --amend --no-edit' \
      origin/master
  ```

- poetry: 1.7.1 -> 1.8.1

  See also: https://github.com/python-poetry/poetry/blob/1.8.1/CHANGELOG.md

- ruff 0.2.2 -> 0.3.0 (#32)

  Related formattings. Update CI to use `ruff check .` instead of `ruff .`.

  See also: https://github.com/astral-sh/ruff/blob/v0.3.0/CHANGELOG.md

- Strengthen linting (#31)

  - Add flake8-commas (COM)

    - https://docs.astral.sh/ruff/rules/#flake8-commas-com
    - https://pypi.org/project/flake8-commas/

  - Add flake8-builtins (A)

    - https://docs.astral.sh/ruff/rules/#flake8-builtins-a
    - https://pypi.org/project/flake8-builtins/

  - Add flake8-errmsg (EM)

    - https://docs.astral.sh/ruff/rules/#flake8-errmsg-em
    - https://pypi.org/project/flake8-errmsg/

## gp-libs 0.0.6post0 (2024-02-01)

### Packaging

- Relax pytest version constraint from 8+ to 7+ (#30)

## gp-libs 0.0.6 (2024-02-01)

### Breaking change

- Support pytest >8 (#29)

  - Update doctest pytest plugin for pytest 8.

### Development

- ruff 0.2.0

## gp-libs 0.0.5 (2023-12-03)

_Maintenance release: no bug fixes or new features._

### CI

- Move CodeQL from advanced configuration file to GitHub's default

### Development

- ci: Add pydocstyle rule to ruff (#28)

### Documentation

- Add docstrings to functions, methods, classes, and packages (#28)

## gp-libs 0.0.4 (2023-11-19)

### Development

- poetry: 1.6.1 -> 1.7.0

  See also: https://github.com/python-poetry/poetry/blob/1.7.0/CHANGELOG.md

- Move formatting from `black` to [`ruff format`] (#27)

  This retains the same formatting style of `black` while eliminating a
  dev dependency by using our existing rust-based `ruff` linter.

  [`ruff format`]: https://docs.astral.sh/ruff/formatter/

- CI: Update action packages to fix warnings

  - [dorny/paths-filter]: 2.7.0 -> 2.11.1

  [dorny/paths-filter]: https://github.com/dorny/paths-filter

### Packaging

- Add Python 3.12 to trove classifiers
- Packaging (poetry): Fix development dependencies

  Per [Poetry's docs on managing dependencies] and `poetry check`, we had it wrong: Instead of using extras, we should create these:

  ```toml
  [tool.poetry.group.group-name.dependencies]
  dev-dependency = "1.0.0"
  ```

  Which we now do.

  [Poetry's docs on managing dependencies]: https://python-poetry.org/docs/master/managing-dependencies/

## gp-libs 0.0.3 (2023-10-14)

### Fixes

#### doctest_docutils

- `_from_module`: Backport {func}`functools.cached_property` support (#25)

#### pytest_doctest_docutils

- `pytest_collect_file`: Typing fix (#25)

### Development

- Use `import typing as t` everywhere (#25)

  See also: <https://github.com/pytest-dev/pytest/pull/11317>

### Packaging

- Move pytest configuration to `pyproject.toml` (#24)

## gp-libs 0.0.2 (2023-09-09)

### Breaking changes

- Python 3.7 Dropped (#23)

## gp-libs 0.0.1 (2023-09-09)

- _Add your latest changes from PRs here_

### New features

- linkify_issues: Automatically link

  _conf.py_:

  ```python
  issue_url_tpl = 'https://github.com/git-pull/gp-libs/issues/{issue_id}'
  ```

- doctest_docutils: :mod:`doctest` w/ docutils support (and markdown)
- doctest_docutils: Support for sphinx-inline-tab's `tab` directive was added in v0.0.1a17 (#18)

  `````markdown
  ````{tab} example tab

  ```python
  >>> 4 + 4
  8
  ```

  ````

  ````{tab} example second

  ```python
  >>> 4 + 2
  6
  ```

  ````
  `````

### Removed features

- `sphinx_toctree_autodoc_fix` was removed in v0.0.1a12

  Overcome by [Sphinx 5.2](https://pypi.org/project/Sphinx/5.2.0) bakes this in by default:

  Settings options:

  - `add_function_parentheses = False` (default: `True`)
  - `toc_object_entries_show_parents` can be (default: `'domain'`):
    - `toc_object_entries_show_parents = 'domain'`
    - `toc_object_entries_show_parents = 'hide'`
    - `toc_object_entries_show_parents = 'all'`

  See also:

  - https://github.com/sphinx-doc/sphinx/issues/6316
  - https://github.com/sphinx-doc/sphinx/pull/10807
  - https://gist.github.com/agoose77/e8f0f8f7d7133e73483ca5c2dd7b907f

### Documentation

- Initial docs, packaging, etc.

### Tests

pytest-doctest-docutils:

- Add tests for pytest conftest.py files (#9)

### Infrastructure

- Ruff (additional linting rules): Added in #20 and #21
- CI: docutils testgrid (#16)
- CI speedups (#13)

  - Split out release to separate job so the PyPI Upload docker image isn't pulled on normal runs
  - Clean up CodeQL

- Poetry: Bump 1.1.x to 1.6.x

<!---
.. vim: set filetype=markdown:
-->
