NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #923 most downloaded on PyPI
GenSON is a powerful, user-friendly JSON Schema generator.
Last release 3 months ago
06 Jul 2026
Release timing varies
gaps range from 2 months to 3.7 years
Nearly every release is documented
notes for 15 of 15 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
15 releases · first in 2014
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
add enum support, activated per node by seed schemas (PR #82 — thanks @tokarenko; closes #46, #81)
Performance: strategy deduplication when defining custom SchemaBuilder classes is now O(n) instead of O(n²) (PR #91 — thanks @Bitshifter-9; fixes #90)
include the complete, runnable test suite in the source distribution (PR #94 — thanks @mgorny)
Bugfix: fix "noting to do" typo in the CLI error message and remove dead code (PR #93 — thanks @est)
Docs: document the required-dropping behavior and the builder-merge gotcha (#78, #25); explain why same-type inputs merge rather than producing anyOf; add a NoRequiredObject example for suppressing required (#37, #60)
declare python_requires >= 3.10, matching the tested Python versions
One column per quarter.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Bugfix: include the genson.schema subpackage in the package build; installing v1.3.0 from a wheel failed with ModuleNotFoundError (fixes #80, #92)
Bugfix: call super().add_object() in the Number strategy so subclass hooks run (PR #79)
add Python 3.13 and 3.14 to the test matrix and classifiers; drop EOL Python 3.7–3.9 (the package itself is unchanged and older Pythons may still work, but they are no longer tested)
migrate CI from Travis to GitHub Actions; releases are now published via PyPI trusted publishing
Tests: CLI integration tests use sys.executable (PR #84) and no longer depend on the test runner having an interactive stdin
add support for Python versions up through 3.12
python -m genson)schema_uri in tests (issue #69)add --encoding option to CLI tool that overrides default file encoding (fixes #47 )
--encoding option to CLI tool that overrides default file encoding (fixes #47)add __version__ attr to module and --version option to CLI tool
add --encoding option to CLI tool that overrides default file encoding (fixes #47)
Bugfix: SchemaBuilder.__eq__() wasn't matching the $schema keyword correctly
SchemaBuilder.__eq__() wasn't matching the $schema keyword correctlyrequired option when required is actualy emptyexpose SchemaStrategy.__eq__() for extension
add support for Python 3.8
update Trove classifiers
Bugfix: SchemaBuilder.__eq__() wasn't matching the $schema keyword correctly
Bugfix: only activate empty required option when required is actualy empty
SchemaStrategies are now extendable, enabling custom `SchemaBuild…
SchemaStrategies are now extendable, enabling custom `SchemaBuild…SchemaStrategies are now extendable, enabling custom SchemaBuilder classes.
optimize __eq__ logic
drop support for JSON-Schema Draft 4 (because it doesn't allow empty required arrays)
add support for Python 3.7
drop support for Python 3.3
drop support for JSON-Schema Draft 4 (because it doesn't allow empty required arrays)
Bugfix: preserve empty required arrays (fixes #25)
Bugfix: handle nested anyOf keywords (fixes #35)
add support for long integers in Python 2.7
add support for long integers in Python 2.7
update test-skipping decorator to use standard version requirement strings
Bugfix: seeding an object schema with a "required" keyword caused an error
Bugfix: seeding an object schema with a "required" keyword caused an error
Docs: fix mislabeled method
…layer, but you will trigger a PendingDeprecationWarning if you use it.
This version was a total overhaul. The main change was to split Schema into three separate classes, making it simpler to add more complicated functionality by having different generator types to handle the different schema types.
SchemaNode to manage the tree structure
SchemaGenerator for the schema generation logic
SchemaBuilder to manage the public API
SchemaBuilder is the new Schema
to_dict() is now called to_schema()
To make the transition easier, there is still a Schema class that wraps SchemaBuilder with a backwards-compatibility layer, but you will trigger a PendingDeprecationWarning if you use it.
The merge_arrays option has been removed in favor of seed schemas. You can now seed specific nodes as list or tuple instead of setting a global option for every node in the schema tree.
You can also now seed object nodes with patternProperties, which was a highly requested feature.
include "$schema" keyword
accept schemas without "type" keyword
use "anyOf" keyword to help combine schemas
add SchemaGenerationError for better error handling
empty "properties" and "items" are not included in generated schemas
genson executable
new --schema-uri option
auto-detect object boundaries by default
Docs: add installation instructions
Docs: add installation instructions
Docs: Python 3.6 is now explicitly tested and listed as compatible.
Docs: Python 3.6 is now explicitly tested and listed as compatible.
Bugfix: add_schema failed when adding list-style array schemas
Bugfix: add_schema failed when adding list-style array schemas
Bugfix: typo in readme
Bugfix: Options were not propagated down to subschemas.
Bugfix: Options were not propagated down to subschemas.
Bugfix: Empty arrays resulted in invalid schemas because it still included an items property.
Bugfix: items was being set to a list even when merge_arrays was set to True. This resulted in overly permissive schemas because items are matched optionally by default.
Improvement: Positional Array Matching - In order to be more consistent with the way JSON Schema works, the alternate to merge_arrays is no longer never to merge list items, but instead to merge them based on their position in the list.
Improvement: Schema Incompatibility Warning - A schema incompatibility used to cause a fatal error with a nondescript warning. The message has been improved and it has been reduced to a warning.
* Initial release
Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →