o
    h                     @   sl  d dl 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 d dlmZmZ d dlmZmZ d dlmZ d dlmZ er]d dlmZ d d	lmZ d d
lmZ ed ZG dd deZned ZdZG dd deeZ esd dlm!Z! G dd de!ddZ"ne#Z"G dd dZ$dee"ee% df dee$ fddZ&dddddeddfd d!Z'dee$ d"eddfd#d$Z(dS )%    N)Enum)	TYPE_CHECKINGAnyCallableDict
ForwardRefOptionalTupleTypeUnion)LiteralProtocol)AnyArgTCallableAnyCallable)
GetterDict)compiled)overload)
ModelField)	BaseModel
BaseConfigc                   @   sP   e Zd Zedeeef ddfddZedeeef dee	 ddfddZdS )SchemaExtraCallableschemareturnNc                 C      d S N )selfr   r   r   f/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/pydantic/v1/config.py__call__      zSchemaExtraCallable.__call__model_classc                 C   r   r   r   )r   r   r    r   r   r   r      r   )
__name__
__module____qualname__r   r   strr   r   r
   r   r   r   r   r   r      s
    (r   ).N)r   
ConfigDict
get_configExtrainherit_configprepare_configc                   @   s   e Zd ZdZdZdZdS )r'   allowignoreforbidN)r!   r"   r#   r*   r+   r,   r   r   r   r   r'   "   s    r'   )	TypedDictc                   @   sZ  e Zd ZU ee ed< eed< eed< eed< ee ed< eed< eed< eed< eed	< eed
< eed< e	ee
ee	eef f f ed< eed< e	eef ed< eed< eed< ee ed< eeegef  ed< eedf ed< e
e	eef df ed< eegef ed< ee ed< e	ee ef ed< eed< eed< ed ed< ed ed< d S )!r%   titleanystr_loweranystr_strip_whitespacemin_anystr_lengthmax_anystr_lengthvalidate_allextraallow_mutationfrozenallow_population_by_field_nameuse_enum_valuesfieldsvalidate_assignmenterror_msg_templatesarbitrary_types_allowedorm_modegetter_dictalias_generator.keep_untouchedr   schema_extra
json_loads
json_dumpsjson_encodersunderscore_attrs_are_privateallow_inf_nannonedeepshallowcopy_on_model_validationbefore_validationafter_validationpost_init_callN)r!   r"   r#   r   r$   __annotations__boolintr'   r   r   r
   r   r   r	   typeobjectr   r   r   r   r   r   r   r%   .   s8   
  r%   F)totalc                   @   s  e Zd ZU dZee ed< dZeed< dZ	eed< dZ
eed< dZeed< dZee ed	< dZeed
< ejZeed< dZeed< dZeed< dZeed< dZeed< i Zeeeeeeef f f ed< dZeed< i Zeeef ed< dZeed< dZeed< eZee ed< dZ ee!egef  ed< dZ"e#e$df ed< i Z%eeee&f df ed< e'j(Z)e!ege&f ed< e'j*Z+e!def ed< i Z,eeee& ee-f e.f ed< dZ/eed < dZ0eed!< d"Z1e2d# ed$< dZ3eed%< d&Z4e2d' ed(< e5d)ed*eee&f fd+d,Z6e5d1d/d0Z7dS )2r   Nr.   Fr/   anystr_upperr0   r   r1   r2   r3   r4   Tr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r   .r@   r   rA   rB   rC   rD   rE   rF   rJ   rG   rK   smart_unionrM   rL   rO   namer   c                 C   s   | j |}t|trd|i}n
t|tr|}ni }d|v r$|dd |dddkrH| jrH| |}t|tsAtd|j |j	|dd |S )z]
        Get properties of FieldInfo from the `fields` property of the config class.
        aliasalias_priority   r      z,Config.alias_generator must return str, not )rY   rZ   )
r9   get
isinstancer$   dict
setdefaultr?   	TypeError	__class__update)clsrX   fields_value
field_inforY   r   r   r   get_field_infou   s   




zBaseConfig.get_field_infofieldr   c                 C   s   dS )zP
        Optional hook to check or modify fields during model creation.
        Nr   )rd   rh   r   r   r   prepare_field   s   zBaseConfig.prepare_field)rh   r   r   N)8r!   r"   r#   r.   r   r$   rP   r/   rQ   rV   r0   r1   rR   r2   r3   r'   r+   r4   r5   r6   r7   r8   r9   r   r   r:   r;   r<   r=   r   r>   r
   r?   r   r@   r	   rS   rA   r   jsonloadsrB   dumpsrC   rD   r   r   rE   rF   rK   r   rW   rO   classmethodrg   ri   r   r   r   r   r   P   sD   
 $"configr   c                    sb    d u rt S t tr n
 fddt D }G dd dt }| D ]
\}}t||| q$|S )Nc                    s"   i | ]}| d s|t |qS )__)
startswithgetattr).0krn   r   r   
<dictcomp>   s   " zget_config.<locals>.<dictcomp>c                   @   s   e Zd ZdS )zget_config.<locals>.ConfigN)r!   r"   r#   r   r   r   r   Config   s    rv   )r   r^   r_   diritemssetattr)rn   config_dictrv   rs   vr   rt   r   r&      s   r&   self_config
ConfigTypeparent_config	namespacec                 K   s\   | s|f}n| |kr| f}n| |f}i t |di t | di |di |d< td||S )NrD   rv   )rq   r]   rS   )r|   r~   r   base_classesr   r   r   r(      s   


r(   cls_namec              	   C   sJ   t | jts#z	t| j| _W d S  ty"   td| d| j dw d S )N"z": z! is not a valid value for "extra")r^   r4   r'   
ValueError)rn   r   r   r   r   r)      s   r)   ))rj   enumr   typingr   r   r   r   r   r   r	   r
   r   typing_extensionsr   r   pydantic.v1.typingr   r   pydantic.v1.utilsr   pydantic.v1.versionr   r   pydantic.v1.fieldsr   pydantic.v1.mainr   r}   r   __all__r$   r'   r-   r%   r_   r   rT   r&   r(   r)   r   r   r   r   <module>   s0    ,
	$F