
    j                        U 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 er
d dlmZ d dlZh dZd	ed
<   d&dZd&dZ ed          ddd'd            Zd(dZd(dZd)dZd*dZd+d"Zd,d%ZdS )-    )annotations)Sequence)	lru_cache)TYPE_CHECKINGAnyFinalget_type_hints)_check_for_pydanticpydantic)CallableN>   datetime64[ms]datetime64[ns]datetime64[us]timedelta64[ms]timedelta64[ns]timedelta64[us]boolint8int16int32int64uint8uint16uint32uint64float32float64zFinal[set[str]]PANDAS_SIMPLE_NUMPY_DTYPESobjtypereturndict[str, Any]c                $    t          | di           S )N__annotations__)getattrr   s    e/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/polars/_utils/construction/utils.py_get_annotationsr(   #   s    3)2...    c                `    	 t          |           S # t          $ r t          |           cY S w xY wN)r	   	TypeErrorr(   r&   s    r'   try_get_type_hintsr-   '   sF    % c""" % % %$$$$$%s    --@   F)	annotatedclsr   r/   r   c                   t           fddD                       rdt           j        t                    sJ|r*t	           j                  t	           j                  k    rt          d  j        D                       S dS )z-Check if given class derives from NamedTuple.c              3  8   K   | ]}t          |          V  d S r+   )hasattr).0attrr0   s     r'   	<genexpr>z is_namedtuple.<locals>.<genexpr>5   s-      
U
U$73
U
U
U
U
U
Ur)   )_fields_field_defaults_replacec              3  @   K   | ]}t          |t                    V  d S r+   )
isinstancestr)r4   flds     r'   r6   z is_namedtuple.<locals>.<genexpr>8   s,      GGC:c3//GGGGGGr)   F)allr;   r7   propertylenr$   )r0   r/   s   ` r'   is_namedtuplerA   2   s     
U
U
U
U*T
U
U
UUU H#+x00 	H HC$7 8 8C<L<L L LGG3;GGGGGG5r)   valuec                T    t          |           ot          | t          j                  S )z1Check if value derives from a pydantic.BaseModel.)r
   r;   r   	BaseModelrB   s    r'   is_pydantic_modelrF   <   s"    u%%O*UH<N*O*OOr)   c                t    t          | dd                              d          ot          | t                    S )zICheck if value is an instance of a SQLAlchemy sequence or mapping object.
__module__ zsqlalchemy.)r%   
startswithr;   r   rE   s    r'   is_sqlalchemy_rowrK   A   s<    5,++66}EE *xK K r)   valuesSequence[Any | None]c                >    | t          d | D             d          S dS )z
    Return the first value from a sequence that isn't None.

    If sequence doesn't contain non-None values, return None.
    Nc              3     K   | ]}||V  	d S r+    )r4   vs     r'   r6   z%get_first_non_none.<locals>.<genexpr>O   s"      881!-Q----88r)   )next)rL   s    r'   get_first_non_nonerS   H   s1     88888$??? r)   c                   t          | t                    rd |                                 D             S t          | t                    rd | D             S t	          | j                  r0d |                                                                 D             S t          | t                    rt          d | D                       S | S )z'Recursively unpack a nested NamedTuple.c                4    i | ]\  }}|t          |          S rP   	nt_unpackr4   keyrB   s      r'   
<dictcomp>znt_unpack.<locals>.<dictcomp>U   s&    DDD*#uYu%%DDDr)   c                ,    g | ]}t          |          S rP   rV   r4   rB   s     r'   
<listcomp>znt_unpack.<locals>.<listcomp>W   s     222U	%  222r)   c                4    i | ]\  }}|t          |          S rP   rV   rX   s      r'   rZ   znt_unpack.<locals>.<dictcomp>Y   s&    NNN*#uYu%%NNNr)   c              3  4   K   | ]}t          |          V  d S r+   rV   r\   s     r'   r6   znt_unpack.<locals>.<genexpr>[   s*      77%Yu%%777777r)   )r;   dictitemslistrA   	__class___asdicttupler&   s    r'   rW   rW   R   s    #t 	DD		DDDD	C		 22c2222	s}	%	% NN8K8K8M8MNNNN	C		 773777777
r)   	is_nestedCallable[[Any], bool]c                    |           rdS t          | t                    r-t          fd|                                 D                       S t          | t          t
          f          rt          fd| D                       S dS )z;Determine if value contains (or is) nested structured data.Tc              3  8   K   | ]}t          |          V  d S r+   contains_nestedr4   rQ   rf   s     r'   r6   z"contains_nested.<locals>.<genexpr>e   s-      IIQ?1i00IIIIIIr)   c              3  8   K   | ]}t          |          V  d S r+   rj   rl   s     r'   r6   z"contains_nested.<locals>.<genexpr>g   s-      @@Q?1i00@@@@@@r)   F)r;   r`   anyrL   rb   re   )rB   rf   s    `r'   rk   rk   `   s    y At	E4	 	  AIIII%,,..IIIIII	ED%=	)	) A@@@@%@@@@@@5r)   series1pd.Series[Any] | pd.Index[Any] | pd.DatetimeIndexc                R   t          | j                  dk    r+d| j                                        }t	          |          t          | j                  t          v pI| j        dk    o>| j         o6| j	         o.t          t          t          |                     t
                    S )N   zduplicate column names found: object)r@   shapecolumnstolist
ValueErrorr<   dtyper   hasnansemptyr;   rR   iter)ro   msgs     r'   $is_simple_numpy_backed_pandas_seriesr}   k   s     6<1 Kv~/D/D/F/FJJoo!;;   	0	0	0 tDLL))3//	r)   )r   r    r!   r"   )r0   r   r/   r   r!   r   )rB   r   r!   r   )rL   rM   r!   r   )r   r   r!   r   )rB   r   rf   rg   r!   r   )ro   rp   r!   r   )
__future__r   collections.abcr   	functoolsr   typingr   r   r   r	   polars._dependenciesr
   r   r   pandaspdr   r$   r(   r-   rA   rF   rK   rS   rW   rk   r}   rP   r)   r'   <module>r      s   " " " " " " " $ $ $ $ $ $       < < < < < < < < < < < < > > > > > > > > ((((((/ / /     */ / / /% % % % 216      P P P P
   @ @ @ @           r)   