o
    éÇhþ  ã                   @  sÜ   U d dl mZ d dlZd dlZd dlZe d¡ZG dd„ deje ƒZG dd„ dee	 ƒZ
G dd	„ d	ee	 ƒZG d
d„ dee ƒZG dd„ dee ƒZG dd„ deej ƒZe
ƒ eƒ eƒ eƒ eƒ dœZded< ddd„ZdS )é    )ÚannotationsNÚTc                   @  s.   e Zd ZU dZded< ddd	„Zdd
d„ZdS )Ú	ConvertorÚ ztyping.ClassVar[str]ÚregexÚvalueÚstrÚreturnr   c                 C  ó   t ƒ ‚©N©ÚNotImplementedError©Úselfr   © r   úh/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/starlette/convertors.pyÚconvert   ó   zConvertor.convertc                 C  r
   r   r   r   r   r   r   Ú	to_string   r   zConvertor.to_stringN)r   r   r	   r   )r   r   r	   r   )Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r   r   r   r   r   
   s   
 
r   c                   @  ó$   e Zd ZdZd
dd„Zd
dd„Zd	S )ÚStringConvertorz[^/]+r   r   r	   c                 C  s   |S r   r   r   r   r   r   r      s   zStringConvertor.convertc                 C  s(   t |ƒ}d|vsJ dƒ‚|sJ dƒ‚|S )Nú/zMay not contain path separatorszMust not be empty©r   r   r   r   r   r      s   zStringConvertor.to_stringN©r   r   r	   r   ©r   r   r   r   r   r   r   r   r   r   r      ó    
r   c                   @  r   )ÚPathConvertorz.*r   r   r	   c                 C  ó   t |ƒS r   r   r   r   r   r   r   $   ó   zPathConvertor.convertc                 C  r!   r   r   r   r   r   r   r   '   r"   zPathConvertor.to_stringNr   r   r   r   r   r   r    !   r   r    c                   @  ó$   e Zd ZdZddd„Zddd	„Zd
S )ÚIntegerConvertorz[0-9]+r   r   r	   Úintc                 C  r!   r   )r%   r   r   r   r   r   .   r"   zIntegerConvertor.convertc                 C  s    t |ƒ}|dksJ dƒ‚t|ƒS )Nr   z#Negative integers are not supported)r%   r   r   r   r   r   r   1   s   zIntegerConvertor.to_stringN)r   r   r	   r%   )r   r%   r	   r   r   r   r   r   r   r$   +   r   r$   c                   @  r#   )ÚFloatConvertorz[0-9]+(\.[0-9]+)?r   r   r	   Úfloatc                 C  r!   r   )r'   r   r   r   r   r   :   r"   zFloatConvertor.convertc                 C  sP   t |ƒ}|dksJ dƒ‚t |¡rJ dƒ‚t |¡rJ dƒ‚d|  d¡ d¡S )Ng        z!Negative floats are not supportedzNaN values are not supportedz!Infinite values are not supportedz%0.20fÚ0Ú.)r'   ÚmathÚisnanÚisinfÚrstripr   r   r   r   r   =   s
   zFloatConvertor.to_stringN)r   r   r	   r'   )r   r'   r	   r   r   r   r   r   r   r&   7   r   r&   c                   @  r#   )ÚUUIDConvertorzO[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{12}r   r   r	   ú	uuid.UUIDc                 C  s
   t  |¡S r   )ÚuuidÚUUIDr   r   r   r   r   H   s   
zUUIDConvertor.convertc                 C  r!   r   r   r   r   r   r   r   K   r"   zUUIDConvertor.to_stringN)r   r   r	   r/   )r   r/   r	   r   r   r   r   r   r   r.   E   r   r.   )r   Úpathr%   r'   r0   z dict[str, Convertor[typing.Any]]ÚCONVERTOR_TYPESÚkeyr   Ú	convertorúConvertor[typing.Any]r	   ÚNonec                 C  s   |t | < d S r   )r3   )r4   r5   r   r   r   Úregister_url_convertorX   s   r8   )r4   r   r5   r6   r	   r7   )Ú
__future__r   r*   Útypingr0   ÚTypeVarr   ÚGenericr   r   r   r    r%   r$   r'   r&   r1   r.   r3   r   r8   r   r   r   r   Ú<module>   s$    


û	