
    	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^dS )'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 )_CliInternalArgParserTcli_exit_on_errorboolkwargsr   returnNonec                H     t                      j        di | || _        d S )N )super__init___cli_exit_on_error)selfr>   r@   	__class__s      t/var/www/html/web-builder-api.evdpl.com/venv/lib/python3.11/site-packages/pydantic_settings/sources/providers/cli.pyrF   z_CliInternalArgParser.__init__C   s.    ""6""""3    messagestrr   c                |    | j         st          d|           t                                          |           d S )Nzerror parsing CLI: )rG   r(   rE   error)rH   rL   rI   s     rJ   rO   z_CliInternalArgParser.errorG   sB    & 	A ?g ? ?@@@grK   )T)r>   r?   r@   r   rA   rB   )rL   rM   rA   r   )__name__
__module____qualname__rF   rO   __classcell__rI   s   @rJ   r=   r=   B   s`        4 4 4 4 4 4 4         rK   r=   c                      e Zd ZdS )CliMutuallyExclusiveGroupN)rP   rQ   rR   rD   rK   rJ   rV   rV   M   s        DrK   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dej        ej        ej        ej	        e
fd fd$Zedd&            Zedd*            Zedd-            Zddd.d fd2Zedd4            Zedd5            Zdd6dd8Zdd>Zdd?ZddDZddEZddHZddNZddOZddQZeddS            ZddXZddYZej        ej        ej        ej	        e
fddZZ	 dddeZddgZddiZddjZddmZ ddpZ!ddtZ"ddwZ#ddyZ$ddd{Z%dd|Z&dd}Z'dd~Z(ddZ) xZ*S )CliSettingsSourcea  
    Source class for loading settings values from CLI.

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

    Args:
        cli_prog_name: The CLI program name to display in help text. Defaults to `None` if cli_parse_args is `None`.
            Otherwise, defaults to sys.argv[0].
        cli_parse_args: The list of CLI arguments to parse. Defaults to None.
            If set to `True`, defaults to sys.argv[1:].
        cli_parse_none_str: The CLI string value that should be parsed (e.g. "null", "void", "None", etc.) into `None`
            type(None). Defaults to "null" if cli_avoid_json is `False`, and "None" if cli_avoid_json is `True`.
        cli_hide_none_type: Hide `None` values in CLI help text. Defaults to `False`.
        cli_avoid_json: Avoid complex JSON objects in CLI help text. Defaults to `False`.
        cli_enforce_required: Enforce required fields at the CLI. Defaults to `False`.
        cli_use_class_docs_for_groups: Use class docstrings in CLI group help text instead of field descriptions.
            Defaults to `False`.
        cli_exit_on_error: Determines whether or not the internal parser exits with error info when an error occurs.
            Defaults to `True`.
        cli_prefix: Prefix for command line arguments added under the root parser. Defaults to "".
        cli_flag_prefix_char: The flag prefix character to use for CLI optional arguments. Defaults to '-'.
        cli_implicit_flags: Whether `bool` fields should be implicitly converted into CLI boolean flags.
            (e.g. --flag, --no-flag). Defaults to `False`.
        cli_ignore_unknown_args: Whether to ignore unknown CLI args and parse only known ones. Defaults to `False`.
        cli_kebab_case: CLI args use kebab case. Defaults to `False`.
        cli_shortcuts: Mapping of target field name to alias names. Defaults to `None`.
        case_sensitive: Whether CLI "--arg" names should be read with case-sensitivity. Defaults to `True`.
            Note: Case-insensitive matching is only supported on the internal root parser and does not apply to CLI
            subcommands.
        root_parser: The root parser object.
        parse_args_method: The root parser parse args method. Defaults to `argparse.ArgumentParser.parse_args`.
        add_argument_method: The root parser add argument method. Defaults to `argparse.ArgumentParser.add_argument`.
        add_argument_group_method: The root parser add argument group method.
            Defaults to `argparse.ArgumentParser.add_argument_group`.
        add_parser_method: The root parser add new parser (sub-command) method.
            Defaults to `argparse._SubParsersAction.add_parser`.
        add_subparsers_method: The root parser add subparsers (sub-commands) method.
            Defaults to `argparse.ArgumentParser.add_subparsers`.
        formatter_class: A class for customizing the root parser help text. Defaults to `argparse.RawDescriptionHelpFormatter`.
    NTsettings_clstype[BaseSettings]cli_prog_name
str | Nonecli_parse_args)bool | list[str] | tuple[str, ...] | Nonecli_parse_none_strcli_hide_none_typebool | Nonecli_avoid_jsoncli_enforce_requiredcli_use_class_docs_for_groupsr>   
cli_prefixcli_flag_prefix_charcli_implicit_flagscli_ignore_unknown_argscli_kebab_casecli_shortcuts$Mapping[str, str | list[str]] | Nonecase_sensitiveroot_parserr   parse_args_methodCallable[..., Any] | Noneadd_argument_methodadd_argument_group_methodadd_parser_methodadd_subparsers_methodformatter_classrA   rB   c           	        ||n*|j                             dt          j        d                   | _        ||n|j                             dd           | _        ||n|j                             dd          | _        ||n|j                             dd          | _        |s| j        du rdnd	}|| _        ||n|j                             d
d          | _	        ||n|j                             dd          | _
        |	|	n|j                             dd          | _        |
|
n|j                             dd          | _        ||n|j                             dd          | _        | j        dz  | _        | j        rt|
                    d          s=|
                    d          s(|
                    dd                                          st'          d|
           | xj        dz  c_        ||n|j                             dd          | _        ||n|j                             dd          | _        ||n|j                             dd          | _        ||n|j                             dd           | _        ||nd}|s|t'          d          t1                                          |d| j        d| j        |           |?t5          | j        | j        |j        d nt9          |j                  || j        d          n|}|                     |||||||           | j        dvr| j        du rt          j        dd          | _        nEt=          | j        t>          t@          f          s$t'          dtC          | j                             | "                    | #                    | j$        | j                             d S d S ) Nr_   r   ra   rd   Frf   TrB   nullrg   rh   r>   ri    rj   -r+   .z'CLI settings source prefix is invalid: rk   rl   rm   rn   zGCase-insensitive matching is only supported on the internal root parser)env_nested_delimiterenv_parse_none_strenv_parse_enums
env_prefixrp   )r>   progdescriptionrx   prefix_charsallow_abbrev)rq   rr   rt   ru   rv   rw   rx   )NFr9   z<cli_parse_args must be a list or tuple of strings, received parsed_args)%model_configgetsysargvr_   ra   rd   rf   rc   rg   rh   r>   ri   rj   _cli_flag_prefix
startswithendswithreplaceisidentifierr(   rk   rl   rm   rn   rE   rF   r=   __doc__r   _connect_root_parser
isinstancelisttupletype_load_env_vars_parse_argsrq   )rH   r]   r_   ra   rc   rd   rf   rg   rh   r>   ri   rj   rk   rl   rm   rn   rp   rq   rr   rt   ru   rv   rw   rx   rI   s                           rJ   rF   zCliSettingsSource.__init__   s   6 +6MML<U<Y<YZiknkstukv<w<w 	 -8NNl>W>[>[\lnr>s>s 	
 "- *../CUKK 	 -8NNl>W>[>[\lns>t>t 	 " 	S+/+>$+F+FF"4 $/ ! *../EuMM 	! -8 *)*../NPUVV 	* !, *../BDII 	
 )3(>**LD]DaDabnprDsDs $/ ! *../EsKK 	!
 !% 9A =? 	#$$S)) \Z-@-@-E-E \ZM_M_`cegMhMhMuMuMwMw \#$Zj$Z$Z[[[OOs"OO "- *../CUKK 	 '2 $#*../H%PP 	$ -8NNl>W>[>[\lns>t>t 	 +6MML<U<Y<YZiko<p<p 	 ,:+E4 	k+"9 ijjj!$#6 ) 	 	
 	
 	
$ " ""&"8'$0$8$@DDf\MaFbFb /!6"     	 	!!#/ 3&?/"7+ 	" 	
 	
 	
 m33"d**&)hqrrl## 3dE]CC #nSWX\XkSlSlnn   D,<,<T=MtOb,c,cddddd 43rK   dict[str, Any]c                    d S NrD   rH   s    rJ   __call__zCliSettingsSource.__call__  s    *-#rK   args"list[str] | tuple[str, ...] | boolCliSettingsSource[T]c                   dS )a  
        Parse and load the command line arguments list into the CLI settings source.

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

        Returns:
            CliSettingsSource: The object instance itself.
        NrD   )rH   r   s     rJ   r   zCliSettingsSource.__call__  s	     	rK   r   ,Namespace | SimpleNamespace | dict[str, Any]c                   dS )a  
        Loads parsed command line arguments into the CLI settings source.

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

        Args:
            parsed_args: The parsed args to load.

        Returns:
            CliSettingsSource: The object instance itself.
        NrD   rH   r   s     rJ   r   zCliSettingsSource.__call__  	     	rK   )r   r   )list[str] | tuple[str, ...] | bool | None?Namespace | SimpleNamespace | dict[str, list[str] | str] | None%dict[str, Any] | CliSettingsSource[T]c               `   ||t          d          |a|du r|                     i           S |du rt          j        dd          }|                     |                     | j        |                    S ||                     |          S t                                                      S )Nz/`args` and `parsed_args` are mutually exclusiveFr   Tr9   )r(   r   r   r   r   rq   rE   r   )rH   r   r   rI   s      rJ   r   zCliSettingsSource.__call__/  s      7 QRRRu}}**r*:::t||x|&&43C3CDDTVZ3[3[&\\\$&&;&???77##%%%rK   Mapping[str, str | None]c                    d S r   rD   r   s    rJ   r   z CliSettingsSource._load_env_varsB  s    :=#rK   c                   dS )a  
        Loads the parsed command line arguments into the CLI environment settings variables.

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

        Args:
            parsed_args: The parsed args to load.

        Returns:
            CliSettingsSource: The object instance itself.
        NrD   r   s     rJ   r   z CliSettingsSource._load_env_varsE  r   rK   r   /Mapping[str, str | None] | CliSettingsSource[T]c                  |i S t          |t          t          f          rt          |          }g }|                                D ]\  }}t          |t
                    r|                     ||          ||<   4|                    d          rH|F|                    d          d         |z   }| j	        |         |         }|
                    |           | j	                                        D ]'}|                                D ]}||vr
| j        ||<   (d |                                D             }|rHt          |t                    t          fd|                                D                       sd|<   |                    | j                   t'          t)          t*          t,          t,          f         |          | j        | j        | j                  | _        | S )N:subcommand:r   c                V    i | ]&\  }}|                     d           s|t          u#||'S )r   )r   r!   ).0keyvals      rJ   
<dictcomp>z4CliSettingsSource._load_env_vars.<locals>.<dictcomp>m  sJ     
 
 
S<<..
 47>O3O3O 3O3O3OrK   )r   c              3  *   K   | ]} d |v 	|V  dS )r}   NrD   )r   
field_namelast_selected_subcommands     rJ   	<genexpr>z3CliSettingsSource._load_env_vars.<locals>.<genexpr>t  s8      wwjMeJhJhJhlvJvJvzJvJvJvJvwwrK   {})r   r   r   varsitemsr   _merge_parsed_listr   split_cli_subcommandsappendvaluesrc   maxlenanykeysupdate_cli_unknown_argsr8   r   r   rM   rp   env_ignore_emptyenv_vars)	rH   r   selected_subcommandsr   r   subcommand_namesubcommand_destsubcommandsr   s	           @rJ   r   z CliSettingsSource._load_env_varsV  s    IkI#?@@ 	,{++K*,*0022 	= 	=OJ#t$$ =*.*A*A#z*R*RJ''$$]33 =","2"23"7"7":S"@"&"7
"CO"T$++O<<<07799 	K 	KK#.#5#5#7#7 K K"*>>>373JK0K
 
'--//
 
 

   	='*+?S'I'I'I$wwwwK4D4D4F4Fwwwww =8<4541222&c"K00!#	
 
 rK   parsed_list	list[str]r   rM   %tuple[Optional[type], Optional[type]]c                b   | j                             |t                    }|t          u sBt          t	          |                    r&t          d t          |          D                       s|}n>|r5t          |          dk    s|d                             d          rt          nt          }||fS )Nc              3  v   K   | ]4}|t          d           ut          |          t          t          fv0|V  5d S r   )r   r#   dictr   r   type_s     rJ   r   zACliSettingsSource._get_merge_parsed_list_types.<locals>.<genexpr>  sU        T

**z%/@/@w/W/W /W/W/W/W rK   r9   r   [)
_cli_dict_argsr   r   r%   r#   r   r"   r   r   rM   )rH   r   r   
merge_typeinferred_types        rJ   _get_merge_parsed_list_typesz.CliSettingsSource._get_merge_parsed_list_types  s     (,,Z>>
$":j#9#9::   %j11      'MM$/uS5E5E5I5I[YZ^MfMfgjMkMk5IDDruM=((rK   c                L   	 g }d}|                      ||          \  }}|D ]g}t          |t                    s nN|                                }|                    d          r1|                    d          r|dd                                         }|r|                                }|                    d          r|                     |||          }d}n|                    d          s|                    d          r|                     ||          }nO	 |                     |||          }n6# t          $ r)}||u r||}|                     |||          }Y d }~nd }~ww xY wd}||s|                     |||          }i|t          u r|d	         S |t          u rdd                    |           dS i }	|D ])}
|	                    t          j        |
                     *t          j        |	          S # t           $ r}t#          d
| d|           d }~ww xY w)NFr   ]r9   ,{Tr   zParsing error encountered for z: )r   r   rM   stripr   r   _consume_comma_consume_object_or_array_consume_string_or_number
ValueErrorr   joinr   jsonloadsdumps	Exceptionr(   )rH   r   r   merged_listis_last_consumed_a_valuer   r   r   emerged_dictitems              rJ   r   z$CliSettingsSource._merge_parsed_list  s   *	T%'K',$(,(I(I+Wa(b(b%J" Z Z!#s++  Eiikk>>#&& ,3<<+<+< ,ad)//++C 8))++C~~c** 8"11#{D\]]3800>>#.. 	c#..2E2E 	c"&"?"?["Q"QCCc&*&D&DS+Wa&b&b#- c c c#-#>#>*+G-:
&*&D&DS+Wa&b&b	c
 480!  8" 0 Z--c;@XYYCS  "1~%t##3388K003333.0' 9 9D&&tz$'7'78888z+... 	T 	T 	T R R Rq R RSSS	TsO   DG? D54G? 5
E(?E#G? #E((2G? !G? =AG? ?
H#	HH#r   r   r   r?   c                D    |s|                     d           |dd          S )Nz""r9   )r   )rH   r   r   r   s       rJ   r   z CliSettingsSource._consume_comma  s+    ' 	%t$$$ABBxrK   c                   d}|                     d          rdnd}d}t          dt          |                    D ]}||         dk    r||dz
           dk    r| }!|r$||         dv r|dz  }4||         d	v rF|dz  }||         |k    r5|d
k    r/|                    |d |dz                       ||dz   d          c S t	          d| d          )Nr9   r   }r   F"\)r   r   )r   r   r   zMissing end delimiter ")r   ranger   r   r(   )rH   r   r   countclose_delimin_strconsumeds          rJ   r   z*CliSettingsSource._consume_object_or_array  s   !__S11:ccsaT++ 	0 	0HH~$$hl);t)C)C# 0h:--
h:--
>[00UaZZ&&tNhlN';<<<1////DkDDDEEErK   r   type[Any] | Nonec                   |t           urdnt          |          }d}|t          |          k     rK||         dk    r|dk    s||dz
           dk    r| }|s||         dk    rn|dz  }|t          |          k     K|rt          d          |d |                                         }|t          t           fv rc	 t          |           n<# t          $ r/ || j        k    rd}|d	vr|                    d          sd| d}Y nw xY w|	                    |           nd
 |
                    dd          D             \  }}|                    d          rQ|                    d          s<|                    d          s'|                    d          rt          d|           |                    d          |                    d          }}|	                    t          j        ||i                     ||d          S )Nr   Fr   r9   r   r   zMismatched quotesrz   )truefalserz   c              3     K   | ]}|V  d S r   rD   )r   kvs     rJ   r   z>CliSettingsSource._consume_string_or_number.<locals>.<genexpr>  s"      >>r>>>>>>rK   =z1Dictionary key=val parameter is a quoted string: )rM   r   r(   r   r   floatr   rc   r   r   r   r   r   r   )	rH   r   r   r   r   is_find_end_quote
val_stringr   r   s	            rJ   r   z+CliSettingsSource._consume_string_or_number  sM   "#--113t99!T""H~$$(a--41;MQU;U;U(9$9!$ h3)>)>MH T""  	5 3444)8)_**,,
$$$3j!!!! 3 3 3!888!'J%>>>zG\G\]`GaGa>!2Z!2!2!2J	3
 z****>>Z%5%5c1%=%=>>>HC~~c"" c3<<+<+< cS^^TWEXEX c]`]i]ijm]n]n c !aU_!a!abbbyy~~syy~~Ctz3*55666HIIs   9C	 	6DDmodeltype[BaseModel]
field_infor    list[type[BaseModel]]c                0   t          |j                  s|j        fnt          |j                  }| j        rt          d |D                       }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          |                    r"|                    t          |                     |S )Nc                4    g | ]}|t          d           u|S r   r   r   s     rJ   
<listcomp>z5CliSettingsSource._get_sub_models.<locals>.<listcomp>  s,     [ [ [55PTUYPZPZCZCZCZCZCZrK   F)is_include_originz.CliSubCommand is not outermost annotation for r}   z1CliPositionalArg is not outermost annotation for )r"   
annotationrd   r   r2   r0   r(   rP   r/   r   r7   r   r   )rH   r  r   r  field_types
sub_modelsr   s          rJ   _get_sub_modelsz!CliSettingsSource._get_sub_models  sH   ,4Z5J,K,KpZ"$$QYZdZoQpQp 	 " 	] [ [K [ [ [\\K,.
  	; 	;E)%.1BV[\\\ w#$rUZUc$r$rfp$r$rsss+E4E3G[`aaa w#$uX]Xf$u$uis$u$uvvv.u5566 ;:OP`afPgPg:h:h ;!!"25"9"9:::rK   c                    t           |j        v rd}nt          |j        v rd}nd S |j        t          urt          | d|j         d| d          d S )NCliImplicitFlagCliExplicitFlagz
 argument r}   z is not of type bool)r.   metadatar-   r  r?   r(   rP   )rH   r  r   r  cli_flag_names        rJ   _verify_cli_flag_annotationsz.CliSettingsSource._verify_cli_flag_annotations  sp    z222-MM!444-MMF ,,= m mEN m mZ m m mnnn -,rK   list[tuple[str, FieldInfo]]c           	     :   g }g g g }}}t          |                                          D ]\  }}t          |j        v r|                                st          d|j         d| d          t          ||          ^}}	t          |          dk    rt          d|j         d| d          d t          |j
                  D             }
|
D ];}t          |          s*t          |          st          d|j         d| d          <|                    ||f           t          |j        v rt          ||          ^}}	t          |          dk    rt          d|j         d| d          t          |j
        t           t"          t$          t&          t(          fd	
          }|s|                    ||f           |                    ||f           |                     |||           |                    ||f           |rt          |          dk    r8d                    d |D                       }t          |j         d|           |r;d                    d ||z   D                       }t          |j         d|           ||z   |z   |z   S )Nzsubcommand argument r}   z has a default valuer9   z has multiple aliasesc                4    g | ]}|t          d           u|S r   r	  r   s     rJ   r
  z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>  s-    "q"q"qUY^fjkofpfpYpYp5YpYpYprK   z$ has type not derived from BaseModelzpositional argument Tis_strip_annotated, c                    g | ]\  }}|S rD   rD   r   nameinfos      rJ   r
  z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>5  s    (X(X(X*$(X(X(XrK   z- has multiple variadic positional arguments: c                    g | ]\  }}|S rD   rD   r  s      rJ   r
  z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>8  s    (j(j(j*$(j(j(jrK   z= has variadic positional arguments and subcommand arguments: )r5   r   r0   r  is_requiredr(   rP   r4   r   r"   r  r   r   r   r/   r2   r   setr   r   r   r  r   )rH   r  positional_variadic_argpositional_argssubcommand_argsoptional_argsr   r  alias_names_r  
field_typeis_append_actionfield_namess                 rJ   _sort_arg_fieldsz"CliSettingsSource._sort_arg_fields  s*   "$:<b"-&7&>&>&D&D&F&F 	? 	?"J
!444!--// '(pu~(p(pPZ(p(p(pqqq&6z:&N&NOK!;''!+++,u5>,u,uT^,u,u,uvvv"q"qhz?T6U6U"q"q"qK&1  
 .z : : >ST^>_>_ "/ xu~ x x
 x x x# #   &&
J'?@@@@"j&999"2:z"J"Ja{##a'''(qu~(q(qPZ(q(q(qrrr#=)D#tXw+Odh$ $ $  ( M#**J
+CDDDD+22J
3KLLLL11%ZPPP$$j*%=>>>>" 	*++a//"ii(X(X@W(X(X(XYY#u~$q$qdo$q$qrrr  "ii(j(j@WZi@i(j(j(jkk#~qqdoqq   !88?J]ZZrK   rW   c                    | j         S )z#The connected root parser instance.)_root_parserr   s    rJ   rq   zCliSettingsSource.root_parser?  s       rK   parser_methodmethod_namer@   Callable[..., Any]c                     5 j         du r,dk    r&t           j        t                    r	 	 dd fd}|S dfd}|S S )NFrr   rq   r=   r   "list[str] | tuple[str, ...] | None	namespaceNamespace | NonerA   r   c                l   g }|r&t          j        t          j        |                    ng D ]z}dj         d}t	          j        d| d|          }|r=|                    d                                          |                    d          z   }|                    |           { | ||          S )Nr   z{1,2}z^(z[^\s=]+)(.*)r9   r+   )	shlexr   r   rj   rematchgrouplowerr   )	rq   r   r4  insensitive_argsargflag_prefixmatchedr/  rH   s	          rJ   parse_args_insensitive_methodzOCliSettingsSource._connect_parser_method.<locals>.parse_args_insensitive_methodN  s    
 $& <@H5;uz$'7'7888b 1 1C"It'@"I"I"IK h'F['F'F'FLLG J%mmA..4466q9I9II$++C0000$}[2BINNNrK   r@   c                 *    t          d d          )Nz0cannot connect CLI settings source root parser: z. is set to `None` but is needed for connectingr'   )r   r@   r0  s     rJ   none_parser_methodzDCliSettingsSource._connect_parser_method.<locals>.none_parser_method`  s/    # C{  C  C  C  rK   )NN)rq   r=   r   r3  r4  r5  rA   r   )r   r   r@   r   rA   r   )rp   r   r.  r=   )rH   r/  r0  r   r@   r@  rB  s   ```    rJ   _connect_parser_methodz(CliSettingsSource._connect_parser_methodD  s     %#u,,2224,.CDD 3 <@.2O O O O O O O O 10"     
 &% ! rK   c                @    |                      |d          dfd}|S )Nru   parserr   r@   rA   c                                        d          s                     d            | fi S fddD             }|dxx         dz  cc<    | fi |}t          |d          st          d           |j        d	i S )
N _is_cli_mutually_exclusive_grouprequiredc                D    i | ]}|v |                     |          S rD   )pop)r   r=  r@   s     rJ   r   zUCliSettingsSource._connect_group_method.<locals>.add_group_method.<locals>.<dictcomp>r  s1    $o$o$ocadhnananS&**S//anananrK   )titler   rK  z (mutually exclusive)add_mutually_exclusive_groupzcannot connect CLI settings source root parser: group object is missing add_mutually_exclusive_group but is needed for connectingrD   )rJ  hasattrr(   rL  )rE  r@   main_group_kwargsr:  add_argument_groups    `  rJ   add_group_methodzACliSettingsSource._connect_group_method.<locals>.add_group_methodm  s    ::@AA D

:&&&))&;;F;;;$o$o$o$oE]$o$o$o!!'***.EE*****6GG5FGGu&DEE 'l   :u9CCFCCCrK   )rE  r   r@   r   rA   r   )rC  )rH   ru   rP  rO  s      @rJ   _connect_group_methodz'CliSettingsSource._connect_group_methodj  sG    !889RTopp	D 	D 	D 	D 	D 	D  rK   c           
     $    i  _         d fd}| _        | j        r|nt          j        }                     |d           _                             |d           _                             |           _	                             |d	           _
                             |d
           _        | _        i  _        t          t                     _                              j         j        g  j         j        d g t*                     d S )Nr   r   r@   rA   r   c                 ~    t          j        | i |\  } }j        D ]}|j        |<   t          t          |           S r   )r   parse_known_argsr   r   r   )r   r@   unknown_argsdestrH   s       rJ   _parse_known_argszACliSettingsSource._connect_root_parser.<locals>._parse_known_args  sO    !/!@$!Q&!Q!QD,. < </;&t,,	4(((rK   rr   rt   rv   rw   rE  r  
added_args
arg_prefixsubcommand_prefixr:  alias_prefixesmodel_default)r   r   r@   r   rA   r   )r   r.  rl   r   
parse_argsrC  r   _add_argumentrQ  
_add_group_add_parser_add_subparsers_formatter_classr   r
   r   r   _add_parser_argsrq   r]   r   r!   )	rH   rq   rr   rt   ru   rv   rw   rx   rW  s	   `        rJ   r   z&CliSettingsSource._connect_root_parser~  s:    8:	) 	) 	) 	) 	) 	) ($595Q p 1 1WeWp667HJ]^^!889LNcdd445NOO667HJ]^^#::;PRijj /;=BMdBSBS##"o+ 	 		
 		
 		
 		
 		
rK   FrE  rY  rZ  r[  r:  r\  r]  is_model_suppressedr   c
                   d }
i }t          t          |                    st          t          |                    rt          t          |          |          sd n|}|                     |          D ]\  }}|                     |||          }t          |||| j                  \  }}|d         }t          |j	        v rl|D ]f}| 
                    t          |          dk    r|j        n|          }| | }| | }|| j        | d         |<   t          |          dk    rd n|j        }| j        r|j        d nt#          |j                  }|
6|                     |d| dt          |          dk    r|j        nd           n|
}
t'          |
d          r'|
j        r|
j        d d          d	| d
nd| d
|
_        |                     |                     |
||| j        |j        d nt#          |j                            |g | | d| | dd g t0                     h| j        t5          |j        t8          t:          t<          t>          t@          fd          }|o| }i }tB          |d<   | "                    ||||	          |d<   | #                    |j                  |d<   | j$        o|%                                o|t0          u |d<   |r|j&        |s| | | j'        d          n| | |d<   | (                    |||||          }|r
|d         |v r| )                    |||           tT          |j	        v r| +                    ||||          \  }| ,                    |||           |r%| -                    |||||||||||||	           3t\          |j	        v rg | j/        |d         <   S|s|Tta          |t<                    r | j1        |fi |}|t9          |          z  } | j2        |gfd|D             R i | |t9          |          z  } | j2        |gfd|D             R i | | 3                    ||||||           |S )N)alias_path_argsrp   r   r9   r   r   )rK  rV  r   metavarr   r   r   r   )helprx   r   r}   rX  Tr  rZ   ri  rH  rV  )r]  re  c              3  N   K   | ]}d t          |                    | V   d S r   r   r   r  r>  s     rJ   r   z5CliSettingsSource._add_parser_args.<locals>.<genexpr>-  s=      $_$_TKc$iiK(@%H$%H%H$_$_$_$_$_$_rK   c              3  N   K   | ]}d t          |                    | V   d S r   rk  rl  s     rJ   r   z5CliSettingsSource._add_parser_args.<locals>.<genexpr>2  s=      %`%`d[s4yy[)A&I4&I&I%`%`%`%`%`%`rK   )4r   r   r   
issubclassr,  r  r4   rp   r0   r  _check_kebab_namer   rP   r   r   rh   r   r   rb  rM  rh  rd  ra  rc  r!   r   r2   r  r   r"  r   r   r   CLI_SUPPRESS_help_format_metavar_formatrg   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)rH   rE  r  rY  rZ  r[  r:  r\  r]  re  
subparsersrg  r   r  r  r'  is_alias_path_onlypreferred_aliassubcommand_aliasr   r   subcommand_helpr*  is_parser_submodelr@   	arg_namesr>  s                             @rJ   rd  z"CliSettingsSource._add_parser_args  s>    
*,
  ] 3 3448MdS`NaNa8b8b #4#6#6>>DD
  	 '+&;&;E&B&B v	 v	"J
040D0DUJXb0c0cJ.>JX\Xk/ / /+K+ *!nO!444' - -E'+'='=*-j//A*=*=?( ($ *4&G5E&G&GO)3&F_&F&FOYhD)Z*D*D*DEoV.1*oo.A.AddzG]O9 c27-2G$$VTYTaMbMb &- ,,""/$.!;!;!;BEj//TUBUBU
(>(>[_	 -    (  z955   *1;z1#2#6MM9IMMMM!:&6!:!:!: #* ))#//&,!0,0,A050E6RWR_K`K`  0     $#%&0#D/#D#D#D->*R*R*R*R"')&7 *    =-^ $(#8#=)D#tXw+Odh$ $ $  &0%H8H4H")+$0y!!%!2!2:z=Zm!n!nv$($8$89N$O$Oy!-q*2H2H2J2Jq}`qOq z" ":&0&A&MVh&M "4?44T5H5J5JKK&999 v !//
<M~_jlvww	  VF^z%A%A++FJ@PQQQ$
(;;;-1-I-I
O]. .*I{ ''
MJJJ% ..""")#!""#&3,? /      %
(;;;=?D*6&>::+ (%eT22 E$3DOF$D$De$D$DE"d9oo5
**!$_$_$_$_U^$_$_$_  ci    #d9oo5
**"%`%`%`%`V_%`%`%`  dj   	$$V_j*VginooorK   r  c                @    | j         r|                    dd          S |S )Nr(  r|   )rm   r   )rH   r  s     rJ   ro  z#CliSettingsSource._check_kebab_name8  s&     	*<<S)))rK   r*  c                    |r?d|d<   t          |j        t          t          fd          r|j        | j        |d         <   d S d S d S )Nr   actionTr  rV  )r2   r  r   r   r   )rH   r@   r  r*  s       rJ   rv  z(CliSettingsSource._convert_append_action=  sg     	L'F8)**?$eijjj L6@6K#F6N333	L 	LL LrK   c                    |d         dk    r2| j         st          |j        v r!t          |j        vr|d= t          |d<   d S d S d S d S )Nrh  r?   r  )rk   r.   r  r-   r   )rH   r@   r  r]  s       rJ   rx  z$CliSettingsSource._convert_bool_flagC  sh    )&&' 9+;z?R+R+R 
(;;;9%#8x    '&;; ,S+RrK   r}  tuple[list[str], str]c                (   d}|d         g}t           |d<   |                     |                                          |d<   |                                o|t           u }|                    d          dk    r|d= |rdnd|d	<   n|sd
|d	<   |d= |d= ||fS )Nr{   rV  rZ   rh  r  r   +*nargs?rH  )r!   ro  upperr!  r   )rH   r@   r  r}  r]  r>  r  r!  s           rJ   rw  z)CliSettingsSource._convert_positional_argK  s     F^$	-y 22?3H3H3J3JKKy !,,..U=DU3U::h8++x %09cccF7OO 	"!F7O6N:+%%rK   r'  tuple[str, ...]c           	        g }|g|z   D ]_}|D ]Z}|                      || j        k    r| | n|                    |dd           |           }	|	vr|                    |	           [`| j        r^| j                                        D ]D\  }
}|
|v r;t          |t                    r|gn|}|                    fd|D                        E|S )Nr{   r9   c              3  $   K   | ]
}|v|V  d S r   rD   )r   aliasrY  s     rJ   r   z3CliSettingsSource._get_arg_names.<locals>.<genexpr>w  s.      $^$^ueS]F]F]UF]F]F]F]$^$^rK   )	ro  r   r   r   rn   r   r   rM   extend)rH   rZ  r[  r\  r'  rY  r  prefixr  arg_nametargetaliases
alias_lists        `       rJ   ru  z CliSettingsSource._get_arg_names`  s1     "	!l^3 	/ 	/F# / /11(DO;; %t%%%"NN+<b!DDLdLL 
 :--$$X.../  	_#'#5#;#;#=#= _ _Y&&.8#.F.F!S'GJ$$$^$^$^$^
$^$^$^^^^rK   r  r>  r  c                   t          |t                    rt          d          d }i }|d          d|d<   |j        |d<   |	d         |d<   t	          d |D                       |d<   |d         r"t          |          d	k    rt          d
          | j        r?t          |          d	k    r,|d         j        d nt          |d         j                  |d<   |t          urIt          t          |                    st          t          |                    rt          ||
          }n$|j        t          ur|j        }n|j        |j        }|6d| j         d}|d         t          | d|d                    |d<   n||d<   |d         }|                     |          p|}|r
t$          |d<   | j        sh|                    |d                    d|	d<   d|	d<   |rt$          nd|d          d|	d<    | j        |fi |} | j        |gfd|D             R i |	 |D ]=}|                     ||| | d||r|n|fd|d	d          D             ||	  	         >d S )Nz8cannot have nested models in a CliMutuallyExclusiveGroupr   z optionsrK  r   rH  c              3  @   K   | ]}t          |t                    V  d S r   )rn  rV   )r   r  s     rJ   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>  sF       E
 E
=BJu788E
 E
 E
 E
 E
 E
rK   rG  r9   z/cannot use union with CliMutuallyExclusiveGroupz	default: z (undefined)
r  r  r   constzset z from JSON string (default: {})ri  c              3  $   K   | ]
} | V  d S r   rD   rl  s     rJ   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>  s.      -[-[.Dd.D.D-[-[-[-[-[-[rK   r}   c                    g | ]	} | d 
S )r}   rD   )r   r  rZ  s     rJ   r
  z;CliSettingsSource._add_parser_submodels.<locals>.<listcomp>  s'    SSS4: 6t 6 6 6SSSrK   )	rE  r  rY  rZ  r[  r:  r\  r]  re  )rn  rV   r(   r   r   r   rh   r   r   r!   r   r   r   getattrrZ   default_factoryrc   _is_field_suppressedrp  rf   r   r`  r_  rd  )rH   rE  r  r  rY  rZ  r[  r>  r  r@   r   r  r'  r]  re  model_groupmodel_group_kwargsdesc_headerr}  s        ` `           rJ   ry  z'CliSettingsSource._add_parser_submodels{  sd   " e677 	\
   Z[[[-/)21&?&?&?7#,6,B=))/
);:&AD E
 E
FPE
 E
 E
 B
 B
=> @A 	Sc*ooXYFYFY QRRR- 	y#j//Q2F2F8B18M8U[ablmnbobw[x[x}- 111d=1122 C6KDQ^L_L_6`6` C 'z B B!)::: * 2+7 * : Kd&=KKKK!-0<4:k;p;pM_`mMn;p;p4q4q"=114?"=1%a."77
CCZGZ 	=0<}-" 	gil+++!F7O"F7O 3o9o	!9o9o9o 6N *$/&GG4FGGKD{f-[-[-[-[QZ-[-[-[fff_efff 	 	E!!%(</<<<"3%0Hkk6HSSSS;qrr?SSS+$7 " 
 
 
 
	 	rK   rg  dict[str, str]c                   |r|}|%t          |t                    r | j        |fi |n|}|                    d          }|r
|d d         n|}|                                D ]\  }	}
|rdn|	}	|| j        k    r| |	 n|                    |dd           |	 }i }t          |d<   d|d<   | |	 |d<   |
d	k    s|rd	|d
<   n
d|d<   d|d
<   ||vr-|                    |            | j	        || j
         | fi | d S d S )Nr}   r   r{   r9   rZ   zpydantic alias pathri  rV  r   rh  r   r  r   )r   r   r`  r   r   r   r   rp  r   r_  r   )rH   rE  rg  rY  rZ  r[  r:  contextis_nested_alias_pathr  rh  r  r@   s                rJ   rz  z)CliSettingsSource._add_parser_alias_paths  s     	`G >HPT>U>U`/$/&::E:::[`#-#6#6s#;#; ,@PCRCjJ!0!6!6!8!8 ` `g1;rrt )DO;; ")4)))&../@"aHHP$PP 
 *,$0y!!6v$.!6!6!6vf$$(<$(.F9%%'/F8$(.F9%:--%%h///&D&w43H0T(0T0T__X^___1	` 	`` `rK   objc                z    | j         st          |          S t          d t          |          D                       S )Nc                4    g | ]}|t          d           u|S r   r	  r   s     rJ   r
  z8CliSettingsSource._get_modified_args.<locals>.<listcomp>  s)    VVVEe4PT::>U>U%>U>U>UrK   )rd   r"   r   rH   r  s     rJ   _get_modified_argsz$CliSettingsSource._get_modified_args  s=    & 	XC== VVXc]]VVVWWWrK   obj_qualnamec                   d|v rK|d |                     d          dz            d ||                     d          dz   d          D             z   }d                    |          }|r| d| dS t          |          dk    r|nd| dS )	NJSONr9   c                    g | ]
}|d k    |S )r  rD   )r   r=  s     rJ   r
  z=CliSettingsSource._metavar_format_choices.<locals>.<listcomp>  s$    4t4t4tSfimsfsfsSfsfsfsrK   r   r   r   r   r   )indexr   r   )rH   r   r  rh  s       rJ   _metavar_format_choicesz)CliSettingsSource._metavar_format_choices  s    T>>0$**V,,q0014t4tDTZI[I[^_I_IaIaDb4t4t4ttD((4.. 	C"//W////!$ii1nn772Bw2B2B2BBrK   c           
     Z   t          |          }t          |          rd|j        v r|j        n|j        S |du rdS t	          |t
                    rt          |          S t          j        |          rt          |          S t          |          }|3t	          |t          t          j        t          j        f          s|j        }t!          |          rH|                     t%          t'          | j        |                     |                                        S t          j        |          rH|                     t%          t'          t          |                     |                                        S t/          |t0                    r|                     d |D                       S t	          |t2                    rn|                     t%          t'          | j        |                     |                              t5          |d          r|j        nt          |                    S |t          d          u r| j        S t9          |          rdS t	          |t                    r|j        S t          |                              d	d
                              dd
          S )z\Pretty metavar representation of a type. Adapts logic from `pydantic._repr.display_as_type`.z<locals>.z...Nc                    g | ]	}|j         
S rD   )r  )r   r   s     rJ   r
  z=CliSettingsSource._metavar_format_recurse.<locals>.<listcomp>  s    0I0I0Ic0I0I0IrK   rR   )r  r  ztyping.r{   ztyping_extensions.)r7   r6   rR   rP   r   r   reprr$   is_typealiastyperM   r#   r   typing
ForwardReftyping_extensionsrI   r%   r  r   map_metavar_format_recurser  
is_literalr)   r   r*   rM  rc   r   r   )rH   r  origins      rJ   r  z)CliSettingsSource._metavar_format_recurse  sw   s## 	#-1A#A#A3<<sGWWCZZ5^,, 	99,S11 	s88OC>*S49JL]Lh2i"j"j>-C6"" 	V//S9UW[WnWnorWsWs5t5t0u0uvvv&v.. 	V//Sd>U>UVY>Z>Z5[5[0\0\]]] d++ 	V//0I0IS0I0I0IJJJ^,, 	V//S5t7N7Ns7S7STTUU18n1M1M[S--SVWZS[S[ 0    DJJ**C   	V6T"" 	V##99$$Y33;;<PRTUUUrK   c                T    |                      |                              dd          S )Nr  r   )r  r   r  s     rJ   rr  z!CliSettingsSource._metavar_format   s&    ++C0088sCCCrK   c                T   |j         r|j         nd}|s|                     |          rt          S |                                r1|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|                     |           d}n_|j        t          d fvr*t          |j        |j                  }d||j        n| d}n%|j        d|                     |j                   d}||rd	| n|z  }t%          t          | j                  t(                    r|                    d
d          n|S )Nr{   zifdef: z (z	required)(z
(default: )z(default factory:  %z%%)r   r  rp  r!  r!   r/   r  rc   r   r   r   r  r6   rr  rZ   r3   r  r  rn  r.  r   r   )	rH   r   r  r]  re  _helpifdefrZ   	enum_names	            rJ   rq  zCliSettingsSource._help_format#  s    +5*@H
&&b 	 $";";J"G"G 	 !!## 	9:KT9R(R(R 
(;;;%2%:		%Q.e....=Q=Q=Q=QQ=4#:===Gd=1122 c6KDQ^L_L_6`6` cLw}j'I'ILLL'8$&???LQ^D_D_?Ut/C/CM/R/RUUU#,=t+DDD89NPZPbcc	`Y=Nz'9'9T]```+7bt/C/CJD^/_/_bbbe8]]]]8E+5d4;L6M6M~+^+^iu}}S$'''diirK   c                T    |j         r|j         nd}|t          k    pt          |j        v S )Nr{   )r   rp  r  )rH   r  r  s      rJ   r  z&CliSettingsSource._is_field_suppressed<  s/    *4*@H
&&b$K
8K(KKrK   )0r]   r^   r_   r`   ra   rb   rc   r`   rd   re   rf   re   rg   re   rh   re   r>   re   ri   r`   rj   r`   rk   re   rl   re   rm   re   rn   ro   rp   re   rq   r   rr   rs   rt   rs   ru   rs   rv   rs   rw   rs   rx   r   rA   rB   )rA   r   )r   r   rA   r   )r   r   rA   r   )r   r   r   r   rA   r   )rA   r   )r   r   rA   r   )r   r   r   rM   rA   r   )r   r   r   rM   rA   rM   )r   rM   r   r   r   r?   rA   rM   )r   rM   r   r   rA   rM   )r   rM   r   r   r   r   rA   rM   )r  r  r   rM   r  r    rA   r  )r  r  r   rM   r  r    rA   rB   )r  r  rA   r  )rA   rW   )
r/  rs   r0  rM   r   r   r@   r   rA   r1  )ru   rs   rA   r1  )rq   rW   rr   rs   rt   rs   ru   rs   rv   rs   rw   rs   rx   r   rA   rB   )F)rE  r   r  r  rY  r   rZ  rM   r[  rM   r:  r   r\  r   r]  r   re  r?   rA   r   )r  rM   rA   rM   )r@   r   r  r    r*  r?   rA   rB   )r@   r   r  r    r]  r   rA   rB   )
r@   r   r  r    r}  rM   r]  r   rA   r  )rZ  rM   r[  rM   r\  r   r'  r  rY  r   rA   r   )rE  r   r  r  r  r  rY  r   rZ  rM   r[  rM   r>  rM   r  r   r@   r   r   rM   r  r    r'  r  r]  r   re  r?   rA   rB   )rE  r   rg  r  rY  r   rZ  rM   r[  rM   r:  r   rA   rB   )r  r   rA   r  r   )r   r   r  r`   rA   rM   )r  r   rA   rM   )
r   rM   r  r    r]  r   re  r?   rA   rM   )r  r    rA   r?   )+rP   rQ   rR   r   r   add_argumentrO  r	   
add_parseradd_subparsersr   rF   r   r   r   r   r   r   r   r   r  r  r,  propertyrq   rC  rQ  r   rd  ro  rv  rx  rw  ru  ry  rz  r  r  r  rr  rq  r  rS   rT   s   @rJ   r\   r\   \   s       + +` %)DH)-*.&*,059)-!%+/*./3&*>B&*7;9G9T?M?`7H7S;I;X:1e e e e e e eB --- X-   X    X& ;?W[	& & & & & & & && === X=   X" ae* * * * * *X) ) ) )&+T +T +T +TZ   
F F F F$   :   "	o 	o 	o 	o+[ +[ +[ +[Z ! ! ! X!$! $! $! $!L       0 :H9T?M?`7H7S;I;X:&
 &
 &
 &
 &
d %*P P P P Pd   
L L L L9 9 9 9& & & &*   6L L L L\!` !` !` !`FX X X XC C C C C#V #V #V #VJD D D Dj j j j2L L L L L L L LrK   r\   )_r   
__future__r   _annotationsr   r8  r7  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CliPositionalArgr?   rX   r  r  rp  CliSuppressr   rM   CliUnknownArgsr\   rD   rK   rJ   <module>r     sa   - - 2 2 2 2 2 2  				  



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