Release Notes
This page contains the release history and changelog for params-proto.
Version 3.3.0 (2025-02-04)
✨ Features
- Deep Nested Dot Notation for CLI: Support for overriding nested dataclass fields via CLI
- Recursively detects nested dataclass fields in type annotations
- Supports arbitrary nesting depth (e.g.,
--model.encoder.layers 12) - Automatically constructs nested dataclass instances
Version 3.2.4 (2025-02-04)
🐛 Bug Fixes
-
Context Manager Protocol: Fixed regression where
__enter__and__exit__methods were stripped from@protoand@proto.prefixdecorated classes- Classes implementing context managers now work correctly with
withstatements - Also preserves all user-defined protocol methods:
__call__,__iter__,__next__,__getitem__,__len__, etc.
- Classes implementing context managers now work correctly with
-
Simplified Implementation: Removed method wrapping that caused issues
- Decorated class is now a proper subclass of the original, so methods are inherited naturally
- No more wrapping of methods to return
self- use explicitreturn selfif needed - Standard Python semantics: classmethods receive
cls, not bound to instance
🧪 Testing
- Added comprehensive tests for context manager and other Python protocol preservation
Version 3.2.2 (2025-02-03)
🐛 Bug Fixes
-
super()in@protoMethods: Fixedsuper()calls failing withTypeError: super(type, obj): obj must be an instance or subtype of type- Methods using
super()in@protoor@proto.prefixdecorated classes now work correctly - Root cause: decorated class was recreated as sibling instead of subclass of original
- Fix: decorated class is now a proper subclass, preserving the MRO chain
- Methods using
-
@protoInheriting from@proto: FixedTypeError: duplicate base class ptypewhen a@protoclass inherits from another@protoclass- Nested
@protoinheritance now works correctly - Metaclass merging skips duplicate
ptypebases
- Nested
Version 3.2.1 (2025-02-01)
🐛 Bug Fixes
- Positional Arguments in Subcommands: Fixed positional arguments being silently ignored after subcommand name
- Before:
myapp add my-env/v1.2.3→ positional arg silently dropped - After:
myapp add my-env/v1.2.3→ positional arg captured by subcommand's required field - Enables CLI patterns like
pip install requests,cargo add serde - Raises clear error for extra unrecognized positional arguments
- Before:
📚 Documentation
- Fixed outdated notes claiming
Optional[str]was not supported (it works)
Version 3.2.0 (2025-02-01)
✨ Features
-
Unprefixed CLI Subcommand Attributes: Subcommand attributes no longer require prefix by default
- Old:
python train.py train-config --config.epochs 200 - New:
python train.py train-config --epochs 200 - Prefixed syntax still works for backwards compatibility
- Old:
-
@proto.prefixControls CLI Prefix Requirement: Classes decorated with@proto.prefixrequire prefixed CLI syntax- Regular dataclasses:
--epochs 200(unprefixed) @proto.prefixclasses:--config.epochs 200(prefixed required)
- Regular dataclasses:
🐛 Bug Fixes
isinstance()for@proto.prefixInstances: Fixedisinstance(instance, DecoratedClass)returningFalse- Instances of
@proto.prefixdecorated classes now correctly pass isinstance checks - Enables proper type checking in Union subcommand handlers
- Instances of
🧪 Testing
- Added comprehensive nested CLI subcommand tests (
test_nested_cli.py) - Added parallel test execution with
pytest-xdist - Run tests in parallel:
pytest -n auto
Version 3.1.2 (2025-01-27)
📚 Documentation
- Claude Code Plugin: Fixed install command format in plugin documentation
Version 3.1.1 (2025-01-25)
🐛 Bug Fixes
- EnvVar Descriptor Protocol: EnvVar now works in plain classes without
@protodecorator- Previously
EnvVar @ "VAR" | defaultreturned_EnvVarobject in plain classes - Now auto-resolves via
__get__descriptor when accessed as class attribute - Fixes:
AttributeError: '_EnvVar' object has no attribute 'decode'
- Previously
♻️ API Changes
- Removed
.get()method: Use class attribute access instead- Old:
EnvVar("PORT", dtype=int).get() - New:
class C: port = EnvVar("PORT", dtype=int)thenC.port - Use
invalidate_cache()to force re-read from environment
- Old:
Version 3.1.0 (2025-01-23)
✨ Features
_dictProperty anddict()Support: Get a clean dict of parameter values from proto classes and functionsConfig._dictreturns{'lr': 0.001, 'batch_size': 32}(defaults merged with overrides)dict(Config)works identically via__iter__support- Works for both
@proto/@proto.prefixclasses and@proto.cli/@proto.prefixfunctions
📚 Documentation
- Added
_dictproperty documentation to API reference - Updated Claude skill references with clean dict examples
Version 3.0.0 (2025-01-12)
✨ Features
-
Automatic Type Inference for Untyped Attributes: Class attributes without explicit type annotations are now automatically inferred
name = "hello"is treated asname: str = "hello"count = 42is treated ascount: int = 42data = Noneis treated asdata: Any = None(generic type)- Untyped attributes now appear in
vars(self)inside__post_init__ - Explicit type annotations are always preserved
-
EnvVar OR Operation: Try multiple environment variable names in order
EnvVar @ "PRIMARY" @ "FALLBACK" | default- tries PRIMARY first, then FALLBACK- Function syntax:
EnvVar("PRIMARY", "FALLBACK", default="value") - Returns first env var that is set, or default if none are set
-
EnvVar Lazy Loading: Environment variables are cached after first access
- Values cached after first access via descriptor
invalidate_cache()clears cached value for re-read
🐛 Bug Fixes
- Untyped class attributes now correctly appear in
vars(self)during__post_init__ - Consolidated duplicate
_EnvVarclass definitions
Version 3.0.0-rc25 (2025-01-08)
✨ Features
- New
piter @Operator Syntax: Cleaner, more readable parameter iteration- Use
piter @ {"lr": [0.001, 0.01]}instead ofpiter({"lr": [0.001, 0.01]}) - Chain with
*without repeatingpiter:piter @ {"lr": [0.001, 0.01]} * {"batch_size": [32, 64]} - Legacy function-call syntax still supported for backward compatibility
- Use
📚 Documentation
- Added Operators Quick Reference table to parameter-iteration docs
- Added Operator Precedence section with examples
- Updated all code examples to use the new
@syntax
Version 3.0.0-rc24 (2025-12-29)
✨ Features
-
Literal[...] Type Support: Full validation of allowed values
- Restricts parameters to specific set of allowed values
- Works with strings, numbers, and mixed types
- Case-sensitive validation with clear error messages
- Example:
Literal["adam", "sgd", "rmsprop"]
-
Enum Type Conversion: Automatic conversion to enum members
- Case-insensitive CLI matching for user convenience
- Supports
auto()and custom value enums - Member name displayed in help text
- Example:
Optimizer.ADAMfrom--optimizer adam
-
Path Type Instantiation: Automatic
pathlib.Pathcreation- Strings converted to Path objects automatically
- Works with relative and absolute paths
- Ready to use with pathlib methods
- Part of general callable type instantiation pattern
-
dict Type Parsing: Safe parsing using
ast.literal_eval- Supports nested structures and mixed types
- No code execution risk - only evaluates literals
- Works with both single and double quotes
- Example:
'{"lr": 0.01, "batch_size": 32}'
🎯 General Callable Type Instantiation
Implemented unified approach for custom types:
- Any callable type annotation is automatically instantiated with string value
Path(value)for paths- Custom classes with string constructors
- dataclasses and other callables
📚 Documentation
- Comprehensive sections for Literal, Enum, Path, dict types
- Security note on
ast.literal_evalfor dict parsing - CLI usage examples for all new types
- Updated Type Support Matrix showing all types as ✅ Full
📊 Test Coverage
Added 17 comprehensive tests in test_advanced_types.py:
- ✅ Literal validation (strings, numbers, mixed)
- ✅ Enum conversion (auto() and custom values)
- ✅ Path instantiation (relative and absolute)
- ✅ dict parsing (simple, nested, mixed types)
- ✅ Combined usage of multiple advanced types
- ✅ Help text generation for all types
- All existing 48 CLI parsing tests still passing (65 total)
🔄 Type System Complete
Now fully supporting 13 type categories:
- Primitive: int, float, str, bool
- Special: Optional[T], Union types
- Collections: List[T], Tuple[T, ...], dict
- Validation: Literal[...], Enum
- Paths: pathlib.Path
- Custom: Any callable type
Version 3.0.0-rc23 (2025-12-29)
✨ Features
-
Tuple[T, ...] CLI Parsing: Full support for variable-length and fixed-size tuples
- Variable-length tuples:
Tuple[int, ...]collects values into tuple with consistent type - Fixed-size tuples:
Tuple[int, str, float]with mixed types at each position - CLI collects multiple values:
python script.py --sizes 256 512 1024→sizes=(256, 512, 1024) - Automatic element/position type conversion with type safety
- Works with defaults and
@proto.prefixclasses - Help text shows tuple notation:
(INT,...)or(INT,STR,FLOAT)
Implementation:
- Updated
_convert_type()intype_utils.pyto handle both variable and fixed-size tuples - Updated CLI parser in
cli_parse.pyto collect multiple values for Tuple parameters - Updated
_get_type_name()to display tuple signatures in help text
Test Suite: All 9 comprehensive test cases now PASSING in
tests/test_v3/test_cli_parsing.py:- ✅
test_tuple_variable_length_int- Variable-length integer tuples - ✅
test_tuple_variable_length_float- Variable-length float tuples - ✅
test_tuple_variable_length_str- Variable-length string tuples - ✅
test_tuple_fixed_size_mixed- Fixed-size with mixed types (int, str, float) - ✅
test_tuple_with_defaults- Overriding tuple defaults - ✅
test_tuple_single_value- Single value wrapped in tuple - ✅
test_tuple_empty_initialization- Empty tuple defaults - ✅
test_tuple_with_prefix_class- Tuples in @proto.prefix classes - ✅
test_tuple_help_strings- Help text generation
- Variable-length tuples:
📋 Type System Updates
- Type Support Matrix: Updated to show
Tuple[T, ...]as ✅ Full support - Documentation: Comprehensive guide for tuple usage with examples and CLI patterns
- Total Fully Working Types: int, float, str, bool, Optional[T], List[T], Tuple[T, ...], Union types
Version 3.0.0-rc22 (2025-12-29)
📚 Documentation
- List[T] CLI Parsing Documentation: Comprehensive guide for using list types
- Updated
docs/key_concepts/type-system.mdwith practical examples - Added section showing CLI usage patterns:
--items a b c→ list of values - Help text generation examples showing
[STR],[INT],[FLOAT]notation - Explanation of how multiple values are collected until next flag
- Type support matrix updated to show List[T] as ✅ Full support
- Updated
Version 3.0.0-rc21 (2025-12-29)
✨ Features
-
List[T] CLI Parsing: Full support for
List[str],List[int],List[float]and other list types- CLI collects multiple values:
python script.py --items a b c→items=['a', 'b', 'c'] - Automatic element type conversion:
python script.py --counts 1 2 3→counts=[1, 2, 3] - Works with defaults:
--items x y zoverridesitems: List[str] = ["default"] - Help text shows element type:
--items [STR],--counts [INT],--ratios [FLOAT] - Support for List parameters in
@proto.prefixclasses
Implementation:
- Updated
_convert_type()intype_utils.pyto handle generic List[T] types - Updated CLI parser in
cli_parse.pyto collect multiple CLI arguments for List parameters - Updated
_get_type_name()to display[INT],[STR],[FLOAT]in help text
Test Suite: All 9 comprehensive test cases now PASSING in
tests/test_v3/test_cli_parsing.py:- ✅
test_list_str_cli_parsing- Multiple string values - ✅
test_list_int_cli_parsing- Multiple integers with type conversion - ✅
test_list_float_cli_parsing- Multiple floats - ✅
test_list_with_defaults- Overriding list defaults - ✅
test_list_with_prefix_class- List in @proto.prefix classes - ✅
test_list_empty_initialization- Empty list defaults - ✅
test_list_single_vs_multiple_values- Single value wrapped in list - ✅
test_list_help_strings- Help text generation - ✅
test_list_str_whitespace_handling- Paths and special characters
- CLI collects multiple values:
📋 Documentation & Known Issues
-
Type System Documentation: Updated type support matrix to accurately reflect CLI parsing status
- ✅ Fully working: int, float, str, bool, Optional[T], List[T], Union[Class, Class], dataclass unions
- ⚠️ Partial: Literal[...], Enum (help text works, no runtime conversion)
- ❌ Broken: Tuple[T, ...], Path, dict (collection types)
-
Path Type Issue: Documented that Path type annotation is not converted from strings
- Help text shows correctly, but CLI strings are not wrapped in Path objects
-
Enhanced Union Types Documentation:
- Added "Why Union Types Matter" section in union_types.md
- Reorganized examples to show CLI usage first, then implementation
- Clarified that Union types are a core feature for multi-way dispatching
Migration Notes:
- Workaround for Path parameters: Accept string and convert in function body
Version 3.0.0-rc20 (2025-12-28)
🐛 Bug Fixes
-
Optional[T] CLI Parsing: Fixed
Optional[str],Optional[int], and otherOptional[T]types failing to parse correctly in CLIThe issue:
Optional[T]types were incorrectly treated as Union subcommands, requiring special syntax instead of working as simple optional parameters.Before (v3.0.0-rc19):
❌ This would fail:
✅ After (v3.0.0-rc20):
Improved help output:
Technical fixes:
- Fixed
cli_parse.py:_get_union_classes(): Now filters outNoneTypefrom Union type arguments - Fixed
cli_parse.pyUnion handling: Added detection forOptional[T]patterns (Union with single non-None type) and treats them as regular optional parameters - Fixed
type_utils.py:_get_type_name(): Now recognizesOptional[T]patterns and recursively extracts the correct inner type name for help text - Help text now shows specific types (
STR,INT,FLOAT) instead of genericVALUEfor Optional types
- Fixed
Version 3.0.0-rc19 (2025-12-28)
🧪 Testing
- Added comprehensive test cases for
Optional[str]andOptional[int]CLI parsing- Documents current limitation where
Optional[T]types don't parse correctly with normal--param valuesyntax - Tests verify expected behavior once the issue is fixed
- Documents current limitation where
📚 Documentation
-
New: Created dedicated
Union Typesdocumentation page (docs/key_concepts/union_types.md)- Quick reference with 3 common patterns (Union selection, single class, optional parameters)
- Clear distinction between
Union[ClassA, ClassB]andOptional[T] - Detailed examples and syntax variations
- Documents
Optional[str]limitation and workaround
-
Refactored: Streamlined
cli_guide.mdto reduce verbosity- Moved verbose Union/Optional explanation to dedicated
union_types.md - Replaced with concise 3-line reference for quick navigation
- Maintains clarity while keeping main guide focused
- Moved verbose Union/Optional explanation to dedicated
Version 3.0.0-rc18 (2025-12-26)
🐛 Bug Fixes
-
EnvVar Instantiation Fix: Fixed
@proto.prefixclasses with EnvVar fields failing on instantiation withAttributeError: '_EnvVar' object has no attribute '__get__'.The bug occurred because
_EnvVaris callable (has__call__), so it was incorrectly detected as a method during instance creation. The fix uses precise method detection withinspect.isfunctionandinspect.ismethodinstead of the overly broadcallable()check.
📚 Documentation
- Added EnvVar + inheritance documentation and tests
- Documented that inherited EnvVar fields are resolved and type-converted correctly
Version 3.0.0-rc17 (2025-12-26)
✨ Features
-
Inherited Fields: Support inherited fields in
@protoclasses. Parent class fields are now properly included invars(), CLI args, and work with EnvVar.
Version 3.0.0-rc16 (2025-12-26)
🐛 Bug Fixes
- Python 3.10 Support: Use
Union[]syntax instead of|operator for type hints to support Python 3.10 (#17).
Version 3.0.0-rc15 (2025-12-19)
🐛 Bug Fixes
-
EnvVar dtype Conversion: Fixed
EnvVar.get()to apply thedtypeparameter for type conversion. Previously, thedtypewas stored but not used when reading from environment variables, causing values to always be returned as strings.All dtypes are now properly applied:
int,float,bool, andstr.
Version 3.0.0-rc10 (2025-12-17)
🐛 Bug Fixes
-
Classmethod/Staticmethod Support: Fixed
@proto,@proto.cli, and@proto.partialdecorators to properly handle@classmethodand@staticmethoddescriptors. Previously, decorating methods with@protowould incorrectly includeself/clsin CLI parameters or corrupt method calls.Correct decorator order (proto decorator on the OUTSIDE):
The decorators now:
- Detect
classmethod/staticmethoddescriptors viaisinstance() - Properly unwrap to get the underlying function signature
- Exclude
clsparameter for classmethods automatically - Implement descriptor protocol (
__get__) for proper method binding - Re-wrap results in
classmethod()/staticmethod()forproto.partial
- Detect
-
VAR_POSITIONAL/VAR_KEYWORD Handling:
*argsand**kwargsparameters are now properly excluded from CLI parameters by checkinginspect.Parameter.kindinstead of just parameter names.
Version 3.0.0-rc7 (2025-12-16)
✨ Features
- Claude Skill: Added hierarchical Claude skill documentation in
skill/directory. Provides AI assistants with comprehensive params-proto knowledge including:- Quick reference and cheat sheet
- API documentation for all decorators
- Feature guides (help generation, environment variables, sweeps)
- Common patterns and examples
Version 3.0.0-rc6 (2025-12-16)
🐛 Bug Fixes
- Boolean Type Display: Boolean flags now show
BOOLtype in help text for consistency with other types (INT, STR, FLOAT).
Version 3.0.0-rc5 (2025-12-16)
🐛 Bug Fixes
-
Boolean Flag Help Text: Fixed help text for boolean flags with
default=True. Previously,--flagwas shown in help even when the flag defaulted to True (making--flaga no-op). Now shows--no-flagfor booleans defaulting to True, making it clear how to disable the feature.Previously:
--cuda Use CUDA acceleration (default: True)Now:--no-cuda Use CUDA acceleration (default: True) -
ANSI Help Colorization: Fixed regex that incorrectly colored the first word of boolean flag descriptions as a type. Now only uppercase type names (INT, STR, FLOAT, BOOL) and enum choices (
{A,B,C}) are colorized as types.
Version 3.0.0-rc4 (2025-12-14)
🐛 Bug Fixes
- EnvVar Class Resolution: Fixed EnvVar not resolving at import time for class-based configs.
Previously, accessing
Config.ipon a@proto.prefixclass withip: str = EnvVar @ "VAR" | "default"would return theEnvVarobject instead of the resolved value. Now EnvVar values are resolved at decoration time for both functions and classes.
Version 3.0.0 (Upcoming)
🎉 Major Release: Complete v3 Redesign
params-proto v3 is a complete rewrite focused on simplicity and modern Python type hints.
✨ Key Features
Documentation & Help Generation
- Multi-line Documentation: Inline comments and docstring Args are now concatenated on separate lines for better readability Generates:
- Automatic Help Generation: Parse inline comments (
#) for parameter documentation - Docstring Args Support: Extract parameter docs from Google/NumPy-style docstrings
- Smart Deduplication: Identical inline and docstring descriptions are shown only once
- Auto-generated Descriptions: Fallback descriptions generated from parameter names
Environment Variables
- EnvVar Support: Read configuration from environment variables with type conversion
- Pipe Operator Syntax: Clean default value syntax:
EnvVar @ "VAR" | default - Template Expansion: Support for
$VAR,${VAR}, and multiple variable substitution - Type Conversion: Automatic conversion of env var strings to annotated types
CLI Improvements
- Function CLI: Decorate functions with
@proto.clifor instant CLI programs - prog Parameter: Override script name for predictable help output in tests
- Rich Type Support: Optional, List, Literal, Tuple, Enum, Path, Union types
- Multi-namespace Configs: Use
@proto.prefixfor organized, modular configurations
🔄 API Changes
- Decorator-based:
@protoand@proto.cliinstead of class inheritance - Type Hints Required: Full type hint support for IDE integration
- Simplified Singleton:
@proto.prefixfor singleton configs - Function Support: First-class support for function-based configs
📚 Documentation
- Complete Rewrite: All documentation updated for v3 API
- Comprehensive Examples: Real-world ML training and RL agent examples
- Migration Guide: Step-by-step guide for upgrading from v2
- Type System Guide: Complete documentation of supported type hints
Version 2.13.2 (2025-08-03)
📚 Documentation
- Major: Added comprehensive Sphinx documentation site with Furo theme
- Added: Complete API documentation for proto, hyper, and utils modules
- Added: Extensive tutorial collection covering:
- Basic usage patterns and CLI integration
- Advanced features including dynamic configs and validation
- Environment variables for flexible deployment
- Nested configurations for complex applications
- Hyperparameter sweeps and experiment management
- Added: Read the Docs integration with automatic builds
- Updated: Repository moved to
geyang/params-protowith main branch as default
🔧 Configuration Management
- Added: Documentation build targets to main Makefile (
make docs,make preview) - Added:
.readthedocs.yamlconfiguration for automated documentation builds
Version 2.13.0 (2025-01-15)
✨ Features
- Added: Environment name checking to ensure all env names are defined in env string
- Fixed: Dollar-sign handling in environment variable strings
- Improved: Code formatting with ruff configuration
- Removed:
typingdependency (no longer needed for Python 3.8+)
🧹 Maintenance
- Added: Comprehensive ruff configuration for code formatting
- Added: PyCharm/IntelliJ IDE configuration files
- Updated: Setup.py dependency management
- Improved: Test coverage for environment variable parsing
Version 2.12.1 (2024-04-20)
🐛 Bug Fixes
- Improved: Error traces for better debugging experience
- Enhanced: Exception handling and error reporting
Version 2.12.0 (2023-12-21)
🧹 Maintenance
- Removed:
textwrapdependency (was causing import issues) - Fixed: README documentation formatting
- Updated: Dependency cleanup
Version 2.11.x Series (2023)
The 2.11.x series focused on advanced parameter management and hierarchical configurations.
Version 2.11.16 (2023-09-03)
- Added: Tree mode support for both Meta instances and ParamsProto instances
- Improved: Nested dictionary handling with
_treeattribute - Enhanced: Parameter attribute management
Version 2.11.14 (2023-07-24)
- Fixed:
__vars__property for ParamsProto descendants - Improved: Property descriptor handling for dynamic attributes
Version 2.11.13 (2023-07-24)
- Enhanced:
vars(Args)functionality for better introspection - Added: Dynamic property access improvements
Version 2.11.12 (2023-07-24)
- Changed:
Args.propertynow returns property descriptor instead of value - Improved: Property-based parameter access patterns
Version 2.11.11 (2023-07-23)
- Removed: Debug print statements from production code
- Cleaned: Console output for cleaner user experience
Version 2.11.10 (2023-07-23)
- Added: Parameter freezing once namespace is instantiated
- Improved: Immutability patterns for configuration safety
Version 2.11.9 (2023-07-22)
- Fixed: Function detection in parameter attributes
- Improved: Dynamic attribute handling
Version 2.11.8 (2023-07-22)
- Changed: Child detection moved to initialization time
- Improved: Performance of nested configuration detection
Version 2.11.7 (2023-07-22)
- Fixed:
__new__method super() call issues - Improved: Object instantiation patterns
Version 2.11.6 (2023-07-22)
- Fixed: ParamsProto set as non-recursive Bear to prevent dict→Bear conversion
- Improved: Nested attribute handling
Version 2.11.5 (2023-07-22)
- Added: Support for object properties in configurations
- Enhanced: Property-based parameter definitions
Version 2.11.4 (2023-07-22)
- Improved: Internal attribute management
- Enhanced: Performance optimizations
Version 2.11.3 (2023-07-21)
- Fixed: Critical
__vars__property bug - Improved: Dictionary representation of configurations
Version 2.11.2 (2023-07-21)
- Fixed: Argument parsing edge cases
- Improved: CLI argument handling robustness
Version 2.11.1 (2023-07-21)
- Added: Children attribute support for nested configurations
- Enhanced: Hierarchical parameter management
Version 2.11.0 (2023-07-21)
- Major: Added hierarchical hydration support
- Added: Nested configuration update mechanisms
- Enhanced: Multi-level parameter management
Older Versions
Version 2.12.0
- Removed:
textwrapdependency - Fixed: Documentation links and formatting
Version 2.11.x Series
- Multiple bug fixes and improvements
- Enhanced CLI argument parsing
- Better error handling and validation
Version 2.10.x Series
- Stability improvements
- Performance optimizations
- Bug fixes in parameter handling
Version 2.9.x Series
- Enhanced hyperparameter sweep functionality
- Improved nested configuration support
- Better environment variable handling
Version 2.8.x Series (Long-term stable)
- Core functionality stabilization
- Extensive bug fixes and improvements
- Enhanced CLI features
Version 2.4.0 - 2.8.0
- Major feature additions
- API improvements and stabilization
- Enhanced documentation
Version 2.0.3 - 2.2.0
- Initial stable releases
- Core parameter management functionality
- Basic CLI integration
Migration Guide
Upgrading to 2.13.x
The 2.13.x series introduces comprehensive documentation but maintains full backward compatibility. No code changes are required.
Key Changes Since 2.0.x
- Environment Variables: Enhanced support for environment variable defaults and validation
- Nested Configurations: Improved support for hierarchical parameter structures
- Hyperparameter Sweeps: Advanced sweep functionality with the
Sweepclass - Type Safety: Better type hints and validation throughout the codebase
- Documentation: Complete rewrite with examples and API reference
Breaking Changes
Version 2.13.0
- Removed:
typingdependency - ensure your Python version supports built-in type hints - Repository: Moved from
episodeyang/params_prototogeyang/params-proto
Earlier Versions
- See individual version notes above for specific breaking changes
Contributors
- Ge Yang - Primary author and maintainer
- Claude Code - Documentation generation and enhancement
Support
- Documentation: https://params-proto.readthedocs.io/
- Issues: https://github.com/geyang/params-proto/issues
- Repository: https://github.com/geyang/params-proto