NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #56 most downloaded on PyPI
JSON Referencing + Python
Last release 11 months ago
13 Oct 2025
Ships unpredictably
gaps range from 8 days to 9 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
108 releases · first in 2022
One column per quarter.
Declare support for Python 3.14 and 3.14t by @cclauss in #270
Declare support for Python 3.14.
Drop support for Python 3.9 which is near EOL.
Full Changelog : v0.36.1...v0.36.2
Full Changelog: v0.36.1...v0.36.2
Release using the newer twine release to preserve PEP 639 license metadata.
Add lower bound pin for typing-extensions by @lukasmasuch in #211
Full Changelog: v0.36.0...v0.36.1
Add a lower pin on typing-extensions for the version we depend on.
Full Changelog : v0.35.1...v0.36.0
Full Changelog: v0.35.1...v0.36.0
Make Resource.pointer also properly handle empty pointers (which refer to the root document). This fix likely only affects you if you were using that
Resource.pointer also properly handle empty pointers (which refer to the root document).Resource.lookup already handles empty fragments.Full Changelog: v0.35.0...v0.35.1
Ensure that Registry.contents() also raises NoSuchResource exceptions for nonexistent resources, not KeyError (which is an implementation detail).
Registry.contents() also raises NoSuchResource exceptions for nonexistent resources, not KeyError (which is an implementation detail).Full Changelog: v0.34.0...v0.35.0
Also look inside definitions keywords even on newer dialects. The specification recommends doing so regardless of the rename to $defs .
definitions keywords even on newer dialects. The specification recommends doing so regardless of the rename to $defs.Full Changelog: v0.33.0...v0.34.0
Add a referencing.jsonschema.SchemaResource type alias to go along with the other JSON Schema specialized types.
referencing.jsonschema.SchemaResource type alias to go along with the other JSON Schema specialized types.Full Changelog: v0.32.1...v0.33.0
Make Specification.detect raise a CannotDetermineSpecification error even if passed a mapping with a $schema key that doesn't match JSON Schema dialec
Specification.detect raise a CannotDetermineSpecification error even if passed a mapping with a $schema key that doesn't match JSON Schema dialect semantics (e.g. a non-string).Full Changelog: v0.32.0...v0.32.1
Full Changelog : v0.31.1...v0.32.0
Full Changelog: v0.31.1...v0.32.0
Add Specification.detect , which essentially operates like Resource.from_contents without constructing a resource (i.e. it simply returns the detected specification).
<!-- Release notes generated using configuration in .github/release.yml at v0.31.1 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.31.1 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.31.0...v0.31.1
<!-- Release notes generated using configuration in .github/release.yml at v0.31.0 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.31.0 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.30.2...v0.31.0
Add referencing.jsonschema.EMPTY_REGISTRY (which simply has a convenient type annotation, but otherwise is just Registry() ).
<!-- Release notes generated using configuration in .github/release.yml at v0.30.2 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.30.2 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.30.1...v0.30.2
<!-- Release notes generated using configuration in .github/release.yml at v0.30.1 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.30.1 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.30.0...v0.30.1
Ensure that an sdist contains the test suite JSON files.
<!-- Release notes generated using configuration in .github/release.yml at v0.30.0 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.30.0 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.29.3...v0.30.0
<!-- Release notes generated using configuration in .github/release.yml at v0.29.3 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.29.3 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.29.2...v0.29.3
<!-- Release notes generated using configuration in .github/release.yml at v0.29.1 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.29.1 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.29.0...v0.29.1
<!-- Release notes generated using configuration in .github/release.yml at v0.29.0 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.29.0 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.28.6...v0.29.0
Add referencing.retrieval.to_cached_resource , a simple caching decorator useful when writing a retrieval function turning JSON text into resources without repeatedly hitting the network, filesystem, etc.
<!-- Release notes generated using configuration in .github/release.yml at v0.28.6 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.28.6 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.28.5...v0.28.6
<!-- Release notes generated using configuration in .github/release.yml at v0.28.5 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.28.5 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.28.4...v0.28.5
Fix a type annotation and fill in some missing test coverage.
<!-- Release notes generated using configuration in .github/release.yml at v0.28.4 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.28.4 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.28.3...v0.28.4
<!-- Release notes generated using configuration in .github/release.yml at v0.28.3 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.28.3 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.28.2...v0.28.3
<!-- Release notes generated using configuration in .github/release.yml at v0.28.2 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.28.2 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.28.1...v0.28.2
<!-- Release notes generated using configuration in .github/release.yml at v0.28.1 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.28.1 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.28.0...v0.28.1
<!-- Release notes generated using configuration in .github/release.yml at v0.28.0 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.28.0 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.27.4...v0.28.0
<!-- Release notes generated using configuration in .github/release.yml at v0.27.4 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.27.4 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.27.3...v0.27.4
<!-- Release notes generated using configuration in .github/release.yml at v0.27.3 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.27.3 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.27.2...v0.27.3
Also strip fragments when using getitem on URIs with empty fragments.
<!-- Release notes generated using configuration in .github/release.yml at v0.27.2 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.27.2 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.27.1...v0.27.2
Another fix for looking up anchors from non-canonical URIs, now when they’re inside a subresource which has a relative $id .
<!-- Release notes generated using configuration in .github/release.yml at v0.27.1 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.27.1 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.27.0...v0.27.1
<!-- Release notes generated using configuration in .github/release.yml at v0.27.0 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.27.0 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.26.4...v0.27.0
Support looking up anchors from non-canonical URIs. In other words, if you add a resource at the URI http://example.com , then looking up the anchor http://example.com#foo now works even if the resource has some internal $id saying its canonical URI is http://somethingelse.example.com .
<!-- Release notes generated using configuration in .github/release.yml at v0.26.4 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.26.4 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.26.3...v0.26.4
<!-- Release notes generated using configuration in .github/release.yml at v0.26.3 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.26.3 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.26.2...v0.26.3
Add some documentation on referencing public and non-public API.
<!-- Release notes generated using configuration in .github/release.yml at v0.26.2 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.26.2 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.26.1...v0.26.2
Also suggest a proper JSON Pointer for users who accidentally use #/ and intend to refer to the entire resource.
<!-- Release notes generated using configuration in .github/release.yml at v0.26.1 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.26.1 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.26.0...v0.26.1
<!-- Release notes generated using configuration in .github/release.yml at v0.26.0 -->
<!-- Release notes generated using configuration in .github/release.yml at v0.26.0 -->
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.25.3...v0.26.0
Attempt to suggest a correction if someone uses ‘#foo/bar’, which is neither a valid plain name anchor (as it contains a slash) nor a valid JSON pointer (as it doesn’t start with a slash)
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.25.2...v0.25.3
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.25.2...v0.25.3
Normalize the ID of JSON Schema resources with empty fragments (by removing the fragment). Having a schema with an ID with empty fragment is discouraged, and newer versions of the spec may flat-out make it an error, but older meta-schemas indeed used IDs with empty fragments, so some extra normalization was needed and useful here even beyond what was previously done. TBD on whether this is exactly right if/when another referencing spec defines differing behavior.
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.25.1...v0.25.2
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.25.1...v0.25.2
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.25.0...v0.25.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.25.0...v0.25.1
[pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/python-jsonschema/referencing/pull/31
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.24.4...v0.25.0
Bump the minimum version of rpds.py used, enabling registries to be used from multiple threads.
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.24.3...v0.24.4
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.24.3...v0.24.4
Fix handling of IDs with empty fragments (which are equivalent to URIs with no fragment)
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.24.2...v0.24.3
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.24.2...v0.24.3
[pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/python-jsonschema/referencing/pull/29
247ed7e to 58a1e53 by @dependabot in https://github.com/python-jsonschema/referencing/pull/30Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.24.0...v0.24.2
Fix handling of additionalProperties with boolean value on Draft 4 (where the boolean isn’t a schema, it’s a special allowed value)
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.24.0...v0.24.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.24.0...v0.24.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.23.0...v0.24.0
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.23.0...v0.24.0
pyrsistent was replaced with rpds.py (Python bindings to the Rust rpds crate), which seems to be quite a bit faster. No user-facing changes really should be expected here.
On this page
Changelog
v0.37.0
v0.36.2
v0.36.1
v0.36.0
v0.35.1
v0.35.0
v0.34.0
v0.33.0
v0.32.1
v0.32.0
v0.31.1
v0.31.0
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.6
v0.28.5
v0.28.4
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27.0
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.4
v0.24.3
v0.24.2
v0.24.1
v0.24.0
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.22.0...v0.23.0
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.22.0...v0.23.0
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.21.1...v0.22.0
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.21.1...v0.22.0
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.21.0...v0.21.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.21.0...v0.21.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.20.4...v0.21.0
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.20.4...v0.21.0
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.20.3...v0.20.4
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.20.3...v0.20.4
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.20.0...v0.20.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.20.0...v0.20.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.19.2...v0.20.0
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.19.2...v0.20.0
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.19.1...v0.19.2
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.19.1...v0.19.2
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.19.0...v0.19.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.19.0...v0.19.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.18.5...v0.18.6
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.18.5...v0.18.6
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.18.3...v0.18.4
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.18.3...v0.18.4
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.18.2...v0.18.3
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.18.2...v0.18.3
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.18.1...v0.18.2
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.18.1...v0.18.2
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.18.0...v0.18.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.18.0...v0.18.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.17.0...v0.17.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.17.0...v0.17.1
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.16.4...v0.17.0
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.16.4...v0.17.0
Your coding agent can read these notes before it upgrades. Set up the MCP server →