Skip to content

Conversation

@kurtmckee
Copy link
Contributor

@kurtmckee kurtmckee commented Oct 14, 2025

This commit introduces the following major changes:

  • Use tox.
  • Test the project against both unidecode and text_unidecode.
    Previously, unidecode was untested.
  • Drop support for Python 3.7, 3.8, and 3.9.
    CI was unable to run because Python 3.7 is no longer available.
    In addition, Python 3.9 and lower are all end-of-life.
  • Test against PyPy 3.11 and Python 3.14.
  • Test type annotations using mypy.
    Previously, type annotations were untested.
  • Install and test all supported Python interpreters in CI at once.
  • Use tox, and the tox-uv plugin, exclusively in CI.
    This eliminates differences between local and CI testing.
  • Run CI against pull requests.
  • Collect, combine, and report coverage
    for all Python versions and dependencies, locally and in CI.

In addition, this commit introduces the following minor changes:

  • Fix typing issues identified by mypy.
    Note that text_unidecode is untyped and must be type-ignored.
  • Remove almost all coverage pragma: nocover lines.
  • Fix incorrect copy/pasted comments in ci.yml and main.yml.
  • Upgrade actions/checkout to v5 and actions/setup-python to v6.

Taken together, these changes improve the health of the project by ensuring that the test suite can be run locally, tests all dependencies, runs successfully in CI, and that there is no drift between CI and local testing.

Here is an example of a CI run using the code in this PR.

This commit introduces the following major changes:

* Use tox.
* Test the project against both `unidecode` and `text_unidecode`.
  Previously, `unidecode` was untested.
* Drop support for Python 3.7, 3.8, and 3.9.
  CI was unable to run because Python 3.7 is no longer available.
  In addition, Python 3.9 and lower are all end-of-life.
* Test against PyPy 3.11 and Python 3.14.
* Test type annotations using mypy.
  Previously, type annotations were untested.
* Install and test all supported Python interpreters in CI at once.
* Use tox, and the tox-uv plugin, exclusively in CI.
  This eliminates differences between local and CI testing.
* Run CI against pull requests.
* Collect, combine, and report coverage
  for all Python versions and dependencies, locally and in CI.

In addition, this commit introduces the following minor changes:

* Fix typing issues identified by mypy.
  Note that `text_unidecode` is untyped and must be type-ignored.
* Remove almost all coverage `pragma: nocover` lines.
* Fix incorrect copy/pasted comments in `ci.yml` and `main.yml`.
* Upgrade `actions/checkout` to v5 and `actions/setup-python` to v6.
@Arian-Ott
Copy link
Collaborator

@kurtmckee I really like this contribution!

Since MR #164, there are some minor branch conflicts. The title suggests that there was tox implemented before. Is there a reason tox was removed in the first place?

@kurtmckee
Copy link
Contributor Author

I'll fix the conflicts shortly.

Tox was dropped in v6 with a note that users can simply refer to CI runs. However, CI is disabled by default on forks and CI doesn't run against PRs from first-time contributors, so while its removal was intentional, I don't think that this is a good situation for first-time contributors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants