
    I j                        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S j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                  >    \ rS rSr\rSr\R                  r	SS jr
Srg)	ListDtype   listc                    [         $ )zI
Return the array type associated with this dtype.

Returns
-------
type
)	ListArrayselfs    r/root/GenerationalWealth/GenerationalWealth/venv/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_valuer   __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)r   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)cls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>   )r7   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 r4   )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%W 	 !!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,   r   s    r   r.   ListArray.copyj   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 )Nr5   r2   )r%   r   r(   r.   r   r   r   rH   r,   r+   rO   )r   r(   r.   rK   s       r   astypeListArray.astypem   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,   )r9   	to_concatrK   r,   s       r   _concat_same_typeListArray._concat_same_typez   s0    ~~y9y!vvy9:4y :s   9)r,   )NF)r   None)r   int)FN)T)r   r   r   r   r   r(   __array_priority__r0   classmethodr;   rB   rE   r*   rZ   r.   r_   rd   r!   r   r   r   r   r   ,   s_    KE .2  
/

+:(?  r   r   c                f   [         R                  R                  S5      n[         R                  " U [        S9n[        U 5       Vs/ s HT  n[        UR                  SS5      5       Vs/ s H*  o1R                  [        [        R                  5      5      PM,     snPMV     snUS S & U$ s  snf s  snf )N   r5   r   
   )r   randomdefault_rngr6   r8   rangeintegerschoicer   stringascii_letters)nrngr,   _s       r   	make_datarw      s    
))


"C88AV$D qA :?s||Ar?R9ST9SAD--.	/9STDG K 	Us   #B.)1B)
B.)B.)rt   rg   )__doc__
__future__r   r?   rr   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  .%  Q Qhr   