NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2389 most downloaded on PyPI
Minimal effort CLIs derived from type hints and parse from command line, config files and environment variables.
Last release 16 days 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
Making import_docstring_parse a deprecated function only for pytorch-lightning backward compatibility.
Making import_docstring_parse a deprecated function only for pytorch-lightning backward compatibility.
One column per quarter.
Failure to parse when subcommand has no options (#158 __).
Failure to print help when object used as type hint.
Failure to print help when object used as type hint.
Failure to parse init args when type hint is union of str and class.
Handle change of non-existent file exception type in latest fsspec version.
Regression that caused parse to fail when providing init_args from command line and the subclass default set as a dict.
Regression that caused parse to fail when providing init_args from command line and the subclass default set as a dict.
Support setting through command line individual dict items without replacing (#133 comment __).
Support setting through command line individual dict items without replacing (#133 comment).
Support super() with non-immediate method resolution order parameter (#153).
Instantiation links now support multiple sources.
Instantiation links now support multiple sources.
AST resolver now supports cls() class instantiation in classmethod (#146).
AST resolver now supports pop and get from **kwargs.
file:/// scheme not working in windows (#144).
Instantiation links with source an entire subclass incorrectly showed --*.help.
Ensure AST-based parameter resolver handles value-less type annotations without error (#148).
Discarding init_args on class_path change not working for Union with mixed non-subclass types.
In some cases debug logs not shown even though JSONARGPARSE_DEBUG set.
Instantiation links with source an entire class no longer requires to have a compute function.
Instantiation links no longer restricted to first nesting level.
AST parameter resolver now only logs debug messages instead of failing (#146).
Documented AST resolver support for **kwargs use in property.
env_prefix property now also accepts boolean. If set to False, no prefix is used for environment variable names (#145 __).
env_prefix property now also accepts boolean. If set to False, no prefix is used for environment variable names (#145).
link_arguments support target being an entire subclass object (lightning#13539).
Method resolution order not working correctly in parameter resolvers (#143).
env_prefix property will no longer accept None in v5.0.0.
AST resolver fails for self._kwargs assign when a type hint is added.
AST resolver fails for self._kwargs assign when a type hint is added.
"Component not supported" crash instead of no parameters (#141 __).
Signature parameters resolved by inspecting the source code with ASTs (lightning#11653 __).
Signature parameters resolved by inspecting the source code with ASTs (lightning#11653).
Support init args for unresolved parameters in subclasses (#114).
Allow providing a config with init_args but no class_path (#113).
dump with skip_default=True not working for subclasses without init_args and when a default value requires serializing.
JSONARGPARSE_DEFAULT_ENV should have precedence over given value.
Giving an invalid class path and then init args would print a misleading error message about the init arg instead of the class.
In some cases print_config could output invalid values. Now a lenient check is done while dumping.
Resolved some issues related to the logger property and reconplogger.
Single dash '-' incorrectly parsed as [None].
dataclasses no longer an optional, now an install require on python 3.6.
Parameters of type POSITIONAL_OR_KEYWORD now considered KEYWORD (#98).
Some refactoring mostly related but not limited to the new AST support.
JSONARGPARSE_DEBUG now also sets the reconplogger level to DEBUG.
Renamed the test files to follow the more standard test_*.py pattern.
Now bool(Namespace()) evaluates to False.
When a class_path is overridden, now only the config values that the new subclass doesn't accept are discarded.
logger property will no longer accept None in v5.0.0.
Nothing published for this version
Nothing published for this version
ActionsContainer not calling LoggerProperty.__init__.
ActionsContainer not calling LoggerProperty.__init__.
For type Union[type, List[type] when previous value is None then --arg+=elem should result in a list with single element.
Literal options now shown in metavar like choices (#106).
tuple metavar now shown as [ITEM,...].
Required arguments with None default now shown without brackets in usage.
Improved description of --print_config in help.
Moved return_parser tests to deprecated tests module.
Support append to lists both from command line and config file (#85).
New register_unresolvable_import_paths function to allow getting the import paths of objects that don't have a proper __module__ attribute (lightning#13092).
New unit test for merge of config file init_args when class_path does not change (#89).
Replaced custom pre-commit script with a .pre-commit-config.yaml file.
All warnings are now caught in unit tests.
Moved return_parser tests to deprecated tests module.
Nothing published for this version
Nothing published for this version
sub_add_kwargs not propagated for parameters of final classes.
sub_add_kwargs not propagated for parameters of final classes.
New union syntax not working (#136).
Make import_docstring_parse backward compatible to support released versions of LightningCLI (lightning#12918 __).
Make import_docstring_parse backward compatible to support released versions of LightningCLI (lightning#12918).
Properly catch exceptions when parsing docstrings (lightning#12883 __).
Properly catch exceptions when parsing docstrings (lightning#12883).
Failing to parse strings that look like timestamps (#135 __).
Failing to parse strings that look like timestamps (#135).
Correctly consider nested mapping type without args as supported.
New registered types incorrectly considered as class type.
Final classes now added as group of actions instead of one typehint action.
@final decorator now an import from typing_extensions if available.
Exporting ActionsContainer to show respective methods in documentation.
Raise ValueError when logger property given dict with unexpected key.
Dump option to exclude entries whose value is the same as the default (#91 __).
Dump option to exclude entries whose value is the same as the default (#91).
Support specifying class_path only by name for known subclasses (#84).
add_argument with subclass type now also adds --*.help option.
Support shorter subclass command line arguments by not requiring to have .init_args..
Support for Literal backport from typing_extensions on python 3.7.
Support nested subclass --*.help CLASS options.
class_path's on parse are now normalized to shortest form.
Nothing published for this version
Nothing published for this version
capture_parser function to get the parser object from a cli function.
capture_parser function to get the parser object from a cli function.
dump_header property to set header for yaml/jsonnet dumpers (#79).
Callable type now supports callable classes (#110).
Bug in check for class_path, init_args dicts.
Module mocks in cli_tests.py.
Moved argcomplete code from core to optionals module.
Callable no longer a simple registered type.
Import paths are now serialized as its shortest form.
Callable default now shown in help as full import path.
Moved typehint code from core to typehint module.
Ignore argument links when source/target subclass does not have parameter (#129).
Swapped order of argument links in help to source --> target.
CLI's return_parser parameter will be removed in v5.0.0.
Environment variables to enable features without code change:
JSONARGPARSE_DEFAULT_ENV to enable environment variable parsing.
JSONARGPARSE_DEBUG to print of stack trace on parse failure.
No error message for unrecognized arguments (lightning#12303).
Use yaml.CSafeLoader for yaml loading if available.
Incorrect use of yaml_load with jsonnet parser mode (#125 __).
Subcommands now also consider parent parser's default_config_files (lightning#11622 __).
Subcommands now also consider parent parser's default_config_files (lightning#11622).
Automatically added group config load options are now shown in the help #121.
Dumper for jsonnet should be json instead of yaml (#123).
jsonnet import path not working correctly (#122).
ArgumentParser objects are now pickleable (lightning#12011).
object_path_serializer and import_object support class methods #99.
object_path_serializer and import_object support class methods #99.
parser_mode is now a property that when set, propagates to subparsers.
add_method_arguments also add parameters from same method of parent classes when *args or **kwargs present.
Optional Enum types incorrectly adding a --*.help argument.
Specific errors for invalid value for --*.help class_path.
Subcommand parsers not using the parent's parser_mode.
Subcommand parsers not using the parent's parser_mode.
Namespace __setitem__ failing when key corresponds to a nested dict.
String within curly braces parsed as dict due to yaml spec implicit values.
String within curly braces parsed as dict due to yaml spec implicit values.
Namespace TypeError with non-str inputs (#116 __).
Bad config merging in handle_subcommands (lightning#10859 __).
Bad config merging in handle_subcommands (lightning#10859).
Unit tests failing with argcomplete>=2.0.0.
set_loader function to allow replacing default yaml loader or adding a new parser mode.
set_loader function to allow replacing default yaml loader or adding a new parser mode.
set_dumper function to allow changing default dump formats or adding new named dump formats.
parser_mode='omegaconf' option to use OmegaConf as a loader, adding variable interpolation support.
class_from_function missing dereference of string return type (#105).
Linking of attributes applied on instantiation ignoring compute_fn.
Linking of attributes applied on instantiation ignoring compute_fn.
Show full class paths in --*.help description to avoid misinterpretation.
--*.help action failing when fail_untyped and/or skip is required. (#101).
Raise exception if lazy_instance called with invalid lazy_kwargs.
Only add subclass defaults on defaults merging (#103).
Strict type and required only on final config check (#31).
instantiate_classes failing for type hints with nargs='+'.
Useful error message when init_args value invalid.
Specific error message when subclass dict has unexpected keys.
Removed unnecessary recursive calls causing slow parsing.
Command line parsing of init_args failing with subclasses without a default.
Command line parsing of init_args failing with subclasses without a default.
get_default failing when destination key does not exist in default config file.
Fixed issue with empty help string caused by a change in argparse python 3.9.
Make it possible to disable deprecation warnings.
Specifying init_args from the command line resulting in empty namespace when no prior class_path given.
Fixed command line parsing of class_path and init_args options within subcommand.
lazy_instance of final class leading to incorrect default that includes class_path and init_args.
add_subclass_arguments not accepting a default keyword parameter.
Make it possible to disable deprecation warnings.
Nothing published for this version
Deprecations are now shown as JsonargparseDeprecationWarning.
New Namespace class that natively supports nesting and avoids flat/dict conversions.
python 3.10 is now supported and included in circleci tests.
Readme changed to use doctest and tests are run in github workflow.
More type hints throughout the code base.
New unit tests to increase coverage.
Include dataclasses extras require for tox testing.
Automatic namespace to dict for link based on target or compute_fn type.
Fixed issues related to conflict namespace base.
Fixed the parsing of Dict[int, str] type (#87).
Fixed inner relative config with for commented tests for parse_env and CLI.
init_args from default_config_files not discarded when class_path is overridden.
Problems with class instantiation for parameters of final classes.
dump/save not removing linked target keys.
lazy_instance not working with torch.nn.Module (#96).
General refactoring and cleanup related to new Namespace class.
Parsed values from ActionJsonSchema/ActionJsonnet are now dict instead of Namespace.
Removed support for python 3.5 and related code cleanup.
contextvars package is now an install require for python 3.6.
Deprecations are now shown as JsonargparseDeprecationWarning.
ArgumentParser's parse_as_dict option will be removed in v5.0.0.
ArgumentParser's instantiate_subclasses method will be removed in v5.0.0.
python 3.5 is no longer supported.
Nothing published for this version
Nothing published for this version
self.logger undefined on SignatureArguments (#92 __).
add_subclass_arguments with required=False failing on instantiation (#83 __).
add_subclass_arguments with required=False failing on instantiation (#83).
add_subclass_arguments with required=False failing when not given (#83 __).
add_subclass_arguments with required=False failing when not given (#83).
Repeated instantiation of dataclasses (lightning#9207 __).
Repeated instantiation of dataclasses (lightning#9207).
save now supports saving to an fsspec path (#86 __).
Support for parsing Mapping and MutableMapping types.
Support for parsing Mapping and MutableMapping types.
Support for parsing frozenset, MutableSequence and MutableSet types.
Don't discard init_args with non-changing --*.class_path argument.
Don't ignore KeyError in call to instantiate_classes (#81).
Optional subcommands fail with a KeyError (#68).
Conflicting namespace for subclass key in subcommand.
instantiate_classes not working for subcommand keys (#70).
Proper file not found message from _ActionConfigLoad (#64).
parse_path not parsing inner config files.
Docstrings no longer supported for python 3.5.
Show warning when --*.class_path discards previous init_args.
Trigger error when parse_args called with non-string value.
ActionParser accepts both title and help, title having preference.
Multiple subcommand settings allowed if explicit subcommand given.
datetime.timedelta now supported as a type.
datetime.timedelta now supported as a type.
New function class_from_function to add signature of functions that return an instantiated class.
--*.init_args.* causing crash when overriding value from config file.
Signature functions not working for classes implemented with __new__.
Signature functions not working for classes implemented with __new__.
instantiate_classes failing when keys not present in config object.
lazy_instance function for serializable class type defaults.
lazy_instance function for serializable class type defaults.
Support for parsing multiple matched default config files (#58).
--*.class_path and --*.init_args.* arguments not being parsed.
--help broken when default_config_files fail to parse (#60).
Pattern in default_config_files not using sort.
Decorator for final classes and an is_final_class function to test it.
Decorator for final classes and an is_final_class function to test it.
Support for final classes as type hint.
add_subclass_arguments now supports multiple classes given as tuple.
add_subclass_arguments now supports the instantiate parameter.
Parsing of relative paths inside inner configs for type hint actions.
Method instantiate_classes that instantiates subclasses and class groups.
Method instantiate_classes that instantiates subclasses and class groups.
Support for link_arguments that are applied on instantiation.
Method add_subclass_arguments now supports skipping of arguments.
Added support for Type in type hints (#59).
Custom string template to avoid problems with percent symbols in docstrings.
Type hint Any not correctly serializing Enum and registered type values.
Type hint Any not correctly serializing Enum and registered type values.
Inner config file support for subclass type hints in signatures and CLI (#57 __).
Inner config file support for subclass type hints in signatures and CLI (#57).
Forward fail_untyped setting to nested subclass type hints.
With fail_untyped=True use type from default value instead of Any.
Registered types and typing types incorrectly considered subclass types.
Better structure of type hint error messages to ease understanding.
--print_config can now be given before other arguments without value.
--print_config can now be given before other arguments without value.
Fixed conversion of flat namespace to dict when there is a nested empty namespace.
Fixed issue with get_defaults with default config file and parse_as_dict=False.
Fixed bug in save which failed when there was an int key.
--print_config now only receives a value with = syntax.
add_{class,method,function,dataclass}_arguments now return a list of added arguments.
Path support for fsspec file systems using the 's' mode flag.
Path support for fsspec file systems using the 's' mode flag.
set_config_read_mode function that can enable fsspec for config reading.
Option for print_config and dump with help as yaml comments.
print_config only added to parsers when ActionConfigFile is added.
set_url_support functionality now should be done with set_config_read_mode.
Link argument arrow <= can be confused as less or equal, changed to <--.
Link argument arrow <= can be confused as less or equal, changed to <--.
add_dataclass_arguments not making parameters without default as required (#54 __).
add_dataclass_arguments not making parameters without default as required (#54).
Removed from signature add methods required option included by mistake.
CLI now has --config options at subcommand and subsubcommand levels.
CLI now has --config options at subcommand and subsubcommand levels.
CLI now adds subcommands with help string taken from docstrings.
print_config at subcommand level for global config with implicit subcommands.
New Path_drw predefined type.
Type hint arguments now support nargs='?'.
Signature methods can now skip arguments within init_args of subclasses.
Removed skip_check from ActionPathList which was never implemented.
ActionPath should no longer be used, instead paths are given as type.
Actions not being applied for subsubcommand values.
handle_subcommands not correctly inferring subsubcommand.
fail_untyped now adds untyped parameters as type Any and if no default then default set to None.
fail_untyped now adds untyped parameters as type Any and if no default then default set to None.
--*.help option being added for non-subclass types.
Iterable and Sequence types not working for python>=3.7 (#53).
Your coding agent can read these notes before it upgrades. Set up the MCP server →