
    ߌ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 ddlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(Z(ddl)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl(m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZBmCZC ddlmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK ddlAmLZLmMZMmNZNmOZOmPZPmQZQmRZR ddlSmTZT erddlUmVZV  G d de      ZW G d  d!e,      ZX G d" d#e,      ZY e$d$      ZZee%eZdf   eJf   Z[eeZeIf   Z\ e$d%e]&      Z^ee^eHf   Z_ee^eGf   Z`e
ZaeeZeaf   Zbeeced    e-g '      eKeEf   Ze G d( d)eTe!eZ         Zfy)*z'Command-line interface settings source.    )annotationsN)SUPPRESSArgumentParserBooleanOptionalAction	NamespaceRawDescriptionHelpFormatter_SubParsersAction)defaultdict)MappingSequence)Enum)cached_property)dedent)SimpleNamespace)TYPE_CHECKING	AnnotatedAnyCallableGenericNoReturnOptionalTypeVarUnioncastoverload)AliasChoices	AliasPath	BaseModelFieldPrivateAttr)Representation)is_model_class)is_pydantic_dataclass)	FieldInfo)PydanticUndefined)get_args
get_origin)typing_objects)is_union_origin   SettingsError)_lenient_issubclass_WithArgsTypes   )ForceDecodeNoDecodePydanticModel_CliExplicitFlag_CliImplicitFlag_CliPositionalArg_CliSubCommand_CliUnknownArgs)_annotation_contains_types_annotation_enum_val_to_name_get_alias_names_get_model_fields_is_function_strip_annotatedparse_env_vars   )EnvSettingsSource)BaseSettingsc                  .     e Zd Zdd fdZd fdZ xZS )_CliInternalArgParserc                2    t        |   di | || _        y )N )super__init___cli_exit_on_error)selfcli_exit_on_errorkwargs	__class__s      f/var/www/html/aiagenthome/venv/lib/python3.12/site-packages/pydantic_settings/sources/providers/cli.pyrG   z_CliInternalArgParser.__init__M   s    "6""3    c                X    | j                   st        d|       t        |   |       y )Nzerror parsing CLI: )rH   r,   rF   error)rI   messagerL   s     rM   rP   z_CliInternalArgParser.errorQ   s+    &&"5gY ?@@grN   )T)rJ   boolrK   r   returnNone)rQ   strrS   r   )__name__
__module____qualname__rG   rP   __classcell__rL   s   @rM   rC   rC   L   s    4 rN   rC   c                      e Zd Zy)CliMutuallyExclusiveGroupN)rV   rW   rX   rE   rN   rM   r\   r\   W   s    rN   r\   c                      e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   g Zded<   i Zded<    ed      Zded<    ei       Zded<    ed      Z	ded<    e       Z
ded<   	 	 	 	 	 	 	 	 d* fdZed+d       Zd,dZed-d       Zed.d       Zed/d        Zed/d!       Zed0d"       Zed1d#       Zed2d$       Zed/d%       Zed3d&       Zed3d'       Zed3d(       Zed3d)       Z xZS )4_CliArgr   modelrU   
field_name
arg_prefixrR   case_sensitivehide_none_type
kebab_caseOptional[bool]enable_decodingintenv_prefix_len	list[str]argsdict[str, Any]rK   rE   tuple[str, ...]_alias_namesdict[str, Optional[int]]_alias_pathsF_is_alias_path_onlyr$   _field_infoc                B   t        
|   di | || _        t        | j                  | j
                  | j                  | j                        \  | _        | _	        | j                  j                         D ci c]  \  }}| j                   | | }}}| j                  rj| j                  D ]Z  }| j                  |      }| j                  g i d      || j                     |<   || j                     |   || j
                     |<   \ nB| j                   |vr4| || j                      d <   || j                      d    || j
                     d <   |j                         D ]8  \  }	}| j                  g i d      ||	   |<   ||	   |   || j
                     |<   : y c c}}w )N)alias_path_argsrb   )rj   rK   )updaterE   )rF   rG   rq   r:   r`   
field_inforo   rb   rm   rp   itemsra   subcommand_dest
sub_modelssubcommand_alias
model_copydest)rI   ru   
parser_mapvaluesnameindexalias_path_dests	sub_modelry   alias_path_destrL   s             rM   rG   z_CliArg.__init__l   s    	"6"%6FOOT__d>O>O`d`s`s7
343 RVQbQbQhQhQjkQj+$t/v6=Qjk!__	#'#8#8#C EI__egsu\v_Ew
4//01AB@J4K_K_@`aq@r
4??+,<= - YY..*.Jtyy!$'0:4990Ed0KJt'-&6&<&<&>"OU15QS_aHb1cJ'.1;O1LU1SJt'. '? ls   9Fc                .    |r|j                  dd      S |S )N_-)replace)clsr~   rd   s      rM   get_kebab_casez_CliArg.get_kebab_case   s    )3t||C%==rN   c                    | j                  t        | j                        dkD  r|j                  | j
                        S | j                  | j
                        S )Nr?   )r   lenrx   rV   preferred_aliasrd   )rI   r   s     rM   ry   z_CliArg.subcommand_alias   sS    """%doo"6":IVZVeVe
 	
@D@T@TVZVeVe
 	
rN   c                    | j                   S N)rq   rI   s    rM   ru   z_CliArg.field_info   s    rN   c                \    t         | j                  j                  v r| j                   dS d S )N:subcommand)r6   ru   metadatara   r   s    rM   rw   z_CliArg.subcommand_dest   s+    2@DOOD\D\2\$//"+.fbffrN   c                    | j                   sU| j                  rI| j                  j                  3| j                  s'| j                   | j
                   | j                  d  S | j                   | j
                   S r   )rw   ra   ru   validation_aliasis_parser_submodelr   rh   r   s    rM   r{   z_CliArg.dest   ss     $$00<++ oo&t';';&<=d>Q>Q>STT//"4#7#7"899rN   c                v    | j                   r| j                  d   j                  dd      S | j                  d   S )Nr   r   r   )rd   rj   r   r   s    rM   preferred_arg_namez_CliArg.preferred_arg_name   s1    15tyy|##C-RdiiPQlRrN   c           	        t        | j                  j                        s| j                  j                  fnt        | j                  j                        }| j                  r't	        |D cg c]  }|t        d       us| c}      }g }|D ]  }t        |t        fd      r/t        d| j                  j                   d| j                         t        |t        fd      r/t        d| j                  j                   d| j                         t        t        |            st        t        |            s|j!                  t        |              |S c c}w )NF)is_include_originz.CliSubCommand is not outermost annotation for .z1CliPositionalArg is not outermost annotation for )r&   ru   
annotationrc   tupletyper8   r6   r,   r_   rV   r`   r5   r"   r=   r#   append)rI   field_typestype_rx   s       rM   rx   z_CliArg.sub_models   sF    DOO667 __'')$//445 	
 K [K55PTUYPZCZK [\K,.
 E)%.1BV[\#DTZZEXEXDYYZ[_[j[jZkl  ,E4E3G[`a#G

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

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

 ` ` 
 
rN   r^   T_CliBoolFlag)bound)defaultc                      e Zd ZdZdddddddddddddddddej
                  ej                  ej                  ej                  e
f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d* fdZed+d       Zed,d       Zed-d       Zddd	 	 	 	 	 d. fd	Zed/d
       Zed-d       Zdd	 	 	 d0dZ	 	 	 	 	 	 	 	 d1dZ	 	 	 	 	 	 d2dZd3dZd4dZd5dZd6dZd7dZd8dZd9dZed:d       Z	 	 	 	 	 	 	 	 	 	 d;dZd<dZej
                  ej                  ej                  ej                  e
f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d=dZ	 d>	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d?dZd@dZdAdZ	 	 	 	 	 	 	 	 	 	 dBdZ 	 	 	 	 	 	 	 	 	 	 	 	 dCdZ!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dDd Z"	 	 	 	 	 	 	 	 	 	 	 	 	 	 dEd!Z#dFd"Z$dGdHd#Z%dId$Z&dId%Z'	 	 	 	 	 	 	 	 	 	 dJd&Z(dKd'Z)	 	 	 	 	 	 	 	 	 	 dLd(Z*d>dMd)Z+ xZ,S )NCliSettingsSourcea  
    Source class for loading settings values from CLI.

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

    Args:
        cli_prog_name: The CLI program name to display in help text. Defaults to `None` if cli_parse_args is `None`.
            Otherwise, defaults to sys.argv[0].
        cli_parse_args: The list of CLI arguments to parse. Defaults to None.
            If set to `True`, defaults to sys.argv[1:].
        cli_parse_none_str: The CLI string value that should be parsed (e.g. "null", "void", "None", etc.) into `None`
            type(None). Defaults to "null" if cli_avoid_json is `False`, and "None" if cli_avoid_json is `True`.
        cli_hide_none_type: Hide `None` values in CLI help text. Defaults to `False`.
        cli_avoid_json: Avoid complex JSON objects in CLI help text. Defaults to `False`.
        cli_enforce_required: Enforce required fields at the CLI. Defaults to `False`.
        cli_use_class_docs_for_groups: Use class docstrings in CLI group help text instead of field descriptions.
            Defaults to `False`.
        cli_exit_on_error: Determines whether or not the internal parser exits with error info when an error occurs.
            Defaults to `True`.
        cli_prefix: Prefix for command line arguments added under the root parser. Defaults to "".
        cli_flag_prefix_char: The flag prefix character to use for CLI optional arguments. Defaults to '-'.
        cli_implicit_flags: Whether `bool` fields should be implicitly converted into CLI boolean flags.
            (e.g. --flag, --no-flag). Defaults to `False`.
        cli_ignore_unknown_args: Whether to ignore unknown CLI args and parse only known ones. Defaults to `False`.
        cli_kebab_case: CLI args use kebab case. Defaults to `False`.
        cli_shortcuts: Mapping of target field name to alias names. Defaults to `None`.
        case_sensitive: Whether CLI "--arg" names should be read with case-sensitivity. Defaults to `True`.
            Note: Case-insensitive matching is only supported on the internal root parser and does not apply to CLI
            subcommands.
        root_parser: The root parser object.
        parse_args_method: The root parser parse args method. Defaults to `argparse.ArgumentParser.parse_args`.
        add_argument_method: The root parser add argument method. Defaults to `argparse.ArgumentParser.add_argument`.
        add_argument_group_method: The root parser add argument group method.
            Defaults to `argparse.ArgumentParser.add_argument_group`.
        add_parser_method: The root parser add new parser (sub-command) method.
            Defaults to `argparse._SubParsersAction.add_parser`.
        add_subparsers_method: The root parser add subparsers (sub-commands) method.
            Defaults to `argparse.ArgumentParser.add_subparsers`.
        formatter_class: A class for customizing the root parser help text. Defaults to `argparse.RawDescriptionHelpFormatter`.
    NTc           	         ||n,|j                   j                  dt        j                  d         | _        ||n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        |s| j                  du rdnd}|| _        ||n|j                   j                  d	d      | _        ||n|j                   j                  d
d      | _	        |	|	n|j                   j                  dd      | _
        |
|
n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        | j                  dz  | _        | j                  re|
j                  d      s1|
j                  d      s |
j!                  dd      j#                         st%        d|
       | xj                  dz  c_        ||n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        ||n|j                   j                  dd       | _        ||nd}|s|t%        d      t.        | a  |d| j                  d| j                  |       |Pt3        | j                  | j                  |j4                  d nt7        |j4                        || j                  d      n|}| j9                  |||||||       |dvrr|du rt        j                  dd  }n-t;        |t<        t>        f      st%        dtA        |             | jC                  | jE                  | jF                  |             y y )Ncli_prog_namer   cli_hide_none_typeFcli_avoid_jsonTrT   nullcli_enforce_requiredcli_use_class_docs_for_groupsrJ   
cli_prefix cli_flag_prefix_charr   r/   r   z'CLI settings source prefix is invalid: cli_implicit_flagscli_ignore_unknown_argscli_kebab_casecli_shortcutszGCase-insensitive matching is only supported on the internal root parser)env_nested_delimiterenv_parse_none_strenv_parse_enums
env_prefixrb   )rJ   progdescriptionformatter_classprefix_charsallow_abbrev)root_parserparse_args_methodadd_argument_methodadd_argument_group_methodadd_parser_methodadd_subparsers_methodr   r   r?   z<cli_parse_args must be a list or tuple of strings, received parsed_args)$model_configgetsysargvr   r   r   cli_parse_none_strr   r   rJ   r   r   _cli_flag_prefix
startswithendswithr   isidentifierr,   r   r   r   r   rF   rG   rC   __doc__r   _connect_root_parser
isinstancer   r   r   _load_env_vars_parse_argsr   )rI   settings_clsr   cli_parse_argsr   r   r   r   r   rJ   r   r   r   r   r   r   rb   r   r   r   r   r   r   r   rL   s                           rM   rG   zCliSettingsSource.__init__  s   6 +6ML<U<U<Y<YZiknkskstukv<w 	
 "- **../CUK 	 -8Nl>W>W>[>[\lns>t 	 "+/+>+>$+FF"4 $/ !**../EuM 	! -8 ***../NPUV 	* !, **../BDI 	
 )3(>*LD]D]DaDabnprDs $/ !**../EsK 	!
 !% 9 9A =??$$S)Z-@-@-EZM_M_`cegMhMuMuMw#&Mj\$Z[[OOs"O "- **../CUK 	 '2 $**../H%P 	$ -8Nl>W>W>[>[\lns>t 	 +6ML<U<U<Y<YZiko<p 	 ,:+E4+"9 ijj!$#66 ) 	 	
$ " ""&"8"8''$0$8$8$@Df\MaMaFb /!66"  	 	!!#/ 3&?/"7+ 	" 	
 .%!$!"u>#RSWXfSgRhi  D,<,<T=M=M~,^_ /rN   c                     y r   rE   r   s    rM   __call__zCliSettingsSource.__call__  s    *-rN   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.
        NrE   )rI   rj   s     rM   r   zCliSettingsSource.__call__  s     	rN   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.
        NrE   rI   r   s     rM   r   zCliSettingsSource.__call__       	rN   )rj   r   c                  ||t        d      |Y|du r| j                  i       S |du rt        j                  dd  }| j                  | j	                  | j
                  |            S || j                  |      S t        |          S )Nz/`args` and `parsed_args` are mutually exclusiveFr   Tr?   )r,   r   r   r   r   r   rF   r   )rI   rj   r   rL   s      rM   r   zCliSettingsSource.__call__  s      7 QRRu}**r*::t|xx|&&43C3CDDTDTVZ3[&\\$&&;&??7#%%rN   c                     y r   rE   r   s    rM   r   z CliSettingsSource._load_env_vars  s    :=rN   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.
        NrE   r   s     rM   r   z CliSettingsSource._load_env_vars  r   rN   r   c                  |i S t        |t        t        f      rt        |      }g }t	        |j                               D ]  \  }}t        |t              rx| j                  |||      r*| j                  j                  |i       j                  d       }|r!|j                  rdj                  |      ||<   x| j                  ||      ||<   |j                  d      s||j                  | j                  |   |   j                          | j                  j                         D ]i  \  }}t        |t              s|j                  d      s)|j!                         D cg c]  }|j                   c}D ]  }	|	|vs| j"                  ||	<    k |j                         D 
ci c]!  \  }
}|
j                  d      s|t$        ur|
|# }}
}|r8t'        |t(              t+        fd|j-                         D              sd|<   |j/                  | j0                         t3        t5        t6        t        t        f   |      | j8                  | j:                  | j"                        | _        | S c c}w c c}}
w )N,r   )keyc              3  2   K   | ]  } d |v s|  yw)r   NrE   ).0r`   last_selected_subcommands     rM   	<genexpr>z3CliSettingsSource._load_env_vars.<locals>.<genexpr>  s&     w4FjMeLffgJhlvJvz4Fs   {})r   r   r   varsr   rv   %_is_nested_alias_path_only_workaround_parser_mapr   r   join_merge_parsed_listr   r   r{   rU   r}   r   r%   maxr   anykeysrt   _cli_unknown_argsr>   r   r   rb   env_ignore_emptyenv_vars)rI   r   selected_subcommandsr`   valcli_argarg_destarg_mapargrw   r   r   s              @rM   r   z CliSettingsSource._load_env_vars  sP    IkI#?@{+K*,#K$5$5$78OJ#t$==k:WZ[ **..z2>BB4Hw33.1hhsmK
+*.*A*A#z*RJ'$$]3$++D,<,<Z,H,M,R,RS  9  "&!1!1!7!7!9Hg(C(X->->}-M<CNN<L'M<LS<L'MO&.BB7;7N7NO4 (N ": (--/
/S<<.3>O3O H/ 	 

  '*+?S'I$wK4D4D4Fww8<454112&c"K0!!##	
 / (N
s   'I7+&I<c                |   | j                   j                  |i       j                         }|syt        t	        |            }|j
                  ro|j                  j                  d      rT||= |j                  dd }d|j                   d| j                  ||       }||vr
d| d||<   y
||   dd  d	| d||<   y
y)z
        Workaround for nested alias path environment variables not being handled.
        See https://github.com/pydantic/pydantic-settings/issues/670
        Fr   N"z": {}, T)
r   r   r}   nextiterr   ra   r   r   r  )rI   r   r`   r
  	known_argr  nested_dest
nested_vals           rM   r   z7CliSettingsSource._is_nested_alias_path_only_workaround  s     $$((R8??A	4	?#!!cnn&=&=c&BJ'.."-KS001T5L5LSR\5]4^_J k1 ZL# $
  $K0"56bBG $
 rN   c                $   | j                   j                  |t              }|t        u s/t        t	        |            rt        d t        |      D              s|}||fS |r(t        |      dkD  s|d   j                  d      rt        nt        }||fS )Nc              3  h   K   | ]*  }|t        d       urt        |      t        t        fvr| , y wr   )r   r'   r   r   )r   r   s     rM   r   zACliSettingsSource._get_merge_parsed_list_types.<locals>.<genexpr>7  s4      1ET
*z%/@w/W 1s   02r?   r   [)
_cli_dict_argsr   r   r)   r'   r  r&   r   r   rU   )rI   parsed_listr`   
merge_typeinferred_types        rM   _get_merge_parsed_list_typesz.CliSettingsSource._get_merge_parsed_list_types0  s     ((,,Z>
$":j#9: %j1  'M =(( %0S5E5I[YZ^MfMfgjMkDruM=((rN   c                   g }d }| j                   j                  |i       }t        |      D ]  \  }}|j                  |      }|d u xs |j                   }	||	}n||	k7  rt	        d      |r|j                  dd      }n'|j                  d      r|j                  d      r|dd }|j                  |        dj                  |      }
|rd|
 d	S |
S )
NzKMixing Decode and NoDecode across different AliasPath fields is not allowed\z\\r  r?   r  r   r  ])
r   r   	enumerater   r,   r   r   r   r   r  )rI   merged_listr`   decode_listis_use_decodecli_arg_mapr   itemr  	is_decodemerged_list_strs              rM   _merged_list_to_strz%CliSettingsSource._merged_list_to_strC  s    !#(,&&**:r:$[1KE4!ooe,G4Cw/C/C+CI$ ))+#$qrr||D&1%$--*<Abzt$ 2 ((;/)6?#1%KOKrN   c                   	 g }d}| j                  ||      \  }}|D ]  }t        |t              s n|j                         }|j	                  d      r$|j                  d      r|dd j                         }|r|j                         }|j	                  d      r| j                  |||      }d}nK|j	                  d      s|j	                  d      r| j                  ||      }n	 | j                  |||      }d}|r|r| j                  |||      } |t        u r|d	   S |t        u r| j                  ||      S i }	|D ]&  }
|	j                  t        j                  |
             ( t        j                  |	      S # t        $ r%}||u r||}| j                  |||      }Y d }~d }~ww xY w# t         $ r}t#        d
| d|       d }~ww xY w)NFr  r$  r?   r  r   r  Tr   zParsing error encountered for z: )r!  r   rU   stripr   r   _consume_comma_consume_object_or_array_consume_string_or_number
ValueErrorr   r-  rt   jsonloadsdumps	Exceptionr,   )rI   r  r`   r&  is_last_consumed_a_valuer  r   r
  emerged_dictr*  s              rM   r  z$CliSettingsSource._merge_parsed_listV  s   *	T%'K',$(,(I(I+Wa(b%J"!#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 #8 S "1~%t#//ZHH.0'D&&tzz$'78 (zz+..# $. c#-#>*+G-:
&*&D&DS+Wa&b	c$  	T"@Bqc RSS	Ts[   C#F0 &E?9F0 >F0 !F0 #F0 =AF0 ?	F-F(#F0 (F--F0 0	G9G

Gc                2    |s|j                  d       |dd  S )Nz""r?   )r   )rI   r*  r&  r8  s       rM   r0  z CliSettingsSource._consume_comma  s    't$ABxrN   c                L   d}|j                  d      rdnd}d}t        dt        |            D ]e  }||   dk(  r||dz
     dk7  r| }|r||   dv r|dz  }*||   d	v s2|dz  }||   |k(  s@|d
k(  sF|j                  |d |dz           ||dz   d  c S  t	        d| d      )Nr?   r  r  r$  Fr  r#  )r  r  )r  r$  r   zMissing end delimiter ")r   ranger   r   r,   )rI   r*  r&  countclose_delimin_strconsumeds          rM   r1  z*CliSettingsSource._consume_object_or_array  s    !__S1csaT+HH~$hl);t)C#h:-
h:-
>[0UaZ&&tNhl';<1// , 5k]!DEErN   c                F   |t         urdn
t        |      }d}|t        |      k  r:||   dk(  r|dk(  s||dz
     dk7  r| }|s	||   dk(  rn|dz  }|t        |      k  r:|rt        d      |d | j                         }|t        t         fv r	 t        |       |j                  |       nd
 |j                  dd      D        \  }}|j                  d      rA|j                  d      s0|j                  d      s|j                  d      rt        d|       |j                  d      |j                  d      }}|j                  t        j                  ||i             ||d  S # t        $ r0 || j                  k(  rd}|d	vr|j                  d      sd| d}Y w xY w)Nr   Fr  r?   r#  r   zMismatched quotesr   )truefalser   c              3      K   | ]  }|  y wr   rE   )r   kvs     rM   r   z>CliSettingsSource._consume_string_or_number.<locals>.<genexpr>  s     >%=r%=s   =z1Dictionary key=val parameter is a quoted string: )rU   r   r,   r/  r   floatr3  r   r   r   splitr   r4  r6  )	rI   r*  r&  r  rA  is_find_end_quote
val_stringr   r
  s	            rM   r2  z+CliSettingsSource._consume_string_or_number  s   "#-13t9!T"H~$(a-41;MQU;U(9$9!$h3)>MH T"  344)8_**,
$$3j! z*>Z%5%5c1%=>HC~~c"3<<+<S^^TWEX]`]i]ijm]n #TU_T`!abbyy~syy~Ctzz3*56HI  3!8!88!'J%>>zG\G\]`Ga#$ZL!2J	3s   E' '5F F c                    t         |j                  v rd}nt        |j                  v rd}ny |j                  t        urt        | d|j                   d| d      y )NCliImplicitFlagCliExplicitFlagz
 argument r   z is not of type bool)r4   r   r3   r   rR   r,   rV   )rI   r_   r`   ru   cli_flag_names        rM   _verify_cli_flag_annotationsz.CliSettingsSource._verify_cli_flag_annotations  sb    z222-M!4!44-M  ,=/ENN;K1ZLXl mnn -rN   c           	     4   g }g g g }}}t        |      j                         D ]  \  }}t        |j                  v r|j	                         st        d|j                   d| d      t        ||      ^}}	t        |      dkD  rt        d|j                   d| d      t        |j                        D 
cg c]  }
|
t        d       us|
 }}
|D ]5  }t        |      rt        |      rt        d|j                   d| d       |j                  ||f       t        |j                  v rt        ||      ^}}	t        |      dkD  rt        d|j                   d| d      t!        |j                  t"        t$        t&        t(        t*        fd	      }|s|j                  ||f       |j                  ||f       | j-                  |||       |j                  ||f        |rt        |      dkD  r>d
j/                  |D cg c]  \  }}|	 c}}      }t        |j                   d|       |rAd
j/                  ||z   D cg c]  \  }}|	 c}}      }t        |j                   d|       ||z   |z   |z   S c c}
w c c}}w c c}}w )Nzsubcommand argument r   z has a default valuer?   z has multiple aliasesz$ has type not derived from BaseModelzpositional argument Tr   r  z- has multiple variadic positional arguments: z= has variadic positional arguments and subcommand arguments: )r;   rv   r6   r   is_requiredr,   rV   r:   r   r&   r   r   r"   r#   r   r5   r8   r   r   r   r   r   rP  r  )rI   r_   positional_variadic_argpositional_argssubcommand_argsoptional_argsr`   ru   r   r   r   r   
field_typer   r~   infofield_namess                    rM   _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"q6UUY^fjkofpYp56UK"q&1
 .z :>ST^>_"/"6u~~6Fa
|Sw x#  '2
  &&
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 'G< #*+a/"ii@W(X@W*$@W(XY#u~~&66cdocp$qrr "ii@WZi@i(j@i*$@i(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    rM   r   zCliSettingsSource.root_parser  s        rN   c                     @ j                   du r2dk(  r-t         j                  t              r	 	 d	 	 	 	 	 	 	 d fd}|S dfd}|S S )NFr   c                Z   g }|r(t        j                  t        j                  |            ng D ]p  }dj                   d}t	        j
                  d| d|      }|r1|j                  d      j                         |j                  d      z   }|j                  |       r  | ||      S )Nr#  z{1,2}z^(z[^\s=]+)(.*)r?   r/   )	shlexrI  r  r   rematchgrouplowerr   )	r   rj   	namespaceinsensitive_argsr  flag_prefixmatchedparser_methodrI   s	          rM   parse_args_insensitive_methodzOCliSettingsSource._connect_parser_method.<locals>.parse_args_insensitive_method  s    
 $& <@5;;uzz$'78bHC%&t'@'@&A"IK hh"[M'FLG%mmA.446q9II$++C0 I %[2BINNrN   c                 "    t        d d      )Nz0cannot connect CLI settings source root parser: z. is set to `None` but is needed for connectingr+   )rj   rK   method_names     rM   none_parser_methodzDCliSettingsSource._connect_parser_method.<locals>.none_parser_method  s$    #F{m  TB  C rN   )NN)r   rC   rj   z"list[str] | tuple[str, ...] | Nonerd  zNamespace | NonerS   r   )rj   r   rK   r   rS   r   )rb   r   r\  rC   )rI   rh  rk  rj   rK   ri  rl  s   ```    rM   _connect_parser_methodz(CliSettingsSource._connect_parser_method  s     %##u,224,,.CD
 <@.2O2O8O ,O 	O 10"
 &% ! rN   c                8    | j                  |d      dfd}|S )Nr   c                *   |j                  d      s|j                  d        | fi |S dD ci c]  }||v s||j                  |       }}|dxx   dz  cc<    | fi |}t        |d      st        d       |j                  di |S c c}w )	N _is_cli_mutually_exclusive_grouprequired)titler   rr  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 connectingrE   )pophasattrr,   rs  )parserrK   r  main_group_kwargsrb  add_argument_groups        rM   add_group_methodzACliSettingsSource._connect_group_method.<locals>.add_group_method  s    ::@A

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

6"(4

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

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

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

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

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

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

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

=)_bcp_q  %% <<XujZrs J$7$77.8.M]TaSbbE1;ED$PSCT1UDJJu-[^_d[eE#**51 c  zz~~h'+@@]V[E[`jnr`re#
  J<z!:; zz~~h'+@@$$U+S 'tV &(dqrdq[`Zs5KDJJu-QVVdqrrdstds[`Zs5KDJJu-QVVdstt00 sts   ;.L+3.L0)0r   ztype[BaseSettings]r   
str | Noner   z)bool | list[str] | tuple[str, ...] | Noner   r  r   bool | Noner   r  r   r  r   r  rJ   r  r   r  r   r  r   r  r   r  r   r  r   z$Mapping[str, str | list[str]] | Nonerb   r  r   r   r   Callable[..., Any] | Noner   r  r   r  r   r  r   r  r   r   rS   rT   )rS   rk   )rj   z"list[str] | tuple[str, ...] | boolrS   CliSettingsSource[T])r   z,Namespace | SimpleNamespace | dict[str, Any]rS   r  )rj   z)list[str] | tuple[str, ...] | bool | Noner   ?Namespace | SimpleNamespace | dict[str, list[str] | str] | NonerS   z%dict[str, Any] | CliSettingsSource[T])rS   zMapping[str, str | None])r   r  rS   z/Mapping[str, str | None] | CliSettingsSource[T])r   zdict[str, list[str] | str]r`   rU   r
  ri   rS   rR   )r  ri   r`   rU   rS   z%tuple[Optional[type], Optional[type]])r&  ri   r`   rU   rS   rU   )r  ri   r`   rU   rS   rU   )r*  rU   r&  ri   r8  rR   rS   rU   )r*  rU   r&  ri   rS   rU   )r*  rU   r&  ri   r  ztype[Any] | NonerS   rU   )r_   r   r`   rU   ru   r$   rS   rT   )r_   r   rS   zlist[tuple[str, FieldInfo]])rS   r   )
rh  r  rk  rU   rj   r   rK   r   rS   Callable[..., Any])r   r  rS   r  )r   r   r   r  r   r  r   r  r   r  r   r  r   r   rS   rT   )F)rv  r   r_   r   r  ri   ra   rU   r  rU   rb  r   r  ri   r  r   r  rR   rS   r   )rK   rk   ru   r$   r   rR   rS   rT   )rK   rk   ru   r$   r  r   rS   rT   )
rK   rk   ru   r$   r   rU   r  r   rS   ztuple[list[str], str])ra   rU   r  rU   r  ri   r   rl   r  ri   rS   ri   )rv  r   r_   r   rx   r   r  ri   ra   rU   r  rU   rf  rU   r  ri   rK   rk   r`   rU   ru   r$   r   rl   r  r   r  rR   rS   rT   )rv  r   rs   rn   r  ri   ra   rU   r  rU   rb  r   rS   rT   )r  r   rS   rl   r   )rj   ri   r  r  rS   rU   )r  r   rS   rU   )
r`   rU   ru   r$   r  r   r  rR   rS   rU   )ru   r$   rS   rR   )
r  rU   r  r   ru   r$   r  rk   rS   zlist[Any] | dict[str, Any])r_   r2   r  rR   rS   ri   )-rV   rW   rX   r   r   add_argumentrx  r	   
add_parseradd_subparsersr   rG   r   r   r   r   r!  r-  r  r0  r1  r2  rP  rZ  propertyr   rm  rz  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rY   rZ   s   @rM   r   r      s   +` %)DH)-*.&*,059)-!%+/*./3&*>B&*7;9G9T9T?M?`?`7H7S7S;I;X;X:1}`(}` "}` B	}`
 '}` (}` $}` *}` (3}` '}` }` )}` (}` "-}` $}`  <!}`" $#}`$ %}`& 5'}`( 7)}`* $=+}`, 5-}`.  9/}`0 1}`2 
3}`~ - -   & ;?W[	& 8& U	&
 
/&& = = " ae3]3	83j5CFMV	.)$)25)	.)&L&+TZ
F$:	o+[Z ! !$!6$!EH$!QT$!`c$!	$!L 0 :H9T9T?M?`?`7H7S7S;I;X;X:&
&
 5&
 7	&

 $=&
 5&
  9&
 &
 
&
d %*EE E 	E
 E E E "E E "E 
ENL9&$&2;&NQ&be&	&*  "	
 %  
8MM M *	M
 M M M M M M M M %M M "M  
!M^,, 2, 	,
 , , , 
,BXC'VRDjj+4jEHj_cj	j2L22$'25>2Zh2	#2831 31rN   r   )gr   
__future__r   _annotationsr4  r`  r_  r   r  argparser   r   r   r   r   r	   collectionsr
   collections.abcr   r   enumr   	functoolsr   textwrapr   typesr   r   r   r   r   r   r   r   r   r   r   r   r  pydanticr   r   r   r   r    pydantic._internal._reprr!   pydantic._internal._utilsr"   pydantic.dataclassesr#   pydantic.fieldsr$   pydantic_corer%   r&   r'   typing_inspectionr(   typing_inspection.introspectionr)   
exceptionsr,   utilsr-   r.   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   envr@   pydantic_settings.mainrA   rC   r\   r^   r   CliSubCommandCliPositionalArgrR   r   rM  rN  r  CliSuppressr   rU   CliUnknownArgsr   rE   rN   rM   <module>r     sh   - 2  	  
   $ -  %  !     K K 3 4 6 % + 2 , ; ' 8	 	 	   #3N 		 	C
i C
L CL%4..89Q 112 ~T2L*::;L*::;<(49eB&7(RSG1)71: G1rN   