
    `Vg                         d dl mZ d dlZd dlmZmZmZmZmZ d dl	Z
d dlmZ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mZmZmZmZmZ d d	lmZm Z  erd dl!Z! ed
d      Z" G d de       Z#d Z$ G d de      Z%y)    )annotationsN)TYPE_CHECKINGAnyCallableMappingTypeVar)libmissing)DtypeDtypeObjnptAbstractMethodError)cache_readonly)is_bool_dtypeis_float_dtypeis_integer_dtypeis_object_dtypeis_string_dtypepandas_dtype)BaseMaskedArrayBaseMaskedDtypeTNumericArray)boundc                      e Zd ZU ded<   ded<   ddZedd       Zedd       Zedd       Z		 	 	 	 dd	Z
edd
       Zedd       Zedd       Zy)NumericDtypenp.dtype_default_np_dtypezCallable[[Any], bool]_checkerc                     | j                    dS )NzDtype())nameselfs    [/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/core/arrays/numeric.py__repr__zNumericDtype.__repr__3   s    ))G$$    c                     | j                   dk(  S )Nikindr#   s    r%   is_signed_integerzNumericDtype.is_signed_integer6       yyCr'   c                     | j                   dk(  S )Nur*   r#   s    r%   is_unsigned_integerz NumericDtype.is_unsigned_integer:   r-   r'   c                     y)NT r#   s    r%   _is_numericzNumericDtype._is_numeric>   s    r'   c                $   ddl }ddlm} | j                         } |j                  | j
                        }|j
                  j                  |      s^t        |j
                  j                               }|j                  dvrt        d|  d|j
                   d      |j                  |      }t        ||j                        r|g}n|j                  }g }|D ]D  }	 ||	| j                        \  }
} ||
j!                         | d	
      }|j#                  |       F |sK |t%        j&                  g | j                        t%        j&                  g t$        j(                              S t+        |      dk(  r|d   S |j-                  |      S )zW
        Construct IntegerArray/FloatingArray from pyarrow Array/ChunkedArray.
        r   N)pyarrow_array_to_numpy_and_mask)r)   r/   fzExpected array of z type, got z instead)dtypeFcopy   )pyarrow%pandas.core.arrays.arrow._arrow_utilsr5   construct_array_typefrom_numpy_dtypetypeequalsr   to_pandas_dtyper+   	TypeErrorcast
isinstanceArraychunksnumpy_dtyper9   appendnparraybool_len_concat_same_type)r$   rJ   r;   r5   array_classpyarrow_typert_dtyperF   resultsarrdatamasknum_arrs                r%   __from_arrow__zNumericDtype.__from_arrow__B   sj    		
 //1/w//		:zz  . $EJJ$>$>$@AH}}O3  (k%**XN  JJ|,EeW]]+WF \\F 	$C8DDTDTUJD$!$))+u5AGNN7#	$
 4#3#34bhhr6R  \Q1:0099r'   c                    t        |       Nr   )clss    r%   _str_to_dtype_mappingz"NumericDtype._str_to_dtype_mappingt   s    !#&&r'   c                0   t        |t              r!|j                  d      r|j                         }t        |t              s4| j                         }	 |t        t        j                  |               }|S |S # t        $ r}t        d|       |d}~ww xY w)zS
        Convert a string representation or a numpy dtype to NumericDtype.
        )IntUIntFloatzinvalid dtype specified N)
rD   str
startswithlowerr   rZ   rI   r7   KeyError
ValueError)rY   r7   mappingerrs       r%   _standardize_dtypezNumericDtype._standardize_dtypex   s    
 eS!u'7'78P'Q KKME%.//1GNBHHUO 45 u  N #;E7!CD#MNs   !A8 8	BBBc                    t        |       )z{
        Safely cast the values to the given dtype.

        "safe" in this context means the casting is lossless.
        r   )rY   valuesr7   r9   s       r%   
_safe_castzNumericDtype._safe_cast   s     "#&&r'   N)returnr_   )rj   bool)rJ   z$pyarrow.Array | pyarrow.ChunkedArrayrj   r   )rj   zMapping[str, NumericDtype])r7   zNumericDtype | str | np.dtyperj   r   )rh   
np.ndarrayr7   r   r9   rk   rj   rl   )__name__
__module____qualname____annotations__r&   r   r,   r0   propertyr3   rV   classmethodrZ   rf   ri   r2   r'   r%   r   r   /   s    ##%          0:90:	0:d ' '  " ' 'r'   r   c                b   |j                   }d }|*t        | d      r || j                        r| j                  }||j                  |      }|j	                         }t        | |      r_| j                  | j                  }} || j                  |j                  d      } |r | j                         } |j                         }| |||fS t        j                  | |      } d }t        | j                        st        | j                        rWt        j                   | d      }|dk(  rn|dk(  r|j"                  j%                  d      }	t'        | j                   d	|	       t)        |       r! ||      rt        j                  | ||
      } nKt+        |       s@t-        |       s5|j"                  j%                  d      }	t'        | j                   d	|	       | j.                  dk7  rt'        d      |t1        j2                  |       }nt5        |      t5        |       k(  sJ |j.                  dk7  rt'        d      ||}n|j6                  }|j9                         r| j                         } |j:                  | |<   |dv r| j                  ||      } n|j=                  | |d      } | |||fS )Nr7   Fr8   T)skipnaemptyboolean_z cannot be converted to r7   r9   r:   zvalues must be a 1D list-likezmask must be a 1D list-like)stringunicode)r    hasattrr7   rf   r=   rD   _data_maskastyperG   r9   rI   rJ   r   r   r	   infer_dtyperm   striprB   r   r   r   ndim
libmissingis_numeric_narL   r?   any_internal_fill_valueri   )
rh   rT   r7   r9   	dtype_clsdefault_dtypecheckerinferred_typerY   r"   s
             r%   _coerce_to_data_and_maskr      sq     GM}16<< LLE,,U3

(
(
*C&#||V\\]]5#4#45]AF[[]F99;DtUM11XXf4(FMv||$(Et<G#i'%%++C0Dv||n,DTFKLL	v	75>&DAv&.*@!!'',6<<.(@GHH{{a788|''/4yCK'''yyA~566 }

 xxz//t-- u40%%fe%%@4--r'   c                       e Zd ZU dZded<   	 d	 	 	 	 	 	 	 d fdZedd       Zedd	 	 	 	 	 dd       Z	ed	dd
	 	 	 	 	 	 	 dd       Z
ej                  ej                  fZ xZS )r   z8
    Base class for IntegerArray and FloatingArray.
    ztype[NumericDtype]
_dtype_clsFc                V   | j                   j                  }t        |t        j                        r ||j
                        s,| j                   j                  dk(  rdnd}t        d| d      |j
                  t        j                  k(  rt        d      t        | )  |||       y )Nr6   floatingintegerzvalues should be z1 numpy array. Use the 'pd.array' function insteadz0FloatingArray does not support np.float16 dtype.r8   )r   r    rD   rI   ndarrayr7   r+   rB   float16super__init__)r$   rh   rT   r9   r   descr	__class__s         r%   r   zNumericArray.__init__   s     //**62::.76<<3H ??''3.  
 #E7 +2 2  <<2::%NOOD1r'   c                z    | j                   j                         }|t        | j                  j                           S rX   )r   rZ   r_   r|   r7   )r$   rd   s     r%   r7   zNumericArray.dtype   s.    //779s4::++,--r'   r8   c               h    | j                   }|j                  }d }t        ||||||      \  }}}}||fS rX   )r   r   r   )	rY   valuer7   r9   r   r   rT   rh   rw   s	            r%   _coerce_to_arrayzNumericArray._coerce_to_array   sI     NN	!3354i
a t|r'   Nrx   c               J    ddl m}  ||d      }| j                  |||      S )Nr   )
to_numericraise)errorsrx   )pandas.core.tools.numericr   _from_sequence)rY   stringsr7   r9   r   scalarss         r%   _from_sequence_of_stringsz&NumericArray._from_sequence_of_strings  s+     	9WW5!!'T!BBr'   )F)rh   rl   rT   znpt.NDArray[np.bool_]r9   rk   rj   None)rj   r   )r7   r   r9   rk   rj   ztuple[np.ndarray, np.ndarray])rY   ztype[T]r7   zDtype | Noner9   rk   rj   r   )rm   rn   ro   __doc__rp   r   r   r7   rr   r   r   rI   r   numbersNumber_HANDLED_TYPES__classcell__)r   s   @r%   r   r      s     #" MR2 2(=2EI2	2( . . 5:	&	.2		&	 	 8<5CC)5CDHC	
C C jj'..1Nr'   )&
__future__r   r   typingr   r   r   r   r   numpyrI   pandas._libsr	   r
   r   pandas._typingr   r   r   pandas.errorsr   pandas.util._decoratorsr   pandas.core.dtypes.commonr   r   r   r   r   r   pandas.core.arrays.maskedr   r   r;   r   r   r   r   r2   r'   r%   <module>r      sx    "    
 . 2 
  C~&b'? b'JD.N52? 52r'   