Release history and notes
Sequence based identifiers are used for versioning (schema follows below):
major.minor[.revision]
It is always safe to upgrade within the same minor version (for example, from 0.3 to 0.3.4).
Minor version changes might be backwards incompatible. Read the release notes carefully before upgrading (for example, when upgrading from 0.3.4 to 0.4).
All backwards incompatible changes are mentioned in this document.
0.3.2
2026-03-25
Introduce sub-aliases in aliases.json.
Introduce handy scripts for finding, automatic filling and merging the duplicates.
0.3.1
2026-03-24
Minor fixes.
0.3
2026-03-23
Plugin-based architecture — LicenseNormaliser class accepts plugin CLASSES (not instances) with lazy loading; replaces old module-level globals.
6 plugin interfaces — BasePlugin, RegistryPlugin, URLPlugin, AliasPlugin, FamilyPlugin, NamePlugin, ProsePlugin.
New `BasePlugin.refresh()` — classmethod to fetch/refresh data from upstream URLs; CLI uses parser IDs (spdx, opendefinition, etc.) instead of class names.
Thread-safe singleton — _DefaultNormaliser class with double-checked locking protects the shared LicenseNormaliser instance.
Public `registry_keys()` — LicenseNormaliser.registry_keys() exposes known keys; get_registry_keys() in _cache.py uses it.
URL population fix — inverted URL map (version_key → cleaned_url) ensures LicenseVersion.url is populated for resolved licenses.
Removed dead code — deleted _registry.py, parsers/base.py, parsers/__init__.py, and empty DEFAULT_* module globals.
Docs updated — ARCHITECTURE.rst, AGENTS.md, README.rst rewritten to reflect new plugin architecture.
0.2
2026-03-21
Architecture rewrite — parser-based pluggable system with 8 parsers loading from JSON data files.
3-level hierarchy — LicenseFamily → LicenseName → LicenseVersion with 11 families including publisher OA/TDM.
New data files — 170+ aliases, 41 prose patterns, 50+ publisher URLs (Elsevier, Wiley, Springer, ACS, etc.).
Strict mode — strict=True raises LicenseNotFoundError on unknown licenses.
Bug fixes — cc-pdm/cc0 family inference, gpl-3.0+ +-suffix stripping, false-positive prose pattern removed, ALIASES-before-REGISTRY lookup order.
Tests — 386 tests (up from ~80), including 165-case integration matrix.
Docs — AGENTS.md, ARCHITECTURE.rst, CONTRIBUTING.rst rewritten; stale literalinclude targets fixed.
0.1.1
2026-03-17
Remove Pydantic as dependency.
0.1
2026-03-17
Initial beta release.