o
    5ct7                     @  s   d dl mZ d dlZd dlmZ d dlmZmZ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 d d
lmZ d dlmZ d dlmZ d dlmZ G dd deeeZ dS )    )annotationsN)lib)DtypeNpDtypeScalarnpt)function)'construct_1d_object_array_from_listlike)PandasDtype)isna)	arraylikenanopsops)OpsMixin)NDArrayBackedExtensionArray)ensure_wrapped_if_datetimelike)ObjectStringArrayMixinc                      s"  e Zd ZU dZdZdZded< ded< ejZ	dgdh fddZ
eddddiddZdjddZedkddZdldmddZdnd#d$Zdod%d&Zd'd( Zdpd*d+Zdddd,d-dqd2d3Zdddd,d-dqd4d5Zdd,d6drd8d9Zdd,d6drd:d;Zdd,d<d=drd>d?Zdd,d<d=drd@dAZddddd,dBdsdCdDZddddd,dEdtdGdHZddddIdd,dJdsdKdLZddddIdd,dJdsdMdNZddddIdd,dJdsdOdPZddddd,dBdsdQdRZ ddddd,dBdsdSdTZ!dde"j#fdudXdYZ$dvdZd[Z%dvd\d]Z&dvd^d_Z'dvd`daZ(dbdc Z)e)Z*dwdedfZ+ejZ,  Z-S )xPandasArraya  
    A pandas ExtensionArray for NumPy data.

    This is mostly for internal compatibility, and is not especially
    useful on its own.

    Parameters
    ----------
    values : ndarray
        The NumPy ndarray to wrap. Must be 1-dimensional.
    copy : bool, default False
        Whether to copy `values`.

    Attributes
    ----------
    None

    Methods
    -------
    None
    npy_extensioni  
np.ndarray_ndarrayr
   _dtypeFvaluesnp.ndarray | PandasArraycopyboolreturnNonec                   sn   t |t| r
|j}t |tjstdt|j |jdkr#td|r)| }t	|j
}t || d S )Nz$'values' must be a NumPy array, not r   z"PandasArray must be 1-dimensional.)
isinstancetyper   npndarray
ValueError__name__ndimr   r
   dtypesuper__init__)selfr   r   r%   	__class__ O/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/core/arrays/numpy_.pyr'   E   s   

zPandasArray.__init__N)r%   r   r%   Dtype | Nonec                C  sf   t |tr|j}tj||d}|jdkr%t|ds%|d u s!|tkr%t|}|r/||u r/|	 }| |S )Nr%      r%   )
r   r
   r   r    asarrayr$   hasattrobjectr	   r   )clsscalarsr%   r   resultr+   r+   r,   _from_sequenceW   s   
zPandasArray._from_sequencearrc                 C  s   t | |S Nr   )r(   r7   r+   r+   r,   _from_backing_datap   s   zPandasArray._from_backing_datac                 C  s   | j S r8   )r   r(   r+   r+   r,   r%   v   s   zPandasArray.dtypeNpDtype | Nonec                 C  s   t j| j|dS Nr.   )r    r0   r   )r(   r%   r+   r+   r,   	__array__}      zPandasArray.__array__ufuncnp.ufuncmethodstrc                   s$  | dd}tj ||g|R i |}|tur|S d|v r,tj ||g|R i |S |dkrDtj ||g|R i |}|turD|S tdd |D }|rZtdd |D |d< t|||i |}|j	dkrtt fdd|D S |d	krzd S |dkrt
|tjrt |S |S t |S )
Noutr+   reducec                 s  $    | ]}t |tr|jn|V  qd S r8   r   r   r   .0xr+   r+   r,   	<genexpr>   s   " z.PandasArray.__array_ufunc__.<locals>.<genexpr>c                 s  rF   r8   rG   rH   r+   r+   r,   rK      s    
r/   c                 3  s    | ]	}t  |V  qd S r8   r9   rH   r;   r+   r,   rK      s    at)getr   !maybe_dispatch_ufunc_to_dunder_opNotImplementedr   dispatch_ufunc_with_outdispatch_reduction_ufunctuplegetattrnoutr   r    r!   r   )r(   r@   rB   inputskwargsrD   r5   r+   r;   r,   __array_ufunc__   sV   
zPandasArray.__array_ufunc__c                 C  s
   t | jS r8   )r   r   r;   r+   r+   r,   r      s   
zPandasArray.isnac                 C  s   |d u r| j j}|S r8   )r%   na_value)r(   
fill_valuer+   r+   r,   _validate_scalar   s   zPandasArray._validate_scalartuple[np.ndarray, float | None]c                 C  s"   | j jdv r	d }ntj}| j|fS )N)iub)r%   kindr    nanr   )r(   fvr+   r+   r,   _values_for_factorize   s   
z!PandasArray._values_for_factorizeT)axisrD   keepdimsskipnarc   
int | Nonerd   re   c                C  0   t d||d tj| j||d}| ||S Nr+   )rD   rd   rc   re   )nvvalidate_anyr   nananyr   _wrap_reduction_resultr(   rc   rD   rd   re   r5   r+   r+   r,   any      zPandasArray.anyc                C  rg   rh   )rj   validate_allr   nanallr   rm   rn   r+   r+   r,   all   rp   zPandasArray.allri   r   c                K  0   t d| tj| j||  |d}| ||S Nr+   )r   rc   maskre   )rj   validate_minr   nanminr   r   rm   r(   rc   re   rV   r5   r+   r+   r,   min   
   zPandasArray.minc                K  rt   ru   )rj   validate_maxr   nanmaxr   r   rm   ry   r+   r+   r,   max   r{   zPandasArray.maxr   rc   re   	min_countc                K  ,   t d| tj| j|||d}| ||S Nr+   r   )rj   validate_sumr   nansumr   rm   r(   rc   re   r   rV   r5   r+   r+   r,   sum   
   
zPandasArray.sumc                K  r   r   )rj   validate_prodr   nanprodr   rm   r   r+   r+   r,   prod   r   zPandasArray.prod)rc   r%   rD   rd   re   c                C  2   t d|||d tj| j||d}| ||S )Nr+   r%   rD   rd   ri   )rj   validate_meanr   nanmeanr   rm   r(   rc   r%   rD   rd   re   r5   r+   r+   r,   mean  s   	zPandasArray.mean)rc   rD   overwrite_inputrd   re   r   c                C  r   )Nr+   )rD   r   rd   ri   )rj   validate_medianr   	nanmedianr   rm   )r(   rc   rD   r   rd   re   r5   r+   r+   r,   median  s
   	zPandasArray.medianr/   )rc   r%   rD   ddofrd   re   c                C  8   t jd|||ddd tj| j|||d}| ||S )Nr+   r   stdfnamerc   re   r   )rj   validate_stat_ddof_funcr   nanstdr   rm   r(   rc   r%   rD   r   rd   re   r5   r+   r+   r,   r     
   
zPandasArray.stdc                C  r   )Nr+   r   varr   r   )rj   r   r   nanvarr   rm   r   r+   r+   r,   r   .  r   zPandasArray.varc                C  r   )Nr+   r   semr   r   )rj   r   r   nansemr   rm   r   r+   r+   r,   r   >  r   zPandasArray.semc                C  6   t jd|||ddd tj| j||d}| ||S )Nr+   r   kurtr   ri   )rj   r   r   nankurtr   rm   r   r+   r+   r,   r   N  
   	zPandasArray.kurtc                C  r   )Nr+   r   skewr   ri   )rj   r   r   nanskewr   rm   r   r+   r+   r,   r   ]  r   zPandasArray.skewnpt.DTypeLike | NonerX   r2   c                 C  sJ   t j| j|d}|s|tjur|| ju r| }|tjur#|||  < |S r=   )r    r0   r   r   
no_defaultr   r   )r(   r%   r   rX   r5   r+   r+   r,   to_numpyo  s   
zPandasArray.to_numpyc                 C  s   t | | j S r8   r   r   r;   r+   r+   r,   
__invert__  r?   zPandasArray.__invert__c                 C  s   t | | j S r8   r   r;   r+   r+   r,   __neg__  r?   zPandasArray.__neg__c                 C  s   t | | j
 S r8   r   r;   r+   r+   r,   __pos__  r?   zPandasArray.__pos__c                 C  s   t | t| jS r8   )r   absr   r;   r+   r+   r,   __abs__  s   zPandasArray.__abs__c                 C  s   t |tr|j}t|t| f}t|}t|}tj	dd || j|}W d    n1 s1w   Y  |t
u s?|tju rW|\}}t |tjrS| || |fS ||fS t |tjrb| |S |S )Nignore)rs   )r   r   r   r   maybe_prepare_scalar_for_oplenget_array_opr   r    errstatedivmodrdivmodr!   _wrap_ndarray_result)r(   otheroppd_opr5   ar^   r+   r+   r,   _cmp_method  s    


zPandasArray._cmp_methodr5   c                 C  s,   |j dkrddlm} ||S t| |S )Nztimedelta64[ns]r   )TimedeltaArray)r%   pandas.core.arraysr   _simple_newr   )r(   r5   r   r+   r+   r,   r     s   

z PandasArray._wrap_ndarray_result)F)r   r   r   r   r   r   )r%   r-   r   r   r   r   )r7   r   r   r   )r   r
   r8   )r%   r<   r   r   )r@   rA   rB   rC   )r   r   )r   r[   )rc   rf   rd   r   re   r   )rc   rf   re   r   r   r   )rc   rf   r%   r<   rd   r   re   r   )rc   rf   r   r   rd   r   re   r   )r%   r   r   r   rX   r2   r   r   )r   r   )r5   r   ).r#   
__module____qualname____doc___typ__array_priority____annotations__r    r`   _internal_fill_valuer'   classmethodr6   r:   propertyr%   r>   rW   r   rZ   rb   ro   rs   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _arith_methodr   _str_na_value__classcell__r+   r+   r)   r,   r      s   
 


7






r   )!
__future__r   numpyr    pandas._libsr   pandas._typingr   r   r   r   pandas.compat.numpyr   rj   pandas.core.dtypes.castr	   pandas.core.dtypes.dtypesr
   pandas.core.dtypes.missingr   pandas.corer   r   r   pandas.core.arrayliker   pandas.core.arrays._mixinsr   pandas.core.constructionr    pandas.core.strings.object_arrayr   r   r+   r+   r+   r,   <module>   s$    
