U
    h4                  	   @  s  d dl mZ d dl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Zd dlmZ ddlmZmZ ed	Zed
ejdZejdZerdddddZdddddZdddddZdddddZdddd d!Z ddd"d#d$Z!ddd"d%d&Z"nXerFd d'l#mZmZm Z m"Z"m!Z! d d(l$mZmZ n$dd)l%mZmZm Z mZm"Z"mZm!Z! er~d d*lm&Z& nerdZ&nd d*lm&Z& d+d,d
d-d.d/Z'd0dd1d2d3Z(d0d4d1d5d6Z)d0d4d1d7d8Z*d9d4d:d;d<Z+d9d=d:d>d?Z,d@dAd
dd
dBdCdDZ-ddEdFdGdHdIdJdKZ.dd@d@dLdMdNdFdOddddPdQdRdSdTZ/d+d4d
dUdVdWZ0d+dXd
dUdYdZZ1d+dQd:d[d\Z2erG d]d^ d^ejZ3n:erd dl4ZG d_d^ d^ej5j3ejZ3nG d`d^ d^ejZ3ere6Z7G dadb dbee Z8nd dcl9m7Z7 e7Z8dS )d    )annotations)TYPE_CHECKINGAnyUnionGenericTypeVarCallablecastoverload)datedatetime)SelfLiteralN)	FieldInfo   )IncExStrBytesIntFloat_T_ModelT)boundz1.zdate | StrBytesIntFloatr   )valuereturnc                 C  s   d S N r   r   r   2/tmp/pip-unpacked-wheel-dms8d3uv/openai/_compat.py
parse_date   s    r   z!Union[datetime, StrBytesIntFloat]r   c                 C  s   d S r   r   r   r   r   r   parse_datetime   s    r   	type[Any]ztuple[Any, ...])tr   c                 C  s   d S r   r   r   r   r   r   get_args   s    r!   type[Any] | Nonebool)tpr   c                 C  s   d S r   r   )r$   r   r   r   is_union!   s    r%   c                 C  s   d S r   r   r    r   r   r   
get_origin$   s    r&   )type_r   c                 C  s   d S r   r   r'   r   r   r   is_literal_type'   s    r)   c                 C  s   d S r   r   r(   r   r   r   is_typeddict*   s    r*   )r!   r%   r&   r*   r)   )r   r   )r!   r%   r&   r   r*   r   r)   )
ConfigDictztype[_ModelT]object)modelr   r   c                 C  s"   t rtt| |S | |S d S r   )PYDANTIC_V1r	   r   	parse_objmodel_validate)r-   r   r   r   r   r/   P   s    r/   r   )fieldr   c                 C  s   t r
| jS |  S r   )r.   requiredZis_requiredr1   r   r   r   field_is_requiredW   s    r4   r   c                 C  s,   |   }tr|S ddlm} ||kr(d S |S )Nr   )PydanticUndefined)get_defaultr.   Zpydantic_corer5   )r1   r   r5   r   r   r   field_get_default]   s    r7   c                 C  s   t r
| jS | jS r   )r.   Zouter_type_
annotationr3   r   r   r   field_outer_typeh   s    r9   ztype[pydantic.BaseModel])r-   r   c                 C  s   t r
| jS | jS r   )r.   Z
__config__Zmodel_configr-   r   r   r   get_model_confign   s    r;   zdict[str, FieldInfo]c                 C  s   t r
| jS | jS r   )r.   Z
__fields__Zmodel_fieldsr:   r   r   r   get_model_fieldst   s    r<   Fdeep)r-   r>   r   c                C  s   t r| j|dS | j|dS )Nr=   )r.   copy
model_copy)r-   r>   r   r   r   r@   z   s    r@   indentzpydantic.BaseModelz
int | Nonestr)r-   rB   r   c                C  s   t r| j|dS | j|dS )NrA   )r.   jsonZmodel_dump_json)r-   rB   r   r   r   
model_json   s    rE   Tpython)excludeexclude_unsetexclude_defaultswarningsmodezIncEx | NonezLiteral[('json', 'python')]dict[str, Any])r-   rG   rH   rI   rJ   rK   r   c                C  s@   t rt| dr*| j||||t r"dn|dS td| j|||dS )N
model_dumpT)rK   rG   rH   rI   rJ   rL   )rG   rH   rI   )r.   hasattrrM   r	   dict)r-   rG   rH   rI   rJ   rK   r   r   r   rM      s     	
rM   )r-   datar   c                 C  s   t r| |S | |S r   )r.   r/   r0   r-   rP   r   r   r   model_parse   s    
rR   zstr | bytesc                 C  s   t r| |S | |S r   )r.   Z	parse_rawZmodel_validate_jsonrQ   r   r   r   model_parse_json   s    
rS   c                 C  s   t r|  S |  S r   )r.   Zschemamodel_json_schemar:   r   r   r   rT      s    rT   c                   @  s   e Zd ZdS GenericModelN__name__
__module____qualname__r   r   r   r   rV      s    rV   c                   @  s   e Zd ZdS rU   rW   r   r   r   r   rV      s    c                   @  s   e Zd ZdS rU   rW   r   r   r   r   rV      s    c                   @  s   e Zd ZU ded< ded< dddddZeddd
ddddZeddd
ddddZddd
ddddZddddddZddddddZd	S )typed_cached_propertyzCallable[[Any], _T]funcz
str | NoneattrnameNone)r\   r   c                 C  s   d S r   r   )selfr\   r   r   r   __init__       ztyped_cached_property.__init__Nr"   r   )instanceownerr   c                 C  s   d S r   r   r_   rb   rc   r   r   r   __get__   s    ztyped_cached_property.__get__r,   r   c                 C  s   d S r   r   rd   r   r   r   re      s    z	_T | Selfc                 C  s
   t  d S r   )NotImplementedErrorrd   r   r   r   re      s    r   rC   )rc   namer   c                 C  s   d S r   r   )r_   rc   rg   r   r   r   __set_name__   ra   z"typed_cached_property.__set_name__)rb   r   r   c                 C  s   d S r   r   )r_   rb   r   r   r   r   __set__   ra   ztyped_cached_property.__set__)N)N)N)	rX   rY   rZ   __annotations__r`   r
   re   rh   ri   r   r   r   r   r[      s   
r[   )cached_property):
__future__r   typingr   r   r   r   r   r   r	   r
   r   r   Ztyping_extensionsr   r   ZpydanticZpydantic.fieldsr   _typesr   r   r   Z	BaseModelr   VERSION
startswithr.   r   r   r!   r%   r&   r)   r*   Zpydantic.typingZpydantic.datetime_parse_utilsr+   r/   r4   r7   r9   r;   r<   r@   rE   rM   rR   rS   rT   rV   Zpydantic.genericsZgenericspropertyrk   r[   	functoolsr   r   r   r   <module>   sl   ($	
