o
    
j"                    @  s  d Z ddlmZ ddlZddlZddlZddlZddlZddl	Z	ddl
mZmZmZmZmZmZ ddlmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlm Z  ddl	m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZDmEZEmFZF ddlmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP ddlCmQZQmRZRmSZSmTZTmUZUmVZVmWZW ddlXmYZY e!rddlZm[Z[ G dd deZ\G d d! d!e/Z]d7d&d'Z^d8d-d.Z_G d/d0 d0e/Z`e'd1Zae"eadB eNf Zbe"eaeMf Zce'd2edd3Zee"eeeLf Zfe"eeeKf Zge"eeeOf Zhe"eeeJf ZieZje"eaejf Zke"elem e0g d4ePeHf ZnG d5d6 d6eYe$ea ZodS )9z'Command-line interface settings source.    )annotationsN)SUPPRESSArgumentParserBooleanOptionalAction	NamespaceRawDescriptionHelpFormatter_SubParsersAction)defaultdict)CallableMappingSequence)Enum)cached_property)chain)dedent)SimpleNamespace)TYPE_CHECKING	AnnotatedAnyGenericLiteralNoReturnTypeVarcastget_args
get_originoverload)AliasChoices	AliasPath	BaseModelFieldPrivateAttrTypeAdapter)Representation)is_model_class)is_pydantic_dataclass)	FieldInfo)PydanticUndefined)typing_objects)is_union_origin   SettingsError)_lenient_issubclass_typing_base_WithArgsTypes   )
ForceDecodeNoDecodePydanticModel_CliDualFlag_CliExplicitFlag_CliImplicitFlag_CliPositionalArg_CliSubCommand_CliToggleFlag_CliUnknownArgs)_annotation_contains_types_annotation_enum_val_to_name_get_alias_names_get_model_fields_is_function_strip_annotatedparse_env_vars   )EnvSettingsSource)BaseSettingsc                      s.   e Zd Zdd fdd	Zd fddZ  ZS )_CliInternalArgParserTcli_exit_on_errorboolkwargsr   returnNonec                   s   t  jdi | || _d S )N )super__init___cli_exit_on_error)selfrF   rH   	__class__rK   Z/home/kuhnn/.local/lib/python3.10/site-packages/pydantic_settings/sources/providers/cli.pyrM   O   s   
z_CliInternalArgParser.__init__messagestrr   c                   s$   | j s
td| t | d S )Nzerror parsing CLI: )rN   r,   rL   error)rO   rS   rP   rK   rR   rU   S   s   z_CliInternalArgParser.error)T)rF   rG   rH   r   rI   rJ   )rS   rT   rI   r   )__name__
__module____qualname__rM   rU   __classcell__rK   rK   rP   rR   rE   N   s    rE   c                   @  s   e Zd ZdS )CliMutuallyExclusiveGroupN)rV   rW   rX   rK   rK   rK   rR   rZ   Y   s    rZ   	model_cls	type[Any]rI   
str | Nonec                 C  s   i }t | r
| j}n
t| rt| di }|d}t|tr*|d}|dur)|S n2t|r\z$d}t | r=|  d}nt| rJt	| 
 d}|durQ|W S W n	 ty[   Y nw | jdurft| jS dS )a"  Get model description from json_schema_extra or __doc__ fallback.

    ``json_schema_extra.description`` takes precedence over ``__doc__`` to
    match pydantic's own behaviour.  When neither is available (e.g. under
    ``python -OO`` where docstrings are stripped), returns ``None``.
    __pydantic_config__json_schema_extradescriptionN)r$   model_configr%   getattrget
isinstancedictcallablemodel_json_schemar"   json_schema	Exception__doc__r   )r[   configr_   descrK   rK   rR   _get_model_description]   s6   




rm   type_r   
sub_modelslist[type[BaseModel]]rJ   c                 C  sR   t | }t|st|r|| dS tt|r%t|D ]	}t|| qdS dS )zJRecursively collect BaseModel subclasses from possibly nested union types.N)r@   r$   r%   appendr)   r   r   _collect_sub_models)rn   ro   strippedargrK   rK   rR   rr   ~   s   rr   c                      s  e Zd ZU ded< ded< ded< ded< ded< ded	< ded
< ded< ded< ded< g Zded< i Zded< edZded< ei Zded< edZ	ded< e Z
ded< dK fd$d%ZedLd'd(ZedMd+d,ZdNd/d0ZedOd1d2ZedPd4d5ZedQd6d7ZedQd8d9ZedRd;d<ZedSd=d>ZedTd?d@ZedQdAdBZedUdCdDZedUdEdFZedUdGdHZedUdIdJZ  ZS )V_CliArgr   modelparserrT   
field_name
arg_prefixrG   case_sensitivepopulate_by_namehide_none_type(bool | Literal['all', 'no_enums'] | None
kebab_casebool | Noneenable_decodingintenv_prefix_len	list[str]argsdict[str, Any]rH   rK   tuple[str, ...]_alias_namesdict[str, int | None]_alias_pathsF_is_alias_path_onlyr&   _field_info
field_info
parser_mapOdefaultdict[str | FieldInfo, dict[int | None | str | type[BaseModel], _CliArg]]valuesrI   rJ   c           	        s4  t  jdi | | _t j j j j jd\ _	 _
 fdd j D } jr_ jD ]-} |} jg i dd| j |< | j | | j |< | j | | j |< q0n j|vrw | j d < | j d  | j d < | D ]\}} jg i dd|| |< || | | j |< q{d S )N)alias_path_argsrz   r{   c                   s    i | ]\}} j  | |qS rK   ry   ).0nameindexrO   rK   rR   
<dictcomp>        z$_CliArg.__init__.<locals>.<dictcomp>r   rH   )updaterK   )rL   rM   r   r=   rx   r   r   rz   r{   r   r   itemssubcommand_destro   subcommand_alias
model_copydest)	rO   r   r   r   alias_path_dests	sub_modelr   alias_path_destr   rP   r   rR   rM      s0   


z_CliArg.__init__r   c                 C  s   |dvr
| ddS |S )NNF_-)replace)clsr   r~   rK   rK   rR   get_kebab_case   s   z_CliArg.get_kebab_case
annotationr\   c                   s^   d}t |}t|D ]
}| |7 }q
|r-t|tr-|t fdd|j D 7 }|S )NrK   c                 3  s     | ]}  |d kV  qdS )allN)r   r   r   r   r~   rK   rR   	<genexpr>   s    z)_CliArg.get_enum_names.<locals>.<genexpr>)r@   r   get_enum_namesr-   r   tuple__members__keys)r   r   r~   
enum_namesrn   rK   r   rR   r      s   "z_CliArg.get_enum_namesr   type[BaseModel]c                 C  s*   |  t| jdkr|j| jS | j| jS NrB   )r   lenro   rV   preferred_aliasr~   )rO   r   rK   rK   rR   r      s
   z_CliArg.subcommand_aliasc                 C     | j S N)r   r   rK   rK   rR   r         z_CliArg.field_infor]   c                 C  s   t | jjv r| j dS d S )N:subcommand)r8   r   metadatary   r   rK   rK   rR   r      s   z_CliArg.subcommand_destc                 C  sH   | j s| jr| jjd ur| js| j | j | jd  S | j | j S r   )r   ry   r   validation_aliasis_parser_submodelr   r   r   rK   rK   rR   r      s   z_CliArg.destc                 C  s"   | j r| jd ddS | jd S )Nr   r   r   )r~   r   r   r   rK   rK   rR   preferred_arg_name   s   "z_CliArg.preferred_arg_namerp   c                 C  s   t | jjs| jjfnt | jj}| jrtdd |D }g }|D ]1}t|tfddr8td| jj	 d| j
 t|tfddrMtd| jj	 d| j
 t|| q!|S )Nc                 S     g | ]
}|t d ur|qS r   typer   rn   rK   rK   rR   
<listcomp>       z&_CliArg.sub_models.<locals>.<listcomp>F)is_include_originz.CliSubCommand is not outermost annotation for .z1CliPositionalArg is not outermost annotation for )r   r   r   r|   r   r;   r8   r,   rv   rV   rx   r7   rr   )rO   field_typesro   rn   rK   rK   rR   ro      s$   

z_CliArg.sub_modelsc                 C  r   r   r   r   rK   rK   rR   alias_names   r   z_CliArg.alias_namesc                 C  r   r   )r   r   rK   rK   rR   alias_paths  r   z_CliArg.alias_pathsc                 C  s
   | j d S )Nr   r   r   rK   rK   rR   r     s   
z_CliArg.preferred_aliasc                 C  r   r   )r   r   rK   rK   rR   is_alias_path_only
  r   z_CliArg.is_alias_path_onlyc                 C  s$   | j  ot| jjtttttfddS )NTis_strip_annotated)	r   r;   r   r   listsetre   r   r   r   rK   rK   rR   is_append_action  s   
z_CliArg.is_append_actionc                 C  s   | j  ot| jo| j S r   )r   rG   ro   r   r   rK   rK   rR   r     s   z_CliArg.is_parser_submodelc                 C  s,   | j d uot| j jv p| jdu ot| j jvS r   )r   r2   r   r   r1   r   rK   rK   rR   is_no_decode  s   
z_CliArg.is_no_decode)r   r&   r   r   r   r   rI   rJ   )r   rT   r~   r}   rI   rT   )r   r\   r~   r}   rI   r   )r   r   rI   rT   )rI   r&   )rI   r]   )rI   rT   )rI   rp   )rI   r   )rI   r   )rI   rG   )rV   rW   rX   __annotations__r   rH   r!   r   r   r   r   rM   classmethodr   r   r   r   r   r   r   r   ro   r   r   r   r   r   r   r   rY   rK   rK   rP   rR   ru      s^   
 
ru   T_CliBoolFlag)bound)defaultc                      sH  e Zd ZdZdddddddddddddddddejejejej	ej
efdć fd'd(Zedd*d+Zedd/d+Zedd2d+Zddd3dȇ fd7d+Zedd9d:Zedd;d:Zdd<dd>d:ZddAdBZddGdHZddKdLZddNdOZddPdQZddTdUZddVdWZddZd[Zdd`daZddcddZeddfdgZddldmZddndoZejejejej	ej
efddpdqZddrdsZdti ddfdddZ dddZ!dddZ"dddZ#dddZ$	ddddZ%dddZ&dddZ'ddddZ(dddZ)dddZ*dddZ+dddZ,dddZ-		ddddZ.e/dddZ0			t	tddddÄZ1  Z2S )CliSettingsSourcea  
    Source class for loading settings values from CLI.

    Note:
        A `CliSettingsSource` connects with a `root_parser` object by using the parser methods to add
        `settings_cls` fields as command line arguments. The `CliSettingsSource` internal parser representation
        is based upon the `argparse` parsing library, and therefore, requires the parser methods to support
        the same attributes as their `argparse` library counterparts.

    Args:
        cli_prog_name: The CLI program name to display in help text. Defaults to `None` if cli_parse_args is `None`.
            Otherwise, defaults to sys.argv[0].
        cli_parse_args: The list of CLI arguments to parse. Defaults to None.
            If set to `True`, defaults to sys.argv[1:].
        cli_parse_none_str: The CLI string value that should be parsed (e.g. "null", "void", "None", etc.) into `None`
            type(None). Defaults to "null" if cli_avoid_json is `False`, and "None" if cli_avoid_json is `True`.
        cli_hide_none_type: Hide `None` values in CLI help text. Defaults to `False`.
        cli_avoid_json: Avoid complex JSON objects in CLI help text. Defaults to `False`.
        cli_enforce_required: Enforce required fields at the CLI. Defaults to `False`.
        cli_use_class_docs_for_groups: Use class docstrings in CLI group help text instead of field descriptions.
            Defaults to `False`.
        cli_exit_on_error: Determines whether or not the internal parser exits with error info when an error occurs.
            Defaults to `True`.
        cli_prefix: Prefix for command line arguments added under the root parser. Defaults to "".
        cli_flag_prefix_char: The flag prefix character to use for CLI optional arguments. Defaults to '-'.
        cli_implicit_flags: Controls how `bool` fields are exposed as CLI flags.

            - False (default): no implicit flags are generated; booleans must be set explicitly (e.g. --flag=true).
            - True / 'dual': optional boolean fields generate both positive and negative forms (--flag and --no-flag).
            - 'toggle': required boolean fields remain in 'dual' mode, while optional boolean fields generate a single
              flag aligned with the default value (if default=False, expose --flag; if default=True, expose --no-flag).
        cli_ignore_unknown_args: Whether to ignore unknown CLI args and parse only known ones. Defaults to `False`.
        cli_kebab_case: CLI args use kebab case. Defaults to `False`.
        cli_shortcuts: Mapping of target field name to alias names. Defaults to `None`.
        case_sensitive: Whether CLI "--arg" names should be read with case-sensitivity. Defaults to `True`.
            Note: Case-insensitive matching is only supported on the internal root parser and does not apply to CLI
            subcommands.
        root_parser: The root parser object.
        parse_args_method: The root parser parse args method. Defaults to `argparse.ArgumentParser.parse_args`.
        add_argument_method: The root parser add argument method. Defaults to `argparse.ArgumentParser.add_argument`.
        add_argument_group_method: The root parser add argument group method.
            Defaults to `argparse.ArgumentParser.add_argument_group`.
        add_parser_method: The root parser add new parser (sub-command) method.
            Defaults to `argparse._SubParsersAction.add_parser`.
        add_subparsers_method: The root parser add subparsers (sub-commands) method.
            Defaults to `argparse.ArgumentParser.add_subparsers`.
        format_help_method: The root parser format help method. Defaults to `argparse.ArgumentParser.format_help`.
        formatter_class: A class for customizing the root parser help text. Defaults to `argparse.RawDescriptionHelpFormatter`.
    NTsettings_clstype[BaseSettings]cli_prog_namer]   cli_parse_args)bool | list[str] | tuple[str, ...] | Nonecli_parse_none_strcli_hide_none_typer   cli_avoid_jsoncli_enforce_requiredcli_use_class_docs_for_groupsrF   
cli_prefixcli_flag_prefix_charcli_implicit_flags'bool | Literal['dual', 'toggle'] | Nonecli_ignore_unknown_argscli_kebab_caser}   cli_shortcuts$Mapping[str, str | list[str]] | Nonerz   root_parserr   parse_args_methodCallable[..., Any] | Noneadd_argument_methodadd_argument_group_methodadd_parser_methodadd_subparsers_methodformat_help_methodformatter_classrI   rJ   c              
     s  |d ur|n	|j dtjd | _|d ur|n|j dd| _|d ur%|n|j dd| _|s8| jdu r6dnd}|| _|d urA|n|j d	d| _|d urO|n|j d
d| _	|	d ur]|	n|j dd| _
|
d urk|
n|j dd| _|d ury|n|j dd| _| jd | _| jr|
ds|
ds|
dd std|
 |  jd7  _|d ur|n|j dd| _|d ur|n|j dd| _|d ur|n|j dd| _|d ur|n|j dd | _|d ur|nd}|s|d urtdt j|d| jd| j|dd |d u rt| j
| jt||| jdddn|}| j||||||||d |dvrW|du r9tjdd  }nt|ttfsJtdt| | j | !| j"|d d S d S )Nr   r   r   Fr   TrJ   nullr   r   rF   r    r   r   r0   r   z'CLI settings source prefix is invalid: r   r   r   r   zGCase-insensitive matching is only supported on the internal root parser)env_nested_delimiterenv_parse_none_strenv_parse_enums
env_prefixrz   env_nested_max_split)rF   progr`   r   prefix_charsallow_abbrevadd_help)r   r   r   r   r   r   r   r   r   rB   z<cli_parse_args must be a list or tuple of strings, received parsed_args)#ra   rc   sysargvr   r   r   r   r   r   rF   r   r   _cli_flag_prefix
startswithendswithr   isidentifierr,   r   r   r   r   rL   rM   rE   rm   _connect_root_parserrd   r   r   r   _load_env_vars_parse_argsr   )rO   r   r   r   r   r   r   r   r   rF   r   r   r   r   r   r   rz   r   r   r   r   r   r   r   r   rP   rK   rR   rM   `  s   $



zCliSettingsSource.__init__r   c                 C     d S r   rK   r   rK   rK   rR   __call__     zCliSettingsSource.__call__r   "list[str] | tuple[str, ...] | boolCliSettingsSource[T]c                C     dS )a  
        Parse and load the command line arguments list into the CLI settings source.

        Args:
            args:
                The command line arguments to parse and load. Defaults to `None`, which means do not parse
                command line arguments. If set to `True`, defaults to sys.argv[1:]. If set to `False`, does
                not parse command line arguments.

        Returns:
            CliSettingsSource: The object instance itself.
        NrK   )rO   r   rK   rK   rR   r
    s   r   ,Namespace | SimpleNamespace | dict[str, Any]c                C  r  )a  
        Loads parsed command line arguments into the CLI settings source.

        Note:
            The parsed args must be in `argparse.Namespace`, `SimpleNamespace`, or vars dictionary
            (e.g., vars(argparse.Namespace)) format.

        Args:
            parsed_args: The parsed args to load.

        Returns:
            CliSettingsSource: The object instance itself.
        NrK   rO   r   rK   rK   rR   r
       )r   r   )list[str] | tuple[str, ...] | bool | None?Namespace | SimpleNamespace | dict[str, list[str] | str] | None%dict[str, Any] | CliSettingsSource[T]c                  s   |d ur|d urt d|d ur0|du r| ji dS |du r%tjdd  }| j| | j|dS |d ur=| jt|dS t  S )Nz/`args` and `parsed_args` are mutually exclusiveFr   TrB   )	r,   r  r   r  r  r   copyrL   r
  )rO   r   r   rP   rK   rR   r
    s   
Mapping[str, str | None]c                 C  r	  r   rK   r   rK   rK   rR   r    r  z CliSettingsSource._load_env_varsc                C  r  )a  
        Loads the parsed command line arguments into the CLI environment settings variables.

        Note:
            The parsed args must be in `argparse.Namespace`, `SimpleNamespace`, or vars dictionary
            (e.g., vars(argparse.Namespace)) format.

        Args:
            parsed_args: The parsed args to load.

        Returns:
            CliSettingsSource: The object instance itself.
        NrK   r  rK   rK   rR   r    r  r   /Mapping[str, str | None] | CliSettingsSource[T]c          	        s  |d u ri S t |ttfrt|}| |}| j D ]#\}}t |tr>|dr>dd |	 D D ]}||vr=| j
||< q2qdd | D }|rbt|td t fdd| D sad	| < nd
 | js| jrtdd | j	 D }|rt fdd| jD }|stdd | j	 D }t | jtr| jdd|  td|| j tttttf || j| j| j
| _| S )Nr   c                 S  s   g | ]}|j qS rK   )r   r   rt   rK   rK   rR   r   :      z4CliSettingsSource._load_env_vars.<locals>.<listcomp>c                 S  s(   i | ]\}}| d s|tur||qS )r   )r  r'   )r   keyvalrK   rK   rR   r   >  s    z4CliSettingsSource._load_env_vars.<locals>.<dictcomp>)r  c                 3  s"    | ]}  d |v r|V  qdS )r   NrK   )r   rx   last_selected_subcommandrK   rR   r   E  s     z3CliSettingsSource._load_env_vars.<locals>.<genexpr>{}r   c                 s      | ]}|V  qd S r   rK   r   r   rK   rK   rR   r   M      c                 3  s$    | ]}| d dd  v V  qdS )r   rB   r   N)rsplit)r   r   r  rK   rR   r   O  s    
c                 s  s    | ]}|r|V  qd S r   rK   r   rK   rK   rR   r   S      zunrecognized arguments:  r0   )rd   r   r   vars_resolve_parsed_args_parser_mapr   rT   r  r   r   maxr   anyr   r   _cli_unknown_argsnextr   r   rU   join
SystemExitr   rA   r   r   rz   env_ignore_emptyenv_vars)	rO   r   selected_subcommandsarg_destarg_mapr   has_unknownselected_accepts_unknownunknownrK   r  rR   r  .  sN   

dict[str, list[str] | str]r   c                 C  s$  g }t | D ]\}}t|t r9| |||rq| j|i d }|r0|jr0d|||< q| ||||< q|	drN|d urN|
| j| | j q| jdkrt|tr|dd}| j|i d }|r|jjr|||jjdv rd|v rtd|dd d| d	|||< q|S )
N,r   r   r   r   FzInput should be kebab-case "z", not "")r   r   rd   %_is_nested_alias_path_only_workaroundr'  rc   r   r,  _merge_parsed_listr  rq   r   r   rT   r   r   r   r   
ValueError)rO   r   r0  rx   r  cli_arg	snake_valrK   rK   rR   r&  c  s2   

z&CliSettingsSource._resolve_parsed_argsrx   rT   r  rG   c                 C  s   | j |i  }|sdS tt|}|jrO|jdrO||= |jdd }d|j d| 	|| }||vr=d| dn|| dd  d	| d||< d
S dS )z
        Workaround for nested alias path environment variables not being handled.
        See https://github.com/pydantic/pydantic-settings/issues/670
        Fr   Nr8  z": {}, T)
r'  rc   r   r+  iterr   ry   r  r   r:  )rO   r   rx   r  	known_argrt   nested_dest
nested_valrK   rK   rR   r9    s   z7CliSettingsSource._is_nested_alias_path_only_workaroundparsed_listtuple[type | None, type | None]c                 C  sr   | j |t}|tu stt|rtdd t|D s"|}||fS |r3t|dks1|d dr3tnt	}||fS )Nc                 s  s0    | ]}|t d urt|ttfvr|V  qd S r   )r   r   re   r   r   rK   rK   rR   r     s    zACliSettingsSource._get_merge_parsed_list_types.<locals>.<genexpr>rB   r   [)
_cli_dict_argsrc   r   r)   r   r)  r   r   r  rT   )rO   rF  rx   
merge_typeinferred_typerK   rK   rR   _get_merge_parsed_list_types  s   
&z.CliSettingsSource._get_merge_parsed_list_typesmerged_listc              	   C  s`  g }d }| j |i }zttt| jj}ttt|	dgt
u }W n ty2   d }Y nw t|D ]i\}}	||}
|
d u pG|
j }|d u rO|}n||krWtd|r|	dd}	z"|	drp|	drp|	dd n|	}t| |r~d| dn|}	W n ty   Y nw |	dr|	dr|	dd }	||	 q7d|}|rd	| d
S |S )N1zKMixing Decode and NoDecode across different AliasPath fields is not allowed\z\\r8  rB   r>  r7  rH  ])r'  rc   r"   r+  rB  r   r   r   r   validate_pythonrT   ri   	enumerater   r,   r   r  r  floatr;  rq   r,  )rO   rM  rx   decode_listis_use_decodecli_arg_maplist_adapteris_num_type_strr   itemr<  	is_decodeunquoted_itemmerged_list_strrK   rK   rR   _merged_list_to_str  s<    
$
z%CliSettingsSource._merged_list_to_strc                 C  s  zg }d}|  ||\}}|D ]}}t|ts nu| }|dr.|dr.|dd  }|r| }|drC| |||}d}n>|dsM|drT| ||}n+z	| |||}W n! t	y~ } z||u rk||}| |||}W Y d }~nd }~ww d}|s0|s| |||}q|tu r|d	 W S |t
u r| ||W S i }	|D ]
}
|	t|
 qt|	W S  ty } z
td
| d| d }~ww )NFrH  rP  rB   r>  r7  r?  Tr   zParsing error encountered for z: )rL  rd   rT   stripr  r  _consume_comma_consume_object_or_array_consume_string_or_numberr;  r   r]  r   jsonloadsdumpsri   r,   )rO   rF  rx   rM  is_last_consumed_a_valuerJ  rK  r  emerged_dictrY  rK   rK   rR   r:    sV   


z$CliSettingsSource._merge_parsed_listrY  re  c                 C  s   |s| d |dd  S )Nz""rB   )rq   )rO   rY  rM  re  rK   rK   rR   r_    s   
z CliSettingsSource._consume_commac                 C  s   d}| dr	dnd}d}tdt|D ]K}|| dkr(||d  dkr(| }q|r+q|| dv r6|d7 }q|| d	v r_|d8 }|| |kr_|d
kr_||d |d   ||d d    S qtd| d)NrB   r?  r@  rP  Fr8  rO  )r?  rH  )r@  rP  r   zMissing end delimiter ")r  ranger   rq   r,   )rO   rY  rM  countclose_delimin_strconsumedrK   rK   rR   r`    s"   
z*CliSettingsSource._consume_object_or_arrayrJ  type[Any] | Nonec           	      C  sz  |t urdnt|}d}|t|k r:|| dkr'|dks$||d  dkr'| }|s0|| dkr0n
|d7 }|t|k s|r@td|d |  }|tt fv rzzt| W n tys   || jkrbd}|d	vrq|dsqd| d}Y nw |	| n=d
d |
ddD \}}|dr|ds|ds|drtd| |d|d}}|	t||i ||d  S )Nr   Fr8  rB   rO  r7  zMismatched quotesr   )truefalser   c                 s  r  r   rK   )r   kvrK   rK   rR   r   "  r!  z>CliSettingsSource._consume_string_or_number.<locals>.<genexpr>=z1Dictionary key=val parameter is a quoted string: )rT   r   r,   r^  r   rS  r;  r   r  rq   splitr  rb  rd  )	rO   rY  rM  rJ  rl  is_find_end_quote
val_stringr  r  rK   rK   rR   ra    s:   $
(z+CliSettingsSource._consume_string_or_numberrv   r   r   r&   c                 C  s   t |jv rd}n.t|jv rd}n&t|jv r,d}t|jts+t| d|j d| dn
t	|jv r4d}nd S |j
turIt| d|j d| dd S )	NCliImplicitFlagCliExplicitFlagCliToggleFlagz
 argument r   z must have a default bool valueCliDualFlagz is not of type bool)r6   r   r5   r9   rd   r   rG   r,   rV   r4   r   )rO   rv   rx   r   cli_flag_namerK   rK   rR   _verify_cli_flag_annotations)  s"   




z.CliSettingsSource._verify_cli_flag_annotationslist[tuple[str, FieldInfo]]c                 C  s  g }g g g }}}t | D ]\}}t|jv rm| s)td|j d| dt||^}}	t|dkrBtd|j d| ddd t	|j
D }
|
D ]}t|sdt|sdtd|j d| dqN|||f qt|jv rt||^}}	t|dkrtd	|j d| dt|j
tttttfd
d}|s|||f q|||f q| ||| |||f q|rt|dkrddd |D }t|j d| |rddd || D }t|j d| || | | S )Nzsubcommand argument r   z has a default valuerB   z has multiple aliasesc                 S  r   r   r   r   rK   rK   rR   r   G  r   z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>z$ has type not derived from BaseModelzpositional argument Tr   rA  c                 S     g | ]\}}|qS rK   rK   r   r   inforK   rK   rR   r   _      z- has multiple variadic positional arguments: c                 S  r|  rK   rK   r}  rK   rK   rR   r   b  r  z= has variadic positional arguments and subcommand arguments: )r>   r   r8   r   is_requiredr,   rV   r=   r   r   r   r$   r%   rq   r7   r;   r   r   re   r   r   rz  r,  )rO   rv   positional_variadic_argpositional_argssubcommand_argsoptional_argsrx   r   r   r   r   
field_typer   field_namesrK   rK   rR   _sort_arg_fields<  sN   

z"CliSettingsSource._sort_arg_fieldsr   c                 C  r   )z#The connected root parser instance.)_root_parserr   rK   rK   rR   r   i  s   zCliSettingsSource.root_parserparser_methodmethod_namerH   Callable[..., Any]c                   s^   d ur j du r  dkr tjtr 	 	 ddfdd}|S d u r-d fdd}|S S )NFr   r   rE   r   "list[str] | tuple[str, ...] | None	namespaceNamespace | NonerI   r   c                   sv   g }|rt t |ng D ]&}dj d}td| d|}|r/|d |d }|| q | ||S )NrO  z{1,2}z^(z[^\s=]+)(.*)rB   r0   )	shlexrr  r,  r   rematchgrouplowerrq   )r   r   r  insensitive_argsrt   flag_prefixmatched)r  rO   rK   rR   parse_args_insensitive_methodx  s   zOCliSettingsSource._connect_parser_method.<locals>.parse_args_insensitive_methodrH   c                    s   t d  d)Nz0cannot connect CLI settings source root parser: z. is set to `None` but is needed for connectingr+   r   )r  rK   rR   none_parser_method  s   
zDCliSettingsSource._connect_parser_method.<locals>.none_parser_method)NN)r   rE   r   r  r  r  rI   r   )r   r   rH   r   rI   r   )rz   rd   r  rE   )rO   r  r  r   rH   r  r  rK   )r  r  rO   rR   _connect_parser_methodn  s   

z(CliSettingsSource._connect_parser_methodc                   s   |  |d d fdd}|S )	Nr   rw   r   rH   rI   c                   sx     ds  d | fi  S  fdddD }|d  d7  < | fi |}t|ds4td	|jd
i  S )N _is_cli_mutually_exclusive_grouprequiredc                   s    i | ]}| v r|  |qS rK   )popr  rH   rK   rR   r     r   zUCliSettingsSource._connect_group_method.<locals>.add_group_method.<locals>.<dictcomp>)titler`   r  z (mutually exclusive)add_mutually_exclusive_groupzcannot connect CLI settings source root parser: group object is missing add_mutually_exclusive_group but is needed for connectingrK   )r  hasattrr,   r  )rw   rH   main_group_kwargsr  add_argument_groupr  rR   add_group_method  s   


zACliSettingsSource._connect_group_method.<locals>.add_group_method)rw   r   rH   r   rI   r   )r  )rO   r   r  rK   r  rR   _connect_group_method  s   z'CliSettingsSource._connect_group_methodc	                   s   i  _ d fdd}	| _|d u }
|d u r jr|	ntj} |d _ |d	 _ | _	 |d
 _
 |d _ |d _| _i  _tt _    j j jg  j jd g tt d	  j ry js{|
r} |	d _d S d S d S d S )Nr   r   rH   rI   r   c                    s4   t j| i |\} } jD ]}| j|< qtt| S r   )r   parse_known_argsr*  r   r   )r   rH   unknown_argsr   r   rK   rR   _parse_known_args  s   

zACliSettingsSource._connect_root_parser.<locals>._parse_known_argsr   r   r   r   r   	rw   rv   
added_argsry   subcommand_prefixr  alias_prefixesmodel_default
model_path)r   r   rH   r   rI   r   )r*  r  r   r   
parse_argsr  r  _add_argumentr  
_add_group_add_parser_add_subparsers_format_help_formatter_classrI  r	   re   r'  _add_default_help_add_parser_argsr   r   r   r'   r   )rO   r   r   r   r   r   r   r   r   r  _is_default_parse_argsrK   r   rR   r    s@   z&CliSettingsSource._connect_root_parserc                 C  s   t | jtrD| js&t| j D ]\}}t||| jd^}}d|v r% d S q| j	| j
| jd d  d| jd d  ddtdd d S d S )N)rz   helprB   hr0   zshow this help message and exit)actionr   r  )rd   r  rE   r   r>   r   r   r=   rz   r  r   r  r   )rO   rx   r   r   r   rK   rK   rR   r    s    
z#CliSettingsSource._add_default_helpFrw   r  ry   r  r  r  r  is_model_suppresseddiscriminator_valsdict[str, set[Any]]is_last_discriminatorr  set[type[BaseModel]] | Noner   c                   s  d u rt  |hB d }i }tt|stt|r%tt||s%d n|}| |D ]\}}t||| j|||| j| j	
ddpH| j	
dd| j| j| j	
d| jd}||j |jr|jD ]}||}| j|j | }|g|_d|jd< | j|jd< t||jd< t|jd	krd n|j|jd
< | jrt||jd
< |d u r| j|d| dt|jd	kr|jnd dn|}t|dr|jr|jd d  d| dnd| d|_| j|g|jR i |j|_| j|j|g |j  d| |j! dd g t"d	 qcq,| j# |j |jd< t$|jd< | %||||	|jd
< | &|j'|jd< | j(o1|) o1|t"u |jd< | *|||||
|}|rJ|jd |v rKq,| +|j||j, t-|j.v rf| /|j||j!|\} | 0|j|| fdd|jD }|j1rt2|j'dds|r| j3|||||| ||j|||j4||	d q,t5|j.v rg | j6|jd < q,|j7st8|t9r| j:|fi |}|d u r|n|}|j
ddkrֈ d7   fdd|D |_| j;|g|jR i |j |t<|7 }q,| =|||||| |S ) Nr{   Fvalidate_by_namer   )rw   r   r   rv   rx   ry   rz   r{   r|   r~   r   r   r   r   r`   rB   r  subcommandsr   )r  r   r`   metavarr>  r7  r@  r?  r   r  r   r   r  c                   s   g | ]}| vr|qS rK   rK   )r   m)r  rK   rR   r   e      z6CliSettingsSource._add_parser_args.<locals>.<listcomp>__pydantic_root_model__)r  r  r  r  store_falseno-c                   s0   g | ]} d t |dkrdnd   | qS r   )r   r   r  rK   rR   r     s   0 )>r   r$   r   r%   
issubclassr  ru   r'  rz   rk   rc   r   r   r   r   r   r   ro   r   r   rH   r  rm   r   r`   r   r  r  r  r  rw   r  r   r   r'   r  CLI_SUPPRESS_help_format_metavar_formatr   r   r  _get_arg_names_convert_append_actionr   r7   r   _convert_positional_arg_convert_bool_flagr   rb   _add_parser_submodelsr   r:   r*  r   rd   re   r  r  r   _add_parser_alias_paths)rO   rw   rv   r  ry   r  r  r  r  r  r  r  r  
subparsersr   rx   r   rt   r   r   subcommand_arg	arg_namesnon_recursive_sub_modelscontextrK   )r  r  rR   r    s  






	


*
z"CliSettingsSource._add_parser_argsr   c                 C  s<   |rd|d< t |jttfddr|j| j|d < d S d S d S )Nrq   r  Tr   r   )r;   r   re   r   rI  )rO   rH   r   r   rK   rK   rR   r    s   z(CliSettingsSource._convert_append_actionc                 C  s   |d dkrNdd |j D }|s| jrtg}|rP| }|tu r/| jdkr-t|jtr-tnt}|tu r<|d= t	|d< d S |tu rR|d= |jrHdnd|d< d S d S d S d S )	Nr  rG   c                 S  s(   g | ]}t |trt|ttB r|qS rK   )rd   r   r  r6   r5   )r   metarK   rK   rR   r     s    z8CliSettingsSource._convert_bool_flag.<locals>.<listcomp>toggler  r  
store_true)
r   r   r6   r  rd   r   rG   r9   r4   r   )rO   rH   r   r  meta_bool_flags	bool_flagrK   rK   rR   r    s,   
z$CliSettingsSource._convert_bool_flagr   tuple[list[str], str]c                 C  s   d}|d g}t |d< t| | j|d< | o|t u }|ddkr1|d= |r,dnd|d	< n|s7d
|d	< |d= |d= ||fS )Nr   r   r   r  r  rq   +*nargs?r  )r'   ru   r   upperr   r  rc   )rO   rH   r   r   r  r  r  r  rK   rK   rR   r    s   
z)CliSettingsSource._convert_positional_argrt   ru   c              	     s*  g }|j g| D ],}|jD ]&}	t|| jkr| |	 n
||dd |	 | j}
|
 vr3||
 qq| jr\| j	 D ]\}}||v r[t
|trM|gn|}| fdd|D  q=t }||j}|d urt|jjtfd|d |tdd |D  |sg S | ttt| |jd< |S )	Nr   rB   c                 3  s    | ]	}| vr|V  qd S r   rK   r   aliasr  rK   rR   r         z3CliSettingsSource._get_arg_names.<locals>.<genexpr>T)r   collectc                 s  s    | ]}t |V  qd S r   )r   )r   tagrK   rK   rR   r     r#  r  )ry   r   ru   r   r   r   r   rq   r   r   rd   rT   extendr   rc   r   r;   r   r   r   r   r   from_iterabler  r   sortedrH   )rO   rt   r  r  r  r  r  r  prefixr   arg_nametargetaliases
alias_listtagsdiscriminatorsrK   r  rR   r    sB   	



z CliSettingsSource._get_arg_namesro   rp   r  r  r   r   c                   sD  t |tr	tdi }|d  d|d< |j|d< |	d |d< tdd |D |d	< |d	 r8t|d
kr8td| jrIt|d
krIt|d |d< |tur_t	t
|sYtt
|r^t||
}n|jturh|j}n|jd urp|j}|d u rd| j d}|d d urt| d|d  |d< n||d< |d }| |p|}|rt|d< ||d  d|	d< d|	d< d|	d< |s| jrtnd|d  d|	d< | j|fi |}| j|gfdd|D R i |	 |jr  | d|j t ini }|D ]'}| j|||  | d|| fdd|d
d  D |||||d u |d qd S )Nz8cannot have nested models in a CliMutuallyExclusiveGroupr   z optionsr  r`   r  c                 s  s    | ]}t |tV  qd S r   )r  rZ   )r   rv   rK   rK   rR   r     s    

z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>r  rB   z/cannot use union with CliMutuallyExclusiveGroupz	default: z (undefined)
Fr  r  r  constzset z from JSON string (default: {})r  c                 3  s    | ]	}  | V  qd S r   rK   r   r  rK   rR   r   +  r  r   c                   s   g | ]	}  | d qS )r   rK   r   r   rK   rR   r   7  s    z;CliSettingsSource._add_parser_submodels.<locals>.<listcomp>r>  )rw   rv   r  ry   r  r  r  r  r  r  r  r  )r  rZ   r,   r`   r)  r   r   rm   r'   r$   r   r%   rb   r   default_factoryr   r   _is_field_suppressedr  rq   r   r  r  discriminatorr   r  )rO   rw   rv   ro   r  ry   r  r  r  rH   rx   r   r   r  r  r  model_group_kwargsdesc_headerr   model_groupr  rK   )ry   r  rR   r    sx   




&"
z'CliSettingsSource._add_parser_submodelsr   r   c                 C  s  |r|}|d urt |tr| j|fi |n|}| D ]g\}}	|| jkr+| | n
||dd | }
i }t|d< d|d< d|d< d|d	< |	d u rUd
|d	< t| j|
< | j |
 g}| j	|
  D ]\}}|||_
|_qd| j|g|R i | ||
 qd S d S )Nr   rB   r   zpydantic alias pathr  rq   r  r   r  re   )rd   re   r  r   r   r   r  rI  r  r'  r   rH   r  rq   )rO   rw   r   r  ry   r  r  r  r   r   r  rH   r   r  rt   rK   rK   rR   r  ?  s0   	 

z)CliSettingsSource._add_parser_alias_pathsobjc                 C  s$   | j st|S tdd t|D S )Nc                 S  r   r   r   r   rK   rK   rR   r   d  r   z8CliSettingsSource._get_modified_args.<locals>.<listcomp>)r   r   r   rO   r  rK   rK   rR   _get_modified_args`  s   z$CliSettingsSource._get_modified_argsobj_qualnamec                 C  sx   d|v r|d | dd  dd || dd d  D  }d|}|r.| d| dS t|dkr6|S d| d	S )
NJSONrB   c                 S  s   g | ]}|d kr|qS )r   rK   r  rK   rK   rR   r   h  r  z=CliSettingsSource._metavar_format_choices.<locals>.<listcomp>r7  rH  rP  r?  r@  )r   r,  r   )rO   r   r  r  rK   rK   rR   _metavar_format_choicesf  s   6
z)CliSettingsSource._metavar_format_choicesc                   s  t |}t|rd|jv r|jS |jS |du rdS t|tr"t|S t|tjs-t	
|r1t|S t|tttfs<|j}t|}t|rR tt j |S t	|rd ttt |S t|trx  fdd|j D S t|tr jtt j |t|dr|jdS t|dS |tdu r jS t|st|rt |d	d
r t!|d j"S dS t|tr|jS t|#dd#ddS )z\Pretty metavar representation of a type. Adapts logic from `pydantic._repr.display_as_type`.z<locals>.z...c                   s   g | ]}t | jd kqS )r   )ru   r   r   r   r   rK   rR   r         z=CliSettingsSource._metavar_format_recurse.<locals>.<listcomp>rX   )r  Nr  Frootr   ztyping.r   ztyping_extensions.)$r@   r?   rX   rV   rd   r#   reprtyping
ForwardRefr(   is_typealiastyperT   r.   r/   r   rQ   r   r)   r  r   map_metavar_format_recurser  
is_literalr-   r   r   r   r  r   r$   r%   rb   r>   r   r   )rO   r  originrK   r   rR   r	  o  sL   





z)CliSettingsSource._metavar_format_recursec                 C  s   |  |ddS )NrA  r7  )r	  r   r  rK   rK   rR   r    s   z!CliSettingsSource._metavar_formatc           	      C  sj  |j r|j nd}|s| |rtS | r9|td fv r9t|jvr8|d u r&dnd}||r1d| dnd| d7 }nld| j d}tt	|sLt
t	|rVdt|| d}n?|td fvrjt|rjd| | d}n+|jtd fvrt|j|j}d|d u r|jn| d}n|jd urd| |j d}t|jvr||rd	| n|7 }tt	| jtr|d
dS |S )Nr   zifdef: z (z	required)(z
(default: )z(default factory: r$  %z%%)r`   r  r  r  r'   r7   r   r   r$   r   r%   rb   r?   r  r   r<   r   r  r9   r  r  r   r   )	rO   rx   r   r  r  _helpifdefr   	enum_namerK   rK   rR   r    s*   
 

 zCliSettingsSource._help_formatc                 C  s"   |j r|j nd}|tkpt|jv S )Nr   )r`   r  r   )rO   r   r  rK   rK   rR   r    s   z&CliSettingsSource._is_field_suppressedr  valuealias_path_only_defaultslist[Any] | dict[str, Any]c                 C  s   dd |j |jfD d }|jdd }|s!||g  || }n+||i  || }|d d D ]}	||	i  ||	 }q1||d g  ||d  }tt|jd }
|dgt|
d t| d  |||
< || S )Nc                 S  s8   g | ]}t |ttfrt |tr|ntt|jd  qS )r   )rd   r   r   r   choicesr  rK   rK   rR   r     s    zECliSettingsSource._update_alias_path_only_default.<locals>.<listcomp>r   rB   r>  r   )	r  r   path
setdefaultr   r   r  r(  r   )rO   r  r  r   r  
alias_pathalias_nested_pathsalias_defaultcurrent_pathnested_pathalias_path_indexrK   rK   rR   _update_alias_path_only_default  s(   


"z1CliSettingsSource._update_alias_path_only_defaultrb   str | list[Any] | dict[str, Any]
list_style#Literal['json', 'argparse', 'lazy']
dict_styleLiteral['json', 'env']&list[str | list[Any] | dict[str, Any]]c                 C  s   |g}t |trFt |tr1|dkr!ddd t|D g}|S |dkr/dd t|D }|S t |trF|dkrFd	d t| D }|S )
Nlazyr7  c                 s  s    | ]}| V  qd S r   rK   r   vrK   rK   rR   r     s    z9CliSettingsSource._coerce_value_styles.<locals>.<genexpr>argparsec                 S  s   g | ]}| qS rK   rK   r&  rK   rK   rR   r     r  z:CliSettingsSource._coerce_value_styles.<locals>.<listcomp>envc                 S  s   g | ]\}}| d | qS )rq  rK   )r   kr'  rK   rK   rR   r     r  )rd   rT   r   r,  rb  rc  re   r   )rO   r  r  r   r"  r   rK   rK   rR   _coerce_value_styles  s   


z&CliSettingsSource._coerce_value_stylesserialized_argsdict[str, list[str]]positionals_firstc                 C  s,   |s
| d | d  n| d | d  | d  S )Noptional
positional
subcommandrK   )r,  r.  rK   rK   rR   _flatten_serialized_args  s
   z*CliSettingsSource._flatten_serialized_argsr3   _is_submodelc                 C  sF  i }g }g }g }	t |rt|n| j D ]\}
}t||
}|j|kr$qt|jv r.|d u r.qtt	| j
|  }|jrY|	|t| | j||||dd}|	| ||7 }	qtt|sett|r| j||||dd}||d 7 }||d 7 }|	|d 7 }	qtd|j}|r| nd\}}t|tttfrt|nt|}|jr| ||||}t |jv rt|tr|n|gD ]}t|tttfrt|nt|}|| qq|j!"dt#kr|d	u r|d
kr|d7 }| j$||||dD ]}|| |  |j!"dt#ddfvr|| qqdd |D dd |D |	dS )NT)r   r"  r.  r3  r/  r0  r1  z(-*)(.+))r   r   r  Fz--r  )r   r"  r  r  c                 S  $   g | ]}t |tst|n|qS rK   rd   rT   rb  rd  r   r  rK   rK   rR   r   ?     $ z6CliSettingsSource._serialized_args.<locals>.<listcomp>c                 S  r4  rK   r5  r6  rK   rK   rR   r   @  r7  )r/  r0  r1  )%r>   r   r   r   rb   r   r8   r   r+  rB  r'  r   r   rq   r   _serialized_argsr2  r$   r%   r  r  r   groupsrd   re   r   r   rb  rd  rT   r   r  r7   rH   rc   r   r+  )rO   rv   r   r"  r.  r3  r  r  r  r  rx   r   r  rt   sub_argsr  
flag_charsr  r  rK   rK   rR   r8    sr   "

 
" 
z"CliSettingsSource._serialized_args)2r   r   r   r]   r   r   r   r]   r   r   r   r   r   r   r   r   rF   r   r   r]   r   r]   r   r   r   r   r   r}   r   r   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rI   rJ   )rI   r   )r   r  rI   r  )r   r  rI   r  )r   r  r   r  rI   r  )rI   r  )r   r  rI   r  )r   r6  rI   r   )r   r6  rx   rT   r  r   rI   rG   )rF  r   rx   rT   rI   rG  )rM  r   rx   rT   rI   rT   )rF  r   rx   rT   rI   rT   )rY  rT   rM  r   re  rG   rI   rT   )rY  rT   rM  r   rI   rT   )rY  rT   rM  r   rJ  rm  rI   rT   )rv   r   rx   rT   r   r&   rI   rJ   )rv   r   rI   r{  )rI   r   )
r  r   r  rT   r   r   rH   r   rI   r  )r   r   rI   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rI   rJ   )rI   rJ   )rw   r   rv   r   r  r   ry   rT   r  rT   r  r   r  r   r  r   r  rG   r  r  r  rG   r  r  rI   r   )rH   r   r   r&   r   rG   rI   rJ   )rH   r   r   r&   r  r   rI   rJ   )
rH   r   r   r&   r   rT   r  r   rI   r  )rt   ru   r  rT   r  r   r  r   r  r  r  rG   rI   r   r   ) rw   r   rv   r   ro   rp   r  r   ry   rT   r  rT   r  rT   r  r   rH   r   rx   rT   r   r&   r   r   r  r   r  rG   r  r  rI   rJ   )rw   r   r   r   r  r   ry   rT   r  rT   r  r   rI   rJ   )r  r   rI   r   )r   r   r  r]   rI   rT   )r  r   rI   rT   )
rx   rT   r   r&   r  r   r  rG   rI   rT   )r   r&   rI   rG   )
r  rT   r  r   r   r&   r  r   rI   r  )rb  rb  )
r  r   r  r  r   r!  r"  r#  rI   r$  )r,  r-  r.  rG   rI   r   )rb  rb  FF)rv   r3   r   r!  r"  r#  r.  rG   r3  rG   rI   r-  )3rV   rW   rX   rj   r   add_argumentr  r   
add_parseradd_subparsersformat_helpr   rM   r   r
  r  r&  r9  rL  r]  r:  r_  r`  ra  rz  r  propertyr   r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r+  staticmethodr2  r8  rY   rK   rK   rP   rR   r   -  s    5 
5




-



-

&
5 



;
V
!
	
+


 r   )r[   r\   rI   r]   )rn   r   ro   rp   rI   rJ   )prj   
__future__r   _annotationsr  rb  r  r  r   r  r(  r   r   r   r   r   r   collectionsr	   collections.abcr
   r   r   enumr   	functoolsr   	itertoolsr   textwrapr   typesr   r   r   r   r   r   r   r   r   r   r   r   pydanticr   r   r   r    r!   r"   pydantic._internal._reprr#   pydantic._internal._utilsr$   pydantic.dataclassesr%   pydantic.fieldsr&   pydantic_corer'   typing_inspectionr(   typing_inspection.introspectionr)   
exceptionsr,   utilsr-   r.   r/   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   r)  rC   pydantic_settings.mainrD   rE   rZ   rm   rr   ru   r   CliSubCommandCliPositionalArgrG   r   ru  rv  rw  rx  r  CliSuppressr   rT   CliUnknownArgsr   rK   rK   rK   rR   <module>   sd     4 0$	

!
 