Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
0.0.13 — 2026-06-25¶
Added¶
- re-export exception classes from the package root (#55)
Build¶
- bump the python-dependencies group across 1 directory with 2 updates (#81)
- add continuous benchmarking via
pytest-codspeed(#82) - add 7-day
cooldownmirroringtool.uv.exclude-newer(#80) - upload to
Codecovviaworkflow_runso fork PRs report coverage (#79) - add
pyrightas a second type checker alongsidemypy(#78) - add on-demand cross-OS test matrix (
workflow_dispatch) (#75) - smoke-test the published package after
PyPIpublish (#74) - add per-job
timeout-minutesto all workflows (#73) - extract a composite
setupaction (single source foruv+justSHAs) (#71) - add
actionlint+ workflow/dependabot schema validation (#70) - test dependency floor and ceiling (
lowest-direct/--upgrade) (#66) - pin PEP 740 build attestations explicitly on
PyPIpublish (#65) - add
alls-greengate job (single required status check) (#64) - supply-chain security — audit (
uv audit+zizmor) and install-time malware check (#63) - bump the github-actions group with 2 updates (#59)
- retry transient source-build install on
3.15(#54)
Changed¶
- dedup
lint/test, centralize Python versions, clean--list(#84) - rename
build_property_counttobuild_property_count_bounds(#58) - accept only types/
Annotatedinformats, dropFormatValidator(#53) - replace
_schema/typeswith aschemapackage (facade + private_models) (#52) - make
test_one_ofschema-first like other applicator tests (#51) - promote
_applicatorsto publicapplicatorspackage (#50)
Documentation¶
- dedupe format-spec caveat and Python-version list (#62)
- add
Applicatorsto the Next Steps list (#57) - drop stale "not yet consumed" caveat (#56)
Other¶
- add on-demand
just sbomrecipe (CycloneDXviacyclonedx-py) (#83) - add
.editorconfig(#72) - add
SECURITY.mdandcodecov.yml(#69) - enable stricter error codes and add
@overrideacross applicators (#68) - post-refactor audit cleanup (#60)
Testing¶
- read example-linting config from
pyproject.toml(#77) - enable
xfail_strict+ warnings-as-errors (fixparametrizedeprecation) (#67) - add
test_metadata/test_utilsto complete the mirror (#61)
0.0.12 — 2026-06-23¶
Added¶
- round-trip
not/contains/prefixItems/if-then-elseJSON Schema (#45) - enforce
propertyNameson object conversion (#21) - enforce
patternPropertieson object conversion (#20) - enforce
if/then/elseon conversion (#19) - enforce
dependentSchemason object conversion (#18) - enforce
noton conversion (#17) - enforce
prefixItemspositional validation (#16) - enforce
dependentRequiredon object conversion (#15) - enforce
contains/minContains/maxContainson array conversion (#14) - enforce
minProperties/maxPropertieson object conversion (#13) - enforce
uniqueItemson array conversion (#12) - declare remaining JSON Schema 2020-12 keywords (#11)
Build¶
- cancel superseded runs via a
concurrencygroup (#31) - deploy to a single-commit
gh-pagesto stop repo bloat (#22) - drop generated
_version.py, read__version__from package metadata (#9)
Changed¶
- rename
format_validatorsparameter toformats(#49) AnnotationApplicator/ObjectApplicatorABC roles (#47)- one format — unified model-wrapper + JSON Schema round-trip (#46)
- mirror source package structure in
tests/(#39) - drop root
OneOfre-export (#37) - rename
_markerspackage to_applicators(#34) - readability cleanup — helpers +
$defsalias extraction (#32) - split
converters.pyinto a package (#29) - unify
not/if-then-elsewhole-value hooks (#28) - unify object-keyword validators into one aggregator (#27)
- collect markers in one registry via
_register(#26) - add shared
SubschemaMarkerbase for marker validators (#25) - move marker validators into
_markerssubpackage (#23)
Documentation¶
- remove completed section (#48)
- add Python 3.15 to
test-all-pythonrow (#43) - rename "Format Validators" section to "Formats" (#38)
- add applicators guide and API page (#36)
- drop restating
whatcomments and docstring noise (#30) - fix duplicated copy buttons, refactor
README.md(#7) - refactor
apireference (#6) - refactor all docs (#5)
- clarify contributor roles in acknowledgments
Fixed¶
- enforce field constraints on
anyOf/oneOfbranches (#44) - enforce sibling
typewithanyOf/oneOf/allOf(#41) - support recursive and mutual
$ref(no moreRecursionError) (#40) - clean error on empty
enum(#42)
Other¶
- update to
0.0.12 - scope
ruff/mypyviapyproject.toml, drop deadexclude(#10) - add
__all__totests/conftest.py - add explicit
__all__to every module and test
Testing¶
- full
ValidationErrorsnapshots + required schema fields (#8)
0.0.11 — 2026-06-18¶
Added¶
- map discriminated
oneOfto Pydantic tagged unions (#4)
Build¶
- add
OS Independent,Python 3 :: Only, and code-generator classifiers - test against
Python 3.15beta
Other¶
- update to
0.0.11 - rework with a summary and absolute contributing link
- use
chore(version)message for changelog commit - scope
Protocolexclude pattern to class declarations
Testing¶
- make
$refcache identity check version-stable
0.0.10 — 2026-06-17¶
Added¶
- add remaining spec-defined format types (#3)
Build¶
- bump the python-dependencies group across 1 directory with 2 updates (#2)
- bump the github-actions group across 1 directory with 2 updates (#1)
Documentation¶
- add
0.0.10release section
0.0.9 — 2026-06-12¶
Changed¶
- extract
_rebuild_def_modelsfrom_build_defs_cache - replace tri-state
is_requiredwith explicitfield_kind - route defs bookkeeping through
_get_model - hoist
requiredlookup out of the fields loop
Documentation¶
- add
0.0.9release section - add
llms.txtexport and copy-page-as-Markdown button - note unvalidated extras with
properties+ schemaadditionalProperties
Other¶
- build docs on every commit
0.0.8 — 2026-06-12¶
Added¶
- add
patternfield and map it to Pydanticpatternconstraint
Build¶
- add weekly grouped updates for
uvandgithub-actions - route all workflow steps through
just ci-*recipes
Changed¶
- drop duplicated
_get_modelcaching and fix stale docstrings - decompose
_build_modelinto model-flavor builders - split
_schema_to_annotationinto focused handlers - reorganize
test_converters.pyinto feature-based classes - merge
test_types.pyintotest_schema.pyand split into logical classes
Documentation¶
- add
0.0.8release section - document unsupported keywords and known limitations
- link format spec section in module docstring
Fixed¶
- map multi-type
objecttodict[str, Any]instead ofAny - default optional fields to
MISSINGsentinel instead ofNone
Other¶
- group recipes into logical sections
- clean
dist/before CI build
Testing¶
- add explicit
idto multi-argument parameter sets
0.0.7 — 2026-06-12¶
Added¶
- enforce
oneOfexactly-one-branch semantics viaOneOfvalidator
Build¶
- raise
pydantic-extra-typesfloor to2.3.0 - raise
pydanticfloor to2.13.0
Documentation¶
- add
0.0.7release section
Fixed¶
- validate root
additionalPropertiesvalues viaRootModel - resolve
Referencealiases in$defs
Testing¶
- cover
const: nullconversion toLiteral[None] - replace partial assertions with full
snapshotcomparisons - wrap literal assertions with
inline_snapshot
0.0.6 — 2026-06-12¶
Changed¶
- remove
JsonTypealias in favor ofpydantic.JsonValue - replace
BeforeValidatorwithAfterValidatorin format aliases
Documentation¶
- add
0.0.6release section
Other¶
- remove
Reffrom public__all__
0.0.5 — 2026-06-12¶
Changed¶
- drop
formats-extraextra in favor of directpydantic-extra-typesinstall
Documentation¶
- add
0.0.5release section
Other¶
- forbid `pragma: no cover
0.0.4 — 2026-06-12¶
Build¶
- add
just release-autocommand
Changed¶
- replace
email-validatordep with built-invalidate_email
Documentation¶
- add
0.0.4release section
0.0.3 — 2026-06-12¶
Changed¶
- replace
fqdnandrfc3986deps with built-in validators
Documentation¶
- add
0.0.3release section - add comments explaining template workarounds for markdownlint
- add manual GitHub Release and docs deploy steps
- add
just changelogstep to release flow
Fixed¶
- fix
cliff.tomltemplate for valid markdown output - update
setup-justSHA to v4
0.0.2 — 2026-06-11¶
Added¶
- replace
openapi-pydanticwith our ownSchema,ReferenceandDataType
Build¶
- add
docs-aliasrecipe and deploylatestalias on release - route all CI commands through
justfilerecipes - add
testhook to enforce 100% coverage on commit
Documentation¶
- add
0.0.2release section - add
inline_snapshotitem to roadmap - add
Ruff,uv,mypy, andpre-commitbadges - add acknowledgments section
- add roadmap section
Fixed¶
- add
ignore_missing_importsoverride forfqdn/rfc3986 - add
latestprefix to installation guide link - allow missing AWS credentials config
- validate URI/IRI component validity, rename
exctoer - update copyright year to
2026 - deploy
docsand routev0.*toTestPyPI
Other¶
- remove
TestPyPIpublishing
Testing¶
- add tests for invalid URI/IRI reference validation
0.0.1 — 2026-06-11¶
Added¶
- export
Referencein public API - add custom
Schema/ReferencewithNone-stripping serialization - add model validators support in lax mode
- implement user-provided coerce functions in lax mode
- implement centralized version management and docs versioning
- add
__version__and allow direct references - add PyPI metadata to
pyproject.toml - add IRI validators
- add format validators, public API, lax mode, and schema dumping
- initial library with converter, formats, and types
Build¶
- add PR title validation for Conventional Commits format
- switch from exclude to include whitelist
- add tag-based release workflow,
git-cliffchangelog,just release - switch to
hatch-vcsfor version from git tags - configure
hatchlingbuild targets and exclusions - add GitHub Actions workflows for CI and PyPI publishing
Changed¶
- simplify
sanitize_identifierwithre.sub - remove
SchemaFormatclass and_base.pymodule - remove all lax model functionality
- add
TYPE_CHECKINGguard forJsonTypeimport - add
__all__to_version.py - convert builtin formats to Pydantic types
- remove
extra.pyand related tests - move
markdownlint-cli2tojustfilelint - integrate
codespellandmarkdownlintintojust lint - remove dead
lax.pyper-file ignores - remove
UP007ignore fromconverters.py - remove
FURB162ignore (timezone) - remove complexity ignores (
C901,PLR0911,PLR0912) - remove
PLR2004ignore (magic values) - remove
A001/A004ignores (shadowing builtins) - remove
TRYignores (TRY003/004/300/301) - remove
EM102ignore (f-string in exceptions) - remove
FBT001ignore (boolean positional args) - remove
PLW2901ignore (loop variable overwrite) - remove
RET504ignore (unnecessary assignment) - remove
RUF022ignore and sort__all__ - remove
ERA001ignore (commented code) - restructure into package, improve tests
- remove
schema.pymodule - restructure modules, merge lax into
SchemaConverter - remove
before_validatorssupport - clean up converter logic
- simplify README and
__init__.py
Documentation¶
- set initial release to
0.0.1 - replace placeholder URLs with actual repository URL
- fix data in license
- simplify
README.md, add docs and license badges - clarify
format_validatorsbehavior - refresh documentation homepage
- use tabbed installation guide
- align workflow and examples docs
- clarify
objectschema conversion - explain
model_nameresolution - improve contribution guidelines
- fix command to use
uv - improve contribution workflow documentation
- add
CONTRIBUTING.mdsymlink to repo root - fix
types.mdto reference own module instead ofopenapi_pydantic - remove stale lax mode references, fix version path and twine command
- simplify PR template, fix docstring style to Sphinx
- apply review feedback across all documentation pages
- fix install command in
README.mdand updateinstall.md - add module docstrings
- fix remaining CSV format examples
- update examples to use JSON format instead of CSV
- enhance theme with auto-switch and darker colors
- resolve TODO items and improve documentation
- add publishing guide for PyPI releases
- add
CHANGELOG.mdfor version tracking - improve documentation and fix examples
- add complete README documentation
Fixed¶
- validate
releaseversion argument - generate changelog for target tag
- restore fork placeholder in
contributing.md - set
rufftarget-versiontopy312to matchrequires-python - rename
SchemaConvertionErrortoSchemaConversionError - fix broken optional dependency check in
_validators.py - enforce
additionalPropertiesforobjectfields - use correct
#>print output format - resolve lint errors and update
uv.lock - move
fqdn/rfc3986back toformats-baseoptional extra - add
fqdnandrfc3986to core dependencies - configure
codespelland adjustmarkdownlintintegration - add necessary ignores for existing lint issues
Other¶
- run
linthook for non-python changes - run
pre-committhroughuvininstall - ignore
coverage.xmlartifact - add
exclude-newersupply-chain guard, upgrade all dependencies - add
.python-versionwith3.12 - ignore
COM812to fixruff formatconflict warning - wrap
$defsand$refin backticks in comments and docstrings - merge
.markdownlint.yamlinto.markdownlint-cli2.yaml - use
# fmt: offfor#>markers, removeruff.format.exclude - add docstrings to package
__init__.py, removeD104ignore - add missing docstrings, remove
D100/D104/D105/D107ignores - reorder
pyproject.tomlsections,[project]first - replace
pytest-examplesgit dep with PyPI release - add
justCI recipes, usejust ci-*in all workflow jobs - pin all actions by SHA, update to latest versions, clean up params
- improve workflow description
- fix errors, restore 100% coverage, exclude scratch files
- update author email, switch
pydantic-extra-typesto PyPI - add build artifacts to
.gitignore - remove override for
tests.* - remove override for
pydantic_jsonschema.formats.extra - remove override for
fqdnandrfc3986 - remove override for
examples.* - add infrastructure (docs site, examples, templates, license)
- resolve remaining
rufflint issues - update
.gitignore - enable strict typing for tests
- add
rufflinting,justfile, andpre-commit - add
.gitignore
Testing¶
- remove duplicate tests and WHAT-comments
- add tests for
SchemaNone-stripping andReference$refkey serialization - add coverage tests for
LaxSchemaConverteredge cases - add coverage tests and set
cov-fail-under - add comprehensive test suite