
    g                        d dl mZ d dlZd dlmZmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZ dZ G d d	e      Zdd
ZddZ ed      ZddZddZddZy)    )annotationsN)AnyTypeTypeVarcast
get_origin)urlparse)AsyncClient)Clientz3^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$c                      e Zd ZddZy)
SyncClientc                $    | j                          y N)close)selfs    D/var/www/openai/venv/lib/python3.12/site-packages/postgrest/utils.pyaclosezSyncClient.aclose   s    

    N)returnNone)__name__
__module____qualname__r    r   r   r   r      s    r   r   c                V    t        |       d}t        fd|D              rd dS S )Nz,:()c              3  &   K   | ]  }|v  
 y wr   r   ).0char	param_strs     r   	<genexpr>z!sanitize_param.<locals>.<genexpr>   s     
849s   ")strany)paramreserved_charsr   s     @r   sanitize_paramr&      s4    E
IN

8
889+Qr   c                8    t        | j                  dd            S )N%*)r&   replace)patterns    r   sanitize_pattern_paramr,      s    '//#s344r   _Tc                B    t        t        t           t        |             S r   )r   r   r-   r   )typs    r   get_origin_and_castr0   !   s     R*S/**r   c                0    t        |       j                  dv S )N>   httphttps)r	   scheme)urls    r   is_http_urlr6   ,   s    C=#444r   c                   t        | t              sy| j                         } | j                  d      r| dd } | j	                  d      dk7  ry| j                  d      D ]-  }t        j                  t        |t        j                        r- y y)z@Checks if value looks like a JWT, does not do any extra parsing.FzBearer    N.   T)

isinstancer"   strip
startswithcountsplitresearchBASE64URL_REGEX
IGNORECASE)valueparts     r   is_valid_jwtrF   0   s|    eS! KKME 	"ab	 {{31C yy$> ! r   )r$   r   r   r"   )r+   r"   r   r"   )r/   ztype[type[_T]]r   ztype[_T])r5   r"   r   bool)rD   r"   r   rG   )
__future__r   r@   typingr   r   r   r   r   urllib.parser	   httpxr
   r   
BaseClientrB   r   r&   r,   r-   r0   r6   rF   r   r   r   <module>rM      sO    " 	 7 7 !  &H 
5 T]+5r   