From a2a427394ea3f7a695f5e1b2304d5435b7da9a25 Mon Sep 17 00:00:00 2001 From: nandgator <38415384+nandgator@users.noreply.github.com> Date: Sat, 10 Oct 2026 13:02:08 +0530 Subject: [PATCH 1/4] chore: prepare for release 0.36.0 --- CHANGES.md | 41 +++++++++++++++++++++++++++++++++++--- LICENSE.txt | 2 +- SECURITY.md | 2 +- mkdocs.yaml | 2 +- src/validators/__init__.py | 2 +- 5 files changed, 42 insertions(+), 7 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 391a8f4e..742c8d98 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,11 +9,46 @@ Note to self: Breaking changes must increment either --> -## Unreleased +## 0.36.0 (2026-10-10) -_**Fixes**_ +_**Breaking**_ ⚠️ + +* Drops support for Python `v3.9` and `v3.10`. Python `v3.11` or newer is required. ([#488](https://github.com/python-validators/validators/pull/488)) +* Stricter validation: the following inputs, previously accepted by mistake, are now rejected. + * `isin()` now verifies the check digit, which was previously ignored. Lowercase ISINs are still accepted. ([#464](https://github.com/python-validators/validators/pull/464)) + * `cusip()` and `sedol()` require a numeric check digit. ([#487](https://github.com/python-validators/validators/pull/487)) + * `md5()`, `sha1()`, `sha224()`, `sha256()`, `sha384()`, `sha512()`, `base16()`, `base32()`, `base58()` and `base64()` reject trailing characters, such as a trailing newline. ([#486](https://github.com/python-validators/validators/pull/486)) + * `ind_pan()` requires a full-string match. ([#478](https://github.com/python-validators/validators/pull/478)) + * `fr_ssn()` no longer accepts a comma as the gender or Corsica department character. ([#469](https://github.com/python-validators/validators/pull/469), merged as [#491](https://github.com/python-validators/validators/pull/491)) + * `domain()` rejects an underscore in the last label ([#485](https://github.com/python-validators/validators/pull/485)) and names longer than 253 octets once IDNA-encoded, as defined by RFC 1035. ([#461](https://github.com/python-validators/validators/pull/461)) + * `mastercard()` accepts only the 2221-2720 range of the 2-series BINs. ([#467](https://github.com/python-validators/validators/pull/467)) + * `eth_address()` rejects non-hexadecimal characters. ([#466](https://github.com/python-validators/validators/pull/466)) + * `mac_address()` rejects mixed separators. ([#432](https://github.com/python-validators/validators/pull/432)) + * `slug()` rejects a trailing newline, and telnet URIs reject control characters. ([#492](https://github.com/python-validators/validators/pull/492)) + +_**Features**_ + +* feat(uri): add telnet URI validation per RFC 4248 by @tofetpuzo in [#446](https://github.com/python-validators/validators/pull/446) +* Accept `file://` URLs per RFC 8089 by @itzzdev09 in [#483](https://github.com/python-validators/validators/pull/483) +* cron: accept a step over a range (e.g. `1-5/2`) and in list items by @itzzdev09 in [#482](https://github.com/python-validators/validators/pull/482) +* Accept lowercase IBANs in `iban()` by @sayantanmandal1 in [#471](https://github.com/python-validators/validators/pull/471) +* fix(cron): accept day-of-week `7` as a Sunday alias by @binggao1230 in [#470](https://github.com/python-validators/validators/pull/470) +* Accept a trailing dot on simple hostnames with `rfc_1034` by @assinscreedFC in [#462](https://github.com/python-validators/validators/pull/462) +* fix(crypto_addresses): accept testnet (`tb`) segwit addresses by @Jordan-Bourillot in [#466](https://github.com/python-validators/validators/pull/466) + +_**Maintenance**_ -* Reject an underscore in the last domain label. ([#484](https://github.com/python-validators/validators/issues/484)) +* chore(deps): bump requests from 2.32.3 to 2.32.4 in /package by @dependabot in [#430](https://github.com/python-validators/validators/pull/430) +* fix: reject MAC addresses with mixed separators by @iCasture in [#432](https://github.com/python-validators/validators/pull/432) +* feat: Optimize slug. Extend tests. by @welder87 in [#439](https://github.com/python-validators/validators/pull/439) +* chore: update codebase to reflect new username by @nandgator in [#447](https://github.com/python-validators/validators/pull/447) +* docs: correct PossibleValueTypes note in between to include None by @SAY-5 in [#460](https://github.com/python-validators/validators/pull/460) +* chore!: drop Python 3.9 and 3.10, bump vulnerable dev dependencies by @nandgator in [#488](https://github.com/python-validators/validators/pull/488) +* fix: restore certifi and jinja2 pins downgraded by stale lock by @nandgator in [#489](https://github.com/python-validators/validators/pull/489) +* chore: use native pyproject config for tox and pytest by @nandgator in [#490](https://github.com/python-validators/validators/pull/490) +* test: cover RFC length limits for domain() and hostname() by @nandgator in [#493](https://github.com/python-validators/validators/pull/493) + +**Full Changelog**: [`0.35.0...0.36.0`](https://github.com/python-validators/validators/compare/0.35.0...0.36.0) ## 0.35.0 (2025-05-01) diff --git a/LICENSE.txt b/LICENSE.txt index 0fba9fb0..1c6c28f4 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2013 - 2025 Konsta Vesterinen +Copyright (c) 2013 - 2026 Konsta Vesterinen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/SECURITY.md b/SECURITY.md index 0f632259..1927ca97 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,7 +4,7 @@ | Version | Supported | | ---------- | ------------------ | -| `>=0.35.0` | :white_check_mark: | +| `>=0.36.0` | :white_check_mark: | ## Reporting a Vulnerability diff --git a/mkdocs.yaml b/mkdocs.yaml index 6e63469d..3b05f1b1 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -63,7 +63,7 @@ extra: provider: mike default: stable -copyright: Copyright © 2013 - 2025 Konsta Vesterinen +copyright: Copyright © 2013 - 2026 Konsta Vesterinen nav: - Home: index.md diff --git a/src/validators/__init__.py b/src/validators/__init__.py index c4701d66..82eeca81 100644 --- a/src/validators/__init__.py +++ b/src/validators/__init__.py @@ -112,4 +112,4 @@ "validator", ) -__version__ = "0.35.0" +__version__ = "0.36.0" From 6fbb2d4ecb69d47a8d58a35ab18f7f18584e656b Mon Sep 17 00:00:00 2001 From: nandgator <38415384+nandgator@users.noreply.github.com> Date: Sat, 10 Oct 2026 13:24:20 +0530 Subject: [PATCH 2/4] docs: add #495 to the 0.36.0 changelog --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 742c8d98..e3f72884 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -47,6 +47,7 @@ _**Maintenance**_ * fix: restore certifi and jinja2 pins downgraded by stale lock by @nandgator in [#489](https://github.com/python-validators/validators/pull/489) * chore: use native pyproject config for tox and pytest by @nandgator in [#490](https://github.com/python-validators/validators/pull/490) * test: cover RFC length limits for domain() and hostname() by @nandgator in [#493](https://github.com/python-validators/validators/pull/493) +* chore!: adopt uv and PEP 735 dependency groups by @nandgator in [#495](https://github.com/python-validators/validators/pull/495) **Full Changelog**: [`0.35.0...0.36.0`](https://github.com/python-validators/validators/compare/0.35.0...0.36.0) From e30231ae9209381e8649be01a2c89fa24ce3bff5 Mon Sep 17 00:00:00 2001 From: nandgator <38415384+nandgator@users.noreply.github.com> Date: Sat, 10 Oct 2026 13:55:25 +0530 Subject: [PATCH 3/4] docs: add #496 and #497 to the 0.36.0 changelog --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index e3f72884..f8dab374 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -48,6 +48,8 @@ _**Maintenance**_ * chore: use native pyproject config for tox and pytest by @nandgator in [#490](https://github.com/python-validators/validators/pull/490) * test: cover RFC length limits for domain() and hostname() by @nandgator in [#493](https://github.com/python-validators/validators/pull/493) * chore!: adopt uv and PEP 735 dependency groups by @nandgator in [#495](https://github.com/python-validators/validators/pull/495) +* ci: update GitHub Actions to their latest versions by @nandgator in [#496](https://github.com/python-validators/validators/pull/496) +* docs: explain why the documentation is hosted on the maintainer's fork by @nandgator in [#497](https://github.com/python-validators/validators/pull/497) **Full Changelog**: [`0.35.0...0.36.0`](https://github.com/python-validators/validators/compare/0.35.0...0.36.0) From 1a2b235ace3e014ff38c09f480a3c0c0736567c2 Mon Sep 17 00:00:00 2001 From: nandgator <38415384+nandgator@users.noreply.github.com> Date: Sat, 10 Oct 2026 15:35:49 +0530 Subject: [PATCH 4/4] docs: add #498 to the 0.36.0 changelog --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index f8dab374..6cf35e59 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -50,6 +50,7 @@ _**Maintenance**_ * chore!: adopt uv and PEP 735 dependency groups by @nandgator in [#495](https://github.com/python-validators/validators/pull/495) * ci: update GitHub Actions to their latest versions by @nandgator in [#496](https://github.com/python-validators/validators/pull/496) * docs: explain why the documentation is hosted on the maintainer's fork by @nandgator in [#497](https://github.com/python-validators/validators/pull/497) +* docs: hide badges from the man page; upgrade docs tooling to latest stable by @nandgator in [#498](https://github.com/python-validators/validators/pull/498) **Full Changelog**: [`0.35.0...0.36.0`](https://github.com/python-validators/validators/compare/0.35.0...0.36.0)