o
    $j                     @  s   d Z ddlmZ ddlZddlZddlmZ ddlZddl	m
Z
 ddlZddlmZmZ ddlmZ er:ddlmZ G d	d
 d
e
ZG dd deZdd ZdS )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                   @  s(   e Zd ZeZdZejZe	dddZ
dS )	ListDtypelistreturntype_t[ListArray]c                 C  s   t S )zq
        Return the array type associated with this dtype.

        Returns
        -------
        type
        )	ListArray)cls r   b/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/pandas/tests/extension/list/array.pyconstruct_array_type    s   	zListDtype.construct_array_typeN)r   r   )__name__
__module____qualname__r
   typenamenpnanna_valueclassmethodr   r   r   r   r   r	      s    r	   c                   @  sx   e Zd Ze ZdZddddZedddd	d
Zdd Z	dddZ
dd ZdddZdd ZdddZedd ZdS ) r   i  NFr   Nonec                 C  sT   t |tjs
td|D ]}t || jjs$t|s$tdt| jj q|| _	d S )Nz$Need to pass a numpy array as valueszAll values must be of type )

isinstancer   Zndarray	TypeErrordtyper   pdisnastrdata)selfvaluesr   copyvalr   r   r   __init__0   s   
zListArray.__init__r   r%   c                C  s&   t jt|td}||d d < | |S )Nr   )r   emptylenobject)r   Zscalarsr   r%   r"   r   r   r   _from_sequence8   s   zListArray._from_sequencec                 C  s(   t |tjr| j| S t| | j| S N)r   numbersIntegralr"   r   )r#   itemr   r   r   __getitem__>   s   
zListArray.__getitem__intc                 C  s
   t | jS r.   )r+   r"   r#   r   r   r   __len__E   s   
zListArray.__len__c                 C  s   t jdd | jD tdS )Nc                 S  s"   g | ]}t |t ot|qS r   )r   r
   r   isnan.0xr   r   r   
<listcomp>J   s   " z"ListArray.isna.<locals>.<listcomp>r)   )r   arrayr"   boolr4   r   r   r   r    H   s   zListArray.isnac              
     s   t |}d}|r7 d u rjj |dk  rtz fdd|D }W n. ty6 } zt||d }~ww zfdd|D }W n tyS } zt||d }~ww |S )NzIIndex is out of bounds or cannot do a non-empty take from an empty array.c                   s"   g | ]}|d krj | n qS )r=   r"   r8   loc
fill_valuer#   r   r   r:   ^   s    z"ListArray.take.<locals>.<listcomp>c                   s   g | ]} j | qS r   r>   r?   r4   r   r   r:   e   s    )r   asarrayr   r   any
ValueError
IndexErrorr-   )r#   ZindexerZ
allow_fillrB   msgoutputerrr   rA   r   takeM   s.   




zListArray.takec                 C  s   t | | jd d  S r.   )r   r"   r4   r   r   r   r%   k   s   zListArray.copyTc                 C  sz   t |t| jr|| jkr|r|  S | S t|r*t|s*tjdd | jD |dS |s4tj	| j|dS tj| j||dS )Nc                 S  s   g | ]}t |qS r   )r!   r7   r   r   r   r:   u   s    z$ListArray.astype.<locals>.<listcomp>r)   r(   )
r   r   r   r%   r   r   r   r;   r"   rC   )r#   r   r%   r   r   r   astypen   s   zListArray.astypec                 C  s   t dd |D }| |S )Nc                 S  s   g | ]}|j qS r   r>   r7   r   r   r   r:   }   s    z/ListArray._concat_same_type.<locals>.<listcomp>)r   Zconcatenate)r   Z	to_concatr"   r   r   r   _concat_same_type{   s   zListArray._concat_same_type)NF)r   r   )r   r3   )FN)T)r   r   r   r	   r   Z__array_priority__r'   r   r-   r2   r5   r    rJ   r%   rK   rL   r   r   r   r   r   ,   s    


r   c                    s<   t jd t jdtd}  fddtdD | d d < | S )N   d   r)   c                   s*   g | ]} fd dt  ddD qS )c                   s   g | ]
}  ttjqS r   )choicer
   stringascii_lettersr8   _rngr   r   r:      s    z(make_data.<locals>.<listcomp>.<listcomp>r   
   )rangeZintegersrR   rT   r   r   r:      s    zmake_data.<locals>.<listcomp>)r   randomZdefault_rngr*   r,   rW   r>   r   rT   r   	make_data   s   
rY   )__doc__
__future__r   r/   rP   typingr   numpyr   Zpandas.core.dtypes.baser   Zpandasr   Zpandas.api.typesr   r   Zpandas.core.arraysr   Zpandas._typingr   r	   r   rY   r   r   r   r   <module>   s    U