
    4i&                    H   S SK Jr  S SKrS SKrS SKrS SKJr  S SKrS SK	J
r
  S SKJrJrJrJr  S SKrS SKJrJr  S SKJrJr  S SKJr  S S	KJr  S S
KJrJr  S SKJ r J!r!  \(       a  S SK"J#r#  \ " S S\
5      5       r$ " S S\\\5      r%SS jr&SS jr'\%RQ                  5         g)    )annotationsN)TYPE_CHECKING)ExtensionDtype)is_dtype_equalis_float
is_integerpandas_dtype)
no_defaultregister_extension_dtype)is_list_like	is_scalar)	arraylike)OpsMixin)ExtensionArrayExtensionScalarOpsMixin)check_array_indexergetitem_returns_view)type_tc                      \ rS rSr\R
                  rSr\R
                  " S5      rSr	S
SS jjr
SS jrSS jr\SS	 j5       rSrg)DecimalDtype*   decimalNaNcontextNc                J    U=(       d    [         R                  " 5       U l        g N)r   
getcontextr   )selfr   s     f/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/pandas/tests/extension/decimal/array.py__init__DecimalDtype.__init__1   s    6'"4"4"6    c                "    SU R                    S3$ )NzDecimalDtype(context=)r   r   s    r    __repr__DecimalDtype.__repr__4   s    &t||nA66r#   c                    [         $ )zI
Return the array type associated with this dtype.

Returns
-------
type
)DecimalArrayr&   s    r    construct_array_type!DecimalDtype.construct_array_type7   s
     r#   c                    g)NT r&   s    r    _is_numericDecimalDtype._is_numericA   s    r#   r   returnNone)r2   str)r2   ztype_t[DecimalArray])r2   bool)__name__
__module____qualname____firstlineno__r   Decimaltypenamena_value	_metadatar!   r'   r+   propertyr/   __static_attributes__r.   r#   r    r   r   *   sF    ??DDu%HI77  r#   r   c                    ^  \ rS rSrSrS S!S jjr\S 5       r\SSS.S j5       r	\SS	.S"S
 jj5       r
\S 5       r\R                  \R                  \R"                  4rSS\S4     S#S jjrS$S jrS rS%S jrS rS&U 4S jjrS!S jrS'S jrS(U 4S jjr\S'S j5       rS r\S 5       rS)S jr \S 5       r!SSS.     S*S jjr"S r#S+U 4S jjr$Sr%U =r&$ ),r*   F   i  NFc                   [        U5       H  u  pV[        U5      (       d  [        U5      (       aH  [        R                  " U5      (       a  [
        R                  X'   MT  [
        R                  U5      X'   Mm  [        U[        R                  5      (       a  M  [        S[        [        R                  5      -   5      e   [        R                  " U[        S9nXl        U R                  =U l        U l        [        U5      U l        g )NzAll values must be of type dtype)	enumerater   r   npisnanr   r=   r;   
isinstancer   r:   	TypeErrorr4   asarrayobject_data_itemsdata_dtype)r   valuesrE   copyr   ivals          r    r!   DecimalArray.__init__I   s    'FA}}
388C== , 5 5FI
 !- 1 1# 6FIW__55 =GOO@T TUU ( F&1
 #'**,di #7+r#   c                    U R                   $ r   )rP   r&   s    r    rE   DecimalArray.dtype`   s    {{r#   rE   rR   c                   U " U5      $ r   r.   )clsscalarsrE   rR   s       r    _from_sequenceDecimalArray._from_sequenced   s    7|r#   rR   c               v    U R                  U Vs/ s H  n[        R                  " U5      PM     snX#S9$ s  snf )NrX   )r\   r   r:   )rZ   stringsrE   rR   xs        r    _from_sequence_of_strings&DecimalArray._from_sequence_of_stringsh   s:    !!)01AW__Q1 " 
 	
1s    6c                    U " U5      $ r   r.   )rZ   rQ   originals      r    _from_factorizedDecimalArray._from_factorizedn   s    6{r#   c           	         [         R                  " XS9nUb0  [         R                  " U Vs/ s H  n[        Xd5      PM     sn5      nU$ s  snf NrD   )rG   rK   round)r   rE   rR   r=   decimalsresultra   s          r    to_numpyDecimalArray.to_numpy~   sE     D.ZZV DVq!3V DEF !Es   A
c                  ^ ^ [        U 4S jU 5       5      (       d  [        $ [        R                  " T X/UQ70 UD6nU[        La  U$ SU;   a  [        R                  " T X/UQ70 UD6$ [        S U 5       5      n[        X5      " U0 UD6nUS:X  a&  [        R                  " T X/UQ70 UD6nU[        La  U$ U 4S jmUR                  S:  a  [        U4S jU 5       5      $ T" U5      $ )Nc              3  b   >#    U  H$  n[        U/ TR                  Q[        P75      v   M&     g 7fr   )rI   _HANDLED_TYPESr*   ).0tr   s     r    	<genexpr>/DecimalArray.__array_ufunc__.<locals>.<genexpr>   s.     WPV1:a!E4#6#6!E!EFFPVs   ,/outc              3  h   #    U  H(  n[        U[        5      (       a  UR                  OUv   M*     g 7fr   )rI   r*   rM   )rr   ra   s     r    rt   ru      s%     Uf*Q"="=qww1Dfs   02reducec                   > [        U [        R                  [        R                  45      (       a  U $ [        T5      R                  U TR                  S9$ ri   )rI   r   r:   numbersNumberr;   r\   rE   )ra   r   s    r    reconstruct1DecimalArray.__array_ufunc__.<locals>.reconstruct   s@    !goow~~>??Dz00$**0EEr#      c              3  4   >#    U  H  nT" U5      v   M     g 7fr   r.   )rr   ra   r|   s     r    rt   ru      s     8AQs   )	allNotImplementedr   !maybe_dispatch_ufunc_to_dunder_opdispatch_ufunc_with_outtuplegetattrdispatch_reduction_ufuncnout)r   ufuncmethodinputskwargsrl   r|   s   `     @r    __array_ufunc__DecimalArray.__array_ufunc__   s   WPVWWW!!<<%
"(
,2
 'MF?44e&,06  UfUU':6:X77e&,06F ^+	F ::>8888v&&r#   c                X   [        U[        R                  5      (       a  U R                  U   $ [        R
                  R                  R                  X5      n[        U 5      " U R                  U   U R                  R                  S9n[        X5      (       a  U R                  Ul        U$ Nr   )rI   rz   IntegralrM   pdapiindexersr   r;   rE   r   r   	_readonly)r   itemrl   s      r    __getitem__DecimalArray.__getitem__   s}    dG,,--::d## 66??66tBD$Z

4 0$**:L:LMF#D//#'>> Mr#   c                    SSK Jn  U R                  nU(       a  Uc  U R                  R                  nU" XQX2S9nU R                  X`R                  S9$ )Nr   )take)
fill_value
allow_fillrD   )pandas.api.extensionsr   rM   rE   r=   r\   )r   indexerr   r   r   rO   rl   s          r    r   DecimalArray.take   sI    .zz*,,,Jd
R""6"<<r#   c                f    [        U 5      " U R                  R                  5       U R                  S9$ ri   )r;   rM   rR   rE   r&   s    r    rR   DecimalArray.copy   s"    Dz$**//+4::>>r#   Tc                
  > [        XR                  5      (       a	  U(       d  U $ [        U5      n[        U[	        U R
                  5      5      (       a$  [	        U 5      " U R                  X!R                  S9$ [        TU ]%  XS9$ )N)rR   r   r^   )
r   rP   r	   rI   r;   rE   rM   r   superastype)r   rE   rR   	__class__s      r    r   DecimalArray.astype   sd    %--U#eT$**-..:djjt]]KKw~e~//r#   c                H   U R                   (       a  [        S5      e[        U5      (       aB  [        U5      (       a  [        S5      eU Vs/ s H  n[        R
                  " U5      PM     nnO[        R
                  " U5      n[        X5      nX R                  U'   g s  snf )NzCannot modify read-only arrayz)setting an array element with a sequence.)r   
ValueErrorr   r   r   r:   r   rM   )r   keyvaluevs       r    __setitem__DecimalArray.__setitem__   s|    >><==~~ !LMM167AW__Q'E7EOOE*E!$,

3 8s    Bc                ,    [        U R                  5      $ r   )lenrM   r&   s    r    __len__DecimalArray.__len__   s    4::r#   c                   > [        U[        R                  5      (       d  gUR                  5       (       a  U R	                  5       R                  5       $ [        TU ]  U5      $ )NF)rI   r   r:   is_nanisnaanyr   __contains__)r   r   r   s     r    r   DecimalArray.__contains__   sE    $00[[]]99;??$$7'--r#   c                `    [        U 5      nU(       a  U[        R                  " U S   5      -  $ g)Nr   )r   sys	getsizeof)r   ns     r    nbytesDecimalArray.nbytes   s)    Is}}T!W---r#   c                    [         R                  " U R                   Vs/ s H  oR                  5       PM     sn[        S9$ s  snf ri   )rG   arrayrM   r   r5   )r   ra   s     r    r   DecimalArray.isna   s-    xxTZZ8ZZ8EE8s   Ac                .    [         R                  " S5      $ )Nr   )r   r:   r&   s    r    	_na_valueDecimalArray._na_value   s    u%%r#   c                4    U(       a  SR                   $ [        $ )NzDecimal: {})formatrepr)r   boxeds     r    
_formatterDecimalArray._formatter   s     '''r#   c                x    U " [         R                  " U Vs/ s H  o"R                  PM     sn5      5      $ s  snf r   )rG   concatenaterM   )rZ   	to_concatra   s      r    _concat_same_typeDecimalArray._concat_same_type   s*    2>>I">Iq77I">?@@">s   7)skipnakeepdimsc                  U(       aJ  U R                  5       R                  5       (       a'  X R                  5       )    nUR                  " U40 UD6nOIUS:X  a&  [        U 5      S:X  a  [        R
                  " S5      nO [        U R                  U5      nU" SS9nU(       a  [        U 5      " U/5      $ U$ ! [         a  n[        SU S35      UeS nAff = f)Nsumr   zdecimal does not support the z
 operation)axis)r   r   _reducer   r   r:   r   rO   AttributeErrorNotImplementedErrorr;   )	r   r<   r   r   r   otherrl   operrs	            r    r   DecimalArray._reduce  s     diikoo''))+&E]]4262FU]s4yA~__Q'FTYY-
 QZF:vh''M " )3D6Ds   ?B6 6
C CCc                   ^  U 4S jnT nU" U5      n[        XESS9 VVs/ s H  u  pgU" Xg5      PM     nnn[        R                  " U[        S9$ s  snnf )Nc                x   > [        U [        5      (       d  [        U 5      (       a  U nU$ U /[        T5      -  nU$ r   )rI   r   r   r   )paramovaluesr   s     r    convert_values0DecimalArray._cmp_method.<locals>.convert_values  s=    %00L4G4G N !'CI-Nr#   T)strictrD   )ziprG   rK   r5   )	r   r   r   r   lvaluesrvaluesabress	   `        r    _cmp_methodDecimalArray._cmp_method  sU    	  ' '*'4&HI&HFQr!x&HIzz#T** Js   Ac                    > [         TU ]  XSS9$ )NT)r   limitrR   )r   fillna)r   r   r   r   s      r    r   DecimalArray.fillna/  s    w~ET~BBr#   )rM   rP   rN   rO   )NFNr1   )rE   r   )rR   r5   r=   rL   r2   z
np.ndarray)r   znp.ufuncr   r4   )FN)T)r2   int)r2   zbool | np.bool_)F)r<   r4   r   r5   r   r5   )NN)'r6   r7   r8   r9   __array_priority__r!   r?   rE   classmethodr\   rb   rf   r   r:   rz   r{   rG   ndarrayrq   r
   rm   r   r   r   rR   r   r   r   r   r   r   r   r   r   r   r   r   r@   __classcell__)r   s   @r    r*   r*   F   sX   ,.   .2   OT 
 

   oow~~rzzBN %
 
 	
 

#'J	=?0 .  F & &
 A A ,0%$(;?0+,C Cr#   r*   c                j    [        U  Vs/ s H  n[        R                  " U5      PM     snUS9$ s  snf r   )r*   r   r:   )rQ   r   ra   s      r    
to_decimalr   3  s*    V<V+V<gNN<s    0c                    [         R                  R                  S5      R                  U 5       Vs/ s H  n[        R                  " U5      PM     sn$ s  snf )N   )rG   randomdefault_rngr   r:   )r   rT   s     r    	make_datar   7  s?    ,.II,A,A!,D,K,KA,NO,NSGOOC ,NOOOs    Ar   )r   r   ))
__future__r   r   rz   r   typingr   numpyrG   pandas.core.dtypes.baser   pandas.core.dtypes.commonr   r   r   r	   pandasr   r   r
   r   pandas.api.typesr   r   pandas.corer   pandas.core.arrayliker   pandas.core.arraysr   r   pandas.core.indexersr   r   pandas._typingr   r   r*   r   r   _add_arithmetic_opsr.   r#   r    <module>r     s    "   
    2   " *
 % >  6jC84n jCZOP      "r#   