
    i'                   z   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/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZC ddlDmEZEmFZFmGZG ddlmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQ ddlDmRZRmSZSmTZTmUZUmVZVmWZWmXZX ddlYmZZZ e!rddl[m\Z\  G d de          Z] G d  d!e/          Z^ G d" d#e/          Z_ e'd$          Z`e"e`dz  eOf         Zae"e`eNf         Zb e'd%ec&          Zde"edeMf         Zee"edeLf         Zfe"edePf         Zge"edeKf         ZheZie"e`eif         Zje"ekel          e0g '          eQeIf         Zm G d( d)eZe$e`                   ZndS )*z'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ValidationError)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                  .     e Zd Zdd fdZd fdZ xZS )_CliInternalArgParserTcli_exit_on_errorboolkwargsr   returnNonec                H     t                      j        di | || _        d S )N )super__init___cli_exit_on_error)selfrI   rK   	__class__s      d/root/projects/qq-shell/venv/lib/python3.11/site-packages/pydantic_settings/sources/providers/cli.pyrQ   z_CliInternalArgParser.__init__O   s.    ""6""""3    messagestrr   c                |    | j         st          d|           t                                          |           d S )Nzerror parsing CLI: )rR   r.   rP   error)rS   rW   rT   s     rU   rZ   z_CliInternalArgParser.errorS   sB    & 	A ?g ? ?@@@grV   )T)rI   rJ   rK   r   rL   rM   )rW   rX   rL   r   )__name__
__module____qualname__rQ   rZ   __classcell__rT   s   @rU   rH   rH   N   s`        4 4 4 4 4 4 4         rV   rH   c                      e Zd ZdS )CliMutuallyExclusiveGroupN)r[   r\   r]   rO   rV   rU   ra   ra   Y   s        DrV   ra   c                  n    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<   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<   d: fd#Zed;d%            Zed<d(            Zd=d+Zed>d,            Zed?d.            Zed@d/            Zed@d0            ZedAd2            ZedBd3            ZedCd4            Zed@d5            ZedDd6            ZedDd7            ZedDd8            ZedDd9            Z xZS )E_CliArgr   modelparserrX   
field_name
arg_prefixrJ   case_sensitive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]rK   rO   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]]valuesrL   rM   c                @     t                      j        di | | _        t           j         j         j         j                  \   _         _	         fd j        
                                D             } j        r j        D ]}                     |          }                     g i d          | j                 |<   | j                 |         | j                 |<   | j                 |         | j                 |<   n: j        |vr1 | j                 d <   | j                 d          | j                 d <   |
                                D ]C\  }}                     g i d          ||         |<   ||         |         | j                 |<   Dd S )N)alias_path_argsrh   c                .    i | ]\  }}j          | |S rO   )rg   ).0nameindexrS   s      rU   
<dictcomp>z$_CliArg.__init__.<locals>.<dictcomp>{   s,    kkk+$t666kkkrV   )rq   rK   )updaterO   )rP   rQ   rx   r?   rf   ry   rv   rh   rt   rw   itemssubcommand_dest
sub_modelssubcommand_alias
model_copydest)
rS   ry   rz   r|   alias_path_dests	sub_modelr   alias_path_destr   rT   s
   `        rU   rQ   z_CliArg.__init__o   s    	""6"""%6FOT_d>O`d`s7
 7
 7
343 lkkkQUQbQhQhQjQjkkk 	L!_ s s	#'#8#8#C#C EI__egsu\v\v_EwEw
4/01AB>HI]>^_o>p
4/0;@J4K_@`aq@r
4?+,<==	s
 Y...*.Jty!$'0:490Ed0KJt'-&6&<&<&>&> 	T 	T"OU15QS_aHbHb1c1cJ'.1;O1LU1SJt'..	T 	TrV   r   c                :    |dvr|                     dd          n|S )NNF_-)replace)clsr   rk   s      rU   get_kebab_casez_CliArg.get_kebab_case   s%    )3=)H)Ht||C%%%dRrV   
annotation	type[Any]c                    d}t          |          }t          |          D ]}|                     |          z  }|rKt          |t                    r6|t           fd|j                                        D                       z  }|S )NrO   c              3  L   K   | ]}                     |d k              V  dS )allN)r   )r   r   r   rk   s     rU   	<genexpr>z)_CliArg.get_enum_names.<locals>.<genexpr>   s9      xxRV 2 24u9L M MxxxxxxrV   )rB   r   get_enum_namesr/   r   tuple__members__keys)r   r   rk   
enum_namestype_s   ` `  rU   r   z_CliArg.get_enum_names   s     ')
%j11
j)) 	@ 	@E#,,UJ???JJ 	y-j$?? 	y%xxxxxZdZpZuZuZwZwxxxxxxJrV   r   type[BaseModel]c                    |                      t          | j                  dk    r|j        n| j        | j                  S NrD   )r   lenr   r[   preferred_aliasrk   )rS   r   s     rU   r   z_CliArg.subcommand_alias   sB    """%do"6"6":":I@TVZVe
 
 	
rV   c                    | j         S N)rx   rS   s    rU   ry   z_CliArg.field_info   s    rV   
str | Nonec                @    t           | j        j        v r
| j         dnd S )N:subcommand)r:   ry   metadatarg   r   s    rU   r   z_CliArg.subcommand_dest   s(    2@DOD\2\2\$/....bffrV   c                    | j         s7| j        r0| j        j        $| j        s| j         | j         | j        d          S | j         | j         S r   )r   rg   ry   validation_aliasis_parser_submodelr   ro   r   s    rU   r   z_CliArg.dest   so     $	U	U 0<+ =
 o=t';==d>Q>S>STT/94#7999rV   c                l    | j         r!| j        d                             dd          n| j        d         S )Nr   r   r   )rk   rq   r   r   s    rU   preferred_arg_namez_CliArg.preferred_arg_name   s1    15Rty|##C---diPQlRrV   list[type[BaseModel]]c                v   t          | j        j                  s| j        j        fnt          | j        j                  }| j        rt	          d |D                       }g }|D ]}t          |t          fd          r$t          d| j        j	         d| j
                   t          |t          fd          r$t          d| j        j	         d| j
                   t          t          |                    st          t          |                    r"|                    t          |                     |S )Nc                4    g | ]}|t          d           u|S r   typer   r   s     rU   
<listcomp>z&_CliArg.sub_models.<locals>.<listcomp>   s,     [ [ [55PTUYPZPZCZCZCZCZCZrV   F)is_include_originz.CliSubCommand is not outermost annotation for .z1CliPositionalArg is not outermost annotation for )r   ry   r   ri   r   r=   r:   r.   rd   r[   rf   r9   r&   rB   r'   append)rS   field_typesr   r   s       rU   r   z_CliArg.sub_models   sg    DO6776T_'))$/455 	
  	] [ [K [ [ [\\K,.
  
	; 
	;E)%.1BV[\\\ #lTZEXll[_[jll   ,E4E3G[`aaa #o
H[oo^b^moo   .u5566 ;:OP`afPgPg:h:h ;!!"25"9"9:::rV   c                    | j         S r   rt   r   s    rU   alias_namesz_CliArg.alias_names         rV   c                    | j         S r   )rv   r   s    rU   alias_pathsz_CliArg.alias_paths   r   rV   c                    | j         d         S )Nr   r   r   s    rU   r   z_CliArg.preferred_alias   s     ##rV   c                    | j         S r   )rw   r   s    rU   is_alias_path_onlyz_CliArg.is_alias_path_only   s    ''rV   c                    | j          o9t          | j        j        t          t
          t          t          t          fd          S )NTis_strip_annotated)	r   r=   ry   r   listsetdictr   r   r   s    rU   is_append_actionz_CliArg.is_append_action   s?    '' 
,FO&sD(G(Lae-
 -
 -
 	
rV   c                J    | j          ot          | j                  o| j         S r   )r   rJ   r   r   r   s    rU   r   z_CliArg.is_parser_submodel   s(    ''_D,A,A_$J_F__rV   c                r    | j         d uo.t          | j         j        v p| j        du ot          | j         j        vS r   )ry   r4   r   rm   r3   r   s    rU   is_no_decodez_CliArg.is_no_decode   sC    d* 
00 _$-]+T_E]2]	
rV   )ry   r(   rz   r{   r|   r   rL   rM   )r   rX   rk   rj   rL   rX   )r   r   rk   rj   rL   rs   )r   r   rL   rX   )rL   r(   )rL   r   )rL   rX   )rL   r   )rL   rs   )rL   ru   )rL   rJ   )r[   r\   r]   __annotations__rq   rK   r"   rt   rv   rw   rx   rQ   classmethodr   r   r   r   ry   r   r   r   r   r   r   r   r   r   r   r   r^   r_   s   @rU   rc   rc   ]   s        JJJKKKOOOOOO8888    DF$/KOOL3333*5+b//L9999 +E 2 22222([]]K****T T T T T T4 S S S [S 	 	 	 [	
 
 
 

       _  g g g _g 
: 
: 
: _
: S S S _S    _. ! ! ! _! ! ! ! _! $ $ $ _$ ( ( ( _( 
 
 
 _

 ` ` ` _` 
 
 
 _
 
 
 
 
rV   rc   T_CliBoolFlag)bound)defaultc                      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'Zedd)            Zedd-            Zedd0            Zddd1d fd5Zedd7            Zedd8            Zdd9dd;Zdd>ZddCZddFZddHZddIZddLZddMZddPZddUZddWZeddY            Zdd^Zdd_Zej        ej        ej        ej	        ej
        efdd`ZddaZdbi dfddoZ ddqZ!ddrZ"dduZ#ddxZ$ddZ%ddZ&ddZ'dddZ(ddZ)ddZ*ddZ+ddZ,ddZ-	 	 dddZ.e/dd            Z0	 	 	 	 dddZ1 x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_typerl   cli_avoid_jsoncli_enforce_requiredcli_use_class_docs_for_groupsrI   
cli_prefixcli_flag_prefix_charcli_implicit_flags'bool | Literal['dual', 'toggle'] | Nonecli_ignore_unknown_argscli_kebab_caserj   cli_shortcuts$Mapping[str, str | list[str]] | Nonerh   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_classrL   rM   c           
     0   ||n*|j                             dt          j        d                   | _        ||n|j                             dd          | _        ||n|j                             dd          | _        |s| j        du rdnd}|| _        ||n|j                             d	d          | _        ||n|j                             d
d          | _	        |	|	n|j                             dd          | _
        |
|
n|j                             dd          | _        ||n|j                             dd          | _        | j        dz  | _        | j        rt|
                    d          s=|
                    d          s(|
                    dd                                          st%          d|
           | xj        dz  c_        ||n|j                             dd          | _        ||n|j                             dd          | _        ||n|j                             dd          | _        ||n|j                             dd           | _        ||nd}|s|t%          d          t/                                          |d| j        d| j        |           |@t3          | j
        | j        |j        d nt7          |j                  || j        dd          n|}|                     ||||||||           |dvr|du rt          j        dd          }n;t;          |t<          t>          f          st%          dtA          |                     | !                    | "                    | j#        |                     d S d S )Nr   r   r   Fr   TrM   nullr   r   rI   r    r   r   r2   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_prefixrh   )rI   progdescriptionr   prefix_charsallow_abbrevadd_help)r   r   r   r   r   r   r   r   r   rD   z<cli_parse_args must be a list or tuple of strings, received parsed_args)$model_configgetsysargvr   r   r   r   r   r   rI   r   r   _cli_flag_prefix
startswithendswithr   isidentifierr.   r   r   r   r   rP   rQ   rH   __doc__r   _connect_root_parser
isinstancer   r   r   _load_env_vars_parse_argsr   )rS   r   r   r   r   r   r   r   r   rI   r   r   r   r   r   r   rh   r   r   r   r   r   r   r   r   rT   s                            rU   rQ   zCliSettingsSource.__init__1  s   8 +6MML<U<Y<YZiknkstukv<w<w 	
 "- *../CUKK 	 -8NNl>W>[>[\lns>t>t 	 " 	S+/+>$+F+FF"4 $/ ! *../EuMM 	! -8 *)*../NPUVV 	* !, *../BDII 	
 )3(>**LD]DaDabnprDsDs $/ ! *../EsKK 	!
 !% 9A =? 	#$$S)) \Z-@-@-E-E \ZM_M_`cegMhMhMuMuMwMw \#$Zj$Z$Z[[[OOs"OO "- *../CUKK 	 '2 $#*../H%PP 	$ -8NNl>W>[>[\lns>t>t 	 +6MML<U<Y<YZiko<p<p 	 ,:+E4 	k+"9 ijjj!$#6 ) 	 	
 	
 	
& " ""&"8'$0$8$@DDf\MaFbFb /!6"     	 	!!#/ 3&?/"71+ 	" 		
 		
 		
 ..%%!$!""u>> #iSWXfSgSgii   D,<,<T=M~,^,^_____ /.rV   rr   c                    d S r   rO   r   s    rU   __call__zCliSettingsSource.__call__  s    *-#rV   rq   "list[str] | tuple[str, ...] | boolCliSettingsSource[T]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.
        NrO   )rS   rq   s     rU   r  zCliSettingsSource.__call__  s	     	rV   r   ,Namespace | SimpleNamespace | dict[str, Any]c                   dS )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.
        NrO   rS   r   s     rU   r  zCliSettingsSource.__call__  	     	rV   )rq   r   )list[str] | tuple[str, ...] | bool | None?Namespace | SimpleNamespace | dict[str, list[str] | str] | None%dict[str, Any] | CliSettingsSource[T]c                  ||t          d          |a|du r|                     i           S |du rt          j        dd          }|                     |                     | j        |                    S |(|                     t          j        |                    S t                                                      S )Nz/`args` and `parsed_args` are mutually exclusiveFr   TrD   )	r.   r  r  r  r  r   copyrP   r  )rS   rq   r   rT   s      rU   r  zCliSettingsSource.__call__  s      7 QRRRu}}**r*:::t||x|&&43C3CDDTVZ3[3[&\\\$&&49[3I3I&JJJ77##%%%rV   Mapping[str, str | None]c                    d S r   rO   r   s    rU   r  z CliSettingsSource._load_env_vars  s    :=#rV   c                   dS )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.
        NrO   r  s     rU   r  z CliSettingsSource._load_env_vars  r  rV   r   /Mapping[str, str | None] | CliSettingsSource[T]c                  |i S t          |t          t          f          rt          |          }|                     |          }| j                                        D ]^\  }}t          |t                    rD|                    d          r/d |	                                D             D ]}||vr
| j
        ||<   _d |                                D             }|rHt          |t                    t          fd|                                D                       sd|<   |                    | j                   t#          t%          t&          t          t          f         |          | j        | j        | j
                  | _        | S )Nr   c                    g | ]	}|j         
S rO   )r   r   args     rU   r   z4CliSettingsSource._load_env_vars.<locals>.<listcomp>
  s    'M'M'MS'M'M'MrV   c                V    i | ]&\  }}|                     d           s|t          u#||'S )r   )r  r)   )r   keyvals      rU   r   z4CliSettingsSource._load_env_vars.<locals>.<dictcomp>  sJ     
 
 
S<<..
 47>O3O3O 3O3O3OrV   )r%  c              3  *   K   | ]} d |v 	|V  dS )r   NrO   )r   rf   last_selected_subcommands     rU   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>  s8      wwjMeJhJhJhlvJvJvzJvJvJvJvwwrV   {})r  r   r   vars_resolve_parsed_args_parser_mapr   rX   r  r|   r   maxr   anyr   r   _cli_unknown_argsrC   r   r   rh   env_ignore_emptyenv_vars)rS   r   selected_subcommandsarg_destarg_mapr   r(  s         @rU   r  z CliSettingsSource._load_env_vars  s    IkI#?@@ 	,{++K#88EE!%!1!7!7!9!9 	O 	OHg(C(( OX->->}-M-M O'M'MGNN<L<L'M'M'M O OO&.BBB7;7NO4
 
'--//
 
 

   	='*+?S'I'I'I$wwwwK4D4D4F4Fwwwww =8<4541222&c"K00!#	
 
 rV   dict[str, list[str] | str]rp   c                   g }t          |                                          D ]\  }}t          |t                     r|                     |||          r3| j                            |i                               d           }|r |j        rd                    |          ||<   |                     ||          ||<   |	                    d          r.|,|
                    | j        |         |         j                   | j        dk    rt          |t                    r|                    dd          }| j                            |i                               d           }|ra|j        j        rU||                    |j        j        d          v r3d|v r*t%          d|                    dd           d| d	          |||<   |S )
N,r   r   r   r   FzInput should be kebab-case "z", not "")r   r   r  %_is_nested_alias_path_only_workaroundr,  r  r   join_merge_parsed_listr  r   r   r   rX   r   ry   r   r   
ValueError)rS   r   r2  rf   r&  cli_arg	snake_vals          rU   r+  z&CliSettingsSource._resolve_parsed_args#  s   *,#K$5$5$7$788 	8 	8OJ#t$$ 8==k:WZ[[  *..z2>>BB4HH w3 .1hhsmmK
+*.*A*A#z*R*RJ''$$]33 8$++D,<Z,H,M,RSSSS$--*S#2F2F-KKS11	*..z2>>BB4HH8*58 #g&<&<W=O=Z\a&b&bbbczz()mTWY\H]H])m)mgj)m)m)mnnn.7K
+##rV   rf   rX   r&  rJ   c                   | j                             |i                                           }|sdS t          t	          |                    }|j        rr|j                            d          rX||= |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,  r  r|   nextiterr   rg   r  r   r;  )rS   r   rf   r&  	known_argr#  nested_dest
nested_vals           rU   r9  z7CliSettingsSource._is_nested_alias_path_only_workaroundB  s    $((R88??AA	 	54	??##! 		cn&=&=c&B&B 		J'."-K_S0__T5L5LSR\5]5]__J k11 $Z#####K0"5GGGGG $
 4urV   parsed_listtuple[type | None, type | None]c                b   | j                             |t                    }|t          u sBt          t	          |                    r&t          d t          |          D                       s|}n>|r5t          |          dk    s|d                             d          rt          nt          }||fS )Nc              3  v   K   | ]4}|t          d           ut          |          t          t          fv0|V  5d S r   )r   r   r   r   r   s     rU   r   zACliSettingsSource._get_merge_parsed_list_types.<locals>.<genexpr>^  sU        T

**z%/@/@w/W/W /W/W/W/W rV   rD   r   [)
_cli_dict_argsr  r   r+   r   r.  r   r   r  rX   )rS   rI  rf   
merge_typeinferred_types        rU   _get_merge_parsed_list_typesz.CliSettingsSource._get_merge_parsed_list_typesY  s    (,,Z>>
$":j#9#9::   %j11      'MM$/uS5E5E5I5I[YZ^MfMfgjMkMk5IDDruM=((rV   merged_listc           	        g }d }| j                             |i           }	 t          t          t	          |                                                    j        j                  }t          t          t	          |	                    dg                                        t          u }n# t          t          f$ r d }Y nw xY wt          |          D ]\  }}	|                    |          }
|
d u p|
j         }||}n||k    rt          d          |rw|	                    dd          }		 |	                    d          r|	                    d          r
|	dd         n|	}t'          |           |rd| dn|}	nD# t(          $ r Y n8w xY w|	                    d          r|	                    d          r
|	dd         }	|                    |	           d                    |          }|rd	| d
n|S )N1zKMixing Decode and NoDecode across different AliasPath fields is not allowed\z\\r8  rD   r@  r7  rM  ])r,  r  r#   rD  rE  r|   ry   r   r   validate_pythonrX   StopIterationr$   	enumerater   r.   r   r  r  floatr<  r   r:  )rS   rR  rf   decode_listis_use_decodecli_arg_maplist_adapteris_num_type_strr   itemr=  	is_decodeunquoted_itemmerged_list_strs                 rU   _merged_list_to_strz%CliSettingsSource._merged_list_to_strj  s5   !#%)&**:r::	# +Dk6H6H6J6J1K1K,L,L,W,b c cL"4\-I-I3%-P-P(Q(Q#R#RSSWZZOO/ 	# 	# 	#"OOO	#$[11 	% 	%KE4!ooe,,G4Cw/C+CI$ ))++#$qrrr 	"||D&1126//#2F2F$g4==Y\K]K]$gD2JJcgM-(((3BU/}////DD!   D%% "$--*<*< "AbDzt$$$$((;//)6K%?%%%%OKs%   B	B+ +C C-AE==
F
	F
c                F   	 g }d}|                      ||          \  }}|D ]g}t          |t                    s nN|                                }|                    d          r1|                    d          r|dd                                         }|r|                                }|                    d          r|                     |||          }d}n|                    d          s|                    d          r|                     ||          }nO	 |                     |||          }n6# t          $ r)}||u r||}|                     |||          }Y d }~nd }~ww xY wd}||s|                     |||          }i|t          u r|d	         S |t          u r|                     ||          S i }	|D ])}
|	                    t          j        |
                     *t          j        |	          S # t           $ r}t#          d
| d|           d }~ww xY w)NFrM  rV  rD   r@  r7  rA  Tr   zParsing error encountered for z: )rQ  r  rX   stripr  r  _consume_comma_consume_object_or_array_consume_string_or_numberr<  r   rd  r   jsonloadsdumps	Exceptionr.   )rS   rI  rf   rR  is_last_consumed_a_valuerO  rP  r&  emerged_dictr`  s              rU   r;  z$CliSettingsSource._merge_parsed_list  s   *	T%'K',$(,(I(I+Wa(b(b%J" Z Z!#s++  Eiikk>>#&& ,3<<+<+< ,ad)//++C 8))++C~~c** 8"11#{D\]]3800>>#.. 	c#..2E2E 	c"&"?"?["Q"QCCc&*&D&DS+Wa&b&b#- c c c#-#>#>*+G-:
&*&D&DS+Wa&b&b	c
 480!  8" 0 Z--c;@XYYCS  "1~%t##//ZHHH.0' 9 9D&&tz$'7'78888z+... 	T 	T 	T R R Rq R RSSS	TsO   DG< D54G< 5
E(?E#G< #E((2G< G< :AG< <
H HH r`  rn  c                D    |s|                     d           |dd          S )Nz""rD   )r   )rS   r`  rR  rn  s       rU   rg  z CliSettingsSource._consume_comma  s+    ' 	%t$$$ABBxrV   c                   d}|                     d          rdnd}d}t          dt          |                    D ]}||         dk    r||dz
           dk    r| }!|r$||         dv r|dz  }4||         d	v rF|dz  }||         |k    r5|d
k    r/|                    |d |dz                       ||dz   d          c S t	          d| d          )NrD   rA  rB  rV  Fr8  rU  )rA  rM  )rB  rV  r   zMissing end delimiter ")r  ranger   r   r.   )rS   r`  rR  countclose_delimin_strconsumeds          rU   rh  z*CliSettingsSource._consume_object_or_array  s   !__S11:ccsaT++ 	0 	0HH~$$hl);t)C)C# 0h:--
h:--
>[00UaZZ&&tNhlN';<<<1////DkDDDEEErV   rO  type[Any] | Nonec                   |t           urdnt          |          }d}|t          |          k     rK||         dk    r|dk    s||dz
           dk    r| }|s||         dk    rn|dz  }|t          |          k     K|rt          d          |d |                                         }|t          t           fv rc	 t          |           n<# t          $ r/ || j        k    rd}|d	vr|                    d          sd| d}Y nw xY w|	                    |           nd
 |
                    dd          D             \  }}|                    d          rQ|                    d          s<|                    d          s'|                    d          rt          d|           |                    d          |                    d          }}|	                    t          j        ||i                     ||d          S )Nr   Fr8  rD   rU  r7  zMismatched quotesr   )truefalser   c              3     K   | ]}|V  d S r   rO   )r   kvs     rU   r   z>CliSettingsSource._consume_string_or_number.<locals>.<genexpr>  s"      >>r>>>>>>rV   =z1Dictionary key=val parameter is a quoted string: )rX   r   r.   rf  r   rZ  r<  r   r  r   splitr  rj  rl  )	rS   r`  rR  rO  rw  is_find_end_quote
val_stringr%  r&  s	            rU   ri  z+CliSettingsSource._consume_string_or_number  sM   "#--113t99!T""H~$$(a--41;MQU;U;U(9$9!$ h3)>)>MH T""  	5 3444)8)_**,,
$$$3j!!!! 3 3 3!888!'J%>>>zG\G\]`GaGa>!2Z!2!2!2J	3
 z****>>Z%5%5c1%=%=>>>HC~~c"" c3<<+<+< cS^^TWEXEX c]`]i]ijm]n]n c !aU_!a!abbbyy~~syy~~Ctz3*55666HIIs   9C	 	6DDrd   r   ry   r(   c                V   t           |j        v rd}nlt          |j        v rd}n[t          |j        v r:d}t	          |j        t                    st          | d|j         d| d          nt          |j        v rd}nd S |j
        t          urt          | 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)r8   r   r7   r;   r  r   rJ   r.   r[   r6   r   )rS   rd   rf   ry   cli_flag_names        rU   _verify_cli_flag_annotationsz.CliSettingsSource._verify_cli_flag_annotations  s    z222-MM!444-MMz222+Mj0$77 #$lllllll   Z000)MMF ,,= m mEN m mZ m m mnnn -,rV   list[tuple[str, FieldInfo]]c           	     :   g }g g g }}}t          |                                          D ]\  }}t          |j        v r|                                st          d|j         d| d          t          ||          ^}}	t          |          dk    rt          d|j         d| d          d t          |j
                  D             }
|
D ];}t          |          s*t          |          st          d|j         d| d          <|                    ||f           t          |j        v rt          ||          ^}}	t          |          dk    rt          d|j         d| d          t          |j
        t           t"          t$          t&          t(          fd	
          }|s|                    ||f           |                    ||f           |                     |||           |                    ||f           |rt          |          dk    r8d                    d |D                       }t          |j         d|           |r;d                    d ||z   D                       }t          |j         d|           ||z   |z   |z   S )Nzsubcommand argument r   z has a default valuerD   z has multiple aliasesc                4    g | ]}|t          d           u|S r   r   r   s     rU   r   z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>  s-    "q"q"qUY^fjkofpfpYpYp5YpYpYprV   z$ has type not derived from BaseModelzpositional argument Tr   rC  c                    g | ]\  }}|S rO   rO   r   r   infos      rU   r   z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>  s    (X(X(X*$(X(X(XrV   z- has multiple variadic positional arguments: c                    g | ]\  }}|S rO   rO   r  s      rU   r   z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>"  s    (j(j(j*$(j(j(jrV   z= has variadic positional arguments and subcommand arguments: )r@   r   r:   r   is_requiredr.   r[   r?   r   r   r   r&   r'   r   r9   r=   r   r   r   r   r   r  r:  )rS   rd   positional_variadic_argpositional_argssubcommand_argsoptional_argsrf   ry   r   r   r   
field_typer   field_namess                 rU   _sort_arg_fieldsz"CliSettingsSource._sort_arg_fields  s*   "$:<b"-&7&>&>&D&D&F&F 	? 	?"J
!444!--// '(pu~(p(pPZ(p(p(pqqq&6z:&N&NOK!;''!+++,u5>,u,uT^,u,u,uvvv"q"qhz?T6U6U"q"q"qK&1  
 .z : : >ST^>_>_ "/ xu~ x x
 x x x# #   &&
J'?@@@@"j&999"2:z"J"Ja{##a'''(qu~(q(qPZ(q(q(qrrr#=)D#tXw+Odh$ $ $  ( M#**J
+CDDDD+22J
3KLLLL11%ZPPP$$j*%=>>>>" 	*++a//"ii(X(X@W(X(X(XYY#u~$q$qdo$q$qrrr  "ii(j(j@WZi@i(j(j(jkk#~qqdoqq   !88?J]ZZrV   r   c                    | j         S )z#The connected root parser instance.)_root_parserr   s    rU   r   zCliSettingsSource.root_parser)  s       rV   parser_methodmethod_namerK   Callable[..., Any]c                     5 j         du r,dk    r&t           j        t                    r	 	 dd fd}|S dfd}|S S )NFr   r   rH   rq   "list[str] | tuple[str, ...] | None	namespaceNamespace | NonerL   r   c                l   g }|r&t          j        t          j        |                    ng D ]z}dj         d}t	          j        d| d|          }|r=|                    d                                          |                    d          z   }|                    |           { | ||          S )NrU  z{1,2}z^(z[^\s=]+)(.*)rD   r2   )	shlexr  r:  r   rematchgrouplowerr   )	r   rq   r  insensitive_argsr#  flag_prefixmatchedr  rS   s	          rU   parse_args_insensitive_methodzOCliSettingsSource._connect_parser_method.<locals>.parse_args_insensitive_method8  s    
 $& <@H5;uz$'7'7888b 1 1C"It'@"I"I"IK h'F['F'F'FLLG J%mmA..4466q9I9II$++C0000$}[2BINNNrV   rK   c                 *    t          d d          )Nz0cannot connect CLI settings source root parser: z. is set to `None` but is needed for connectingr-   )rq   rK   r  s     rU   none_parser_methodzDCliSettingsSource._connect_parser_method.<locals>.none_parser_methodJ  s/    # C{  C  C  C  rV   )NN)r   rH   rq   r  r  r  rL   r   )rq   r   rK   r   rL   r   )rh   r  r  rH   )rS   r  r  rq   rK   r  r  s   ```    rU   _connect_parser_methodz(CliSettingsSource._connect_parser_method.  s     %#u,,2224,.CDD 3 <@.2O O O O O O O O 10"     
 &% ! rV   c                @    |                      |d          dfd}|S )Nr   re   r   rK   rL   c                                        d          s                     d            | fi S fddD             }|dxx         dz  cc<    | fi |}t          |d          st          d           |j        d	i S )
N _is_cli_mutually_exclusive_grouprequiredc                D    i | ]}|v |                     |          S rO   )pop)r   r#  rK   s     rU   r   zUCliSettingsSource._connect_group_method.<locals>.add_group_method.<locals>.<dictcomp>\  s1    $o$o$ocadhnananS&**S//anananrV   )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 connectingrO   )r  hasattrr.   r  )re   rK   main_group_kwargsr  add_argument_groups    `  rU   add_group_methodzACliSettingsSource._connect_group_method.<locals>.add_group_methodW  s    ::@AA D

:&&&))&;;F;;;$o$o$o$oE]$o$o$o!!'***.EE*****6GG5FGGu&DEE 'l   :u9CCFCCCrV   )re   r   rK   r   rL   r   )r  )rS   r   r  r  s      @rU   _connect_group_methodz'CliSettingsSource._connect_group_methodT  sG    !889RTopp	D 	D 	D 	D 	D 	D  rV   c	           
         i  _         d fd}	| _        | j        r|	nt          j        }                     |d           _                             |d           _                             |           _	                             |d	           _
                             |d
           _                             |d           _        | _        i  _        t          t                      _                                                                j         j        g  j         j        d g t.                     d S )Nrq   r   rK   rL   r   c                 ~    t          j        | i |\  } }j        D ]}|j        |<   t          t          |           S r   )r   parse_known_argsr/  r   r   )rq   rK   unknown_argsr   rS   s       rU   _parse_known_argszACliSettingsSource._connect_root_parser.<locals>._parse_known_argsu  sO    !/!@$!Q&!Q!QD,. < </;&t,,	4(((rV   r   r   r   r   r   re   rd   
added_argsrg   subcommand_prefixr  alias_prefixesmodel_default)rq   r   rK   r   rL   r   )r/  r  r   r   
parse_argsr  r  _add_argumentr  
_add_group_add_parser_add_subparsers_format_help_formatter_classrN  r
   r   r,  _add_default_help_add_parser_argsr   r   r   r)   )
rS   r   r   r   r   r   r   r   r   r  s
   `         rU   r
  z&CliSettingsSource._connect_root_parserh  so    8:	) 	) 	) 	) 	) 	) ($595Q p 1 1WeWp667HJ]^^!889LNcdd445NOO667HJ]^^#::;PRijj 778JL`aa /;=lwm
 m
 	   ##"o+ 	 		
 		
 		
 		
 		
rV   c                n   t          | j        t                    r| j        sLt	          | j                                                  D ]%\  }}t          ||| j                  ^}}d|v r d S &| 	                    | j
        | j        d d          d| j        d d          ddt          d           d S d S )N)rh   helprD   hr2   zshow this help message and exit)actionr   r  )r  r  rH   r   r@   r   r   r?   rh   r  r   r  r   )rS   rf   ry   r   r   s        rU   r  z#CliSettingsSource._add_default_help  s    d')>?? 	? .?@Q.R.R.X.X.Z.Z  *J
&6z:^b^q&r&r&rOK!,, -  (!,///(!,222 6      	 	rV   Fre   r  rg   r  r  r  r  is_model_suppresseddiscriminator_valsdict[str, set[Any]]is_last_discriminatorr   c                	   d }i }t          t          |                    st          t          |                    rt          t          |                    sd n|}|                               D ]a\  }}t          ||| j        ||| j        | j        | j	        | j
                            d          | j                  }|                    |j                   |j        r|j        D ]}|                    |          }| j        |j                 |         }|g|_        d|j        d<   | j        |j        d<   |j        d nt-          |j                  |j        d<   t/          |j                  dk    rd n|j        |j        d<   | j        r%|j        d nt-          |j                  |j        d<   |;|                     |d	| d
t/          |j                  dk    r|j        nd           n|}t7          |d          r'|j        r|j        d d          d| dnd| d|_         | j        |g|j        R i |j        |_        |                     |j        |g |j          d| |j!         dd g tD                     | j#        |j         |j        d<   tH          |j        d<   | %                    ||||	          |j        d<   | &                    |j'                  |j        d<   | j(        o|)                                o|tD          u |j        d<   | *                    |||||
|          }|r|j        d         |v r| +                    |j        ||j,                   tZ          |j.        v r%| /                    |j        ||j!        |          \  }| 0                    |j        ||           fd|j        D             }|j1        rGte          |j'        dd          s1|r/| 3                    |||||||j        |||j4        ||	           tj          |j.        v rg | j6        |j        d         <   |j7        stq          |tr                    r | j:        |fi |}||n|}|j                            d          dk    rdz  fd|D             |_         | j;        |g|j        R i |j         |ty          |          z  }c| =                    ||||||           |S )Nrm   )re   ry   rz   rd   rf   rg   rh   ri   rk   rm   ro   Fr   r   r   rD   r  subcommandsr   )r  r   r   metavarr@  r7  rB  rA  r   r  r   r   r  c                    g | ]}|u|	S rO   rO   )r   mrd   s     rU   r   z6CliSettingsSource._add_parser_args.<locals>.<listcomp>  s    +X+X+X!RWArV   __pydantic_root_model__)r  r  r  store_falseno-c                V    g | ]%}d t          |          dk    rdnd           | &S r   )r   r   r   r  s     rU   r   z6CliSettingsSource._add_parser_args.<locals>.<listcomp>6  sC    nnn\`;/Nc$ii1nn$/N#O WQU W WnnnrV   )>r&   r   r'   
issubclassr  rc   r,  rh   r   r   configr  ro   r   r   r   r   r   rq   rK   r  r	  r   r   r   r   r  r  r  r  re   r  r   r   r)   r  CLI_SUPPRESS_help_format_metavar_formatr   r   r  _get_arg_names_convert_append_actionr   r9   r   _convert_positional_arg_convert_bool_flagr   getattr_add_parser_submodelsr   r<   r/  r   r  r   r  r  r   _add_parser_alias_paths)rS   re   rd   r  rg   r  r  r  r  r  r  r  
subparsersr~   rf   ry   r#  r   r   subcommand_arg	arg_namesnon_recursive_sub_modelscontextr  s     `                    @rU   r  z"CliSettingsSource._add_parser_args  s'    
13
  ] 3 3448MdS`NaNa8b8b #4#6#6>>DD
  	 '+&;&;E&B&B y	2 y	2"J
%+%%#2#6. $0A B B#2  C ""3?333" i2!$ ) )I'*';';I'F'F$%)%5c6I%JK[%\N+;*<N'<AN).9?C?TN)*;< ) 1 9viFW?X?X #)-8 =@<O<ORS<S<SDDYcYoN)&19 y@I@Q@Y_efofw_x_x-f5 &- ,,""/$.!;!;!;BEcnBUBUXYBYBY
(>(>_c	 -    (  z955   *1;z1#2#6MM9IMMMM!:&6!:!:!: #* -=D,<Z,w.J],w,w,waoav,w,wN)))-4'#%&)h>>>->*V@S*V*V*V"')&7 * 	 	 	 	A)V $(#8%(X
6"(4
9%%)%6%6z:}^q%r%r
6"(,(<(<Z=R(S(S
9%-q*2H2H2J2Jq}`qOq 
:& !//%"&) 	 ! SZ%7:%E%E++CJ
CDXYYY$
(;;;-1-I-I
J0C]. .*I{ ''
JNNN+X+X+X+Xs~+X+X+X(*2#J$9;TV[\\2 12
 ..0"")#!
""&3,? /      %
(;;;ACD*3:f+=>>/ 2!%.. A / @ @% @ @(-ff5Gz~~h//=@@#u,nnnndmnnnCH&D&wHHHHSZHHH$y//1J$$V_j*VginooorV   r   c                    |r?d|d<   t          |j        t          t          fd          r|j        | j        |d         <   d S d S d S )Nr   r  Tr   r   )r=   r   r   r   rN  )rS   rK   ry   r   s       rU   r  z(CliSettingsSource._convert_append_action=  sg     	L'F8)**?$eijjj L6@6K#F6N333	L 	LL LrV   c                v   |d         dk    rd |j         D             }|s| j        rt          g}|r|                                }|t          u r3| j        dk    r!t	          |j        t                    rt          nt          }|t          u r|d= t          |d<   d S |t          u r|d= |j        rdnd|d<   d S d S d S d S )Nr  rJ   c                v    g | ]6}t          |t                    t          |t          t          z            4|7S rO   )r  r   r  r8   r7   )r   metas     rU   r   z8CliSettingsSource._convert_bool_flag.<locals>.<listcomp>E  sS       dD)) /9?ORb?b.c.c  rV   toggler  r  
store_true)
r   r   r8   r  r  r   rJ   r;   r6   r   )rS   rK   ry   r  meta_bool_flags	bool_flags         rU   r  z$CliSettingsSource._convert_bool_flagC  s   )&& &/  O
 # 5t'> 5#3"4 ]+//11	 000  2h>>:jN`bfCgCg> ') 
 ,,y)'<F8$$$.00y)8B8J'\}}P\F8$$$+ '&] ] 10rV   r   tuple[list[str], str]c                >   d}|d         g}t           |d<   t                              |                                | j                  |d<   |                                o|t           u }|                    d          dk    r|d= |rdnd|d	<   n|sd
|d	<   |d= |d= ||fS )Nr   r   r   r  r  r   +*nargs?r  )r)   rc   r   upperr   r  r  )rS   rK   ry   r   r  r  r  r  s           rU   r  z)CliSettingsSource._convert_positional_arg[  s     F^$	-y#22?3H3H3J3JDL_``y !,,..U=DU3U::h8++x %09cccF7OO 	"!F7O6N:+%%rV   r#  rc   c           	     T   g }|j         g|z   D ]o}|j        D ]e}	t                              || j        k    r| |	 n|                    |dd           |	 | j                  }
|
vr|                    |
           fp| j        r^| j        	                                D ]D\  }}||v r;t          |t                    r|gn|}|                    fd|D                        Et                      }|                    |j                  }|t!          |j        j        t&          fd|           |                    t+          j        d |D                                  |sg S |                     t&          t1          t3          |                                       |j        d<   |S )Nr   rD   c              3  $   K   | ]
}|v|V  d S r   rO   )r   aliasr  s     rU   r   z3CliSettingsSource._get_arg_names.<locals>.<genexpr>  s.      $^$^ueS]F]F]UF]F]F]F]$^$^rV   T)r   collectc              3  4   K   | ]}t          |          V  d S r   )r   )r   tags     rU   r   z3CliSettingsSource._get_arg_names.<locals>.<genexpr>  s(      5T5Thsmm5T5T5T5T5T5TrV   r  )rg   r   rc   r   r   r   r   r   r   r   r  rX   extendr   r  r   r=   ry   r   r   r   r   from_iterabler  r   sortedrK   )rS   r#  r  r  r  r  r  r  prefixr   arg_nametargetaliases
alias_listtagsdiscriminatorss       `           rU   r  z CliSettingsSource._get_arg_namesp  s     "	~&7 		/ 		/F / /"11(DO;; %t%%%"NN+<b!DDLdLL'	  :--$$X.../  	_#'#5#;#;#=#= _ _Y&&.8#.F.F!S'GJ$$$^$^$^$^
$^$^$^^^^+//99%&)
"&	    !!%"55T5Tt5T5T5T"T"TUUU( 	$($8$8vnG]G]A^A^9_$`$`CJy!rV   r   r   r  r  r   rs   c                $   t          |t                    rt          d          i }|d          d|d<   |j        |d<   |	d         |d<   t	          d |D                       |d<   |d         r"t          |          d	k    rt          d
          | j        r?t          |          d	k    r,|d         j        d nt          |d         j                  |d<   |t          urIt          t          |                    st          t          |                    rt          ||
          }n$|j        t          ur|j        }n|j        |j        }|6d| j         d}|d         t          | d|d                    |d<   n||d<   |d         }|                     |          p|}|r
t$          |d<   |                    |d                    d|	d<   d|	d<   d|	d<   |s| j        rt$          nd|d          d|	d<    | j        |fi |} | j        |gfd|D             R i |	 |j        r | d|j         t1                      ini }|D ]C}|                     ||| | d||fd|d	d          D             |||||d         u            Dd S )Nz8cannot have nested models in a CliMutuallyExclusiveGroupr   z optionsr  r   r  c              3  @   K   | ]}t          |t                    V  d S r   )r  ra   )r   rd   s     rU   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>  sF       E
 E
=BJu788E
 E
 E
 E
 E
 E
rV   r  rD   z/cannot use union with CliMutuallyExclusiveGroupz	default: z (undefined)
Fr  r  r)  constzset z from JSON string (default: {})r  c              3  $   K   | ]
} | V  d S r   rO   r  s     rU   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>  s.      )W)WT[*@$*@*@)W)W)W)W)W)WrV   r   c                    g | ]	} | d 
S )r   rO   )r   r   rg   s     rU   r   z;CliSettingsSource._add_parser_submodels.<locals>.<listcomp>  s'    SSS4: 6t 6 6 6SSSrV   r@  )re   rd   r  rg   r  r  r  r  r  r  r  )r  ra   r.   r   r.  r   r   r	  r   r)   r&   r   r'   r  r   default_factoryr   _is_field_suppressedr  r   r   r  r  discriminatorr   r  )rS   re   rd   r   r  rg   r  r  r  rK   rf   ry   r   r  r  model_group_kwargsdesc_headerr   model_groupr  s        ` `            rU   r  z'CliSettingsSource._add_parser_submodels  s   " e677 	\
   Z[[[-/)21&?&?&?7#,6,B=))/
);:&AD E
 E
FPE
 E
 E
 B
 B
=> @A 	Sc*ooXYFYFY QRRR- 	y#j//Q2F2F8B18M8U[ablmnbobw[x[x}- 111d=1122 C6KDQ^L_L_6`6` C 'z B B!)::: * 2+7 * : Kd&=KKKK!-0<4:k;p;pM_`mMn;p;p4q4q"=114?"=1%a."77
CCZGZ 	=0<}-)A,'''"zww #H&*&9HLLG	!GGG 	v
 &dofCC0BCC;b)W)W)W)WY)W)W)Wbbb[abbbT^Tlt
HOHHj.FHH#%%PPrt 	   	 	E!!%(</<<<"3!SSSS;qrr?SSS+$7#5&+z"~&= "    	 	rV   r~   ru   c                   |r|}|%t          |t                    r | j        |fi |n|}|                                D ]\  }}	|| j        k    r| | n|                    |dd           | }
i }t          |d<   d|d<   d|d<   d|d	<   |	d
|d	<   t          | j        |
<   | j         |
 g}| j	        |
                                         D ]\  }}||c|_
        |_         | j        |g|R i | |                    |
           d S d S )Nr   rD   r   zpydantic alias pathr  r   r  r   r  r   )r  r   r  r   r   r   r  rN  r  r,  rq   rK   r  r   )rS   re   r~   r  rg   r  r  r  r   r   r
  rK   rq   r%  r#  s                  rU   r  z)CliSettingsSource._add_parser_alias_paths  s     	,G >HPT>U>U`/$/&::E:::[`.4466 , ,e )DO;; ")4)))&../@"aHHP$PP 
 *,$0y!!6v#+x $*y!=(.F9%48D'10<(<<= $ 0 : @ @ B B 8 8HC+/(CHcjj""7<T<<<V<<<!!(++++-	, 	,, ,rV   objc                z    | j         st          |          S t          d t          |          D                       S )Nc                4    g | ]}|t          d           u|S r   r   r   s     rU   r   z8CliSettingsSource._get_modified_args.<locals>.<listcomp>  s)    VVVEe4PT::>U>U%>U>U>UrV   )r   r   r   rS   r  s     rU   _get_modified_argsz$CliSettingsSource._get_modified_args  s=    & 	XC== VVXc]]VVVWWWrV   obj_qualnamec                   d|v rK|d |                     d          dz            d ||                     d          dz   d          D             z   }d                    |          }|r| d| dS t          |          dk    r|nd| dS )	NJSONrD   c                    g | ]
}|d k    |S )r$  rO   r"  s     rU   r   z=CliSettingsSource._metavar_format_choices.<locals>.<listcomp>  s$    4t4t4tSfimsfsfsSfsfsfsrV   r7  rM  rV  rA  rB  )r   r:  r   )rS   rq   r"  r  s       rU   _metavar_format_choicesz)CliSettingsSource._metavar_format_choices  s    T>>0$**V,,q0014t4tDTZI[I[^_I_IaIaDb4t4t4ttD((4.. 	C"//W////!$ii1nn772Bw2B2B2BBrV   c           
     D    t          |          }t          |          rd|j        v r|j        n|j        S |du rdS t	          |t
                    rt          |          S t	          |t          j                  st          j
        |          rt          |          S t	          |t          t          t          f          s|j        }t!          |          }t#          |          rH                     t'          t)           j                             |                                        S t          j        |          rH                     t'          t)          t                               |                                        S t1          |t2                    r8                      fd|j                                        D                       S t	          |t                    rn                     t'          t)           j                             |                              t9          |d          r|j        nt          |                    S |t          d          u r j        S t=          |          st?          |          r@tA          |dd	          r-                     tC          |          d
         j"                  n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                X    g | ]&}t                               |j        d k              'S )r   )rc   r   r   )r   r   rS   s     rU   r   z=CliSettingsSource._metavar_format_recurse.<locals>.<listcomp>6  s2    oooPT''d.AU.JKKooorV   r]   )r"  Nr  Frootr$  ztyping.r   ztyping_extensions.)$rB   rA   r]   r[   r  r%   reprtyping
ForwardRefr*   is_typealiastyperX   r0   r1   r   rT   r   r+   r&  r   map_metavar_format_recurser!  
is_literalr/   r   r   r   r  r   r&   r'   r  r@   r   r   )rS   r  origins   `  rU   r/  z)CliSettingsSource._metavar_format_recurse  s   s## 	#-1A#A#A3<<sGWWCZZ5^,, 	99V.// 	>3RSV3W3W 	s88O#ndCDD 	 -CC6"" 	V//S9UW[WnWnorWsWs5t5t0u0uvvv&v.. 	V//Sd>U>UVY>Z>Z5[5[0\0\]]] d++ 	V//ooooX[XgXlXlXnXnooo   ^,, 	V//S5t7N7Ns7S7STTUU18n1M1M[S--SVWZS[S[ 0    DJJ**C   		V$9#$>$> 		V 3 95AA,,->s-C-CF-K-VWWW
 T"" 	V##99$$Y33;;<PRTUUUrV   c                T    |                      |                              dd          S )NrC  r7  )r/  r   r   s     rU   r  z!CliSettingsSource._metavar_formatJ  s&    ++C0088sCCCrV   c                r   |j         r|j         nd}|s|                     |          rt          S |                                r2|t          d fv r't
          |j        vr|dnd}||rd| dnd| dz  }nd| j         d}t          t          |                    st          t          |                    rdt          ||           d}n|t          d fvr)t          |          rd|                     |           d}n_|j        t          d fvr*t          |j        |j                  }d||j        n| d}n%|j        d|                     |j                   d}t$          |j        vr||rd	| n|z  }t'          t          | j                  t*                    r|                    d
d          n|S )Nr   zifdef: z (z	required)(z
(default: )z(default factory:  %z%%)r   r  r  r  r)   r9   r   r   r&   r   r'   r  rA   r  r   r>   r   r  r;   r  r  r   r   )	rS   rf   ry   r  r  _helpifdefr   	enum_names	            rU   r  zCliSettingsSource._help_formatM  s    +5*@H
&&b 	 $";";J"G"G 	 !!## 	=:KT9R(R(R 
(;;;%2%:		%Q.e....=Q=Q=Q=QQ=4#:===Gd=1122 c6KDQ^L_L_6`6` cLw}j'I'ILLL'8$&???LQ^D_D_?Ut/C/CM/R/RUUU#,=t+DDD89NPZPbcc	`Y=Nz'9'9T]```+7bt/C/CJD^/_/_bbbZ%888%<WW<+5d4;L6M6M~+^+^iu}}S$'''diirV   c                T    |j         r|j         nd}|t          k    pt          |j        v S )Nr   )r   r  r   )rS   ry   r8  s      rU   r  z&CliSettingsSource._is_field_suppressedh  s/    *4*@H
&&b$K
8K(KKrV   r
  valuealias_path_only_defaultslist[Any] | dict[str, Any]c           	     R   d |j         |j        fD             d         }|j        dd         }|s|                    |g            ||         }ns|                    |i            ||         }|d d         D ] }	|                    |	i            ||	         }!|                    |d         g            ||d                  }t	          t
          |j        d                   }
|                    dgt          |
dz   t          |          z
  d          z             |||
<   ||         S )Nc                    g | ]U}t          |t          t          f          t          |t                    r|nt          t          |j        d                    VS )r   )r  r   r   r   choices)r   r  s     rU   r   zECliSettingsSource._update_alias_path_only_default.<locals>.<listcomp>o  sb     !
 !
 !
%)\!:;;!
y11XEEtIu}UVGW7X7X!
 !
 !
rV   r   rD   r@  r   )	r  r   path
setdefaultr   rn   r  r-  r   )rS   r
  r<  ry   r=  
alias_pathalias_nested_pathsalias_defaultcurrent_pathnested_pathalias_path_indexs              rU   _update_alias_path_only_defaultz1CliSettingsSource._update_alias_path_only_defaultl  s_   !
 !
$*J,GH!
 !
 !
 	!
 )3"(=! 	A$//"===4X>MM$//"===3H=L1#2#6 9 9''R888+K8##$6r$:B???();B)?@MZ_R%899bTC(81(<s=?Q?Q(QST$U$UUVVV*/&''11rV   rj   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                   |g}t          |t                    rt          |t                    r^|dk    r3d                    d t	          j        |          D                       g}np|dk    rd t	          j        |          D             }nKt          |t                    r6|dk    r0d t	          j        |                                          D             }|S )Nlazyr7  c              3     K   | ]}| V  d S r   rO   r   vs     rU   r   z9CliSettingsSource._coerce_value_styles.<locals>.<genexpr>  s$      &I&I!!v&I&I&I&I&I&IrV   argparsec                    g | ]}| S rO   rO   rT  s     rU   r   z:CliSettingsSource._coerce_value_styles.<locals>.<listcomp>  s    @@@f@@@rV   envc                "    g | ]\  }}| d | S )r~  rO   )r   krU  s      rU   r   z:CliSettingsSource._coerce_value_styles.<locals>.<listcomp>  s&    OOOTQjjQjjOOOrV   )r  rX   r   r:  rj  rk  r   r   )rS   r  r<  rL  rN  r|   s         rU   _coerce_value_stylesz&CliSettingsSource._coerce_value_styles  s     eS!! 	P-.. P''!hh&I&Itz%7H7H&I&I&IIIJFF:--@@dj.?.?@@@FM400 P&&OOTZ5F5F5L5L5N5NOOOFrV   serialized_argsdict[str, list[str]]positionals_firstc                \    |s| d         | d         z   n| d         | d         z   | d         z   S )Noptional
positional
subcommandrO   )r\  r^  s     rU   _flatten_serialized_argsz*CliSettingsSource._flatten_serialized_args  sE     %MOJ'/,*GGG .1LLL)	* 	*rV   r5   _is_submodelc                   i }g }g }g }	t          |rt          |          n| j                                                  D ]\  }
}t	          ||
          }|j        |k    r"t          |j        v r|3t          t          | j
        |                                                             }|j        ri|	                    |                    t          |                               |                     ||||d          }|	|                     ||          z  }	t#          t          |                    st%          t          |                    r=|                     ||||d          }||d         z  }||d         z  }|	|d         z  }	Qt'          j        d|j                  }|r|                                nd\  }}t/          |t0          t2          t4          f          rt7          j        |          nt;          |          }|j        r|                     ||||          }t@          |j        v ryt/          |t2                    r|n|gD ]\}t/          |t0          t2          t4          f          rt7          j        |          nt;          |          }|                    |           ]q|j!        "                    d          tF          k    r|d	u r|d
k    r|dz  }| $                    ||||          D ]T}|                    | |            |j!        "                    d          tF          ddfvr|                    |           Ud |D             d |D             |	dS )NT)rL  rN  r^  rd  r`  ra  rb  z(-*)(.+))r   r   r  Fz--r  )rL  rN  r  r  c                d    g | ]-}t          |t                    st          j        |          n|.S rO   r  rX   rj  rl  r   r<  s     rU   r   z6CliSettingsSource._serialized_args.<locals>.<listcomp>  s7    oooX]*UC2H2HSE***eooorV   c                d    g | ]-}t          |t                    st          j        |          n|.S rO   rg  rh  s     rU   r   z6CliSettingsSource._serialized_args.<locals>.<listcomp>  s8    sssZ_Juc4J4JU4:e,,,PUsssrV   )r`  ra  rb  )%r@   r   r   r   r  r   r:   r   rD  rE  r,  r|   r   r   r   _serialized_argsrc  r&   r'   r  r  r   groupsr  r   r   r   rj  rl  rX   r   rJ  r9   rK   r  r   r[  )rS   rd   rL  rN  r^  rd  r=  r  r  r  rf   ry   r  r#  sub_argsr  
flag_charsr
  r<  s                      rU   rj  z"CliSettingsSource._serialized_args  s    46 @BBD%'&7|8jUY]Yj&k&k&q&q&s&s :	0 :	0"J
#E:66M!]22!4449NtD,Z8??AABBCCC" 
&&s';';D<O<O'P'PQQQ00!))&7!% 1    4#@#@K\#]#]]d=1122 6KDQ^L_L_6`6` 00!))&7!% 1   *!558L#998L#99h{C,BCCG7>#L7>>#3#3#3H J-7dTWGX-Y-Yq
=)))_bcp_q_q  % t <<XujZrss J$777.8.M.Mb]]TaSb 2 2E1;ED$PSCT1U1UeDJu---[^_d[e[eE#**51111 z~~h''+@@@]V[E[E[`jnr`r`re#
22=%T^ku2vv 0 0$$
%>H%>%>??? :>>(++4I<Yf3ggg!((///0 poanooosscrsss)
 
 	
rV   )2r   r   r   r   r   r   r   r   r   rl   r   rl   r   rl   r   rl   rI   rl   r   r   r   r   r   r   r   rl   r   rj   r   r   rh   rl   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   rM   )rL   rr   )rq   r  rL   r  )r   r  rL   r  )rq   r  r   r  rL   r  )rL   r  )r   r  rL   r  )r   r5  rL   rp   )r   r5  rf   rX   r&  rp   rL   rJ   )rI  rp   rf   rX   rL   rJ  )rR  rp   rf   rX   rL   rX   )rI  rp   rf   rX   rL   rX   )r`  rX   rR  rp   rn  rJ   rL   rX   )r`  rX   rR  rp   rL   rX   )r`  rX   rR  rp   rO  rx  rL   rX   )rd   r   rf   rX   ry   r(   rL   rM   )rd   r   rL   r  )rL   r   )
r  r   r  rX   rq   r   rK   r   rL   r  )r   r   rL   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   rM   )rL   rM   )re   r   rd   r   r  rp   rg   rX   r  rX   r  r   r  rp   r  r   r  rJ   r  r  r  rJ   rL   r   )rK   rr   ry   r(   r   rJ   rL   rM   )rK   rr   ry   r(   r  r   rL   rM   )
rK   rr   ry   r(   r   rX   r  r   rL   r  )r#  rc   r  rX   r  rp   r  rp   r  r  r  rJ   rL   rp   )re   r   rd   r   r   r   r  rp   rg   rX   r  rX   r  rX   r  rp   rK   rr   rf   rX   ry   r(   r   rs   r  r   r  rJ   rL   rM   )re   r   r~   ru   r  rp   rg   rX   r  rX   r  r   rL   rM   )r  r   rL   rs   r   )rq   rp   r"  r   rL   rX   )r  r   rL   rX   )
rf   rX   ry   r(   r  r   r  rJ   rL   rX   )ry   r(   rL   rJ   )
r
  rX   r<  r   ry   r(   r=  rr   rL   r>  )rj  rj  )
r  r   r<  rK  rL  rM  rN  rO  rL   rP  )r\  r]  r^  rJ   rL   rp   )rj  rj  FF)rd   r5   rL  rM  rN  rO  r^  rJ   rd  rJ   rL   r]  )3r[   r\   r]   r	  r   add_argumentr  r	   
add_parseradd_subparsersformat_helpr   rQ   r   r  r  r+  r9  rQ  rd  r;  rg  rh  ri  r  r  propertyr   r  r  r
  r  r  r  r  r  r  r  r  r!  r&  r/  r  r  r  rJ  r[  staticmethodrc  rj  r^   r_   s   @rU   r   r      s       0 0j %)DH)-*.&*,059)-!%+/FJ/3CG>B&*7;9G9T?M?`7H7S;I;X8F8R:3@` @` @` @` @` @` @`D --- X-   X    X& ;?W[	& & & & & & & && === X=   X" ae# # # # # #J$ $ $ $>   .) ) ) )"L L L L<+T +T +T +TZ   
F F F F$   :o o o o&+[ +[ +[ +[Z ! ! ! X!$! $! $! $!L       0 :H9T?M?`7H7S;I;X8F8R:+
 +
 +
 +
 +
Z   6 %*24&*U U U U UnL L L L] ] ] ]0& & & &*) ) ) )VR R R Rh, , , ,BX X X XC C C C C)V )V )V )VVD D D Dj j j j6L L L L2 2 2 2@ ;A-3    & * * * \* ;A-3"'"L
 L
 L
 L
 L
 L
 L
 L
 L
rV   r   )or	  
__future__r   _annotationsr  rj  r  r  r  r+  rV  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#   r$   pydantic._internal._reprr%   pydantic._internal._utilsr&   pydantic.dataclassesr'   pydantic.fieldsr(   pydantic_corer)   typing_inspectionr*   typing_inspection.introspectionr+   
exceptionsr.   utilsr/   r0   r1   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rX  rE   pydantic_settings.mainrF   rH   ra   rc   r   CliSubCommandCliPositionalArgrJ   r   r  r  r  r  r  CliSuppressr   rX   CliUnknownArgsr   rO   rV   rU   <module>r     s    - - 2 2 2 2 2 2   				  



                 $ # # # # # 7 7 7 7 7 7 7 7 7 7       % % % % % %             ! ! ! ! ! !                          j i i i i i i i i i i i i i i i i i 3 3 3 3 3 3 4 4 4 4 4 4 6 6 6 6 6 6 % % % % % % + + + + + + , , , , , , ; ; ; ; ; ; ' ' ' ' ' ' F F F F F F F F F F                                         # " " " " " 4333333    N   	 	 	 	 		 	 	 	Q
 Q
 Q
 Q
 Q
i Q
 Q
 Q
h GCLL!d(N23Q 112 w~T222L*::;L*::;,67l23<(49eeB&7&7&7(RSt
 t
 t
 t
 t
)71: t
 t
 t
 t
 t
rV   