
    bi'                      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	Z	ddl
mZmZmZmZmZmZ ddlmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlm Z  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,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZC ddlDmEZEmFZFmGZG ddlmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQ ddlDmRZRmSZSmTZTmUZUmVZVmWZWmXZX ddlYmZZZ e!rddl[m\Z\  G d de      Z] G d  d!e/      Z^ G d" d#e/      Z_ e'd$      Z`e"e`dz  eOf   Zae"e`eNf   Zb e'd%ec&      Zde"edeMf   Zee"edeLf   Zfe"edePf   Zge"edeKf   ZheZie"e`eif   Zje"ekel    e0g '      eQeIf   Zm G d( d)eZe$e`         Zny)*z'Command-line interface settings source.    )annotationsN)SUPPRESSArgumentParserBooleanOptionalAction	NamespaceRawDescriptionHelpFormatter_SubParsersAction)defaultdict)CallableMappingSequence)Enum)cached_property)chain)dedent)SimpleNamespace)TYPE_CHECKING	AnnotatedAnyGenericLiteralNoReturnTypeVarcastget_args
get_originoverload)AliasChoices	AliasPath	BaseModelFieldPrivateAttrTypeAdapterValidationError)Representation)is_model_class)is_pydantic_dataclass)	FieldInfo)PydanticUndefined)typing_objects)is_union_origin   SettingsError)_lenient_issubclass_typing_base_WithArgsTypes   )
ForceDecodeNoDecodePydanticModel_CliDualFlag_CliExplicitFlag_CliImplicitFlag_CliPositionalArg_CliSubCommand_CliToggleFlag_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      o/home/jang/Projects/ai-researcher/.venv/lib/python3.12/site-packages/pydantic_settings/sources/providers/cli.pyrL   z_CliInternalArgParser.__init__O   s    "6""3    c                X    | j                   st        d|       t        |   |       y )Nzerror parsing CLI: )rM   r.   rK   error)rN   messagerQ   s     rR   rU   z_CliInternalArgParser.errorS   s+    &&"5gY ?@@grS   )T)rO   boolrP   r   returnNone)rV   strrX   r   )__name__
__module____qualname__rL   rU   __classcell__rQ   s   @rR   rH   rH   N   s    4 rS   rH   c                      e Zd Zy)CliMutuallyExclusiveGroupN)r[   r\   r]   rJ   rS   rR   ra   ra   Y   s    rS   ra   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<   ded<   g Zded<   i Zded<    ed      Zded<    ei       Zded<    ed      Z	ded<    e       Z
ded<   	 	 	 	 	 	 	 	 d- fdZed.d       Ze	 	 	 	 	 	 d/d       Zd0d Zed1d!       Zed2d"       Zed3d#       Zed3d$       Zed4d%       Zed5d&       Zed6d'       Zed3d(       Zed7d)       Zed7d*       Zed7d+       Zed7d,       Z xZS )8_CliArgr   modelparserrZ   
field_name
arg_prefixrW   case_sensitivehide_none_type(bool | Literal['all', 'no_enums'] | None
kebab_casebool | Noneenable_decodingintenv_prefix_len	list[str]argsdict[str, Any]rP   rJ   tuple[str, ...]_alias_namesdict[str, int | None]_alias_pathsF_is_alias_path_onlyr(   _field_infoc                   t        
|   di | || _        t        | j                  | j
                  | j                  | j                        \  | _        | _	        | j                  j                         D ci c]  \  }}| j                   | | }}}| j                  r| j                  D ]|  }| j                  |      }| j                  g i d      || j                     |<   || j                     |   || 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_argsrh   )rq   rP   )updaterJ   )rK   rL   rx   r?   rf   
field_inforv   rh   rt   rw   itemsrg   subcommand_dest
sub_modelssubcommand_alias
model_copydest)rN   r|   
parser_mapvaluesnameindexalias_path_dests	sub_modelr   alias_path_destrQ   s             rR   rL   z_CliArg.__init__o   s    	"6"%6FOOT__d>O>O`d`s`s7
343 RVQbQbQhQhQjk+$t/v6=kk!__ s	#'#8#8#C EI__egsu\v_Ew
4//01AB>HI]I]>^_o>p
4//0;@J4K_K_@`aq@r
4??+,<=	s
 YY..*.Jtyy!$'0:4990Ed0KJt'-&6&<&<&> 	T"OU15QS_aHb1cJ'.1;O1LU1SJt'.	T ls   9F=c                2    |dvr|j                  dd      S |S )NNF_-)replace)clsr   rk   s      rR   get_kebab_casez_CliArg.get_kebab_case   s    )3=)Ht||C%RdRrS   c                     d}t        |      }t        |      D ]  }| j                  |      z  } |r@t        |t              r0|t         fd|j                  j                         D              z  }|S )NrJ   c              3  H   K   | ]  }j                  |d k(          yw)allN)r   ).0r   r   rk   s     rR   	<genexpr>z)_CliArg.get_enum_names.<locals>.<genexpr>   s$     xRV 2 24u9L Mxs   ")rB   r   get_enum_namesr/   r   tuple__members__keys)r   
annotationrk   
enum_namestype_s   ` `  rR   r   z_CliArg.get_enum_names   sy     ')
%j1
j) 	@E#,,UJ??J	@-j$?%xZdZpZpZuZuZwxxxJrS   c                    | j                  t        | j                        dkD  r|j                  | j
                        S | j                  | j
                        S )NrD   )r   lenr   r[   preferred_aliasrk   )rN   r   s     rR   r   z_CliArg.subcommand_alias   sS    """%doo"6":IVZVeVe
 	
@D@T@TVZVeVe
 	
rS   c                    | j                   S N)rx   rN   s    rR   r|   z_CliArg.field_info   s    rS   c                \    t         | j                  j                  v r| j                   dS d S )N:subcommand)r:   r|   metadatarg   r   s    rR   r~   z_CliArg.subcommand_dest   s+    2@DOOD\D\2\$//"+.fbffrS   c                    | j                   sU| j                  rI| j                  j                  3| j                  s'| j                   | j
                   | j                  d  S | j                   | j
                   S r   )r~   rg   r|   validation_aliasis_parser_submodelr   ro   r   s    rR   r   z_CliArg.dest   ss     $$00<++ oo&t';';&<=d>Q>Q>STT//"4#7#7"899rS   c                v    | j                   r| j                  d   j                  dd      S | j                  d   S )Nr   r   r   )rk   rq   r   r   s    rR   preferred_arg_namez_CliArg.preferred_arg_name   s1    15tyy|##C-RdiiPQlRrS   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   r|   r   ri   r   typer=   r:   r.   rd   r[   rf   r9   r&   rB   r'   append)rN   field_typesr   r   s       rR   r   z_CliArg.sub_models   sG    DOO667 __'')$//445 	
 K [55PTUYPZCZ [\K,.
  
	;E)%.1BV[\#DTZZEXEXDYYZ[_[j[jZkl  ,E4E3G[`a#G

H[H[G\\]^b^m^m]no  .u56:OP`afPg:h!!"25"9:
	;  !\s   +E>Ec                    | j                   S r   rt   r   s    rR   alias_namesz_CliArg.alias_names          rS   c                    | j                   S r   )rv   r   s    rR   alias_pathsz_CliArg.alias_paths   r   rS   c                     | j                   d   S )Nr   r   r   s    rR   r   z_CliArg.preferred_alias   s      ##rS   c                    | j                   S r   )rw   r   s    rR   is_alias_path_onlyz_CliArg.is_alias_path_only   s    '''rS   c                    | j                    xr; t        | j                  j                  t        t
        t        t        t        fd      S )NTis_strip_annotated)	r~   r=   r|   r   listsetdictr   r   r   s    rR   is_append_actionz_CliArg.is_append_action   s=    ''' 
,FOO&&sD(G(Lae-
 	
rS   c                h    | j                    xr$ t        | j                        xr | j                   S r   )r~   rW   r   r   r   s    rR   r   z_CliArg.is_parser_submodel   s-    '''_D,A_$J_J_F__rS   c                    | j                   d uxrJ t        | j                   j                  v xs, | j                  du xr t        | j                   j                  vS r   )r|   r4   r   rm   r3   r   s    rR   is_no_decodez_CliArg.is_no_decode   sR    d* 
000 _$$-]+T__E]E]2]	
rS   )r|   r(   r   zOdefaultdict[str | FieldInfo, dict[int | None | str | type[BaseModel], _CliArg]]r   r   rX   rY   )r   rZ   rk   rj   rX   rZ   )r   z	type[Any]rk   rj   rX   rs   )r   type[BaseModel]rX   rZ   )rX   r(   )rX   
str | None)rX   rZ   )rX   list[type[BaseModel]])rX   rs   )rX   ru   )rX   rW   )r[   r\   r]   __annotations__rq   rP   r"   rt   rv   rw   rx   rL   classmethodr   r   r   r   r|   r~   r   r   r   r   r   r   r   r   r   r   r^   r_   s   @rR   rc   rc   ]   s   JKOO88  D)FN$/OL/3*5b/L'9 +E 22(]K*TT dT 	T
 
T4 S S 	"	0X			 	

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

 ` ` 
 
rS   rc   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j                  ef	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d/ fdZed0d       Zed1d       Zed2d       Zddd	 	 	 	 	 d3 fd	Zed4d
       Zed2d       Zdd	 	 	 d5dZd6dZ	 	 	 	 	 	 	 	 d7dZd8dZd9dZd:dZd;dZd<dZd=dZd>dZd?dZed@d       Z	 	 	 	 	 	 	 	 	 	 dAdZdBdZej
                  ej                  ej                  ej                  ej                  ef	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dCdZdDdZdi df	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dEdZ dFdZ!dGd Z"	 	 	 	 	 	 	 	 	 	 dHd!Z#	 	 	 	 	 	 	 	 	 	 	 	 	 	 dId"Z$	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dJd#Z%	 	 	 	 	 	 	 	 	 	 	 	 	 	 dKd$Z&dLd%Z'dMdNd&Z(dOd'Z)dOd(Z*	 	 	 	 	 	 	 	 	 	 dPd)Z+dQd*Z,	 	 	 	 	 	 	 	 	 	 dRd+Z-	 	 dS	 	 	 	 	 	 	 	 	 dTd,Z.e/	 	 	 	 	 	 dUd-       Z0	 	 	 	 dV	 	 	 	 	 	 	 	 	 	 	 dWd.Z1 xZ2S )X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: Controls how `bool` fields are exposed as CLI flags.

            - False (default): no implicit flags are generated; booleans must be set explicitly (e.g. --flag=true).
            - True / 'dual': optional boolean fields generate both positive and negative forms (--flag and --no-flag).
            - 'toggle': required boolean fields remain in 'dual' mode, while optional boolean fields generate a single
              flag aligned with the default value (if default=False, expose --flag; if default=True, expose --no-flag).
        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`.
        format_help_method: The root parser format help method. Defaults to `argparse.ArgumentParser.format_help`.
        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                  |       |Qt3        | j                  | j                  |j4                  d nt7        |j4                        || j                  d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_jsonTrY   nullcli_enforce_requiredcli_use_class_docs_for_groupsrO   
cli_prefix cli_flag_prefix_charr   r2   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_prefixrh   )rO   progdescriptionformatter_classprefix_charsallow_abbrevadd_help)root_parserparse_args_methodadd_argument_methodadd_argument_group_methodadd_parser_methodadd_subparsers_methodformat_help_methodr   r   rD   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   rO   r   r   _cli_flag_prefix
startswithendswithr   isidentifierr.   r   r   r   r   rK   rL   rH   __doc__r   _connect_root_parser
isinstancer   r   r   _load_env_vars_parse_argsr   )rN   settings_clsr   cli_parse_argsr   r   r   r   r   rO   r   r   r   r   r   r   rh   r   r   r   r   r   r   r   r   rQ   s                            rR   rL   zCliSettingsSource.__init__1  s   8 +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1+ 	" 		
 .%!$!"u>#RSWXfSgRhi  D,<,<T=M=M~,^_ /rS   c                     y r   rJ   r   s    rR   __call__zCliSettingsSource.__call__  s    *-rS   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.
        NrJ   )rN   rq   s     rR   r  zCliSettingsSource.__call__  s     	rS   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.
        NrJ   rN   r   s     rR   r  zCliSettingsSource.__call__       	rS   )rq   r   c               B   ||t        d      |Y|du r| j                  i       S |du rt        j                  dd  }| j                  | j	                  | j
                  |            S |%| j                  t        j                  |            S t        | !         S )Nz/`args` and `parsed_args` are mutually exclusiveFr   TrD   )	r.   r   r   r   r   r   copyrK   r  )rN   rq   r   rQ   s      rR   r  zCliSettingsSource.__call__  s      7 QRRu}**r*::t|xx|&&43C3CDDTDTVZ3[&\\$&&499[3I&JJ7#%%rS   c                     y r   rJ   r   s    rR   r   z CliSettingsSource._load_env_vars  s    :=rS   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.
        NrJ   r  s     rR   r   z CliSettingsSource._load_env_vars  r  rS   r   c               P  	 |i S t        |t        t        f      rt        |      }| j	                  |      }| j
                  j                         D ]i  \  }}t        |t              s|j                  d      s)|j                         D cg c]  }|j                   c}D ]  }||vs| j                  ||<    k |j                         D ci c]!  \  }}|j                  d      s|t        ur||# }}}|r8t        |t              	t        	fd|j!                         D              sd|	<   |j#                  | j$                         t'        t)        t*        t        t        f   |      | j,                  | j.                  | j                        | _        | S c c}w c c}}w )Nr   )keyc              3  2   K   | ]  } d |v s|  yw)r   NrJ   )r   rf   last_selected_subcommands     rR   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>  s#     wjMeLffgJhlvJvzws   {})r   r   r   vars_resolve_parsed_args_parser_mapr}   rZ   r   r   r   r   r)   maxr   anyr   r{   _cli_unknown_argsrC   r   r   rh   env_ignore_emptyenv_vars)
rN   r   selected_subcommandsarg_destarg_mapargr~   r  valr  s
            @rR   r   z CliSettingsSource._load_env_vars  s    IkI#?@{+K#88E!%!1!1!7!7!9 	OHg(C(X->->}-M<CNN<L'MS'M OO&.BB7;7N7NO4O	O (--/
S<<.3>O3O H
 

  '*+?S'I$wK4D4D4Fww8<454112&c"K0!!##	
 / (N
s   F&F"c                |   g }t        |j                               D ]  \  }}t        |t               rx| j                  |||      r+| j                  j                  |i       j                  d       }|r!|j                  rdj                  |      ||<   y| j                  ||      ||<   |j                  d      r.|,|j                  | j                  |   |   j                         | j                  dk(  st        |t              s|j                  dd      }| j                  j                  |i       j                  d       }|s0|j                  j                   sH||j#                  |j                  j                   d      v srd|v r"t%        d|j                  dd       d| d	      |||<    |S )
N,r   r   r   r   FzInput should be kebab-case "z", not "")r   r}   r   %_is_nested_alias_path_only_workaroundr  r   r   join_merge_parsed_listr   r   r   r   rZ   r   r|   r   r   
ValueError)rN   r   r  rf   r  cli_arg	snake_vals          rR   r  z&CliSettingsSource._resolve_parsed_args#  s   *,#K$5$5$78 	8OJ#t$==k:WZ[ **..z2>BB4Hw33.1hhsmK
+*.*A*A#z*RJ'$$]3$++D,<,<Z,H,M,R,RS$$-*S#2FKKS1	**..z2>BB4H**55"g&<&<W=O=O=Z=Z\a&bbcz(+GTWY\H]G^^fgjfkkl)mnn.7K
+3	86 $#rS   c                |   | j                   j                  |i       j                         }|syt        t	        |            }|j
                  ro|j                  j                  d      rT||= |j                  dd }d|j                   d| j                  ||       }||vr
d| d||<   y
||   dd  d	| d||<   y
y)z
        Workaround for nested alias path environment variables not being handled.
        See https://github.com/pydantic/pydantic-settings/issues/670
        Fr   Nr  z": {}, T)
r  r   r   nextiterr   rg   r   r   r!  )rN   r   rf   r  	known_argr  nested_dest
nested_vals           rR   r  z7CliSettingsSource._is_nested_alias_path_only_workaroundB  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 $
 rS   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     rR   r   zACliSettingsSource._get_merge_parsed_list_types.<locals>.<genexpr>^  s4      T
*z%/@w/W s   02rD   r   [)
_cli_dict_argsr   r   r+   r   r  r   r   r   rZ   )rN   parsed_listrf   
merge_typeinferred_types        rR   _get_merge_parsed_list_typesz.CliSettingsSource._get_merge_parsed_list_typesY  s    ((,,Z>
$":j#9: %j1  'M =(( %0S5E5I[YZ^MfMfgjMkDruM=((rS   c           	     \   g }d }| j                   j                  |i       }	 t        t        t	        |j                                     j                  j                        }t        t        t	        |j                  dg                        t        u }t        |      D ]  \  }}	|j                  |      }
|
d u xs |
j                   }||}n||k7  rt        d      |rR|	j!                  dd      }		 |	j#                  d      r|	j%                  d      r|	dd n|	}t'        |       |rd| dn|}	n'|	j#                  d      r|	j%                  d      r|	dd }	|j+                  |	        dj-                  |      }|rd	| d
S |S # t        t        f$ r d }Y w xY w# t(        $ r Y Qw xY w)N1zKMixing Decode and NoDecode across different AliasPath fields is not allowed\z\\r  rD   r&  r  r1  ])r  r   r#   r*  r+  r   r|   r   r   validate_pythonrZ   StopIterationr$   	enumerater   r.   r   r   r   floatr"  r   r   )rN   merged_listrf   decode_listis_use_decodecli_arg_maplist_adapteris_num_type_strr   itemr#  	is_decodeunquoted_itemmerged_list_strs                 rR   _merged_list_to_strz%CliSettingsSource._merged_list_to_strj  s   !#%)&&**:r:	# +Dk6H6H6J1K,L,W,W,b,b cL"4\-I-I3%-P(Q#RSWZZO %[1 	%KE4!ooe,G4Cw/C/C+CI$ ))+#$qrr||D&126//#2F4==Y\K]D2JcgM-(3BQ}oQ/D %$--*<Abzt$#	%$ ((;/)6?#1%KOK+ / 	#"O	# " s$   A2F 3>FFF	F+*F+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)NFr1  r:  rD   r&  r  r'  Tr   zParsing error encountered for z: )r6  r   rZ   stripr   r   _consume_comma_consume_object_or_array_consume_string_or_numberr"  r   rI  r{   jsonloadsdumps	Exceptionr.   )rN   r3  rf   r?  is_last_consumed_a_valuer4  r5  r  emerged_dictrE  s              rR   r!  z$CliSettingsSource._merge_parsed_list  s   *	T%'K',$(,(I(I+Wa(b%J" Z!#s+ iik>>#&3<<+<a)//+C))+C~~c*"11#{D\]380>>#.#..2E"&"?"?["QCc&*&D&DS+Wa&b 480! " 0--c;@XYC5Z8 S "1~%t#//ZHH.0' 9D&&tzz$'789zz+..# $. c#-#>*+G-:
&*&D&DS+Wa&b	c$  	T"@Bqc RSS	Ts[   C#F0 &E?9F0 >F0 !F0 #F0 =AF0 ?	F-F(#F0 (F--F0 0	G9G

Gc                2    |s|j                  d       |dd  S )Nz""rD   )r   )rN   rE  r?  rS  s       rR   rL  z CliSettingsSource._consume_comma  s    't$ABxrS   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      )NrD   r'  r(  r:  Fr  r9  )r'  r1  )r(  r:  r   zMissing end delimiter ")r   ranger   r   r.   )rN   rE  r?  countclose_delimin_strconsumeds          rR   rM  z*CliSettingsSource._consume_object_or_array  s    !__S1csaT+ 	0HH~$hl);t)C#h:-
h:-
>[0UaZ&&tNhl';<1//	0 5k]!DEErS   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  rD   r9  r  zMismatched quotesr   )truefalser   c              3      K   | ]  }|  y wr   rJ   )r   kvs     rR   r   z>CliSettingsSource._consume_string_or_number.<locals>.<genexpr>  s     >r>s   =z1Dictionary key=val parameter is a quoted string: )rZ   r   r.   rK  r   r>  r"  r   r   r   splitr   rO  rQ  )	rN   rE  r?  r4  r\  is_find_end_quote
val_stringr  r  s	            rR   rN  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}nwt        |j                  v rd}nbt        |j                  v r:d}t	        |j
                  t              s4t        | d|j                   d| d      t        |j                  v rd}ny |j                  t        urt        | d|j                   d| d      y )	NCliImplicitFlagCliExplicitFlagCliToggleFlagz
 argument r   z must have a default bool valueCliDualFlagz is not of type bool)r8   r   r7   r;   r   r   rW   r.   r[   r6   r   )rN   rd   rf   r|   cli_flag_names        rR   _verify_cli_flag_annotationsz.CliSettingsSource._verify_cli_flag_annotations  s    z222-M!4!44-Mz222+Mj00$7#$oZ/?qLkl  Z000)M  ,=/ENN;K1ZLXl mnn -rS   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 valuerD   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@   r}   r:   r   is_requiredr.   r[   r?   r   r   r   r   r&   r'   r   r9   r=   r   r   r   r   r   rl  r   )rN   rd   positional_variadic_argpositional_argssubcommand_argsoptional_argsrf   r|   r   r   r   r   
field_typer   r   infofield_namess                    rR   _sort_arg_fieldsz"CliSettingsSource._sort_arg_fields  s   "$:<b"-&7&>&D&D&F 	?"J
!4!44!--/'*>u~~>NaPZ|[o(pqq&6z:&NOK!;'!++.B5>>BRRST^S__t,uvv6>z?T?T6U"qUY^fjkofpYp5"qK"q&1 
 .z :>ST^>_"/"6u~~6Fa
|Sw x# 
  &&
J'?@"j&9&99"2:z"Ja{#a''*>u~~>NaPZ|[p(qrr#=))D#tXw+Odh$  (#**J
+CD+22J
3KL11%ZP$$j*%=>9	?< #*+a/"ii@W(X*$(XY#u~~&66cdocp$qrr "ii@WZi@i(j*$(jk#~~&&cdocpq  !88?J]ZZA #r0 )Y )ks   6J		J	J
J
c                    | j                   S )z#The connected root parser instance.)_root_parserr   s    rR   r   zCliSettingsSource.root_parser)  s        rS   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 )Nr9  z{1,2}z^(z[^\s=]+)(.*)rD   r2   )	shlexrc  r   r   rematchgrouplowerr   )	r   rq   	namespaceinsensitive_argsr  flag_prefixmatchedparser_methodrN   s	          rR   parse_args_insensitive_methodzOCliSettingsSource._connect_parser_method.<locals>.parse_args_insensitive_method8  s    
 $& <@5;;uzz$'78b 1C%&t'@'@&A"IK hh"[M'FLG%mmA.446q9II$++C01 %[2BINNrS   c                 "    t        d d      )Nz0cannot connect CLI settings source root parser: z. is set to `None` but is needed for connectingr-   )rq   rP   method_names     rR   none_parser_methodzDCliSettingsSource._connect_parser_method.<locals>.none_parser_methodJ  s$    #F{m  TB  C rS   )NN)r   rH   rq   z"list[str] | tuple[str, ...] | Noner  zNamespace | NonerX   r   )rq   r   rP   r   rX   r   )rh   r   rx  rH   )rN   r  r  rq   rP   r  r  s   ```    rR   _connect_parser_methodz(CliSettingsSource._connect_parser_method.  s     %##u,224,,.CD
 <@.2O2O8O ,O 	O 10"
 &% ! rS   c                8    | j                  |d      dfd}|S )Nr   c                *   |j                  d      s|j                  d        | fi |S dD ci c]  }||v s||j                  |       }}|dxx   dz  cc<    | fi |}t        |d      st        d       |j                  di |S c c}w )	N _is_cli_mutually_exclusive_grouprequired)titler   r  z (mutually exclusive)add_mutually_exclusive_groupzcannot connect CLI settings source root parser: group object is missing add_mutually_exclusive_group but is needed for connectingrJ   )pophasattrr.   r  )re   rP   r  main_group_kwargsr~  add_argument_groups        rR   add_group_methodzACliSettingsSource._connect_group_method.<locals>.add_group_methodW  s    ::@A

:&)&;F;;E]$ocadhnanS&**S/%9$o!$o!'*.EE**6G5FGu&DE'l  :u99CFCC %ps
   	BB)re   r   rP   r   rX   r   )r  )rN   r   r  r  s      @rR   _connect_group_methodz'CliSettingsSource._connect_group_methodT  s&    !889RTop	D  rS   c	           
     n    i  _         d fd}	| _        | j                  r|	nt        j                  } j                  |d       _         j                  |d       _         j                  |       _	         j                  |d       _
         j                  |d       _         j                  |d       _        | _        i  _        t        t                _         j%                           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   )rq   rP   unknown_argsr   rN   s       rR   _parse_known_argszACliSettingsSource._connect_root_parser.<locals>._parse_known_argsu  sO    !/!@!@$!Q&!QD,.. </;&&t,<	4((rS   r   r   r   r   r   re   rd   
added_argsrg   subcommand_prefixr~  alias_prefixesmodel_default)rq   r   rP   r   rX   r   )r  rx  r   r   
parse_argsr  r   _add_argumentr  
_add_group_add_parser_add_subparsers_format_help_formatter_classr2  r
   r   r  _add_default_help_add_parser_argsr   r   r   r)   )
rN   r   r   r   r   r   r   r   r   r  s
   `         rR   r   z&CliSettingsSource._connect_root_parserh  s.    8:	) ($595Q5Q 1WeWpWp667HJ]^!889LNcd445NO667HJ]^#::;PRij 778JL`a /;=lwm
 	 ####"oo+ 	 		
rS   c                r   t        | j                  t              r| j                  sKt	        | j
                        j                         D ]%  \  }}t        ||| j                        ^}}d|v s% y  | j                  | j                  | j                  d d  d| j                  d d  ddt        d       y y )N)rh   helprD   hr2   zshow this help message and exit)actionr   r  )r   rx  rH   r   r@   r   r}   r?   rh   r  r   r   r   )rN   rf   r|   r   r   s        rR   r  z#CliSettingsSource._add_default_help  s    d'')>???.?@Q@Q.R.X.X.Z *J
&6z:^b^q^q&rOK!,
   ((!,-Q/((!,-T2 6   @rS   Fc                   d }i }t        t        |            st        t        |            rt        t        |      |      sd n|}| j	                  |      D ]R  \  }}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:                  |g|j$                  i |j&                  |_        | j?                  |j<                  |g |j@                   d| |jB                   dd g tD                | jF                  }|j@                  |j&                  d<   tH        |j&                  d<   | jK                  ||||	      |j&                  d<   | jM                  |jN                        |j&                  d<   | jP                  xr |jS                         xr |tD        u |j&                  d<   | jU                  |||||
|      }|r|j&                  d   |v rl| jW                  |j&                  ||jX                         tZ        |j\                  v r+| j_                  |j&                  ||jB                  |      \  }}| ja                  |j&                  ||       |j                   D cg c]	  }||us| }}|jb                  rNte        |jN                  dd      s7|r5| jg                  |||||||||j&                  |||jh                  ||	       etj        |j\                  v rg | jl                  |j&                  d   <   |jn                  rtq        |tr              r | jt                  |fi |}||n|}|j&                  j                  d      dk(  r|dz  }|D cg c]  }|d t/        |      dk(  rdnd   |  c}|_         | jv                  |g|j$                  i |j&                   |ty        |      z  }U | j{                  ||||||       |S c c}w c c}w )Nrm   )re   r|   r   rd   rf   rg   rh   ri   rk   rm   ro   Fr   r   r   rD   r  subcommandsr   )r  r   r   metavarr&  r  r(  r'  r   r  r   r   r  __pydantic_root_model__)r  is_model_suppressedr  store_falseno-)>r&   r   r'   
issubclassrv  rc   r  rh   r   r   configr   ro   r{   r   r~   r   r   rq   rP   r  r   r   r   r   r   r  r  r  r  re   r  r   r   r)   r   CLI_SUPPRESS_help_format_metavar_formatr   r   rn  _get_arg_names_convert_append_actionr   r9   r   _convert_positional_arg_convert_bool_flagr   getattr_add_parser_submodelsr   r<   r  r   r   r   r  r  r   _add_parser_alias_paths)rN   re   rd   r  rg   r  r~  r  r  r  discriminator_valsis_last_discriminator
subparsersrz   rf   r|   r  r   r   subcommand_argr  	arg_namesmnon_recursive_sub_modelscontextr   s                             rR   r  z"CliSettingsSource._add_parser_args  s    
13
  ] 348MdS`Na8b"4#6> 
  	 '+&;&;E&B y	2"J
%++%%#22#66.. $0A B#22C ""3??3""!$ )I'*';';I'F$%)%5%5c6I6I%JK[%\N+;*<N'<AN)).9?C?T?TN))*;< ) 1 1 9viFWFW?X #))-8 =@<ORS<SDYcYoYoN))&199@I@Q@Q@Y_efofwfw_x--f5 &- ,,""/$.<{!;BEcnnBUXYBY
(>(>_c	 -  (  z95  *11  *11#267q9I8J"M#%&6%7r!: #* -=D,<,<Z,w.J]J],waoavav,wN)))-44'#%&)hhZq>->,?@S@S?TTU*V"')&7 * 	A)V $(#8#8%(XX

6"(4

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

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

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

:& !//%"&)	 !SZZ%7:%E++CJJ
CDXDXY$
(;(;;-1-I-I

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

JN7:~~+X!RWA+X(+X**#J$9$9;TV[\0..0"")#!

""&3,? /   %
(;(;;ACD**3::f+=>//!%. / @% @(-f5Gzz~~h/=@#u,dmn\`;/Nc$i1n$#O"PQUPV WnCH&D&&wHHSZZH$y/1Jsy	2v 	$$V_j*VginoG ,Y<  os   	WW
 W
c                    |rEd|d<   t        |j                  t        t        fd      r|j                  | j                  |d   <   y y y )Nr   r  Tr   r   )r=   r   r   r   r2  )rN   rP   r|   r   s       rR   r  z(CliSettingsSource._convert_append_action=  sK    'F8)**?*?$eij6@6K6K##F6N3 k rS   c                   |d   dk(  r|j                   D cg c]+  }t        |t              rt        |t        t
        z        r|- }}|s| j                  rt        g}|r|j                         }|t        u r5| j                  dk(  r t        |j                  t              rt        nt        }|t        u r|d= t        |d<   y |t        u r|d= |j                  rdnd|d<   y y y y c c}w )Nr  rW   toggler  r  
store_true)r   r   r   r  r8   r7   r   r  r   rW   r;   r6   r   )rN   rP   r|   r  metameta_bool_flags	bool_flags          rR   r  z$CliSettingsSource._convert_bool_flagC  s    )& '//dD)j?ORb?b.c O 
 #t'>'>#3"4+//1	 00  22h>:jN`N`bfCg ') 
 ,y)'<F8$.0y)8B8J8J}P\F8$ 1  's   0C$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?r  )r)   rc   r   upperr   rn  r   )rN   rP   r|   r   r  r  r  rn  s           rR   r  z)CliSettingsSource._convert_positional_arg[  s     F^$	-y#22?3H3H3JDL_L_`y !,,.U=DU3U::h8+x %0ccF7O!F7O6N:+%%rS   c           	     F   g }|j                   g|z   D ]s  }|j                  D ]b  }	t        j                  || j                  k(  r| |	 n|j                  |dd       |	 | j                        }
|
vsR|j                  |
       d u | j                  rV| j                  j                         D ]9  \  }}||v st        |t              r|gn|}|j                  fd|D               ; t               }|j                  |j                        }|t!        |j"                  j$                  t&        fd|       |j)                  t+        j,                  d |D                     |sg S | j/                  t&        t1        t3        |                     |j4                  d<   |S )Nr   rD   c              3  ,   K   | ]  }|vs|  y wr   rJ   )r   aliasr  s     rR   r   z3CliSettingsSource._get_arg_names.<locals>.<genexpr>  s     $^ueS]F]U$^s   	T)r   collectc              3  2   K   | ]  }t        |        y wr   )r   )r   tags     rR   r   z3CliSettingsSource._get_arg_names.<locals>.<genexpr>  s     5Thsm5Ts   r  )rg   r   rc   r   r   r   r   r   r   r}   r   rZ   extendr   r   r   r=   r|   r   r   r{   r   from_iterabler  r   sortedrP   )rN   r  r  r  r  r  r  r  prefixr   arg_nametargetaliases
alias_listtagsdiscriminatorss       `           rR   r  z CliSettingsSource._get_arg_namesp  s     "	~~&7 		/F /"11(DOO; htf%"NN+<b!DEdVL''	 :-$$X./		/ #'#5#5#;#;#= _Y&.8#.F'GJ$$$^
$^^_
 +//9%&))
"&	 !!%"5"55Tt5T"TU(	$($8$8vnG]A^9_$`CJJy!rS   c                   t        |t              rt        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'                  |d          d|	d<   d|	d<   d|	d<   |s| j(                  rt$        nd|d    d|	d<    | j*                  |fi |} | j,                  |gfd|D        i |	 |j.                  r| | d|j.                   t1               ini }|D ]>  }| j3                  |||| | d|||d	d  D cg c]	  }| | d c}|||||d   u        @ y c c}w )Nz8cannot have nested models in a CliMutuallyExclusiveGroupr   z optionsr  r   r  c              3  <   K   | ]  }t        |t                y wr   )r  ra   )r   rd   s     rR   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>  s      E
=BJu78E
s   r  rD   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   rJ   )r   r   r  s     rR   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>  s     )WT[M$*@)Ws   r   r&  )re   rd   r  rg   r  r~  r  r  r  r  r  )r  ra   r.   r   r  r   r   r   r   r)   r&   r   r'   r  r   default_factoryr   _is_field_suppressedr  r   r   r  r  discriminatorr   r  )rN   re   rd   r   r  rg   r  r  r  rP   rf   r|   r   r  r  model_group_kwargsdesc_headerr   model_groupr  r   s          `             rR   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<}-)A,'"zww #d&9&9 	!~%FG 	v
 &doofC0BC;b)WY)Wb[abT^TlTl
|O,Aj.F.F-GH#%Prt 	   	E!!%(\/):!<"3!CNqr?S4:,tfA 6S+$7#5&+z"~&= " 	  Ts   I*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   rD   r   zpydantic alias pathr  r   r  r   r  r   )r   r   r  r}   r   r   r  r2  r   r  rq   rP   r  r   )rN   re   rz   r  rg   r  r~  r  r   r   r  rP   rq   r  r  s                  rR   r  z)CliSettingsSource._add_parser_alias_paths  sW    G >HPT>U/$//&:E:[`.446 ,e )DOO; "l4&)&../@"aHI$P 
 *,$0y!!6v#+x $*y!=(.F9%48D''1001(<= $ 0 0 : @ @ B 8HC+/(CHcj8"""7<T<V<!!(+%,	 rS   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   )rN   objr   s      rR   _get_modified_argsz$CliSettingsSource._get_modified_args  s>    &&C= Xc]VEe4PT:>U%VWWVs
   AAc                    d|v rC|d |j                  d      dz    ||j                  d      dz   d  D cg c]
  }|dk7  s	| c}z   }dj                  |      }|r| d| dS t        |      dk(  r|S d| dS c c}w )NJSONrD   r  r1  r:  r'  r(  )r   r   r   )rN   rq   obj_qualnamer  r  s        rR   _metavar_format_choicesz)CliSettingsSource._metavar_format_choices  s    T>0$**V,q01DTZI[^_I_IaDb4tSfimsfsS4ttD((4."^1WIQ//!$i1n7BBwir2BB 5us
   
A9A9c           
        t        |      }t        |      r&d|j                  v r|j                  S |j                  S |du ryt	        |t
              rt        |      S t	        |t        j                        st        j                  |      rt        |      S t	        |t        t        t        f      s|j                  }t!        |      }t#        |      r=| j%                  t'        t)        | j*                  | j-                  |                        S t        j.                  |      r7| j%                  t'        t)        t        | j-                  |                        S t1        |t2              rX| j%                  |j4                  j7                         D cg c]%  }t8        j;                  || j<                  dk(        ' c}      S t	        |t              re| j%                  t'        t)        | j*                  | j-                  |                  t?        |d      r|j                        S t        |            S |t        d      u r| j@                  S tC        |      stE        |      r6tG        |dd	      r'| j+                  tI        |      d
   jJ                        S dS t	        |t              r|j                  S t        |      jM                  dd      jM                  dd      S c c}w )z\Pretty metavar representation of a type. Adapts logic from `pydantic._repr.display_as_type`.z<locals>.z...r   r]   )r  Nr  Frootr  ztyping.r   ztyping_extensions.)'rB   rA   r]   r[   r   r%   reprtyping
ForwardRefr*   is_typealiastyperZ   r0   r1   r   rQ   r   r+   r  r   map_metavar_format_recurser  
is_literalr/   r   r   r   rc   r   r   r  r   r&   r'   r  r@   r   r   )rN   r  originr   s       rR   r  z)CliSettingsSource._metavar_format_recurse  s{   s##-1A1A#A3<<WsGWGWWCZ^,9V../>3R3RSV3Ws8O#ndCD--CC6"//S9U9UW[WnWnorWs5t0uvv&&v.//Sd>U>UVY>Z5[0\]] d+//X[XgXgXlXlXnoPT''d.A.AU.JKo  ^,//S55t7N7Ns7STU18n1MS-- 0  SVWZS[ 0   DJ***C $9#$> 3 95A ,,->s-CF-K-V-VW 
 T"###9$$Y3;;<PRTUU% ps   *K&c                D    | j                  |      j                  dd      S )Nr)  r  )r  r   )rN   r  s     rR   r  z!CliSettingsSource._metavar_formatJ  s     ++C088sCCrS   c                n   |j                   r|j                   nd}|s| j                  |      rt        S |j                         r6|t        d fv r,t
        |j                  vr|dnd}||rd| dnd| dz  }nd| 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}t$        |j                  vr||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  rn  r)   r9   r   r   r&   r   r'   r  rA   r  r   r>   r   r  r;   r  rx  r   r   )	rN   rf   r|   r  r  _helpifdefr   	enum_names	            rR   r  zCliSettingsSource._help_formatM  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Z%8%88%1WIW<+5d4;L;L6M~+^u}}S$'idiirS   c                p    |j                   r|j                   nd}|t        k(  xs t        |j                  v S )Nr   )r   r  r   )rN   r|   r  s      rR   r  z&CliSettingsSource._is_field_suppressedh  s2    *4*@*@
&&b$K
8K8K(KKrS   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   rD   r&  r   )r  r   r   r   r   r   choicespath
setdefaultrn   r  r  r   )rN   r  valuer|   alias_path_only_defaultsr  
alias_pathalias_nested_pathsalias_defaultcurrent_pathnested_pathalias_path_indexs               rR   _update_alias_path_only_defaultz1CliSettingsSource._update_alias_path_only_defaultl  se   
 %**J,G,GH!
%)\!:;  y1EtIu}}UVGW7XX!
 	!
 )3"(=!$//"=4X>M$//"=3H=L1#26 9''R8+K89 ##$6r$:B?();B)?@MZ__R%89bTC(81(<s=?Q(QST$UUV*/&''11/!
s   AE c                   |g}t        |t              rt        |t              r]|dk(  r.dj                  d t	        j
                  |      D              g}|S |dk(  r#t	        j
                  |      D cg c]  }|  }}|S t        |t              r?|dk(  r:t	        j
                  |      j                         D cg c]  \  }}| d|  }}}|S c c}w c c}}w )Nlazyr  c              3  "   K   | ]  }|  	 y wr   rJ   )r   vs     rR   r   z9CliSettingsSource._coerce_value_styles.<locals>.<genexpr>  s     &I!!v&Is   argparseenvrb  )r   rZ   r   r   rO  rP  r   r}   )rN   r  r  
list_style
dict_styler   r  ks           rR   _coerce_value_stylesz&CliSettingsSource._coerce_value_styles  s     eS!-.'!hh&Itzz%7H&IIJF   :-.2jj.?@f@F@  M40&59ZZ5F5L5L5NOTQ1QCjOFO	 A Ps   3
C<Cc                >    |s| d   | d   z   n
| d   | d   z   | d   z   S )Noptional
positional
subcommandrJ   )serialized_argspositionals_firsts     rR   _flatten_serialized_argsz*CliSettingsSource._flatten_serialized_args  s?     % J'/,*GG .1LLL)	* 	*rS   c                   i }g }g }g }	t        |rt        |      n| j                        j                         D ]  \  }
}t	        ||
      }|j
                  |k(  r#t        |j                  v r|8t        t        | j                  |   j                                     }|j                  rU|	j                  |j                  t        |                   | j                  ||||d      }|	| j!                  ||      z  }	t#        t        |            st%        t        |            r0| j                  ||||d      }||d   z  }||d   z  }|	|d   z  }	 t'        j(                  d|j*                        }|r|j-                         nd\  }}t/        |t0        t2        t4        f      rt7        j8                  |      n
t;        |      }|j<                  r| j?                  ||||      }t@        |j                  v rht/        |t2              r|n|gD ]N  }t/        |t0        t2        t4        f      rt7        j8                  |      n
t;        |      }|j                  |       P ,|jB                  jE                  d      tF        k(  r|d	u r
|d
k(  r|dz  }| jI                  ||||      D ]M  }|j                  | |        |jB                  jE                  d      tF        ddfvs=|j                  |       O  |D cg c])  }t/        |t:              st7        j8                  |      n|+ c}|D cg c])  }t/        |t:              st7        j8                  |      n|+ c}|	dS c c}w c c}w )NT)r  r   r(  _is_submodelr$  r%  r&  z(-*)(.+))r   r   r  Fz--r  )r  r   r  r  )r$  r%  r&  )%r@   r   r   r}   r  r   r:   r   r*  r+  r  r   r~   r   r   _serialized_argsr)  r&   r'   r|  r}  r   groupsr   r   r   r   rO  rQ  rZ   r   r  r9   rP   r   r   r"  )rN   rd   r  r   r(  r+  r  rr  rp  rq  rf   r|   r  r  sub_argsr  
flag_charsr  r  s                      rR   r,  z"CliSettingsSource._serialized_args  s]    46 @BBD%'&7|UY]YjYj&k&q&q&s :	0"J
#E:6M!!]2!4!449NtD,,Z8??ABCC""&&s';';D<O'PQ00!))&7!% 1   4#@#@K\#]]d=126KDQ^L_6`00!))&7!% 1  *!558L#998L#99hh{C,B,BCG7>7>>#3H J-7dTWGX-Y

=)_bcp_q  %% <<XujZrs J$7$77.8.M]TaSb 2E1;ED$PSCT1UDJJu-[^_d[eE#**512  zz~~h'+@@]V[E[`jnr`re#
22=%T^ku2v 0$$
|H:%>? ::>>(+4I<Yf3gg!((/0k:	0z booX]*UC2HE*eSocrsZ_Juc4J4::e,PUUs)
 	
oss   .M)5.M.)2r   ztype[BaseSettings]r   r   r   z)bool | list[str] | tuple[str, ...] | Noner   r   r   rl   r   rl   r   rl   r   rl   rO   rl   r   r   r   r   r   z'bool | Literal['dual', 'toggle'] | Noner   rl   r   rj   r   z$Mapping[str, str | list[str]] | Nonerh   rl   r   r   r   Callable[..., Any] | Noner   r0  r   r0  r   r0  r   r0  r   r0  r   r   rX   rY   )rX   rr   )rq   z"list[str] | tuple[str, ...] | boolrX   CliSettingsSource[T])r   z,Namespace | SimpleNamespace | dict[str, Any]rX   r1  )rq   z)list[str] | tuple[str, ...] | bool | Noner   ?Namespace | SimpleNamespace | dict[str, list[str] | str] | NonerX   z%dict[str, Any] | CliSettingsSource[T])rX   zMapping[str, str | None])r   r2  rX   z/Mapping[str, str | None] | CliSettingsSource[T])r   dict[str, list[str] | str]rX   rp   )r   r3  rf   rZ   r  rp   rX   rW   )r3  rp   rf   rZ   rX   ztuple[type | None, type | None])r?  rp   rf   rZ   rX   rZ   )r3  rp   rf   rZ   rX   rZ   )rE  rZ   r?  rp   rS  rW   rX   rZ   )rE  rZ   r?  rp   rX   rZ   )rE  rZ   r?  rp   r4  ztype[Any] | NonerX   rZ   )rd   r   rf   rZ   r|   r(   rX   rY   )rd   r   rX   zlist[tuple[str, FieldInfo]])rX   r   )
r  r0  r  rZ   rq   r   rP   r   rX   Callable[..., Any])r   r0  rX   r4  )r   r   r   r0  r   r0  r   r0  r   r0  r   r0  r   r0  r   r   rX   rY   )rX   rY   )re   r   rd   r   r  rp   rg   rZ   r  rZ   r~  r   r  rp   r  r   r  rW   r  dict[str, set[Any]]r  rW   rX   r   )rP   rr   r|   r(   r   rW   rX   rY   )rP   rr   r|   r(   r  r   rX   rY   )
rP   rr   r|   r(   r   rZ   r  r   rX   ztuple[list[str], str])r  rc   r  rZ   r  rp   r  rp   r  r5  r  rW   rX   rp   )re   r   rd   r   r   r   r  rp   rg   rZ   r  rZ   r  rZ   r  rp   rP   rr   rf   rZ   r|   r(   r   rs   r  r   r  rW   rX   rY   )re   r   rz   ru   r  rp   rg   rZ   r  rZ   r~  r   rX   rY   )r  r   rX   rs   r   )rq   rp   r  r   rX   rZ   )r  r   rX   rZ   )
rf   rZ   r|   r(   r  r   r  rW   rX   rZ   )r|   r(   rX   rW   )
r  rZ   r  r   r|   r(   r  rr   rX   zlist[Any] | dict[str, Any])rO  rO  )
r  r   r  z str | list[Any] | dict[str, Any]r  #Literal['json', 'argparse', 'lazy']r   Literal['json', 'env']rX   z&list[str | list[Any] | dict[str, Any]])r'  dict[str, list[str]]r(  rW   rX   rp   )rO  rO  FF)rd   r5   r  r6  r   r7  r(  rW   r+  rW   rX   r8  )3r[   r\   r]   r   r   add_argumentr  r	   
add_parseradd_subparsersformat_helpr   rL   r   r  r   r  r  r6  rI  r!  rL  rM  rN  rl  rv  propertyr   r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  staticmethodr)  r,  r^   r_   s   @rR   r   r      s   0j %)DH)-*.&*,059)-!%+/FJ/3CG>B&*7;9G9T9T?M?`?`7H7S7S;I;X;X8F8R8R:3@`(@` "@` B	@`
 '@` (@` $@` *@` (3@` '@` @` )@` D@` "-@` A@`  <!@`" $#@`$ %@`& 5'@`( 7)@`* $=+@`, 5-@`.  9/@`0 61@`2 3@`4 
5@`D - -   & ;?W[	& 8& U	&
 
/&& = = " ae#]#	8#J$>5CFMV	.)"L<+TZ
F$:o&+[Z ! !$!6$!EH$!QT$!`c$!	$!L 0 :H9T9T?M?`?`7H7S7S;I;X;X8F8R8R:+
+
 5+
 7	+

 $=+
 5+
  9+
 6+
 +
 
+
Z6 %*24&*UU U 	U
 U U U "U U "U 0U  $U 
UnL]0&$&2;&NQ&be&	&*)) ) "	)
 ) 0)  $) 
)VRR R *	R
 R R R R R R R R %R R "R  
!Rh,, /, 	,
 , , , 
,BXC)VVDjj+4jEHj_cj	j6L22$'25>2Zh2	#2@ ;A-3 0 8	
 + 
0& *-** 
* * ;A-3"'"L
L
 8L
 +	L

  L
 L
 
L
rS   r   )or   
__future__r   _annotationsr  rO  r|  r{  r   r  r  r   r   r   r   r   r	   collectionsr
   collections.abcr   r   r   enumr   	functoolsr   	itertoolsr   textwrapr   typesr   r   r   r   r   r   r   r   r   r   r   r   pydanticr   r   r    r!   r"   r#   r$   pydantic._internal._reprr%   pydantic._internal._utilsr&   pydantic.dataclassesr'   pydantic.fieldsr(   pydantic_corer)   typing_inspectionr*   typing_inspection.introspectionr+   
exceptionsr.   utilsr/   r0   r1   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   r  rE   pydantic_settings.mainrF   rH   ra   rc   r   CliSubCommandCliPositionalArgrW   r   rg  rh  ri  rj  r  CliSuppressr   rZ   CliUnknownArgsr   rJ   rS   rR   <module>rW     s   - 2   	  
   $ 7 7  %   !    j i i 3 4 6 % + , ; ' F F     #3N 		 	Q
i Q
h CL!d(N23Q 112 ~T2L*::;L*::;,67l23<(49eB&7(RSt
)71: t
rS   