o
    SDio                     @   s  d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	m
Z
 d dl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 ed
ZG dd dZG dd dZeG dd dZeG dd dZeG dd deZeG dd deeZeG dd deZeddde de de!ddfd d!Z"ed"e#d#e$e# ddfd$d!Z"	d:ddd%e	e e#f d&e	e$e# de f de de!ddf
d'd!Z"eG d(d) d)eZ%eG d*d+ d+ee%Z&eG d,d- d-e%Z'ed.dd/de d0e d1e!de!ddf
d2d3Z(ed.d4d"e#d#e$e# d1e!ddfd5d3Z(	d:d.dd/d%e	e e#f d&e	e$e# e df de d1e!de!ddfd6d3Z(d%e	e e#f d&e	e$e# e df de)e d7f ddfd8d9Z*dS );    N)Callable)	dataclassfield)ClassVarUnioncast)RequestResponse)MutableHeaders)Any	ParamSpecoverload)same_definition_as_in)-_validate_that_strings_are_valid_http_methods_Pc                       s^   e Zd ZdZdedef fddZedee	e	f fddZ
edee	e	f fd	d
Z  ZS )RequestInfo)_cookies_query_params_requestbodyheadersrequestr   c                    s8   t    || _|j | _|j| _|jj| _	|| _
d S N)super__init__r   r   mutablecopycookiesr   query_params_dictr   r   )selfr   r   	__class__ N/var/www/Datamplify/venv/lib/python3.10/site-packages/cadwyn/structure/data.pyr      s   


zRequestInfo.__init__returnc                 C      | j S r   )r   r   r"   r"   r#   r         zRequestInfo.cookiesc                 C   r%   r   )r   r&   r"   r"   r#   r   !   r'   zRequestInfo.query_params)__name__
__module____qualname__	__slots__r   r   r   propertydictstrr   r   __classcell__r"   r"   r    r#   r      s     r   c                       s   e Zd ZdZdedef fddZedefddZ	e	j
d	efd
dZ	edefddZeejdedefddZeejdedefddZ  ZS )ResponseInfo)	_responser   responser   c                    s   t    || _|| _d S r   )r   r   r   r1   )r   r2   r   r    r"   r#   r   *   s   

zResponseInfo.__init__r$   c                 C      | j jS r   r1   status_coder&   r"   r"   r#   r5   /      zResponseInfo.status_codevaluec                 C   s   || j _d S r   r4   )r   r7   r"   r"   r#   r5   3   s   c                 C   r3   r   )r1   r   r&   r"   r"   r#   r   7   r6   zResponseInfo.headersargskwargsc                 O      | j j|i |S r   )r1   
set_cookier   r8   r9   r"   r"   r#   r;   ;      zResponseInfo.set_cookiec                 O   r:   r   )r1   delete_cookier<   r"   r"   r#   r>   ?   r=   zResponseInfo.delete_cookie)r(   r)   r*   r+   r	   r   r   r,   intr5   setterr
   r   r   r;   r>   r/   r"   r"   r    r#   r0   '   s    r0   c                   @   sr   e Zd ZU eegdf ed< eddZeed< e	e
 ed< dd Zded	e
fd
dZdeeef ddfddZdS )_AlterDataInstructionNtransformerF)initowner_payload_arg_namec                 C   sJ   t | j}t|j| jgkrtd| jj d| j t	| | j d S )NzMethod 'z' must have only 1 parameter: )
inspect	signaturerB   list
parametersrE   
ValueErrorr(   	functoolsupdate_wrapper)r   rG   r"   r"   r#   __post_init__J   s   z#_AlterDataInstruction.__post_init__namec                 C   s
   || _ d S r   )rD   )r   rD   rN   r"   r"   r#   __set_name__S      
z"_AlterDataInstruction.__set_name__*_AlterDataInstruction__request_or_responser$   c                C   s
   |  |S r   )rB   )r   rQ   r"   r"   r#   __call__V   rP   z_AlterDataInstruction.__call__)r(   r)   r*   r   r   __annotations__r   rD   typer   r.   rM   rO   r   r   r0   rR   r"   r"   r"   r#   rA   D   s   
 	rA   c                   @   s*   e Zd ZU eedf ed< dZeed< dS )_BaseAlterBySchemaInstruction.schemasTcheck_usageN)r(   r)   r*   tupler   rS   rW   boolr"   r"   r"   r#   rU   Z   s   
 rU   c                   @   s   e Zd ZdZdS )_BaseAlterRequestInstructionr   N)r(   r)   r*   rE   r"   r"   r"   r#   rZ   e   s    rZ   c                   @      e Zd ZdS ) _AlterRequestBySchemaInstructionNr(   r)   r*   r"   r"   r"   r#   r\   j       r\   c                   @   &   e Zd ZU eed< ee ed< dZdS )_AlterRequestByPathInstructionpathmethodszRequest by path converterNr(   r)   r*   r.   rS   set	repr_namer"   r"   r"   r#   r`   n      
 r`   T)rW   first_schemaadditional_schemasrW   r$   ztype[staticmethod[_P, None]]c               G      d S r   r"   )rg   rW   rh   r"   r"   r#   #convert_request_to_next_version_foru   s   rj   ra   rb   c                C   ri   r   r"   )ra   rb   r"   r"   r#   rj   ~   s   schema_or_pathmethods_or_second_schemac                  s6   t   dttgd f dtf fdd}|S )NrB   r$   c                    sN   t trtttt| dS d u rf}ng R }t|| dS )N)ra   rb   rB   )rV   rB   rW   )
isinstancer.   r`   rd   r   rH   r\   rB   rV   rh   rW   rl   rk   r"   r#   	decorator   s   
z6convert_request_to_next_version_for.<locals>.decorator)_validate_decorator_argsr   r   r   )rk   rl   rW   rh   rp   r"   ro   r#   rj      s   &c                   @   s   e Zd ZU dZeed< dS )_BaseAlterResponseInstructionr2   migrate_http_errorsN)r(   r)   r*   rE   rY   rS   r"   r"   r"   r#   rr      s   
 rr   c                   @   r[   )!_AlterResponseBySchemaInstructionNr]   r"   r"   r"   r#   rt      r^   rt   c                   @   r_   )_AlterResponseByPathInstructionra   rb   zResponse by path converterNrc   r"   r"   r"   r#   ru      rf   ru   F)rs   rW   rV   rs   c               G   ri   r   r"   )rg   rs   rW   rV   r"   r"   r#   (convert_response_to_previous_version_for      rv   )rs   c               C   ri   r   r"   )ra   rb   rs   r"   r"   r#   rv      rw   c                  s8   t   dttgd f dtf fdd}|S )NrB   r$   c                    sR   t trtttt| dS d u rf}ng R }t|| dS )N)ra   rb   rB   rs   )rV   rB   rs   rW   )rm   r.   ru   rd   r   rH   rt   rn   rh   rW   rl   rs   rk   r"   r#   rp      s    
z;convert_response_to_previous_version_for.<locals>.decorator)rq   r   r0   r   )rk   rl   rs   rW   rh   rp   r"   rx   r#   rv      s   (.c                 C   sV   t | trt |tstdt| |rtdd S |d ur't |ts)tdd S d S )NzWIf path was provided as a first argument, methods must be provided as a second argumentzQIf path was provided as a first argument, then additional schemas cannot be addedzTIf schema was provided as a first argument, all other arguments must also be schemas)rm   r.   rH   	TypeErrorr   rT   )rk   rl   rh   r"   r"   r#   rq      s   

rq   r   )+rK   rF   collections.abcr   dataclassesr   r   typingr   r   r   fastapir   r	   starlette.datastructuresr
   typing_extensionsr   r   r   cadwyn._utilsr   cadwyn.structure.endpointsr   r   r   r0   rA   rU   rZ   r\   r`   rT   rY   rj   r.   rH   rr   rt   ru   rv   rX   rq   r"   r"   r"   r#   <module>   s    


#	

"

