NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #719 most downloaded on PyPI
Python Data Validation for Humans™
Last release 1 years ago
01 May 2025
Ships unpredictably
gaps range from 8 days to 1.2 years
Nearly every release is documented
notes for 52 of 56 stable releases
4 versions withdrawn
withdrawn after publishing
13 years old
60 releases · first in 2013
Drops support for Python v3.8 .
Breaking ⚠️
v3.8.Features
ru_inn, update description, and expose via __init__ by @TheDrunkenBear in #419Maintenance
lstrip("mailto:") with manual prefix removal by @max-moser in #418doctest failes by @d-chris in #417Full Changelog: 0.34.0...0.35.0
One column per quarter.
No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
Maintenance
Full Changelog: 0.33.0...0.34.0
No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
Maintenance
Full Changelog: 0.32.0...0.33.0
No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
Maintenance
CONTRIBUTING.md by @yozachar in 9ba69a5Full Changelog: 0.31.0...0.32.0
No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
Maintenance
Full Changelog: 0.30.0...0.31.0
No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
Maintenance
Full Changelog: 0.29.0...0.30.0
patch: moves btc_address to crypto_addresses by @msamsami in #383 on 2f300b
No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
No features were introduced in this version.
Maintenance
Full Changelog: 0.28.2...0.28.3
No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
No features were introduced in this version.
Maintenance
Full Changelog: 0.28.1...0.28.2
No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
No features were introduced in this version.
Maintenance
domain validator by @yozachar in #367Full Changelog: 0.28.0...0.28.1
patch: moves country_code module to country module by @yozachar in #357
Breaking ⚠️
country_code module to country module by @yozachar in #357Features
finance validator by @yozachar in #359consider_tld parameter to domain, hostname and url modules by @yozachar in #360Maintenance
Full Changelog: 0.27.0...0.28.0
patch: moves base58 and base64 into encoding by @yozachar in #354
Breaking ⚠️
base58 and base64 into encoding by @yozachar in #354Features
private parameter to ip_address, hostname & url by @yozachar in #356Maintenance
encoding tests and docs by @yozachar in #355Full Changelog: 0.26.0...0.27.0
> No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
base58 and base64 validators by @yozachar in #351Maintenance
a-z by @yozachar in #349Full Changelog: 0.25.0...0.26.0
> No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
cron validator by @yozachar in #348Maintenance
domain validation is now more consistent across rfcs by @yozachar in #347Full Changelog: 0.24.2...0.25.0
> No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
ValidationError; bump version by @yozachar in #343Maintenance
domain & url modules by @yozachar in #339Full Changelog: 0.23.2...0.24.0
> No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
No features were introduced in this version.
Maintenance
rST & md document generation by @yozachar in #337Full Changelog: 0.23.1...0.23.2
> No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
No features were introduced in this version.
Maintenance
between & length validators by @yozachar in #334Full Changelog: 0.23.0...0.23.1
> No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
Maintenance
between module by @yozachar in #301Full Changelog: 0.22.0...0.23.0
A new keyword parameter host_bit = True, is added to validators.ipv4 and validators.ipv6.
Breaking ⚠️
host_bit = True, is added to validators.ipv4 and validators.ipv6.Features
No features were introduced in this version.
Maintenance
Full Changelog: 0.21.2...0.22.0
ValidationFailure is renamed to ValidationError in `yozachar@12ae1f5`
Breaking ⚠️
ValidationFailure is renamed to ValidationError in yozachar@12ae1f5Features
Maintenance
Full Changelog: 0.21.1...0.21.2
> No breaking changes were introduced in this version.
Breaking
No breaking changes were introduced in this version.
Features
No features were introduced in this version.
Maintenance
source .venv/bin/activate before build by @yozachar in #260Full Changelog: 0.21.0...0.21.1
Drops support for all Python versions below v3.8.
Breaking ⚠️
v3.8.positional, and the remaining, keyword-only.max and min, has been renamed to max_val and min_val respectively.domain API now accepts two new keyword-only arguments: rfc_1034: bool = False and rfc_2782: bool = False.extremes.py renamed to _extremes.py and is no longer exposed.truthy was discarded in favour of simple bool() function.ipv4_cidr() and ipv6_cidr() has been dropped in favour of cidr: bool = True and cidr: bool = True keyword-only parameters.email() API now accepts the following keyword-only arguments:
simple_host: bool = False,ipv6_address: bool = False,ipv4_address: bool = False,rfc_1034: bool = False andrfc_2782: bool = False.whitelist=None has been removed from email().url() has been refactored, it accepts the following keyword-only arguments:
skip_ipv6_addr: bool = False,skip_ipv4_addr: bool = False,may_have_port: bool = True,simple_host: bool = False,rfc_1034: bool = False andrfc_2782: bool = False.public=False keyword argument has been removed from url().i18n functions directly via __init__.py.@validator decorator catches Exception.<!-- please don't shoot me -->
Features
hostname validator.Maintenance
Exception by @yozachar in #254i18n package by @yozachar in #252.rst to .md by @yozachar in #246url module by @yozachar in #245domain, email & hostname by @yozachar in #244hostname module by @yozachar in #242email module by @yozachar in #241hostname validator by @yozachar in #240ip_address module by @yozachar in #239mac_address, slug and uuid by @yozachar in #236hashes and iban modules by @yozachar in #235email module by @yozachar in #233domain module by @yozachar in #231card module, fix typo by @yozachar in #230btc_address module by @yozachar in #228between and length modules by @yozachar in #225Full Changelog: 0.20.0...0.21.0
Added ipv4 digit lenghts validation (#191, pull request courtesy of Norbiox)
Improve IPv6 validation (#201, pull request courtesy of SimonIT)
Implement actual validation for old style BTC addresses including checksumming (#182, pull request courtesy of tpatja)
Made uuid validator accept UUID objects (#174, pull request courtesy of Letsch22)
Added bitcoin address validator (#166, pull request courtesy of daveusa31)
Fixed python_requires using twine
Added python_requires='>=3.4' to setup.py (#163, pull request courtesy of vphilippon)
Added support for emojis and more IDNA URLs (#161, pull request courtesy of automationator)
Added bank card validators (#157, pull request courtesy of TimonPeng)
Handle None values gracefully in domain validator (#144, pull request courtesy reahaas)
Made domain validation case-insensitive (#136, pull request courtesy ehmkah)
Updated domain validator regex to not allow numeric only TLDs (#133, pull request courtesy jmeridth)
Added new validators ipv4_cidr, ipv6_cidr (#117, pull request courtesy woodruffw)
ipv4_cidr, ipv6_cidr (#117, pull request courtesy woodruffw)Added new validator: es_doi, es_nif, es_cif, es_nie (#121, pull request courtesy kingbuzzman)
es_doi, es_nif, es_cif, es_nie (#121, pull request courtesy kingbuzzman)Fixed domain validator for single character domains (#118, pull request courtesy kingbuzzman)
Fixed py37 support (#113, pull request courtesy agiletechnologist)
Use inspect.getfullargspec() in py3 (#110, pull request courtesy riconnon)
Added allow_temporal_ssn parameter to fi_ssn validator (#97, pull request courtesy quantus)
allow_temporal_ssn parameter to fi_ssn validator (#97, pull request courtesy quantus)Fixed IPv4 formatted IP address returning True on ipv6 (#85, pull request courtesy johndlong)
Fixed IDNA encoded TLDs in domain validator (#75, pull request courtesy piewpiew)
Added hash validators for md5, sha1, sha224, sha256 and sha512
Fixed URL validator for URLs containing localhost (#51, pull request courtesy vladimirdotk)
Fixed URL validator for urls with query parameters but without path (#44, pull request courtesy zjjw)
Fixed pyp2rpm build problem (#37, pull request courtesy BOPOHA)
Made URL validator case insensitive
Added public parameter to url validator (#26, pull request courtesy Iconceicao)
public parameter to url validator (#26, pull request courtesy Iconceicao)Fixed various URL validation issues
Fixed domain name validation for numeric domain names (#21, pull request courtesy shaunpud)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
* Added new validator: slug
slugRenamed finnish_business_id to fi_business_id
finnish_business_id to fi_business_idfi_ssnAdded new validator: finnish_business_id
finnish_business_id* number_range -> between
number_range -> betweenVarious new validators: ipv4, ipv6, length, number_range, mac_address, url, uuid
ipv4, ipv6, length, number_range,
mac_address, url, uuid* Initial public release
Your coding agent can read these notes before it upgrades. Set up the MCP server →