
    Mh                        S r SSKJ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rSSKJrJr  SSKJr  \(       a  SSKJr   " S	 S
\
5      r " S S\5      rS rg)zp
Test extension array for storing nested data in a pandas container.

The ListArray stores an ndarray of lists.
    )annotationsN)TYPE_CHECKING)ExtensionDtype)is_object_dtypeis_string_dtype)ExtensionArray)type_tc                  H    \ rS rSr\rSr\R                  r	\
SS j5       rSrg)	ListDtype   listc                    [         $ )zI
Return the array type associated with this dtype.

Returns
-------
type
)	ListArray)clss    S/var/www/html/env/lib/python3.13/site-packages/pandas/tests/extension/list/array.pyconstruct_array_typeListDtype.construct_array_type    s
          N)returnztype_t[ListArray])__name__
__module____qualname____firstlineno__r   typenamenpnanna_valueclassmethodr   __static_attributes__r   r   r   r   r      s'    DDvvH r   r   c                      \ rS rSr\" 5       rSrSSS jjr\SSS.S j5       r	S r
SS	 jrS
 rSS jrS rSS jr\S 5       rSrg)r   ,   i  NFc                N   [        U[        R                  5      (       d  [        S5      eU Ho  n[        X@R                  R
                  5      (       a  M)  [        R                  " U5      (       a  MF  [        S[        U R                  R
                  5      -   5      e   Xl	        g )Nz$Need to pass a numpy array as valueszAll values must be of type )

isinstancer   ndarray	TypeErrordtyper   pdisnastrdata)selfvaluesr(   copyvals        r   __init__ListArray.__init__0   sm    &"**--BCCCc::??33BGGCLL =DJJOO@T TUU  	r   r(   r/   c               ^    [         R                  " [        U5      [        S9nXS S & U " U5      $ Nr(   )r   emptylenobject)r   scalarsr(   r/   r,   s        r   _from_sequenceListArray._from_sequence8   s'    xxGF3Q4yr   c                    [        U[        R                  5      (       a  U R                  U   $ [	        U 5      " U R                  U   5      $ N)r%   numbersIntegralr,   r   )r-   items     r   __getitem__ListArray.__getitem__>   s<    dG,,--99T?" :diio..r   c                ,    [        U R                  5      $ r>   )r8   r,   r-   s    r   __len__ListArray.__len__E   s    499~r   c           	         [         R                  " U R                   Vs/ s H5  n[        U[        5      (       + =(       a    [         R
                  " U5      PM7     sn[        S9$ s  snf r5   )r   arrayr,   r%   r   isnanbool)r-   xs     r   r*   ListArray.isnaH   sI    xx>BiiHiAt$$4!4iHPT
 	
Hs   <A%c                   [         R                  " U5      nSnU(       a_  Uc  U R                  R                  nUS:  R	                  5       (       a  [
        e U Vs/ s H  oUS:w  a  U R                  U   OUPM     nnO U Vs/ s H  oPR                  U   PM     nnU R                  U5      $ s  snf ! [         a  n[        U5      UeS nAff = fs  snf ! [         a  n[        U5      UeS nAff = f)NzIIndex is out of bounds or cannot do a non-empty take from an empty array.)	r   asarrayr(   r   any
ValueErrorr,   
IndexErrorr;   )r-   indexer
allow_fill
fill_valuemsglocoutputerrs           r   takeListArray.takeM   s     **W%2 	
 !!ZZ00
"!!##  /KRKRCRiDIIcNZ?7  /4;<GS))C.G< ""6**  / o3./ = / o3./sT   B4  B/<B4  C CC /B4 4
C>C

CC 
C2!C--C2c                >    [        U 5      " U R                  S S  5      $ r>   )r   r,   rE   s    r   r/   ListArray.copyk   s    Dz$))A,''r   c                   [        U[        U R                  5      5      (       a(  XR                  :X  a  U(       a  U R                  5       $ U $ [	        U5      (       aI  [        U5      (       d9  [        R                  " U R                   Vs/ s H  n[        U5      PM     snUS9$ U(       d  [        R                  " U R                  US9$ [        R                  " U R                  XS9$ s  snf )Nr6   r3   )r%   r   r(   r/   r   r   r   rI   r,   r+   rP   )r-   r(   r/   rL   s       r   astypeListArray.astypen   s    eT$**-..5JJ3Fyy{"KU##OE,B,B88TYY7YSVY7uEE::diiu5588DIIU>>	 8s   C+c                |    [         R                  " U Vs/ s H  o"R                  PM     sn5      nU " U5      $ s  snf r>   )r   concatenater,   )r   	to_concatrL   r,   s       r   _concat_same_typeListArray._concat_same_type{   s0    ~~y9y!vvy9:4y :s   9)r,   )NF)r   None)r   int)FN)T)r   r   r   r   r   r(   __array_priority__r1   r    r;   rB   rF   r*   r[   r/   r`   re   r!   r   r   r   r   r   ,   s_    KE .2  
/

+<(?  r   r   c                 f   [         R                  R                  S5      n [         R                  " S[        S9n[        S5       Vs/ s HT  n[        U R                  SS5      5       Vs/ s H*  o R                  [        [        R                  5      5      PM,     snPMV     snUS S & U$ s  snf s  snf )N   d   r6   r   
   )r   randomdefault_rngr7   r9   rangeintegerschoicer   stringascii_letters)rngr,   _s      r   	make_datarw      s    
))


"C88Cv&D sA :?s||Ar?R9ST9SAD--.	/9STDG K 	Us   #B.)1B)
B.)B.)__doc__
__future__r   r?   rs   typingr   numpyr   pandas.core.dtypes.baser   pandasr)   pandas.api.typesr   r   pandas.core.arraysr   pandas._typingr	   r   r   rw   r   r   r   <module>r      sQ   
 #      2  .% "R Rjr   