
    q-PhQ                        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Zh dZ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Callableget_type_hints)_check_for_pydanticpydanticN>   datetime64[ms]datetime64[ns]datetime64[us]timedelta64[ms]timedelta64[ns]timedelta64[us]boolint8int16int32int64uint8uint16uint32uint64float32float64objtypereturndict[str, Any]c                $    t          | di           S )N__annotations__)getattrr   s    `/var/www/html/test/jupyter/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attrr.   s     r%   	<genexpr>z is_namedtuple.<locals>.<genexpr>3   s-      
U
U$73
U
U
U
U
U
Ur'   )_fields_field_defaults_replacec              3  @   K   | ]}t          |t                    V  d S r)   )
isinstancestr)r2   flds     r%   r4   z is_namedtuple.<locals>.<genexpr>6   s,      GGC:c3//GGGGGGr'   F)allr9   r5   propertylenr"   )r.   r-   s   ` r%   is_namedtupler?   0   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
   r9   r   	BaseModelr@   s    r%   is_pydantic_modelrD   :   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#   
startswithr9   r   rC   s    r%   is_sqlalchemy_rowrI   ?   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)    )r2   vs     r%   r4   z%get_first_non_none.<locals>.<genexpr>M   s"      881!-Q----88r'   )next)rJ   s    r%   get_first_non_nonerQ   F   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 rN   	nt_unpackr2   keyr@   s      r%   
<dictcomp>znt_unpack.<locals>.<dictcomp>S   s&    DDD*#uYu%%DDDr'   c                ,    g | ]}t          |          S rN   rT   r2   r@   s     r%   
<listcomp>znt_unpack.<locals>.<listcomp>U   s     222U	%  222r'   c                4    i | ]\  }}|t          |          S rN   rT   rV   s      r%   rX   znt_unpack.<locals>.<dictcomp>W   s&    NNN*#uYu%%NNNr'   c              3  4   K   | ]}t          |          V  d S r)   rT   rZ   s     r%   r4   znt_unpack.<locals>.<genexpr>Y   s*      77%Yu%%777777r'   )r9   dictitemslistr?   	__class___asdicttupler$   s    r%   rU   rU   P   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r2   rO   rd   s     r%   r4   z"contains_nested.<locals>.<genexpr>c   s-      IIQ?1i00IIIIIIr'   c              3  8   K   | ]}t          |          V  d S r)   rh   rj   s     r%   r4   z"contains_nested.<locals>.<genexpr>e   s-      @@Q?1i00@@@@@@r'   F)r9   r^   anyrJ   r`   rc   )r@   rd   s    `r%   ri   ri   ^   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:   dtypePANDAS_SIMPLE_NUMPY_DTYPEShasnansemptyr9   rP   iter)rm   msgs     r%   $is_simple_numpy_backed_pandas_seriesr|   i   s     6<1 Kv~/D/D/F/FJJoo!;;   	0	0	0 tDLL))3//	r'   )r   r   r   r    )r.   r   r-   r   r   r   )r@   r   r   r   )rJ   rK   r   r   )r   r   r   r   )r@   r   rd   re   r   r   )rm   rn   r   r   )
__future__r   collections.abcr   	functoolsr   typingr   r   r   r	   polars.dependenciesr
   r   pandaspdrw   r&   r+   r?   rD   rI   rQ   rU   ri   r|   rN   r'   r%   <module>r      s   " " " " " " $ $ $ $ $ $       ? ? ? ? ? ? ? ? ? ? ? ? = = = = = = = =    */ / / /% % % % 216      P P P P
   @ @ @ @           r'   