o
    LhX                     @  s,  U 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mZmZ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 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$ d d	l%m&Z& d d
l'm(Z( erd dlm)Z) d dl*m+Z+ d dlm,Z, d dl-Z.d dl/Z0d dl1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@mAZA d dlmBZBmCZC d dlDmEZEmFZF d dlGmHZH d dlImJZJmKZKmLZLmMZMmNZNmOZOmPZP edZQedZRdZSdeTd< 	 eUg dZVedejEejFZWG dd  d e
eW ZXG d!d" d"eXejE ZYG d#d$ d$eXejF ZZdS )%    )annotations)IteratorMappingSequenceSized)TYPE_CHECKINGAnyGenericLiteralTypeVarcastoverloadN)PolarsNamespace)PolarsSeries)catch_polars_exceptionextract_args_kwargsnative_to_narwhals_dtype)Implementation_into_arrow_tableconvert_str_slice_to_int_sliceis_compliant_seriesis_index_selectoris_rangeis_sequence_likeis_slice_indexis_slice_noneparse_columns_to_droprequires)is_numpy_array_1d)ColumnNotFoundError)Iterable)
ModuleType)Callable)Self	TypeAliasTypeIs)CompliantDataFrameAnyCompliantLazyFrameAny)
PolarsExpr)PolarsGroupByPolarsLazyGroupBy)IntoArrowTable)_EagerAllowedImpl_LazyAllowedImpl)Version_LimitedContext)	DataFrame	LazyFrame)DType)
IntoSchemaJoinStrategyMultiColSelectorMultiIndexSelectorPivotAggSingleIndexSelector_2DArrayTRzCallable[..., R]r$   Method)clone
drop_nullsestimated_sizeexplodefiltergather_everyhead	is_uniqueitem	iter_rows	join_asofrenamerowrowssampleselectsink_parquetsorttailto_arrow	to_pandasuniquewith_columns	write_csvwrite_parquetNativePolarsFramec                   @  sB  e Zd ZU ded< ded< ded< ded< ded< ded< ded< ded	< ded
< ded< ded< ded< ejZddd]ddZd^ddZe	d_ddZ
e	d`dd Ze	dad"d#Zdbd%d&Zdcd(d)Zddd+d,Zded-d.Zedfd2d3Zdgd6d7Zdhd:d;Ze	did=d>ZdjdFdGZdkdNdOZdldTdUZdidVdWZdmdZd[Zd\S )nPolarsBaseFrameMethod[Self]r>   r@   rA   rB   rC   rG   rH   rL   rN   rO   rR   rS   F)validate_backend_versiondfrV   versionr.   rY   boolreturnNonec                C  s    || _ || _|r|   d S d S N)_native_frame_version_validate_backend_version)selfrZ   r[   rY    rd   [/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/narwhals/_polars/dataframe.py__init__u   s
   zPolarsBaseFrame.__init__c                 C  s   | j  }dS )zRaise if installed version below `nw._utils.MIN_VERSIONS`.

        **Only use this when moving between backends.**
        Otherwise, the validation will have taken place already.
        N_implementation_backend_version)rc   _rd   rd   re   rb      s   z)PolarsBaseFrame._validate_backend_versiontuple[int, ...]c                 C  
   | j  S r_   rg   rc   rd   rd   re   ri      s   
z PolarsBaseFrame._backend_versionc                 C     | j S r_   )r`   rm   rd   rd   re   native   s   zPolarsBaseFrame.native	list[str]c                 C     | j jS r_   )ro   columnsrm   rd   rd   re   rr         zPolarsBaseFrame.columnsr   c                 C  s   t | jdS N)r[   )r   ra   rm   rd   rd   re   __narwhals_namespace__   s   z&PolarsBaseFrame.__narwhals_namespace__r!   c                 C  s.   | j tju r| j  S dt| j  }t|)NzExpected polars, got: )rh   r   POLARSto_native_namespacetypeAssertionError)rc   msgrd   rd   re   __native_namespace__   s   
z$PolarsBaseFrame.__native_namespace__r#   c                 C  s   | j || jdS rt   )	__class__ra   )rc   rZ   rd   rd   re   _with_native      zPolarsBaseFrame._with_nativec                 C  s   | j | j|dS rt   )r|   ro   )rc   r[   rd   rd   re   _with_version   r~   zPolarsBaseFrame._with_versiondatacontextr/   c               C  s   | ||j dS rt   )ra   )clsr   r   rd   rd   re   from_native   s   zPolarsBaseFrame.from_nativecolumn_namesstrc                 G  s   |  | jj| S r_   )r}   ro   rL   )rc   r   rd   rd   re   simple_select   s   zPolarsBaseFrame.simple_selectexprsr   c                 G  s
   | j | S r_   )rL   )rc   r   rd   rd   re   	aggregate      
zPolarsBaseFrame.aggregatedict[str, DType]c                 C  s   |   S r_   )collect_schemarm   rd   rd   re   schema   rs   zPolarsBaseFrame.schemaotherhowr4   left_onSequence[str] | Noneright_onsuffixc             	   C  s8   | j dk r|dkrdn|}| | jj|j||||dS )N)r         fullouterr   r   r   r   r   )ri   r}   ro   join)rc   r   r   r   r   r   
how_nativerd   rd   re   r      s   
zPolarsBaseFrame.joinkintbystr | Iterable[str]reversebool | Sequence[bool]c                C  s:   | j dk r| | jj|||dS | | jj|||dS )N   r   r   )r   r   
descendingr   r   r   )ri   r}   ro   top_k)rc   r   r   r   rd   rd   re   r      s   
zPolarsBaseFrame.top_konindexvariable_name
value_namec                 C  s>   | j dk r| | jj||||dS | | jj||||dS )Nr   )id_vars
value_varsr   r   )r   r   r   r   )ri   r}   ro   meltunpivot)rc   r   r   r   r   rd   rd   re   r      s   
zPolarsBaseFrame.unpivotc                   s4    j } jdk r|jn| } fdd| D S )Nr   c                   s   i | ]\}}|t | jqS rd   )r   ra   ).0namedtyperm   rd   re   
<dictcomp>   s    z2PolarsBaseFrame.collect_schema.<locals>.<dictcomp>)ro   ri   r   r   items)rc   rZ   r   rd   rm   re   r      s
   
zPolarsBaseFrame.collect_schemar   order_byc                 C  sd   | j }|d u r||}n | jdk rt nt }|tjd|d|	|t
 }| |S )N)r   r      r   )startend)ro   with_row_indexri   plcountlenrL   	int_rangesort_byaliasallr}   )rc   r   r   frameresultr   rd   rd   re   r      s   
zPolarsBaseFrame.with_row_indexN)rZ   rV   r[   r.   rY   r\   r]   r^   )r]   r^   )r]   rk   )r]   rV   )r]   rp   )r]   r   )r]   r!   )rZ   rV   r]   r#   )r[   r.   r]   r#   )r   rV   r   r/   r]   r#   )r   r   r]   r#   )r   r   r]   r#   r]   r   r   r#   r   r4   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   r   r]   r#   )__name__
__module____qualname____annotations__r   rv   rh   rf   rb   propertyri   ro   rr   ru   r{   r}   r   classmethodr   r   r   r   r   r   r   r   r   rd   rd   rd   re   rW   e   sL   
 










rW   c                      s  e Zd ZU ded< ded< ded< ded< ded	< d
ed< ded< ded< ded< ded< ded< ded< ded< ded< edd d!Zedd%d&Zedd*d+Zedd.d/Z	dd1d2Z
dd4d5Zdd6d7Zedd:d;Zedd=d;Zedd?d;ZddBd;ZddDdEZddHdIZ	JddJdKddPdQZddJdKddRdSZeddUdVZddXdYZdd[d\Zdd^d_ZdddcddZeddhdiZeddldiZddodiZddtduZddydzZed{dddZdddZd fddZ d fddZ!  Z"S )PolarsDataFramerX   r=   zMethod[CompliantDataFrameAny]collectzMethod[int | float]r?   rB   zMethod[Any]rE   z?Method[Iterator[tuple[Any, ...]] | Iterator[Mapping[str, Any]]]rF   zMethod[PolarsSeries]rD   zMethod[tuple[Any, ...]]rI   z?Method[Sequence[tuple[Any, ...]] | Sequence[Mapping[str, Any]]]rJ   rK   zMethod[pa.Table]rP   zMethod[pd.DataFrame]rQ   rT   Method[None]rU   r   r+   r   r/   r]   r#   c               C  s>   |j  dkrt|}ntdtt||}| j||dS )N)r      pl.DataFramer   )rh   ri   r   r0   r   
from_arrowr   r   )r   r   r   ro   rd   rd   re   r     s   zPolarsDataFrame.from_arrowMapping[str, Any]r   IntoSchema | Nonec               C  s:   ddl m} |d ur|| n|}| jt|||dS Nr   )Schemar   )narwhals.schemar   	to_polarsr   r   	from_dictr   r   r   r   r   	pl_schemard   rd   re   r     s   	zPolarsDataFrame.from_dictobjpl.DataFrame | AnyTypeIs[pl.DataFrame]c                 C     t | tjS r_   )
isinstancer   r0   r   rd   rd   re   
_is_native)     zPolarsDataFrame._is_nativer9   !IntoSchema | Sequence[str] | Nonec               C  s@   ddl m} t|t|fr|| n|}| jt|||dS r   )r   r   r   r   r   r   r   
from_numpyr   rd   rd   re   r   -  s   	zPolarsDataFrame.from_numpyDataFrame[pl.DataFrame]c                 C     | j j| ddS )Nr   level)ra   	dataframerm   rd   rd   re   to_narwhals?  r~   zPolarsDataFrame.to_narwhalsr   c                 C     dS )Nr   rd   rm   rd   rd   re   __repr__B     zPolarsDataFrame.__repr__c                 C     | S r_   rd   rm   rd   rd   re   __narwhals_dataframe__E  r   z&PolarsDataFrame.__narwhals_dataframe__	pl.Seriesr   c                 C     d S r_   rd   rc   r   rd   rd   re   _from_native_objectH  r   z#PolarsDataFrame._from_native_objectr   c                 C  r   r_   rd   r   rd   rd   re   r   K  r   r:   c                 C  r   r_   rd   r   rd   rd   re   r   N  r   pl.Series | pl.DataFrame | TSelf | PolarsSeries | Tc                 C  s2   t |tjrtj|| dS | |r| |S |S Nr   )r   r   Seriesr   r   r   r}   r   rd   rd   re   r   Q  s
   

r   c                 C  s
   t | jS r_   )r   ro   rm   rd   rd   re   __len__[  r   zPolarsDataFrame.__len__attrr   c                   8    t vrjj d  d}t|d	 fdd}|S )
N has not attribute ''.argsr   kwargsr]   c               
     s   t | |\}}ztj |i |W S  tjjy2 } z|dj d}t||d }~w tyB } zt	|d d }~ww )Nz+

Hint: Did you mean one of these columns: ?)
r   r   getattrro   r   
exceptionsr   rr   	Exceptionr   )r   r   poskwdserz   r   rc   rd   re   funcc  s   

z)PolarsDataFrame.__getattr__.<locals>.funcr   r   r   r   r]   r   INHERITED_METHODSr|   r   AttributeErrorrc   r   rz   r  rd   r  re   __getattr__^  s
   
zPolarsDataFrame.__getattr__N)copyr   
Any | Noner  bool | Nonec                C  s@   | j dk r|d urd}t|| j dk r| j|S | j|S )N)r   r      z=`copy` in `__array__` is only supported for 'polars>=0.20.28')ri   NotImplementedErrorro   	__array__)rc   r   r  rz   rd   rd   re   r  o  s   
zPolarsDataFrame.__array__c                C  rl   r_   )ro   to_numpy)rc   r   r  rd   rd   re   r  y  r   zPolarsDataFrame.to_numpytuple[int, int]c                 C  rq   r_   )ro   shaperm   rd   rd   re   r  |  rs   zPolarsDataFrame.shape]tuple[SingleIndexSelector | MultiIndexSelector[PolarsSeries], MultiColSelector[PolarsSeries]]c           
      C  s4  |\}}| j dkr*t|r|jn|}t|r|jn|}||f}| j|}| |S t|tr3t|n|}t|tr>t|n|}t|rH|	 }| j}t
|st|tr^t|dkr^|  S t|rt|sjt|rz|| jt|j|j|j }nPt|tr|d d |j f }n?|d d |f }n6t|tr|| jtt|| j  }n"t|r||j }nt|r||}ndt| }	t|	t
|st|tr||gd d f }n7t|ttfr||d d f }n't|r||jd d f }nt|r
||d d f }ndt| }	t|	| |S )N)r   r      r   z'Unreachable code, got unexpected type: )ri   r   ro   __getitem__r   r   tuplelistr   tolistr   r   r   rL   r   r   r   rr   slicer   stopstepr   to_listr   r   rx   ry   r   ranger}   )
rc   rE   rJ   rr   rows_nativecolumns_nativeselectorselectedro   rz   rd   rd   re   r    s^   







zPolarsDataFrame.__getitem__r   c                 C  s   t j| j|| dS r   )r   r   ro   
get_column)rc   r   rd   rd   re   r%    s   zPolarsDataFrame.get_columnIterator[PolarsSeries]c                 c  s&    | j  D ]
}tj|| dV  qd S r   )ro   iter_columnsr   r   )rc   seriesrd   rd   re   r'    s   zPolarsDataFrame.iter_columnsbackend_LazyAllowedImpl | Noner'   c           	      C  s   |d u s	|t ju rtj| j | dS |t ju r0dd l}ddlm	} | j}||
dd| jdS |t ju rOdd lm} ddlm} ||| j d| jdS | rldd l}ddlm} ||j| j| jd	d| jdS t)
Nr   r   )DuckDBLazyFramerZ   T)rY   r[   )DaskLazyFrame)IbisLazyFrame)rr   )r   rv   PolarsLazyFramer   ro   lazyDUCKDBduckdbnarwhals._duckdb.dataframer+  tablera   DASKdask.dataframer   narwhals._dask.dataframer,  from_pandasrQ   is_ibisibisnarwhals._ibis.dataframer-  memtablerr   ry   )	rc   r)  r1  r+  rZ   ddr,  r9  r-  rd   rd   re   r/    s4   

zPolarsDataFrame.lazy	as_seriesLiteral[True]dict[str, PolarsSeries]c                C  r   r_   rd   rc   r=  rd   rd   re   to_dict  r   zPolarsDataFrame.to_dictLiteral[False]dict[str, list[Any]]c                C  r   r_   rd   r@  rd   rd   re   rA    r   r\   .dict[str, PolarsSeries] | dict[str, list[Any]]c                  s.   |r fdd j   D S  j jddS )Nc                   s    i | ]\}}|t j| d qS )r   )r   r   )r   r   colrm   rd   re   r     s    z+PolarsDataFrame.to_dict.<locals>.<dictcomp>F)r=  )ro   rA  r   r@  rd   rm   re   rA    s
   
keys$Sequence[str] | Sequence[PolarsExpr]drop_null_keysr)   c                C     ddl m} || ||dS )Nr   )r)   rH  )narwhals._polars.group_byr)   )rc   rF  rH  r)   rd   rd   re   group_by     zPolarsDataFrame.group_byrr   Sequence[str]strictc                C  s    t | ||d}| | j|S )NrO  )r   r}   ro   drop)rc   rr   rO  to_droprd   rd   re   rQ    s   zPolarsDataFrame.dropr   r   r   r   valuesaggregate_functionPivotAgg | Nonesort_columns	separatorc          	   
   C  sJ   z| j j||||||d}W n ty } zt|d d }~ww | |S )N)r   rS  rT  rV  rW  )ro   pivotr  r   r   )	rc   r   r   rS  rT  rV  rW  r   r  rd   rd   re   rX  	  s   


zPolarsDataFrame.pivotc                 C  rn   r_   )ro   rm   rd   rd   re   r   !  s   zPolarsDataFrame.to_polarsr   r   r4   r   r   r   c             
     s<   zt  j|||||dW S  ty } zt|d d }~ww )Nr   )superr   r  r   )rc   r   r   r   r   r   r  r|   rd   re   r   $  s   	

zPolarsDataFrame.joinr   r   r   r   r   c             
     s8   z
t  j|||dW S  ty } zt|d d }~ww )Nr   )rY  r   r  r   )rc   r   r   r   r  rZ  rd   re   r   4  s   
zPolarsDataFrame.top_k)r   r+   r   r/   r]   r#   )r   r   r   r/   r   r   r]   r#   )r   r   r]   r   )r   r9   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]   r   r   r   r]   r   r_   )r   r  r  r  r]   r9   )r   r   r  r  r]   r9   )r]   r  )rE   r  r]   r   )r   r   r]   r   r]   r&  )r)  r*  r]   r'   )r=  r>  r]   r?  )r=  rB  r]   rC  )r=  r\   r]   rD  )rF  rG  rH  r\   r]   r)   rr   rN  rO  r\   r]   r#   )r   rN  r   r   rS  r   rT  rU  rV  r\   rW  r   r]   r#   )r]   r   r   r   )#r   r   r   r   r   r   r   staticmethodr   r   r   r   r   r   r   r   r  r  r  r   r  r  r%  r'  r/  rA  rL  rQ  r   backend_versionrX  r   r   r   __classcell__rd   rd   rZ  re   r     st   
 









C
$




r   c                      s   e Zd ZU ded< ed.ddZd/d
dZd0ddZd1ddZd2ddZ	d3ddZ
d4 fddZd5d d!Zd6d'd(Zd7d,d-Z  ZS )8r.  r   rM   r   pl.LazyFrame | Anyr]   TypeIs[pl.LazyFrame]c                 C  r   r_   )r   r   r1   r   rd   rd   re   r   @  r   zPolarsLazyFrame._is_nativeLazyFrame[pl.LazyFrame]c                 C  r   )Nr/  r   )ra   	lazyframerm   rd   rd   re   r   D  r~   zPolarsLazyFrame.to_narwhalsr   c                 C  r   )Nr.  rd   rm   rd   rd   re   r   G  r   zPolarsLazyFrame.__repr__r#   c                 C  r   r_   rd   rm   rd   rd   re   __narwhals_lazyframe__J  r   z&PolarsLazyFrame.__narwhals_lazyframe__r   r   c                   r   )
Nr   r   r   r   r   r]   c               
     sX   t | |\}}ztj |i |W S  tjjy+ } ztt||d }~ww r_   )r   r}   r   ro   r   r   r   r   )r   r   r  r  r  r  rd   re   r  R  s   z)PolarsLazyFrame.__getattr__.<locals>.funcr  r  r  rd   r  re   r  M  s
   zPolarsLazyFrame.__getattr__r&  c                 c  s    |  tj E d H  d S r_   )r   r   rv   r'  rm   rd   rd   re   _iter_columns[  s   zPolarsLazyFrame._iter_columnsr   c              
     s0   zt   W S  ty } zt|d d }~ww r_   )rY  r   r  r   )rc   r  rZ  rd   re   r   ^  s   
zPolarsLazyFrame.collect_schemar)  _EagerAllowedImpl | Noner   r&   c              
   K  s   z| j jd
i |}W n ty } zt|d d }~ww |d u s&|tju r-tj|| dS |tju rEddl	m
} || tjd| jddS |tju r[ddlm} || d| jddS d	| }t|)Nr   r   )PandasLikeDataFrameTF)implementationrY   r[   validate_column_names)ArrowDataFrame)rY   r[   rl  zUnsupported `backend` value: rd   )ro   r   r  r   r   rv   r   r   PANDASnarwhals._pandas_like.dataframerj  rQ   ra   PYARROWnarwhals._arrow.dataframerm  rP   
ValueError)rc   r)  r   r   r  rj  rm  rz   rd   rd   re   r   d  s6   



zPolarsLazyFrame.collectrF  rG  rH  r\   r*   c                C  rI  )Nr   )r*   rJ  )rK  r*   )rc   rF  rH  r*   rd   rd   re   rL    rM  zPolarsLazyFrame.group_byrr   rN  rO  c                C  s2   | j dk r| | j|S | | jj||dS )Nr   rP  )ri   r}   ro   rQ  )rc   rr   rO  rd   rd   re   rQ    s   
zPolarsLazyFrame.drop)r   rc  r]   rd  )r]   re  r[  r\  r]  r^  r   )r)  ri  r   r   r]   r&   )rF  rG  rH  r\   r]   r*   r_  )r   r   r   r   r`  r   r   r   rg  r  rh  r   r   rL  rQ  rb  rd   rd   rZ  re   r.  =  s   
 






#r.  )[
__future__r   collections.abcr   r   r   r   typingr   r   r	   r
   r   r   r   polarsr   narwhals._polars.namespacer   narwhals._polars.seriesr   narwhals._polars.utilsr   r   r   narwhals._utilsr   r   r   r   r   r   r   r   r   r   r   narwhals.dependenciesr   narwhals.exceptionsr   r    typesr!   r"   pandaspdpyarrowpatyping_extensionsr#   r$   r%   narwhals._compliant.typingr&   r'   narwhals._polars.exprr(   rK  r)   r*   narwhals._translater+   narwhals._typingr,   r-   r.   r/   narwhals.dataframer0   r1   narwhals.dtypesr2   narwhals.typingr3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r   	frozensetr	  rV   rW   r   r.  rd   rd   rd   re   <module>   sP    $4$
   >