# Changelog

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

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

```console
$ pip install --user --upgrade --pre django-slugify-processor
```

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

```console
$ pipx install --suffix=@next 'django-slugify-processor' --pip-args '\--pre' --force
// Usage: django-slugify-processor@next [args]
```

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

```console
$ uv add django-slugify-processor --prerelease allow
```

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

```console
$ uvx --from 'django-slugify-processor' --prerelease allow django-slugify-processor
```

## django-slugify-processor 1.11.x (unreleased)

- _Add your latest changes from PRs here_

## django-slugify-processor 1.10.0 (2025-11-01)

### Breaking Changes

- Drop Python 3.9 (#409)

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

  See also:
  - https://devguide.python.org/versions/#:~:text=Release%20manager-,3.9,-PEP%20596
  - https://peps.python.org/pep-0596/

### Development

- Add Python 3.14 to test matrix (#408)

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

- 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/

## django-slugify-processor 1.9.0 (2024-12-20)

_Maintenance only, no bug fixes or features_

### Breaking changes (#405)

- 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` (#404)

  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 .
  ```

## django-slugify-processor 1.8.0 (2024-11-26)

_Maintenance only, no bug fixes or features_

### Breaking changes

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

[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 (#402)

[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/

#### Django 3.2 dropped (#397)

Django 4.2+ is the new minimum version. Support for django 3.2 is dropped.

v1.7.x is the final Django 3.2 versions.

Django 3.2's extended support has ended April 1st, 2024 [^DJ3_2_deprecation].

[^DJ3_2_deprecation]: Django Project. Unsupported previous releases. https://www.djangoproject.com/download/#unsupported-versions.

### Development

- Support for Django 5.1 in CI, trove classifiers (#398)

## django-slugify-processor 1.7.0 (2024-08-17)

### Upcoming deprecations

- 1.7.x is the last branch supporting Django 3.2.

  1.8+ will drop Django 3.2.

### Documentation

- Automatically linkify links that were previously only text.

### Development

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

  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.2

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

- ruff 0.2.2 -> 0.3.0 (#386)

  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 (#385)

  - 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/

## django-slugify-processor 1.6.0 (2023-12-09)

_Maintenance only, no bug fixes or features_

### Packaging

- pyproject.toml: Add django 5.0 (#382)
- pyproject.toml: Remove django 4.0 and 4.1 from pyproject (#382)

### Development

- Remove `django_slugify_processor.settings`, which was unused (#381).

### CI

- Move CodeQL from advanced configuration file to GitHub's default
- ci: Add pydocstyle rule to ruff (#380)
- ci(tests): Remove django 4.0 and 4.1 from testgrid (#382)
- ci(tests): Add django 5.0 to testgrid (#382)
- ci(tests): Only test latest python (#382)

  As django 5.0 drops python 3.8 and 3.9, just use `3.x` to reduce the amount of jobs created in the test matrix (and keep the workflow itself simple).

### Documentation

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

## django-slugify-processor 1.5.0 (2023-11-18)

_Maintenance only, no bug fixes or features_

### 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`] (#379)

  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/

- 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/

- Packaging: Add Python 3.12 to trove classifiers
- CI: Update action packages to fix warnings

  - [dorny/paths-filter]: 2.7.0 -> 2.11.1
  - [codecov/codecov-action]: 2 -> 3

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

## django-slugify-processor 1.4.0post0 (2023-10-07)

### Documentation

- README updates so links point to new django version

## django-slugify-processor 1.4.0 (2023-10-07)

### What's new

- Now [`mypy --strict`] compliant (#376)

  [`mypy --strict`]: https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-strict

### Packaging

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

### Breaking changes

- Drop Python 3.7 (#374)
- Drop Django 2.2, 3.0, 3.1

  Django 3.2+ is now supported

## django-slugify-processor 1.3.1 (2023-07-04)

_Maintenance only, no bug fixes or features_

### Internal improvements

- Move formatting, import sorting, and linting to [ruff].

  This rust-based checker has dramatically improved performance. Linting and
  formatting can be done almost instantly.

  This change replaces isort, flake8 and flake8 plugins.

  Including additional formatting rules for ruff in #372.

[ruff]: https://ruff.rs

### Infrastructure

- Bump python to 3.11
- CI speedups (#365)

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

- poetry: 1.1.x -> 1.5.0

  See also:

  - <https://github.com/python-poetry/poetry/releases/tag/1.5.0>
  - <https://github.com/python-poetry/poetry/releases/tag/1.4.0>
  - <https://github.com/python-poetry/poetry/releases/tag/1.3.0>
  - <https://github.com/python-poetry/poetry/releases/tag/1.2.0>

- Typings: Fix django-stubs settings module issue on CI (#372)

### Packaging

- Remove `.tmuxp-before-script.sh` (was used by `.tmuxp.yaml`'s `before_script`)
- Merge `.coveragerc` into `pyproject.toml` (#366)
- Remove `MANIFEST.in` (#366)

  This is made obsolete via poetry's `include` inside of pyproject.toml.

## django-slugify-processor 1.3.0 (2022-09-11)

### Documentation

- Render changelog in [`linkify_issues`] (#360, #355)
- Fix Table of contents rendering with sphinx autodoc with [`sphinx_toctree_autodoc_fix`] (#355)

[`linkify_issues`]: https://gp-libs.git-pull.com/linkify_issues/
[`sphinx_toctree_autodoc_fix`]: https://gp-libs.git-pull.com/sphinx_toctree_autodoc_fix/

### Development

- Add [flake8-bugbear](https://github.com/PyCQA/flake8-bugbear) (#361)
- Add [flake8-comprehensions](https://github.com/adamchainz/flake8-comprehensions) (#362)

## django-slugify-processor 1.2.0 (2022-08-16)

### Development

Infrastructure updates for static type checking and doctest examples.

- Move project layout to `src/`, va #364
- Initial [doctests] support added, via #359

  [doctests]: https://docs.python.org/3/library/doctest.html

- Initial [mypy] validation, via #359

  [mypy]: https://github.com/python/mypy

- CI (tests, docs): Improve caching of python dependencies via `action/setup-python`'s v3/4's new
  poetry caching, via #359

- CI (docs): Skip if no `PUBLISH` condition triggered, via #359

- CI: Remove `.pre-commit-config.yaml`, users should know enough to handle these things themselves.

## django-slugify-processor 1.1.1 (2022-03-08)

### Documentation

- README URL fixes

### Development

- CI: Remove tox and tox-poetry-installer

  This would break the poetry command when used inside the virtualenv.

## django-slugify-processor 1.1.0 (2022-03-08)

Mainly an update for the new repo URL: https://github.com/tony/django-slugify-processor

### Documentation

- Switch to `furo` theme

### Development

- Run pyupdate @ 3.7
- New repo URL: https://github.com/tony/django-slugify-processor

## django-slugify-processor 1.0.0 (2022-01-08)

### Compatibility

- Python 3.6 support dropped (#350)
- Python 3.10 support added (#350)
- Django 4.0 support
- Include tests/ in packages

### Development

- Poetry: Update poetry to 1.1
  - CI: Use poetry 1.1.12 and `install-poetry.py` installer (#333 + #350)
  - Relock poetry.lock at 1.1 (w/ 1.1.7's fix)
- Add `.pre-commit-config.yaml` (#350)
- Remove unused `requirements.txt`-related files
- `.tool-versions`, `.python-version`

  In an effort to work across multiple versions with `pyenv` and `asdf` with `asdf-python`, set
  multiple of the latest patched releases for python if they're supported.

- `tox` reorganization (#352)
  - Add `tox` as a test dependency
  - Add [enpaul/tox-poetry-installer](https://github.com/enpaul/tox-poetry-installer) to work with
    our project dependencies
  - Update tox.ini to use django's new `main` branch, python 3.8 minimum for django's main branch

## django-slugify-processor 0.11.0 (2021-06-16)

- #329: Move to markdown

## django-slugify-processor 0.10.0 (2021-06-16)

- Drop python 2.7, 3.5 and unsupported django versions
- Remove unneeded `utf-8` versions

## django-slugify-processor 0.9.0 (2020-08-08)

- Move doc URL from to git-pull.com
- Move travis -> gh actions
- Move pipenv -> poetry
- Move RTD -> self-hosted docs
- Relax package constraints
- Add package constraints for cases where python version / django effects things

## django-slugify-processor 0.8.4 (2017-12-03)

- Get docs online
- Clean up API docs in code

## django-slugify-processor 0.8.3 (2017-12-02)

- Add test_app, and tests for django-extensions and django-autoslug

## django-slugify-processor 0.8.2 (2017-12-02)

- Try to tweak README / fix on PyPI

## django-slugify-processor 0.8.1 (2017-12-01)

- README updates
- Support for overriding builtin slugify in templates
- Move template filter to _templatetags/slugify_processor.py_

## django-slugify-processor 0.8.0 (2017-11-26)

- Initial commit

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