
    ch                       S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSK	J
r
JrJrJrJrJr  SSKJr  SSKJrJr  SSKJr  SSKJr  SS	KJr  SS
KJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%  SSK&r&SSK'J(r(J)r)  SSK*J+r+  SSK,J-r-  SSK.J/r/  SSK0J1r1  SSK2J3r3  SSK&J4r4J5r5  SSK6J7r7  SSK8J9r9  SSK:J;r;  SSK<J=r=J>r>  SSKJ?r?J@r@JArAJBrBJCrCJDrD  SSK<JErEJFrFJGrGJHrHJIrIJJrJJKrK  SSKLJMrM  \(       a  SSKNJOrO   " S S\5      rP " S S \(5      rQ\"" S!5      rR\\#\RS4   \C4   rS\\R\B4   rT\"" S"\US#9rV\\V\A4   rW\\V\@4   rX\
rY\\R\Y4   rZ\\[\\   \)" / S$9\D\?4   r] " S% S&\M\\R   5      r^g)'z'Command-line interface settings source.    )annotationsN)SUPPRESSArgumentParserBooleanOptionalAction	NamespaceRawDescriptionHelpFormatter_SubParsersAction)defaultdict)MappingSequence)Enum)dedent)SimpleNamespace)TYPE_CHECKING	AnnotatedAnyCallableGenericNoReturnOptionalTypeVarUnioncastoverload)	BaseModelField)Representation)is_model_class)is_pydantic_dataclass)	FieldInfo)PydanticUndefined)get_args
get_origin)typing_objects)is_union_origin   SettingsError)_lenient_issubclass_WithArgsTypes   )NoDecode_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                  @   ^  \ rS rSrSSU 4S jjjrSU 4S jjrSrU =r$ )_CliInternalArgParserB   c                2   > [         TU ]  " S0 UD6  Xl        g )N )super__init___cli_exit_on_error)selfcli_exit_on_errorkwargs	__class__s      _/var/www/html/shao/venv/lib/python3.13/site-packages/pydantic_settings/sources/providers/cli.pyrB   _CliInternalArgParser.__init__C   s    "6""3    c                b   > U R                   (       d  [        SU 35      e[        TU ]  U5        g )Nzerror parsing CLI: )rC   r(   rA   error)rD   messagerG   s     rH   rL   _CliInternalArgParser.errorG   s+    &&"5gY ?@@grJ   )rC   )T)rE   boolrF   r   returnNone)rM   strrP   r   )__name__
__module____qualname____firstlineno__rB   rL   __static_attributes____classcell__rG   s   @rH   r=   r=   B   s    4 4 rJ   r=   c                      \ rS rSrSrg)CliMutuallyExclusiveGroupM   r@   N)rS   rT   rU   rV   rW   r@   rJ   rH   r[   r[   M   s    rJ   r[   T_CliBoolFlag)bound)defaultc                     ^  \ rS rSrSrSSSSSSSSSSSSSSSSS\R                  \R                  \R                  \R                  \4                                               S*U 4S jjjr\S+S j5       r\S,S j5       r\S-S j5       rSSS	.     S.U 4S
 jjjr\S/S j5       r\S-S j5       rSS.   S0S jjr      S1S jrS2S jrS3S jrS4S jrS5S jrS6S jrS7S jrS8S jr\S9S j5       r          S:S jrS;S jr\R                  \R                  \R                  \R                  \4               S<S jjr S=                   S>S jjrS?S jrS@S jrSAS jr           SBS jr!            SCS  jr"                              SDS! jr#              SES" jr$SFS# jr%SGSHS$ jjr&SIS% jr'SIS& jr(          SJS' jr)SKS( jr*S)r+U =r,$ )LCliSettingsSource\   aE  
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           
     .  > Ub  UO,UR                   R                  S[        R                  S   5      U l        Ub  UOUR                   R                  SS 5      U l        Ub  UOUR                   R                  SS5      U l        Ub  UOUR                   R                  SS5      U l        U(       d  U R                  SL a  SOS	nX@l        Ub  UOUR                   R                  S
S5      U l	        Ub  UOUR                   R                  SS5      U l
        U	b  U	OUR                   R                  SS5      U l        U
b  U
OUR                   R                  SS5      U l        Ub  UOUR                   R                  SS5      U l        U R                  S-  U l        U R                  (       at  U
R                  S5      (       d;  U
R!                  S5      (       d%  U
R#                  SS5      R%                  5       (       d  ['        SU
 35      eU =R                  S-  sl        Ub  UOUR                   R                  SS5      U l        Ub  UOUR                   R                  SS5      U l        Ub  UOUR                   R                  SS5      U l        Ub  UOUR                   R                  SS 5      U l        Ub  UOSnU(       d  Ub  ['        S5      e[0        TU ]e  USU R                  SU R                  US9  UcN  [5        U R                  U R                  UR6                  c  S O[9        UR6                  5      UU R                  SS9OUnU R;                  UUUUUUUS9  U R
                  S;  a  U R
                  SL a  [        R                  SS  U l        OF[=        U R
                  [>        [@        45      (       d!  ['        S[C        U R
                  5       35      eU RE                  U RG                  U RH                  U R
                  5      S9  g g ) Ncli_prog_namer   cli_parse_argscli_hide_none_typeFcli_avoid_jsonTrQ   nullcli_enforce_requiredcli_use_class_docs_for_groupsrE   
cli_prefix cli_flag_prefix_char-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_prefixcase_sensitive)rE   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|   )NFr9   z<cli_parse_args must be a list or tuple of strings, received parsed_args)%model_configgetsysargvre   rf   rg   rh   cli_parse_none_strrj   rk   rE   rl   rn   _cli_flag_prefix
startswithendswithreplaceisidentifierr(   rq   rr   rs   rt   rA   rB   r=   __doc__r   _connect_root_parser
isinstancelisttupletype_load_env_vars_parse_argsr   )rD   settings_clsre   rf   r   rg   rh   rj   rk   rE   rl   rn   rq   rr   rs   rt   ry   r   r   r   r   r   r   r|   rG   s                           rH   rB   CliSettingsSource.__init__   s@   6 +6ML<U<U<Y<YZiknkskstukv<w 	 -8Nl>W>W>[>[\lnr>s 	
 "- **../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-@-@-E-EZM_M_`cegMhMuMuMwMw#&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+ 	" 	
 m3""d*&)hhqrl# 3 3dE]CC#RSWX\XkXkSlRmn  D,<,<T=M=MtObOb,cd 4rJ   c                    g Nr@   rD   s    rH   __call__CliSettingsSource.__call__  s    *-rJ   c                   g)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.
Nr@   )rD   argss     rH   r   r     s     	rJ   c                   g)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.
Nr@   rD   r   s     rH   r   r          	rJ   )r   r   c                 > Ub  Ub  [        S5      eUbU  USL a  U R                  0 S9$ USL a  [        R                  SS  nU R                  U R	                  U R
                  U5      S9$ Ub  U R                  US9$ [        TU ]  5       $ )Nz/`args` and `parsed_args` are mutually exclusiveFr   Tr9   )r(   r   r   r   r   r   rA   r   )rD   r   r   rG   s      rH   r   r   /  s      7 QRRu}**r*::t|xx|&&43C3CDDTDTVZ3[&\\$&&;&??7#%%rJ   c                    g r   r@   r   s    rH   r    CliSettingsSource._load_env_varsB  s    :=rJ   c                   g)aS  
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.
Nr@   r   s     rH   r   r   E  r   rJ   r   c                 ^	 Uc  0 $ [        U[        [        45      (       a  [        U5      n/ nUR	                  5        H  u  p4[        U[
        5      (       a  U R                  XC5      X'   M/  UR                  S5      (       d  MG  Uc  ML  UR                  S5      S   U-   nU R                  U   U   nUR                  U5        M     U R                  R                  5        H/  nUR                  5        H  nXb;  d  M
  U R                  X'   M     M1     UR	                  5        VVs0 sH*  u  pUR                  S5      (       a  M  U[        Ld  M(  X_M,     nnnU(       a;  [        U[        S9m	[!        U	4S jUR#                  5        5       5      (       d  SUT	'   UR%                  U R&                  5        [)        [+        [,        [.        [.        4   U5      U R0                  U R2                  U R                  5      U l        U $ s  snnf )N:subcommand:r   )keyc              3  <   >#    U H  nT S 3U;   d  M  Uv   M     g7f)rp   Nr@   ).0
field_namelast_selected_subcommands     rH   	<genexpr>3CliSettingsSource._load_env_vars.<locals>.<genexpr>t  s'     w4FjMeLffgJhlvJvzz4Fs   	{})r   r   r   varsitemsr   _merge_parsed_listr   split_cli_subcommandsappendvaluesr   r!   maxlenanykeysupdate_cli_unknown_argsr8   r   r   rR   ry   env_ignore_emptyenv_vars)
rD   r   selected_subcommandsr   valsubcommand_namesubcommand_destsubcommandsr   r   s
            @rH   r   r   V  s    IkI#?@@{+K*,*002OJ#t$$*.*A*A#*R'$$]33","2"23"7":S"@"&"7"7
"CO"T$++O<  3  00779K#.#5#5#7">373J3JK0 $8 : (--/
/<<. 36>O3O CH/ 	 

  '*+?S'I$wK4D4D4Fwww8<454112&c"K0!!##	
 '
s   )HHHc                L   U R                   R                  U[        5      nU[        L d9  [        [	        U5      5      (       a   [        S [        U5       5       5      (       d  UnX44$ U(       a.  [        U5      S:  d  US   R                  S5      (       a  [        O[        nX44$ )Nc              3  z   #    U H2  nU[        S 5      Ld  M  [        U5      [        [        4;  d  M.  Uv   M4     g 7fr   )r   r#   dictr   )r   type_s     rH   r   ACliSettingsSource._get_merge_parsed_list_types.<locals>.<genexpr>  s;      1ET
* /9%/@w/W 1s   ;;	;r9   r   [)
_cli_dict_argsr   r   r%   r#   r   r"   r   r   rR   )rD   parsed_listr   
merge_typeinferred_types        rH   _get_merge_parsed_list_types.CliSettingsSource._get_merge_parsed_list_types  s     ((,,Z>
$":j#9:: %j1   'M (( %0S5E5I[YZ^MfMfgjMkMkDruM((rJ   c                    / nSnU R                  X5      u  pVU GH%  n[        U[        5      (       d    GOUR                  5       nUR	                  S5      (       a)  UR                  S5      (       a  USS R                  5       nU(       a  UR                  5       nUR	                  S5      (       a  U R                  XsU5      nSnOSUR	                  S5      (       d  UR	                  S5      (       a  U R                  Xs5      nO U R                  XsU5      nSnU(       a  M  U(       a  GM  U R                  XsU5      nGM(     U[        L a  US	   $ U[        L a  SSR                  U5       S3$ 0 n	U H(  n
U	R                  [        R                  " U
5      5        M*     [        R                  " U	5      $ ! [         a$  nXVL a  UeUnU R                  XsU5      n S nANS nAff = f! [          a  n[#        S
U SU 35      eS nAff = f)NFr   ]r9   ,{Tr   zParsing error encountered for z: )r   r   rR   stripr   r   _consume_comma_consume_object_or_array_consume_string_or_number
ValueErrorr   joinr   jsonloadsdumps	Exceptionr(   )rD   r   r   merged_listis_last_consumed_a_valuer   r   r   emerged_dictitems              rH   r   $CliSettingsSource._merge_parsed_list  s   *	T%'K',$(,(I(I+(b%J"!#s++ iik>>#&&3<<+<+<a)//+C))+C~~c**"11#D\]380>>#..#..2E2E"&"?"?"QCc&*&D&DSWa&b 480! c" 0/--c@XYC5 #8 S "1~%t#388K0133.0'D&&tzz$'78 (zz+..# $. c#-#>*+G-:
&*&D&DSWa&b	c$  	T"@Bqc RSS	Ts[   DG( F7	G( $G( .$G( G( 1AG( 7
G%G G(  G%%G( (
H2HHc                <    U(       d  UR                  S5        USS  $ )Nz""r9   )r   )rD   r   r   r   s       rH   r    CliSettingsSource._consume_comma  s    't$ABxrJ   c                z   SnUR                  S5      (       a  SOSnSn[        S[        U5      5       Hv  nX   S:X  a  XS-
     S:w  a	  U(       + nM  U(       a  M(  X   S;   a  US-  nM7  X   S	;   d  MA  US-  nX   U:X  d  MP  US
:X  d  MX  UR                  US US-    5        XS-   S  s  $    [	        SU S35      e)Nr9   r   }r   F"\)r   r   )r   r   r   zMissing end delimiter ")r   ranger   r   r(   )rD   r   r   countclose_delimin_strconsumeds          rH   r   *CliSettingsSource._consume_object_or_array  s    !__S11csaT+H~$l);t)C#:-
:-
>[0UaZ&&tNhl';<1// , 5k]!DEErJ   c                   U[         La  SO
[        U5      nSnU[        U5      :  aF  X   S:X  a  US:X  d  XS-
     S:w  a  U(       + nU(       d	  X   S:X  a  OUS-  nU[        U5      :  a  MF  U(       a  [        S5      eUS U R                  5       nU[        [         4;   a   [        U5        UR                  U5        OS
 UR                  SS5       5       u  pxUR                  S5      (       aP  UR                  S5      (       d:  UR                  S5      (       d$  UR                  S5      (       a  [        SU 35      eUR                  S5      UR                  S5      pUR                  [        R                  " Xx05      5        XS  $ ! [         a7    X`R                  :X  a  SnUS	;  a  UR                  S5      (       d  SU S3n GNf = f)Nr   Fr   r9   r   r   zMismatched quotesri   )truefalseri   c              3  "   #    U H  ov   M     g 7fr   r@   )r   kvs     rH   r   >CliSettingsSource._consume_string_or_number.<locals>.<genexpr>  s     >%=r%=s   =z1Dictionary key=val parameter is a quoted string: )rR   r   r(   r   r   floatr   r   r   r   r   r   r   r   )	rD   r   r   r   r   is_find_end_quote
val_stringr   r   s	            rH   r   +CliSettingsSource._consume_string_or_number  s   "#-13t9!T"~$(a-41;MQU;U(9$9!$3)>MH T"  344)8_**,
$$3j! z*>Z%5%5c1%=>HC~~c""3<<+<+<S^^TWEXEX]`]i]ijm]n]n #TU_T`!abbyy~syy~tzz3*56I  3!8!88!'J%>>zG\G\]`GaGa#$ZL!2J	3s   $F =GGc           	     p   [        UR                  5      (       d  UR                  4O[        UR                  5      nU R                  (       a*  [        U Vs/ sH  oU[	        S 5      Ld  M  UPM     sn5      n/ nU H  n[        U[        4SS9(       a  [        SUR                   SU 35      e[        U[        4SS9(       a  [        SUR                   SU 35      e[        [        U5      5      (       d  [        [        U5      5      (       d  M  UR                  [        U5      5        M     U$ s  snf )NF)is_include_originz.CliSubCommand is not outermost annotation for rp   z1CliPositionalArg is not outermost annotation for )r"   
annotationrg   r   r   r2   r0   r(   rS   r/   r   r7   r   r   )rD   modelr   
field_infofield_typesr   
sub_modelss          rH   _get_sub_models!CliSettingsSource._get_sub_models  s   ,4Z5J5J,K,KZ""$QYZdZoZoQp 	 ""K [K5PTUYPZCZK [\K,.
 E)%.1BV[\#&TUZUcUcTddefpeq$rss+E4E3G[`a#&WX]XfXfWgghisht$uvv.u566:OP`afPg:h:h!!"25"9: !  !\s   D3+D3c                    [         UR                  ;   a  SnO[        UR                  ;   a  SnOg UR                  [        La  [        U SUR                   SU S35      eg )NCliImplicitFlagCliExplicitFlagz
 argument rp   z is not of type bool)r.   metadatar-   r  rO   r(   rS   )rD   r  r   r  cli_flag_names        rH   _verify_cli_flag_annotations.CliSettingsSource._verify_cli_flag_annotations  sb    z222-M!4!44-M  ,=/ENN;K1ZLXl mnn -rJ   c           	     z   / n/ / / pTn[        U5      R                  5        GH  u  pg[        UR                  ;   a  UR	                  5       (       d  [        SUR                   SU S35      e[        Xg5      tp[        U5      S:  a  [        SUR                   SU S35      e[        UR                  5       V
s/ sH  o[        S 5      Ld  M  U
PM     nn
U HA  n[        U5      (       a  M  [        U5      (       a  M'  [        SUR                   SU S35      e   UR                  Xg45        GM  [        UR                  ;   a  [        Xg5      tp[        U5      S:  a  [        SUR                   SU S35      e[!        UR                  ["        [$        [&        [(        [*        4SS	9nU(       d  UR                  Xg45        GM  UR                  Xg45        GM  U R-                  XU5        UR                  Xg45        GM     U(       a  [        U5      S:  a?  S
R/                  U VVs/ sH  u  pUPM	     snn5      n[        UR                   SU 35      eU(       aA  S
R/                  X$-    VVs/ sH  u  pUPM	     snn5      n[        UR                   SU 35      eX2-   U-   U-   $ s  sn
f s  snnf s  snnf )Nzsubcommand argument rp   z has a default valuer9   z has multiple aliasesz$ has type not derived from BaseModelzpositional argument Tis_strip_annotated, z- has multiple variadic positional arguments: z= has variadic positional arguments and subcommand arguments: )r5   r   r0   r  is_requiredr(   rS   r4   r   r"   r  r   r   r   r   r/   r2   r   setr   r   r   r  r   )rD   r  positional_variadic_argpositional_argssubcommand_argsoptional_argsr   r  alias_names_r   r  
field_typeis_append_actionnameinfofield_namess                    rH   _sort_arg_fields"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"q6UUfjkofpYp56UK"q&1
 .z : :>ST^>_>_"/"6u~~6Fa
|Sw x#  '2
  &&
'?@"j&9&99"2:"J{#a''*>u~~>NaPZ|[p(qrr#=))D#tXw+Odh$  (#**J+CD+22J3KL11%ZP$$j%=>9 'G< #*+a/"ii@W(X@W*$@W(XY#u~~&66cdocp$qrr "ii@W@i(j@i*$@i(jk#~~&&cdocpq  8?J]ZZA #r0 )Y )ks   :J,J,+J1
3J7
c                    U R                   $ )z#The connected root parser instance.)_root_parserr   s    rH   r   CliSettingsSource.root_parser?  s        rJ   c                   ^ ^^ TbJ  T R                   SL a;  TS:X  a5  [        T R                  [        5      (       a    S       SUU 4S jjjnU$ Tc
  SU4S jjnU$ T$ )NFr   c                v  > / nU(       a*  [         R                  " [         R                  " U5      5      O/  Hw  nSTR                   S3n[        R
                  " SU S3U5      nU(       a1  UR                  S5      R                  5       UR                  S5      -   nUR                  U5        My     T" XU5      $ )Nr   z{1,2}z^(z[^\s=]+)(.*)r9   r+   )	shlexr   r   rn   rematchgrouplowerr   )	r   r   	namespaceinsensitive_argsargflag_prefixmatchedparser_methodrD   s	          rH   parse_args_insensitive_methodOCliSettingsSource._connect_parser_method.<locals>.parse_args_insensitive_methodN  s    
 $& <@5;;uzz$'78bHC%&t'@'@&A"IK hh"[M'FLG%mmA.446q9II$++C0 I %[INNrJ   c                 "   > [        ST S35      e)Nz0cannot connect CLI settings source root parser: z. is set to `None` but is needed for connectingr'   )r   rF   method_names     rH   none_parser_methodDCliSettingsSource._connect_parser_method.<locals>.none_parser_method`  s$    #F{m  TB  C rJ   )NN)r   r=   r   z"list[str] | tuple[str, ...] | Noner-  zNamespace | NonerP   r   )r   r   rF   r   rP   r   )ry   r   r$  r=   )rD   r2  r6  r   rF   r3  r7  s   ```    rH   _connect_parser_method(CliSettingsSource._connect_parser_methodD  s     %##u,224,,.CDD
 <@.2O2O8O ,O 	O O 10"
 &% ! rJ   c                <   ^ U R                  US5      mSU4S jjnU$ )Nr   c                D  > UR                  S5      (       d  UR                  S5        T" U 40 UD6$ S Vs0 sH  o"U;   d  M
  X!R                  U5      _M     nnUS==   S-  ss'   T" U 40 UD6n[        US5      (       d  [        S5      eUR                  " S0 UD6$ s  snf )	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 connectingr@   )pophasattrr(   r@  )parserrF   r/  main_group_kwargsr+  add_argument_groups        rH   add_group_methodACliSettingsSource._connect_group_method.<locals>.add_group_methodm  s    ::@AA

:&)&;F;;E]$oE]chnan%9S**S/%9E]!$o!'*.EE**6G5FGu&DEE'l  99CFCC %ps   BB)rC  r   rF   r   rP   r   )r9  )rD   r   rF  rE  s      @rH   _connect_group_method'CliSettingsSource._connect_group_methodj  s&    !889RTop	D  rJ   c                *  ^  0 T l         SU 4S jjnUT l        Uc#  T R                  (       a  UO[        R                  nT R                  US5      T l        T R                  US5      T l        T R                  U5      T l	        T R                  US5      T l
        T R                  US5      T l        UT l        0 T l        [        [        5      T l        T R#                  T R$                  T R&                  / T R(                  T R(                  S / [*        S9  g )Nc                    > [         R                  " U 0 UD6u  pTR                   H  nUTR                  U'   M     [        [        U 5      $ r   )r   parse_known_argsr   r   r   )r   rF   unknown_argsdestrD   s       rH   _parse_known_argsACliSettingsSource._connect_root_parser.<locals>._parse_known_args  sH    !/!@!@$!Q&!QD../;&&t, /	4((rJ   r   r   r   r   rC  r  
added_args
arg_prefixsubcommand_prefixr+  alias_prefixesmodel_default)r   r   rF   r   rP   r   )r   r$  rr   r   
parse_argsr9  r   _add_argumentrH  
_add_group_add_parser_add_subparsers_formatter_classr   r
   r   r   _add_parser_argsr   r   rx   r!   )	rD   r   r   r   r   r   r   r|   rO  s	   `        rH   r   &CliSettingsSource._connect_root_parser~  s    8:	) ($595Q5Q 1WeWpWp667HJ]^!889LNcd445NO667HJ]^#::;PRij /;=BMdBS####"oo+ 	 		
rJ   c
                8	  ^ S n
0 n[        [        U5      5      (       d  [        [        U5      5      (       a  [        [        U5      U5      (       d  S OUnU R	                  U5       GH  u  pU R                  X,U5      n[        XXR                  S9u  nnUS   n[        UR                  ;   Ga  U GH{  nU R                  [        U5      S:  a  UR                  OU5      nU U 3nU U 3nUU R                  U S3   U'   [        U5      S:  a  S OUR                  nU R                  (       a$  UR                   c  S O[#        UR                   5      nU
c0  U R%                  USU S3[        U5      S:  a  UR                  OS S9OU
n
['        U
S5      (       a1  U
R(                  (       a  U
R(                  S S  S	U S
3OSU S
3U
l        U R+                  U R-                  U
UUU R.                  UR                   c  S O[#        UR                   5      S9U/ U U S3U U S3S / [0        S9  GM~     GM  U R2                  m[5        UR6                  [8        [:        [<        [>        [@        4SS9nU=(       a    U(       + n0 n[B        US'   U RE                  XX5      US'   U RG                  UR6                  5      US'   U RH                  =(       a    URK                  5       =(       a    U[0        L US'   U(       a'  URL                  b  U(       d  U U 3U RN                  S  OU U 3US'   U RQ                  XEXU5      nU(       a	  US   U;   a  GM  U RS                  UUU5        [T        UR                  ;   a  U RW                  UUUU5      u  nmU RY                  UX5        U(       a  U R[                  UUUUUUTUUUUUUU	S9  GM^  [\        UR                  ;   a  / U R^                  US   '   GM  U(       a  GM  UbY  [a        U[<        5      (       a  U Rb                  " U40 UD6nU[9        U5      -  nU Rd                  " U/U4S jU 5       Q70 UD6  GM  U[9        U5      -  nU Rd                  " U/U4S jU 5       Q70 UD6  GM     U Rg                  XX4XV5        U$ )N)alias_path_argsry   r   r9   r   r   )r?  rN  r{   metavarr   r   r   r   )helpr|   r{   rp   rQ  Tr  r`   rb  r>  rN  )rV  is_model_suppressedc              3  F   >#    U H  nTS [        U5        U 3v   M     g 7fr   r   r   r  r0  s     rH   r   5CliSettingsSource._add_parser_args.<locals>.<genexpr>-  s(     $_U^TKc$i(@'A$%HU^   !c              3  F   >#    U H  nTS [        U5        U 3v   M     g 7fr   re  rf  s     rH   r   rg  2  s(     %`V_d[s4y)A(B4&&IV_rh  )4r   r   r   
issubclassr!  r  r4   ry   r0   r  _check_kebab_namer   rS   r   r{   rk   r   r   r[  rB  ra  r]  rZ  r\  r!   r   r2   r  r   r  r   r   r   CLI_SUPPRESS_help_format_metavar_formatrj   r  validation_aliasenv_prefix_len_get_arg_names_convert_append_actionr/   _convert_positional_arg_convert_bool_flag_add_parser_submodelsr1   r   r   rY  rX  _add_parser_alias_paths)rD   rC  r  rR  rS  rT  r+  rU  rV  rc  
subparsersr`  r   r  r  r  is_alias_path_onlypreferred_aliassubcommand_aliasr   r   subcommand_helpr  is_parser_submodelrF   	arg_namesr0  s                             @rH   r]  "CliSettingsSource._add_parser_args  s
    
*,
  ] 3448MdS`Na8b8b"4#6>> 
  	 '+&;&;E&B"J040D0DUXb0cJ.>XkXk/+K+ *!nO!4!44'E'+'='=*-j/A*=?($ *45E4F&GO)3_4E&FOYhD))ZL*DEoV.1*o.AdzG]G]O9927--2G$VTYTaTaMb &- ,,""/$.<{!;BEj/TUBU
(>(>[_	 -  (  z955  *11  *11#267q9I8J"M#%&6%7r!: #* ))#//&,!0,0,A,A050E6RWR_R_K`  0   $#%&0\/1B!#D->,??PPQ*R"')&7 * = (^ $(#8#8#=))D#tXw+Odh$  &0%H8H4H")+$0y!!%!2!2:=!nv$($8$89N9N$Oy!--q*2H2H2Jq}`qOq z" "j&A&A&MVh "l?"34T5H5H5JK&<'89 v !//
~lvw	 VF^z%A++FJ@PQ$
(;(;;-1-I-I
O].*I{ ''
J%..""")#!""#&3,? /   %
(;(;;=?D**6&>:++(%eT22$(OOF$De$DE"d9o5
**!$_U^$_ci #d9o5
**"%`V_%`dji 'Cp 	$$VjVgorJ   c                L    U R                   (       a  UR                  SS5      $ U$ )Nr  ro   )rs   r   )rD   r  s     rH   rk  #CliSettingsSource._check_kebab_name8  s!    <<S))rJ   c                    U(       aG  SUS'   [        UR                  [        [        4SS9(       a  UR                  U R                  US   '   g g g )Nr   actionTr  rN  )r2   r  r   r   r   )rD   rF   r  r  s       rH   rr  (CliSettingsSource._convert_append_action=  sK    'F8)**?*?$eij6@6K6K##F6N3 k rJ   c                    US   S:X  aH  U R                   (       d  [        UR                  ;   a"  [        UR                  ;  a  US	 [        US'   g g g g )Nra  rO   r  )rq   r.   r  r-   r   )rD   rF   r  rV  s       rH   rt  $CliSettingsSource._convert_bool_flagC  sV    )&''+;z?R?R+R 
(;(;;9%#8x  < ,S 'rJ   c                   SnUS   /n[         US'   U R                  UR                  5       5      US'   UR                  5       =(       a    U[         L nUR	                  S5      S:X  a  US	 U(       a  SOSUS	'   OU(       d  S
US	'   US	 US	 Xe4$ )Nrm   rN  r`   ra  r  r   +*nargs?r>  )r!   rk  upperr  r   )rD   rF   r  ry  rV  r0  r}  r  s           rH   rs  )CliSettingsSource._convert_positional_argK  s     F^$	-y 22?3H3H3JKy !,,.U=DU3U::h8+x %0ccF7O!F7O6N:%%rJ   c           	       ^ / nU/U-    H`  nU HW  nU R                  X R                  :X  a  U U 3OUR                  USS5       U 35      n	U	T;  d  MF  UR                  U	5        MY     Mb     U R                  (       a_  U R                  R                  5        HA  u  pX;   d  M  [        U[        5      (       a  U/OUnUR                  U4S jU 5       5        MC     U$ )Nrm   r9   c              3  4   >#    U H  oT;  d  M
  Uv   M     g 7fr   r@   )r   aliasrR  s     rH   r   3CliSettingsSource._get_arg_names.<locals>.<genexpr>w  s     $^
uS]F]UU
s   	)	rk  rx   r   r   rt   r   r   rR   extend)rD   rS  rT  rU  r  rR  r}  prefixr  arg_nametargetaliases
alias_lists        `       rH   rq   CliSettingsSource._get_arg_names`  s      "	!l^3F#11(OO; htf%"NN+<b!DEdVL
 :-$$X. $ 4 #'#5#5#;#;#=&.8#.F.F'GJ$$$^
$^^ $>
 rJ   c                  ^ [        U[        5      (       a  [        S5      eS n0 nUS    S3US'   UR                  US'   U	S   US'   [	        S U 5       5      US'   US   (       a  [        U5      S	:  a  [        S
5      eU R                  (       a<  [        U5      S	:X  a-  US   R                  c  S O[        US   R                  5      US'   U[        La>  [        [        U5      5      (       d  [        [        U5      5      (       a  [        X5      nO9UR                  [        La  UR                  nOUR                  b  UR                  nUc2  SU R                    S3nUS   b  [        U SUS    35      US'   OUUS'   US   nU R#                  U5      =(       d    UnU(       a	  [$        US'   U R&                  (       dj  UR)                  US   5        SU	S'   SU	S'   U(       a  [$        OSUS    S3U	S'   U R*                  " U40 UD6nU R,                  " U/U4S jU 5       Q70 U	D6  U H@  nU R/                  UUUU U S3UU(       a  UOUUS	S   Vs/ sH
  nU U S3PM     snUUS9	  MB     g s  snf )Nz8cannot have nested models in a CliMutuallyExclusiveGroupr   z optionsr?  r{   r>  c              3  @   #    U H  n[        U[        5      v   M     g 7fr   )rj  r[   )r   r  s     rH   r   :CliSettingsSource._add_parser_submodels.<locals>.<genexpr>  s      E
FPUJu788js   r=  r9   z/cannot use union with CliMutuallyExclusiveGroupz	default: z (undefined)
r  r  r   constzset z from JSON string (default: {})rb  c              3  .   >#    U H  nT U 3v   M     g 7fr   r@   rf  s     rH   r   r    s     -[QZdV.DQZs   rp   )	rC  r  rR  rS  rT  r+  rU  rV  rc  )rj  r[   r(   r{   r   r   rk   r   r   r!   r   r   r   getattrr`   default_factoryr   _is_field_suppressedrl  rh   r   rY  rX  r]  )rD   rC  r  r  rR  rS  rT  r0  r}  rF   r   r  r  rV  rc  model_groupmodel_group_kwargsdesc_headerry  r  s          `            rH   ru  'CliSettingsSource._add_parser_submodels{  s   " e67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226KDQ^L_6`6` ' B!!):: * 2 2++7 * : : %d&=&=%>lKK!-0<4:k]"M_`mMnLo;p4q"=14?"=1%a."77
CZGZ0<}-""il+!F7O"F7O 34	!~Mn9o 6N //&G4FGK{f-[QZ-[f_efE!!%(\/):!<"3%0k6HCNqr?S?4:,tfA 6?S+$7 " 
    Ts   I4c                0   U(       Ga  UnUb*  [        U[        5      (       a  U R                  " U40 UD6OUnUR                  S5      nU(       a  US S OUnUR	                  5        H  u  pU(       a  SOU	n	XPR
                  :X  a  U U	 3OUR                  USS5       U	 3n0 n[        US'   SUS'   U U	 3US'   U
S	:X  d  U(       a  S	US
'   O
SUS'   SUS
'   X;  d  My  UR                  U5        U R                  " XpR                   U 340 UD6  M     g g )Nrp   r   rm   r9   r`   zpydantic alias pathrb  rN  r   ra  r   r  r   )r   r   rY  r   r   rx   r   rl  r   rX  r   )rD   rC  r`  rR  rS  rT  r+  contextis_nested_alias_pathr  ra  r  rF   s                rH   rv  )CliSettingsSource._add_parser_alias_paths  sA    G >HPT>U>U$//&:E:[`#-#6#6s#; ,@CRjJ!0!6!6!81rt )OO; "l4&)&../@"aHI$P 
 *,$0y!!6v$.<v!6vf$(<(.F9%'/F8$(.F9%-%%h/&&w3H3H2I(0T_X^_% "9 rJ   c           	         U R                   (       d  [        U5      $ [        [        U5       Vs/ sH  o"[        S 5      Ld  M  UPM     sn5      $ s  snf r   )rg   r"   r   r   )rD   objr   s      rH   _get_modified_args$CliSettingsSource._get_modified_args  s@    &&C= Xc]V]E4PT:>U%]VWWVs   AAc                   SU;   aE  US UR                  S5      S-    XR                  S5      S-   S   Vs/ sH  o3S:w  d  M
  UPM     sn-   nSR                  U5      nU(       a  U SU S3$ [        U5      S:X  a  U$ SU S3$ s  snf )NJSONr9   r   r   r   r   r   )indexr   r   )rD   r   obj_qualnamer/  ra  s        rH   _metavar_format_choices)CliSettingsSource._metavar_format_choices  s    T>0$**V,q01DTZI[^_I_IaDb4tDbSmsfsSDb4ttD((4."^1WIQ//!$i1n7BBwir2BB 5us   BBc           
     b   [        U5      n[        U5      (       a(  SUR                  ;   a  UR                  $ UR                  $ USL a  g[	        U[
        5      (       a  [        U5      $ [        R                  " U5      (       a  [        U5      $ [        U5      nUc@  [	        U[        [        R                  [        R                  45      (       d  UR                  n[!        U5      (       a=  U R#                  [%        ['        U R(                  U R+                  U5      5      5      5      $ [        R,                  " U5      (       a7  U R#                  [%        ['        [        U R+                  U5      5      5      5      $ [/        U[0        5      (       a*  U R#                  U Vs/ sH  o3R2                  PM     sn5      $ [	        U[4        5      (       ad  U R#                  [%        ['        U R(                  U R+                  U5      5      5      [7        US5      (       a  UR                  S9$ [        U5      S9$ U[        S5      L a  U R8                  $ [;        U5      (       a  g[	        U[        5      (       a  UR                  $ [        U5      R=                  SS	5      R=                  S
S	5      $ s  snf )z\Pretty metavar representation of a type. Adapts logic from `pydantic._repr.display_as_type`.z<locals>.z...NrU   )r  r  ztyping.rm   ztyping_extensions.)r7   r6   rU   rS   r   r   reprr$   is_typealiastyperR   r#   r   typing
ForwardReftyping_extensionsrG   r%   r  r   map_metavar_format_recurser  
is_literalr)   r   r  r*   rB  r   r   r   )rD   r  originr   s       rH   r  )CliSettingsSource._metavar_format_recurse  s.   s##-1A1A#A3<<WsGWGWWCZ^,,9,,S11s8OC>*S49J9JL]LhLh2i"j"j--C6""//S9U9UW[WnWnorWs5t0uvv&&v..//Sd>U>UVY>Z5[0\]] d++//S0IScS0IJJ^,,//S55t7N7Ns7STU18n1M1MS-- 0  SVWZS[ 0   DJ***C  T""###9$$Y3;;<PRTUU 1Js   !J,c                D    U R                  U5      R                  SS5      $ )Nr  r   )r  r   )rD   r  s     rH   rn  !CliSettingsSource._metavar_format   s     ++C088sCCrJ   c                   UR                   (       a  UR                   OSnU(       d  U R                  U5      (       a  [        $ UR                  5       (       a>  U[        S 4;   a2  [
        UR                  ;  a  Uc  SOSnXU(       a  SU S3OSU S3-  nGOSU R                   S3n[        [        U5      5      (       d  [        [        U5      5      (       a  S[        X15       S3nOU[        S 4;  a&  [        U5      (       a  SU R                  U5       S3nOxUR                  [        S 4;  a6  [        UR                   UR                  5      nSUc  UR                  OU S3nO,UR"                  b  SU R                  UR"                  5       S3nXU(       a  S	U 3OU-  n[%        [        U R&                  5      [(        5      (       a  UR+                  S
S5      $ U$ )Nrm   zifdef: z (z	required)(z
(default: )z(default factory:  %z%%)r{   r  rl  r  r!   r/   r  r   r   r   r   r  r6   rn  r`   r3   r  r  rj  r$  r   r   )	rD   r   r  rV  rc  _helpifdefr`   	enum_names	            rH   rm  CliSettingsSource._help_format#  s    +5*@*@
&&b$";";J"G"G!!##:KT9R(R 
(;(;;%2%:	%2eWI.qy=QQ"4#:#:";1=Gd=1226KDQ^L_6`6`&w}'I&J!L'8$&??LQ^D_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irJ   c                    UR                   (       a  UR                   OSnU[        :H  =(       d    [        UR                  ;   $ )Nrm   )r{   rl  r  )rD   r  r  s      rH   r  &CliSettingsSource._is_field_suppressed<  s2    *4*@*@
&&b$K
8K8K(KKrJ   )rX  rY  rZ  r[  r   r   r   r   r\  r   r$  rh   rj   rE   rn   rg   rr   rq   rs   rf   r   rl   re   rt   rk   r   )0r   ztype[BaseSettings]re   
str | Nonerf   z)bool | list[str] | tuple[str, ...] | Noner   r  rg   bool | Nonerh   r  rj   r  rk   r  rE   r  rl   r  rn   r  rq   r  rr   r  rs   r  rt   z$Mapping[str, str | list[str]] | Nonery   r  r   r   r   Callable[..., Any] | Noner   r  r   r  r   r  r   r  r|   r   rP   rQ   )rP   dict[str, Any])r   z"list[str] | tuple[str, ...] | boolrP   CliSettingsSource[T])r   z,Namespace | SimpleNamespace | dict[str, Any]rP   r  )r   z)list[str] | tuple[str, ...] | bool | Noner   ?Namespace | SimpleNamespace | dict[str, list[str] | str] | NonerP   z%dict[str, Any] | CliSettingsSource[T])rP   zMapping[str, str | None])r   r  rP   z/Mapping[str, str | None] | CliSettingsSource[T])r   	list[str]r   rR   rP   z%tuple[Optional[type], Optional[type]])r   r  r   rR   rP   rR   )r   rR   r   r  r   rO   rP   rR   )r   rR   r   r  rP   rR   )r   rR   r   r  r   ztype[Any] | NonerP   rR   )r  type[BaseModel]r   rR   r  r    rP   list[type[BaseModel]])r  r  r   rR   r  r    rP   rQ   )r  r  rP   zlist[tuple[str, FieldInfo]])rP   r]   )
r2  r  r6  rR   r   r   rF   r   rP   Callable[..., Any])r   r  rP   r  )r   r]   r   r  r   r  r   r  r   r  r   r  r|   r   rP   rQ   )F)rC  r   r  r  rR  r  rS  rR   rT  rR   r+  r   rU  r  rV  r   rc  rO   rP   r   )r  rR   rP   rR   )rF   r  r  r    r  rO   rP   rQ   )rF   r  r  r    rV  r   rP   rQ   )
rF   r  r  r    ry  rR   rV  r   rP   ztuple[list[str], str])rS  rR   rT  rR   rU  r  r  tuple[str, ...]rR  r  rP   r  )rC  r   r  r  r  r  rR  r  rS  rR   rT  rR   r0  rR   r}  r  rF   r  r   rR   r  r    r  r  rV  r   rc  rO   rP   rQ   )rC  r   r`  zdict[str, str]rR  r  rS  rR   rT  rR   r+  r   rP   rQ   )r  r   rP   r  r   )r   r  r  r  rP   rR   )r  r   rP   rR   )
r   rR   r  r    rV  r   rc  rO   rP   rR   )r  r    rP   rO   )-rS   rT   rU   rV   r   r   add_argumentrE  r	   
add_parseradd_subparsersr   rB   r   r   r   r   r   r   r   r   r  r  r!  propertyr   r9  rH  r   r]  rk  rr  rt  rs  rq  ru  rv  r  r  r  rn  rm  r  rW   rX   rY   s   @rH   rb   rb   \   s   +` %)DH)-*.&*,059)-!%+/*./3&*>B&*7;9G9T9T?M?`?`7H7S7S;I;X;X:1e(e "e B	e
 'e (e $e *e (3e 'e e )e (e "-e $e  <!e" $#e$ %e& 5'e( 7)e* $=+e, 5-e.  9/e0 1e2 
3e eB - -   & ;?W[	& 8& U	&
 
/& && = = " ae*]*	8*X)$)25)	.)&+TZ
F$:"	o+[Z ! !$!6$!EH$!QT$!`c$!	$!L 0 :H9T9T?M?`?`7H7S7S;I;X;X:&
&
 5&
 7	&

 $=&
 5&
  9&
 &
 
&
d %*PP P 	P
 P P P "P P "P 
Pd
L9&$&2;&NQ&be&	&*  "	
 %  
6LL L *	L
 L L L L L L L L %L L "L  
!L\!`!` (!` 	!`
 !` !` !` 
!`FXC#VJDjj+4jEHj_cj	j2L LrJ   rb   )_r   
__future__r   _annotationsr   r)  r(  r   r  argparser   r   r   r   r   r	   collectionsr
   collections.abcr   r   enumr   textwrapr   typesr   r   r   r   r   r   r   r   r   r   r   r   r  pydanticr   r   pydantic._internal._reprr   pydantic._internal._utilsr   pydantic.dataclassesr   pydantic.fieldsr    pydantic_corer!   r"   r#   typing_inspectionr$   typing_inspection.introspectionr%   
exceptionsr(   utilsr)   r*   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   envr:   pydantic_settings.mainr;   r=   r[   r]   CliSubCommandCliPositionalArgrO   r^   r
  r  rl  CliSuppressr   rR   CliUnknownArgsrb   r@   rJ   rH   <module>r     sL   - 2  	  
   $ -   !     % 3 4 6 % + 2 , ; ' 8 t t   #3N 		 	 CL%4..89Q 112 ~T2L*::;L*::;<(49eB&7(RSbL)71: bLrJ   