
    g/\                       d dl mZ d dlZd dlm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mZmZmZ d dlmZmZ d dlmZ d dlmZ 	 d d	lmZ 	 d d
lmZ ddlm Z m!Z!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(  G d de      Z)d(dZ*d)dZ+ddd	 	 	 	 	 	 	 d*dZ,dd	 	 	 	 	 	 	 	 	 	 	 d+dZ-ddd	 	 	 	 	 	 	 	 	 	 	 	 	 d,dZ.	 	 	 	 	 	 	 	 d-dZ/	 	 	 	 	 	 d.dZ0 ed      Z1 G d dee	e1         Z2 G d  d!e2e1   e	e1         Z3 G d" d#e	e1         Z4 G d$ d%e4e1         Z5 G d& d'e5e1         Z6y# e$ r	 d d	lmZ Y w xY w# e$ r	 d dlmZ Y w xY w)/    )annotationsN)JSONDecodeError)search)AnyDictGenericIterableListLiteral
NamedTupleOptionalTupleTypeTypeVarUnion)HeadersQueryParams)Response)	BaseModel)Self)field_validator)	validator   )CountMethodFiltersRequestMethodReturnMethod)AsyncClient
SyncClientget_origin_and_castsanitize_paramc                  6    e Zd ZU ded<   ded<   ded<   ded<   y	)
	QueryArgsr   methodr   paramsr   headerszDict[Any, Any]jsonN)__name__
__module____qualname____annotations__     S/var/www/openai/venv/lib/python3.12/site-packages/postgrest/base_request_builder.pyr#   r#   )   s    
r-   r#   c                    | D ch c]  }|j                         D ]  }|  }}}dj                  |D cg c]  }d| d
 c}      }|S c c}}w c c}w )N,")keysjoin)r'   rowkeyunique_keyskcolumnss         r.   _unique_columnsr9   1   sV    "&=$3#((*33*3$K=hh+6+Q!A3a+67GN >6s
   AAc                    d}g }| D ].  }|j                         r|s|dk(  r| }|j                  |       0 dj                  |      S )NFr1   r0   )isspaceappendr3   )r8   quotedresultcs       r.   _cleaned_columnsr@   7   sO    FF99;v8ZFa  88Fr-   )countheadc                    |rt         j                  nt         j                  }t        |xs d      }t	        d|i      }| rt        dd|  i      n	t               }t        |||i       S )N*selectPrefercount=)r   HEADGETr@   r   r   r#   )rA   rB   r8   r$   cleaned_columnsr%   r&   s          r.   
pre_selectrK   E   sc    
 $(]]->->F&w~#6O(O45F7<gx6%!123')GVVWb11r-   T)default_to_nullc               F   d| g}|r|j                  d|        |r|j                  d       |s|j                  d       t        ddj                  |      i      }i }t        | t              rdt        |       i}t        t        j                  t        |      ||       S )Nreturn=rG   zresolution=merge-duplicatesmissing=defaultrF   r0   r8   
r<   r   r3   
isinstancelistr9   r#   r   POSTr   )r'   rA   	returningupsertrL   prefer_headersr&   query_paramss           r.   
pre_insertrX   R   s      	{+,Nug./;</0x.!9:;GL$!?4#89]''\)BGTRRr-    )on_conflictrL   c               f   i }d| g}|r|j                  d|        |rdnd}|j                  d| d       |s|j                  d       t        dd	j                  |      i      }	|r||d
<   t        | t              rt        |       |d<   t        t        j                  t        |      |	|       S )NrN   rG   ignoremergezresolution=z-duplicatesrO   rF   r0   rZ   r8   rP   )
r'   rA   rT   ignore_duplicatesrZ   rL   rW   rV   
resolutionr&   s
             r.   
pre_upsertr`   i   s     L	{+,Nug./.GJK
|;?@/0x.!9:;G&1]#$"1$"7Y]''\)BGTRRr-   c                   d| g}|r|j                  d|        t        ddj                  |      i      }t        t        j
                  t               ||       S NrN   rG   rF   r0   )r<   r   r3   r#   r   PATCHr   )r'   rA   rT   rV   r&   s        r.   
pre_updaterd      s\      	{+,Nug./x.!9:;G]((+-$GGr-   c                    d| g}| r|j                  d|         t        ddj                  |      i      }t        t        j
                  t               |i       S rb   )r<   r   r3   r#   r   DELETEr   )rA   rT   rV   r&   s       r.   
pre_deleterg      s\    
  	{+,Nug./x.!9:;G]));='2FFr-   _ReturnTc                      e Zd ZU ded<   	 dZded<   	  ed      edd              Ze	 	 	 	 dd       Z	edd       Z
e	 	 	 	 	 	 dd	       Ze	 	 	 	 	 	 dd
       Zedd       Zy)APIResponsezList[_ReturnT]dataNOptional[int]rA   c                ^    t        |t              r|j                  d      rt        d      |S )Nmessagez/You are passing an API error to the data field.)rQ   dictget
ValueError)clsvalues     r.   raise_when_api_errorz APIResponse.raise_when_api_error   s*     eT"uyy';NOOr-   c                `    | j                  d      }t        |      dk  rd S t        |d         S )N/   r   )splitlenint)content_range_headercontent_ranges     r.   $_get_count_from_content_range_headerz0APIResponse._get_count_from_content_range_header   s5     -2237=)A-tH3}Q7G3HHr-   c                    ddj                  t        D cg c]  }|j                   c}       d}t        t	        ||             S c c}w )Nzcount=(|))r3   r   rs   boolr   )prefer_headercmpatterns      r.   _is_count_in_prefer_headerz&APIResponse._is_count_in_prefer_header   sE    CHH%E2bhh%EFGqIF7M233 &Fs   A
c                    |j                   j                  j                  d      }|sy | j                  |      }|j                  j                  d      }|r|r| j	                  |      S d S )Npreferzcontent-range)requestr&   rp   r   r}   )rr   request_responser   is_count_in_prefer_headerr{   s        r.   %_get_count_from_http_request_responsez1APIResponse._get_count_from_http_request_response   sy    
 (8'?'?'G'G'K'KH'U$'$B$B=$Q!.>.F.F.J.J/

 *.B 445IJ	
 	
r-   c                    | j                  |      }	 |j                         } | t
           ||      S # t        $ r) t        |j                        dkD  r|j                  ng }Y Bw xY wNr   )rk   rA   r   r'   r   ry   textrh   rr   r   rA   rk   s       r.   from_http_request_responsez&APIResponse.from_http_request_response   ss     99:JK	S#((*D
 s8}$e44	  	S,/0@0E0E,F,J#((PRD	S   4 /A&%A&c                    |j                         }t        |      dk(  rd|v rd|v rd|v sJ  | t           |j                  d      |j                  d      |j                  d            S N   rk   rA   error)rk   rA   r   r2   ry   rh   rp   rr   ro   r2   s      r.   	from_dictzAPIResponse.from_dict   f    yy{4yA~&D.W_TXXXs8}&!'):$((7BS
 	
r-   )rr   
Type[Self]rs   r   returnr   )r{   strr   rl   )r   r   r   r   )rr   r   r   RequestResponser   rl   rr   r   r   r   r   r   rr   r   ro   Dict[str, Any]r   r   )r(   r)   r*   r+   rA   r   classmethodrt   staticmethodr}   r   r   r   r   r,   r-   r.   rj   rj      s    
)E=&V  
 I!I	I I 4 4 

)
 

 
" 
5
5+:
5	
5 
5 
 
r-   rj   c                  J    e Zd ZU ded<   	 e	 	 	 	 	 	 dd       Zedd       Zy)SingleAPIResponserh   rk   c                    | j                  |      }	 |j                         } | t
           ||      S # t        $ r) t        |j                        dkD  r|j                  ng }Y Bw xY wr   r   r   s       r.   r   z,SingleAPIResponse.from_http_request_response   ss     99:JK	S#((*D s8}$e44  	S,/0@0E0E,F,J#((PRD	Sr   c                    |j                         }t        |      dk(  rd|v rd|v rd|v sJ  | t           |j                  d      |j                  d      |j                  d            S r   r   r   s      r.   r   zSingleAPIResponse.from_dict   r   r-   Nr   r   )r(   r)   r*   r+   r   r   r   r,   r-   r.   r   r      sH    
N)55+:5	5 5 
 
r-   r   c                     e Zd Z	 	 	 	 	 	 	 	 d)dZed*d       Zd+dZd,dZd,dZd,dZ	d,dZ
d,dZd,d	Zd,d
Zd-dZd-dZd-dZd-dZd-dZd-dZd.d/dZd0dZd0dZd0dZd0dZd1dZd1dZd1dZ	 	 	 	 	 	 	 	 d2dZ	 	 	 	 	 	 	 	 d2dZd3dZd4dZd4dZ d4dZ!d4d Z"d4d!Z#d4d"Z$d4d#Z%d4d$Z&d4d%Z'd4d&Z(d1d'Z)d5d(Z*y)6BaseFilterRequestBuilderc                <    || _         || _        || _        d| _        y )NF)sessionr&   r%   negate_nextselfr   r&   r%   s       r.   __init__z!BaseFilterRequestBuilder.__init__   s!      r-   c                    d| _         | S )z2Whether the filter applied next should be negated.T)r   r   s    r.   not_zBaseFilterRequestBuilder.not_  s      r-   c                    | j                   du rd| _         t        j                   d| }t        |      | d| }}| j                  j                  ||      | _        | S )zApply filters on a query.

        Args:
            column: The name of the column to apply a filter on
            operator: The operator to use while filtering
            criteria: The value to filter by
        TF.)r   r   NOTr!   r%   add)r   columnoperatorcriteriar5   vals         r.   filterzBaseFilterRequestBuilder.filter  sb     t#$D!++az2H!&)hZq
+CSkkooc3/r-   c                D    | j                  |t        j                  |      S )zAn 'equal to' filter.

        Args:
            column: The name of the column to apply a filter on
            value: The value to filter by
        )r   r   EQr   r   rs   s      r.   eqzBaseFilterRequestBuilder.eq       {{67::u55r-   c                D    | j                  |t        j                  |      S )zA 'not equal to' filter

        Args:
            column: The name of the column to apply a filter on
            value: The value to filter by
        )r   r   NEQr   s      r.   neqzBaseFilterRequestBuilder.neq&       {{67;;66r-   c                D    | j                  |t        j                  |      S )zA 'greater than' filter

        Args:
            column: The name of the column to apply a filter on
            value: The value to filter by
        )r   r   GTr   s      r.   gtzBaseFilterRequestBuilder.gt/  r   r-   c                D    | j                  |t        j                  |      S )zA 'greater than or equal to' filter

        Args:
            column: The name of the column to apply a filter on
            value: The value to filter by
        )r   r   GTEr   s      r.   gtezBaseFilterRequestBuilder.gte8  r   r-   c                D    | j                  |t        j                  |      S )zA 'less than' filter

        Args:
            column: The name of the column to apply a filter on
            value: The value to filter by
        )r   r   LTr   s      r.   ltzBaseFilterRequestBuilder.ltA  r   r-   c                D    | j                  |t        j                  |      S )zA 'less than or equal to' filter

        Args:
            column: The name of the column to apply a filter on
            value: The value to filter by
        )r   r   LTEr   s      r.   ltezBaseFilterRequestBuilder.lteJ  r   r-   c                L    |d}| j                  |t        j                  |      S )zAn 'is' filter

        Args:
            column: The name of the column to apply a filter on
            value: The value to filter by
        null)r   r   ISr   s      r.   is_zBaseFilterRequestBuilder.is_S  s%     =E{{67::u55r-   c                D    | j                  |t        j                  |      S )A 'LIKE' filter, to use for pattern matching.

        Args:
            column: The name of the column to apply a filter on
            pattern: The pattern to filter by
        )r   r   LIKEr   r   r   s      r.   likezBaseFilterRequestBuilder.like^  s     {{67<<99r-   c                L    | j                  |t        j                  d| d      S r   {})r   r   LIKE_ALLr   s      r.   like_all_ofz$BaseFilterRequestBuilder.like_all_ofg  &     {{67#3#3r'"5EFFr-   c                L    | j                  |t        j                  d| d      S r   )r   r   LIKE_ANYr   s      r.   like_any_ofz$BaseFilterRequestBuilder.like_any_ofq  r   r-   c                L    | j                  |t        j                  d| d      S zA 'ILIKE' filter, to use for pattern matching (case insensitive).

        Args:
            column: The name of the column to apply a filter on
            pattern: The pattern to filter by
        r   r   )r   r   	ILIKE_ALLr   s      r.   ilike_all_ofz%BaseFilterRequestBuilder.ilike_all_of{  &     {{67#4#47)26FGGr-   c                L    | j                  |t        j                  d| d      S r   )r   r   	ILIKE_ANYr   s      r.   ilike_any_ofz%BaseFilterRequestBuilder.ilike_any_of  r   r-   c                D    | j                  |t        j                  |      S )zAn 'ILIKE' filter, to use for pattern matching (case insensitive).

        Args:
            column: The name of the column to apply a filter on
            pattern: The pattern to filter by
        )r   r   ILIKEr   s      r.   ilikezBaseFilterRequestBuilder.ilike  s     {{67=='::r-   Nc                t    |rt        |       dnd}| j                  j                  |d| d      | _        | S )zAn 'or' filter

        Args:
            filters: The filters to use, following PostgREST syntax
            reference_table: Set this to filter on referenced tables instead of the parent table
        z.oror(r   )r!   r%   r   )r   filtersreference_tabler5   s       r.   or_zBaseFilterRequestBuilder.or_  s>     :I015dkkoocQwiq>:r-   c                D    | j                  |t        j                  |      S N)r   r   FTSr   r   querys      r.   ftszBaseFilterRequestBuilder.fts  s    {{67;;66r-   c                D    | j                  |t        j                  |      S r   )r   r   PLFTSr   s      r.   plftszBaseFilterRequestBuilder.plfts      {{67==%88r-   c                D    | j                  |t        j                  |      S r   )r   r   PHFTSr   s      r.   phftszBaseFilterRequestBuilder.phfts  r   r-   c                D    | j                  |t        j                  |      S r   )r   r   WFTSr   s      r.   wftszBaseFilterRequestBuilder.wfts  s    {{67<<77r-   c                    t        t        |      }dj                  |      }| j                  |t        j
                  d| d      S )Nr0   r   r   )mapr!   r3   r   r   INr   r   valuess      r.   in_zBaseFilterRequestBuilder.in_  s;    ^V,&!{{67::6(!}==r-   c                n    dj                  |      }| j                  |t        j                  d| d      S Nr0   r   r   )r3   r   r   CSr  s      r.   cszBaseFilterRequestBuilder.cs  /    &!{{67::F82??r-   c                n    dj                  |      }| j                  |t        j                  d| d      S r  )r3   r   r   CDr  s      r.   cdzBaseFilterRequestBuilder.cd  r  r-   c                x   t        |t              r!| j                  |t        j                  |      S t        |t
              sFt        |t              r6dj                  |      }| j                  |t        j                  d| d      S | j                  |t        j                  t        j                  |            S r  )
rQ   r   r   r   r  ro   r	   r3   r'   dumpsr   r   rs   stringified_valuess       r.   containsz!BaseFilterRequestBuilder.contains  s     eS! ;;vwzz599%&:eX+F!$%;;vwzzR8J7K23NOO{{67::tzz%/@AAr-   c                x   t        |t              r!| j                  |t        j                  |      S t        |t
              sFt        |t              r6dj                  |      }| j                  |t        j                  d| d      S | j                  |t        j                  t        j                  |            S r  )
rQ   r   r   r   r  ro   r	   r3   r'   r  r  s       r.   contained_byz%BaseFilterRequestBuilder.contained_by  s     eS!;;vwzz599%&:eX+F!$%;;vwzzR8J7K23NOO{{67::tzz%/@AAr-   c                x   t        |t              r!| j                  |t        j                  |      S t        |t
              sFt        |t              r6dj                  |      }| j                  |t        j                  d| d      S | j                  |t        j                  t        j                  |            S r  )
rQ   r   r   r   OVro   r	   r3   r'   r  r  s       r.   ovzBaseFilterRequestBuilder.ov  s    eS! ;;vwzz599%&:eX+F!$%;;vwzzR8J7K23NOO{{67::tzz%/@AAr-   c           	     ^    | j                  |t        j                  d|d    d|d    d      S Nr   r   r0   r   r   )r   r   SLr   r   ranges      r.   slzBaseFilterRequestBuilder.sl  0    {{67::58*AeAhZq/IJJr-   c           	     ^    | j                  |t        j                  d|d    d|d    d      S r  )r   r   SRr   s      r.   srzBaseFilterRequestBuilder.sr  r#  r-   c           	     ^    | j                  |t        j                  d|d    d|d    d      S r  )r   r   NXLr   s      r.   nxlzBaseFilterRequestBuilder.nxl  0    {{67;;!E!H:QuQxj0JKKr-   c           	     ^    | j                  |t        j                  d|d    d|d    d      S r  )r   r   NXRr   s      r.   nxrzBaseFilterRequestBuilder.nxr  r*  r-   c           	     ^    | j                  |t        j                  d|d    d|d    d      S r  )r   r   ADJr   s      r.   adjzBaseFilterRequestBuilder.adj  r*  r-   c                &    | j                  ||      S r   )r&  r   s      r.   range_gtz!BaseFilterRequestBuilder.range_gt      wwvu%%r-   c                &    | j                  ||      S r   )r)  r   s      r.   	range_gtez"BaseFilterRequestBuilder.range_gte      xx&&r-   c                &    | j                  ||      S r   )r"  r   s      r.   range_ltz!BaseFilterRequestBuilder.range_lt  r3  r-   c                &    | j                  ||      S r   )r-  r   s      r.   	range_ltez"BaseFilterRequestBuilder.range_lte  r6  r-   c                &    | j                  ||      S r   )r0  r   s      r.   range_adjacentz'BaseFilterRequestBuilder.range_adjacent  r6  r-   c                &    | j                  ||      S r   )r  r  s      r.   overlapsz!BaseFilterRequestBuilder.overlaps  s    wwvv&&r-   c                x    | }|st        d      |j                         D ]  \  }}| j                  ||      } |S )Nz;query dictionary should contain at least one key-value pair)rq   itemsr   )r   r   updated_queryr5   rs   s        r.   matchzBaseFilterRequestBuilder.match  sH    M   ++-JC GGC/M ( r-   r   zUnion[AsyncClient, SyncClient]r&   r   r%   r   r   None)r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   rs   r   r   r   )r   r   r   r   r   r   r   r   r   )r   r   r   r   r   Optional[str]r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r	  Iterable[Any]r   r   )r   r   r   r   rs   z)Union[Iterable[Any], str, Dict[Any, Any]]r   r   )r   r   r   r   rs   rF  r   r   )r   r   r   r   r!  zTuple[int, int]r   r   )r   r   r   r   r   r   )+r(   r)   r*   r   propertyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r"  r&  r)  r-  r0  r2  r5  r8  r:  r<  r>  rB  r,   r-   r.   r   r      sP   	!/	! 	! 		!
 
	!  
676767	6:GGHH;	7998>
@@BBB(QB	B	B	B	B(Q	B		B	BKKLLL&'&'''r-   r   c                      e Zd Z	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZdddd	 	 	 	 	 	 	 	 	 	 	 ddZddddZdd	Z	 d	 	 	 	 	 	 	 	 	 dd
Zy)BaseSelectRequestBuilderc                T    t        t        t                 j                  | |||       y r   )r    r   rh   r   r   s       r.   r   z!BaseSelectRequestBuilder.__init__  &     	4X>?HH'7F	
r-   Fc                    t               j                         D cg c]  \  }}|dvr|r| }	}}dj                  |	      }
d| d|
 | j                  d<   | S c c}}w )N)r   formatr   zapplication/vnd.pgrst.plan+z
; options=Accept)localsr@  r3   r&   )r   analyzeverbosesettingsbufferswalrM  r5   rs   optionsoptions_strs              r.   explainz BaseSelectRequestBuilder.explain  sv     %hnn.
.
U,, . 	 

 hhw')&K=I 	X 
s   AN)desc
nullsfirstforeign_tablec                  |r|dz   nd | |rdnd |rdnd |rdnd }| j                   j                  d      }|r'| j                   j                  d      | _         | d| }| j                   j                  d|      | _         | S )a  Sort the returned rows in some specific order.

        Args:
            column: The column to order by
            desc: Whether the rows should be ordered in descending order or not.
            nullsfirst: nullsfirst
            foreign_table: Foreign table name whose results are to be ordered.
        .. versionchanged:: 0.10.3
           Allow ordering results for foreign tables with the foreign_table parameter.
        r   rY   r   z.descz.nullsfirstorderr0   )r%   rp   remover   )r   r   rX  rY  rZ  new_order_parameterexisting_order_parameters          r.   r\  zBaseSelectRequestBuilder.order1  s    ( '4}s"<VHMS_aDbwB''LN 	
 $(;;??7#; #++,,W5DK%=$>a@S?T"Ukkoo
 r-   )rZ  c               V    | j                   j                  |r| dnd|      | _         | S )a3  Limit the number of rows returned by a query.

        Args:
            size: The number of rows to be returned
            foreign_table: Foreign table name to limit
        .. versionchanged:: 0.10.3
           Allow limiting results returned for foreign tables with the foreign_table parameter.
        .limitlimitr%   r   )r   sizerZ  s      r.   rb  zBaseSelectRequestBuilder.limitT  s0     kkoo(5}oV$7
 r-   c                H    | j                   j                  d|      | _         | S )zzSet the starting row index returned by a query.
        Args:
            size: The number of the row to start at
        offsetrc  )r   rd  s     r.   rf  zBaseSelectRequestBuilder.offsetc  s%    
 kkoo
 r-   c                    | j                   j                  |r| dnd|      | _         | j                   j                  |r| dnd||z
  dz         | _         | S )Nz.offsetrf  ra  rb  r   rc  )r   startendrZ  s       r.   r!  zBaseSelectRequestBuilder.rangen  s^     kkoo)6}oW%He
 kkoo(5}oV$7%K!O
 r-   rC  )FFFFFr   )r   r   rP  r   rQ  r   rR  r   rS  r   rT  r   rM  zLiteral['text', 'json']r   r   )r   r   r   r   rX  r   rY  r   rZ  rE  r   r   )r   r   rd  rz   rZ  rE  r   r   )r   _FilterTrd  rz   r   rj  r   )
r   r   rh  rz   ri  rz   rZ  rE  r   r   )	r(   r)   r*   r   rW  r\  rb  rf  r!  r,   r-   r.   rI  rI    s    
/
 
 	

 

 *0  	
   ( 
0  '+!!! 	!
 ! %! 
!F HL 	 JN


%(
9F
	
r-   rI  c                  L    e Zd Z	 	 	 	 	 	 	 	 ddZ	 	 	 	 ddZd	dZd	dZd	dZy)
BaseRPCRequestBuilderc                T    t        t        t                 j                  | |||       y r   )r    rI  rh   r   r   s       r.   r   zBaseRPCRequestBuilder.__init__|  rK  r-   c                    t        |ddi\  }}}}| j                  j                  d|j                  d            | _        d| j                  d<   | S )zRun a SELECT query.

        Args:
            *columns: The names of the columns to fetch.
        Returns:
            :class:`BaseSelectRequestBuilder`
        rA   NrE   zreturn=representationrF   )rK   r%   r   rp   r&   )r   r8   r$   r%   r&   r'   s         r.   rE   zBaseRPCRequestBuilder.select  sN     )3G(H4(H%kkooh

80DE!8Xr-   c                $    d| j                   d<   | S )zSpecify that the query will only return a single row in response.

        .. caution::
            The API will raise an error if the query returned more than one row.
        !application/vnd.pgrst.object+jsonrN  r&   r   s    r.   singlezBaseRPCRequestBuilder.single  s     "EXr-   c                $    d| j                   d<   | S )zRetrieves at most one row from the result. Result must be at most one row (e.g. using `eq` on a UNIQUE column), otherwise this will result in an error.rp  rN  rq  r   s    r.   maybe_singlez"BaseRPCRequestBuilder.maybe_single  s    !DXr-   c                $    d| j                   d<   | S )zASpecify that the query must retrieve data as a single CSV string.ztext/csvrN  rq  r   s    r.   csvzBaseRPCRequestBuilder.csv  s    !+Xr-   NrC  )r8   r   r   r   )r   r   )r(   r)   r*   r   rE   rr  rt  rv  r,   r-   r.   rl  rl  {  sS    
/
 
 	

 

 
 
r-   rl  )r'   z
List[Dict])r8   r   r   r   )r8   r   rA   Optional[CountMethod]rB   zOptional[bool]r   r#   )r'   Union[dict, list]rA   rw  rT   r   rU   r   rL   r   r   r#   )r'   rx  rA   rw  rT   r   r^   r   rZ   r   rL   r   r   r#   )r'   ro   rA   rw  rT   r   r   r#   )rA   rw  rT   r   r   r#   )7
__future__r   r'   r   rer   typingr   r   r   r	   r
   r   r   r   r   r   r   r   httpxr   r   r   r   pydanticr   r   ImportErrortyping_extensionsr   r   typesr   r   r   r   utilsr   r   r    r!   r#   r9   r@   rK   rX   r`   rd   rg   rh   rj   r   r   rI  rl  r,   r-   r.   <module>r     s*   "        ' - '6(
 E D O O
   $(
2
2 
2 
2 	
2& !S
S !S 	S
 S S S:  S
S !S 	S
 S S S S4
H

H !
H 	
H
 
H	G 	G 	G 		G :>
)WX. >
B
H-wx/@ 
0Pwx0 Pfi7A iX/4X> /A  '&'  656s$   D  D1  D.-D.1D?>D?