
    i"                      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/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZDmEZEmFZF ddlmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP ddlCmQZQmRZRmSZSmTZTmUZUmVZVmWZW ddlXmYZY e!rddlZm[Z[  G d de          Z\ G d  d!e/          Z]d5d&Z^d6d,Z_ G d- d.e/          Z` e'd/          Zae"eadz  eNf         Zbe"eaeMf         Zc e'd0ed1          Zee"eeeLf         Zfe"eeeKf         Zge"eeeOf         Zhe"eeeJf         ZieZje"eaejf         Zke"elem          e0g 2          ePeHf         Zn G d3 d4eYe$ea                   ZodS )7z'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)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 )_CliInternalArgParserTcli_exit_on_errorboolkwargsr   returnNonec                H     t                      j        di | || _        d S )N )super__init___cli_exit_on_error)selfrH   rJ   	__class__s      n/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/pydantic_settings/sources/providers/cli.pyrP   z_CliInternalArgParser.__init__O   s.    ""6""""3    messagestrr   c                |    | j         st          d|           t                                          |           d S )Nzerror parsing CLI: )rQ   r-   rO   error)rR   rV   rS   s     rT   rY   z_CliInternalArgParser.errorS   sB    & 	A ?g ? ?@@@grU   )T)rH   rI   rJ   r   rK   rL   )rV   rW   rK   r   )__name__
__module____qualname__rP   rY   __classcell__rS   s   @rT   rG   rG   N   s`        4 4 4 4 4 4 4         rU   rG   c                      e Zd ZdS )CliMutuallyExclusiveGroupN)rZ   r[   r\   rN   rU   rT   r`   r`   Y   s        DrU   r`   	model_cls	type[Any]rK   
str | Nonec                x   i }t          |           r| j        }n t          |           rt          | di           }|                    d          }t          |t                    r|                    d          }||S nt          |          r	 d}t          |           r(|                                                     d          }nCt          |           r4t          |           
                                                    d          }||S n# t          $ r Y nw xY w| j        t          | j                  S dS )a"  Get model description from json_schema_extra or __doc__ fallback.

    ``json_schema_extra.description`` takes precedence over ``__doc__`` to
    match pydantic's own behaviour.  When neither is available (e.g. under
    ``python -OO`` where docstrings are stripped), returns ``None``.
    __pydantic_config__json_schema_extradescriptionN)r%   model_configr&   getattrget
isinstancedictcallablemodel_json_schemar#   json_schema	Exception__doc__r   )ra   configrf   descs       rT   _get_model_descriptionrt   ]   sb    Fi   ?'	y	)	) ?$92>>

#677#T**  $$]33K 	#	$	$ 
		Di(( O 224488GG&y11 O"9--99;;??NN   	 	 	D	$i'(((4s   A?D 
DDtype_r   
sub_modelslist[type[BaseModel]]rL   c                   t          |           }t          |          st          |          r|                    |           dS t	          t          |                    r"t          |          D ]}t          ||           dS dS )zJRecursively collect BaseModel subclasses from possibly nested union types.N)rA   r%   r&   appendr*   r   r   _collect_sub_models)ru   rv   strippedargs       rT   rz   rz   ~   s    &&Hh 1#8#B#B 1(#####	H--	.	. 1H%% 	1 	1CZ00001 1	1 	1rU   c                  x    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<   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d>d,Zed?d-            Zed@d/            ZedAd0            ZedAd1            ZedBd3            ZedCd4            ZedDd5            ZedAd6            ZedEd7            ZedEd8            ZedEd9            ZedEd:            Z xZS )F_CliArgr   modelparserrW   
field_name
arg_prefixrI   case_sensitivepopulate_by_name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]rJ   rN   tuple[str, ...]_alias_namesdict[str, int | None]_alias_pathsF_is_alias_path_onlyr'   _field_info
field_info
parser_mapOdefaultdict[str | FieldInfo, dict[int | None | str | type[BaseModel], _CliArg]]valuesrK   rL   c                L     t                      j        di | | _        t           j         j         j         j         j                  \   _	         _
         fd j                                        D             } j        r j        D ]}                     |          }                     g i d          | j                 |<   | j                 |         | j                 |<   | j                 |         | j                 |<   n: j        |vr1 | j                 d <   | j                 d          | j                 d <   |                                D ]C\  }}                     g i d          ||         |<   ||         |         | j                 |<   Dd S )N)alias_path_argsr   r   c                .    i | ]\  }}j          | |S rN   )r   ).0nameindexrR   s      rT   
<dictcomp>z$_CliArg.__init__.<locals>.<dictcomp>   s,    kkk+$t666kkkrU   )r   rJ   )updaterN   )rO   rP   r   r>   r   r   r   r   r   r   r   itemssubcommand_destrv   subcommand_alias
model_copydest)
rR   r   r   r   alias_path_dests	sub_modelr   alias_path_destr   rS   s
   `        rT   rP   z_CliArg.__init__   s    	""6"""%6FOO -.!2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>HI]>^_o>p
4/0;@J4K_@`aq@r
4?+,<==	s
 Y...*.Jty!$'0:490Ed0KJt'-&6&<&<&>&> 	T 	T"OU15QS_aHbHb1c1cJ'.1;O1LU1SJt'..	T 	TrU   r   c                :    |dvr|                     dd          n|S )NNF_-)replace)clsr   r   s      rT   get_kebab_casez_CliArg.get_kebab_case   s%    )3=)H)Ht||C%%%dRrU   
annotationrb   c                    d}t          |          }t          |          D ]}|                     |          z  }|rKt          |t                    r6|t           fd|j                                        D                       z  }|S )NrN   c              3  L   K   | ]}                     |d k              V  dS )allN)r   )r   r   r   r   s     rT   	<genexpr>z)_CliArg.get_enum_names.<locals>.<genexpr>   s9      xxRV 2 24u9L M MxxxxxxrU   )rA   r   get_enum_namesr.   r   tuple__members__keys)r   r   r   
enum_namesru   s   ` `  rT   r   z_CliArg.get_enum_names   s     ')
%j11
j)) 	@ 	@E#,,UJ???JJ 	y-j$?? 	y%xxxxxZdZpZuZuZwZwxxxxxxJrU   r   type[BaseModel]c                    |                      t          | j                  dk    r|j        n| j        | j                  S NrC   )r   lenrv   rZ   preferred_aliasr   )rR   r   s     rT   r   z_CliArg.subcommand_alias   sB    """%do"6"6":":I@TVZVe
 
 	
rU   c                    | j         S N)r   rR   s    rT   r   z_CliArg.field_info   s    rU   rc   c                @    t           | j        j        v r
| j         dnd S )N:subcommand)r9   r   metadatar   r   s    rT   r   z_CliArg.subcommand_dest   s(    2@DOD\2\2\$/....bffrU   c                    | j         s7| j        r0| j        j        $| j        s| j         | j         | j        d          S | j         | j         S r   )r   r   r   validation_aliasis_parser_submodelr   r   r   s    rT   r   z_CliArg.dest   so     $	U	U 0<+ =
 o=t';==d>Q>S>STT/94#7999rU   c                l    | j         r!| j        d                             dd          n| j        d         S )Nr   r   r   )r   r   r   r   s    rT   preferred_arg_namez_CliArg.preferred_arg_name   s1    15Rty|##C---diPQlRrU   rw   c                   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          ||           |S )Nc                4    g | ]}|t          d           u|S r   typer   ru   s     rT   
<listcomp>z&_CliArg.sub_models.<locals>.<listcomp>   s,     [ [ [55PTUYPZPZCZCZCZCZCZrU   F)is_include_originz.CliSubCommand is not outermost annotation for .z1CliPositionalArg is not outermost annotation for )r   r   r   r   r   r<   r9   r-   r   rZ   r   r8   rz   )rR   field_typesrv   ru   s       rT   rv   z_CliArg.sub_models   s)    DO6776T_'))$/455 	
  	] [ [K [ [ [\\K,.
  		3 		3E)%.1BV[\\\ #lTZEXll[_[jll   ,E4E3G[`aaa #o
H[oo^b^moo    z2222rU   c                    | j         S r   r   r   s    rT   alias_namesz_CliArg.alias_names         rU   c                    | j         S r   )r   r   s    rT   alias_pathsz_CliArg.alias_paths  r   rU   c                    | j         d         S )Nr   r   r   s    rT   r   z_CliArg.preferred_alias  s     ##rU   c                    | j         S r   )r   r   s    rT   is_alias_path_onlyz_CliArg.is_alias_path_only
  s    ''rU   c                    | j          o9t          | j        j        t          t
          t          t          t          fd          S )NTis_strip_annotated)	r   r<   r   r   listsetrl   r   r   r   s    rT   is_append_actionz_CliArg.is_append_action  s?    '' 
,FO&sD(G(Lae-
 -
 -
 	
rU   c                J    | j          ot          | j                  o| j         S r   )r   rI   rv   r   r   s    rT   r   z_CliArg.is_parser_submodel  s(    ''_D,A,A_$J_F__rU   c                r    | j         d uo.t          | j         j        v p| j        du ot          | j         j        vS r   )r   r3   r   r   r2   r   s    rT   is_no_decodez_CliArg.is_no_decode  sC    d* 
00 _$-]+T_E]2]	
rU   )r   r'   r   r   r   r   rK   rL   )r   rW   r   r   rK   rW   )r   rb   r   r   rK   r   )r   r   rK   rW   )rK   r'   )rK   rc   )rK   rW   )rK   rw   )rK   r   )rK   r   )rK   rI   )rZ   r[   r\   __annotations__r   rJ   r"   r   r   r   r   rP   classmethodr   r   r   r   r   r   r   r   rv   r   r   r   r   r   r   r   r]   r^   s   @rT   r~   r~      s        JJJKKK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< S S S [S 	 	 	 [	
 
 
 

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

 ` ` ` _` 
 
 
 _
 
 
 
 
rU   r~   T_CliBoolFlag)bound)defaultc                      e Zd ZdZdddddddddddddddddej        ej        ej        ej	        ej
        efd fd'Zedd)            Zedd-            Zedd0            Zddd1d fd5Zedd7            Zedd8            Zdd9dd;Zdd>ZddCZddFZddHZddIZddLZddMZddPZddUZddWZeddY            Zdd^Zdd_Zej        ej        ej        ej	        ej
        efdd`ZddaZdbi ddfddqZ ddsZ!ddtZ"ddwZ#ddzZ$	 dddZ%ddZ&ddZ'dddZ(ddZ)ddZ*ddZ+ddZ,ddZ-	 	 dddZ.e/dd            Z0	 	 	 	 dddZ1 xZ2S )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`.
    NTsettings_clstype[BaseSettings]cli_prog_namerc   cli_parse_args)bool | list[str] | tuple[str, ...] | Nonecli_parse_none_strcli_hide_none_typer   cli_avoid_jsoncli_enforce_requiredcli_use_class_docs_for_groupsrH   
cli_prefixcli_flag_prefix_charcli_implicit_flags'bool | Literal['dual', 'toggle'] | Nonecli_ignore_unknown_argscli_kebab_caser   cli_shortcuts$Mapping[str, str | list[str]] | Noner   root_parserr   parse_args_methodCallable[..., Any] | Noneadd_argument_methodadd_argument_group_methodadd_parser_methodadd_subparsers_methodformat_help_methodformatter_classrK   rL   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        |d           |2t3          | j
        | j        t5          |          || j        dd          n|}|                     ||||||||           |dvr|du rt          j        dd          }n;t9          |t:          t<          f          st%          dt?          |                     |                      | !                    | j"        |                     d S d S )Nr   r   r   Fr   TrL   nullr   r   rH   r    r   r   r1   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_prefixr   env_nested_max_split)rH   progrg   r  prefix_charsallow_abbrevadd_help)r   r   r  r  r  r  r  r  r   rC   z<cli_parse_args must be a list or tuple of strings, received parsed_args)#rh   rj   sysargvr   r   r   r   r   r   rH   r   r   _cli_flag_prefix
startswithendswithr   isidentifierr-   r   r   r   r   rO   rP   rG   rt   _connect_root_parserrk   r   r   r   _load_env_vars_parse_argsr   )rR   r   r   r   r   r   r   r   r   rH   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  rS   s                            rT   rP   zCliSettingsSource.__init__`  sy   8 +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'2<@@ /!6"     	 	!!#/ 3&?/"71+ 	" 		
 		
 		
 ..%%!$!""u>> #iSWXfSgSgii   D,<,<T=M~,^,^_____ /.rU   r   c                    d S r   rN   r   s    rT   __call__zCliSettingsSource.__call__  s    *-#rU   r   "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.
        NrN   )rR   r   s     rT   r   zCliSettingsSource.__call__  s	     	rU   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.
        NrN   rR   r  s     rT   r   zCliSettingsSource.__call__  	     	rU   )r   r  )list[str] | tuple[str, ...] | bool | None?Namespace | SimpleNamespace | dict[str, list[str] | str] | None%dict[str, Any] | CliSettingsSource[T]c                  ||t          d          |a|du r|                     i           S |du rt          j        dd          }|                     |                     | j        |                    S |(|                     t          j        |                    S t                                                      S )Nz/`args` and `parsed_args` are mutually exclusiveFr  TrC   )	r-   r  r  r  r  r   copyrO   r   )rR   r   r  rS   s      rT   r   zCliSettingsSource.__call__  s      7 QRRRu}}**r*:::t||x|&&43C3CDDTVZ3[3[&\\\$&&49[3I3I&JJJ77##%%%rU   Mapping[str, str | None]c                    d S r   rN   r   s    rT   r  z CliSettingsSource._load_env_vars  s    :=#rU   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.
        NrN   r&  s     rT   r  z CliSettingsSource._load_env_vars  r'  rU   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             }|rIt          |t                    	t          	fd|                                D                       sd|	<   nd	| j        s| j        rt          d | j        	                                D                       }|rt          	fd	| j        D                       }|st#          d
 | j        	                                D                       }t          | j        t&                    r0| j                            dd                    |                      t-          d          |                    | j                   t1          t3          t4          t          t          f         |          | j        | j        | j
                  | _        | S )Nr   c                    g | ]	}|j         
S rN   )r   r   r|   s     rT   r   z4CliSettingsSource._load_env_vars.<locals>.<listcomp>:  s    'M'M'MS'M'M'MrU   c                V    i | ]&\  }}|                     d           s|t          u#||'S )r   )r  r(   )r   keyvals      rT   r   z4CliSettingsSource._load_env_vars.<locals>.<dictcomp>>  sJ     
 
 
S<<..
 47>O3O3O 3O3O3OrU   )r5  c              3  *   K   | ]} d |v 	|V  dS )r   NrN   )r   r   last_selected_subcommands     rT   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>E  s8      wwjMeJhJhJhlvJvJvzJvJvJvJvwwrU   {}r
  c              3     K   | ]}|V  d S r   rN   r   r   s     rT   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>M  s"      OOtdOOOOOOrU   c              3  T   K   | ]"}|                     d d          d         v V  #dS )r   rC   r   N)rsplit)r   r   r8  s     rT   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>O  sM       / /KODKKQ''*.FF/ / / / / /rU   c              3     K   | ]}||V  	d S r   rN   r;  s     rT   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>S  s(      "\"\DW["\4"\"\"\"\"\"\rU   zunrecognized arguments:  r1   )rk   r   r   vars_resolve_parsed_args_parser_mapr   rW   r  r   r   maxr   anyr   r   _cli_unknown_argsnextr   r   rY   join
SystemExitr   rB   r   r   r   env_ignore_emptyenv_vars)
rR   r  selected_subcommandsarg_destarg_mapr   has_unknownselected_accepts_unknownunknownr8  s
            @rT   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')$ + 
	(0F 
	(OOt/E/L/L/N/NOOOOOK (+. / / / /SWSi/ / / , ,( 0 (""\"\D4J4Q4Q4S4S"\"\"\\\G!$"2NCC _(../]#((SZJ[J[/]/]^^^$Q--'41222&c"K00!#	
 
 rU   dict[str, list[str] | str]r   c                   g }t          |                                          D ]\  }}t          |t                     r|                     |||          r3| j                            |i                               d           }|r |j        rd                    |          ||<   |                     ||          ||<   |	                    d          r.|,|
                    | j        |         |         j                   | j        dk    rt          |t                    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   rk   %_is_nested_alias_path_only_workaroundrB  rj   r   rG  _merge_parsed_listr  ry   r   r   rW   r   r   r   r   
ValueError)rR   r  rK  r   r6  cli_arg	snake_vals          rT   rA  z&CliSettingsSource._resolve_parsed_argsc  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$--*S#2F2F-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
+##rU   r   rW   r6  rI   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   NrT  z": {}, T)
rB  rj   r   rF  iterr   r   r  r   rV  )rR   r  r   r6  	known_argr|   nested_dest
nested_vals           rT   rU  z7CliSettingsSource._is_nested_alias_path_only_workaround  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urU   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   rl   r   r   s     rT   r   zACliSettingsSource._get_merge_parsed_list_types.<locals>.<genexpr>  sU        T

**z%/@/@w/W/W /W/W/W/W rU   rC   r   [)
_cli_dict_argsrj   r   r*   r   rD  r   r   r  rW   )rR   rc  r   
merge_typeinferred_types        rT   _get_merge_parsed_list_typesz.CliSettingsSource._get_merge_parsed_list_types  s    (,,Z>>
$":j#9#9::   %j11      'MM$/uS5E5E5I5I[YZ^MfMfgjMkMk5IDDruM=((rU   merged_listc           	        g }d }| j                             |i           }	 t          t          t	          |                                                    j        j                  }t          t          t	          |	                    dg                                        t          u }n# t          $ r d }Y nw xY wt          |          D ]\  }}	|                    |          }
|
d u p|
j         }||}n||k    rt          d          |rw|	                    dd          }		 |	                    d          r|	                    d          r
|	dd         n|	}t%          |           |rd| dn|}	nD# t&          $ r Y n8w xY w|	                    d          r|	                    d          r
|	dd         }	|                    |	           d                    |          }|rd	| d
n|S )N1zKMixing Decode and NoDecode across different AliasPath fields is not allowed\z\\rT  rC   r[  rS  rg  ])rB  rj   r#   rF  r_  r   r   r   r   validate_pythonrW   rp   	enumerater   r-   r   r  r  floatrW  ry   rG  )rR   rl  r   decode_listis_use_decodecli_arg_maplist_adapteris_num_type_strr   itemrX  	is_decodeunquoted_itemmerged_list_strs                 rT   _merged_list_to_strz%CliSettingsSource._merged_list_to_str  s0   !#%)&**:r::	# +Dk6H6H6J6J1K1K,L,L,W,b c cL"4\-I-I3%-P-P(Q(Q#R#RSSWZZOO 	# 	# 	#"OOO	#$[11 	% 	%KE4!ooe,,G4Cw/C+CI$ ))++#$qrrr 	"||D&1126//#2F2F$g4==Y\K]K]$gD2JJcgM-(((3BU/}////DD!   D%% "$--*<*< "AbDzt$$$$((;//)6K%?%%%%OKs%   B	B+ +B:9B:&AE66
FF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)NFrg  rp  rC   r[  rS  r\  Tr   zParsing error encountered for z: )rk  rk   rW   stripr  r  _consume_comma_consume_object_or_array_consume_string_or_numberrW  r   r}  r   jsonloadsdumpsrp   r-   )rR   rc  r   rl  is_last_consumed_a_valueri  rj  r6  emerged_dictry  s              rT   rV  z$CliSettingsSource._merge_parsed_list  s   *	T%'K',$(,(I(I+Wa(b(b%J" Z Z!#s++  Eiikk>>#&& ,3<<+<+< ,ad)//++C 8))++C~~c** 8"11#{D\]]3800>>#.. 	c#..2E2E 	c"&"?"?["Q"QCCc&*&D&DS+Wa&b&b#- c c c#-#>#>*+G-:
&*&D&DS+Wa&b&b	c
 480!  8" 0 Z--c;@XYYCS  "1~%t##//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 ry  r  c                D    |s|                     d           |dd          S )Nz""rC   )ry   )rR   ry  rl  r  s       rT   r  z CliSettingsSource._consume_comma  s+    ' 	%t$$$ABBxrU   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          )NrC   r\  r]  rp  FrT  ro  )r\  rg  )r]  rp  r   zMissing end delimiter ")r  ranger   ry   r-   )rR   ry  rl  countclose_delimin_strconsumeds          rT   r  z*CliSettingsSource._consume_object_or_array  s   !__S11:ccsaT++ 	0 	0HH~$$hl);t)C)C# 0h:--
h:--
>[00UaZZ&&tNhlN';<<<1////DkDDDEEErU   ri  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   FrT  rC   ro  rS  zMismatched quotesr	  )truefalser	  c              3     K   | ]}|V  d S r   rN   )r   kvs     rT   r   z>CliSettingsSource._consume_string_or_number.<locals>.<genexpr>"  s"      >>r>>>>>>rU   =z1Dictionary key=val parameter is a quoted string: )rW   r   r-   r  r   rs  rW  r   r  ry   splitr  r  r  )	rR   ry  rl  ri  r  is_find_end_quote
val_stringr5  r6  s	            rT   r  z+CliSettingsSource._consume_string_or_number  sM   "#--113t99!T""H~$$(a--41;MQU;U;U(9$9!$ h3)>)>MH T""  	5 3444)8)_**,,
$$$3j!!!! 3 3 3!888!'J%>>>zG\G\]`GaGa>!2Z!2!2!2J	3
 z****>>Z%5%5c1%=%=>>>HC~~c"" c3<<+<+< cS^^TWEXEX c]`]i]ijm]n]n c !aU_!a!abbbyy~~syy~~Ctz3*55666HIIs   9C	 	6DDr   r   r   r'   c                V   t           |j        v rd}nlt          |j        v rd}n[t          |j        v r:d}t	          |j        t                    st          | d|j         d| d          nt          |j        v rd}nd S |j
        t          urt          | d|j         d| d          d S )	NCliImplicitFlagCliExplicitFlagCliToggleFlagz
 argument r   z must have a default bool valueCliDualFlagz is not of type bool)r7   r   r6   r:   rk   r   rI   r-   rZ   r5   r   )rR   r   r   r   cli_flag_names        rT   _verify_cli_flag_annotationsz.CliSettingsSource._verify_cli_flag_annotations)  s    z222-MM!444-MMz222+Mj0$77 #$lllllll   Z000)MMF ,,= m mEN m mZ m m mnnn -,rU   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 valuerC   z has multiple aliasesc                4    g | ]}|t          d           u|S r   r   r   s     rT   r   z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>G  s-    "q"q"qUY^fjkofpfpYpYp5YpYpYprU   z$ has type not derived from BaseModelzpositional argument Tr   r^  c                    g | ]\  }}|S rN   rN   r   r   infos      rT   r   z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>_  s    (X(X(X*$(X(X(XrU   z- has multiple variadic positional arguments: c                    g | ]\  }}|S rN   rN   r  s      rT   r   z6CliSettingsSource._sort_arg_fields.<locals>.<listcomp>b  s    (j(j(j*$(j(j(jrU   z= has variadic positional arguments and subcommand arguments: )r?   r   r9   r   is_requiredr-   rZ   r>   r   r   r   r%   r&   ry   r8   r<   r   r   rl   r   r   r  rG  )rR   r   positional_variadic_argpositional_argssubcommand_argsoptional_argsr   r   r   r   r   
field_typer   field_namess                 rT   _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ZrU   r   c                    | j         S )z#The connected root parser instance.)_root_parserr   s    rT   r   zCliSettingsSource.root_parseri  s       rU   parser_methodmethod_namerJ   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   rG   r   "list[str] | tuple[str, ...] | None	namespaceNamespace | NonerK   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 )Nro  z{1,2}z^(z[^\s=]+)(.*)rC   r1   )	shlexr  rG  r   rematchgrouplowerry   )	r   r   r  insensitive_argsr|   flag_prefixmatchedr  rR   s	          rT   parse_args_insensitive_methodzOCliSettingsSource._connect_parser_method.<locals>.parse_args_insensitive_methodx  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NrU   rJ   c                 *    t          d d          )Nz0cannot connect CLI settings source root parser: z. is set to `None` but is needed for connectingr,   )r   rJ   r  s     rT   none_parser_methodzDCliSettingsSource._connect_parser_method.<locals>.none_parser_method  s/    # C{  C  C  C  rU   )NN)r   rG   r   r  r  r  rK   r   )r   r   rJ   r   rK   r   )r   rk   r  rG   )rR   r  r  r   rJ   r  r  s   ```    rT   _connect_parser_methodz(CliSettingsSource._connect_parser_methodn  s     %#u,,2224,.CDD 3 <@.2O O O O O O O O 10"     
 &% ! rU   c                @    |                      |d          dfd}|S )Nr  r   r   rJ   rK   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 rN   )pop)r   r|   rJ   s     rT   r   zUCliSettingsSource._connect_group_method.<locals>.add_group_method.<locals>.<dictcomp>  s1    $o$o$ocadhnananS&**S//anananrU   )titlerg   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 connectingrN   )r  hasattrr-   r  )r   rJ   main_group_kwargsr  add_argument_groups    `  rT   add_group_methodzACliSettingsSource._connect_group_method.<locals>.add_group_method  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CrU   )r   r   rJ   r   rK   r   )r  )rR   r  r  r  s      @rT   _connect_group_methodz'CliSettingsSource._connect_group_method  sG    !889RTopp	D 	D 	D 	D 	D 	D  rU   c	                    i  _         d fd}	| _        |d u }
| j        r|	nt          j        }                     |d           _                             |d           _                             |           _	                             |d	           _
                             |d
           _                             |d           _        | _        i  _        t          t                      _                                                                j         j        g  j         j        d g t.          t1                      	  	          j         r& j        s!|
r!                     |	d           _        d S d S d S d S )Nr   r   rJ   rK   r   c                 ~    t          j        | i |\  } }j        D ]}|j        |<   t          t          |           S r   )r   parse_known_argsrE  r   r   )r   rJ   unknown_argsr   rR   s       rT   _parse_known_argszACliSettingsSource._connect_root_parser.<locals>._parse_known_args  sO    !/!@$!Q&!Q!QD,. < </;&t,,	4(((rU   r   r  r  r  r  	r   r   
added_argsr   subcommand_prefixr  alias_prefixesmodel_default
model_path)r   r   rJ   r   rK   r   )rE  r  r   r   
parse_argsr  r  _add_argumentr  
_add_group_add_parser_add_subparsers_format_help_formatter_classrh  r
   rl   rB  _add_default_help_add_parser_argsr   r   r  r(   r   )rR   r   r   r  r  r  r  r  r  r  _is_default_parse_argss   `          rT   r  z&CliSettingsSource._connect_root_parser  s    8:	) 	) 	) 	) 	) 	) (!2d!:$595Q p 1 1WeWp667HJ]^^!889LNcdd445NOO667HJ]^^#::;PRijj 778JL`aa /;=lwm
 m
 	   ##"o+uu 	 
	
 
	
 
	
 ! 	c$*F 	cKa 	c#::;LNabbD	c 	c 	c 	c 	c 	crU   c                n   t          | j        t                    r| j        sLt	          | j                                                  D ]%\  }}t          ||| j                  ^}}d|v r d S &| 	                    | j
        | j        d d          d| j        d d          ddt          d           d S d S )N)r   helprC   hr1   zshow this help message and exit)actionr   r  )rk   r  rG   r   r?   r   r   r>   r   r  r   r  r   )rR   r   r   r   r   s        rT   r  z#CliSettingsSource._add_default_help  s    d')>?? 	? .?@Q.R.R.X.X.Z.Z  *J
&6z:^b^q&r&r&rOK!,, -  (!,///(!,222 6      	 	rU   Fr   r  r   r  r  r  r  is_model_suppresseddiscriminator_valsdict[str, set[Any]]is_last_discriminatorr  set[type[BaseModel]] | Noner   c                J
   t                      |hz  d }i }t          t          |                    st          t          |                    rt	          t          |          |          sd n|}|                     |          D ]|\  }}t          ||| j        |||| j        | j	        
                    dd          p| j	        
                    dd          | j        | j        | j	        
                    d          | j                  }|                    |j                   |j        r|j        D ]}|                    |          }| j        |j                 |         }|g|_        d|j        d<   | j        |j        d<   t-          |          |j        d<   t/          |j                  d	k    rd n|j        |j        d
<   | j        rt-          |          |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        |_        |                     |j        |g |j          d| |j!         dd g tD          	  	         2| j#        |j         |j        d<   tH          |j        d<   | %                    ||||	          |j        d
<   | &                    |j'                  |j        d<   | j(        o|)                                o|tD          u |j        d<   | *                    |||||
|          }|r|j        d         |v r| +                    |j        ||j,                   tZ          |j.        v r%| /                    |j        ||j!        |          \  }| 0                    |j        ||           fd|j        D             }|j1        rHte          |j'        dd          s2|r0| 3                    ||||||||j        |||j4        ||	           tj          |j.        v rg | j6        |j        d         <   |j7        stq          |tr                    r | j:        |fi |}||n|}|j        
                    d          dk    rdz  fd|D             |_         | j;        |g|j        R i |j         |ty          |          z  }~| =                    ||||||           |S )Nr   Fvalidate_by_namer   )r   r   r   r   r   r   r   r   r   r   r   r   r  r  rg   rC   r  subcommandsr   )r  r   rg   metavarr[  rS  r]  r\  r   r  r   r   r  c                    g | ]}|v|	S rN   rN   )r   mr  s     rT   r   z6CliSettingsSource._add_parser_args.<locals>.<listcomp>e  s$    +]+]+]!R\I\I\AI\I\I\rU   __pydantic_root_model__)r  r  r  r  store_falseno-c                V    g | ]%}d t          |          dk    rdnd           | &S r   )r   r   r   r  s     rT   r   z6CliSettingsSource._add_parser_args.<locals>.<listcomp>  sC    nnn\`;/Nc$ii1nn$/N#O WQU W WnnnrU   )>r   r%   r   r&   
issubclassr  r~   rB  r   rr   rj   r   r   r   r   r   r   rv   r   r   rJ   r  rt   r   rg   r   r  r  r  r  r   r  r   r   r(   r  CLI_SUPPRESS_help_format_metavar_formatr   r   r  _get_arg_names_convert_append_actionr   r8   r   _convert_positional_arg_convert_bool_flagr   ri   _add_parser_submodelsr   r;   rE  r   rk   rl   r  r  r   _add_parser_alias_paths)rR   r   r   r  r   r  r  r  r  r  r  r  r  
subparsersr   r   r   r|   r   r   subcommand_arg	arg_namesnon_recursive_sub_modelscontextr  s               `           @rT   r  z"CliSettingsSource._add_parser_args  sO    J5')

13
  ] 3 3448MdS`NaNa8b8b #4#6#6>>DD
  	 '+&;&;E&B&B {	2 {	2"J
%+%%#2!%1CU!K!K ">;??#5u==#6. $0A B B#2  C ""3?333" i2!$ ( (I'*';';I'F'F$%)%5c6I%JK[%\N+;*<N'<AN).9?C?TN)*;<;QR[;\;\N)-8<?<O<ORS<S<SDDYcYoN)&19 Z8Ny8Y8Y-f5 &- ,,""/$.!;!;!;BEcnBUBUXYBYBY
(>(>_c	 -    (  z955   *1;z1#2#6MM9IMMMM!:&6!:!:!: #* -=D,<Z,w.J],w,w,waoav,w,wN)))-4'#%&)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 
:& !//%"&) 	 ! SZ%7:%E%E++CJ
CDXYYY$
(;;;-1-I-I
J0C]. .*I{ ''
JNNN+]+]+]+]s~+]+]+](* 2#J$9;TV[\\ 2 1 2
 ..0"")#!
""&3,?#- /    " %
(;;;ACD*3:f+=>>/ 2!%.. A / @ @% @ @(-ff5Gz~~h//=@@#u,nnnndmnnnCH&D&wHHHHSZHHH$y//1J$$V_j*VginooorU   r   c                    |r?d|d<   t          |j        t          t          fd          r|j        | j        |d         <   d S d S d S )Nry   r  Tr   r   )r<   r   rl   r   rh  )rR   rJ   r   r   s       rT   r  z(CliSettingsSource._convert_append_action  sg     	L'F8)**?$eijjj L6@6K#F6N333	L 	LL LrU   c                v   |d         dk    rd |j         D             }|s| j        rt          g}|r|                                }|t          u r3| j        dk    r!t	          |j        t                    rt          nt          }|t          u r|d= t          |d<   d S |t          u r|d= |j        rdnd|d<   d S d S d S d S )Nr  rI   c                v    g | ]6}t          |t                    t          |t          t          z            4|7S rN   )rk   r   r  r7   r6   )r   metas     rT   r   z8CliSettingsSource._convert_bool_flag.<locals>.<listcomp>  sS       dD)) /9?ORb?b.c.c  rU   toggler  r  
store_true)
r   r   r7   r  rk   r   rI   r:   r5   r   )rR   rJ   r   r  meta_bool_flags	bool_flags         rT   r  z$CliSettingsSource._convert_bool_flag  s   )&& &/  O
 # 5t'> 5#3"4 ]+//11	 000  2h>>:jN`bfCgCg> ') 
 ,,y)'<F8$$$.00y)8B8J'\}}P\F8$$$+ '&] ] 10rU   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  ry   +*nargs?r  )r(   r~   r   upperr   r  rj   )rR   rJ   r   r   r  r  r  r  s           rT   r  z)CliSettingsSource._convert_positional_arg  s     F^$	-y#22?3H3H3J3JDL_``y !,,..U=DU3U::h8++x %09cccF7OO 	"!F7O6N:+%%rU   r|   r~   c           	     T   g }|j         g|z   D ]o}|j        D ]e}	t                              || j        k    r| |	 n|                    |dd           |	 | j                  }
|
vr|                    |
           fp| j        r^| j        	                                D ]D\  }}||v r;t          |t                    r|gn|}|                    fd|D                        Et                      }|                    |j                  }|t!          |j        j        t&          fd|           |                    t+          j        d |D                                  |sg S |                     t&          t1          t3          |                                       |j        d<   |S )Nr
  rC   c              3  $   K   | ]
}|v|V  d S r   rN   )r   aliasr  s     rT   r   z3CliSettingsSource._get_arg_names.<locals>.<genexpr>  s.      $^$^ueS]F]F]UF]F]F]F]$^$^rU   T)r   collectc              3  4   K   | ]}t          |          V  d S r   )r   )r   tags     rT   r   z3CliSettingsSource._get_arg_names.<locals>.<genexpr>  s(      5T5Thsmm5T5T5T5T5T5TrU   r  )r   r   r~   r   r  r   r   ry   r   r   rk   rW   extendr   rj   r   r<   r   r   r   r   r   from_iterabler  r   sortedrJ   )rR   r|   r  r  r  r  r  r  prefixr   arg_nametargetaliases
alias_listtagsdiscriminatorss       `           rT   r   z CliSettingsSource._get_arg_names  s     "	~&7 		/ 		/F / /"11(DO;; %t%%%"NN+<b!DDLdLL'	  :--$$X.../  	_#'#5#;#;#=#= _ _Y&&.8#.F.F!S'GJ$$$^$^$^$^
$^$^$^^^^+//99%&)
"&	    !!%"55T5Tt5T5T5T"T"TUUU( 	$($8$8vnG]G]A^A^9_$`$`CJy!rU   rv   rw   r  r  r   r   c                   t          |t                    rt          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t          |d                   |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<   |                    |d                    d|	d<   d|	d<   d|	d<   |s| j        rt$          nd|d          d|	d<    | j        |fi |} | j        |gfd|D             R i |	 |j        r | d|j         t1                      ini }|D ]D}|                     ||| | d||fd|d	d          D             |||||d         u |           Ed S )Nz8cannot have nested models in a CliMutuallyExclusiveGroupr   z optionsr  rg   r  c              3  @   K   | ]}t          |t                    V  d S r   )r  r`   )r   r   s     rT   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>  sF       E
 E
=BJu788E
 E
 E
 E
 E
 E
rU   r  rC   z/cannot use union with CliMutuallyExclusiveGroupz	default: z (undefined)
Fr  r  r9  constzset z from JSON string (default: {})r  c              3  $   K   | ]
} | V  d S r   rN   r  s     rT   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>+  s.      )W)WT[*@$*@*@)W)W)W)W)W)WrU   r   c                    g | ]	} | d 
S )r   rN   )r   r   r   s     rT   r   z;CliSettingsSource._add_parser_submodels.<locals>.<listcomp>7  s'    SSS4: 6t 6 6 6SSSrU   r[  )r   r   r  r   r  r  r  r  r  r  r  r  )r  r`   r-   rg   rD  r   r   rt   r(   r%   r   r&   ri   r   default_factoryr   r   _is_field_suppressedr  ry   r   r  r  discriminatorr   r  )rR   r   r   rv   r  r   r  r  r  rJ   r   r   r   r  r  r  model_group_kwargsdesc_headerr   model_groupr  s        ` `             rT   r  z'CliSettingsSource._add_parser_submodels  s   $ 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- 	V#j//Q2F2F0FzRS}0U0U}- 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<}-)A,'''"zww #H&*&9HLLG	!GGG 	v
 &dofCC0BCC;b)W)W)W)WY)W)W)Wbbb[abbbT^Tlt
HOHHj.FHH#%%PPrt 	   	 	E!!%(</<<<"3!SSSS;qrr?SSS+$7#5&+z"~&=% "    	 	rU   r   r   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
  rC   r   zpydantic alias pathr  ry   r  r   r  rl   )rk   rl   r  r   r  r   r  rh  r  rB  r   rJ   r  ry   )rR   r   r   r  r   r  r  r
  r   r   r$  rJ   r   r5  r|   s                  rT   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<<<!!(++++-	, 	,, ,rU   objc                z    | j         st          |          S t          d t          |          D                       S )Nc                4    g | ]}|t          d           u|S r   r   r   s     rT   r   z8CliSettingsSource._get_modified_args.<locals>.<listcomp>d  s)    VVVEe4PT::>U>U%>U>U>UrU   )r   r   r   rR   r7  s     rT   _get_modified_argsz$CliSettingsSource._get_modified_args`  s=    & 	XC== VVXc]]VVVWWWrU   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JSONrC   c                    g | ]
}|d k    |S )r>  rN   r3  s     rT   r   z=CliSettingsSource._metavar_format_choices.<locals>.<listcomp>h  s$    4t4t4tSfimsfsfsSfsfsfsrU   rS  rg  rp  r\  r]  )r   rG  r   )rR   r   r<  r  s       rT   _metavar_format_choicesz)CliSettingsSource._metavar_format_choicesf  s    T>>0$**V,,q0014t4tDTZI[I[^_I_IaIaDb4t4t4ttD((4.. 	C"//W////!$ii1nn772Bw2B2B2BBrU   c           
     D    t          |          }t          |          rd|j        v r|j        n|j        S |du rdS t	          |t
                    rt          |          S t	          |t          j                  st          j
        |          rt          |          S t	          |t          t          t          f          s|j        }t!          |          }t#          |          rH                     t'          t)           j                             |                                        S t          j        |          rH                     t'          t)          t                               |                                        S t1          |t2                    r8                      fd|j                                        D                       S t	          |t                    rn                     t'          t)           j                             |                              t9          |d          r|j        nt          |                    S |t          d          u r j        S t=          |          st?          |          r@tA          |dd	          r-                     tC          |          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...c                X    g | ]&}t                               |j        d k              'S )r   )r~   r   r   )r   r   rR   s     rT   r   z=CliSettingsSource._metavar_format_recurse.<locals>.<listcomp>  s2    oooPT''d.AU.JKKooorU   r\   )r<  Nr  Frootr>  ztyping.r
  ztyping_extensions.)$rA   r@   r\   rZ   rk   r$   reprtyping
ForwardRefr)   is_typealiastyperW   r/   r0   r   rS   r   r*   r@  r   map_metavar_format_recurser;  
is_literalr.   r   r   r   r  r   r%   r&   ri   r?   r   r   )rR   r7  origins   `  rT   rI  z)CliSettingsSource._metavar_format_recurseo  s   s## 	#-1A#A#A3<<sGWWCZZ5^,, 	99V.// 	>3RSV3W3W 	s88O#ndCDD 	 -CC6"" 	V//S9UW[WnWnorWsWs5t5t0u0uvvv&v.. 	V//Sd>U>UVY>Z>Z5[5[0\0\]]] d++ 	V//ooooX[XgXlXlXnXnooo   ^,, 	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UrU   c                T    |                      |                              dd          S )Nr^  rS  )rI  r   r:  s     rT   r  z!CliSettingsSource._metavar_format  s&    ++C0088sCCCrU   c                r   |j         r|j         nd}|s|                     |          rt          S |                                r2|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|                     |           d}n_|j        t          d fvr*t          |j        |j                  }d||j        n| d}n%|j        d|                     |j                   d}t$          |j        vr||rd	| n|z  }t'          t          | j                  t*                    r|                    d
d          n|S )Nr
  zifdef: z (z	required)(z
(default: )z(default factory: r?  %z%%)rg   r1  r  r  r(   r8   r   r   r%   r   r&   ri   r@   r  r   r=   r   r0  r:   r  r  r   r   )	rR   r   r   r  r  _helpifdefr   	enum_names	            rT   r  zCliSettingsSource._help_format  s    +5*@H
&&b 	 $";";J"G"G 	 !!## 	=: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Z%888%<WW<+5d4;L6M6M~+^+^iu}}S$'''diirU   c                T    |j         r|j         nd}|t          k    pt          |j        v S )Nr
  )rg   r  r   )rR   r   rQ  s      rT   r1  z&CliSettingsSource._is_field_suppressed  s/    *4*@H
&&b$K
8K(KKrU   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   )rk   r   r   r   choices)r   r  s     rT   r   zECliSettingsSource._update_alias_path_only_default.<locals>.<listcomp>  sb     !
 !
 !
%)\!:;;!
y11XEEtIu}UVGW7X7X!
 !
 !
rU   r   rC   r[  r
  )	r  r   path
setdefaultr   r   r   rC  r   )rR   r$  rU  r   rV  
alias_pathalias_nested_pathsalias_defaultcurrent_pathnested_pathalias_path_indexs              rT   _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1rU   r   str | list[Any] | dict[str, Any]
list_style#Literal['json', 'argparse', 'lazy']
dict_styleLiteral['json', 'env']&list[str | list[Any] | dict[str, Any]]c                   |g}t          |t                    rt          |t                    r^|dk    r3d                    d t	          j        |          D                       g}np|dk    rd t	          j        |          D             }nKt          |t                    r6|dk    r0d t	          j        |                                          D             }|S )NlazyrS  c              3     K   | ]}| V  d S r   rN   r   vs     rT   r   z9CliSettingsSource._coerce_value_styles.<locals>.<genexpr>  s$      &I&I!!v&I&I&I&I&I&IrU   argparsec                    g | ]}| S rN   rN   rm  s     rT   r   z:CliSettingsSource._coerce_value_styles.<locals>.<listcomp>  s    @@@f@@@rU   envc                "    g | ]\  }}| d | S )r  rN   )r   krn  s      rT   r   z:CliSettingsSource._coerce_value_styles.<locals>.<listcomp>  s&    OOOTQjjQjjOOOrU   )rk   rW   r   rG  r  r  rl   r   )rR   r  rU  re  rg  r   s         rT   _coerce_value_stylesz&CliSettingsSource._coerce_value_styles  s     eS!! 	P-.. P''!hh&I&Itz%7H7H&I&I&IIIJFF:--@@dj.?.?@@@FM400 P&&OOTZ5F5F5L5L5N5NOOOFrU   serialized_argsdict[str, list[str]]positionals_firstc                \    |s| d         | d         z   n| d         | d         z   | d         z   S )Noptional
positional
subcommandrN   )ru  rw  s     rT   _flatten_serialized_argsz*CliSettingsSource._flatten_serialized_args  sE     %MOJ'/,*GGG .1LLL)	* 	*rU   r4   _is_submodelc                   i }g }g }g }	t          |rt          |          n| j                                                  D ]\  }
}t	          ||
          }|j        |k    r"t          |j        v r|3t          t          | j
        |                                                             }|j        ri|	                    |                    t          |                               |                     ||||d          }|	|                     ||          z  }	t#          t          |                    st%          t          |                    r=|                     ||||d          }||d         z  }||d         z  }|	|d         z  }	Qt'          j        d|j                  }|r|                                nd\  }}t/          |t0          t2          t4          f          rt7          j        |          nt;          |          }|j        r|                     ||||          }t@          |j        v ryt/          |t2                    r|n|gD ]\}t/          |t0          t2          t4          f          rt7          j        |          nt;          |          }|                    |           ]q|j!        "                    d          tF          k    r|d	u r|d
k    r|dz  }| $                    ||||          D ]T}|                    | |            |j!        "                    d          tF          ddfvr|                    |           Ud |D             d |D             |	dS )NT)re  rg  rw  r}  ry  rz  r{  z(-*)(.+))r
  r
  r  Fz--r  )re  rg  r  r  c                d    g | ]-}t          |t                    st          j        |          n|.S rN   rk   rW   r  r  r   rU  s     rT   r   z6CliSettingsSource._serialized_args.<locals>.<listcomp>?  s7    oooX]*UC2H2HSE***eooorU   c                d    g | ]-}t          |t                    st          j        |          n|.S rN   r  r  s     rT   r   z6CliSettingsSource._serialized_args.<locals>.<listcomp>@  s8    sssZ_Juc4J4JU4:e,,,PUsssrU   )ry  rz  r{  )%r?   r   r   r   ri   r   r9   r   rF  r_  rB  r   r   ry   r   _serialized_argsr|  r%   r&   r  r  r   groupsrk   rl   r   r   r  r  rW   r   rc  r8   rJ   rj   r   rt  )rR   r   re  rg  rw  r}  rV  r  r  r  r   r   r  r|   sub_argsr  
flag_charsr$  rU  s                      rT   r  z"CliSettingsSource._serialized_args  s    46 @BBD%'&7|8jUY]Yj&k&k&q&q&s&s :	0 :	0"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00!))&7!% 1    4#@#@K\#]#]]d=1122 6KDQ^L_L_6`6` 00!))&7!% 1   *!558L#998L#99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#
22=%T^ku2vv 0 0$$
%>H%>%>??? :>>(++4I<Yf3ggg!((///0 poanooosscrsss)
 
 	
rU   )2r   r   r   rc   r   r   r   rc   r   r   r   r   r   r   r   r   rH   r   r   rc   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r   rK   rL   )rK   r   )r   r!  rK   r"  )r  r$  rK   r"  )r   r(  r  r)  rK   r*  )rK   r-  )r  r)  rK   r0  )r  rQ  rK   r   )r  rQ  r   rW   r6  r   rK   rI   )rc  r   r   rW   rK   rd  )rl  r   r   rW   rK   rW   )rc  r   r   rW   rK   rW   )ry  rW   rl  r   r  rI   rK   rW   )ry  rW   rl  r   rK   rW   )ry  rW   rl  r   ri  r  rK   rW   )r   r   r   rW   r   r'   rK   rL   )r   r   rK   r  )rK   r   )
r  r  r  rW   r   r   rJ   r   rK   r  )r  r  rK   r  )r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r   rK   rL   )rK   rL   )r   r   r   r   r  r   r   rW   r  rW   r  r   r  r   r  r   r  rI   r  r  r  rI   r  r  rK   r   )rJ   r   r   r'   r   rI   rK   rL   )rJ   r   r   r'   r  r   rK   rL   )
rJ   r   r   r'   r   rW   r  r   rK   r  )r|   r~   r  rW   r  r   r  r   r  r  r  rI   rK   r   r   ) r   r   r   r   rv   rw   r  r   r   rW   r  rW   r  rW   r  r   rJ   r   r   rW   r   r'   r   r   r  r   r  rI   r  r  rK   rL   )r   r   r   r   r  r   r   rW   r  rW   r  r   rK   rL   )r7  r   rK   r   )r   r   r<  rc   rK   rW   )r7  r   rK   rW   )
r   rW   r   r'   r  r   r  rI   rK   rW   )r   r'   rK   rI   )
r$  rW   rU  r   r   r'   rV  r   rK   rW  )r  r  )
r  r   rU  rd  re  rf  rg  rh  rK   ri  )ru  rv  rw  rI   rK   r   )r  r  FF)r   r4   re  rf  rg  rh  rw  rI   r}  rI   rK   rv  )3rZ   r[   r\   rq   r   add_argumentr  r	   
add_parseradd_subparsersformat_helpr   rP   r   r   r  rA  rU  rk  r}  rV  r  r  r  r  r  propertyr   r  r  r  r  r  r  r  r  r   r  r  r;  r@  rI  r  r  r1  rc  rt  staticmethodr|  r  r]   r^   s   @rT   r   r   -  s       0 0j %)DH)-*.&*,059)-!%+/FJ/3CG>B&*7;9G9T?M?`7H7S;I;X8F8R:3A` A` A` A` A` A` A`F --- X-   X    X& ;?W[	& & & & & & & && === X=   X" ae3 3 3 3 3 3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;X8F8R:3c 3c 3c 3c 3cj   6 %*24&*26[ [ [ [ [zL L L L] ] ] ]0& & & &*) ) ) )v 37!T T T T Tl, , , ,BX X X XC C C C C)V )V )V )VVD D D Dj j j j6L L L L2 2 2 2@ ;A-3    & * * * \* ;A-3"'"L
 L
 L
 L
 L
 L
 L
 L
 L
rU   r   )ra   rb   rK   rc   )ru   r   rv   rw   rK   rL   )prq   
__future__r   _annotationsr,  r  r  r  r  rE  ro  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#   pydantic._internal._reprr$   pydantic._internal._utilsr%   pydantic.dataclassesr&   pydantic.fieldsr'   pydantic_corer(   typing_inspectionr)   typing_inspection.introspectionr*   
exceptionsr-   utilsr.   r/   r0   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rq  rD   pydantic_settings.mainrE   rG   r`   rt   rz   r~   r   CliSubCommandCliPositionalArgrI   r   r  r  r  r  r  CliSuppressr   rW   CliUnknownArgsr   rN   rU   rT   <module>r     sC   - - 2 2 2 2 2 2   				  



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