NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3024 most downloaded on PyPI
Minimal effort CLIs derived from type hints and parse from command line, config files and environment variables.
Last release 1 months ago
01 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
204 releases · first in 2019
Bump version: 4.51.0 → 4.52.0
Bump version: 4.51.0 → 4.52.0
New import_path_denylist and import_path_allowlist settings in set_parsing_settings that limit which import paths a value is allowed to name, so that configs from an untrusted source can't reach arbitrary code. A set of standard library paths that give code execution, e.g. os, subprocess and pickle, is denied by default, see untrusted-configs (#959, #960).
Class types nested in a tuple, set, frozenset or mapping, e.g. dict[str, SomeBaseClass], now have a --*.help option, and subclasses in any container are now included in the known subclasses shown in the help (#960).
New jsonschema completion type, i.e. --print_completion=jsonschema and parser.get_completion_script("jsonschema"), which generates a JSON Schema (draft 2020-12) that describes the config files accepted by the parser, including descriptions from docstrings, defaults, required keys, type restrictions, the types that the plain argparse actions give and one entry per known subclass of subclass types. Configs can point to a schema with a $schema key, which is ignored when parsing. This feature is experimental, so the details of the generated schema might change in non-major releases (#961).
A protocol whose single method is __call__ is now also implemented by a function with a compatible signature, so the import path of a function is accepted as value, see type-hints (#963).
New fail_untyped="all" for the add signature methods and auto_cli, which raises an exception for all parameters that don't have a type annotation, not only the required ones (#965).
Support for NamedTuple as a type. The value is an object with the fields as keys or an array of positional values, parsing gives an instance of the named tuple and dumping gives an object. It has a --*.help option that shows the accepted fields, is accepted by add_class_arguments and works subscripted when generic, see type-hints (#967).
TypedDict now accepts ReadOnly for its keys (#967).
Support for NewType and LiteralString as types. Previously they were not validated, i.e. any value was accepted. Now a NewType is validated as the supertype it stands for and a LiteralString as a str, in both cases the help showing the name as in the source code, see type-hints (#967).
Callable types that have a class as return type, e.g. Callable[..., Model], and instance factory protocols, accepted any class whose instances are callable and any function, instead of only subclasses of the return type and functions that return it (#959).
Instance factory protocols with a __call__ that takes no parameters instantiated the class instead of giving a factory (#959).
Literal with arguments that are attributes of the class in whose body the method is defined failed to resolve when annotations are postponed (#960).
set and frozenset of a class type failed to parse because subclass specs are not hashable (#960).
Shell completion of a --*.help option gave wrong choices when the class type is nested in a container or optional, e.g. builtins.NoneType for Optional[list[SomeBaseClass]] (#960).
Functions without a return annotation at runtime, e.g. C-implemented ones like time.localtime, were rejected for Callable types with a class return type, even when a stub file gives the return type. Now with the stubs resolver the return type from the .pyi is used (#963).
Unsubscripted typing sequence aliases, i.e. List, Sequence, MutableSequence, Iterable, Collection, Container, Reversible and Deque, raised AttributeError: __args__, which made classes that have one in their signature, e.g. torch.utils.data.DataLoader, impossible to add (#963).
typing.Hashable and typing.Sized were not supported, while the collections.abc spelling of the same types was. A bare one didn't validate and a composed one, e.g. Optional[Hashable], raised Unsupported type hint (#963).
A Callable default that can't be imported back, was silently dumped as a non-importable <locals> import path. Now the default is kept as the object and dumping it gives the not serializable message and a warning (#966).
Types registered with register_type were ignored when the type is subscripted, e.g. os.PathLike[str] for a registered PathLike. Now the registration of the unsubscripted type is used (#966).
A subscripted generic TypeAliasType, e.g. Alias[int] for type Alias[T] = list[T], raised Unsupported type hint. Unsubscripted, its type parameters now also stand for their default, constraints or bound, the same as any other TypeVar (#967).
Namespace.as_dict did not convert the namespaces nested in a dict or list that also holds values which are not namespaces, e.g. a TypedDict with one key of a class type and another of a simple type. Dumping such a config as json failed with Object of type Namespace is not JSON serializable (#967).
add_class_arguments given a subscripted generic class, e.g. SomeClass[int], did not instantiate it, giving a Namespace instead of an instance (#967).
A Union of a class type and an instance factory for it, e.g. Union[Optimizer, Callable[[Iterable], Optimizer]], accepted no value at all. The class subtype added as sub-default a placeholder for the parameter that the factory receives when called, which made the value invalid for itself and for the factory subtype (#968).
The shtab-bash completion script printed tput: command not found on every completion in environments that don't have tput, e.g. some containers. Now the colors of the completion messages are resolved once when the script is sourced and errors from tput are ignored, giving uncolored messages when it is not available (#968).
The documentation has been reworded throughout to be shorter and easier to read, and corrected in the places where it did not describe what the code does (#964).
New migrate-v5 guide that describes what needs to be changed to migrate from v4 to v5 (#964).
Signature parameters without a type annotation now get type Untyped instead of Any, so that the help makes evident that the value is not validated. A parameter that has a default gets Union[<type of the default>, Untyped] as before, now also with fail_untyped=False, which previously gave Any (#965).
New debug logs for the cases in which the type or the requiredness of a signature parameter is not what the signature says: no type annotation, a parameter skipped because its name starts with _, a None default that makes the type optional, a NotRequired parameter without a default and a parameter that is the target of a link (#965).
register_type no longer fails when the type is already registered. The new registration now replaces the previous one and a debug log informs about it, naming the module of each registration. This way a new type registered by jsonargparse doesn't break code that already registers it. The previous behavior is available with fail_already_registered=True (#966).
Values that name a denied import path, e.g. a class_path of subprocess.Popen, currently only emit a deprecation warning and the import proceeds. From v5.0.0 they will fail. Give a value to import_path_denylist or import_path_allowlist in set_parsing_settings, an empty list included, to get the future behavior now and silence the warning (#959).
One column per quarter.
Bump version: 4.50.0 → 4.51.0
Bump version: 4.50.0 → 4.51.0
validate_subclass_spec_in_any setting in set_parsing_settings so that when a value looks like a subclass spec but is not a valid one, the parsing fails instead of silently ignoring it. Applies to types that accept any value, i.e. Any, object, Unvalidated<...> and dicts that don't validate their values, e.g. dict[str, Any]. For dicts the spec is only validated, since the value is kept as a dict. When disabled (the default), a debug log now informs about the ignored invalid subclass spec (#938, #953, #958).
Items of a list of classes and values of a dict of classes can now be given as paths to sub-config files, instead of this only being supported for the value of an entire argument (#940).
shtab completion scripts now include file and directory completions for arguments typed as pydantic's FilePath and DirectoryPath (#943).
Support type[SomeTypedDict] such that the given class is accepted when it is structurally compatible, i.e. it has all the keys of the expected TypedDict, with the same types and requiredness (#945).
Support types.ModuleType as a type. The value is the import path of a module, which on parse is validated to be importable, and on instantiate is replaced by the imported module object (#945).
Support types.UnionType and types.GenericAlias as types, often seen in third party libraries in unions such as type | UnionType | dict. The value is a string with a type expression, e.g. "int | str" and "list[int]" (#945).
Support Collection, Container and Reversible, validated as a list, and AbstractSet, validated as a set (#950).
shtab completion scripts now include the fields of a dataclass-like type that is not added as a group, e.g. Optional[SomeDataclass] (#952).
A TypeVar used as the type itself, i.e. not only as the subtype of a type[...], is now replaced by what it stands for: its PEP 696 default, its constraints or its bound, also when given as a forward reference. Previously the value was accepted without any validation, see generic-types (#953, #958).
Arguments typed as a TypedDict now have a --*.help option that shows the keys that are accepted, their types and their descriptions. It receives no value, unless the TypedDict is in a union with other types that have a help, in which case the value is the name of the typed dict (#956).
add_class_arguments now accepts a TypedDict, adding one argument per key, analogous to a dataclass. instantiate gives the corresponding dict (#956).
Descriptions of TypedDict keys taken from its docstring are now shown in the help of **kwargs: Unpack[SomeTypedDict] parameters (#956).
shtab completion scripts now include the keys of a TypedDict argument, e.g. --data.key, and the values that these keys accept (#956).
Pydantic's alias and validation_alias and attrs' alias are now accepted as option and config keys, so that a parser accepts the same names as the class itself. The parsed namespace and dumps use the name that the class accepts, see parameter-aliases (#956).
Support a subscripted generic TypedDict, e.g. SomeDict[int], and a TypedDict that inherits from one, e.g. class SubDict(SomeDict[int]), previously unsupported types. The type arguments are substituted into the keys annotated with a TypeVar, see type-hints (#958).
TypeError when adding arguments for a class that has a parameter that has a default and is annotated with a non-@runtime_checkable Protocol type (#935).
TypedDict keys inherited from a base defined in a different module not resolving the types only imported in the TYPE_CHECKING block of that module (#936).
dump with with_comments=True, i.e. --print_config=comments, not adding any comment for the init_args of subclasses and for the fields of dataclass-like types that are not added as a group, including when nested in lists and dicts (#939).
shtab bash completion scripts not escaping choices and type messages, such that a value containing a single quote, e.g. a Literal type, produced a script with invalid syntax (#947).
Tests for shtab completions failing with shtab>=1.9.1 due to a change in how it quotes the elements of the generated bash arrays. The completion scripts themselves were not affected (#947).
fail_untyped=True failing for mandatory parameters that do have a type, with an error that says the parameter "does not specify a type". Now it only fails for parameters that have no type at all (#948).
Signature parameters with a pydantic type nested in a container, e.g. list[HttpUrl], being skipped (#948).
dump, and thus --print_config, failing when the value of an Any or Unvalidated<...> typed argument is of a type that the config format does not represent, e.g. a class instance, or a set when the format is json. Now a type is derived from the value and used to serialize it, class instances are serialized as an import path or as a message that says that it was not serializable, and a warning is raised when the dumped value does not round-trip, see unvalidated-types (#948, #956).
AssertionError without a message when adding an argument typed as a subscripted user defined generic class, e.g. Optional[Strategy[T]] (#950).
A Callable type accepting values that are neither callable nor an import path, e.g. a list, which in a union such as Union[Callable, list[Callable]] prevented the list items from being resolved (#950).
type[T] never validating. Now the TypeVar is replaced by its bound, its constraints, or object when it has neither, so that the help shows what is accepted, e.g. type[object] (#950).
Parameters of a subscripted generic class being dropped when their type is a PEP 604 union, e.g. p: int | None in a Generic[T] class added as MyClass[int] (#950).
Docstrings of base classes not being used to document inherited parameters and attributes, e.g. the attribute docstrings of a pydantic model declared in a base model not being shown in the help. Now the entire method resolution order is searched (#951).
The description of a group being taken from an inherited __init__ docstring of a base class from another package, most notably pydantic models without a docstring getting Create a new model by parsing and validating input data from keyword arguments. Now the nearest class docstring in the method resolution order is used, skipping base classes that only provide machinery (#951).
A dataclass-like type accepting the class_path of a subclass when it is not added as a group, e.g. Optional[SomeDataclass], even though subclasses are disabled for these types by default. The error now says how to enable subclass support for the type, see subclasses-disabled (#952).
Signature parameters typed as a dataclass-like type that is not added as a group, e.g. Optional[SomeDataclass], list[SomeDataclass] and dict[str, SomeDataclass], not accepting a path to a sub-config file even when added with sub_configs=True, failing with e.g. No module named 'data'. Also, the path of a loaded sub-config was not kept, so save with multifile=True did not write it back to its own file. See sub-config-files (#952).
The value of an environment variable not validating for a dataclass-like typed argument of a subcommand, e.g. APP_SUB__DATA='{"p1": 2}' failing with Not a valid subclass of ... (#952).
dump, and thus --print_config, not being able to serialize a value that was given as an import path to an instance, unless the instance happened to be defined in the module of its class. Instead of the import path it wrote a message saying that the instance was not serializable, making the dump not round-trippable. Now the import path that a value was resolved from is remembered and dumped back (#953).
Secrets round-tripping through --print_config as the mask **********, silently making the mask the actual secret. Now parsing the mask as a SecretStr, both jsonargparse's and pydantic's, fails (#953).
A generic Protocol never being implementable, both unsubscripted and subscripted, e.g. Proto and Proto[int]. Now the type arguments are substituted and a TypeVar that remains matches any type, as static type checkers do, see type-hints (#953, #958).
Classes having no parameters at all when a decorator wraps __new__, e.g. decorators that mark a class as deprecated or experimental. The parameters were resolved from the wrapper instead of from __init__ (#953).
Types shown in the help being mangled when they contain a dot, since the stripping of module names was done with a regex over the entire type string. Affected floats, literals and ellipsis (#954).
None in a PEP 604 union shown as is in the help, e.g. date | None, instead of as date | null, which is what parsing requires (#954).
dump with skip_default=True, i.e. --print_config=skip_default, failing with AttributeError: 'NoneType' object has no attribute 'get' when a subclass spec is given for an argument whose default is None, e.g. an Optional[SomeClass] parameter. Now the class_path is kept in the dump and only the init_args that are defaults are removed (#954).
Parameters popped or gotten from **kwargs disappearing when the value is then forwarded explicitly as a keyword, e.g. x = kwargs.pop("x", None) followed by super().__init__(x=x, **kwargs) (#954).
shtab bash completion not redrawing the prompt after printing the type guidance message when there are zero completions, leaving the cursor on an empty line, observed since bash 5.3 (#954).
Missing deprecation warning for the --print_config to --print_%s change (#955).
shtab completions of **kwargs: Unpack[SomeTypedDict] parameters showing NotRequired[...] as the expected type and not completing the values of the keys that are not required (#956).
Postponed annotations of a method not resolving names that are defined in the body of its class. Now the namespace of the class that defines the method is used as locals (#956).
The class_path of an abstract class being accepted for a class typed argument, only to fail on instantiate with TypeError: Can't instantiate abstract class. Now the parsing fails with Expected an instantiatable class, but ... is abstract, also when the class_path is implicit, i.e. only init args given, and when the class is given by name (#956).
Values silently discarded on instantiation for pydantic fields that have an alias and don't accept the attribute name, i.e. models and dataclasses without populate_by_name. Now the alias is the accepted name, see parameter-aliases (#956).
attrs fields whose __init__ parameter name differs from the attribute name, i.e. an explicit alias or a private attribute, failing to instantiate with TypeError: got an unexpected keyword argument or not being configurable at all (#956).
Internal RuntimeError when giving a value for a TypedDict key annotated with a TypeVar, e.g. a generic TypedDict, see generic-types (#958).
type[Any] rejecting every value, instead of accepting any class as type without an argument does (#958).
The docstring of a subscripted generic class not being used, so the group description and the parameter descriptions were missing in the help (#958).
Signature parameters with a type that jsonargparse can't validate are now accepted, instead of the parameter being skipped and the key failing to parse. Only the parts of the type that can't be validated accept any value, e.g. a list[SomeType] still requires a list. These parts are shown in the help as Unvalidated<...> and a debug log states the reason. See the new documentation section unvalidated-types (#936, #944, #948, #958).
Required and NotRequired given as the type of an argument are no longer shown in the help. Now they must agree with whether the argument is required, otherwise adding the argument fails (#937).
Whether a class implements a Protocol is now decided by checking that its methods can be called in all the ways that the protocol methods can be called, similar to what static type checkers do, instead of requiring the parameter lists to be identical. This accepts more implementations than before. Parameter and return types must still match exactly, except when the protocol has no annotation or Any (#941).
A signature parameter typed as jsonargparse.Namespace now raises a ValueError when adding the arguments, instead of the parameter being silently skipped. Namespace is only intended for parsing results (#948).
The subtypes of a Union are now sorted when the argument is added, instead of only while parsing, so the type shown in the help tells the order in which the subtypes are attempted. The subtypes that accept any value, i.e. Any, object and the ones that can't be validated, are now moved to the end, so that they no longer prevent the remaining subtypes from being attempted. See the new documentation section union-types (#949).
A dataclass-like type added as a group now accepts a subclass spec that has the class_path of the type itself, e.g. {"class_path": "Data", "init_args": {...}}, instead of failing with Group 'data' does not accept option 'init_args....'. Dataclass-like types now accept the same values whether or not they are added as a group, see subclasses-disabled (#952).
Dataclass-like types that are abstract, i.e. that have abstract methods or inherit from abc.ABC, now have subclass support enabled by default. Previously such a type was unusable, since the class_path of an implementation was rejected and giving its fields directly failed on instantiate. See subclasses-disabled (#956).
object as a type is now handled exactly like Any, since in standard typing every value is an instance of it (#958).
Instantiating a subclass spec given as value for a type that accepts any value, i.e. Any, object or Unvalidated<...>, is deprecated. From v5.0.0 the subclass spec will be kept as is, so that the code that receives it decides whether to instantiate it. The new instantiate_subclass_spec_in_any setting in set_parsing_settings allows getting the future behavior now, False, or keeping the current one, True. Enabling it is discouraged since it means that a config is able to instantiate any class, which can be a security risk (#955).
Bump version: 4.49.0 → 4.50.0
Bump version: 4.49.0 → 4.50.0
FromConfigMixin.from_config with config_read_mode_fsspec_enabled=True now supports fsspec config loading including the resolving of relative paths (#918).
Add .Unset sentinel and unset_sentinel setting in set_parsing_settings to distinguish between arguments not provided and those explicitly set to null (#909).
While parsing, internally preserve class_path for subclass disabled types to correctly support defaults from union of dataclasses (#921).
Misleading error message for parse_optionals_as_positionals=True and unrecognized non-positional arguments (#922).
Fix subclass instance defaults not being converted to dict format when the parameter is keyword-only (declared after *) (#933).
Signature **kwargs: Unpack[TypedDict] where the TypedDict has total=False incorrectly made the non-Required keys required (#934).
TypedDict requiredness of keys not correctly resolved when using postponed annotations (from __future__ import annotations) together with Required/NotRequired or totality-flipping inheritance, affecting both Unpack and type= cases (#934).
TypedDict keys annotated with types only imported in TYPE_CHECKING blocks not being resolved (#934).
Drop support for Python 3.9. The minimum supported Python version is now 3.10 (#916).
Renamed some parameters in the public API to improve consistency and clarity (#926).
skip_none parameter of ArgumentParser's dump, save, and validate was deprecated and will be removed in v5.0.0. Use skip_unset instead (#909).
skip_null flag for --print_config was deprecated and will be removed in v5.0.0. Use skip_unset instead (#909).
Implicit selection of subcommand when multiple subcommand settings available is deprecated and will be removed in v5.0.0. Provide an explicit subcommand instead (#923).
ArgumentParser.merge_config is deprecated and will be removed in v5.0.0. There is no replacement since it is considered internal (#925).
Optional type parameters without a default and required parameters without a type annotation when using fail_untyped=False are currently set to optional with default None. In v5.0.0 they will be required. Warnings visible with JSONARGPARSE_DEPRECATION_WARNINGS=all (#930).
Bump version: 4.48.0 → 4.49.0
Bump version: 4.48.0 → 4.49.0
Support Deque and FrozenSet in type hints (#905).
Detect loops in config files that recursively load subconfig files and raise an error showing the config chain instead of recursing indefinitely (#910).
Docs now reference methods via the public ArgumentParser class instead of internal mixin classes (#901).
Cache class parsers to improve performance and reduce test suite runtime (#903).
Implicit component discovery in auto_cli (calling without a components argument) was deprecated and will be removed in v5.0.0. Pass components explicitly; explicit is better than implicit (#895).
instantiate_classes is deprecated and will be removed in v5.0.0. Instead use instantiate (#896).
ArgumentParser.add_instantiator is deprecated and will be removed in v5.0.0. Use the global function jsonargparse.add_instantiator instead (#899).
Namespace.get_sorted_keys and Namespace.get_value_and_parent are deprecated and will be removed in v5.0.0. Instead run .keys() and then sort or get the parent and leaf separately. (#900).
Path.get_content is deprecated and will be removed in v5.0.0. Instead use Path.read_text for text and Path.open for binary content (#906).
enable_path parameter of ArgumentParser.add_argument was deprecated and will be removed in v5.0.0. Use sub_configs instead, which is consistent with the sub_configs parameter of the signature methods, ArgumentParser.add_class_arguments etc. (#907).
enable_path parameter of ActionJsonSchema was deprecated and will be removed in v5.0.0. Use sub_config instead (#907).
Bump version: 4.47.0 → 4.48.0
Bump version: 4.47.0 → 4.48.0
AST resolver now supports nested attribute calls like module.submodule.function(**kwargs) (#878).
register_type now supports TypeAliasType (python 3.12+) in addition to classes, and registered aliases no longer add subclass help actions (#875).
add_class_arguments skip support for callable return class parameters (#882).
FromConfigMixin is now an official public API feature (#884).
Fix resolving forward references in generic aliases (e.g. list["ForwardReferenced"]) when the forward-referenced type is not imported in the using module (#871).
auto_cli no longer fails when a single function, a class __init__, or a function/class in a list/dict of components has a parameter named config (#873).
Now all missing required options are listed in the error message (#876).
class_from_function and lazy_instance are now located in jsonargparse.typing while the previous import locations are kept for compatibility (#877).
Most argparse tests from the Python standard library are run against jsonargparse. Also the explicit deviations from argparse are documented (#881).
Replace black and yesqa with ruff in pre-commit (#883).
Removed reconplogger integration (#886).
Avoid expensive inspect.stack in parse_args path and other optimizations to speed up test suite (#887).
Rely on required attributes to improve compatibility with third-party argparse extensions (#890, #893).
Bump version: 4.46.0 → 4.47.0
Bump version: 4.46.0 → 4.47.0
Improved shtab bash typehint completions for Union and Literal: choices for unions that also accept open values now require a prefix to be completed, and literal booleans/None now complete as false/true and null (#851).
auto_cli now supports a return_instance parameter to instantiate class components directly instead of exposing methods as subcommands (#855).
New ArgumentParser.get_completion_script(completion_type) public method to generate completion scripts programmatically, and new set_parsing_settings(add_print_completion_argument=...) setting and JSONARGPARSE_ADD_PRINT_COMPLETION_ARGUMENT environment variable to opt-in automatic addition of --print_completion when shtab is installed (#859).
Positional arguments with nargs="*" or nargs="?" now correctly allow default values, matching standard argparse behavior (#846).
Parsing of floats with implicit leading zero (e.g. -.5) not working (#847).
Subcommand names now correctly take precedence over top-level option strings with the same name, fixing a failure during typed sub-default processing (#853).
--help no longer fails with IndexError for options without explicit help text while keeping argparse compatibility for help=None (#854).
store_true and store_false arguments now parse boolean environment variable values as true/false and raise a clear error for invalid values (#858).
Environment variable overrides now correctly take precedence over default_config_files values for subcommands and nested subsubcommands (#862).
omegaconf+ incorrectly applied for default_config_files (#865).
ActionSubCommands.add_subcommand() missing from API reference (#863).
Tests are no longer installed by default, there is a separate jsonargparse_tests wheel file for that (#843).
Adding argument giving both type and action is now allowed (#845).
Parsers no longer auto-add --print_shtab by default. Completion script generation now uses shtab-* completion types, and when get_completion_script is used the parser instance is invalidated for further use. A hidden --print_shtab argument remains to guide users to the new opt-in completion setting (#859).
JSONARGPARSE_DEBUG can only be enabled with true (case-insensitive) (867).
Bump version: 4.45.0 → 4.46.0
Bump version: 4.45.0 → 4.46.0
Public interface for enabling/disabling support of type subclasses (#817).
Choices with an int type not working correctly (#827).
Union of dataclasses not discarding parameters on class change (#833).
Targets of links applied on parse not being instantiated (#834).
Validation of defaults getting stuck for path with - (stdin) default (#837).
Failure when parsing deeply nested dataclass with a union parent (#839).
Bump version: 4.44.0 → 4.45.0
Bump version: 4.44.0 → 4.45.0
Signature methods now when given sub_configs=True, list of paths types can now receive a file containing a list of paths (#816).
FromConfigMixin.from_config now supports subclasses (#822).
Dict override syntax to allow standard form: --cfg.dict.key val (#824).
Evaluation of postponed annotations for dataclass inheritance across modules not working correctly (#814).
Getting parameter descriptions from docstrings not working for dataclass inheritance (#815).
default_env=True conflicting with default_config_files (#818).
default_config_files with settings for multiple subcommands not working correctly (#819).
register_type not checking that the given type is a class (#820).
Bump version: 4.43.0 → 4.44.0
Bump version: 4.43.0 → 4.44.0
Union types with str and default comment-like string incorrectly parsed as a stringified exception of an other subtype (#812).
FromConfigMixin not handling correctly required parameters (#813).
Improved error messages when not accepted options are given, referencing which parser/subcommand the option was given to. Also suggests running --help for the corresponding parser/subcommand (#809).
The yaml_comments parameter of ArgumentParser.dump has been renamed to with_comments to allow future comments support of other formats (#811).
ArgumentParser.default_meta property and with_meta parameter of ArgumentParser.parse_* are deprecated and will be removed in v5.0.0. Instead use .clone(with_meta=...) (#810).
The yaml_comments parameter of ArgumentParser.dump is deprecated and will be removed in v5.0.0. Use with_comments instead (#811).
Bump version: 4.42.0 → 4.43.0
Bump version: 4.42.0 → 4.43.0
Non-public experimental mixin class to override init defaults and instantiate from config (#800).
Prevent extra environment variables in helptext when default_env=True, for version actions and subcommands (#787).
Union with path type and non-path value incorrectly dumped as string (#789).
Misleading error message for invalid value for Literal strings (#790).
Changing omegaconf_absolute_to_relative_paths not taking effect after parsing once (#805).
parse_optionals_as_positionals and applied_instantiation_links no longer marked as experimental (#788).
Moved location of Path class from jsonargparse to jsonargparse.typing (#792).
Non-parsing actions now have a common base class to ease identification (#793).
jsonargparse.* modules now use Python 3.9+ syntax (#798).
Path.__call__ is deprecated and will be removed in v5.0.0. Use the absolute or relative properties instead (#794).
strip_meta is deprecated and will be removed in v5.0.0. Instead use .clone(with_meta=False) (#795).
compose_dataclasses is deprecated and will be removed in v5.0.0. There is no direct replacement, whoever is interested can copy the code (#796).
dict_to_namespace is deprecated and will be removed in v5.0.0. No replacement is provided because blindly converting a dictionary to a namespace may not yield the same results as using a parser, which could lead to confusion (#797).
Bump version: 4.41.0 → 4.42.0
Bump version: 4.41.0 → 4.42.0
set_parsing_settings now supports setting allow_py_files to enable stubs resolver searching in .py files in addition to .pyi (#770).
Experimental support for dataclass inheritance (#775).
Experimental support for pydantic BaseModel subclasses (#781).
Argument to print help for dataclasses nested in types, e.g. Optional[Data], Union[Data1, Data2] (#783).
set_parsing_settings now supports omegaconf_absolute_to_relative_paths to enable backward compatibility of omegaconf+ parser mode by converting absolute paths to relative in interpolations (#774).
Stubs resolver in some cases failing with maximum recursion error (#770).
dataclass with default failing when validate_defaults=True (#771).
Misleading error message when a namespace is used in a list comprehension (#772).
omegaconf+ parser mode failing when there are inf, -inf or nan values (#773).
save with multifile=True not saving separate subconfigs for items in a list (#779).
omegaconf parser mode failing on spawned processes (#784).
Depending on community feedback, in v5.0.0 this new mode could replace the current omegaconf mode, introducing a breaking change (#765 __).
Support for Python 3.14 (#753).
Support callable protocols for instance factory dependency injection (#758).
New ActionFail for arguments that should fail parsing with a given error message (#759).
Experimental omegaconf+ parser mode that supports variable interpolation and resolving across configs and command line arguments. Depending on community feedback, in v5.0.0 this new mode could replace the current omegaconf mode, introducing a breaking change (#765).
Improved parameter kind handling for argument requirement determination. KEYWORD_ONLY parameters now correctly use --flag style (#756).
Some deprecations not shown in the API documentation (#760).
Environment variable names not shown in help for positional arguments when default_env is true (#763).
parse_object not parsing correctly configs (#765).
Removed support for python 3.8 (#752).
YAML comments feature is now implemented in a separate class to allow better support for custom help formatters without breaking the comments (#754).
Replaced unmaintained optional dependency ruyaml with ruamel.yaml (#768).
DefaultHelpFormatter.*_yaml*_comment* methods are deprecated and will be removed in v5.0.0. This logic has been moved to a new private class YAMLCommentFormatter. If deemed necessary, this class might be made public in the future (#754).
The ruyaml optional dependency is deprecated and will be removed in v5.0.0. Instead use the ruamel optional dependency (#768).
Subclass defaults incorrectly taken from base class (#743 __).
Require new version of docstring-parser to avoid deprecation warnings (#741 __).
print_shtab incorrectly parsed from environment variable (#726).
adapt_class_type used a locally defined partial_instance wrapper function that is not pickleable (#728).
ArgumentParser with dashes incorrectly resolves paths to default values (#736).
Fix failing tests due to new version of typeshed-client (#740).
Require new version of docstring-parser to avoid deprecation warnings (#741).
LoggerProperty is deprecated and will be removed in v5.0.0. There is no replacement since jsonargparse is not a logging library. A similar class can b…
New auto_parser function for convenience and more visibility of the capture_parser feature (#721).
set_parsing_settings(validate_defaults=True) fails when the parser has a config action (#718).
Regression causing dump/save to fail when skip_link_targets=True and target being an entire required dataclass (#717).
TypedDict values not validated when types are forward references (#722).
Stubs-only resolver incorrectly triggered when inspect.signature available leading to missing parameter defaults (#724).
Use latest jsonnet release that works on all platforms and python versions (#682).
get_config_read_mode, set_config_read_mode and set_docstring_parse_options are deprecated and will be removed in v5.0.0. Instead of set_config_read_mo…
shtab hint for positionals in bash now includes the argument name (#699).
shtab support for optionals parsed as positionals (#700).
auto_cli now supports class @property (#701).
Resolve parameters completely from stubs when inspect.signature fails (#698).
Option to enable validation of default values (#711).
Experimental support for custom instantiators receiving values applied by instantiation links (#716).
Untyped parameters with None default no longer skipped when fail_untyped=True (#697).
config_read_mode and docstring_parse options can now be set using set_parsing_settings (#712).
ActionParser not updating dest of groups for instantiation (#707).
Nested generic dataclasses not working correctly (#709).
List append nested in subclass not working (#710).
get_config_read_mode, set_config_read_mode and set_docstring_parse_options are deprecated and will be removed in v5.0.0. Instead of set_config_read_mode and set_docstring_parse_options use set_parsing_settings. There will be no replacement for get_config_read_mode since this is considered internal (#712).
Support shtab completion of Literal types (#693 __).
Support shtab completion of Literal types (#693).
Support for parsing optionals as positionals (#692).
validate now checks values before required so that errors related to wrong level in a config are easier to understand (#681).
add_argument of a positional and providing default now raises an error (#694).
add_class_arguments with dashes in the nested_key fail to instantiate (#679).
Regression parsing strings with omegaconf as the parser mode (#686).
Help incorrectly showing environment variable name for --print_shtab.
add_argument raises error when type is assigned with action=None (#687).
shtab failing when parser has positional arguments (#693).
Experimental support for sub-classing ArgumentParser to customize add_argument (#661 __).
Experimental support for sub-classing ArgumentParser to customize add_argument (#661).
Incorrect instantiation order when instantiation targets share a parent (#662).
Pydantic discriminated unions handled incorrectly (#667).
Failure when a link target has an undefined parent (#668).
Functions that create types now have TypeAlias return type to avoid mypy errors (#671).
Regression when using old CLI and inferring components from the local context (#676).
ArgumentParser.check_config and skip_check parameter of ArgumentParser.{dump, save, get_defaults} are deprecated and will be removed in v5.0.0, instea…
Support without pyyaml, though only an internal refactor prior to eventual removal of pyyaml as a required dependency in v5.0.0 (#652).
Support for toml as config file format (#660).
jsonargparse.CLI renamed to jsonargparse.auto_cli to follow PEP 8 functions naming convention (#640).
ArgumentParser.check_config renamed to validate and skip_check parameter of ArgumentParser.{dump, save, get_defaults} renamed to skip_validation (#639).
Fail when Namespace is used as a type to make it clear about being unsupported (#656).
Help for Protocol types not working correctly (#645).
Adding attrs.define dataclasses with nested dataclasses that are marked with attrs.field (such as for a default factory) are not parsed correctly (#643).
Nested dataclass with init=False not working correctly (#650).
ArgumentParser.check_config and skip_check parameter of ArgumentParser.{dump, save, get_defaults} are deprecated and will be removed in v5.0.0, instead use validate and skip_validation (#639).
add_dataclass_arguments is deprecated and will be removed in v5.0.0. Instead use add_class_arguments (#634 __).
Support for print config argument to reuse the name of the config argument by using %s (#630).
Argument groups created from dataclass-like that have zero configurable arguments no longer adds a config loader (#634).
The CLASS_PATH_OR_NAME for subclass help is now optional and if not given the help of the base class is printed (#628).
Account for change in ArgumentParser._parse_known_args since Python 3.12.8 and 3.13.1 (#644).
List of dataclass with nested dataclass attribute fails to parse (#625 __).
Support for PEP 692, i.e., Unpack[TypedDict] annotations for kwargs (#586 __).
Support for PEP 692, i.e., Unpack[TypedDict] annotations for **kwargs (#586).
Empty tuples are now parsed correctly instead of raising an error (#592).
Required and optional TypedDict keys are now correctly inferred when one inherits one TypedDict from another with different totality (#597).
Callables that return class not considering previous values (#603).
Custom instantiators not working for nested dependency injection (#608).
Failure when resolving forward references from dataclass parameter types (#611).
Fix callable protocol inheritance. (#599).
Callables that return class with class default now normalizes the default to a subclass spec with class_path (#603).
Fix parse_argv_item to address the behavior change in argparse since Python 3.12.7 (#591 __).
Fix parse_argv_item to address the behavior change in argparse since Python 3.12.7 (#591).
Use jsonnet-sdist for python 3.13 to be allowed to push package to pypi (#584 __).
Use jsonnet-sdist for python 3.13 to be allowed to push package to pypi (#584).
dict types not correctly forwarding previous nested values when parsing (#559 __).
Support for MappingProxyType as a type and as default for mapping types (#540 __).
Support for MappingProxyType as a type and as default for mapping types (#540).
Support for OrderedDict as a type (#545).
New function get_loader to get the current loader for a given parser mode (#543).
dump failing when a link target requires serialization and skip_link_targets=False (#542).
default_config_files making parse fail for subcommands and nested subclass types (#549).
Fixes related to transformers PreTrainedModel.from_pretrained (#551):
Import path of inherited classmethod not resolving correctly (#548).
Resolved parameters leading to multiple values for keyword argument (#551).
Function with return type a class in class_path in some cases fails with unexpected instantiate parameter error (#551).
Ignore incorrectly resolved config_file_name parameter for transformers model from_pretrained (#551).
Support async functions and methods in CLI (#531 __).
Support async functions and methods in CLI (#531).
Support for Protocol types only accepting exact matching signature of public methods (#526).
Resolving of import paths for some torch functions not working (#535).
--print_shtab crashing on failure to get signature parameters from one class (#537).
Now --*.help output shows options without init_args (#533).
Allow adding config argument with action="config" avoiding need to import action class (#512 __).
Allow adding config argument with action="config" avoiding need to import action class (#512).
Allow providing a function with return type a class in class_path (#513).
Automatic --print_shtab option when shtab is installed, providing completions for many type hints without the need to modify code (#528).
Parsing incorrectly provides file content when type is a union with a subclass, PathLike and string (#518).
--print_config failing in some cases (#531).
Callable that returns class not using required parameter default from lambda (#523).
Failing to parse list of dataclasses with nested optional dataclass (#527).
List of union of classes not accepted by add_subclass_arguments in python>=3.11 (#522).
Optional pydantic model failing to parse with __pydantic_private__ error (#530).
Support for TypedDict (#457 __).
Support for TypedDict (#457).
Directly providing a dict with parameters or a single parameter to a subclass or callable with class return now implicitly tries using the base class as class_path if not abstract (#505).
Parameter resolving falling back to assumptions resolver for optional Union types (#498).
Nested parameters failing to parse from command line when value includes space (#499).
format_usage() not working (#502).
Not able to modify init args for callable with class return and default class (#504).
Nested values not validated when type not subclass and nested keys for subclass (#506).
Dataclass with nested optional dataclass and default field factory failing to parse (#508).
When parsing fails due to unexpected key, now there are specific error messages for the cases of groups and subcommands (#506).
Account for breaking change in argparse.ArgumentParser._parse_optional affecting python >=3.11.9 and >=3.12.3 (#484 __).
Support for "-" as value for Path class initialization so that user can ask to use standard input/output instead of file (#463).
Option in CLI to provide subcommands help when components given in a dict (litgpt#996 comment).
TypeAliasType support added (#480).
Account for breaking change in argparse.ArgumentParser._parse_optional affecting python >=3.11.9 and >=3.12.3 (#484).
lazy_instance not working for callable classes (#473 comment).
Callable type with class return and zero arguments not working (lightning#19574 comment).
Attrs and Pydantic 2 dataclasses with non-init fields fail to instantiate (#480).
Default values/factories for Pydantic 2 dataclasses with Field initializers are not right (#480).
Annotated fields in dataclass-likes (eg FastAPI types) resolve incorrectly (#480).
Regression from 14456c2 __ that prevented kwargs parameter resolving when an Optional[Callable] type is used (#473 __).
Failure when getting parameters from a class created with class_from_function from a classmethod without parameter types (#454 __).
Failure when getting parameters from a class created with class_from_function from a classmethod without parameter types (#454).
Subsubcommand parse failing when default_env=True (#465).
Optional callable that returns a class instance with a lambda default, produces an invalid string default.
dataclass single parameter change incorrectly resetting previous values (#464).
Add function signature failing when conditionally calling different functions (#467).
Importable class instances fail to parse and serialize (#446 __).
Importable class instances fail to parse and serialize (#446).
Failure when trying to pickle instances created with lazy_instance.
Confusing error message when creating a link with a target that is already a target of another link.
argcomplete not working when type and choices given (#442 __).
argcomplete not working when type and choices given (#442).
Confusing error message when CLI is used with a class that defines a subcommand method (#430 comment).
CLI crashes when a method has a config parameter. Due to redundancy, --config argument should not be added.
Argument links not working for target init_args in an optional list (#433 __).
Argument links not working for target init_args in an optional list (#433).
Signature parameter default that doesn't match its type failing on instantiation and serialization (lightning#19289 comment).
reconplogger's logger level being unexpectedly overwritten.
reconplogger's logger level being unexpectedly overwritten.
Signature parameter default value that doesn't match its type considered invalid (lightning#19289 comment).
Deprecation warnings not printing the correct file and line of code.
Confusing error message when adding signature parameters that conflict with existing arguments.
Deprecation warnings not printing the correct file and line of code.
sub_configs=True not working for callable types that return a class (#419).
Support for pydantic's SecretStr type.
Support for pydantic's SecretStr type.
New SecretStr type in jsonargparse.typing to provide secret support without additional dependency.
Links applied on parse failing when source is a class with a nested callable.
Failure to parse subclass added via add_argument and required arg as link target.
Failure to parse subclass added via add_argument and required arg as link target.
choices working incorrectly when nargs is +, * or number.
Unable link two deep level arguments sharing the same root class (#297).
Failures when choices is a dict_keys object and value non-hashable.
Failures when choices is a dict_keys object and value non-hashable.
AST resolver not using the correct component globals in some cases.
Support for on parse argument links with target subclasses in a list (#394 __, lightning#18161 __).
Support for on parse argument links with target subclasses in a list (#394, lightning#18161).
AST resolver now supports some local import cases.
Failures with subcommands and default_config_files when keys are repeated (#160).
Key related errors printing messages within single quotes.
Choices not validated when value comes from config file (#404).
Subclass types no longer allow class instance to be set as default (lightning#18731).
JSONARGPARSE_DEBUG must now have a non-empty value to enable debug mode.
Support for user-defined generic types (#366 __).
Support for user-defined generic types (#366).
New function extend_base_type for easy creation and registering of custom types that extend a base type (#195).
Support for Annotated types either ignoring the metadata or using it for validation in case of pydantic types (#384).
Support for Python 3.12.
--print_config fails when parser has shallow links.
Argument links unnecessarily applied when --print_config used and parser has subcommands (#311).
Parsing fails when data type is a Callable with multiple input arguments (#372).
Postponed annotations not working for dataclasses.
Unsupported pop/get default incorrectly sets default as None (lightning#18616).
Pydantic models and dataclasses not working for pydantic>=2.0.0 (#361).
Provide a more informative error message to remind user to select and provide a subcommand when a subcommand is required but not given (#371).
Now when an argument link compute_fn fails, the error message will say this (#311).
add_subclass_arguments now shows a better error message when an empty tuple is given (lightning#18546).
Document the requirements for creating and using custom types (#195).
Parameters with default and without type, now get as type Union[type(default), Any].
Removed support for python 3.6.
Remove private linked_targets parameter from API Reference (#317 __).
Remove private linked_targets parameter from API Reference (#317).
Dataclass nested in list not setting defaults (#357).
AST resolver kwargs.pop() with conflicting defaults not setting the conditional default (#362).
ActionJsonSchema not setting correctly defaults when schema uses oneOf.
Recommended print_config steps not working when default_config_files used due to the config file initially being empty (#367).
ActionJsonnetExtVars is deprecated and will be removed in v5.0.0. Instead use type=dict.
New option in dump for including link targets.
Support decimal.Decimal as a type.
CLI now accepts components as a dict, such that the keys define names of the subcommands (#334).
Resolve types that use TYPE_CHECKING blocks (#337 comment).
Improved resolving of nested forward references in types.
The ext_vars for an ActionJsonnet argument can now have a default.
New method ArgumentParser.add_instantiator that enables developers to implement custom instantiation (#170).
ActionJsonnetExtVars is deprecated and will be removed in v5.0.0. Instead use type=dict.
save fails when a link target is a required parameter nested in a subclass (#332 __).
save fails when a link target is a required parameter nested in a subclass (#332).
typing.Literal types skipped when typing_extensions is installed (lightning#18184).
class_from_function failing when called on the same function multiple times (lightning#18180).
Prevent showing errors when running ps on windows.
Classes created with class_from_function now have a valid import path (#309 __).
Classes created with class_from_function now have a valid import path (#309).
Invalid environment variable names when env_prefix is derived from a prog containing dashes.
Pylance unable to resolve types from jsonargparse.typing.
Inconsistent ARG: and missing ENV: in help when default_env=True.
typing.Literal types skipped on python 3.9 when typing_extensions is installed (lightning#18125 comment).
Set notation of subcommands choices now only included in usage.
In subcommands section, now each subcommand is always shown separately, including the name, and if available aliases and help.
When default_env=True include subcommand environment variable name.
Parameter without default and type optional incorrectly added as a required argument (#312 __).
Parameter without default and type optional incorrectly added as a required argument (#312).
class_from_function not failing when return annotation is missing.
add_subclass_arguments with single base class and no docstring, incorrectly shown as tuple in help.
When all arguments of a group are derived from links, a config load option is incorrectly shown in help.
Printing help fails for parsers that have a link whose target is an argument lacking type and help.
Regular expressions vulnerable to polynomial runtime due to backtracking.
Parameters that receive a path now also accept os.PathLike type.
class_from_function now supports func_return parameter to specify the return type of the function (lightning-flash#1564 comment).
Support for postponed evaluation of annotations PEP 563 from __future__ import annotations (#120).
Backport types in python<=3.9 to support PEP 585 and 604 for postponed evaluation of annotations (#120).
Support for range as a type.
Regular expressions vulnerable to polynomial runtime due to backtracking.
attrs fields with factory default causes parse to fail (#299).
Stop subclass dive if you hit bad import (#304).
Added _ prefix to module names to be explicit about non-public API.
Importing from original non-public module paths (without _ prefix) now gives a DeprecationWarning. From v5.0.0 these imports will fail.
Failure for nested argument in optional dataclass type (#289 __).
Failure for nested argument in optional dataclass type (#289).
Argument links applied on parse silently ignored when the source validation fails.
AST resolver not working for dict used in a method when the dict is created using the curly braces syntax.
AST resolver not working for dict used in a method when the dict is created using the curly braces syntax.
Failure on multiple deep arguments linked on instantiation (#275).
Support for dataclasses nested in a type (#243 __).
Support for dataclasses nested in a type (#243).
Support for pydantic models and attrs define similar to dataclasses.
Support for pydantic types.
Backport type stubs in python<=3.9 to support PEP 585 and 604 syntax.
str parameter in subclass incorrectly parsed as dict with implicit null value (#262).
Wrong error indentation for subclass in union (lightning#17254).
dataclass from pydantic not working (#100 comment).
add_dataclass_arguments not forwarding sub_configs parameter.
Failure to instantiate nested class group without arguments (lightning#17263).
Switched from setup.cfg to pyproject.toml for configuration.
Removed build_sphinx from setup.py and documented how to build.
Include enum members in error when invalid value is given (lightning#17247).
The signatures extras now installs the typing-extensions package on python<=3.9.
CLI now when given a class without methods, the class instance is returned.
Support for python 3.6 will be removed in v5.0.0. New features added in >=4.21.0 releases are not guaranteed to work in python 3.6.
Dump not working for partial callable with return instance (lightning#15340 comment __).
Dump not working for partial callable with return instance (lightning#15340 comment).
Allow discard_init_args_on_class_path_change to handle more nested contexts (#247).
Failure with dataclasses that have field with init=False (#252).
Failure when setting individual dict key values for subclasses and .init_args. is included in argument (#251).
Path skip_check parameter is deprecated and will be removed in v5.0.0. Instead use as type str or os.PathLike.
CLI support for callable class instances (#238).
add_dataclass_arguments now supports the fail_untyped parameter (#241).
add_subcommands fails when parser has required argument and default config available (#232).
When parsing fails, now argparse.ArgumentError is raised instead of ParserError.
Improved error messages when fail_untyped=True (#137).
CLI no longer uses the module's docstring as main parser description (#245).
Path skip_check parameter is deprecated and will be removed in v5.0.0. Instead use as type str or os.PathLike.
Modifying Path attributes is deprecated. In v5.0.0 they will be properties without a setter and two renamed: rel_path -> relative and abs_path -> absolute.
ActionPathList is deprecated and will be removed in v5.0.0. Instead use as type List[<path_type>] with enable_path=True.
ArgumentParser.error_handler is deprecated and will be removed in v5.0.0. Instead use the new exit_on_error parameter from argparse.
CLI now supports the fail_untyped and parser_class parameters.
CLI now supports the fail_untyped and parser_class parameters.
bytes and bytearray registered on first use and decodes from standard Base64.
Support getting the import path of variables in modules, e.g. random.randint.
Specific error messages for when an argument link uses as source the target of a previous parse link and vice versa (#208).
New resolver that identifies parameter types from stub files *.pyi.
Support for relative paths within remote fsspec/url config files.
New context manager methods for path types: open and relative_path_context.
Path types now implement the os.PathLike protocol.
New path mode cc to not require the parent directory to exists but that it can be created.
The parent parser class is now used to create internal parsers (#171).
List type with empty list default causes failure (PyLaia#48).
Pure dataclass instance default being considered as a subclass type.
Discard init_args after class_path change causes error (#205).
fail_untyped=False not propagated to subclass --*.help actions.
Issues reported by CodeQL.
Incorrect value when Path is cast to str and rel_path was changed.
Argument links with target a subclass mixed with other types not working (#208).
Failures when using a sequence type and the default is a tuple.
Parent parser logger not being forwarded to subcommand and internal parsers.
Clearer error message for when an argument link targets a subclass and the target key does not have init_args (lightning#16032).
The signatures extras now installs the typeshed-client package.
validators package is no longer a dependency.
Path types are no longer a subclass of str.
Parsing steps logging now at debug level.
Discarding init_args warning changed to log at debug level.
Removed replacing list instead of append warning.
Added missing return_parser deprecation warning when CLI has subcommands.
AST resolving for defaults with a class instance or a lambda that returns a class instance.
bool values should not be accepted by int or float types.
parse_string raises AttributeError when given a simple string.
Added missing return_parser deprecation warning when CLI has subcommands.
Parsing fails for registered types that can't be cast to boolean (#196).
List append not working for default_config_files set in a subcommand subparser (lightning#15256).
Specifying only the class name through command line not working for Callable with class return type.
init_args not discarded for nested subclasses provided through command line (lightning#15796).
Unable to set/get values in Namespace when key is the same as a method name.
CLI no longer adds --config and --print_config if no arguments added to subcommand.
CLI now uses the component's docstring short description for subparser descriptions.
Slightly nicer type hint unexpected value error messages, in particular less redundancy for Union types.
AST resolver now ignores if/elif/else code when condition is a global constant (#187 __).
AST resolver now ignores if/elif/else code when condition is a global constant (#187).
AST resolver support for conditional **kwargs use in multiple calls (#187 comment).
str type fails to parse value when pyyaml raises ConstructorError (#189).
Namespace clone should not deepcopy leaf values (#187).
_ActionHelpClassPath actions fail to instantiate when base class uses new union type syntax.
Improved help usage and description for --print_config.
Registering pathlib.Path types so that they are not shown as subclass types.
Type Any now parses and instantiates classes when given dict that follows subclass specification (lightning#15115 __).
Type Any now parses and instantiates classes when given dict that follows subclass specification (lightning#15115).
Signature methods now accept skipping a number of positionals.
Callable type hint with return type a class can now be given a subclass which produces a callable that returns an instance of the class.
Support for Python 3.11.
Fail to import on Python 3.7 when typing_extensions not installed (#178).
Crashing when using set typehint with specified dtype (#183).
Using set_defaults on a config argument raises error and suggests to use default_config_files (lightning#15174).
Trying to add a second config argument to a single parser raises an exception (#169).
Regression introduced in 6e7ae6d __ that produced cryptic error message when an invalid argument given (#172 __).
Regression introduced in 6e7ae6d that produced cryptic error message when an invalid argument given (#172).
default_env not forwarded to subcommand parsers, causing environment variable names to not be shown in subcommand help (lightning#12790).
Cannot override Callable init_args without passing the class_path (#174).
Positional subclass type incorrectly adds subclass help as positional.
Order of types in Union not being considered.
str type fails to parse values of the form ^\w+: *.
parse_object does not consider given namespace for previous class_path values.
compute_fn of an argument link applied on parse not given subclass default init_args when loading from config.
compute_fn of an argument link applied on parse not given subclass default init_args when loading from config.
Subclass --*.help option not available when type is a Union mixed with not subclass types.
Override of dict_kwargs items from command line not working.
Multiple subclass init_args given through command line not being considered (lightning#15007).
Union types required all subtypes to be supported when expected to be at least one subtype supported (#168).
set_defaults now supports subclass by name and normalization of import path.
set_defaults now supports subclass by name and normalization of import path.
Loop variable capture bug pointed out by lgtm.com.
Issue with discard init_args when class_path not a subclass.
No error shown when arguments given to class group that does not accept arguments (#161 comment).
Incorrect replacement of **kwargs when *args present in parameter resolver.
Override of class_path not discarding init_args when loading from config file.
Invalid values given to the compute_fn of a argument link applied on parse without showing an understandable error message.
Now UUID and timedelta types are registered on first use to avoid possibly unused imports.
json/yaml dump sort now defaults to false for all python implementations.
add_class_arguments will not add config load option if no added arguments.
Your coding agent can read these notes before it upgrades. Set up the MCP server →