YResource.path is now optional for by-name injection scenarios
Documentation restructured and expanded; README updated with DI examples
Fixed
Robust globstar handling in mask compilation
Numerous test improvements; coverage threshold enforced at 80% (current ~96%)
[v0.9.4] - 2025-07-21
Added to init.py
New YSettings class as the primary configuration API
YRegistry for thread-safe configuration management with URI-based factory helpers
YNode class with extended API: items(), values(), rich equality and iterator support
YSource abstract base class and concrete implementations: YamlFileSource, EnvFileSource
@coyaml decorator and YResource metadata for zero-boilerplate dependency injection
deep_merge utility function for configuration merging
Legacy imports maintained for backward compatibility (YConfig, YConfigFactory)
Changed
Updated package exports to include new API classes while maintaining legacy support
Improved module structure with better separation of concerns
[v0.9.3] - 2025-06-22
Added
Powerful template engine with ${{ action:param }} syntax supporting env, file, config and yaml actions
YSettings.resolve_templates() for recursive template evaluation
Thread-safe YRegistry with URI-based factory helpers (create_from_uri, create_from_uri_list)
Decorator @coyaml and metadata YResource for zero-boilerplate dependency injection with typing.Annotated support and automatic conversion to Pydantic models
New sources: YamlFileSource, EnvFileSource (binary-safe I/O)
Extended YNode API: items(), values(), rich equality and iterator support
Almost 100 % test coverage, over 70 new tests covering edge cases and error paths
Changed
All file operations switched to binary mode with explicit UTF-8 decoding for robust Unicode handling
Deep-merge logic extracted to coyaml.utils.merge.deep_merge
Documentation polished and translated, quick-start rewritten