
    ~<i:                       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	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mZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( ddl)Z)ddl*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 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@mAZAmBZB ddlmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJ ddl@mKZKmLZLmMZMmNZNmOZOmPZPmQZQ ddlRmSZS erddlTmUZU  G d de      ZV G d d e-      ZW G d! d"e-      ZX e$d#      ZYeeYdz  eIf   ZZeeYeHf   Z[ e$d$e\%      Z]ee]eGf   Z^ee]eFf   Z_e
Z`eeYe`f   Zaeebec    e.g &      eJeDf   Zd G d' d(eSe!eY         Zey))z'Command-line interface settings source.    )annotationsN)SUPPRESSArgumentParserBooleanOptionalAction	NamespaceRawDescriptionHelpFormatter_SubParsersAction)defaultdict)CallableMappingSequence)Enum)cached_property)dedent)SimpleNamespace)TYPE_CHECKING	AnnotatedAnyGenericLiteralNoReturnTypeVarcastget_args
get_originoverload)AliasChoices	AliasPath	BaseModelFieldPrivateAttr)Representation)is_model_class)is_pydantic_dataclass)	FieldInfo)PydanticUndefined)typing_objects)is_union_origin   SettingsError)_lenient_issubclass_WithArgsTypes   )ForceDecodeNoDecodePydanticModel_CliExplicitFlag_CliImplicitFlag_CliPositionalArg_CliSubCommand_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 )_CliInternalArgParserc                2    t        |   di | || _        y )N )super__init___cli_exit_on_error)selfcli_exit_on_errorkwargs	__class__s      l/home/www/utuvibe.miabetepe.com/venv/lib/python3.12/site-packages/pydantic_settings/sources/providers/cli.pyrF   z_CliInternalArgParser.__init__L   s    "6""3    c                X    | j                   st        d|       t        |   |       y )Nzerror parsing CLI: )rG   r+   rE   error)rH   messagerK   s     rL   rO   z_CliInternalArgParser.errorP   s+    &&"5gY ?@@grM   )T)rI   boolrJ   r   returnNone)rP   strrR   r   )__name__
__module____qualname__rF   rO   __classcell__rK   s   @rL   rB   rB   K   s    4 rM   rB   c                      e Zd Zy)CliMutuallyExclusiveGroupN)rU   rV   rW   rD   rM   rL   r[   r[   V   s    rM   r[   c                      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<   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d0d        Zed1d!       Zed2d"       Zed2d#       Zed3d$       Zed4d%       Zed5d&       Zed2d'       Zed6d(       Zed6d)       Zed6d*       Zed6d+       Z xZS )7_CliArgr   modelrT   
field_name
arg_prefixrQ   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]rJ   rD   tuple[str, ...]_alias_namesdict[str, int | None]_alias_pathsF_is_alias_path_onlyr%   _field_infoc                B   t        
|   di | || _        t        | j                  | j
                  | j                  | j                        \  | _        | _	        | j                  j                         D ci c]  \  }}| j                   | | }}}| j                  rj| j                  D ]Z  }| j                  |      }| j                  g i d      || j                     |<   || j                     |   || j
                     |<   \ nB| j                   |vr4| || j                      d <   || j                      d    || j
                     d <   |j                         D ]8  \  }	}| j                  g i d      ||	   |<   ||	   |   || j
                     |<   : y c c}}w )N)alias_path_argsra   )rj   rJ   )updaterD   )rE   rF   rq   r9   r_   
field_inforo   ra   rm   rp   itemsr`   subcommand_dest
sub_modelssubcommand_alias
model_copydest)rH   ru   
parser_mapvaluesnameindexalias_path_dests	sub_modelry   alias_path_destrK   s             rL   rF   z_CliArg.__init__k   s    	"6"%6FOOT__d>O>O`d`s`s7
343 RVQbQbQhQhQjk+$t/v6=kk!__ s	#'#8#8#C EI__egsu\v_Ew
4//01AB@J4K_K_@`aq@r
4??+,<=s YY..*.Jtyy!$'0:4990Ed0KJt'-&6&<&<&> 	T"OU15QS_aHb1cJ'.1;O1LU1SJt'.	T ls   9Fc                2    |dvr|j                  dd      S |S )NNF_-)replace)clsr~   rd   s      rL   get_kebab_casez_CliArg.get_kebab_case   s    )3=)Ht||C%RdRrM   c                     d}t        |      }t        |      D ]  }| j                  |      z  } |r(t        |t              r|t         fd|D              z  }|S )NrD   c              3  \   K   | ]#  }j                  |j                  d k(         % yw)allN)r   r~   ).0valr   rd   s     rL   	<genexpr>z)_CliArg.get_enum_names.<locals>.<genexpr>   s(     hVY 2 2388Z5=P Qhs   ),)r<   r   get_enum_namesr,   r   tuple)r   
annotationrd   
enum_namestype_s   ` `  rL   r   z_CliArg.get_enum_names   sj     ')
%j1
j) 	@E#,,UJ??J	@-j$?%h]ghhhJrM   c                    | j                  t        | j                        dkD  r|j                  | j
                        S | j                  | j
                        S )Nr>   )r   lenrx   rU   preferred_aliasrd   )rH   r   s     rL   ry   z_CliArg.subcommand_alias   sS    """%doo"6":IVZVeVe
 	
@D@T@TVZVeVe
 	
rM   c                    | j                   S N)rq   rH   s    rL   ru   z_CliArg.field_info   s    rM   c                \    t         | j                  j                  v r| j                   dS d S )N:subcommand)r5   ru   metadatar`   r   s    rL   rw   z_CliArg.subcommand_dest   s+    2@DOOD\D\2\$//"+.fbffrM   c                    | j                   sU| j                  rI| j                  j                  3| j                  s'| j                   | j
                   | j                  d  S | j                   | j
                   S r   )rw   r`   ru   validation_aliasis_parser_submodelr   rh   r   s    rL   r{   z_CliArg.dest   ss     $$00<++ oo&t';';&<=d>Q>Q>STT//"4#7#7"899rM   c                v    | j                   r| j                  d   j                  dd      S | j                  d   S )Nr   r   r   )rd   rj   r   r   s    rL   preferred_arg_namez_CliArg.preferred_arg_name   s1    15tyy|##C-RdiiPQlRrM   c           	        t        | j                  j                        s| j                  j                  fnt        | j                  j                        }| j                  r't	        |D cg c]  }|t        d       us| c}      }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        |            s|j!                  t        |              |S c c}w )NF)is_include_originz.CliSubCommand is not outermost annotation for .z1CliPositionalArg is not outermost annotation for )r   ru   r   rb   r   typer7   r5   r+   r^   rU   r_   r4   r#   r<   r$   append)rH   field_typesr   rx   s       rL   rx   z_CliArg.sub_models   sG    DOO667 __'')$//445 	
 K [55PTUYPZCZ [\K,.
  
	;E)%.1BV[\#DTZZEXEXDYYZ[_[j[jZkl  ,E4E3G[`a#G

H[H[G\\]^b^m^m]no  .u56:OP`afPg:h!!"25"9:
	;  !\s   +E>Ec                    | j                   S r   rm   r   s    rL   alias_namesz_CliArg.alias_names          rM   c                    | j                   S r   )ro   r   s    rL   alias_pathsz_CliArg.alias_paths   r   rM   c                     | j                   d   S )Nr   r   r   s    rL   r   z_CliArg.preferred_alias   s      ##rM   c                    | j                   S r   )rp   r   s    rL   is_alias_path_onlyz_CliArg.is_alias_path_only   s    '''rM   c                    | j                    xr; t        | j                  j                  t        t
        t        t        t        fd      S )NTis_strip_annotated)	rw   r7   ru   r   listsetdictr   r   r   s    rL   is_append_actionz_CliArg.is_append_action   s=    ''' 
,FOO&&sD(G(Lae-
 	
rM   c                h    | j                    xr$ t        | j                        xr | j                   S r   )rw   rQ   rx   r   r   s    rL   r   z_CliArg.is_parser_submodel   s-    '''_D,A_$J_J_F__rM   c                    | j                   d uxrJ t        | j                   j                  v xs, | j                  du xr t        | j                   j                  vS r   )ru   r0   r   rf   r/   r   s    rL   is_no_decodez_CliArg.is_no_decode   sR    d* 
000 _$$-]+T__E]E]2]	
rM   )ru   r%   r|   z=defaultdict[str | FieldInfo, dict[int | None | str, _CliArg]]r}   r   rR   rS   )r~   rT   rd   rc   rR   rT   )r   z	type[Any]rd   rc   rR   rl   )r   type[BaseModel]rR   rT   )rR   r%   )rR   
str | None)rR   rT   )rR   list[type[BaseModel]])rR   rl   )rR   rn   )rR   rQ   )rU   rV   rW   __annotations__rj   rJ   r!   rm   ro   rp   rq   rF   classmethodr   r   ry   r   ru   rw   r{   r   rx   r   r   r   r   r   r   r   rX   rY   s   @rL   r]   r]   Z   s   JOO88  D)FN$/OL/3*5b/L'9 +E 22(]K*TT RT 	T
 
T2 S S 	"	0X			 	

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

 ` ` 
 
rM   r]   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
f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d+ fdZed,d       Zed-d       Zed.d       Zddd	 	 	 	 	 d/ fd	Zed0d
       Zed.d       Zdd	 	 	 d1dZd2dZ	 	 	 	 	 	 	 	 d3dZd4dZd5dZd6dZd7dZd8dZd9dZd:dZd;dZed<d       Z	 	 	 	 	 	 	 	 	 	 d=dZd>dZej
                  ej                  ej                  ej                  e
f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d?dZ	 d@	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dAdZdBdZdCdZ 	 	 	 	 	 	 	 	 	 	 dDdZ!	 	 	 	 	 	 	 	 	 	 	 	 dEd Z"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dFd!Z#	 	 	 	 	 	 	 	 	 	 	 	 	 	 dGd"Z$dHd#Z%dIdJd$Z&dKd%Z'dKd&Z(	 	 	 	 	 	 	 	 	 	 dLd'Z)dMd(Z*	 	 	 	 	 	 	 	 	 	 dNd)Z+d@dOd*Z, xZ-S )P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: Whether `bool` fields should be implicitly converted into CLI boolean flags.
            (e.g. --flag, --no-flag). Defaults to `False`.
        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`.
        formatter_class: A class for customizing the root parser help text. Defaults to `argparse.RawDescriptionHelpFormatter`.
    NTc           	         ||n,|j                   j                  dt        j                  d         | _        ||n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        |s| j                  du rdnd}|| _        ||n|j                   j                  d	d      | _        ||n|j                   j                  d
d      | _	        |	|	n|j                   j                  dd      | _
        |
|
n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        | j                  dz  | _        | j                  re|
j                  d      s1|
j                  d      s |
j!                  dd      j#                         st%        d|
       | xj                  dz  c_        ||n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        ||n|j                   j                  dd       | _        ||nd}|s|t%        d      t.        | a  |d| j                  d| j                  |       |Pt3        | j                  | j                  |j4                  d nt7        |j4                        || j                  d      n|}| j9                  |||||||       |dvrr|du rt        j                  dd  }n-t;        |t<        t>        f      st%        dtA        |             | jC                  | jE                  | jF                  |             y y )Ncli_prog_namer   cli_hide_none_typeFcli_avoid_jsonTrS   nullcli_enforce_requiredcli_use_class_docs_for_groupsrI   
cli_prefix cli_flag_prefix_charr   r.   r   z'CLI settings source prefix is invalid: cli_implicit_flagscli_ignore_unknown_argscli_kebab_casecli_shortcutszGCase-insensitive matching is only supported on the internal root parser)env_nested_delimiterenv_parse_none_strenv_parse_enums
env_prefixra   )rI   progdescriptionformatter_classprefix_charsallow_abbrev)root_parserparse_args_methodadd_argument_methodadd_argument_group_methodadd_parser_methodadd_subparsers_methodr   r   r>   z<cli_parse_args must be a list or tuple of strings, received parsed_args)$model_configgetsysargvr   r   r   cli_parse_none_strr   r   rI   r   r   _cli_flag_prefix
startswithendswithr   isidentifierr+   r   r   r   r   rE   rF   rB   __doc__r   _connect_root_parser
isinstancer   r   r   _load_env_vars_parse_argsr   )rH   settings_clsr   cli_parse_argsr   r   r   r   r   rI   r   r   r   r   r   r   ra   r   r   r   r   r   r   r   rK   s                           rL   rF   zCliSettingsSource.__init__%  s   6 +6ML<U<U<Y<YZiknkskstukv<w 	
 "- **../CUK 	 -8Nl>W>W>[>[\lns>t 	 "+/+>+>$+FF"4 $/ !**../EuM 	! -8 ***../NPUV 	* !, **../BDI 	
 )3(>*LD]D]DaDabnprDs $/ !**../EsK 	!
 !% 9 9A =??$$S)Z-@-@-EZM_M_`cegMhMuMuMw#&Mj\$Z[[OOs"O "- **../CUK 	 '2 $**../H%P 	$ -8Nl>W>W>[>[\lns>t 	 +6ML<U<U<Y<YZiko<p 	 ,:+E4+"9 ijj!$#66 ) 	 	
$ " ""&"8"8''$0$8$8$@Df\MaMaFb /!66"  	 	!!#/ 3&?/"7+ 	" 	
 .%!$!"u>#RSWXfSgRhi  D,<,<T=M=M~,^_ /rM   c                     y r   rD   r   s    rL   __call__zCliSettingsSource.__call__  s    *-rM   c                    y)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.
        NrD   )rH   rj   s     rL   r   zCliSettingsSource.__call__  s     	rM   c                    y)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.
        NrD   rH   r   s     rL   r   zCliSettingsSource.__call__       	rM   )rj   r   c                  ||t        d      |Y|du r| j                  i       S |du rt        j                  dd  }| j                  | j	                  | j
                  |            S || j                  |      S t        |          S )Nz/`args` and `parsed_args` are mutually exclusiveFr   Tr>   )r+   r   r   r   r   r   rE   r   )rH   rj   r   rK   s      rL   r   zCliSettingsSource.__call__  s      7 QRRu}**r*::t|xx|&&43C3CDDTDTVZ3[&\\$&&;&??7#%%rM   c                     y r   rD   r   s    rL   r   z CliSettingsSource._load_env_vars  s    :=rM   c                    y)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.
        NrD   r   s     rL   r   z CliSettingsSource._load_env_vars  r   rM   r   c               P  	 |i S t        |t        t        f      rt        |      }| j	                  |      }| j
                  j                         D ]i  \  }}t        |t              s|j                  d      s)|j                         D cg c]  }|j                   c}D ]  }||vs| j                  ||<    k |j                         D ci c]!  \  }}|j                  d      s|t        ur||# }}}|r8t        |t              	t        	fd|j!                         D              sd|	<   |j#                  | j$                         t'        t)        t*        t        t        f   |      | j,                  | j.                  | j                        | _        | S c c}w c c}}w )Nr   )keyc              3  2   K   | ]  } d |v s|  yw)r   NrD   )r   r_   last_selected_subcommands     rL   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>  s#     wjMeLffgJhlvJvzws   {})r   r   r   vars_resolve_parsed_args_parser_maprv   rT   r   r}   r{   r   r&   maxr   anykeysrt   _cli_unknown_argsr=   r   r   ra   env_ignore_emptyenv_vars)
rH   r   selected_subcommandsarg_destarg_mapargrw   r   r   r  s
            @rL   r   z CliSettingsSource._load_env_vars  s    IkI#?@{+K#88E!%!1!1!7!7!9 	OHg(C(X->->}-M<CNN<L'MS'M OO&.BB7;7N7NO4O	O (--/
S<<.3>O3O H
 

  '*+?S'I$wK4D4D4Fww8<454112&c"K0!!##	
 / (N
s   F&F"c                Z   g }t        |j                               D ]  \  }}t        |t               rx| j                  |||      r+| j                  j                  |i       j                  d       }|r!|j                  rdj                  |      ||<   y| j                  ||      ||<   |j                  d      r.|,|j                  | j                  |   |   j                         | j                  dk(  s|j                  dd      }| j                  j                  |i       j                  d       }|s|j                  j                  s7||j!                  |j                  j                  d      v sad|v r"t#        d|j                  dd       d| d	      |||<    |S )
N,r   r   r   r   FzInput should be kebab-case "z", not "")r   rv   r   %_is_nested_alias_path_only_workaroundr  r   r   join_merge_parsed_listr   r   r{   r   r   ru   r   r   
ValueError)rH   r   r  r_   r   cli_arg	snake_vals          rL   r  z&CliSettingsSource._resolve_parsed_args  s   *,#K$5$5$78 	8OJ#t$==k:WZ[ **..z2>BB4Hw33.1hhsmK
+*.*A*A#z*RJ'$$]3$++D,<,<Z,H,M,R,RS$$-KKS1	**..z2>BB4H**55"g&<&<W=O=O=Z=Z\a&bbcz(+GTWY\H]G^^fgjfkkl)mnn.7K
+3	86 $#rM   c                |   | j                   j                  |i       j                         }|syt        t	        |            }|j
                  ro|j                  j                  d      rT||= |j                  dd }d|j                   d| j                  ||       }||vr
d| d||<   y
||   dd  d	| d||<   y
y)z
        Workaround for nested alias path environment variables not being handled.
        See https://github.com/pydantic/pydantic-settings/issues/670
        Fr   Nr  z": {}, T)
r  r   r}   nextiterr   r`   r   r   r  )rH   r   r_   r   	known_argr  nested_dest
nested_vals           rL   r  z7CliSettingsSource._is_nested_alias_path_only_workaround3  s     $$((R8??A	4	?#!!cnn&=&=c&BJ'.."-KS001T5L5LSR\5]4^_J k1 ZL# $
  $K0"56bBG $
 rM   c                $   | j                   j                  |t              }|t        u s/t        t	        |            rt        d t        |      D              s|}||fS |r(t        |      dkD  s|d   j                  d      rt        nt        }||fS )Nc              3  h   K   | ]*  }|t        d       urt        |      t        t        fvr| , y wr   )r   r   r   r   )r   r   s     rL   r   zACliSettingsSource._get_merge_parsed_list_types.<locals>.<genexpr>O  s4      T
*z%/@w/W s   02r>   r   [)
_cli_dict_argsr   r   r(   r   r  r   r   r   rT   )rH   parsed_listr_   
merge_typeinferred_types        rL   _get_merge_parsed_list_typesz.CliSettingsSource._get_merge_parsed_list_typesJ  s    ((,,Z>
$":j#9: %j1  'M =(( %0S5E5I[YZ^MfMfgjMkDruM=((rM   c                   g }d }| j                   j                  |i       }t        |      D ]  \  }}|j                  |      }|d u xs |j                   }	||	}n||	k7  rt	        d      |r|j                  dd      }n'|j                  d      r|j                  d      r|dd }|j                  |        dj                  |      }
|rd|
 d	S |
S )
NzKMixing Decode and NoDecode across different AliasPath fields is not allowed\z\\r  r>   r  r  r&  ])
r  r   	enumerater   r+   r   r   r   r   r  )rH   merged_listr_   decode_listis_use_decodecli_arg_mapr   itemr  	is_decodemerged_list_strs              rL   _merged_list_to_strz%CliSettingsSource._merged_list_to_str[  s    !#%)&&**:r:$[1 	%KE4!ooe,G4Cw/C/C+CI$ ))+#$qrr||D&1%$--*<Abzt$	% ((;/)6?#1%KOKrM   c                   	 g }d}| j                  ||      \  }}|D ]  }t        |t              s n|j                         }|j	                  d      r$|j                  d      r|dd j                         }|r|j                         }|j	                  d      r| j                  |||      }d}nK|j	                  d      s|j	                  d      r| j                  ||      }n	 | j                  |||      }d}|r|r| j                  |||      } |t        u r|d	   S |t        u r| j                  ||      S i }	|D ]&  }
|	j                  t        j                  |
             ( t        j                  |	      S # t        $ r%}||u r||}| j                  |||      }Y d }~d }~ww xY w# t         $ r}t#        d
| d|       d }~ww xY w)NFr&  r.  r>   r  r  r  Tr   zParsing error encountered for z: )r+  r   rT   stripr   r   _consume_comma_consume_object_or_array_consume_string_or_numberr  r   r7  rt   jsonloadsdumps	Exceptionr+   )rH   r(  r_   r0  is_last_consumed_a_valuer)  r*  r   emerged_dictr4  s              rL   r  z$CliSettingsSource._merge_parsed_listn  s   *	T%'K',$(,(I(I+Wa(b%J" Z!#s+ iik>>#&3<<+<a)//+C))+C~~c*"11#{D\]380>>#.#..2E"&"?"?["QCc&*&D&DS+Wa&b 480! " 0--c;@XYC5Z8 S "1~%t#//ZHH.0' 9D&&tzz$'789zz+..# $. c#-#>*+G-:
&*&D&DS+Wa&b	c$  	T"@Bqc RSS	Ts[   C#F0 &E?9F0 >F0 !F0 #F0 =AF0 ?	F-F(#F0 (F--F0 0	G9G

Gc                2    |s|j                  d       |dd  S )Nz""r>   )r   )rH   r4  r0  rA  s       rL   r:  z CliSettingsSource._consume_comma  s    't$ABxrM   c                L   d}|j                  d      rdnd}d}t        dt        |            D ]e  }||   dk(  r||dz
     dk7  r| }|r||   dv r|dz  }*||   d	v s2|dz  }||   |k(  s@|d
k(  sF|j                  |d |dz           ||dz   d  c S  t	        d| d      )Nr>   r  r  r.  Fr  r-  )r  r&  )r  r.  r   zMissing end delimiter ")r   ranger   r   r+   )rH   r4  r0  countclose_delimin_strconsumeds          rL   r;  z*CliSettingsSource._consume_object_or_array  s    !__S1csaT+ 	0HH~$hl);t)C#h:-
h:-
>[0UaZ&&tNhl';<1//	0 5k]!DEErM   c                F   |t         urdn
t        |      }d}|t        |      k  r:||   dk(  r|dk(  s||dz
     dk7  r| }|s	||   dk(  rn|dz  }|t        |      k  r:|rt        d      |d | j                         }|t        t         fv r	 t        |       |j                  |       nd
 |j                  dd      D        \  }}|j                  d      rA|j                  d      s0|j                  d      s|j                  d      rt        d|       |j                  d      |j                  d      }}|j                  t        j                  ||i             ||d  S # t        $ r0 || j                  k(  rd}|d	vr|j                  d      sd| d}Y w xY w)Nr   Fr  r>   r-  r  zMismatched quotesr   )truefalser   c              3      K   | ]  }|  y wr   rD   )r   kvs     rL   r   z>CliSettingsSource._consume_string_or_number.<locals>.<genexpr>  s     >r>s   =z1Dictionary key=val parameter is a quoted string: )rT   r   r+   r9  r   floatr  r   r   r   splitr   r=  r?  )	rH   r4  r0  r)  rJ  is_find_end_quote
val_stringr   r   s	            rL   r<  z+CliSettingsSource._consume_string_or_number  s   "#-13t9!T"H~$(a-41;MQU;U(9$9!$h3)>MH T"  344)8_**,
$$3j! z*>Z%5%5c1%=>HC~~c"3<<+<S^^TWEX]`]i]ijm]n #TU_T`!abbyy~syy~Ctzz3*56HI  3!8!88!'J%>>zG\G\]`Ga#$ZL!2J	3s   E' '5F F c                    t         |j                  v rd}nt        |j                  v rd}ny |j                  t        urt        | d|j                   d| d      y )NCliImplicitFlagCliExplicitFlagz
 argument r   z is not of type bool)r3   r   r2   r   rQ   r+   rU   )rH   r^   r_   ru   cli_flag_names        rL   _verify_cli_flag_annotationsz.CliSettingsSource._verify_cli_flag_annotations  sb    z222-M!4!44-M  ,=/ENN;K1ZLXl mnn -rM   c           	     4   g }g g g }}}t        |      j                         D ]  \  }}t        |j                  v r|j	                         st        d|j                   d| d      t        ||      ^}}	t        |      dkD  rt        d|j                   d| d      t        |j                        D 
cg c]  }
|
t        d       us|
 }}
|D ]5  }t        |      rt        |      rt        d|j                   d| d       |j                  ||f       t        |j                  v rt        ||      ^}}	t        |      dkD  rt        d|j                   d| d      t!        |j                  t"        t$        t&        t(        t*        fd	      }|s|j                  ||f       |j                  ||f       | j-                  |||       |j                  ||f        |rt        |      dkD  r>d
j/                  |D cg c]  \  }}|	 c}}      }t        |j                   d|       |rAd
j/                  ||z   D cg c]  \  }}|	 c}}      }t        |j                   d|       ||z   |z   |z   S c c}
w c c}}w c c}}w )Nzsubcommand argument r   z has a default valuer>   z has multiple aliasesz$ has type not derived from BaseModelzpositional argument Tr   r  z- has multiple variadic positional arguments: z= has variadic positional arguments and subcommand arguments: )r:   rv   r5   r   is_requiredr+   rU   r9   r   r   r   r   r#   r$   r   r4   r7   r   r   r   r   r   rY  r  )rH   r^   positional_variadic_argpositional_argssubcommand_argsoptional_argsr_   ru   r   r   r   r   
field_typer   r~   infofield_namess                    rL   _sort_arg_fieldsz"CliSettingsSource._sort_arg_fields  s   "$:<b"-&7&>&D&D&F 	?"J
!4!44!--/'*>u~~>NaPZ|[o(pqq&6z:&NOK!;'!++.B5>>BRRST^S__t,uvv6>z?T?T6U"qUY^fjkofpYp5"qK"q&1 
 .z :>ST^>_"/"6u~~6Fa
|Sw x# 
  &&
J'?@"j&9&99"2:z"Ja{#a''*>u~~>NaPZ|[p(qrr#=))D#tXw+Odh$  (#**J
+CD+22J
3KL11%ZP$$j*%=>9	?< #*+a/"ii@W(X*$(XY#u~~&66cdocp$qrr "ii@WZi@i(j*$(jk#~~&&cdocpq  !88?J]ZZA #r0 )Y )ks   6J		J	J
J
c                    | j                   S )z#The connected root parser instance.)_root_parserr   s    rL   r   zCliSettingsSource.root_parser  s        rM   c                     @ j                   du r2dk(  r-t         j                  t              r	 	 d	 	 	 	 	 	 	 d fd}|S dfd}|S S )NFr   c                Z   g }|r(t        j                  t        j                  |            ng D ]p  }dj                   d}t	        j
                  d| d|      }|r1|j                  d      j                         |j                  d      z   }|j                  |       r  | ||      S )Nr-  z{1,2}z^(z[^\s=]+)(.*)r>   r.   )	shlexrR  r  r   rematchgrouplowerr   )	r   rj   	namespaceinsensitive_argsr  flag_prefixmatchedparser_methodrH   s	          rL   parse_args_insensitive_methodzOCliSettingsSource._connect_parser_method.<locals>.parse_args_insensitive_method  s    
 $& <@5;;uzz$'78b 1C%&t'@'@&A"IK hh"[M'FLG%mmA.446q9II$++C01 %[2BINNrM   c                 "    t        d d      )Nz0cannot connect CLI settings source root parser: z. is set to `None` but is needed for connectingr*   )rj   rJ   method_names     rL   none_parser_methodzDCliSettingsSource._connect_parser_method.<locals>.none_parser_method(  s$    #F{m  TB  C rM   )NN)r   rB   rj   z"list[str] | tuple[str, ...] | Nonerm  zNamespace | NonerR   r   )rj   r   rJ   r   rR   r   )ra   r   re  rB   )rH   rq  rt  rj   rJ   rr  ru  s   ```    rL   _connect_parser_methodz(CliSettingsSource._connect_parser_method  s     %##u,224,,.CD
 <@.2O2O8O ,O 	O 10"
 &% ! rM   c                8    | j                  |d      dfd}|S )Nr   c                *   |j                  d      s|j                  d        | fi |S dD ci c]  }||v s||j                  |       }}|dxx   dz  cc<    | fi |}t        |d      st        d       |j                  di |S c c}w )	N _is_cli_mutually_exclusive_grouprequired)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 connectingrD   )pophasattrr+   r|  )parserrJ   r  main_group_kwargsrk  add_argument_groups        rL   add_group_methodzACliSettingsSource._connect_group_method.<locals>.add_group_method5  s    ::@A

:&)&;F;;E]$ocadhnanS&**S/%9$o!$o!'*.EE**6G5FGu&DE'l  :u99CFCC %ps
   	BB)r  r   rJ   r   rR   r   )rv  )rH   r   r  r  s      @rL   _connect_group_methodz'CliSettingsSource._connect_group_method2  s&    !889RTop	D  rM   c           
          i  _         d fd}| _        | j                  r|nt        j                  } j                  |d       _         j                  |d       _         j                  |       _	         j                  |d       _
         j                  |d       _        | _        i  _        t        t               _         j#                   j$                   j&                  g  j(                   j(                  d g t*               y )Nc                     t        j                  | i |\  } }j                  D ]  }|j                  |<    t        t        |       S r   )r   parse_known_argsr
  r   r   )rj   rJ   unknown_argsr{   rH   s       rL   _parse_known_argszACliSettingsSource._connect_root_parser.<locals>._parse_known_argsR  sO    !/!@!@$!Q&!QD,.. </;&&t,<	4((rM   r   r   r   r   r  r^   
added_argsr`   subcommand_prefixrk  alias_prefixesmodel_default)rj   r   rJ   r   rR   r   )r
  re  r   r   
parse_argsrv  r   _add_argumentr  
_add_group_add_parser_add_subparsers_formatter_classr'  r
   r   r  _add_parser_argsr   r   r   r&   )	rH   r   r   r   r   r   r   r   r  s	   `        rL   r   z&CliSettingsSource._connect_root_parserF  s    8:	) ($595Q5Q 1WeWpWp667HJ]^!889LNcd445NO667HJ]^#::;PRij /;=ZefjZk####"oo+ 	 		
rM   c
                   d }
i }t        t        |            st        t        |            rt        t        |      |      sd n|}| j	                  |      D ]	  \  }}t        || j                  |||| j                  | j                  | j                  | j                  j                  d      | j                  
      }|j                  |j                         |j                  r|j                   D ]  }|j#                  |      }| j                  |j                     |   }|g|_        d|j&                  d<   | j(                  |j&                  d<   |j*                  d nt-        |j*                        |j&                  d<   t/        |j                         dkD  rd n|j0                  |j&                  d<   | j2                  r0|j*                  d nt-        |j*                        |j&                  d<   |
<| j5                  |d	| d
t/        |j                         dkD  r|j0                  nd       n|
}
t7        |
d      r,|
j8                  r|
j8                  d d  d| dnd| d|
_        | j;                   | j<                  |
g|j$                  i |j&                  |g |j>                   d| |j@                   dd g tB                y| jD                  }|j>                  |j&                  d<   tF        |j&                  d<   | jI                  ||||	      |j&                  d<   | jK                  |jL                        |j&                  d<   | jN                  xr |jQ                         xr |tB        u |j&                  d<   | jS                  ||||jT                  |      }|r|j&                  d   |v rc| jW                  |j&                  ||jX                         tZ        |j\                  v r+| j_                  |j&                  ||j@                  |      \  }}| ja                  |j&                  ||       |jb                  rVte        |jL                  dd      s?| jg                  |||j                   ||||||j&                  |||jT                  ||	       Fth        |j\                  v rg | jj                  |j&                  d   <   v|jl                  rto        |tp              r | jr                  |fi |}||n|}|D cg c]  }|d t/        |        |  c}|_         | jt                  |g|j$                  i |j&                   |tw        |      z  } | jy                  ||||||       |S c c}w )Nrf   )
ru   r|   r^   r_   r`   ra   rb   rd   rf   rh   Fr   r   r   r>   helpsubcommandsr   )r{  r{   r   metavarr  r  r  r  r   r  r{   r   rz  __pydantic_root_model__)r  is_model_suppressed)=r#   r   r$   
issubclassrc  r]   r  ra   r   r   configr   rh   rt   r   rw   rx   ry   rj   rJ   r  r   r   r   r   r   r  r~  r  r  r  r{   r   r&   r   CLI_SUPPRESS_help_format_metavar_formatr   r   r[  _get_arg_namesr   _convert_append_actionr   r4   r   _convert_positional_arg_convert_bool_flagr   getattr_add_parser_submodelsr6   r
  r   r   r   r  r  r   _add_parser_alias_paths)rH   r  r^   r  r`   r  rk  r  r  r  
subparsersrs   r_   ru   r  r   ry   subcommand_argro  	arg_namescontextr~   s                         rL   r  z"CliSettingsSource._add_parser_argsn  so    
13
  ] 348MdS`Na8b"4#6> 
  	 '+&;&;E&B k	2"J
%++%%#22#66.. $0A B#22C ""3??3""!$ (I'*';';I'F$%)%5%5c6I6I%JK[%\N+;*<N'<AN)).9?C?T?TN))*;< ) 1 1 9viFWFW?X #))-8 =@<ORS<SDYcYoYoN))&199@I@Q@Q@Y_efofwfw_x--f5 &- ,,""/$.<{!;BEcnnBUXYBY
(>(>_c	 -  (  z95  *11  *11#267q9I8J"M#%&6%7r!: #* ))/t//
j^=P=PjTbTiTij'#%&)hhZq>->,?@S@S?TTU*V"')&7 * 	?(T $(#8#8%(XX

6"(4

9%%)%6%6z:}^q%r

6"(,(<(<Z=R=R(S

9%--q*2H2H2Jq}`qOq 

:& !// 1>3??T^	 !SZZ%7:%E++CJJ
CDXDXY$
(;(;;-1-I-I

J0C0C].*I{ ''

JN))'*:O:OQjlq2r.."")#!

""&3,? /   %
(;(;;ACD**3::f+=>//!%. / @% @(-f5GPYZ;{T#;"<TF CZCH&D&&wHHSZZH$y/1JWk	2Z 	$$V_j*Vgino  [s   U<c                    |rEd|d<   t        |j                  t        t        fd      r|j                  | j                  |d   <   y y y )Nr   actionTr   r{   )r7   r   r   r   r'  )rH   rJ   ru   r   s       rL   r  z(CliSettingsSource._convert_append_action  sK    'F8)**?*?$eij6@6K6K##F6N3 k rM   c                    |d   dk(  r?| j                   st        |j                  v r t        |j                  vr|d= t        |d<   y y y y )Nr  rQ   r  )r   r3   r   r2   r   )rH   rJ   ru   r  s       rL   r  z$CliSettingsSource._convert_bool_flag  sV    )&''+;z?R?R+R 
(;(;;9%#8x  < ,S 'rM   c                   d}|d   g}t         |d<   t        j                  |j                         | j                        |d<   |j                         xr |t         u }|j                  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?rz  )r&   r]   r   upperr   r[  r   )rH   rJ   ru   r   r  ro  r  r[  s           rL   r  z)CliSettingsSource._convert_positional_arg  s     F^$	-y#22?3H3H3JDL_L_`y !,,.U=DU3U::h8+x %0ccF7O!F7O6N:+%%rM   c           	        g }|g|z   D ]i  }|D ]b  }t         j                  || j                  k(  r| | n|j                  |dd       | | j                        }	|	vsR|j                  |	       d k | j                  rV| j                  j                         D ]9  \  }
}|
|v st        |t              r|gn|}|j                  fd|D               ; |S )Nr   r>   c              3  ,   K   | ]  }|vs|  y wr   rD   )r   aliasr  s     rL   r   z3CliSettingsSource._get_arg_names.<locals>.<genexpr>0  s     $^ueS]F]U$^s   	)r]   r   r   r   r   r   r   rv   r   rT   extend)rH   r`   r  r  r   r  r  prefixr~   arg_nametargetaliases
alias_lists        `       rL   r  z CliSettingsSource._get_arg_names  s      "	!l^3 		/F# /"11(DOO; htf%"NN+<b!DEdVL''	 :-$$X./		/ #'#5#5#;#;#= _Y&.8#.F'GJ$$$^
$^^_
 rM   c                   t        |t              rt        d      d }i }|d    d|d<   |j                  |d<   |	d   |d<   t	        d |D              |d<   |d   rt        |      d	kD  rt        d
      | j                  r:t        |      d	k(  r,|d   j                  d nt        |d   j                        |d<   |t        ur5t        t        |            st        t        |            rDt        ||
      }n7|j                  t        ur|j                  }n|j                  |j                  }|1d| j                    d}|d   t        | d|d          |d<   n||d<   |d   }| j#                  |      xs |}|r	t$        |d<   | j&                  si|j)                  |d          d|	d<   d|	d<   d|	d<   |rt$        nd|d    d|	d<    | j*                  |fi |} | j,                  |gfd|D        i |	 |D ];  }| j/                  |||| | d||r|n||d	d  D cg c]	  }| | d c}||	       = y c c}w )Nz8cannot have nested models in a CliMutuallyExclusiveGroupr   z optionsr{  r   rz  c              3  <   K   | ]  }t        |t                y wr   )r  r[   )r   r^   s     rL   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>Q  s      E
=BJu78E
s   ry  r>   z/cannot use union with CliMutuallyExclusiveGroupz	default: z (undefined)
Fr  r  r  constzset z from JSON string (default: {})r  c              3  *   K   | ]
  } |   y wr   rD   )r   r~   ro  s     rL   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>u  s     -[dV.D-[s   r   )	r  r^   r  r`   r  rk  r  r  r  )r  r[   r+   r   r  r   r   r   r   r&   r#   r   r$   r  r   default_factoryr   _is_field_suppressedr  r   r   r  r  r  )rH   r  r^   rx   r  r`   r  ro  r  rJ   r_   ru   r   r  r  model_groupmodel_group_kwargsdesc_headerr   r~   s          `            rL   r  z'CliSettingsSource._add_parser_submodels4  s   " e67
   Z[[-/)21h&?7#,6,B,B=))/
);:&AD E
FPE
 B
=> @Ac*oXYFY QRR--#j/Q2F8B18M8M8U[ablmnbobwbw[x}- 11d=126KDQ^L_6` 'z B!!):: * 2 2++7 * : : %d&=&=%>lKK!-0<4:k]"M_`mMnLo;p4q"=14?"=1%a."77
CZGZ0<}-""il+!&F:!F7O"F7O 34	!~Mn9o 6N *$//&G4FGKD{f-[QZ-[f_ef 	E!!%(\/):!<"3%0k6HCNqr?S4:,tfA 6S+$7 " 
	  Ts   #H>c                &   |r|}|%t        |t              r | j                  |fi |n|}|j                         D ]  \  }}	|| j                  k(  r| | n|j                  |dd       | }
i }t        |d<   d|d<   d|d<   d|d	<   |	d
|d	<   t        | j                  |
<   | j                   |
 g}| j                  |
   j                         D ]  \  }}||c|_
        |_          | j                  |g|i | |j                  |
        y y )Nr   r>   r   zpydantic alias pathr  r   r  r   r  r   )r   r   r  rv   r   r   r  r'  r   r  rj   rJ   r  r   )rH   r  rs   r  r`   r  rk  r  r~   r   r  rJ   rj   r   r  s                  rL   r  z)CliSettingsSource._add_parser_alias_paths  sW    G >HPT>U/$//&:E:[`.446 ,e )DOO; "l4&)&../@"aHI$P 
 *,$0y!!6v#+x $*y!=(.F9%48D''1001(<= $ 0 0 : @ @ B 8HC+/(CHcj8"""7<T<V<!!(+%,	 rM   c           	         | j                   st        |      S t        t        |      D cg c]  }|t        d       us| c}      S c c}w r   )r   r   r   r   )rH   objr   s      rL   _get_modified_argsz$CliSettingsSource._get_modified_args  s>    &&C= Xc]VEe4PT:>U%VWWVs
   AAc                    d|v rC|d |j                  d      dz    ||j                  d      dz   d  D cg c]
  }|dk7  s	| c}z   }dj                  |      }|r| d| dS t        |      dk(  r|S d| dS c c}w )NJSONr>   r  r&  r.  r  r  )r   r  r   )rH   rj   obj_qualnamer  r  s        rL   _metavar_format_choicesz)CliSettingsSource._metavar_format_choices  s    T>0$**V,q01DTZI[^_I_IaDb4tSfimsfsS4ttD((4."^1WIQ//!$i1n7BBwir2BB 5us
   
A9A9c           
        t        |      }t        |      r&d|j                  v r|j                  S |j                  S |du ryt	        |t
              rt        |      S t        j                  |      rt        |      S t        |      }|;t	        |t        t        j                  t        j                  f      s|j                  }t!        |      r=| j#                  t%        t'        | j(                  | j+                  |                        S t        j,                  |      r7| j#                  t%        t'        t        | j+                  |                        S t/        |t0              rJ| j#                  |D cg c]/  }t2        j5                  |j6                  | j8                  dk(        1 c}      S t	        |t:              re| j#                  t%        t'        | j(                  | j+                  |                  t=        |d      r|j                        S t        |            S |t        d      u r| j>                  S tA        |      stC        |      r6tE        |dd	      r'| j)                  tG        |      d
   jH                        S dS t	        |t              r|j                  S t        |      jK                  dd      jK                  dd      S c c}w )z\Pretty metavar representation of a type. Adapts logic from `pydantic._repr.display_as_type`.z<locals>.z...Nr   rW   )r  r  Frootr  ztyping.r   ztyping_extensions.)&r<   r;   rW   rU   r   r"   reprr'   is_typealiastyperT   r   r   typing
ForwardReftyping_extensionsrK   r(   r  r   map_metavar_format_recurser  
is_literalr,   r   r]   r   r~   r   r-   r~  r   r#   r$   r  r:   r   r   )rH   r  originr   s       rL   r  z)CliSettingsSource._metavar_format_recurse  sq   s##-1A1A#A3<<WsGWGWWCZ^,9,,S1s8OC>*S49J9JL]LhLh2i"j--C6"//S9U9UW[WnWnorWs5t0uvv&&v.//Sd>U>UVY>Z5[0\]] d+//[^_TW''$2E2E2NO_  ^,//S55t7N7Ns7STU18n1MS-- 0  SVWZS[ 0   DJ***C $9#$> 3 95A ,,->s-CF-K-V-VW 
 T"###9$$Y3;;<PRTUU% `s   84Kc                D    | j                  |      j                  dd      S )Nr  r  )r  r   )rH   r  s     rL   r  z!CliSettingsSource._metavar_format  s     ++C088sCCrM   c                H   |j                   r|j                   nd}|s| j                  |      rt        S |j                         r5|t        d fv r+t
        |j                  vr|dnd}||rd| dnd| dz  }nd| j                   d}t        t        |            st        t        |            rdt        ||       d}n|t        d fvr!t        |      rd| j                  |       d}nt|j                  t        d fvr5t        |j                   |j                        }d||j                  n| d}n+|j"                  d| j                  |j"                         d}||rd	| n|z  }t%        t        | j&                        t(              r|j+                  d
d      S |S )Nr   zifdef: z (z	required)(z
(default: )z(default factory:  %z%%)r   r  r  r[  r&   r4   r   r   r#   r   r$   r  r;   r  r   r8   r   r  r  re  r   r   )	rH   r_   ru   r  r  _helpifdefr   	enum_names	            rL   r  zCliSettingsSource._help_format  s    +5*@*@
&&b$";";J"G!!#:KT9R(R 
(;(;;%2%:	%2eWI.qy=QQ"4#:#:";1=Gd=126KDQ^L_6`&w}j'I&J!L'8$&??LQ^D_.t/C/CM/R.SSTU##,=t+DD89N9NPZPbPbc	&Y=Nz'9'9T]&^^_`++7.t/C/CJD^D^/_.``abeq	]8E+5d4;L;L6M~+^u}}S$'idiirM   c                p    |j                   r|j                   nd}|t        k(  xs t        |j                  v S )Nr   )r   r  r   )rH   ru   r  s      rL   r  z&CliSettingsSource._is_field_suppressed  s2    *4*@*@
&&b$K
8K8K(KKrM   c           	        |j                   |j                  fD cg c]G  }t        |t        t        f      r/t        |t              r|nt        t        |j                  d         I c}d   }|j                  dd }|s|j                  |g        ||   }nU|j                  |i        ||   }	|d d D ]  }
|	j                  |
i        |	|
   }	 |	j                  |d   g        |	|d      }t        t        |j                  d         }|j                  dgt        |dz   t        |      z
  d      z         |||<   ||   S c c}w )Nr   r>   r  r   )r  r   r   r   r   r   choicespath
setdefaultrg   r  r  r   )rH   r  valueru   alias_path_only_defaultsr  
alias_pathalias_nested_pathsalias_defaultcurrent_pathnested_pathalias_path_indexs               rL   _update_alias_path_only_defaultz1CliSettingsSource._update_alias_path_only_default  se   
 %**J,G,GH!
%)\!:;  y1EtIu}}UVGW7XX!
 	!
 )3"(=!$//"=4X>M$//"=3H=L1#26 9''R8+K89 ##$6r$:B?();B)?@MZ__R%89bTC(81(<s=?Q(QST$UUV*/&''11/!
s   AE c                j   i }g }g }g }t        |rt        |      n| j                        j                         D ]w  \  }}t	        ||      }	|j
                  |	k(  r#t        |j                  v r|	8t        t        | j                  |   j                                     }
|
j                  r@|j                  |
j                  t        |	                   || j                  |	d      z  }t!        t        |	            st#        t        |	            r|| j                  |	d      z  }t%        j&                  d|
j(                        }|r|j+                         nd\  }}t-        |	t.        t0        t2        f      rt5        j6                  |	      n
t9        |	      }|
j:                  r| j=                  ||||      }t>        |j                  v rht-        |	t0              r|	n|	gD ]N  }t-        |t.        t0        t2        f      rt5        j6                  |      n
t9        |      }|j                  |       P |
j@                  jC                  d      tD        k(  r|	du r
|dk(  r|dz  }|j                  | |        |
j@                  jC                  d      tD        k7  sg|j                  |       z g }||D cg c])  }t-        |t8              st5        j6                  |      n|+ c}z  }||D cg c])  }t-        |t8              st5        j6                  |      n|+ c}z  }||z   S c c}w c c}w )	NT)_is_submodelz(-*)(.+))r   r   r  Fz--zno-)#r:   r   r   rv   r  r   r5   r   r  r   r  r}   rw   r   ry   _serialized_argsr#   r$   ri  rj  r   groupsr   r   r   r   r=  r?  rT   r   r  r4   rJ   r   r   )rH   r^   r  r  r_  r]  r^  r_   ru   r  r  rp  
flag_charsr  r  serialized_argss                   rL   r  z"CliSettingsSource._serialized_args  s   35 @BBD%'&7|UY]YjYj&k&q&q&s )	,"J
#E:6M!!]2!4!449NtD,,Z8??ABCC""&&s';';D<O'PQ4#8#8UY#8#ZZd=126KDQ^L_6`4#8#8UY#8#ZZhh{C,B,BCG7>7>>#3H J-7dTWGX-Y

=)_bcp_q  %% <<XujZrs J$7$77.8.M]TaSb 2E1;ED$PSCT1UDJJu-[^_d[eE#**512  zz~~h'+@@]V[E[`jnr`re#
  J<z!:; zz~~h'+@@$$U+S)	,V &(dqr[`Zs5KDJJu-QVVrrdst[`Zs5KDJJu-QVVtt00 sts   ;.L+3.L0)0r   ztype[BaseSettings]r   r   r   z)bool | list[str] | tuple[str, ...] | Noner   r   r   re   r   re   r   re   r   re   rI   re   r   r   r   r   r   re   r   re   r   rc   r   z$Mapping[str, str | list[str]] | Nonera   re   r   r   r   Callable[..., Any] | Noner   r  r   r  r   r  r   r  r   r   rR   rS   )rR   rk   )rj   z"list[str] | tuple[str, ...] | boolrR   CliSettingsSource[T])r   z,Namespace | SimpleNamespace | dict[str, Any]rR   r  )rj   z)list[str] | tuple[str, ...] | bool | Noner   ?Namespace | SimpleNamespace | dict[str, list[str] | str] | NonerR   z%dict[str, Any] | CliSettingsSource[T])rR   zMapping[str, str | None])r   r  rR   z/Mapping[str, str | None] | CliSettingsSource[T])r   dict[str, list[str] | str]rR   ri   )r   r  r_   rT   r   ri   rR   rQ   )r(  ri   r_   rT   rR   ztuple[type | None, type | None])r0  ri   r_   rT   rR   rT   )r(  ri   r_   rT   rR   rT   )r4  rT   r0  ri   rA  rQ   rR   rT   )r4  rT   r0  ri   rR   rT   )r4  rT   r0  ri   r)  ztype[Any] | NonerR   rT   )r^   r   r_   rT   ru   r%   rR   rS   )r^   r   rR   zlist[tuple[str, FieldInfo]])rR   r   )
rq  r  rt  rT   rj   r   rJ   r   rR   Callable[..., Any])r   r  rR   r  )r   r   r   r  r   r  r   r  r   r  r   r  r   r   rR   rS   )F)r  r   r^   r   r  ri   r`   rT   r  rT   rk  r   r  ri   r  r   r  rQ   rR   r   )rJ   rk   ru   r%   r   rQ   rR   rS   )rJ   rk   ru   r%   r  r   rR   rS   )
rJ   rk   ru   r%   r   rT   r  r   rR   ztuple[list[str], str])r`   rT   r  rT   r  ri   r   rl   r  ri   rR   ri   )r  r   r^   r   rx   r   r  ri   r`   rT   r  rT   ro  rT   r  ri   rJ   rk   r_   rT   ru   r%   r   rl   r  r   r  rQ   rR   rS   )r  r   rs   rn   r  ri   r`   rT   r  rT   rk  r   rR   rS   )r  r   rR   rl   r   )rj   ri   r  r   rR   rT   )r  r   rR   rT   )
r_   rT   ru   r%   r  r   r  rQ   rR   rT   )ru   r%   rR   rQ   )
r  rT   r  r   ru   r%   r  rk   rR   zlist[Any] | dict[str, Any])r^   r1   r  rQ   rR   ri   ).rU   rV   rW   r   r   add_argumentr  r	   
add_parseradd_subparsersr   rF   r   r   r   r  r  r+  r7  r  r:  r;  r<  rY  rc  propertyr   rv  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rX   rY   s   @rL   r   r      s   +` %)DH)-*.&*,059)-!%+/*./3CG>B&*7;9G9T9T?M?`?`7H7S7S;I;X;X:1}`(}` "}` B	}`
 '}` (}` $}` *}` (3}` '}` }` )}` (}` "-}` A}`  <!}`" $#}`$ %}`& 5'}`( 7)}`* $=+}`, 5-}`.  9/}`0 1}`2 
3}`~ - -   & ;?W[	& 8& U	&
 
/&& = = " ae#]#	8#J$>5CFMV	.)"L&+TZ
F$:	o+[Z ! !$!6$!EH$!QT$!`c$!	$!L 0 :H9T9T?M?`?`7H7S7S;I;X;X:&
&
 5&
 7	&

 $=&
 5&
  9&
 &
 
&
d %*EE E 	E
 E E E "E E "E 
ENL9&$&2;&NQ&be&	&*  "	
 %  
8MM M *	M
 M M M M M M M M %M M "M  
!M^,, /, 	,
 , , , 
,BXC)VVDjj+4jEHj_cj	j2L22$'25>2Zh2	#2831 31rM   r   )fr   
__future__r   _annotationsr=  ri  rh  r   r  argparser   r   r   r   r   r	   collectionsr
   collections.abcr   r   r   enumr   	functoolsr   textwrapr   typesr   r   r   r   r   r   r   r   r   r   r   r   r  pydanticr   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   envr?   pydantic_settings.mainr@   rB   r[   r]   r   CliSubCommandCliPositionalArgrQ   r   rV  rW  r  CliSuppressr   rT   CliUnknownArgsr   rD   rM   rL   <module>r     sd   - 2  	  
   $ 7 7  %  !     K K 3 4 6 % + , ; ' 8	 	 	   #3N 		 	O
i O
d CL!d(N23Q 112 ~T2L*::;L*::;<(49eB&7(RSV1)71: V1rM   