
    ,h                       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 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) ddl*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl&m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z=m>Z> ddlm?Z?m@Z@mAZAmBZBmCZCmDZD ddl<mEZEmFZFmGZGmHZHmIZImJZJmKZK ddlLmMZM erddlNmOZO  G d de      ZP G d d e(      ZQ e"d!      ZRee#eRdf   eCf   ZSeeReBf   ZT e"d"eU#      ZVeeVeAf   ZWeeVe@f   ZXe
ZYeeReYf   ZZee[e\    e)g $      eDe?f   Z] G d% d&eMeeR         Z^y)'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                  .     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      i/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/pydantic_settings/sources/providers/cli.pyrA   z_CliInternalArgParser.__init__C   s    "6""3    c                X    | j                   st        d|       t        |   |       y )Nzerror parsing CLI: )rB   r(   r@   error)rC   messagerF   s     rG   rJ   z_CliInternalArgParser.errorG   s+    &&"5gY ?@@grH   )T)rD   boolrE   r   returnNone)rK   strrM   r   )__name__
__module____qualname__rA   rJ   __classcell__rF   s   @rG   r=   r=   B   s    4 rH   r=   c                      e Zd Zy)CliMutuallyExclusiveGroupN)rP   rQ   rR   r?   rH   rG   rV   rV   M   s    rH   rV   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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d-d
       Zed+d       Zdd	 	 	 d.dZ	 	 	 	 	 	 d/dZd0dZd1dZd2dZd3dZd4dZd5dZd6dZed7d       Z	 	 	 	 	 	 	 	 	 	 d8dZd9dZej
                  ej                  ej                  ej                  e
f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d:dZ	 d;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d<dZd=dZd>dZd?dZ	 	 	 	 	 	 	 	 	 	 d@dZ 	 	 	 	 	 	 	 	 	 	 	 	 dAdZ!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dBd Z"	 	 	 	 	 	 	 	 	 	 	 	 	 	 dCd!Z#dDd"Z$dEdFd#Z%dGd$Z&dGd%Z'	 	 	 	 	 	 	 	 	 	 dHd&Z(dId'Z) xZ*S )J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`.
        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d}|s|t%        d      t,        | ]  |d| j                  d| j                  |       |Pt1        | j                  | j                  |j2                  d nt5        |j2                        || j                  d      n|}| j7                  |||||||       |dvrr|du rt        j                  dd  }n-t9        |t:        t<        f      st%        dt?        |             | jA                  | jC                  | jD                  |             y y )Ncli_prog_namer   cli_hide_none_typeFcli_avoid_jsonTrN   nullcli_enforce_requiredcli_use_class_docs_for_groupsrD   
cli_prefix cli_flag_prefix_char-r+   .z'CLI settings source prefix is invalid: cli_implicit_flagscli_ignore_unknown_argscli_kebab_casezGCase-insensitive matching is only supported on the internal root parser)env_nested_delimiterenv_parse_none_strenv_parse_enums
env_prefixcase_sensitive)rD   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_methodrs   )NFr9   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_strrb   rc   rD   rd   rf   _cli_flag_prefix
startswithendswithreplaceisidentifierr(   ri   rj   rk   r@   rA   r=   __doc__r   _connect_root_parser
isinstancelisttupletype_load_env_vars_parse_argsrv   )rC   settings_clsr^   cli_parse_argsr   r_   r`   rb   rc   rD   rd   rf   ri   rj   rk   rp   rv   rw   rx   ry   rz   r{   rs   rF   s                          rG   rA   zCliSettingsSource.__init__   s   4 +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 	 ,:+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~,^_ /rH   c                     y Nr?   rC   s    rG   __call__zCliSettingsSource.__call__  s    *-rH   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.
        Nr?   )rC   argss     rG   r   zCliSettingsSource.__call__  s     	rH   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.
        Nr?   rC   r}   s     rG   r   zCliSettingsSource.__call__       	rH   )r   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|   Tr9   )r(   r   r   r   r   rv   r@   r   )rC   r   r}   rF   s      rG   r   zCliSettingsSource.__call__(  s      7 QRRu}**r*::t|xx|&&43C3CDDTDTVZ3[&\\$&&;&??7#%%rH   c                     y r   r?   r   s    rG   r   z CliSettingsSource._load_env_vars;  s    :=rH   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.
        Nr?   r   s     rG   r   z CliSettingsSource._load_env_vars>  r   rH   r|   c                 	 |i S t        |t        t        f      rt        |      }g }|j	                         D ]z  \  }}t        |t
              r| j                  ||      ||<   ,|j                  d      s>|A|j                  d      d   |z   }| j                  |   |   }|j                  |       | | j                  j                         D ]+  }|j                         D ]  }||vs| j                  ||<    - |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   |      | j0                  | j2                  | j                        | _        | S c c}}w )N:subcommand:r   )keyc              3  2   K   | ]  } d |v s|  yw)rh   Nr?   ).0
field_namelast_selected_subcommands     rG   	<genexpr>z3CliSettingsSource._load_env_vars.<locals>.<genexpr>m  s#     wjMeLffgJhlvJvzws   {})r   r   r   varsitemsr   _merge_parsed_listr   split_cli_subcommandsappendvaluesr   r!   maxlenanykeysupdate_cli_unknown_argsr8   r   r   rO   rp   env_ignore_emptyenv_vars)
rC   r}   selected_subcommandsr   valsubcommand_namesubcommand_destsubcommandsr   r   s
            @rG   r   z CliSettingsSource._load_env_varsO  s    IkI#?@{+K*,*002 	=OJ#t$*.*A*A#z*RJ'$$]3","2"23"7":S"@"&"7"7
"CO"T$++O<	=  00779 	KK#.#5#5#7 K"*>>373J3JK0K	K (--/
S<<.3>O3O H
 

  '*+?S'I$wK4D4D4Fww8<454112&c"K0!!##	
 '
s   &G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#   dictr   )r   type_s     rG   r   zACliSettingsSource._get_merge_parsed_list_types.<locals>.<genexpr>  s4      T
*z%/@w/W s   02r9   r   [)
_cli_dict_argsr   r   r%   r#   r   r"   r   r   rO   )rC   parsed_listr   
merge_typeinferred_types        rG   _get_merge_parsed_list_typesz.CliSettingsSource._get_merge_parsed_list_types{  s     ((,,Z>
$":j#9: %j1  'M =(( %0S5E5I[YZ^MfMfgjMkDruM=((rH   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ddj                  |       d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   ]r9   ,{Tr   zParsing error encountered for z: )r   r   rO   stripr   r   _consume_comma_consume_object_or_array_consume_string_or_number
ValueErrorr   joinr   jsonloadsdumps	Exceptionr(   )rC   r   r   merged_listis_last_consumed_a_valuer   r   r   emerged_dictitems              rG   r   z$CliSettingsSource._merge_parsed_list  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#388K0133.0' 9D&&tzz$'789zz+..# $. c#-#>*+G-:
&*&D&DS+Wa&b	c$  	T"@Bqc RSS	Ts[   C#F3 &F9F3 >F3 !F3 #F3  AF3 	F0F+&F3 +F00F3 3	G<GGc                2    |s|j                  d       |dd  S )Nz""r9   )r   )rC   r   r   r   s       rG   r   z CliSettingsSource._consume_comma  s    't$ABxrH   c                   d}|j                  d      rdnd}t        dt        |            D ]K  }||   dv r|dz  }||   dv s|dz  }||   |k(  s&|dk(  s,|j                  |d |dz           ||dz   d  c S  t	        d| d	      )
Nr9   r   }r   )r   r   )r   r   r   zMissing end delimiter "")r   ranger   r   r(   )rC   r   r   countclose_delimconsumeds         rG   r   z*CliSettingsSource._consume_object_or_array  s    !__S1csaT+ 	0HH~+
h:-
>[0UaZ&&tNhl';<1//	0 5k]!DEErH   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   r9   \r   zMismatched quotesra   )truefalsera   c              3      K   | ]  }|  y wr   r?   )r   kvs     rG   r   z>CliSettingsSource._consume_string_or_number.<locals>.<genexpr>  s     >r>s   =z1Dictionary key=val parameter is a quoted string: )rO   r   r(   r   r   floatr   r   r   r   r   r   r   r   )	rC   r   r   r   r   is_find_end_quote
val_stringr   r   s	            rG   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           	     4   t        |j                        s|j                  fnt        |j                        }| j                  r't        |D cg c]  }|t	        d       us| c}      }g }|D ]  }t        |t        fd      rt        d|j                   d|       t        |t        fd      rt        d|j                   d|       t        t        |            st        t        |            s|j                  t        |              |S c c}w )NF)is_include_originz.CliSubCommand is not outermost annotation for rh   z1CliPositionalArg is not outermost annotation for )r"   
annotationr_   r   r   r2   r0   r(   rP   r/   r   r7   r   r   )rC   modelr   
field_infofield_typesr   
sub_modelss          rG   _get_sub_modelsz!CliSettingsSource._get_sub_models  s   ,4Z5J5J,KZ""$QYZdZoZoQp 	 ""K [55PTUYPZCZ [\K,.
  	;E)%.1BV[\#&TUZUcUcTddefpeq$rss+E4E3G[`a#&WX]XfXfWgghisht$uvv.u56:OP`afPg:h!!"25"9:	;  !\s   D D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 rh   z is not of type bool)r.   metadatar-   r   rL   r(   rP   )rC   r   r   r   cli_flag_names        rG   _verify_cli_flag_annotationsz.CliSettingsSource._verify_cli_flag_annotations  sb    z222-M!4!44-M  ,=/ENN;K1ZLXl mnn -rH   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 rh   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(   rP   r4   r   r"   r   r   r   r   r   r/   r2   r   setr   r   r   r   r   )rC   r   positional_variadic_argpositional_argssubcommand_argsoptional_argsr   r   alias_names_r   r   
field_typeis_append_actionnameinfofield_namess                    rG   _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    rG   rv   zCliSettingsSource.root_parser3  s        rH   c                     @ j                   du r2dk(  r-t         j                  t              r	 	 d	 	 	 	 	 	 	 d fd}|S dfd}|S S )NFrw   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=]+)(.*)r9   r+   )	shlexr   r   rf   rematchgrouplowerr   )	rv   r   	namespaceinsensitive_argsargflag_prefixmatchedparser_methodrC   s	          rG   parse_args_insensitive_methodzOCliSettingsSource._connect_parser_method.<locals>.parse_args_insensitive_methodB  s    
 $& <@5;;uzz$'78b 1C%&t'@'@&A"IK hh"[M'FLG%mmA.446q9II$++C01 %[2BINNrH   c                 "    t        d d      )Nz0cannot connect CLI settings source root parser: z. is set to `None` but is needed for connectingr'   )r   rE   method_names     rG   none_parser_methodzDCliSettingsSource._connect_parser_method.<locals>.none_parser_methodT  s$    #F{m  TB  C rH   )NN)rv   r=   r   z"list[str] | tuple[str, ...] | Noner  zNamespace | NonerM   r   )r   r   rE   r   rM   r   )rp   r   r  r=   )rC   r  r  r   rE   r  r  s   ```    rG   _connect_parser_methodz(CliSettingsSource._connect_parser_method8  s     %##u,224,,.CD
 <@.2O2O8O ,O 	O 10"
 &% ! rH   c                8    | j                  |d      dfd}|S )Nry   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)titlerr   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%  )parserrE   r  main_group_kwargsr  add_argument_groups        rG   add_group_methodzACliSettingsSource._connect_group_method.<locals>.add_group_methoda  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   rE   r   rM   r   )r  )rC   ry   r+  r*  s      @rG   _connect_group_methodz'CliSettingsSource._connect_group_method^  s&    !889RTop	D  rH   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   )r   rE   unknown_argsdestrC   s       rG   _parse_known_argszACliSettingsSource._connect_root_parser.<locals>._parse_known_args~  sO    !/!@!@$!Q&!QD,.. </;&&t,<	4((rH   rw   rx   rz   r{   r(  r   
added_args
arg_prefixsubcommand_prefixr  alias_prefixesmodel_default)r   r   rE   r   rM   r   )r   r  rj   r   
parse_argsr  r   _add_argumentr,  
_add_group_add_parser_add_subparsers_formatter_classr   r
   r   r   _add_parser_argsrv   r   ro   r!   )	rC   rv   rw   rx   ry   rz   r{   rs   r2  s	   `        rG   r   z&CliSettingsSource._connect_root_parserr  s    8:	) ($595Q5Q 1WeWpWp667HJ]^!889LNcd445NO667HJ]^#::;PRij /;=BMdBS####"oo+ 	 		
rH   c
                   d }
i }t        t        |            st        t        |            rt        t        |      |      sd n|}| j	                  |      D ]  \  }}| j                  |||      }t        |||| j                        \  }}|d   }t        |j                  v rv|D ]n  }| j                  t        |      dkD  r|j                  n|      }| | }| | }|| j                  | d   |<   t        |      dkD  rd n|j                  }| j                  r#|j                   d nt#        |j                         }|
2| j%                  |d| dt        |      dkD  r|j                  nd       n|
}
t'        |
d      r,|
j(                  r|
j(                  d d  d	| d
nd| d
|
_        | j+                  | j-                  |
||| j.                  |j                   d nt#        |j                               |g | | d| | dd g t0               q | j2                  t5        |j6                  t8        t:        t<        t>        t@        fd      }|xr | }i }tB        |d<   | jE                  ||||	      |d<   | jG                  |j6                        |d<   | jH                  xr |jK                         xr |t0        u |d<   |r!|jL                  |s| | | jN                  d  n| | |d<   | jQ                  |||||      }|r|d   |v r| jS                  |||       tT        |j                  v r| jW                  ||||      \  }| jY                  |||       |r!| j[                  |||||||||||||	       1t\        |j                  v rg | j^                  |d   <   W|r[|Rta        |t<              r | jb                  |fi |}|t9        |      z  } | jd                  |gfd|D        i | |t9        |      z  } | jd                  |gfd|D        i |  | jg                  ||||||       |S )N)alias_path_argsrp   r   r9   r   r   )r$  r1  rr   metavarr   r   r   r   )helprs   rr   rh   r3  Tr   rZ   rC  r#  r1  )r8  is_model_suppressedc              3  B   K   | ]  }d t        |        |   y wr   r   r   r  r  s     rG   r   z5CliSettingsSource._add_parser_args.<locals>.<genexpr>!  s&     $_TKc$i(@'A$%H$_   c              3  B   K   | ]  }d t        |        |   y wr   rF  rG  s     rG   r   z5CliSettingsSource._add_parser_args.<locals>.<genexpr>&  s&     %`d[s4y)A(B4&&I%`rH  )4r   r   r   
issubclassr  r   r4   rp   r0   r   _check_kebab_namer   rP   r   rr   rc   r   r   r=  r'  rB  r?  r<  r>  r!   r   r2   r   r   r   r   r   r   CLI_SUPPRESS_help_format_metavar_formatrb   r   validation_aliasenv_prefix_len_get_arg_names_convert_append_actionr/   _convert_positional_arg_convert_bool_flag_add_parser_submodelsr1   r   r   r;  r:  _add_parser_alias_paths)rC   r(  r   r4  r5  r6  r  r7  r8  rD  
subparsersrA  r   r   r   r  is_alias_path_onlypreferred_aliassubcommand_aliasr   r   subcommand_helpr  is_parser_submodelrE   	arg_namesr  s                             @rG   r?  z"CliSettingsSource._add_parser_args  s&    
*,
  ] 348MdS`Na8b"4#6> 
  	 '+&;&;E&B v	"J
040D0DUJXb0cJ.>JX\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  *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:z=Zm!nv$($8$89N9N$Oy!--q*2H2H2Jq}`qOq z" "j&A&A&MVh "l?"34T5H5H5JK&<'89 v !//
<M~_jlvw	 VF^z%A++FJ@PQ$
(;(;;-1-I-I
O].*I{ ''
MJ%..""")#!""#&3,? /   %
(;(;;=?D**6&>:+(%eT2$3DOOF$De$DE"d9o5
***!$_U^$_ci #d9o5
***"%`V_%`djiv	p 	$$V_j*VginorH   c                B    | j                   r|j                  dd      S |S )Nr  rg   )rk   r   )rC   r  s     rG   rK  z#CliSettingsSource._check_kebab_name,  s!    <<S))rH   c                    |rEd|d<   t        |j                  t        t        fd      r|j                  | j                  |d   <   y y y )Nr   actionTr   r1  )r2   r   r   r   r   )rC   rE   r   r  s       rG   rR  z(CliSettingsSource._convert_append_action1  sK    'F8)**?*?$eij6@6K6K##F6N3 k rH   c                    |d   dk(  r?| j                   st        |j                  v r t        |j                  vr|d= t        |d<   y y y y )NrB  rL   r`  )ri   r.   r   r-   r   )rC   rE   r   r8  s       rG   rT  z$CliSettingsSource._convert_bool_flag7  sV    )&''+;z?R?R+R 
(;(;;9%#8x  < ,S 'rH   c                    d}|d   g}t         |d<   | 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 )Nre   r1  rZ   rB  r`  r   +*nargs?r#  )r!   rK  upperr   r   )rC   rE   r   rY  r8  r  r]  r   s           rG   rS  z)CliSettingsSource._convert_positional_arg?  s     F^$	-y 22?3H3H3JKy !,,.U=DU3U::h8+x %0ccF7O!F7O6N:+%%rH   c           	         g }|g|z   D ]Z  }|D ]S  }| j                  || j                  k(  r| | n|j                  |dd       |       }	|	|vsC|j                  |	       U \ |S )Nre   r9   )rK  ro   r   r   )
rC   r5  r6  r7  r  r4  r]  prefixr  arg_names
             rG   rQ  z CliSettingsSource._get_arg_namesT  s      "	!l^3 	/F# /11(DOO; htf%"NN+<b!DEdVL
 :-$$X./	/ rH   c                p   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 |}| j$                  si|j'                  |d          d|	d<   d|	d<   |rt(        nd|d    dx|	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$  rr   r#  c              3  <   K   | ]  }t        |t                y wr   )rJ  rV   )r   r   s     rG   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>  s      E
=BJu78E
s   r"  r9   z/cannot use union with CliMutuallyExclusiveGroupz	default: z (undefined)
rf  re  r   constzset z from JSON string (default: {})rC  c              3  *   K   | ]
  } |   y wr   r?   rG  s     rG   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>  s     -[dV.D-[s   rh   )	r(  r   r4  r5  r6  r  r7  r8  rD  )rJ  rV   r(   rr   r   r   rc   r   r   r!   r   r   r   getattrrZ   default_factoryr   _is_field_suppressedr`   r   rL  r;  r:  r?  )rC   r(  r   r   r4  r5  r6  r  r]  rE   r   r   r  r8  rD  model_groupmodel_group_kwargsdesc_headerrY  r  s          `            rG   rU  z'CliSettingsSource._add_parser_submodelsh  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""il+!F7O"F7O 34	!~Mn9oF6NVF^ *$//&G4FGKD{f-[QZ-[f_ef 	E!!%(\/):!<"3%0k6HCNqr?S4:,tfA 6S+$7 " 
	  Ts   H3c                   |r|}|%t        |t              r | j                  |fi |n|}|j                  d      }|r|d d n|}|j	                         D ]  \  }	}
|rdn|	}	|| j
                  k(  r| |	 n|j                  |dd       |	 }i }t        |d<   d|d<   | |	 |d<   |
d	k(  s|rd	|d
<   n
d|d<   d|d
<   ||vsm|j                  |        | j                  || j                   | fi |  y y )Nrh   r   re   r9   rZ   zpydantic alias pathrC  r1  r   rB  r   r`  r   )r   r   r;  r   r   ro   r   rL  r   r:  r   )rC   r(  rA  r4  r5  r6  r  contextis_nested_alias_pathr  rB  rj  rE   s                rG   rV  z)CliSettingsSource._add_parser_alias_paths  sQ    G >HPT>U/$//&:E:[`#-#6#6s#; ,@CRjJ!0!6!6!8 `g1rt )DOO; "l4&)&../@"aHI$P 
 *,$0y!!6v$.<v!6vf$(<(.F9%'/F8$(.F9%:-%%h/&D&&w43H3H2I(0T_X^_%` rH   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   )rC   objr   s      rG   _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JSONr9   r   r   r   r   r   )indexr   r   )rC   r   obj_qualnamer  rB  s        rG   _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              r)| j#                  |D cg c]  }|j2                   c}      S t	        |t4              re| j#                  t%        t'        | j(                  | j+                  |                  t7        |d      r|j                        S t        |            S |t        d      u r| j8                  S t;        |      ryt	        |t              r|j                  S t        |      j=                  dd	      j=                  d
d	      S c c}w )z\Pretty metavar representation of a type. Adapts logic from `pydantic._repr.display_as_type`.z<locals>.z...NrR   )r  r}  ztyping.re   ztyping_extensions.)r7   r6   rR   rP   r   r   reprr$   is_typealiastyperO   r#   r   typing
ForwardReftyping_extensionsrF   r%   r  r   map_metavar_format_recurser{  
is_literalr)   r   r  r*   r'  r   r   r   )rC   rz  originr   s       rG   r  z)CliSettingsSource._metavar_format_recurse  s   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+//S0Ic0IJJ^,//S55t7N7Ns7STU18n1MS-- 0  SVWZS[ 0   DJ***C T"###9$$Y3;;<PRTUU 1Js   8I3c                D    | j                  |      j                  dd      S )Nr   r   )r  r   )rC   rz  s     rG   rN  z!CliSettingsSource._metavar_format  s     ++C088sCCrH   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 )Nre   zifdef: z (z	required)(z
(default: )z(default factory:  %z%%)rr   rr  rL  r   r!   r/   r   r   r   r   r   rp  r6   rN  rZ   r3   r   rq  rJ  r  r   r   )	rC   r   r   r8  rD  _helpifdefrZ   	enum_names	            rG   rM  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irH   c                p    |j                   r|j                   nd}|t        k(  xs t        |j                  v S )Nre   )rr   rL  r   )rC   r   r  s      rG   rr  z&CliSettingsSource._is_field_suppressed'  s2    *4*@*@
&&b$K
8K8K(KKrH   ).r   ztype[BaseSettings]r^   
str | Noner   z)bool | list[str] | tuple[str, ...] | Noner   r  r_   bool | Noner`   r  rb   r  rc   r  rD   r  rd   r  rf   r  ri   r  rj   r  rk   r  rp   r  rv   r   rw   Callable[..., Any] | Nonerx   r  ry   r  rz   r  r{   r  rs   r   rM   rN   )rM   dict[str, Any])r   z"list[str] | tuple[str, ...] | boolrM   CliSettingsSource[T])r}   z,Namespace | SimpleNamespace | dict[str, Any]rM   r  )r   z)list[str] | tuple[str, ...] | bool | Noner}   ?Namespace | SimpleNamespace | dict[str, list[str] | str] | NonerM   z%dict[str, Any] | CliSettingsSource[T])rM   zMapping[str, str | None])r}   r  rM   z/Mapping[str, str | None] | CliSettingsSource[T])r   	list[str]r   rO   rM   z%tuple[Optional[type], Optional[type]])r   r  r   rO   rM   rO   )r   rO   r   r  r   rL   rM   rO   )r   rO   r   r  rM   rO   )r   rO   r   r  r   ztype[Any] | NonerM   rO   )r   type[BaseModel]r   rO   r   r    rM   list[type[BaseModel]])r   r  r   rO   r   r    rM   rN   )r   r  rM   zlist[tuple[str, FieldInfo]])rM   rW   )
r  r  r  rO   r   r   rE   r   rM   Callable[..., Any])ry   r  rM   r  )rv   rW   rw   r  rx   r  ry   r  rz   r  r{   r  rs   r   rM   rN   )F)r(  r   r   r  r4  r  r5  rO   r6  rO   r  r   r7  r  r8  r   rD  rL   rM   r   )r  rO   rM   rO   )rE   r  r   r    r  rL   rM   rN   )rE   r  r   r    r8  r   rM   rN   )
rE   r  r   r    rY  rO   r8  r   rM   ztuple[list[str], str])r5  rO   r6  rO   r7  r  r  tuple[str, ...]r4  r  rM   r  )r(  r   r   r  r   r  r4  r  r5  rO   r6  rO   r  rO   r]  r  rE   r  r   rO   r   r    r  r  r8  r   rD  rL   rM   rN   )r(  r   rA  zdict[str, str]r4  r  r5  rO   r6  rO   r  r   rM   rN   )rz  r   rM   r  r   )r   r  r  r  rM   rO   )rz  r   rM   rO   )
r   rO   r   r    r8  r   rD  rL   rM   rO   )r   r    rM   rL   )+rP   rQ   rR   r   r   add_argumentr*  r	   
add_parseradd_subparsersr   rA   r   r   r   r   r   r   r   r   r   r   r  propertyrv   r  r,  r   r?  rK  rR  rT  rS  rQ  rU  rV  r{  r  r  rN  rM  rr  rS   rT   s   @rG   r\   r\   \   sk   *^ %)DH)-*.&*,059)-!%+/*./3&*&*7;9G9T9T?M?`?`7H7S7S;I;X;X:/y`(y` "y` B	y`
 'y` (y` $y` *y` (3y` 'y` y` )y` (y` "-y` $y`  $!y`" #y`$ 5%y`& 7'y`( $=)y`* 5+y`,  9-y`. /y`0 
1y`v - -   & ;?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&	&*  "	
 %  
(JJ J *	J
 J J J J J J J J %J J "J  
!JX!`!` (!` 	!`
 !` !` !` 
!`FXC#VJDjj+4jEHj_cj	j2LrH   r\   )_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=   rV   rW   CliSubCommandCliPositionalArgrL   rX   r   r   rL  CliSuppressr   rO   CliUnknownArgsr\   r?   rH   rG   <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ML)71: MLrH   