Changelog¶
All notable changes to MLSchema will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.1.1] - 2025-10-08¶
Added¶
- Initial release of MLSchema
- Core
MLSchemaclass with register, unregister, update, and build methods - Strategy pattern architecture for extensible field type handling
- Built-in strategies:
NumberStrategy: Handles int32, int64, float32, float64TextStrategy: Handles object and string typesBooleanStrategy: Handles bool and boolean typesDateStrategy: Handles datetime64[ns] typesCategoryStrategy: Handles categorical types- Pydantic-based schema validation
- Comprehensive test suite (281 tests, 100% coverage)
- Full type hints with Pyright strict mode
- Documentation with MkDocs
- Pre-commit hooks for code quality
Changed¶
N/A
Deprecated¶
N/A
Removed¶
N/A
Fixed¶
N/A
Security¶
N/A
[0.1.2] - 2025-10-29¶
Added¶
- Open Software License Headers
Changed¶
- Readme
Deprecated¶
N/A
Removed¶
N/A
Fixed¶
N/A
Security¶
N/A
[0.1.3] - 2026-04-16¶
Added¶
SeriesStrategy: content-based strategy for two-axis columns. Each cell must be a 2-element tuple, list, or dict. Sub-field schemas are auto-inferred from element dtypes via the registered strategy registry.SeriesField: Pydantic model for series fields withfield1,field2,min_points, andmax_pointsattributes.field1/field2accept any registered sub-field type; nestingSeriesFieldinside itself is explicitly rejected.min_points/max_pointsenforce cardinality constraints (PositiveInt;min_points ≤ max_points).add_series_sub_field(cls): public helper to register customBaseFieldsubclasses as valid sub-fields insideSeriesField.content_probe(series)hook onStrategybase class (defaultFalse). Strategies that override this are matched before dtype-based lookup, enabling non-dtype detection patterns.set_registry(registry)hook onStrategybase class (no-op default). Called byService.register()after registration.SeriesStrategyuses it to access the registry for sub-field dtype resolution.Registry.strategy_for_content(series): iterates registered strategies and returns the first whosecontent_probe()returnsTrue.
Changed¶
Service._field_payload(): content-probe lookup now takes priority over dtype and fallback lookups.Service.build_schema(): top-level payload now includesexplanationsalongsidefieldsandreports.FieldTypesenum: addedSERIES = "series".strategiespublic API:SeriesStrategyandadd_series_sub_fieldnow exported at package level.
Fixed¶
N/A
Security¶
N/A
Legend:
- 🎉 Added: New features
- 🔄 Changed: Changes in existing functionality
- 🗑️ Deprecated: Soon-to-be removed features
- ❌ Removed: Now removed features
- 🐛 Fixed: Bug fixes
- 🔒 Security: Security improvements
Last Updated: April 16, 2026