
    df+,                       d dl mZ d dlZd dlmZmZ d dlmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZmZ ddlmZmZmZmZ dd	lmZ dd
lmZ eseZerddlmZ dZ G d d      Z G d d      Z  ed#i dddddddddd dddddddddddddddddd d!dd"d#d$d d%dd&dd'd(d)d*d+d,d-dd.dd/d0d1dd2dd3dd4dd5dd6dd7dd8dZ!d=d9Z" e#ejH                  jK                               Z&h d:Z'ddddd"dddd%d-d;
Z(d>d<Z)y)?    )annotationsN)contextmanagernullcontext)TYPE_CHECKINGAnyCallableContextManagerIteratorcast)core_schema)LiteralSelf   )
ConfigDictExtraValuesJsonEncoderJsonSchemaExtraCallable)PydanticUserError)PydanticDeprecatedSince20)GenerateSchemazGSupport for class-based `config` is deprecated, use ConfigDict instead.c                     e Zd ZU dZdZ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<   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 <   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/<   d0ed1<   ded2<   d3ed4<   ded5<   d6d7d>d8Zed?d9       Ze	sd@d:Z
dAd;Zd< Zy=)BConfigWrapperzIInternal wrapper for Config which exposes ConfigDict items as attributes.)config_dictr   r   z
str | Nonetitleboolstr_to_lowerstr_to_upperstr_strip_whitespaceintstr_min_lengthz
int | Nonestr_max_lengthzExtraValues | Noneextrafrozenpopulate_by_nameuse_enum_valuesvalidate_assignmentarbitrary_types_allowedfrom_attributesloc_by_aliaszCallable[[str], str] | Nonealias_generatorztuple[type, ...]ignored_typesallow_inf_nanz2dict[str, object] | JsonSchemaExtraCallable | Nonejson_schema_extraz&dict[type[object], JsonEncoder] | Nonejson_encodersstrictz0Literal['always', 'never', 'subclass-instances']revalidate_instanceszLiteral['iso8601', 'float']ser_json_timedeltazLiteral['utf8', 'base64']ser_json_bytesvalidate_defaultvalidate_returnztuple[str, ...]protected_namespaceshide_input_in_errorsdefer_buildzdict[str, object] | Noneplugin_settingsztype[GenerateSchema] | Noneschema_generator+json_schema_serialization_defaults_requiredz,Literal['validation', 'serialization', None]json_schema_mode_overridecoerce_numbers_to_strTcheckc               T    |rt        |      | _        y t        t        |      | _        y N)prepare_configr   r   r   )selfconfigr>   s      S/home/api-vastappli/venv/lib/python3.12/site-packages/pydantic/_internal/_config.py__init__zConfigWrapper.__init__T   s!    -f5D#J7D    c                   t               }|D ]1  }t        |dd      }|s|j                  |j                                3 |j	                  d      }|j	                  d      }|r|rt        dd      |xs t        |      }	|	|j                  |	       t        |j                               D ]  }
|
t        v s|j                  |
      ||
<   !  | |      S )a  Build a new `ConfigWrapper` instance for a `BaseModel`.

        The config wrapper built based on (in descending order of priority):
        - options from `kwargs`
        - options from the `namespace`
        - options from the base classes (`bases`)

        Args:
            bases: A tuple of base classes.
            namespace: The namespace of the class being created.
            kwargs: The kwargs passed to the class being created.

        Returns:
            A `ConfigWrapper` instance for `BaseModel`.
        model_configNConfigz3"Config" and "model_config" cannot be used togetherzconfig-both)code)r   getattrupdatecopygetr   rA   listkeysconfig_keyspop)clsbases	namespacekwargs
config_newbaserC   config_class_from_namespaceconfig_dict_from_namespaceconfig_from_namespaceks              rD   	for_modelzConfigWrapper.for_modelZ   s    "  \
 	1DT>48F!!&++-0	1
 '0mmH&=#%.]]>%B"&+E#$Y`mnn : inMh>i ,34fkkm$ 	.AK &

1
1	. :rF   c                    	 | j                   |   S # t        $ r) 	 t        |   cY S # t        $ r t        d|      d w xY ww xY w)NzConfig has no attribute )r   KeyErrorconfig_defaultsAttributeError)rB   names     rD   __getattr__zConfigWrapper.__getattr__   sb    X''-- XX*400 X(+CD8)LMSWWXXs    	A&A?Ac                T   dd}t        j                  di  |di d| j                  j                  d      xs |xr |j                  d| j                  j                  d      d| j                  j                  d      d| j                  j                  d      d| j                  j                  d      d| j                  j                  d      d	| j                  j                  d	      d
| j                  j                  d
      d| j                  j                  d      d| j                  j                  d      d| j                  j                  d      d| j                  j                  d      d| j                  j                  d      d| j                  j                  d      d| j                  j                  d      d| j                  j                  d      d| j                  j                  d      d| j                  j                  d      }|S )a  Create a pydantic-core config, `obj` is just used to populate `title` if not set in config.

        Pass `obj=None` if you do not want to attempt to infer the `title`.

        We don't use getattr here since we don't want to populate with defaults.

        Args:
            obj: An object used to populate `title` if not set in config.

        Returns:
            A `CoreConfig` object created from config.
        c                 \    | j                         D ci c]  \  }}|	|| c}}S c c}}w r@   )items)rV   r\   vs      rD   dict_not_nonez0ConfigWrapper.core_config.<locals>.dict_not_none   s(    %+\\^ETQq}AqDEEEs   
((r   extra_fields_behaviorr"   r,   r$   r   r   r   r/   r1   r2   r(   r)   r0   r3   r!   r    r6   r<   )rV   r   returnr    )r   
CoreConfigr   rN   __name__)rB   objrh   core_configs       rD   ro   zConfigWrapper.core_config   s+   	F ",, 
 &&**73M8L&*&6&6&:&:7&C #..22?C "&!1!1!5!56H!I	
 &*%5%5%9%9:P%Q "--11.A "--11.A ''++H5 $(#3#3#7#78L#M  $//334DE !% 0 0 4 45F G "--11.A &*%5%5%9%9:P%Q "&!1!1!5!56H!I  $//334DE   $//334DE!" &*%5%5%9%9:P%Q#$ '+&6&6&:&:;R&S%
, rF   c                n    dj                  d | j                  j                         D              }d| dS )Nz, c              3  0   K   | ]  \  }}| d |  yw)=Nrk   ).0r\   rg   s      rD   	<genexpr>z)ConfigWrapper.__repr__.<locals>.<genexpr>   s     Htq!1QElHs   zConfigWrapper())joinr   rf   )rB   cs     rD   __repr__zConfigWrapper.__repr__   s4    IIHt/?/?/E/E/GHHs!$$rF   N)rC   .ConfigDict | dict[str, Any] | type[Any] | Noner>   r   )rT   ztuple[type[Any], ...]rU   dict[str, Any]rV   rz   rj   r   )rb   strrj   r   )rn   r   rj   zcore_schema.CoreConfig)rm   
__module____qualname____doc__	__slots____annotations__rE   classmethodr]   r   rc   ro   rx   rk   rF   rD   r   r   #   s   S I L!! 00##II99 LJJ33--))--11155KK`d 8 % %P 	X'R%rF   r   c                  2    e Zd ZdZddZedd       ZddZy)	ConfigWrapperStackz%A stack of `ConfigWrapper` instances.c                    |g| _         y r@   _config_wrapper_stack)rB   config_wrappers     rD   rE   zConfigWrapperStack.__init__   s    ;I:J"rF   c                     | j                   d   S )Nr   )rB   s    rD   tailzConfigWrapperStack.tail   s    ))"--rF   c                     
t               S t        t              st        d      t        d fd       } |       S )NFr=   c               3     K   j                   j                          	 d  j                   j                          y # j                   j                          w xY wwr@   )r   appendrR   )r   rB   s   rD   _context_managerz1ConfigWrapperStack.push.<locals>._context_manager   sG     &&--n=1**..0**..0s   A? AAA)rj   zIterator[None])r   
isinstancer   r   )rB   r   r   s   `` rD   pushzConfigWrapperStack.push   sD    != .-8*>GN		1 
	1  !!rF   N)r   r   )rj   r   )r   z!ConfigWrapper | ConfigDict | Nonerj   zContextManager[None])rm   r|   r}   r~   rE   propertyr   r   rk   rF   rD   r   r      s$    /K . ."rF   r   r   r   Fr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   Tr*   r+   rk   r,   r-   r/   r0   neverr1   iso8601r2   utf8r3   r4   r5   )model_r6   r.   r7   r8   r9   r:   r;   r<   c                $   | 
t               S t        | t              sSt        j                  t
        t               t        |       D ci c]!  }|j                  d      r|t        | |      # } }t        t         |       }t        |       |S c c}w )zCreate a `ConfigDict` instance from an existing dict, a class (e.g. old class-based config) or None.

    Args:
        config: The input config.

    Returns:
        A ConfigDict object created from config.
    __)r   r   dictwarningswarnDEPRECATION_MESSAGEDeprecationWarningdir
startswithrK   r   check_deprecated)rC   r\   r   s      rD   rA   rA      sz     ~|fd#)+=>14VWAALLQUDV!WVQ''WWz6*K[!	 Xs   BB>
   fields
json_dumps
json_loadsgetter_dictsmart_unionallow_mutationpost_init_callerror_msg_templatescopy_on_model_validationunderscore_attrs_are_private)
allow_population_by_field_nameanystr_loweranystr_strip_whitespaceanystr_upperkeep_untouchedmax_anystr_lengthmin_anystr_lengthorm_modeschema_extravalidate_allc                   t         | j                         z  }t        j                         | j                         z  }|s|rt        |      D ci c]  }|t        |    }}|j	                         D cg c]  \  }}d|d| }}}t        |      D cg c]  }d|d
 }}dj                  dg|z   |z         }t        j                  |t               yyc c}w c c}}w c c}w )zjCheck for deprecated config keys and warn the user.

    Args:
        config_dict: The input config.
    z* z has been renamed to z has been removed
z%Valid config keys have changed in V2:N)	V2_REMOVED_KEYSrP   V2_RENAMED_KEYSsortedrf   rv   r   r   UserWarning)	r   deprecated_removed_keysdeprecated_renamed_keysr\   	renamingsrg   renamed_bulletsremoved_bulletsmessages	            rD   r   r   0  s     .0@0@0BB-224{7G7G7II"94:;R4STqQ**T	TLUOOL]^DAqRu$9!?^^@FG^@_`1Ru$56``))DEWZiijg{+ #:T^`s   C4CC$)rC   ry   rj   r   )r   r   rj   None)*
__future__r   _annotationsr   
contextlibr   r   typingr   r   r   r	   r
   r   pydantic_corer   typing_extensionsr   r   rC   r   r   r   r   errorsr   r   r   #_internal._schema_generation_sharedr   r   r   r   r`   rA   setr   rP   rQ   r   r   r   rk   rF   rD   <module>r      s   2  2  &
 S R & 0 3D_ V% V%r" "8  #
## # 	#
 # # # # # # # "# # #  !#" ##$ %#& '#( )#* !+#, !-#. /#0 1#2 3#4 %5#6 7#8 9#: ;#< =#> ?#@ 16A#B #C#D  E#L* *,,1134 '9"5"%))!'&,rF   