
    h,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]d,d"Z^d-d#Z_ G d$ d%e/      Z` e'd&      Zae"eadz  eNf   Zbe"eaeMf   Zc e'd'ed(      Zee"eeeLf   Zfe"eeeKf   Zge"eeeOf   Zhe"eeeJf   ZieZje"eaejf   Zke"elem    e0g )      ePeHf   Zn G d* d+eYe$ea         Zoy).z'Command-line interface settings source.    )annotationsN)SUPPRESSArgumentParserBooleanOptionalAction	NamespaceRawDescriptionHelpFormatter_SubParsersAction)defaultdict)CallableMappingSequence)Enum)cached_property)chain)dedent)SimpleNamespace)TYPE_CHECKING	AnnotatedAnyGenericLiteralNoReturnTypeVarcastget_args
get_originoverload)AliasChoices	AliasPath	BaseModelFieldPrivateAttrTypeAdapter)Representation)is_model_class)is_pydantic_dataclass)	FieldInfo)PydanticUndefined)typing_objects)is_union_origin   SettingsError)_lenient_issubclass_typing_base_WithArgsTypes   )
ForceDecodeNoDecodePydanticModel_CliDualFlag_CliExplicitFlag_CliImplicitFlag_CliPositionalArg_CliSubCommand_CliToggleFlag_CliUnknownArgs)_annotation_contains_types_annotation_enum_val_to_name_get_alias_names_get_model_fields_is_function_strip_annotatedparse_env_vars   )EnvSettingsSource)BaseSettingsc                  .     e Zd Zdd fdZd fdZ xZS )_CliInternalArgParserc                2    t        |   di | || _        y )N )super__init___cli_exit_on_error)selfcli_exit_on_errorkwargs	__class__s      w/var/www/hypershopcomercio.com.br/hyper-ai/venv/lib/python3.12/site-packages/pydantic_settings/sources/providers/cli.pyrK   z_CliInternalArgParser.__init__O   s    "6""3    c                X    | j                   st        d|       t        |   |       y )Nzerror parsing CLI: )rL   r-   rJ   error)rM   messagerP   s     rQ   rT   z_CliInternalArgParser.errorS   s+    &&"5gY ?@@grR   )T)rN   boolrO   r   returnNone)rU   strrW   r   )__name__
__module____qualname__rK   rT   __classcell__rP   s   @rQ   rG   rG   N   s    4 rR   rG   c                      e Zd Zy)CliMutuallyExclusiveGroupN)rZ   r[   r\   rI   rR   rQ   r`   r`   Y   s    rR   r`   c                   i }t        |       r| j                  }nt        |       rt        | di       }|j	                  d      }t        |t              r|j	                  d      }|s|S t        |      rf	 d}t        |       r | j                         j	                  d      }n3t        |       r(t        |       j                         j	                  d      }||S 	 | j                  t        | j                        S y# t        $ r Y -w xY w)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   )	model_clsconfigrc   descs       rQ   _get_model_descriptionrr   ]   s	    Fi ''	y	)$92>

#67#T* $$]3K	#	$		Di( 22488G&y1"9-99;??N   $i''((	  		s   5A#C< <	DDc                    t        |       }t        |      st        |      r|j                  |       yt	        t        |            rt        |      D ]  }t        ||        yy)zJRecursively collect BaseModel subclasses from possibly nested union types.N)rA   r%   r&   appendr*   r   r   _collect_sub_models)type_
sub_modelsstrippedargs       rQ   ru   ru   ~   sZ    &Hh#8#B(#	H-	.H% 	1CZ0	1 
/rR   c                  (    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   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	 	 	 	 	 	 d0d        Zd1d!Zed2d"       Zed3d#       Zed4d$       Zed4d%       Zed5d&       Zed6d'       Zed7d(       Zed4d)       Zed8d*       Zed8d+       Zed8d,       Zed8d-       Z xZS )9_CliArgr   modelparserrY   
field_name
arg_prefixrV   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]rO   rI   tuple[str, ...]_alias_namesdict[str, int | None]_alias_pathsF_is_alias_path_onlyr'   _field_infoc                   t        
|   di | || _        t        | j                  | j
                  | j                  | j                  | j                        \  | _	        | _
        | j                  j                         D ci c]  \  }}| j                   | | }}}| j                  r| j                  D ]|  }| j                  |      }| j!                  g i d      || j                     |<   || j                     |   || j                     |<   || j                     |   || j
                     |<   ~ nB| j"                  |vr4| || j"                     d <   || j"                     d    || j
                     d <   |j                         D ]8  \  }	}| j!                  g i d      ||	   |<   ||	   |   || j
                     |<   : y c c}}w )N)alias_path_argsr   r   )r   rO   )updaterI   )rJ   rK   r   r>   r~   
field_infor   r   r   r   r   itemsr   subcommand_destrw   subcommand_alias
model_copydest)rM   r   
parser_mapvaluesnameindexalias_path_dests	sub_modelr   alias_path_destrP   s             rQ   rK   z_CliArg.__init__   s    	"6"%6FOOOO --..!227
343 RVQbQbQhQhQjk+$t/v6=kk!__ s	#'#8#8#C EI__egsu\v_Ew
4//01AB>HI]I]>^_o>p
4//0;@J4K_K_@`aq@r
4??+,<=	s
 YY..*.Jtyy!$'0:4990Ed0KJt'-&6&<&<&> 	T"OU15QS_aHb1cJ'.1;O1LU1SJt'.	T ls   Gc                2    |dvr|j                  dd      S |S )NNF_-)replace)clsr   r   s      rQ   get_kebab_casez_CliArg.get_kebab_case   s    )3=)Ht||C%RdRrR   c                     d}t        |      }t        |      D ]  }| j                  |      z  } |r@t        |t              r0|t         fd|j                  j                         D              z  }|S )NrI   c              3  H   K   | ]  }j                  |d k(          yw)allN)r   ).0r   r   r   s     rQ   	<genexpr>z)_CliArg.get_enum_names.<locals>.<genexpr>   s$     xRV 2 24u9L Mxs   ")rA   r   get_enum_namesr.   r   tuple__members__keys)r   
annotationr   
enum_namesrv   s   ` `  rQ   r   z_CliArg.get_enum_names   sy     ')
%j1
j) 	@E#,,UJ??J	@-j$?%xZdZpZpZuZuZwxxxJrR   c                    | j                  t        | j                        dkD  r|j                  | j
                        S | j                  | j
                        S )NrC   )r   lenrw   rZ   preferred_aliasr   )rM   r   s     rQ   r   z_CliArg.subcommand_alias   sS    """%doo"6":IVZVeVe
 	
@D@T@TVZVeVe
 	
rR   c                    | j                   S N)r   rM   s    rQ   r   z_CliArg.field_info   s    rR   c                \    t         | j                  j                  v r| j                   dS d S )N:subcommand)r9   r   metadatar   r   s    rQ   r   z_CliArg.subcommand_dest   s+    2@DOOD\D\2\$//"+.fbffrR   c                    | j                   sU| j                  rI| j                  j                  3| j                  s'| j                   | j
                   | j                  d  S | j                   | j
                   S r   )r   r   r   validation_aliasis_parser_submodelr   r   r   s    rQ   r   z_CliArg.dest   ss     $$00<++ oo&t';';&<=d>Q>Q>STT//"4#7#7"899rR   c                v    | j                   r| j                  d   j                  dd      S | j                  d   S )Nr   r   r   )r   r   r   r   s    rQ   preferred_arg_namez_CliArg.preferred_arg_name   s1    15tyy|##C-RdiiPQlRrR   c           	     R   t        | j                  j                        s| j                  j                  fnt        | j                  j                        }| j                  r't	        |D cg c]  }|t        d       us| c}      }g }|D ]  }t        |t        fd      r/t        d| j                  j                   d| j                         t        |t        fd      r/t        d| j                  j                   d| j                         t        ||        |S c c}w )NF)is_include_originz.CliSubCommand is not outermost annotation for .z1CliPositionalArg is not outermost annotation for )r   r   r   r   r   typer<   r9   r-   r|   rZ   r~   r8   ru   )rM   field_typesrv   rw   s       rQ   rw   z_CliArg.sub_models   s     DOO667 __'')$//445 	
 K [55PTUYPZCZ [\K,.
  		3E)%.1BV[\#DTZZEXEXDYYZ[_[j[jZkl  ,E4E3G[`a#G

H[H[G\\]^b^m^m]no   z2		3  !\s   +D$>D$c                    | j                   S r   r   r   s    rQ   alias_namesz_CliArg.alias_names          rR   c                    | j                   S r   )r   r   s    rQ   alias_pathsz_CliArg.alias_paths  r   rR   c                     | j                   d   S )Nr   r   r   s    rQ   r   z_CliArg.preferred_alias  s      ##rR   c                    | j                   S r   )r   r   s    rQ   is_alias_path_onlyz_CliArg.is_alias_path_only
  s    '''rR   c                    | j                    xr; t        | j                  j                  t        t
        t        t        t        fd      S )NTis_strip_annotated)	r   r<   r   r   listsetri   r   r   r   s    rQ   is_append_actionz_CliArg.is_append_action  s=    ''' 
,FOO&&sD(G(Lae-
 	
rR   c                h    | j                    xr$ t        | j                        xr | j                   S r   )r   rV   rw   r   r   s    rQ   r   z_CliArg.is_parser_submodel  s-    '''_D,A_$J_J_F__rR   c                    | j                   d uxrJ t        | j                   j                  v xs, | j                  du xr t        | j                   j                  vS r   )r   r3   r   r   r2   r   s    rQ   is_no_decodez_CliArg.is_no_decode  sR    d* 
000 _$$-]+T__E]E]2]	
rR   )r   r'   r   zOdefaultdict[str | FieldInfo, dict[int | None | str | type[BaseModel], _CliArg]]r   r   rW   rX   )r   rY   r   r   rW   rY   )r   	type[Any]r   r   rW   r   )r   type[BaseModel]rW   rY   )rW   r'   )rW   
str | None)rW   rY   )rW   list[type[BaseModel]])rW   r   )rW   r   )rW   rV   )rZ   r[   r\   __annotations__r   rO   r"   r   r   r   r   rK   classmethodr   r   r   r   r   r   r   r   rw   r   r   r   r   r   r   r   r]   r^   s   @rQ   r{   r{      s   JKOO88  D)FN$/OL/3*5b/L'9 +E 22(]K*TT dT 	T
 
T< S S 	"	0X			 	

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

 ` ` 
 
rR   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d0d       Zed1d       Zed2d       Zddd	 	 	 	 	 d3 fd	Zed4d
       Zed2d       Zdd	 	 	 d5dZd6dZ	 	 	 	 	 	 	 	 d7dZd8dZd9dZd:dZd;dZd<dZd=dZd>dZd?dZed@d       Z	 	 	 	 	 	 	 	 	 	 dAdZdBdZej
                  ej                  ej                  ej                  ej                  ef	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dCdZdDdZdi ddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dEdZ dFdZ!dGd Z"	 	 	 	 	 	 	 	 	 	 dHd!Z#	 	 	 	 	 	 	 	 	 	 	 	 	 	 dId"Z$	 dJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dKd#Z%	 	 	 	 	 	 	 	 	 	 	 	 	 	 dLd$Z&dMd%Z'dJdNd&Z(dOd'Z)dOd(Z*	 	 	 	 	 	 	 	 	 	 dPd)Z+dQd*Z,	 	 	 	 	 	 	 	 	 	 dRd+Z-	 	 dS	 	 	 	 	 	 	 	 	 dTd,Z.e/	 	 	 	 	 	 dUd-       Z0	 	 	 	 dV	 	 	 	 	 	 	 	 	 	 	 dWd.Z1 xZ2S )XCliSettingsSourcea  
    Source class for loading settings values from CLI.

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

    Args:
        cli_prog_name: The CLI program name to display in help text. Defaults to `None` if cli_parse_args is `None`.
            Otherwise, defaults to sys.argv[0].
        cli_parse_args: The list of CLI arguments to parse. Defaults to None.
            If set to `True`, defaults to sys.argv[1:].
        cli_parse_none_str: The CLI string value that should be parsed (e.g. "null", "void", "None", etc.) into `None`
            type(None). Defaults to "null" if cli_avoid_json is `False`, and "None" if cli_avoid_json is `True`.
        cli_hide_none_type: Hide `None` values in CLI help text. Defaults to `False`.
        cli_avoid_json: Avoid complex JSON objects in CLI help text. Defaults to `False`.
        cli_enforce_required: Enforce required fields at the CLI. Defaults to `False`.
        cli_use_class_docs_for_groups: Use class docstrings in CLI group help text instead of field descriptions.
            Defaults to `False`.
        cli_exit_on_error: Determines whether or not the internal parser exits with error info when an error occurs.
            Defaults to `True`.
        cli_prefix: Prefix for command line arguments added under the root parser. Defaults to "".
        cli_flag_prefix_char: The flag prefix character to use for CLI optional arguments. Defaults to '-'.
        cli_implicit_flags: Controls how `bool` fields are exposed as CLI flags.

            - False (default): no implicit flags are generated; booleans must be set explicitly (e.g. --flag=true).
            - True / 'dual': optional boolean fields generate both positive and negative forms (--flag and --no-flag).
            - 'toggle': required boolean fields remain in 'dual' mode, while optional boolean fields generate a single
              flag aligned with the default value (if default=False, expose --flag; if default=True, expose --no-flag).
        cli_ignore_unknown_args: Whether to ignore unknown CLI args and parse only known ones. Defaults to `False`.
        cli_kebab_case: CLI args use kebab case. Defaults to `False`.
        cli_shortcuts: Mapping of target field name to alias names. Defaults to `None`.
        case_sensitive: Whether CLI "--arg" names should be read with case-sensitivity. Defaults to `True`.
            Note: Case-insensitive matching is only supported on the internal root parser and does not apply to CLI
            subcommands.
        root_parser: The root parser object.
        parse_args_method: The root parser parse args method. Defaults to `argparse.ArgumentParser.parse_args`.
        add_argument_method: The root parser add argument method. Defaults to `argparse.ArgumentParser.add_argument`.
        add_argument_group_method: The root parser add argument group method.
            Defaults to `argparse.ArgumentParser.add_argument_group`.
        add_parser_method: The root parser add new parser (sub-command) method.
            Defaults to `argparse._SubParsersAction.add_parser`.
        add_subparsers_method: The root parser add subparsers (sub-commands) method.
            Defaults to `argparse.ArgumentParser.add_subparsers`.
        format_help_method: The root parser format help method. Defaults to `argparse.ArgumentParser.format_help`.
        formatter_class: A class for customizing the root parser help text. Defaults to `argparse.RawDescriptionHelpFormatter`.
    NTc           
        ||n,|j                   j                  dt        j                  d         | _        ||n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        |s| j                  du rdnd}|| _        ||n|j                   j                  d	d      | _        ||n|j                   j                  d
d      | _	        |	|	n|j                   j                  dd      | _
        |
|
n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        | j                  dz  | _        | j                  re|
j                  d      s1|
j                  d      s |
j!                  dd      j#                         st%        d|
       | xj                  dz  c_        ||n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        ||n|j                   j                  dd      | _        ||n|j                   j                  dd       | _        ||nd}|s|t%        d      t.        | a  |d| j                  d| j                  |d       |9t3        | j                  | j                  t5        |      || j                  dd      n|}| j7                  ||||||||       |dvrr|du rt        j                  dd  }n-t9        |t:        t<        f      st%        dt?        |             | jA                  | jC                  | jD                  |             y y )Ncli_prog_namer   cli_hide_none_typeFcli_avoid_jsonTrX   nullcli_enforce_requiredcli_use_class_docs_for_groupsrN   
cli_prefix cli_flag_prefix_charr   r1   r   z'CLI settings source prefix is invalid: cli_implicit_flagscli_ignore_unknown_argscli_kebab_casecli_shortcutszGCase-insensitive matching is only supported on the internal root parser)env_nested_delimiterenv_parse_none_strenv_parse_enums
env_prefixr   env_nested_max_split)rN   progrd   formatter_classprefix_charsallow_abbrevadd_help)root_parserparse_args_methodadd_argument_methodadd_argument_group_methodadd_parser_methodadd_subparsers_methodformat_help_methodr   r   rC   z<cli_parse_args must be a list or tuple of strings, received parsed_args)#re   rg   sysargvr   r   r   cli_parse_none_strr   r   rN   r   r   _cli_flag_prefix
startswithendswithr   isidentifierr-   r   r   r   r   rJ   rK   rG   rr   _connect_root_parserrh   r   r   r   _load_env_vars_parse_argsr   )rM   settings_clsr   cli_parse_argsr  r   r   r   r   rN   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   rP   s                            rQ   rK   zCliSettingsSource.__init__`  s   8 +6ML<U<U<Y<YZiknkskstukv<w 	
 "- **../CUK 	 -8Nl>W>W>[>[\lns>t 	 "+/+>+>$+FF"4 $/ !**../EuM 	! -8 ***../NPUV 	* !, **../BDI 	
 )3(>*LD]D]DaDabnprDs $/ !**../EsK 	!
 !% 9 9A =??$$S)Z-@-@-EZM_M_`cegMhMuMuMw#&Mj\$Z[[OOs"O "- **../CUK 	 '2 $**../H%P 	$ -8Nl>W>W>[>[\lns>t 	 +6ML<U<U<Y<YZiko<p 	 ,:+E4+"9 ijj!$#66 )!" 	 	
( " ""&"8"8''2<@ /!66"  	 	!!#/ 3&?/"71+ 	" 		
 .%!$!"u>#RSWXfSgRhi  D,<,<T=M=M~,^_ /rR   c                     y r   rI   r   s    rQ   __call__zCliSettingsSource.__call__  s    *-rR   c                    y)a  
        Parse and load the command line arguments list into the CLI settings source.

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

        Returns:
            CliSettingsSource: The object instance itself.
        NrI   )rM   r   s     rQ   r  zCliSettingsSource.__call__  s     	rR   c                    y)a  
        Loads parsed command line arguments into the CLI settings source.

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

        Args:
            parsed_args: The parsed args to load.

        Returns:
            CliSettingsSource: The object instance itself.
        NrI   rM   r  s     rQ   r  zCliSettingsSource.__call__       	rR   )r   r  c               B   ||t        d      |Y|du r| j                  i       S |du rt        j                  dd  }| j                  | j	                  | j
                  |            S |%| j                  t        j                  |            S t        | !         S )Nz/`args` and `parsed_args` are mutually exclusiveFr  TrC   )	r-   r  r  r  r  r   copyrJ   r  )rM   r   r  rP   s      rQ   r  zCliSettingsSource.__call__  s      7 QRRu}**r*::t|xx|&&43C3CDDTDTVZ3[&\\$&&499[3I&JJ7#%%rR   c                     y r   rI   r   s    rQ   r  z CliSettingsSource._load_env_vars  s    :=rR   c                    y)a  
        Loads the parsed command line arguments into the CLI environment settings variables.

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

        Args:
            parsed_args: The parsed args to load.

        Returns:
            CliSettingsSource: The object instance itself.
        NrI   r  s     rQ   r  z CliSettingsSource._load_env_vars  r  rR   r  c                  |i S t        |t        t        f      rt        |      }| j	                  |      }| j
                  j                         D ]i  \  }}t        |t              s|j                  d      s)|j                         D cg c]  }|j                   c}D ]  }||vs| j                  ||<    k |j                         D ci c]!  \  }}|j                  d      s|t        ur||# }}}|r9t        |t              t        fd|j!                         D              sd|<   nd| j"                  s| j$                  rt        d | j$                  j                         D              }	|	rt        fd| j$                  D              }
|
s|t'        d | j$                  j                         D              }t        | j(                  t*              r-| j(                  j-                  d	d
j/                  |              t1        d      |j3                  | j$                         t5        t7        t8        t        t        f   |      | j:                  | j<                  | j                        | _        | S c c}w c c}}w )Nr   )keyc              3  2   K   | ]  } d |v s|  yw)r   NrI   )r   r~   last_selected_subcommands     rQ   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>E  s#     wjMeLffgJhlvJvzws   {}r   c              3      K   | ]  }|  y wr   rI   r   r   s     rQ   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>M  s     OtdO   c              3  L   K   | ]  }|j                  d d      d   v   yw)r   rC   r   N)rsplit)r   r   r  s     rQ   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>O  s,      /KODKKQ'*.FF/s   !$c              3  &   K   | ]	  }|s|  y wr   rI   r"  s     rQ   r   z3CliSettingsSource._load_env_vars.<locals>.<genexpr>S  s     "\DW[4"\s   zunrecognized arguments:  r1   ) rh   r   r   vars_resolve_parsed_args_parser_mapr   rY   r  r   r   r  r(   maxr   anyr   r   _cli_unknown_argsnextr   r   rT   join
SystemExitr   rB   r   r   r   env_ignore_emptyenv_vars)rM   r  selected_subcommandsarg_destarg_mapry   r   r  valhas_unknownselected_accepts_unknownunknownr  s               @rQ   r  z CliSettingsSource._load_env_vars.  sN    IkI#?@{+K#88E!%!1!1!7!7!9 	OHg(C(X->->}-M<CNN<L'MS'M OO&.BB7;7N7NO4O	O (--/
S<<.3>O3O H
 

  '*+?S'I$wK4D4D4Fww8<45')$ ++0F0FOt/E/E/L/L/NOOK+. /SWSiSi/ ,( 0""\D4J4J4Q4Q4S"\\G!$"2"2NC((..1I#((SZJ[I\/]^$Q-'4112&c"K0!!##	
 O (N
s   J &Jc                |   g }t        |j                               D ]  \  }}t        |t               rx| j                  |||      r+| j                  j                  |i       j                  d       }|r!|j                  rdj                  |      ||<   y| j                  ||      ||<   |j                  d      r.|,|j                  | j                  |   |   j                         | j                  dk(  st        |t              s|j                  dd      }| j                  j                  |i       j                  d       }|s0|j                  j                   sH||j#                  |j                  j                   d      v srd|v r"t%        d|j                  dd       d| d	      |||<    |S )
N,r   r   r   r   FzInput should be kebab-case "z", not "")r   r   rh   %_is_nested_alias_path_only_workaroundr*  rg   r   r/  _merge_parsed_listr  rt   r   r   rY   r   r   r   r   
ValueError)rM   r  r3  r~   r6  cli_arg	snake_vals          rQ   r)  z&CliSettingsSource._resolve_parsed_argsc  s   *,#K$5$5$78 	8OJ#t$==k:WZ[ **..z2>BB4Hw33.1hhsmK
+*.*A*A#z*RJ'$$]3$++D,<,<Z,H,M,R,RS$$-*S#2FKKS1	**..z2>BB4H**55"g&<&<W=O=O=Z=Z\a&bbcz(+GTWY\H]G^^fgjfkkl)mnn.7K
+3	86 $#rR   c                |   | j                   j                  |i       j                         }|syt        t	        |            }|j
                  ro|j                  j                  d      rT||= |j                  dd }d|j                   d| j                  ||       }||vr
d| d||<   y
||   dd  d	| d||<   y
y)z
        Workaround for nested alias path environment variables not being handled.
        See https://github.com/pydantic/pydantic-settings/issues/670
        Fr   Nr<  z": {}, T)
r*  rg   r   r.  iterr   r   r  r   r>  )rM   r  r~   r6  	known_argry   nested_dest
nested_vals           rQ   r=  z7CliSettingsSource._is_nested_alias_path_only_workaround  s     $$((R8??A	4	?#!!cnn&=&=c&BJ'.."-KS001T5L5LSR\5]4^_J k1 ZL# $
  $K0"56bBG $
 rR   c                $   | j                   j                  |t              }|t        u s/t        t	        |            rt        d t        |      D              s|}||fS |r(t        |      dkD  s|d   j                  d      rt        nt        }||fS )Nc              3  h   K   | ]*  }|t        d       urt        |      t        t        fvr| , y wr   )r   r   ri   r   )r   rv   s     rQ   r   zACliSettingsSource._get_merge_parsed_list_types.<locals>.<genexpr>  s4      T
*z%/@w/W s   02rC   r   [)
_cli_dict_argsrg   r   r*   r   r,  r   r   r
  rY   )rM   parsed_listr~   
merge_typeinferred_types        rQ   _get_merge_parsed_list_typesz.CliSettingsSource._get_merge_parsed_list_types  s    ((,,Z>
$":j#9: %j1  'M =(( %0S5E5I[YZ^MfMfgjMkDruM=((rR   c           	     P   g }d }| j                   j                  |i       }	 t        t        t	        |j                                     j                  j                        }t        t        t	        |j                  dg                        t        u }t        |      D ]  \  }}	|j                  |      }
|
d u xs |
j                   }||}n||k7  rt        d      |rR|	j                  dd      }		 |	j!                  d      r|	j#                  d      r|	dd n|	}t%        |       |rd| dn|}	n'|	j!                  d      r|	j#                  d      r|	dd }	|j)                  |	        dj+                  |      }|rd	| d
S |S # t        $ r d }Y w xY w# t&        $ r Y Kw xY w)N1zKMixing Decode and NoDecode across different AliasPath fields is not allowed\z\\r<  rC   rC  r;  rM  ])r*  rg   r#   r.  rG  r   r   r   r   validate_pythonrY   rm   	enumerater   r-   r   r
  r  floatr?  rt   r/  )rM   merged_listr~   decode_listis_use_decodecli_arg_maplist_adapteris_num_type_strr   itemr@  	is_decodeunquoted_itemmerged_list_strs                 rQ   _merged_list_to_strz%CliSettingsSource._merged_list_to_str  s   !#%)&&**:r:	# +Dk6H6H6J1K,L,W,W,b,b cL"4\-I-I3%-P(Q#RSWZZO %[1 	%KE4!ooe,G4Cw/C/C+CI$ ))+#$qrr||D&126//#2F4==Y\K]D2JcgM-(3BQ}oQ/D %$--*<Abzt$#	%$ ((;/)6?#1%KOK+  	#"O	# " s$   A2F 3>FFF	F%$F%c                   	 g }d}| j                  ||      \  }}|D ]  }t        |t              s n|j                         }|j	                  d      r$|j                  d      r|dd j                         }|r|j                         }|j	                  d      r| j                  |||      }d}nK|j	                  d      s|j	                  d      r| j                  ||      }n	 | j                  |||      }d}|r|r| j                  |||      } |t        u r|d	   S |t        u r| j                  ||      S i }	|D ]&  }
|	j                  t        j                  |
             ( t        j                  |	      S # t        $ r%}||u r||}| j                  |||      }Y d }~d }~ww xY w# t         $ r}t#        d
| d|       d }~ww xY w)NFrM  rV  rC   rC  r;  rD  Tr   zParsing error encountered for z: )rR  rh   rY   stripr
  r  _consume_comma_consume_object_or_array_consume_string_or_numberr?  r   rd  r   jsonloadsdumpsrm   r-   )rM   rO  r~   rZ  is_last_consumed_a_valuerP  rQ  r6  emerged_dictr`  s              rQ   r>  z$CliSettingsSource._merge_parsed_list  s   *	T%'K',$(,(I(I+Wa(b%J" Z!#s+ iik>>#&3<<+<a)//+C))+C~~c*"11#{D\]380>>#.#..2E"&"?"?["QCc&*&D&DS+Wa&b 480! " 0--c;@XYC5Z8 S "1~%t#//ZHH.0' 9D&&tzz$'789zz+..# $. c#-#>*+G-:
&*&D&DS+Wa&b	c$  	T"@Bqc RSS	Ts[   C#F0 &E?9F0 >F0 !F0 #F0 =AF0 ?	F-F(#F0 (F--F0 0	G9G

Gc                2    |s|j                  d       |dd  S )Nz""rC   )rt   )rM   r`  rZ  rm  s       rQ   rg  z CliSettingsSource._consume_comma  s    't$ABxrR   c                L   d}|j                  d      rdnd}d}t        dt        |            D ]e  }||   dk(  r||dz
     dk7  r| }|r||   dv r|dz  }*||   d	v s2|dz  }||   |k(  s@|d
k(  sF|j                  |d |dz           ||dz   d  c S  t	        d| d      )NrC   rD  rE  rV  Fr<  rU  )rD  rM  )rE  rV  r   zMissing end delimiter ")r
  ranger   rt   r-   )rM   r`  rZ  countclose_delimin_strconsumeds          rQ   rh  z*CliSettingsSource._consume_object_or_array  s    !__S1csaT+ 	0HH~$hl);t)C#h:-
h:-
>[0UaZ&&tNhl';<1//	0 5k]!DEErR   c                F   |t         urdn
t        |      }d}|t        |      k  r:||   dk(  r|dk(  s||dz
     dk7  r| }|s	||   dk(  rn|dz  }|t        |      k  r:|rt        d      |d | j                         }|t        t         fv r	 t        |       |j                  |       nd
 |j                  dd      D        \  }}|j                  d      rA|j                  d      s0|j                  d      s|j                  d      rt        d|       |j                  d      |j                  d      }}|j                  t        j                  ||i             ||d  S # t        $ r0 || j                  k(  rd}|d	vr|j                  d      sd| d}Y w xY w)Nr   Fr<  rC   rU  r;  zMismatched quotesr   )truefalser   c              3      K   | ]  }|  y wr   rI   )r   kvs     rQ   r   z>CliSettingsSource._consume_string_or_number.<locals>.<genexpr>"  s     >r>r#  =z1Dictionary key=val parameter is a quoted string: )rY   r   r-   rf  r   rY  r?  r  r
  rt   splitr  rj  rl  )	rM   r`  rZ  rP  rv  is_find_end_quote
val_stringr  r6  s	            rQ   ri  z+CliSettingsSource._consume_string_or_number  s   "#-13t9!T"H~$(a-41;MQU;U(9$9!$h3)>MH T"  344)8_**,
$$3j! z*>Z%5%5c1%=>HC~~c"3<<+<S^^TWEX]`]i]ijm]n #TU_T`!abbyy~syy~Ctzz3*56HI  3!8!88!'J%>>zG\G\]`Ga#$ZL!2J	3s   E' '5F F c                |   t         |j                  v rd}nwt        |j                  v rd}nbt        |j                  v r:d}t	        |j
                  t              s4t        | d|j                   d| d      t        |j                  v rd}ny |j                  t        urt        | d|j                   d| d      y )	NCliImplicitFlagCliExplicitFlagCliToggleFlagz
 argument r   z must have a default bool valueCliDualFlagz is not of type bool)r7   r   r6   r:   rh   r   rV   r-   rZ   r5   r   )rM   r|   r~   r   cli_flag_names        rQ   _verify_cli_flag_annotationsz.CliSettingsSource._verify_cli_flag_annotations)  s    z222-M!4!44-Mz222+Mj00$7#$oZ/?qLkl  Z000)M  ,=/ENN;K1ZLXl mnn -rR   c           	     4   g }g g g }}}t        |      j                         D ]  \  }}t        |j                  v r|j	                         st        d|j                   d| d      t        ||      ^}}	t        |      dkD  rt        d|j                   d| d      t        |j                        D 
cg c]  }
|
t        d       us|
 }}
|D ]5  }t        |      rt        |      rt        d|j                   d| d       |j                  ||f       t        |j                  v rt        ||      ^}}	t        |      dkD  rt        d|j                   d| d      t!        |j                  t"        t$        t&        t(        t*        fd	      }|s|j                  ||f       |j                  ||f       | j-                  |||       |j                  ||f        |rt        |      dkD  r>d
j/                  |D cg c]  \  }}|	 c}}      }t        |j                   d|       |rAd
j/                  ||z   D cg c]  \  }}|	 c}}      }t        |j                   d|       ||z   |z   |z   S c c}
w c c}}w c c}}w )Nzsubcommand argument r   z has a default valuerC   z has multiple aliasesz$ has type not derived from BaseModelzpositional argument Tr   rF  z- has multiple variadic positional arguments: z= has variadic positional arguments and subcommand arguments: )r?   r   r9   r   is_requiredr-   rZ   r>   r   r   r   r   r%   r&   rt   r8   r<   r   r   ri   r   r   r  r/  )rM   r|   positional_variadic_argpositional_argssubcommand_argsoptional_argsr~   r   r   r   rv   r   
field_typer   r   infofield_namess                    rQ   _sort_arg_fieldsz"CliSettingsSource._sort_arg_fields<  s   "$:<b"-&7&>&D&D&F 	?"J
!4!44!--/'*>u~~>NaPZ|[o(pqq&6z:&NOK!;'!++.B5>>BRRST^S__t,uvv6>z?T?T6U"qUY^fjkofpYp5"qK"q&1 
 .z :>ST^>_"/"6u~~6Fa
|Sw x# 
  &&
J'?@"j&9&99"2:z"Ja{#a''*>u~~>NaPZ|[p(qrr#=))D#tXw+Odh$  (#**J
+CD+22J
3KL11%ZP$$j*%=>9	?< #*+a/"ii@W(X*$(XY#u~~&66cdocp$qrr "ii@WZi@i(j*$(jk#~~&&cdocpq  !88?J]ZZA #r0 )Y )ks   6J		J	J
J
c                    | j                   S )z#The connected root parser instance.)_root_parserr   s    rQ   r   zCliSettingsSource.root_parseri  s        rR   c                     @ j                   du r2dk(  r-t         j                  t              r	 	 d	 	 	 	 	 	 	 d fd}|S dfd}|S S )NFr   c                Z   g }|r(t        j                  t        j                  |            ng D ]p  }dj                   d}t	        j
                  d| d|      }|r1|j                  d      j                         |j                  d      z   }|j                  |       r  | ||      S )NrU  z{1,2}z^(z[^\s=]+)(.*)rC   r1   )	shlexr}  r/  r   rematchgrouplowerrt   )	r   r   	namespaceinsensitive_argsry   flag_prefixmatchedparser_methodrM   s	          rQ   parse_args_insensitive_methodzOCliSettingsSource._connect_parser_method.<locals>.parse_args_insensitive_methodx  s    
 $& <@5;;uzz$'78b 1C%&t'@'@&A"IK hh"[M'FLG%mmA.446q9II$++C01 %[2BINNrR   c                 "    t        d d      )Nz0cannot connect CLI settings source root parser: z. is set to `None` but is needed for connectingr,   )r   rO   method_names     rQ   none_parser_methodzDCliSettingsSource._connect_parser_method.<locals>.none_parser_method  s$    #F{m  TB  C rR   )NN)r   rG   r   z"list[str] | tuple[str, ...] | Noner  zNamespace | NonerW   r   )r   r   rO   r   rW   r   )r   rh   r  rG   )rM   r  r  r   rO   r  r  s   ```    rQ   _connect_parser_methodz(CliSettingsSource._connect_parser_methodn  s     %##u,224,,.CD
 <@.2O2O8O ,O 	O 10"
 &% ! rR   c                8    | j                  |d      dfd}|S )Nr   c                *   |j                  d      s|j                  d        | fi |S dD ci c]  }||v s||j                  |       }}|dxx   dz  cc<    | fi |}t        |d      st        d       |j                  di |S c c}w )	N _is_cli_mutually_exclusive_grouprequired)titlerd   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   )pophasattrr-   r  )r}   rO   ry   main_group_kwargsr  add_argument_groups        rQ   add_group_methodzACliSettingsSource._connect_group_method.<locals>.add_group_method  s    ::@A

:&)&;F;;E]$ocadhnanS&**S/%9$o!$o!'*.EE**6G5FGu&DE'l  :u99CFCC %ps
   	BB)r}   r   rO   r   rW   r   )r  )rM   r   r  r  s      @rQ   _connect_group_methodz'CliSettingsSource._connect_group_method  s&    !889RTop	D  rR   c	                    i  _         d fd}	| _        |d u }
| j                  r|	nt        j                  } j                  |d       _         j                  |d       _         j                  |       _	         j                  |d       _
         j                  |d       _         j                  |d       _        | _        i  _        t        t                _         j%                           j'                   j(                   j*                  g  j,                   j,                  d g t.        t1               	        j                   r( j                  s|
r j                  |	d       _        y y y y )	Nc                     t        j                  | i |\  } }j                  D ]  }|j                  |<    t        t        |       S r   )r   parse_known_argsr-  r   r   )r   rO   unknown_argsr   rM   s       rQ   _parse_known_argszACliSettingsSource._connect_root_parser.<locals>._parse_known_args  sO    !/!@!@$!Q&!QD,.. </;&&t,<	4((rR   r   r   r  r  r  	r}   r|   
added_argsr   subcommand_prefixr  alias_prefixesmodel_default
model_path)r   r   rO   r   rW   r   )r-  r  r   r   
parse_argsr  r  _add_argumentr  
_add_group_add_parser_add_subparsers_format_help_formatter_classrN  r
   ri   r*  _add_default_help_add_parser_argsr   r  r   r(   r   )rM   r   r   r   r   r  r  r  r   r  _is_default_parse_argss   `          rQ   r  z&CliSettingsSource._connect_root_parser  sx    8:	) (!2d!:$595Q5Q 1WeWpWp667HJ]^!889LNcd445NO667HJ]^#::;PRij 778JL`a /;=lwm
 	 ####"oo+u 	 
	
 !!$*F*FKa#::;LNabD Lb*F!rR   c                r   t        | j                  t              r| j                  sKt	        | j
                        j                         D ]%  \  }}t        ||| j                        ^}}d|v s% y  | j                  | j                  | j                  d d  d| j                  d d  ddt        d       y y )N)r   helprC   hr1   zshow this help message and exit)actionr   r  )rh   r  rG   r   r?   r  r   r>   r   r  r   r	  r   )rM   r~   r   r   r   s        rQ   r  z#CliSettingsSource._add_default_help  s    d'')>???.?@Q@Q.R.X.X.Z *J
&6z:^b^q^q&rOK!,
   ((!,-Q/((!,-T2 6   @rR   Fc                   |
t               }||hz  }d }i }t        t        |            st        t        |            rt	        t        |      |      sd n|}| j                  |      D ]]  \  }}t        ||| j                  |||| j                  | j                  j                  dd      xs | j                  j                  dd      | j                  | j                  | j                  j                  d      | j                        }|j                  |j                         |j                   r|j"                  D ]  }|j%                  |      }| j                  |j                      |   }|g|_        d|j(                  d<   | j*                  |j(                  d<   t-        |      |j(                  d<   t/        |j"                        d	kD  rd n|j0                  |j(                  d
<   | j2                  rt-        |      |j(                  d
<   |<| j5                  |d| dt/        |j"                        d	kD  r|j0                  nd       n|}t7        |d      r,|j8                  r|j8                  d d  d| dnd| d|_         | j:                  |g|j&                  i |j(                  |_        | j?                  |j<                  |g |j@                   d| |jB                   dd g tD        |	        | jF                  }|j@                  |j(                  d<   tH        |j(                  d<   | jK                  ||||	      |j(                  d
<   | jM                  |jN                        |j(                  d<   | jP                  xr |jS                         xr |tD        u |j(                  d<   | jU                  |||||
|      }|r|j(                  d   |v rv| jW                  |j(                  ||jX                         tZ        |j\                  v r+| j_                  |j(                  ||jB                  |      \  }}| ja                  |j(                  ||       |j"                  D cg c]	  }||vs| }}|jb                  rOte        |jN                  dd      s8|r6| jg                  |||||||||j(                  |||jh                  ||	|       ptj        |j\                  v rg | jl                  |j(                  d   <   |jn                  rtq        |tr              r | jt                  |fi |}||n|}|j(                  j                  d      dk(  r|dz  }|D cg c]  }|d t/        |      d	k(  rd	nd   |  c}|_         | jv                  |g|j&                  i |j(                   |ty        |      z  }` | j{                  ||||||       |S c c}w c c}w )Nr   Fvalidate_by_namer   )r}   r   r   r|   r~   r   r   r   r   r   r   r   r   r   rd   rC   r  subcommandsr   )r  r   rd   metavarrC  r;  rE  rD  r   r  r   r   r  __pydantic_root_model__)r  is_model_suppressedr  r  store_falseno-)>r   r%   r   r&   
issubclassr  r{   r*  r   rp   rg   r   r   r   r   r   r   rw   r   r   rO   r  rr   r   rd   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   rf   _add_parser_submodelsr   r;   r-  r   rh   ri   r  r  r   _add_parser_alias_paths)rM   r}   r|   r  r   r  r  r  r  r  discriminator_valsis_last_discriminatorr  
subparsersr   r~   r   ry   r   r   subcommand_argr  	arg_namesmnon_recursive_sub_modelscontextr   s                              rQ   r  z"CliSettingsSource._add_parser_args  s    J5')

13
  ] 348MdS`Na8b"4#6> 
  	 '+&;&;E&B {	2"J
%++%%#22!%1CU!K ">;;??#5u=#66.. $0A B#22C ""3??3""!$ (I'*';';I'F$%)%5%5c6I6I%JK[%\N+;*<N'<AN)).9?C?T?TN))*;<;QR[;\N))-8<?<ORS<SDYcYoYoN))&1998Ny8Y--f5 &- ,,""/$.<{!;BEcnnBUXYBY
(>(>_c	 -  (  z95  *11  *11#267q9I8J"M#%&6%7r!: #* -=D,<,<Z,w.J]J],waoavav,wN)))-44'#%&)hhZq>->,?@S@S?TTU*V"')&7#- * 
=(T $(#8#8%(XX

6"(4

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

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

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

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

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

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

""&3,?#- / " %
(;(;;ACD**3::f+=>//!%. / @% @(-f5Gzz~~h/=@#u,dmn\`;/Nc$i1n$#O"PQUPV WnCH&D&&wHHSZZH$y/1Jw{	2z 	$$V_j*VginoI ,^>  os   .	W"8W"' W'c                    |rEd|d<   t        |j                  t        t        fd      r|j                  | j                  |d   <   y y y )Nrt   r  Tr   r   )r<   r   ri   r   rN  )rM   rO   r   r   s       rQ   r  z(CliSettingsSource._convert_append_action  sK    'F8)**?*?$eij6@6K6K##F6N3 k rR   c                   |d   dk(  r|j                   D cg c]+  }t        |t              rt        |t        t
        z        r|- }}|s| j                  rt        g}|r|j                         }|t        u r5| j                  dk(  r t        |j                  t              rt        nt        }|t        u r|d= t        |d<   y |t        u r|d= |j                  rdnd|d<   y y y y c c}w )Nr  rV   toggler  r  
store_true)r   rh   r   r  r7   r6   r   r  r   rV   r:   r5   r   )rM   rO   r   r  metameta_bool_flags	bool_flags          rQ   r  z$CliSettingsSource._convert_bool_flag  s    )& '//dD)j?ORb?b.c O 
 #t'>'>#3"4+//1	 00  22h>:jN`N`bfCg ') 
 ,y)'<F8$.0y)8B8J8J}P\F8$ 1  's   0C$c                   d}|d   g}t         |d<   t        j                  |j                         | j                        |d<   |j                         xr |t         u }|j                  d      dk(  r|d= |rdnd|d	<   n|sd
|d	<   |d= |d= ||fS )Nr   r   r   r  r  rt   +*nargs?r  )r(   r{   r   upperr   r  rg   )rM   rO   r   r   r  r  r  r  s           rQ   r  z)CliSettingsSource._convert_positional_arg  s     F^$	-y#22?3H3H3JDL_L_`y !,,.U=DU3U::h8+x %0ccF7O!F7O6N:+%%rR   c           	     F   g }|j                   g|z   D ]s  }|j                  D ]b  }	t        j                  || j                  k(  r| |	 n|j                  |dd       |	 | j                        }
|
vsR|j                  |
       d u | j                  rV| j                  j                         D ]9  \  }}||v st        |t              r|gn|}|j                  fd|D               ; t               }|j                  |j                        }|t!        |j"                  j$                  t&        fd|       |j)                  t+        j,                  d |D                     |sg S | j/                  t&        t1        t3        |                     |j4                  d<   |S )Nr   rC   c              3  ,   K   | ]  }|vs|  y wr   rI   )r   aliasr  s     rQ   r   z3CliSettingsSource._get_arg_names.<locals>.<genexpr>  s     $^ueS]F]U$^s   	T)r   collectc              3  2   K   | ]  }t        |        y wr   )r   )r   tags     rQ   r   z3CliSettingsSource._get_arg_names.<locals>.<genexpr>  s     5Thsm5Ts   r  )r   r   r{   r   r   r   r   rt   r   r   rh   rY   extendr   rg   r   r<   r   r   r   r   r   from_iterabler  r   sortedrO   )rM   ry   r  r  r  r  r  r  prefixr   arg_nametargetaliases
alias_listtagsdiscriminatorss       `           rQ   r  z CliSettingsSource._get_arg_names  s     "	~~&7 		/F /"11(DOO; htf%"NN+<b!DEdVL''	 :-$$X./		/ #'#5#5#;#;#= _Y&.8#.F'GJ$$$^
$^^_
 +//9%&))
"&	 !!%"5"55Tt5T"TU(	$($8$8vnG]A^9_$`CJJy!rR   c                   t        |t              rt        d      i }|d    d|d<   |j                  |d<   |	d   |d<   t	        d |D              |d<   |d   rt        |      d	kD  rt        d
      | j                  rt        |      d	k(  rt        |d         |d<   |t        ur5t        t        |            st        t        |            rDt        ||
      }n7|j                  t        ur|j                  }n|j                  |j                  }|1d| j                   d}|d   t!        | d|d          |d<   n||d<   |d   }| j#                  |      xs |}|r	t$        |d<   |j'                  |d          d|	d<   d|	d<   d|	d<   |s| j(                  rt$        nd|d    d|	d<    | j*                  |fi |} | j,                  |gfd|D        i |	 |j.                  r| | d|j.                   t1               ini }|D ]?  }| j3                  |||| | d|||d	d  D cg c]	  }| | d c}|||||d   u |       A y c c}w )Nz8cannot have nested models in a CliMutuallyExclusiveGroupr   z optionsr  rd   r  c              3  <   K   | ]  }t        |t                y wr   )r  r`   )r   r|   s     rQ   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>  s      E
=BJu78E
s   r  rC   z/cannot use union with CliMutuallyExclusiveGroupz	default: z (undefined)
Fr  r  r   constzset z from JSON string (default: {})r  c              3  *   K   | ]
  } |   y wr   rI   )r   r   r  s     rQ   r   z:CliSettingsSource._add_parser_submodels.<locals>.<genexpr>+  s     )WT[M$*@)Ws   r   rC  )r}   r|   r  r   r  r  r  r  r  r  r  r  )r  r`   r-   rd   r,  r   r   rr   r(   r%   r   r&   rf   r   default_factoryr  r   _is_field_suppressedr  rt   r   r  r  discriminatorr   r  )rM   r}   r|   rw   r  r   r  r  r  rO   r~   r   r   r  r  r  model_group_kwargsdesc_headerr   model_groupr  r   s          `              rQ   r  z'CliSettingsSource._add_parser_submodels  s   $ e67
   Z[[-/)21h&?7#,6,B,B=))/
);:&AD E
FPE
 B
=> @Ac*oXYFY QRR--#j/Q2F0FzRS}0U}- 11d=126KDQ^L_6` 'z B!!):: * 2 2++7 * : : %d&=&=%>lKK!-0<4:k]"M_`mMnLo;p4q"=14?"=1%a."77
CZGZ0<}-)A,'"zww #d&9&9 	!~%FG 	v
 &doofC0BC;b)WY)Wb[abT^TlTl
|O,Aj.F.F-GH#%Prt 	   	E!!%(\/):!<"3!CNqr?S4:,tfA 6S+$7#5&+z"~&=% " 	  Ts   -Ic                &   |r|}|%t        |t              r | j                  |fi |n|}|j                         D ]  \  }}	|| j                  k(  r| | n|j                  |dd       | }
i }t        |d<   d|d<   d|d<   d|d	<   |	d
|d	<   t        | j                  |
<   | j                   |
 g}| j                  |
   j                         D ]  \  }}||c|_
        |_          | j                  |g|i | |j                  |
        y y )Nr   rC   r   zpydantic alias pathr  rt   r  r   r  ri   )rh   ri   r  r   r   r   r  rN  r	  r*  r   rO   r  rt   )rM   r}   r   r  r   r  r  r  r   r   r  rO   r   r  ry   s                  rQ   r  z)CliSettingsSource._add_parser_alias_paths?  sW    G >HPT>U/$//&:E:[`.446 ,e )DOO; "l4&)&../@"aHI$P 
 *,$0y!!6v#+x $*y!=(.F9%48D''1001(<= $ 0 0 : @ @ B 8HC+/(CHcj8"""7<T<V<!!(+%,	 rR   c           	         | j                   st        |      S t        t        |      D cg c]  }|t        d       us| c}      S c c}w r   )r   r   r   r   )rM   objrv   s      rQ   _get_modified_argsz$CliSettingsSource._get_modified_args`  s>    &&C= Xc]VEe4PT:>U%VWWVs
   AAc                    d|v rC|d |j                  d      dz    ||j                  d      dz   d  D cg c]
  }|dk7  s	| c}z   }dj                  |      }|r| d| dS t        |      dk(  r|S d| dS c c}w )NJSONrC   r;  rM  rV  rD  rE  )r   r/  r   )rM   r   obj_qualnamery   r  s        rQ   _metavar_format_choicesz)CliSettingsSource._metavar_format_choicesf  s    T>0$**V,q01DTZI[^_I_IaDb4tSfimsfsS4ttD((4."^1WIQ//!$i1n7BBwir2BB 5us
   
A9A9c           
        t        |      }t        |      r&d|j                  v r|j                  S |j                  S |du ryt	        |t
              rt        |      S t	        |t        j                        st        j                  |      rt        |      S t	        |t        t        t        f      s|j                  }t!        |      }t#        |      r=| j%                  t'        t)        | j*                  | j-                  |                        S t        j.                  |      r7| j%                  t'        t)        t        | j-                  |                        S t1        |t2              rX| j%                  |j4                  j7                         D cg c]%  }t8        j;                  || j<                  dk(        ' c}      S t	        |t              re| j%                  t'        t)        | j*                  | j-                  |                  t?        |d      r|j                        S t        |            S |t        d      u r| j@                  S tC        |      stE        |      r6tG        |dd	      r'| j+                  tI        |      d
   jJ                        S dS t	        |t              r|j                  S t        |      jM                  dd      jM                  dd      S c c}w )z\Pretty metavar representation of a type. Adapts logic from `pydantic._repr.display_as_type`.z<locals>.z...r   r\   )r  Nr  Frootr  ztyping.r   ztyping_extensions.)'rA   r@   r\   rZ   rh   r$   reprtyping
ForwardRefr)   is_typealiastyperY   r/   r0   r   rP   r   r*   r  r   map_metavar_format_recurser  
is_literalr.   r   r   r   r{   r   r   r  r  r%   r&   rf   r?   r   r   )rM   r  originr   s       rQ   r  z)CliSettingsSource._metavar_format_recurseo  s{   s##-1A1A#A3<<WsGWGWWCZ^,9V../>3R3RSV3Ws8O#ndCD--CC6"//S9U9UW[WnWnorWs5t0uvv&&v.//Sd>U>UVY>Z5[0\]] d+//X[XgXgXlXlXnoPT''d.A.AU.JKo  ^,//S55t7N7Ns7STU18n1MS-- 0  SVWZS[ 0   DJ***C $9#$> 3 95A ,,->s-CF-K-V-VW 
 T"###9$$Y3;;<PRTUU% ps   *K&c                D    | j                  |      j                  dd      S )NrF  r;  )r  r   )rM   r  s     rQ   r  z!CliSettingsSource._metavar_format  s     ++C088sCCrR   c                n   |j                   r|j                   nd}|s| j                  |      rt        S |j                         r6|t        d fv r,t
        |j                  vr|dnd}||rd| dnd| dz  }nd| j                   d}t        t        |            st        t        |            rdt        ||       d}n|t        d fvr!t        |      rd| j                  |       d}nt|j                  t        d fvr5t        |j                   |j                        }d||j                  n| d}n+|j"                  d| j                  |j"                         d}t$        |j                  vr||rd	| n|z  }t'        t        | j(                        t*              r|j-                  d
d      S |S )Nr   zifdef: z (z	required)(z
(default: )z(default factory: r'  %z%%)rd   r  r  r  r(   r8   r   r  r%   r   r&   rf   r@   r  r   r=   r   r  r:   r  r  r   r   )	rM   r~   r   r  r  _helpifdefr   	enum_names	            rQ   r  zCliSettingsSource._help_format  s    +5*@*@
&&b$";";J"G!!#:KT9R(R 
(;(;;%2%:	%2eWI.qy=QQ"4#:#:";1=Gd=126KDQ^L_6`&w}j'I&J!L'8$&??LQ^D_.t/C/CM/R.SSTU##,=t+DD89N9NPZPbPbc	&Y=Nz'9'9T]&^^_`++7.t/C/CJD^D^/_.``abZ%8%88%1WIW<+5d4;L;L6M~+^u}}S$'idiirR   c                p    |j                   r|j                   nd}|t        k(  xs t        |j                  v S )Nr   )rd   r  r   )rM   r   r"  s      rQ   r  z&CliSettingsSource._is_field_suppressed  s2    *4*@*@
&&b$K
8K8K(KKrR   c           	        |j                   |j                  fD cg c]G  }t        |t        t        f      r/t        |t              r|nt        t        |j                  d         I c}d   }|j                  dd }|s|j                  |g        ||   }nU|j                  |i        ||   }	|d d D ]  }
|	j                  |
i        |	|
   }	 |	j                  |d   g        |	|d      }t        t        |j                  d         }|j                  dgt        |dz   t        |      z
  d      z         |||<   ||   S c c}w )Nr   rC   rC  r   )r  r   rh   r   r   r   choicespath
setdefaultr   r  r+  r   )rM   r  valuer   alias_path_only_defaultsr  
alias_pathalias_nested_pathsalias_defaultcurrent_pathnested_pathalias_path_indexs               rQ   _update_alias_path_only_defaultz1CliSettingsSource._update_alias_path_only_default  se   
 %**J,G,GH!
%)\!:;  y1EtIu}}UVGW7XX!
 	!
 )3"(=!$//"=4X>M$//"=3H=L1#26 9''R8+K89 ##$6r$:B?();B)?@MZ__R%89bTC(81(<s=?Q(QST$UUV*/&''11/!
s   AE c                   |g}t        |t              rt        |t              r]|dk(  r.dj                  d t	        j
                  |      D              g}|S |dk(  r#t	        j
                  |      D cg c]  }|  }}|S t        |t              r?|dk(  r:t	        j
                  |      j                         D cg c]  \  }}| d|  }}}|S c c}w c c}}w )Nlazyr;  c              3  "   K   | ]  }|  	 y wr   rI   )r   vs     rQ   r   z9CliSettingsSource._coerce_value_styles.<locals>.<genexpr>  s     &I!!v&Is   argparseenvr|  )rh   rY   r   r/  rj  rk  ri   r   )rM   r  r*  
list_style
dict_styler   r6  ks           rQ   _coerce_value_stylesz&CliSettingsSource._coerce_value_styles  s     eS!-.'!hh&Itzz%7H&IIJF   :-.2jj.?@f@F@  M40&59ZZ5F5L5L5NOTQ1QCjOFO	 A Ps   3
C<Cc                >    |s| d   | d   z   n
| d   | d   z   | d   z   S )Noptional
positional
subcommandrI   )serialized_argspositionals_firsts     rQ   _flatten_serialized_argsz*CliSettingsSource._flatten_serialized_args  s?     % J'/,*GG .1LLL)	* 	*rR   c                   i }g }g }g }	t        |rt        |      n| j                        j                         D ]  \  }
}t	        ||
      }|j
                  |k(  r#t        |j                  v r|8t        t        | j                  |   j                                     }|j                  rU|	j                  |j                  t        |                   | j                  ||||d      }|	| j!                  ||      z  }	t#        t        |            st%        t        |            r0| j                  ||||d      }||d   z  }||d   z  }|	|d   z  }	 t'        j(                  d|j*                        }|r|j-                         nd\  }}t/        |t0        t2        t4        f      rt7        j8                  |      n
t;        |      }|j<                  r| j?                  ||||      }t@        |j                  v rht/        |t2              r|n|gD ]N  }t/        |t0        t2        t4        f      rt7        j8                  |      n
t;        |      }|j                  |       P ,|jB                  jE                  d      tF        k(  r|d	u r
|d
k(  r|dz  }| jI                  ||||      D ]M  }|j                  | |        |jB                  jE                  d      tF        ddfvs=|j                  |       O  |D cg c])  }t/        |t:              st7        j8                  |      n|+ c}|D cg c])  }t/        |t:              st7        j8                  |      n|+ c}|	dS c c}w c c}w )NT)r9  r:  rB  _is_submodelr>  r?  r@  z(-*)(.+))r   r   r  Fz--r  )r9  r:  r  r  )r>  r?  r@  )%r?   r   r  r   rf   r   r9   r   r.  rG  r*  r   r   rt   r   _serialized_argsrC  r%   r&   r  r  r   groupsrh   ri   r   r   rj  rl  rY   r   r2  r8   rO   rg   r   r<  )rM   r|   r9  r:  rB  rE  r+  r  r  r  r~   r   r  ry   sub_argsr  
flag_charsr  r*  s                      rQ   rF  z"CliSettingsSource._serialized_args  s]    46 @BBD%'&7|UY]YjYj&k&q&q&s :	0"J
#E:6M!!]2!4!449NtD,,Z8??ABCC""&&s';';D<O'PQ00!))&7!% 1   4#@#@K\#]]d=126KDQ^L_6`00!))&7!% 1  *!558L#998L#99hh{C,B,BCG7>7>>#3H J-7dTWGX-Y

=)_bcp_q  %% <<XujZrs J$7$77.8.M]TaSb 2E1;ED$PSCT1UDJJu-[^_d[eE#**512  zz~~h'+@@]V[E[`jnr`re#
22=%T^ku2v 0$$
|H:%>? ::>>(+4I<Yf3gg!((/0k:	0z booX]*UC2HE*eSocrsZ_Juc4J4::e,PUUs)
 	
oss   .M)5.M.)2r  ztype[BaseSettings]r   r   r  z)bool | list[str] | tuple[str, ...] | Noner  r   r   r   r   r   r   r   r   r   rN   r   r   r   r   r   r   z'bool | Literal['dual', 'toggle'] | Noner   r   r   r   r   z$Mapping[str, str | list[str]] | Noner   r   r   r   r   Callable[..., Any] | Noner   rJ  r   rJ  r  rJ  r  rJ  r  rJ  r   r   rW   rX   )rW   r   )r   z"list[str] | tuple[str, ...] | boolrW   CliSettingsSource[T])r  z,Namespace | SimpleNamespace | dict[str, Any]rW   rK  )r   z)list[str] | tuple[str, ...] | bool | Noner  ?Namespace | SimpleNamespace | dict[str, list[str] | str] | NonerW   z%dict[str, Any] | CliSettingsSource[T])rW   zMapping[str, str | None])r  rL  rW   z/Mapping[str, str | None] | CliSettingsSource[T])r  dict[str, list[str] | str]rW   r   )r  rM  r~   rY   r6  r   rW   rV   )rO  r   r~   rY   rW   ztuple[type | None, type | None])rZ  r   r~   rY   rW   rY   )rO  r   r~   rY   rW   rY   )r`  rY   rZ  r   rm  rV   rW   rY   )r`  rY   rZ  r   rW   rY   )r`  rY   rZ  r   rP  ztype[Any] | NonerW   rY   )r|   r   r~   rY   r   r'   rW   rX   )r|   r   rW   zlist[tuple[str, FieldInfo]])rW   r   )
r  rJ  r  rY   r   r   rO   r   rW   Callable[..., Any])r   rJ  rW   rN  )r   r   r   rJ  r   rJ  r   rJ  r  rJ  r  rJ  r  rJ  r   r   rW   rX   )rW   rX   )r}   r   r|   r   r  r   r   rY   r  rY   r  r   r  r   r  r   r  rV   r  dict[str, set[Any]]r  rV   r  set[type[BaseModel]] | NonerW   r   )rO   r   r   r'   r   rV   rW   rX   )rO   r   r   r'   r  r   rW   rX   )
rO   r   r   r'   r   rY   r  r   rW   ztuple[list[str], str])ry   r{   r  rY   r  r   r  r   r  rO  r  rV   rW   r   r   ) r}   r   r|   r   rw   r   r  r   r   rY   r  rY   r  rY   r  r   rO   r   r~   rY   r   r'   r   r   r  r   r  rV   r  rP  rW   rX   )r}   r   r   r   r  r   r   rY   r  rY   r  r   rW   rX   )r  r   rW   r   )r   r   r  r   rW   rY   )r  r   rW   rY   )
r~   rY   r   r'   r  r   r  rV   rW   rY   )r   r'   rW   rV   )
r  rY   r*  r   r   r'   r+  r   rW   zlist[Any] | dict[str, Any])rj  rj  )
r  r   r*  z str | list[Any] | dict[str, Any]r9  #Literal['json', 'argparse', 'lazy']r:  Literal['json', 'env']rW   z&list[str | list[Any] | dict[str, Any]])rA  dict[str, list[str]]rB  rV   rW   r   )rj  rj  FF)r|   r4   r9  rQ  r:  rR  rB  rV   rE  rV   rW   rS  )3rZ   r[   r\   rn   r   add_argumentr  r	   
add_parseradd_subparsersformat_helpr   rK   r   r  r  r)  r=  rR  rd  r>  rg  rh  ri  r  r  propertyr   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r2  r<  staticmethodrC  rF  r]   r^   s   @rQ   r   r   -  s   0j %)DH)-*.&*,059)-!%+/FJ/3CG>B&*7;9G9T9T?M?`?`7H7S7S;I;X;X8F8R8R:3A`(A` "A` B	A`
 'A` (A` $A` *A` (3A` 'A` A` )A` DA` "-A` AA`  <!A`" $#A`$ %A`& 5'A`( 7)A`* $=+A`, 5-A`.  9/A`0 61A`2 3A`4 
5A`F - -   & ;?W[	& 8& U	&
 
/&& = = " ae3]3	83j$>5CFMV	.)"L<+TZ
F$:o&+[Z ! !$!6$!EH$!QT$!`c$!	$!L 0 :H9T9T?M?`?`7H7S7S;I;X;X8F8R8R:3c3c 53c 7	3c
 $=3c 53c  93c 63c 3c 
3cj6 %*24&*26[[ [ 	[
 [ [ [ "[ [ "[ 0[  $[ 0[ 
[zL]0&$&2;&NQ&be&	&*)) ) "	)
 ) 0)  $) 
)v 37!TT T *	T
 T T T T T T T T %T T "T  0!T" 
#Tl,, /, 	,
 , , , 
,BXC)VVDjj+4jEHj_cj	j6L22$'25>2Zh2	#2@ ;A-3 0 8	
 + 
0& *-** 
* * ;A-3"'"L
L
 8L
 +	L

  L
 L
 
L
rR   r   )ro   r   rW   r   )rv   r   rw   r   rW   rX   )prn   
__future__r   _annotationsr  rj  r  r  r  r  r7  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   r8  rD   pydantic_settings.mainrE   rG   r`   rr   ru   r{   r   CliSubCommandCliPositionalArgrV   r   r  r  r  r  r  CliSuppressr   rY   CliUnknownArgsr   rI   rR   rQ   <module>rr     s   - 2   	  
   $ 7 7  %   !    Y X 3 4 6 % + , ; ' F F     #3N 		 	B1U
i U
p CL!d(N23Q 112 ~T2L*::;L*::;,67l23<(49eB&7(RSU
)71: U
rR   