
    xi:                    2   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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l0m1Z1 ddl2m3Z3 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@mAZAmBZB ddlmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJ ddl@mKZKmLZLmMZMmNZNmOZOmPZPmQZQ ddlRmSZS erddlTmUZU  G d de          ZV G d d e-          ZW G d! d"e-          ZX e$d#          ZYeeYdz  eIf         ZZeeYeHf         Z[ e$d$e\%          Z]ee]eGf         Z^ee]eFf         Z_e
Z`eeYe`f         Zaeebec          e.g &          eJeDf         Zd G d' d(eSe!eY                   ZedS ))z'Command-line interface settings source.    )annotationsN)SUPPRESSArgumentParserBooleanOptionalAction	NamespaceRawDescriptionHelpFormatter_SubParsersAction)defaultdict)CallableMappingSequence)Enum)cached_property)dedent)SimpleNamespace)TYPE_CHECKING	AnnotatedAnyGenericLiteralNoReturnTypeVarcastget_args
get_originoverload)AliasChoices	AliasPath	BaseModelFieldPrivateAttr)Representation)is_model_class)is_pydantic_dataclass)	FieldInfo)PydanticUndefined)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 )_CliInternalArgParserTcli_exit_on_errorboolkwargsr   returnNonec                H     t                      j        di | || _        d S )N )super__init___cli_exit_on_error)selfrC   rE   	__class__s      /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/pydantic_settings/sources/providers/cli.pyrK   z_CliInternalArgParser.__init__L   s.    ""6""""3    messagestrr   c                |    | j         st          d|           t                                          |           d S )Nzerror parsing CLI: )rL   r+   rJ   error)rM   rQ   rN   s     rO   rT   z_CliInternalArgParser.errorP   sB    & 	A ?g ? ?@@@grP   )T)rC   rD   rE   r   rF   rG   )rQ   rR   rF   r   )__name__
__module____qualname__rK   rT   __classcell__rN   s   @rO   rB   rB   K   s`        4 4 4 4 4 4 4         rP   rB   c                      e Zd ZdS )CliMutuallyExclusiveGroupN)rU   rV   rW   rI   rP   rO   r[   r[   V   s        DrP   r[   c                  d    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<   d9 fd"Zed: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d@d1            ZedAd2            ZedBd3            Zed?d4            ZedCd5            ZedCd6            ZedCd7            ZedCd8            Z xZS )D_CliArgr   modelrR   
field_name
arg_prefixrD   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]rE   rI   tuple[str, ...]_alias_namesdict[str, int | None]_alias_pathsF_is_alias_path_onlyr%   _field_info
field_info
parser_map=defaultdict[str | FieldInfo, dict[int | None | str, _CliArg]]valuesrF   rG   c                     t                      j        di | | _        t           j         j         j         j                  \   _         _	         fd j        
                                D             } j        rh j        D ]_}                     |          }                     g i d          | j                 |<   | j                 |         | j                 |<   `n: j        |vr1 | j                 d <   | j                 d          | j                 d <   |
                                D ]C\  }}                     g i d          ||         |<   ||         |         | j                 |<   Dd S )N)alias_path_argsra   c                .    i | ]\  }}j          | |S rI   )r`   ).0nameindexrM   s      rO   
<dictcomp>z$_CliArg.__init__.<locals>.<dictcomp>w   s,    kkk+$t666kkkrP   )rj   rE   )updaterI   )rJ   rK   rq   r9   r_   rr   ro   ra   rm   rp   itemssubcommand_dest
sub_modelssubcommand_alias
model_copydest)
rM   rr   rs   ru   alias_path_dests	sub_modelr   alias_path_destr{   rN   s
   `        rO   rK   z_CliArg.__init__k   s    	""6"""%6FOT_d>O`d`s7
 7
 7
343 lkkkQUQbQhQhQjQjkkk 	L!_ s s	#'#8#8#C#C EI__egsu\v\v_EwEw
4/01AB@J4K_@`aq@r
4?+,<==s Y...*.Jty!$'0:490Ed0KJt'-&6&<&<&>&> 	T 	T"OU15QS_aHbHb1c1cJ'.1;O1LU1SJt'..	T 	TrP   rz   c                :    |dvr|                     dd          n|S )NNF_-)replace)clsrz   rd   s      rO   get_kebab_casez_CliArg.get_kebab_case   s%    )3=)H)Ht||C%%%dRrP   
annotation	type[Any]c                     d}t          |          }t          |          D ]}|                     |          z  }|r4t          |t                    r|t           fd|D                       z  }|S )NrI   c              3  V   K   | ]#}                     |j        d k              V  $dS )allN)r   rz   )ry   valr   rd   s     rO   	<genexpr>z)_CliArg.get_enum_names.<locals>.<genexpr>   s;      hhVY 2 238Z5=P Q QhhhhhhrP   )r<   r   get_enum_namesr,   r   tuple)r   r   rd   
enum_namestype_s   ` `  rO   r   z_CliArg.get_enum_names   s     ')
%j11
j)) 	@ 	@E#,,UJ???JJ 	i-j$?? 	i%hhhhh]ghhhhhhJrP   r   type[BaseModel]c                    |                      t          | j                  dk    r|j        n| j        | j                  S )Nr>   )r   lenr   rU   preferred_aliasrd   )rM   r   s     rO   r   z_CliArg.subcommand_alias   sB    """%do"6"6":":I@TVZVe
 
 	
rP   c                    | j         S N)rq   rM   s    rO   rr   z_CliArg.field_info   s    rP   
str | Nonec                @    t           | j        j        v r
| j         dnd S )N:subcommand)r5   rr   metadatar`   r   s    rO   r   z_CliArg.subcommand_dest   s(    2@DOD\2\2\$/....bffrP   c                    | j         s7| j        r0| j        j        $| j        s| j         | j         | j        d          S | j         | j         S r   )r   r`   rr   validation_aliasis_parser_submodelr   rh   r   s    rO   r   z_CliArg.dest   so     $	U	U 0<+ =
 o=t';==d>Q>S>STT/94#7999rP   c                l    | j         r!| j        d                             dd          n| j        d         S )Nr   r   r   )rd   rj   r   r   s    rO   preferred_arg_namez_CliArg.preferred_arg_name   s1    15Rty|##C---diPQlRrP   list[type[BaseModel]]c                v   t          | j        j                  s| j        j        fnt          | j        j                  }| j        rt	          d |D                       }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          |                    r"|                    t          |                     |S )Nc                4    g | ]}|t          d           u|S r   typery   r   s     rO   
<listcomp>z&_CliArg.sub_models.<locals>.<listcomp>   s,     [ [ [55PTUYPZPZCZCZCZCZCZrP   F)is_include_originz.CliSubCommand is not outermost annotation for .z1CliPositionalArg is not outermost annotation for )r   rr   r   rb   r   r7   r5   r+   r^   rU   r_   r4   r#   r<   r$   append)rM   field_typesr   r   s       rO   r   z_CliArg.sub_models   sg    DO6776T_'))$/455 	
  	] [ [K [ [ [\\K,.
  
	; 
	;E)%.1BV[\\\ #lTZEXll[_[jll   ,E4E3G[`aaa #o
H[oo^b^moo   .u5566 ;:OP`afPgPg:h:h ;!!"25"9"9:::rP   c                    | j         S r   rm   r   s    rO   alias_namesz_CliArg.alias_names         rP   c                    | j         S r   )ro   r   s    rO   alias_pathsz_CliArg.alias_paths   r   rP   c                    | j         d         S )Nr   r   r   s    rO   r   z_CliArg.preferred_alias   s     ##rP   c                    | j         S r   )rp   r   s    rO   is_alias_path_onlyz_CliArg.is_alias_path_only   s    ''rP   c                    | j          o9t          | j        j        t          t
          t          t          t          fd          S )NTis_strip_annotated)	r   r7   rr   r   listsetdictr   r   r   s    rO   is_append_actionz_CliArg.is_append_action   s?    '' 
,FO&sD(G(Lae-
 -
 -
 	
rP   c                J    | j          ot          | j                  o| j         S r   )r   rD   r   r   r   s    rO   r   z_CliArg.is_parser_submodel   s(    ''_D,A,A_$J_F__rP   c                r    | j         d uo.t          | j         j        v p| j        du ot          | j         j        vS r   )rr   r0   r   rf   r/   r   s    rO   is_no_decodez_CliArg.is_no_decode   sC    d* 
00 _$-]+T_E]2]	
rP   )rr   r%   rs   rt   ru   r   rF   rG   )rz   rR   rd   rc   rF   rR   )r   r   rd   rc   rF   rl   )r   r   rF   rR   )rF   r%   )rF   r   )rF   rR   )rF   r   )rF   rl   )rF   rn   )rF   rD   )rU   rV   rW   __annotations__rj   rE   r!   rm   ro   rp   rq   rK   classmethodr   r   r   r   rr   r   r   r   r   r   r   r   r   r   r   r   rX   rY   s   @rO   r]   r]   Z   s        JJJOOOOOO8888    DF$/KOOL3333*5+b//L9999 +E 2 22222([]]K****T T T T T T2 S S S [S 	 	 	 [	
 
 
 

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

 ` ` ` _` 
 
 
 _
 
 
 
 
rP   r]   T_CliBoolFlag)bound)defaultc                  H    e Zd ZdZdddddddddddddddddej        ej        ej        ej	        e
fd fd%Zedd'            Zedd+            Zedd.            Zddd/d fd3Zedd5            Zedd6            Zdd7dd9Zdd<ZddAZddDZddFZddGZddJZddKZddNZddSZddUZeddW            Zdd\Zdd]Zej        ej        ej        ej	        e
fdd^Z	 dddiZddkZddlZ ddoZ!ddrZ"ddwZ#ddzZ$dd|Z%ddd~Z&ddZ'ddZ(ddZ)ddZ*ddZ+dddZ, xZ-S )CliSettingsSourcea  
    Source class for loading settings values from CLI.

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

    Args:
        cli_prog_name: The CLI program name to display in help text. Defaults to `None` if cli_parse_args is `None`.
            Otherwise, defaults to sys.argv[0].
        cli_parse_args: The list of CLI arguments to parse. Defaults to None.
            If set to `True`, defaults to sys.argv[1:].
        cli_parse_none_str: The CLI string value that should be parsed (e.g. "null", "void", "None", etc.) into `None`
            type(None). Defaults to "null" if cli_avoid_json is `False`, and "None" if cli_avoid_json is `True`.
        cli_hide_none_type: Hide `None` values in CLI help text. Defaults to `False`.
        cli_avoid_json: Avoid complex JSON objects in CLI help text. Defaults to `False`.
        cli_enforce_required: Enforce required fields at the CLI. Defaults to `False`.
        cli_use_class_docs_for_groups: Use class docstrings in CLI group help text instead of field descriptions.
            Defaults to `False`.
        cli_exit_on_error: Determines whether or not the internal parser exits with error info when an error occurs.
            Defaults to `True`.
        cli_prefix: Prefix for command line arguments added under the root parser. Defaults to "".
        cli_flag_prefix_char: The flag prefix character to use for CLI optional arguments. Defaults to '-'.
        cli_implicit_flags: Whether `bool` fields should be implicitly converted into CLI boolean flags.
            (e.g. --flag, --no-flag). Defaults to `False`.
        cli_ignore_unknown_args: Whether to ignore unknown CLI args and parse only known ones. Defaults to `False`.
        cli_kebab_case: CLI args use kebab case. Defaults to `False`.
        cli_shortcuts: Mapping of target field name to alias names. Defaults to `None`.
        case_sensitive: Whether CLI "--arg" names should be read with case-sensitivity. Defaults to `True`.
            Note: Case-insensitive matching is only supported on the internal root parser and does not apply to CLI
            subcommands.
        root_parser: The root parser object.
        parse_args_method: The root parser parse args method. Defaults to `argparse.ArgumentParser.parse_args`.
        add_argument_method: The root parser add argument method. Defaults to `argparse.ArgumentParser.add_argument`.
        add_argument_group_method: The root parser add argument group method.
            Defaults to `argparse.ArgumentParser.add_argument_group`.
        add_parser_method: The root parser add new parser (sub-command) method.
            Defaults to `argparse._SubParsersAction.add_parser`.
        add_subparsers_method: The root parser add subparsers (sub-commands) method.
            Defaults to `argparse.ArgumentParser.add_subparsers`.
        formatter_class: A class for customizing the root parser help text. Defaults to `argparse.RawDescriptionHelpFormatter`.
    NTsettings_clstype[BaseSettings]cli_prog_namer   cli_parse_args)bool | list[str] | tuple[str, ...] | Nonecli_parse_none_strcli_hide_none_typere   cli_avoid_jsoncli_enforce_requiredcli_use_class_docs_for_groupsrC   
cli_prefixcli_flag_prefix_charcli_implicit_flagscli_ignore_unknown_argscli_kebab_caserc   cli_shortcuts$Mapping[str, str | list[str]] | Nonera   root_parserr   parse_args_methodCallable[..., Any] | Noneadd_argument_methodadd_argument_group_methodadd_parser_methodadd_subparsers_methodformatter_classrF   rG   c           	     ,   ||n*|j                             dt          j        d                   | _        ||n|j                             dd          | _        ||n|j                             dd          | _        |s| j        du rdnd}|| _        ||n|j                             d	d          | _        ||n|j                             d
d          | _	        |	|	n|j                             dd          | _
        |
|
n|j                             dd          | _        ||n|j                             dd          | _        | j        dz  | _        | j        rt|
                    d          s=|
                    d          s(|
                    dd                                          st%          d|
           | xj        dz  c_        ||n|j                             dd          | _        ||n|j                             dd          | _        ||n|j                             dd          | _        ||n|j                             dd           | _        ||nd}|s|t%          d          t/                                          |d| j        d| j        |           |?t3          | j
        | j        |j        d nt7          |j                  || j        d          n|}|                     |||||||           |dvr|du rt          j        dd          }n;t;          |t<          t>          f          st%          dtA          |                     | !                    | "                    | j#        |                     d S d S )Nr   r   r   Fr   TrG   nullr   r   rC   r    r   r   r.   r   z'CLI settings source prefix is invalid: r   r   r   r   zGCase-insensitive matching is only supported on the internal root parser)env_nested_delimiterenv_parse_none_strenv_parse_enums
env_prefixra   )rC   progdescriptionr   prefix_charsallow_abbrev)r   r   r   r   r   r   r   r   r>   z<cli_parse_args must be a list or tuple of strings, received parsed_args)$model_configgetsysargvr   r   r   r   r   r   rC   r   r   _cli_flag_prefix
startswithendswithr   isidentifierr+   r   r   r   r   rJ   rK   rB   __doc__r   _connect_root_parser
isinstancer   r   r   _load_env_vars_parse_argsr   )rM   r   r   r   r   r   r   r   r   rC   r   r   r   r   r   r   ra   r   r   r   r   r   r   r   rN   s                           rO   rK   zCliSettingsSource.__init__%  s   6 +6MML<U<Y<YZiknkstukv<w<w 	
 "- *../CUKK 	 -8NNl>W>[>[\lns>t>t 	 " 	S+/+>$+F+FF"4 $/ ! *../EuMM 	! -8 *)*../NPUVV 	* !, *../BDII 	
 )3(>**LD]DaDabnprDsDs $/ ! *../EsKK 	!
 !% 9A =? 	#$$S)) \Z-@-@-E-E \ZM_M_`cegMhMhMuMuMwMw \#$Zj$Z$Z[[[OOs"OO "- *../CUKK 	 '2 $#*../H%PP 	$ -8NNl>W>[>[\lns>t>t 	 +6MML<U<Y<YZiko<p<p 	 ,:+E4 	k+"9 ijjj!$#6 ) 	 	
 	
 	
$ " ""&"8'$0$8$@DDf\MaFbFb /!6"     	 	!!#/ 3&?/"7+ 	" 	
 	
 	
 ..%%!$!""u>> #iSWXfSgSgii   D,<,<T=M~,^,^_____ /.rP   rk   c                    d S r   rI   r   s    rO   __call__zCliSettingsSource.__call__  s    *-#rP   rj   "list[str] | tuple[str, ...] | boolCliSettingsSource[T]c                   dS )a  
        Parse and load the command line arguments list into the CLI settings source.

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

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

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

        Args:
            parsed_args: The parsed args to load.

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

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

        Args:
            parsed_args: The parsed args to load.

        Returns:
            CliSettingsSource: The object instance itself.
        NrI   r	  s     rO   r   z CliSettingsSource._load_env_vars  r
  rP   r   /Mapping[str, str | None] | CliSettingsSource[T]c                  |i S t          |t          t          f          rt          |          }|                     |          }| j                                        D ]^\  }}t          |t                    rD|                    d          r/d |	                                D             D ]}||vr
| j
        ||<   _d |                                D             }|rHt          |t                    t          fd|                                D                       sd|<   |                    | j                   t#          t%          t&          t          t          f         |          | j        | j        | j
                  | _        | S )Nr   c                    g | ]	}|j         
S rI   )r   ry   args     rO   r   z4CliSettingsSource._load_env_vars.<locals>.<listcomp>  s    'M'M'MS'M'M'MrP   c                V    i | ]&\  }}|                     d           s|t          u#||'S )r   )r   r&   )ry   keyr   s      rO   r|   z4CliSettingsSource._load_env_vars.<locals>.<dictcomp>  sJ     
 
 
S<<..
 47>O3O3O 3O3O3OrP   )r  c              3  *   K   | ]} d |v 	|V  dS )r   NrI   )ry   r_   last_selected_subcommands     rO   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>  s8      wwjMeJhJhJhlvJvJvzJvJvJvJvwwrP   {})r   r   r   vars_resolve_parsed_args_parser_mapr~   rR   r   ru   r   maxr   anykeysr}   _cli_unknown_argsr=   r   r   ra   env_ignore_emptyenv_vars)rM   r   selected_subcommandsarg_destarg_mapr   r  s         @rO   r   z CliSettingsSource._load_env_vars  s    IkI#?@@ 	,{++K#88EE!%!1!7!7!9!9 	O 	OHg(C(( OX->->}-M-M O'M'MGNN<L<L'M'M'M O OO&.BBB7;7NO4
 
'--//
 
 

   	='*+?S'I'I'I$wwwwK4D4D4F4Fwwwww =8<4541222&c"K00!#	
 
 rP   dict[str, list[str] | str]ri   c                t   g }t          |                                          D ]\  }}t          |t                     r|                     |||          r3| j                            |i                               d           }|r |j        rd                    |          ||<   |                     ||          ||<   |	                    d          r.|,|
                    | j        |         |         j                   | j        dk    r|                    dd          }| j                            |i                               d           }|ra|j        j        rU||                    |j        j        d          v r3d|v r*t#          d|                    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   r   rr   r   r   
ValueError)rM   r   r%  r_   r   cli_arg	snake_vals          rO   r  z&CliSettingsSource._resolve_parsed_args  s   *,#K$5$5$7$788 	8 	8OJ#t$$ 8==k:WZ[[  *..z2>>BB4HH w3 .1hhsmmK
+*.*A*A#z*R*RJ''$$]33 8$++D,<Z,H,M,RSSSS$--KKS11	*..z2>>BB4HH8*58 #g&<&<W=O=Z\a&b&bbbczz()mTWY\H]H])m)mgj)m)m)mnnn.7K
+##rP   r_   rR   r   rD   c                   | j                             |i                                           }|sdS t          t	          |                    }|j        rr|j                            d          rX||= |j        dd         }d|j         d| 	                    ||           }||vrd| dn||         dd          d	| d||<   d
S dS )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   ru   nextiterr   r`   r   r   r.  )rM   r   r_   r   	known_argr  nested_dest
nested_vals           rO   r,  z7CliSettingsSource._is_nested_alias_path_only_workaround3  s    $((R88??AA	 	54	??##! 		cn&=&=c&B&B 		J'."-K_S0__T5L5LSR\5]5]__J k11 $Z#####K0"5GGGGG $
 4urP   parsed_listtuple[type | None, type | None]c                b   | j                             |t                    }|t          u sBt          t	          |                    r&t          d t          |          D                       s|}n>|r5t          |          dk    s|d                             d          rt          nt          }||fS )Nc              3  v   K   | ]4}|t          d           ut          |          t          t          fv0|V  5d S r   )r   r   r   r   r   s     rO   r   zACliSettingsSource._get_merge_parsed_list_types.<locals>.<genexpr>O  sU        T

**z%/@/@w/W/W /W/W/W/W rP   r>   r   [)
_cli_dict_argsr   r   r(   r   r   r   r   r   rR   )rM   r<  r_   
merge_typeinferred_types        rO   _get_merge_parsed_list_typesz.CliSettingsSource._get_merge_parsed_list_typesJ  s    (,,Z>>
$":j#9#9::   %j11      'MM$/uS5E5E5I5I[YZ^MfMfgjMkMk5IDDruM=((rP   merged_listc                   g }d }| j                             |i           }t          |          D ]\  }}|                    |          }|d u p|j         }	||	}n||	k    rt	          d          |r|                    dd          }n4|                    d          r|                    d          r
|dd         }|                    |           d	                    |          }
|rd|
 d	n|
S )
NzKMixing Decode and NoDecode across different AliasPath fields is not allowed\z\\r+  r>   r3  r*  r@  ])
r  r   	enumerater   r+   r   r   r   r   r-  )rM   rE  r_   decode_listis_use_decodecli_arg_mapr{   itemr0  	is_decodemerged_list_strs              rO   _merged_list_to_strz%CliSettingsSource._merged_list_to_str[  s    !#%)&**:r::$[11 	% 	%KE4!ooe,,G4Cw/C+CI$ ))++#$qrrr "||D&11%% "$--*<*< "AbDzt$$$$((;//)6K%?%%%%OKrP   c                F   	 g }d}|                      ||          \  }}|D ]g}t          |t                    s nN|                                }|                    d          r1|                    d          r|dd                                         }|r|                                }|                    d          r|                     |||          }d}n|                    d          s|                    d          r|                     ||          }nO	 |                     |||          }n6# t          $ r)}||u r||}|                     |||          }Y d }~nd }~ww xY wd}||s|                     |||          }i|t          u r|d	         S |t          u r|                     ||          S i }	|D ])}
|	                    t          j        |
                     *t          j        |	          S # t           $ r}t#          d
| d|           d }~ww xY w)NFr@  rH  r>   r3  r*  r4  Tr   zParsing error encountered for z: )rD  r   rR   stripr   r   _consume_comma_consume_object_or_array_consume_string_or_numberr/  r   rP  r}   jsonloadsdumps	Exceptionr+   )rM   r<  r_   rE  is_last_consumed_a_valuerB  rC  r   emerged_dictrM  s              rO   r.  z$CliSettingsSource._merge_parsed_listn  s   *	T%'K',$(,(I(I+Wa(b(b%J" Z Z!#s++  Eiikk>>#&& ,3<<+<+< ,ad)//++C 8))++C~~c** 8"11#{D\]]3800>>#.. 	c#..2E2E 	c"&"?"?["Q"QCCc&*&D&DS+Wa&b&b#- c c c#-#>#>*+G-:
&*&D&DS+Wa&b&b	c
 480!  8" 0 Z--c;@XYYCS  "1~%t##//ZHHH.0' 9 9D&&tz$'7'78888z+... 	T 	T 	T R R Rq R RSSS	TsO   DG< D54G< 5
E(?E#G< #E((2G< G< :AG< <
H HH rM  rZ  c                D    |s|                     d           |dd          S )Nz""r>   )r   )rM   rM  rE  rZ  s       rO   rS  z CliSettingsSource._consume_comma  s+    ' 	%t$$$ABBxrP   c                   d}|                     d          rdnd}d}t          dt          |                    D ]}||         dk    r||dz
           dk    r| }!|r$||         dv r|dz  }4||         d	v rF|dz  }||         |k    r5|d
k    r/|                    |d |dz                       ||dz   d          c S t	          d| d          )Nr>   r4  r5  rH  Fr+  rG  )r4  r@  )r5  rH  r   zMissing end delimiter ")r   ranger   r   r+   )rM   rM  rE  countclose_delimin_strconsumeds          rO   rT  z*CliSettingsSource._consume_object_or_array  s   !__S11:ccsaT++ 	0 	0HH~$$hl);t)C)C# 0h:--
h:--
>[00UaZZ&&tNhlN';<<<1////DkDDDEEErP   rB  type[Any] | Nonec                   |t           urdnt          |          }d}|t          |          k     rK||         dk    r|dk    s||dz
           dk    r| }|s||         dk    rn|dz  }|t          |          k     K|rt          d          |d |                                         }|t          t           fv rc	 t          |           n<# t          $ r/ || j        k    rd}|d	vr|                    d          sd| d}Y nw xY w|	                    |           nd
 |
                    dd          D             \  }}|                    d          rQ|                    d          s<|                    d          s'|                    d          rt          d|           |                    d          |                    d          }}|	                    t          j        ||i                     ||d          S )Nr   Fr+  r>   rG  r*  zMismatched quotesr   )truefalser   c              3     K   | ]}|V  d S r   rI   )ry   kvs     rO   r   z>CliSettingsSource._consume_string_or_number.<locals>.<genexpr>  s"      >>r>>>>>>rP   =z1Dictionary key=val parameter is a quoted string: )rR   r   r+   rR  r   floatr/  r   r   r   splitr   rV  rX  )	rM   rM  rE  rB  rc  is_find_end_quote
val_stringr  r   s	            rO   rU  z+CliSettingsSource._consume_string_or_number  sM   "#--113t99!T""H~$$(a--41;MQU;U;U(9$9!$ h3)>)>MH T""  	5 3444)8)_**,,
$$$3j!!!! 3 3 3!888!'J%>>>zG\G\]`GaGa>!2Z!2!2!2J	3
 z****>>Z%5%5c1%=%=>>>HC~~c"" c3<<+<+< cS^^TWEXEX c]`]i]ijm]n]n c !aU_!a!abbbyy~~syy~~Ctz3*55666HIIs   9C	 	6DDr^   r   rr   r%   c                    t           |j        v rd}nt          |j        v rd}nd S |j        t          urt          | d|j         d| d          d S )NCliImplicitFlagCliExplicitFlagz
 argument r   z is not of type bool)r3   r   r2   r   rD   r+   rU   )rM   r^   r_   rr   cli_flag_names        rO   _verify_cli_flag_annotationsz.CliSettingsSource._verify_cli_flag_annotations  sp    z222-MM!444-MMF ,,= m mEN m mZ m m mnnn -,rP   list[tuple[str, FieldInfo]]c           	     :   g }g g g }}}t          |                                          D ]\  }}t          |j        v r|                                st          d|j         d| d          t          ||          ^}}	t          |          dk    rt          d|j         d| d          d t          |j
                  D             }
|
D ];}t          |          s*t          |          st          d|j         d| d          <|                    ||f           t          |j        v rt          ||          ^}}	t          |          dk    rt          d|j         d| d          t          |j
        t           t"          t$          t&          t(          fd	
          }|s|                    ||f           |                    ||f           |                     |||           |                    ||f           |rt          |          dk    r8d                    d |D                       }t          |j         d|           |r;d                    d ||z   D                       }t          |j         d|           ||z   |z   |z   S )Nzsubcommand argument r   z has a default valuer>   z has multiple aliasesc                4    g | ]}|t          d           u|S r   r   r   s     rO   r   z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>  s-    "q"q"qUY^fjkofpfpYpYp5YpYpYprP   z$ has type not derived from BaseModelzpositional argument Tr   r6  c                    g | ]\  }}|S rI   rI   ry   rz   infos      rO   r   z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>  s    (X(X(X*$(X(X(XrP   z- has multiple variadic positional arguments: c                    g | ]\  }}|S rI   rI   rx  s      rO   r   z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>   s    (j(j(j*$(j(j(jrP   z= has variadic positional arguments and subcommand arguments: )r:   r~   r5   r   is_requiredr+   rU   r9   r   r   r   r#   r$   r   r4   r7   r   r   r   r   r   rs  r-  )rM   r^   positional_variadic_argpositional_argssubcommand_argsoptional_argsr_   rr   r   r   r   
field_typer   field_namess                 rO   _sort_arg_fieldsz"CliSettingsSource._sort_arg_fields  s*   "$:<b"-&7&>&>&D&D&F&F 	? 	?"J
!444!--// '(pu~(p(pPZ(p(p(pqqq&6z:&N&NOK!;''!+++,u5>,u,uT^,u,u,uvvv"q"qhz?T6U6U"q"q"qK&1  
 .z : : >ST^>_>_ "/ xu~ x x
 x x x# #   &&
J'?@@@@"j&999"2:z"J"Ja{##a'''(qu~(q(qPZ(q(q(qrrr#=)D#tXw+Odh$ $ $  ( M#**J
+CDDDD+22J
3KLLLL11%ZPPP$$j*%=>>>>" 	*++a//"ii(X(X@W(X(X(XYY#u~$q$qdo$q$qrrr  "ii(j(j@WZi@i(j(j(jkk#~qqdoqq   !88?J]ZZrP   r   c                    | j         S )z#The connected root parser instance.)_root_parserr   s    rO   r   zCliSettingsSource.root_parser  s       rP   parser_methodmethod_namerE   Callable[..., Any]c                     5 j         du r,dk    r&t           j        t                    r	 	 dd fd}|S dfd}|S S )NFr   r   rB   rj   "list[str] | tuple[str, ...] | None	namespaceNamespace | NonerF   r   c                l   g }|r&t          j        t          j        |                    ng D ]z}dj         d}t	          j        d| d|          }|r=|                    d                                          |                    d          z   }|                    |           { | ||          S )NrG  z{1,2}z^(z[^\s=]+)(.*)r>   r.   )	shlexrl  r-  r   rematchgrouplowerr   )	r   rj   r  insensitive_argsr  flag_prefixmatchedr  rM   s	          rO   parse_args_insensitive_methodzOCliSettingsSource._connect_parser_method.<locals>.parse_args_insensitive_method  s    
 $& <@H5;uz$'7'7888b 1 1C"It'@"I"I"IK h'F['F'F'FLLG J%mmA..4466q9I9II$++C0000$}[2BINNNrP   rE   c                 *    t          d d          )Nz0cannot connect CLI settings source root parser: z. is set to `None` but is needed for connectingr*   )rj   rE   r  s     rO   none_parser_methodzDCliSettingsSource._connect_parser_method.<locals>.none_parser_method(  s/    # C{  C  C  C  rP   )NN)r   rB   rj   r  r  r  rF   r   )rj   r   rE   r   rF   r   )ra   r   r  rB   )rM   r  r  rj   rE   r  r  s   ```    rO   _connect_parser_methodz(CliSettingsSource._connect_parser_method  s     %#u,,2224,.CDD 3 <@.2O O O O O O O O 10"     
 &% ! rP   c                @    |                      |d          dfd}|S )Nr   parserr   rE   rF   c                                        d          s                     d            | fi S fddD             }|dxx         dz  cc<    | fi |}t          |d          st          d           |j        d	i S )
N _is_cli_mutually_exclusive_grouprequiredc                D    i | ]}|v |                     |          S rI   )pop)ry   r  rE   s     rO   r|   zUCliSettingsSource._connect_group_method.<locals>.add_group_method.<locals>.<dictcomp>:  s1    $o$o$ocadhnananS&**S//anananrP   )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 connectingrI   )r  hasattrr+   r  )r  rE   main_group_kwargsr  add_argument_groups    `  rO   add_group_methodzACliSettingsSource._connect_group_method.<locals>.add_group_method5  s    ::@AA D

:&&&))&;;F;;;$o$o$o$oE]$o$o$o!!'***.EE*****6GG5FGGu&DEE 'l   :u9CCFCCCrP   )r  r   rE   r   rF   r   )r  )rM   r   r  r  s      @rO   _connect_group_methodz'CliSettingsSource._connect_group_method2  sG    !889RTopp	D 	D 	D 	D 	D 	D  rP   c           
     $    i  _         d fd}| _        | j        r|nt          j        }                     |d           _                             |d           _                             |           _	                             |d	           _
                             |d
           _        | _        i  _        t          t                     _                              j         j        g  j         j        d g t*                     d S )Nrj   r   rE   rF   r   c                 ~    t          j        | i |\  } }j        D ]}|j        |<   t          t          |           S r   )r   parse_known_argsr"  r   r   )rj   rE   unknown_argsr   rM   s       rO   _parse_known_argszACliSettingsSource._connect_root_parser.<locals>._parse_known_argsR  sO    !/!@$!Q&!Q!QD,. < </;&t,,	4(((rP   r   r   r   r   r  r^   
added_argsr`   subcommand_prefixr  alias_prefixesmodel_default)rj   r   rE   r   rF   r   )r"  r  r   r   
parse_argsr  r  _add_argumentr  
_add_group_add_parser_add_subparsers_formatter_classrA  r
   r   r  _add_parser_argsr   r   r   r&   )	rM   r   r   r   r   r   r   r   r  s	   `        rO   r   z&CliSettingsSource._connect_root_parserF  s;    8:	) 	) 	) 	) 	) 	) ($595Q p 1 1WeWp667HJ]^^!889LNcdd445NOO667HJ]^^#::;PRijj /;=ZefjZkZk##"o+ 	 		
 		
 		
 		
 		
rP   Fr  r  r`   r  r  r  r  is_model_suppressedr   c
                n	   d }
i }t          t          |                    st          t          |                    rt          t          |          |          sd n|}|                     |          D ]%\  }}t          || j        |||| j        | j        | j	        | j
                            d          | j        
  
        }|                    |j                   |j        r|j        D ]}|                    |          }| j        |j                 |         }|g|_        d|j        d<   | j        |j        d<   |j        d nt-          |j                  |j        d<   t/          |j                  dk    rd n|j        |j        d<   | j        r%|j        d nt-          |j                  |j        d<   |
;|                     |d	| d
t/          |j                  dk    r|j        nd           n|
}
t7          |
d          r'|
j        r|
j        d d          d| dnd| d|
_        |                      | j        |
g|j        R i |j        |g |j         d| |j          dd g tB                     | j"        |j        |j        d<   tF          |j        d<   | $                    ||||	          |j        d<   | %                    |j&                  |j        d<   | j'        o|(                                o|tB          u |j        d<   | )                    ||||j*        |          }|r|j        d         |v r| +                    |j        ||j,                   tZ          |j.        v r%| /                    |j        ||j         |          \  }| 0                    |j        ||           |j1        rJte          |j&        dd          s4| 3                    |||j        |||||j        |||j*        ||	           th          |j.        v rg | j5        |j        d         <   |j6        sito          |tp                    r | j9        |fi |}||n|}fd|D             |_         | j:        |g|j        R i |j         |tw          |          z  }'| <                    ||||||           |S )Nrf   )
rr   rs   r^   r_   r`   ra   rb   rd   rf   rh   Fr   r   r   r>   helpsubcommandsr   )r  r   r   metavarr3  r*  r5  r4  r   r  r   r   r  __pydantic_root_model__)r  r  c                F    g | ]}d t          |                    | S r   )r   ry   rz   r  s     rO   r   z6CliSettingsSource._add_parser_args.<locals>.<listcomp>  s3    ZZZ;{T{#; CT C CZZZrP   )=r#   r   r$   
issubclassr  r]   r  ra   r   r   configr   rh   r}   r   r   r   r   rj   rE   r  r   r   r   r   r   r  r  r  r  r  r   r   r&   r   CLI_SUPPRESS_help_format_metavar_formatr   r   r{  _get_arg_namesr   _convert_append_actionr   r4   r   _convert_positional_arg_convert_bool_flagr   getattr_add_parser_submodelsr6   r"  r   r   r   r  r  r   _add_parser_alias_paths)rM   r  r^   r  r`   r  r  r  r  r  
subparsersrw   r_   rr   r  r   r   subcommand_arg	arg_namescontextr  s                       @rO   r  z"CliSettingsSource._add_parser_argsn  s    
13
  ] 3 3448MdS`NaNa8b8b #4#6#6>>DD
  	 '+&;&;E&B&B k	2 k	2"J
%+%%#2#6. $0A B B#2  C ""3?333" \2!$ ( (I'*';';I'F'F$%)%5c6I%JK[%\N+;*<N'<AN).9?C?TN)*;< ) 1 9viFW?X?X #)-8 =@<O<ORS<S<SDDYcYoN)&19 y@I@Q@Y_efofw_x_x-f5 &- ,,""/$.!;!;!;BEcnBUBUXYBYBY
(>(>_c	 -    (  z955   *1;z1#2#6MM9IMMMM!:&6!:!:!: #* ))/t/
j^=PjjjTbTijj'#%&)h>>>->*V@S*V*V*V"')&7 * 	 	 	 	?(T $(#8%(X
6"(4
9%%)%6%6z:}^q%r%r
6"(,(<(<Z=R(S(S
9%-q*2H2H2J2Jq}`qOq 
:& !// 1>3?T^ 	 ! SZ%7:%E%E++CJ
CDXYYY$
(;;;-1-I-I
J0C]. .*I{ ''
JNNN) 2'*:OQjlq2r2r 2.."")#!
""&3,? /      %
(;;;ACD*3:f+=>>/ 2!%.. A / @ @% @ @(-ff5GZZZZPYZZZCH&D&wHHHHSZHHH$y//1J$$V_j*VginooorP   r   c                    |r?d|d<   t          |j        t          t          fd          r|j        | j        |d         <   d S d S d S )Nr   actionTr   r   )r7   r   r   r   rA  )rM   rE   rr   r   s       rO   r  z(CliSettingsSource._convert_append_action  sg     	L'F8)**?$eijjj L6@6K#F6N333	L 	LL LrP   c                    |d         dk    r2| j         st          |j        v r!t          |j        vr|d= t          |d<   d S d S d S d S )Nr  rD   r  )r   r3   r   r2   r   )rM   rE   rr   r  s       rO   r  z$CliSettingsSource._convert_bool_flag  sh    )&&' 9+;z?R+R+R 
(;;;9%#8x    '&;; ,S+RrP   r   tuple[list[str], str]c                >   d}|d         g}t           |d<   t                              |                                | j                  |d<   |                                o|t           u }|                    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&   r]   r   upperr   r{  r   )rM   rE   rr   r   r  r  r  r{  s           rO   r  z)CliSettingsSource._convert_positional_arg  s     F^$	-y#22?3H3H3J3JDL_``y !,,..U=DU3U::h8++x %09cccF7OO 	"!F7O6N:+%%rP   r   rl   c           	        g }|g|z   D ]j}|D ]e}t                               || j        k    r| | n|                    |dd           | | j                  }	|	vr|                    |	           fk| j        r^| j                                        D ]D\  }
}|
|v r;t          |t                    r|gn|}|
                    fd|D                        E|S )Nr   r>   c              3  $   K   | ]
}|v|V  d S r   rI   )ry   aliasr  s     rO   r   z3CliSettingsSource._get_arg_names.<locals>.<genexpr>0  s.      $^$^ueS]F]F]UF]F]F]F]$^$^rP   )r]   r   r   r   r   r   r   r~   r   rR   extend)rM   r`   r  r  r   r  r  prefixrz   arg_nametargetaliases
alias_lists        `       rO   r  z CliSettingsSource._get_arg_names  s7     "	!l^3 		/ 		/F# / /"11(DO;; %t%%%"NN+<b!DDLdLL'	  :--$$X.../  	_#'#5#;#;#=#= _ _Y&&.8#.F.F!S'GJ$$$^$^$^$^
$^$^$^^^^rP   r   r   r  r  c                   t          |t                    rt          d          d }i }|d          d|d<   |j        |d<   |	d         |d<   t	          d |D                       |d<   |d         r"t          |          d	k    rt          d
          | j        r?t          |          d	k    r,|d         j        d nt          |d         j                  |d<   |t          urIt          t          |                    st          t          |                    rt          ||
          }n$|j        t          ur|j        }n|j        |j        }|6d| j         d}|d         t          | d|d                    |d<   n||d<   |d         }|                     |          p|}|r
t$          |d<   | j        sm|                    |d                    d|	d<   d|	d<   d|	d<   |rt$          nd|d          d|	d<    | j        |fi |} | j        |gfd|D             R i |	 |D ]=}|                     ||| | d||r|n|fd|d	d          D             ||	  	         >d S )Nz8cannot have nested models in a CliMutuallyExclusiveGroupr   z optionsr  r   r  c              3  @   K   | ]}t          |t                    V  d S r   )r  r[   )ry   r^   s     rO   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>Q  sF       E
 E
=BJu788E
 E
 E
 E
 E
 E
rP   r  r>   z/cannot use union with CliMutuallyExclusiveGroupz	default: z (undefined)
Fr  r  r  constzset z from JSON string (default: {})r  c              3  $   K   | ]
} | V  d S r   rI   r  s     rO   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>u  s.      -[-[.Dd.D.D-[-[-[-[-[-[rP   r   c                    g | ]	} | d 
S )r   rI   )ry   rz   r`   s     rO   r   z;CliSettingsSource._add_parser_submodels.<locals>.<listcomp>~  s'    SSS4: 6t 6 6 6SSSrP   )	r  r^   r  r`   r  r  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  )rM   r  r^   r   r  r`   r  r  r  rE   r_   rr   r   r  r  model_groupmodel_group_kwargsdesc_headerr   s        ` `           rO   r  z'CliSettingsSource._add_parser_submodels4  sn   " e677 	\
   Z[[[-/)21&?&?&?7#,6,B=))/
);:&AD E
 E
FPE
 E
 E
 B
 B
=> @A 	Sc*ooXYFYFY QRRR- 	y#j//Q2F2F8B18M8U[ablmnbobw[x[x}- 111d=1122 C6KDQ^L_L_6`6` C 'z B B!)::: * 2+7 * : Kd&=KKKK!-0<4:k;p;pM_`mMn;p;p4q4q"=114?"=1%a."77
CCZGZ 	=0<}-" 		gil+++!&F:!F7O"F7O 3o9o	!9o9o9o 6N *$/&GG4FGGKD{f-[-[-[-[QZ-[-[-[fff_efff 	 	E!!%(</<<<"3%0Hkk6HSSSS;qrr?SSS+$7 " 
 
 
 
	 	rP   rw   rn   c                   |r|}|%t          |t                    r | j        |fi |n|}|                                D ]\  }}	|| j        k    r| | n|                    |dd           | }
i }t          |d<   d|d<   d|d<   d|d	<   |	d
|d	<   t          | j        |
<   | j         |
 g}| j	        |
                                         D ]\  }}||c|_
        |_         | j        |g|R i | |                    |
           d S d S )Nr   r>   r   zpydantic alias pathr  r   r  r   r  r   )r   r   r  r~   r   r   r  rA  r   r  rj   rE   r  r   )rM   r  rw   r  r`   r  r  r  rz   r{   r  rE   rj   r  r  s                  rO   r  z)CliSettingsSource._add_parser_alias_paths  s     	,G >HPT>U>U`/$/&::E:::[`.4466 , ,e )DO;; ")4)))&../@"aHHP$PP 
 *,$0y!!6v#+x $*y!=(.F9%48D'10<(<<= $ 0 : @ @ B B 8 8HC+/(CHcjj""7<T<<<V<<<!!(++++-	, 	,, ,rP   objc                z    | j         st          |          S t          d t          |          D                       S )Nc                4    g | ]}|t          d           u|S r   r   r   s     rO   r   z8CliSettingsSource._get_modified_args.<locals>.<listcomp>  s)    VVVEe4PT::>U>U%>U>U>UrP   )r   r   r   rM   r  s     rO   _get_modified_argsz$CliSettingsSource._get_modified_args  s=    & 	XC== VVXc]]VVVWWWrP   obj_qualnamec                   d|v rK|d |                     d          dz            d ||                     d          dz   d          D             z   }d                    |          }|r| d| dS t          |          dk    r|nd| dS )	NJSONr>   c                    g | ]
}|d k    |S )r  rI   r  s     rO   r   z=CliSettingsSource._metavar_format_choices.<locals>.<listcomp>  s$    4t4t4tSfimsfsfsSfsfsfsrP   r*  r@  rH  r4  r5  )r{   r-  r   )rM   rj   r  r  s       rO   _metavar_format_choicesz)CliSettingsSource._metavar_format_choices  s    T>>0$**V,,q0014t4tDTZI[I[^_I_IaIaDb4t4t4ttD((4.. 	C"//W////!$ii1nn772Bw2B2B2BBrP   c           
         t          |          }t          |          rd|j        v r|j        n|j        S |du rdS t	          |t
                    rt          |          S t          j        |          rt          |          S t          |          }|3t	          |t          t          j        t          j        f          s|j        }t!          |          rH                     t%          t'           j                             |                                        S t          j        |          rH                     t%          t'          t                               |                                        S t/          |t0                    r!                      fd|D                       S t	          |t2                    rn                     t%          t'           j                             |                              t5          |d          r|j        nt          |                    S |t          d          u r j        S t9          |          st;          |          r@t=          |dd	          r-                     t?          |          d
         j                   ndS t	          |t                    r|j        S t          |          !                    dd          !                    dd          S )z\Pretty metavar representation of a type. Adapts logic from `pydantic._repr.display_as_type`.z<locals>.z...Nc                b    g | ]+}t                               |j        j        d k              ,S )r   )r]   r   rz   r   )ry   r   rM   s     rO   r   z=CliSettingsSource._metavar_format_recurse.<locals>.<listcomp>  s4    ___TW''$2E2NOO___rP   rW   )r  r  Frootr  ztyping.r   ztyping_extensions.)"r<   r;   rW   rU   r   r"   reprr'   is_typealiastyperR   r   r   typing
ForwardReftyping_extensionsrN   r(   r  r   map_metavar_format_recurser  
is_literalr,   r   r-   r  r   r#   r$   r  r:   r   r   )rM   r  origins   `  rO   r  z)CliSettingsSource._metavar_format_recurse  s   s## 	#-1A#A#A3<<sGWWCZZ5^,, 	99,S11 	s88OC>*S49JL]Lh2i"j"j>-C6"" 	V//S9UW[WnWnorWsWs5t5t0u0uvvv&v.. 	V//Sd>U>UVY>Z>Z5[5[0\0\]]] d++ 	V//____[^___   ^,, 	V//S5t7N7Ns7S7STTUU18n1M1M[S--SVWZS[S[ 0    DJJ**C   		V$9#$>$> 		V 3 95AA,,->s-C-CF-K-VWWW
 T"" 	V##99$$Y33;;<PRTUUUrP   c                T    |                      |                              dd          S )Nr6  r*  )r  r   r  s     rO   r  z!CliSettingsSource._metavar_format  s&    ++C0088sCCCrP   c                T   |j         r|j         nd}|s|                     |          rt          S |                                r1|t          d fv r&t
          |j        vr|dnd}||rd| dnd| dz  }nd| j         d}t          t          |                    st          t          |                    rdt          ||           d}n|t          d fvr)t          |          rd|                     |           d}n_|j        t          d fvr*t          |j        |j                  }d||j        n| d}n%|j        d|                     |j                   d}||rd	| n|z  }t%          t          | j                  t(                    r|                    d
d          n|S )Nr   zifdef: z (z	required)(z
(default: )z(default factory:  %z%%)r   r  r  r{  r&   r4   r   r   r#   r   r$   r  r;   r  r   r8   r   r  r  r  r   r   )	rM   r_   rr   r  r  _helpifdefr   	enum_names	            rO   r  zCliSettingsSource._help_format  s    +5*@H
&&b 	 $";";J"G"G 	 !!## 	9:KT9R(R(R 
(;;;%2%:		%Q.e....=Q=Q=Q=QQ=4#:===Gd=1122 c6KDQ^L_L_6`6` cLw}j'I'ILLL'8$&???LQ^D_D_?Ut/C/CM/R/RUUU#,=t+DDD89NPZPbcc	`Y=Nz'9'9T]```+7bt/C/CJD^/_/_bbbe8]]]]8E+5d4;L6M6M~+^+^iu}}S$'''diirP   c                T    |j         r|j         nd}|t          k    pt          |j        v S )Nr   )r   r  r   )rM   rr   r  s      rO   r  z&CliSettingsSource._is_field_suppressed  s/    *4*@H
&&b$K
8K(KKrP   r  valuealias_path_only_defaultslist[Any] | dict[str, Any]c           	     R   d |j         |j        fD             d         }|j        dd         }|s|                    |g            ||         }ns|                    |i            ||         }|d d         D ] }	|                    |	i            ||	         }!|                    |d         g            ||d                  }t	          t
          |j        d                   }
|                    dgt          |
dz   t          |          z
  d          z             |||
<   ||         S )Nc                    g | ]U}t          |t          t          f          t          |t                    r|nt          t          |j        d                    VS )r   )r   r   r   r   choices)ry   r  s     rO   r   zECliSettingsSource._update_alias_path_only_default.<locals>.<listcomp>  sb     !
 !
 !
%)\!:;;!
y11XEEtIu}UVGW7X7X!
 !
 !
rP   r   r>   r3  r   )	r  r   path
setdefaultr   rg   r  r  r   )rM   r  r  rr   r  
alias_pathalias_nested_pathsalias_defaultcurrent_pathnested_pathalias_path_indexs              rO   _update_alias_path_only_defaultz1CliSettingsSource._update_alias_path_only_default  s_   !
 !
$*J,GH!
 !
 !
 	!
 )3"(=! 	A$//"===4X>MM$//"===3H=L1#2#6 9 9''R888+K8##$6r$:B???();B)?@MZ_R%899bTC(81(<s=?Q?Q(QST$U$UUVVV*/&''11rP   r1   _is_submodelc                B   i }g }g }g }t          |rt          |          n| j                                                  D ]\  }}t	          ||          }	|j        |	k    r"t          |j        v r|	3t          t          | j
        |                                                             }
|
j        rP|                    |
                    t          |	                               ||                     |	d          z  }t!          t          |	                    st#          t          |	                    r||                     |	d          z  }t%          j        d|
j                  }|r|                                nd\  }}t-          |	t.          t0          t2          f          rt5          j        |	          nt9          |	          }|
j        r|                     ||||          }t>          |j        v ryt-          |	t0                    r|	n|	gD ]\}t-          |t.          t0          t2          f          rt5          j        |          nt9          |          }|                    |           ]7|
j         !                    d          tD          k    r|	du r|dk    r|dz  }|                    | |            |
j         !                    d          tD          k    r|                    |           g }|d	 |D             z  }|d
 |D             z  }||z   S )NT)r  z(-*)(.+))r   r   r  Fz--zno-c                d    g | ]-}t          |t                    st          j        |          n|.S rI   r   rR   rV  rX  ry   r  s     rO   r   z6CliSettingsSource._serialized_args.<locals>.<listcomp>K  s8    rrr[`Zs5K5KVDJu---QVrrrrP   c                d    g | ]-}t          |t                    st          j        |          n|.S rI   r!  r"  s     rO   r   z6CliSettingsSource._serialized_args.<locals>.<listcomp>L  s8    ttt[`Zs5K5KVDJu---QVtttrP   )#r:   r   r   r~   r  r   r5   r   r7  r8  r  ru   r   r   r   _serialized_argsr#   r$   r  r  r   groupsr   r   r   r   rV  rX  rR   r   r  r4   rE   r   r   )rM   r^   r  r  r  r}  r~  r_   rr   r  r  r  
flag_charsr  r  serialized_argss                   rO   r$  z"CliSettingsSource._serialized_args  sA   35 @BBD%'&7|8jUY]Yj&k&k&q&q&s&s )	, )	,"J
#E:66M!]22!4449NtD,Z8??AABBCCC" &&s';';D<O<O'P'PQQQ4#8#8UY#8#Z#ZZd=1122 6KDQ^L_L_6`6` 4#8#8UY#8#Z#ZZh{C,BCCG7>#L7>>#3#3#3H J-7dTWGX-Y-Yq
=)))_bcp_q_q  % t <<XujZrss J$777.8.M.Mb]]TaSb 2 2E1;ED$PSCT1U1UeDJu---[^_d[e[eE#**51111 z~~h''+@@@]V[E[E[`jnr`r`re#
  J!:!:!:;;; z~~h''+@@@$$U+++%'rrdqrrrrttdstttt00rP   )0r   r   r   r   r   r   r   r   r   re   r   re   r   re   r   re   rC   re   r   r   r   r   r   re   r   re   r   rc   r   r   ra   re   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF   rG   )rF   rk   )rj   r  rF   r  )r   r  rF   r  )rj   r  r   r  rF   r  )rF   r  )r   r  rF   r  )r   r(  rF   ri   )r   r(  r_   rR   r   ri   rF   rD   )r<  ri   r_   rR   rF   r=  )rE  ri   r_   rR   rF   rR   )r<  ri   r_   rR   rF   rR   )rM  rR   rE  ri   rZ  rD   rF   rR   )rM  rR   rE  ri   rF   rR   )rM  rR   rE  ri   rB  rd  rF   rR   )r^   r   r_   rR   rr   r%   rF   rG   )r^   r   rF   rt  )rF   r   )
r  r   r  rR   rj   r   rE   r   rF   r  )r   r   rF   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF   rG   )F)r  r   r^   r   r  ri   r`   rR   r  rR   r  r   r  ri   r  r   r  rD   rF   r   )rE   rk   rr   r%   r   rD   rF   rG   )rE   rk   rr   r%   r  r   rF   rG   )
rE   rk   rr   r%   r   rR   r  r   rF   r  )r`   rR   r  rR   r  ri   r   rl   r  ri   rF   ri   )r  r   r^   r   r   r   r  ri   r`   rR   r  rR   r  rR   r  ri   rE   rk   r_   rR   rr   r%   r   rl   r  r   r  rD   rF   rG   )r  r   rw   rn   r  ri   r`   rR   r  rR   r  r   rF   rG   )r  r   rF   rl   r   )rj   ri   r  r   rF   rR   )r  r   rF   rR   )
r_   rR   rr   r%   r  r   r  rD   rF   rR   )rr   r%   rF   rD   )
r  rR   r  r   rr   r%   r  rk   rF   r  )r^   r1   r  rD   rF   ri   ).rU   rV   rW   r   r   add_argumentr  r	   
add_parseradd_subparsersr   rK   r   r  r   r  r,  rD  rP  r.  rS  rT  rU  rs  r  propertyr   r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  rX   rY   s   @rO   r   r      sW       + +` %)DH)-*.&*,059)-!%+/*./3CG>B&*7;9G9T?M?`7H7S;I;X:1}` }` }` }` }` }` }`~ --- X-   X    X& ;?W[	& & & & & & & && === X=   X" ae# # # # # #J$ $ $ $>   .) ) ) )"L L L L&+T +T +T +TZ   
F F F F$   :	o 	o 	o 	o+[ +[ +[ +[Z ! ! ! X!$! $! $! $!L       0 :H9T?M?`7H7S;I;X:&
 &
 &
 &
 &
d %*E E E E ENL L L L9 9 9 9& & & &*   8M M M M^, , , ,BX X X XC C C C C)V )V )V )VVD D D Dj j j j2L L L L2 2 2 2831 31 31 31 31 31 31 31 31rP   r   )fr   
__future__r   _annotationsrV  r  r  r   r  argparser   r   r   r   r   r	   collectionsr
   collections.abcr   r   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&   typing_inspectionr'   typing_inspection.introspectionr(   
exceptionsr+   utilsr,   r-   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   envr?   pydantic_settings.mainr@   rB   r[   r]   r   CliSubCommandCliPositionalArgrD   r   rp  rq  r  CliSuppressr   rR   CliUnknownArgsr   rI   rP   rO   <module>rE     s   - - 2 2 2 2 2 2  				  



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