o
    i?@                     @   sr   d dl m Z mZ d dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZ dddZG dd dZG d	d
 d
ZdS )    )copydeepcopyN)	is_scalar)	DataFrameSeriesc                 K   s   t |trt|g| j }|durZt|r3|dkr&d}tj}|| jd n:tj	||d}|
| n-t|}| }||jd  }||jd  dkrPtdt|||}ntjj| }| |fd|i|S )z
    construct an object for the given shape
    if value is specified use that if its a scalar
    if value is an array, repeat it as needed
    Nemptydtyper   z!invalid value passed in constructr	   )
isinstanceinttuple	_AXIS_LENr   npfloat64pop_info_axis_namer   fillprodravelshape	Exceptionrepeatreshaperandomrandn)boxr   valuer	   kwargsarrfshape	new_shape r!   \/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/generic/test_generic.py	construct   s$   

r#   c                	   @   s   e Zd Zejdejdd edD e	dd edD gdd Z
dd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zejdg ddd Zdd Zdd Zejdeedd dd gejd g d!d"d# Zd$S )%Genericfuncc                 C      i | ]}||  qS r!   lower.0xr!   r!   r"   
<dictcomp>:       zGeneric.<dictcomp>ABCDc                 C   r&   r!   r'   r)   r!   r!   r"   r,   ;   r-   c           	      C   sf   t d}|jD ])}||i}tdi |}|jdi ||i}| }t||t d t|| qd S )Nr.      abcd)r/   r!   )list_AXIS_ORDERSr#   renamer   setattrtmassert_equal)	selfframe_or_seriesr%   idxaxisr   objresultexpectedr!   r!   r"   test_rename6   s   
zGeneric.test_renamec                    s   d fddt  jD }tfi |}| }t|| | }tfddi|}t|tr<|j	d d |_	t|| t
g d}tfd|i|}| }t|| d S )Nr/   c                    s    i | ]}  |ttqS r!   )_get_axis_namer1   range)r*   ir8   nr!   r"   r,   P   s    z1Generic.test_get_numeric_data.<locals>.<dictcomp>r   r   r   )TTFT)r@   r   r#   _get_numeric_datar5   r6   _get_bool_datar
   r   columnsr   array)r7   r8   r   or<   r=   r   r!   rB   r"   test_get_numeric_dataM   s    
zGeneric.test_get_numeric_datac                 C   s  t |dd}d|j d}tjt|d t|dk W d    n1 s%w   Y  tjt|d t|dk W d    n1 sBw   Y  tjt|d t| W d    n1 s]w   Y  t |ddd}tjt|d t|dk W d    n1 sw   Y  tjt|d t|dk W d    n1 sw   Y  tjt|d t| W d    n1 sw   Y  t |dtjd}tjt|d t|dk W d    n1 sw   Y  tjt|d t|dk W d    n1 sw   Y  tjt|d t| W d    n	1 sw   Y  t |dd}tjt|d t| W d    n	1 s9w   Y  t |ddd}t |ddd}tjt|d |rX	 W d    n	1 scw   Y  tjt|d |ot| W d    n	1 sw   Y  tjt|d |p| W d    n	1 sw   Y  tjt|d |  W d    d S 1 sw   Y  d S )	Nr/   r   zThe truth value of a z is ambiguousmatchr      )r   r   )r#   __name__pytestraises
ValueErrorboolr   nan)r7   r8   r;   msgobj1obj2r!   r!   r"   test_nonzeroh   sj   



$zGeneric.test_nonzeroc                    sp    fdd}d j  d}tjt|d |g d W d    n1 s%w   Y  |d |d |d	 d S )
Nc                    s   t  dd| dS )N   rM   )r   r   r	   )r#   r   r8   r!   r"   f   s   z7Generic.test_frame_or_series_compound_dtypes.<locals>.fz+compound dtypes are not implemented in the z frame_or_seriesrK   ))Azdatetime64[h])Bstr)Cint32int64r   zM8[ns])rN   rO   rP   NotImplementedError)r7   r8   rZ   rT   r!   rY   r"   $test_frame_or_series_compound_dtypes   s   z,Generic.test_frame_or_series_compound_dtypesc                 C   s(  t |dd}d|_t |dd}d|_dD ]}t||d}t|| qdD ]}t|||}t|| q&dD ]}t|||}t|| t|||@  t|||B  q8||}t|| || }t| dD ]#}t|||}t|||}t| t||@  t||B  qnd S )NrX   rJ   foobar)__add____sub____truediv____mul__rM   )__eq____le____ge__)r#   namegetattrr5   assert_metadata_equivalentcombine_first)r7   r8   rH   o2opr<   v1v2r!   r!   r"   test_metadata_propagation   s4   


z!Generic.test_metadata_propagationc                 C   s>   t |dd}|jt|jksJ |jdt|j ksJ d S )N
   rJ   )r#   sizer   r   r   lenaxesr7   r8   rH   r!   r!   r"   test_size_compat   s   zGeneric.test_size_compatc                 C   s@   t |dd}tt|ddksJ tt|ddksJ d S )Nru   rJ         )r#   rw   r   array_splitry   r!   r!   r"   test_split_compat   s   zGeneric.test_split_compatc                 C   s   t |d}d}d}tjt|d |j|d W d    n1 s!w   Y  tjt|d |j|d W d    n1 s>w   Y  tjt|d |j|d W d    n1 s[w   Y  tjt|d |j|d W d    d S 1 syw   Y  d S )Nr{   z	Star Warszunexpected keywordrK   )epic)r#   rO   rP   	TypeErrormaxvarsumany)r7   r8   r;   starwarserrmsgr!   r!   r"   test_stat_unexpected_keyword   s   
"z$Generic.test_stat_unexpected_keyword)r   cumsumr   r   c                 C   s4   |df}t ||}|j|ksJ |j|sJ d S )Nr{   )rm   rN   __qualname__endswith)r7   r%   r8   r;   rZ   r!   r!   r"   test_api_compat   s   
zGeneric.test_api_compatc                 C   s  t |d}tdg}d}tjt|d |j|d W d    n1 s%w   Y  tjt|d |j|d W d    n1 sBw   Y  tjt|d |j|d W d    n1 s_w   Y  tjt|d |j	|d W d    d S 1 s}w   Y  d S )Nr{   r   $the 'out' parameter is not supportedrK   out)
r#   r   rG   rO   rP   rQ   r   r   r   r   )r7   r8   r;   r   r   r!   r!   r"   test_stat_non_defaults_args	  s   
"z#Generic.test_stat_non_defaults_argsc                 C   s   dgdg|j d   }t||ddd}t| | t|jddd| t|jdd	d| d
gdg|j d   }t||ddd}t| | t|jddd| t|jddd| d S )Ni  rM   int8)r	   r   r   g     p@)beforeafterg     @@i g    `FAg    >A)r   r#   r5   r6   truncate)r7   r8   r   smallbigr!   r!   r"   test_truncate_out_of_bounds  s   z#Generic.test_truncate_out_of_boundsc                 C      | j ddS )NFdeepr   r+   r!   r!   r"   <lambda>*      zGeneric.<lambda>c                 C   r   )NTr   r   r   r!   r!   r"   r   *  r   r   )r   rM   r|   c                 C   s.   t ||}||}||usJ t|| d S N)r#   r5   r6   )r7   r8   r   r%   r;   obj_copyr!   r!   r"   test_copy_and_deepcopy(  s   
zGeneric.test_copy_and_deepcopyN)rN   
__module__r   rO   markparametrizer]   r(   r1   r   r>   rI   rW   rb   rt   rz   r~   r   r   r   r   r   r   r   r!   r!   r!   r"   r$   5   s4    
23

r$   c                   @   s  e Zd Zejde e e	 gdd Z
dd Zdd Zdd	 Zd
d Zdd Zdd Zejde e e	 gdd Zdd Zdd Zejde e e	 gdd Zdd Zdd Zejdddgdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+S ),TestNDFrameserc                 C      t | | d S r   )r5   assert_series_equalsqueezer7   r   r!   r!   r"   test_squeeze_series_noop8     z$TestNDFrame.test_squeeze_series_noopc                 C   s   t  }t | | d S r   r5   makeTimeDataFrameassert_frame_equalr   r7   dfr!   r!   r"   test_squeeze_frame_noop?  s   z#TestNDFrame.test_squeeze_frame_noopc                 C   s*   t  jdgd}t | |d  d S Nr[   )rF   )r5   r   reindexr   r   r   r!   r!   r"   test_squeeze_frame_reindexD  s   z&TestNDFrame.test_squeeze_frame_reindexc                 C   s>   t g dtjd}t|g}t||  t||  d S )Nfive)rl   r	   )r   r   r   r   r5   r   r   )r7   empty_seriesempty_framer!   r!   r"   test_squeeze_0_len_dimI  s   
z"TestNDFrame.test_squeeze_0_len_dimc                 C   s<  t jddjd d d df }|jdksJ t |jdd|jd  t |jdd|jd  t |jdd|jd d df  t |jdd|jd d df  | |jd ks]J d	}tjt|d
 |jdd W d    n1 sww   Y  d}tjt|d
 |jdd W d    d S 1 sw   Y  d S )NrM   )nper)rM   rM   r   r:   indexrF   )r   r   z)No axis named 2 for object type DataFramerK   r|   z)No axis named x for object type DataFramer+   )	r5   r   ilocr   r   r   rO   rP   rQ   )r7   r   rT   r!   r!   r"   test_squeeze_axisP  s   """zTestNDFrame.test_squeeze_axisc                 C   s"   t d}t |jdd| d S )NrX   r   r   r   r   r!   r!   r"   test_squeeze_axis_len_3`  s   
z#TestNDFrame.test_squeeze_axis_len_3c                 C   sF   t  }t t|| t  jdgd}t t||d  d S r   )r5   makeFloatSeriesr   r   r   r   r   )r7   sr   r!   r!   r"   test_numpy_squeezed  s   zTestNDFrame.test_numpy_squeezec                 C   r   r   )r5   r   	transposer   r!   r!   r"   test_transpose_seriesk  r   z!TestNDFrame.test_transpose_seriesc                 C   s    t  }t |  | d S r   )r5   r   r   r   r   r!   r!   r"   test_transpose_framer  s   z TestNDFrame.test_transpose_framec                 C   s   t  }t ||}|tu rt t|| t tt|| d}tj	t
|d tj|dd W d    d S 1 s?w   Y  d S )Nz%the 'axes' parameter is not supportedrK   rM   )rx   )r5   r   get_objr   r   r   r   r6   rO   rP   rQ   )r7   r8   r;   rT   r!   r!   r"   test_numpy_transposev  s   "z TestNDFrame.test_numpy_transposec                 C   sB   g d}| |}t|j ||j ||jd}t|| d S )NrM   r{      rX   r   )datar   r	   )taker   valuesr   r	   r5   r   )r7   r   indicesr   r=   r!   r!   r"   test_take_series  s   


zTestNDFrame.test_take_seriesc                 C   sN   g d}t  }||}t|jj|dd|j||jd}t || d S )Nr   r   r   )r   r   rF   )r5   r   r   r   r   r   rF   r   )r7   r   r   r   r=   r!   r!   r"   test_take_frame  s   

zTestNDFrame.test_take_framec                 C   s   g d}t  }t ||}d}tjt|d |j|dd W d    n1 s)w   Y  d}tjt|d |j||d W d    n1 sIw   Y  d}tjt|d |j|d	d
 W d    d S 1 sjw   Y  d S )N)r|   r   rM   z1take\(\) got an unexpected keyword argument 'foo'rK   r|   )rc   r   r   z%the 'mode' parameter is not supportedclip)mode)r5   r   r   rO   rP   r   r   rQ   )r7   r8   r   r;   rT   r!   r!   r"   test_take_invalid_kwargs  s   "z$TestNDFrame.test_take_invalid_kwargsis_copyTFc                 C   sx   t dg di}t||}d}tt}|jddg|d W d    n1 s)w   Y  |d jjd |ks:J d S )Nr[   )rM   r|   rX   zis_copy is deprecated and will be removed in a future version. 'take' always returns a copy, so there is no need to specify this.r   rM   )r   )r   r5   r   assert_produces_warningFutureWarningr   messageargs)r7   r   r8   r;   rT   wr!   r!   r"   test_depr_take_kwarg_is_copy  s   z(TestNDFrame.test_depr_take_kwarg_is_copyc                 C   sn   |}|t d}|j }|D ]&}||||ksJ ||||ks(J ||||ks4J qd S )Nr   )object_AXIS_TO_AXIS_NUMBERkeys_get_axis_numberr?   _get_block_manager_axis)r7   r8   r   r;   r   vr!   r!   r"   test_axis_classmethods  s   

z"TestNDFrame.test_axis_classmethodsc                 C   L   |}|t d}d}tjt|d |j W d    d S 1 sw   Y  d S )Nr   z_AXIS_NAMES has been deprecatedrK   )r   r5   r   r   _AXIS_NAMESr7   r8   r   r;   rT   r!   r!   r"   test_axis_names_deprecated     
"z&TestNDFrame.test_axis_names_deprecatedc                 C   r   )Nr   z!_AXIS_NUMBERS has been deprecatedrK   )r   r5   r   r   _AXIS_NUMBERSr   r!   r!   r"   test_axis_numbers_deprecated  r   z(TestNDFrame.test_axis_numbers_deprecatedc                 C   sH   t ddg}|tu r| }|j|ju sJ | }|j|jus"J d S )NrM   r|   )r   r   to_frameflagsr   )r7   r8   r;   rV   r!   r!   r"   test_flags_identity  s   zTestNDFrame.test_flags_identityc                 C   sT   t dg di}t||}tt |  W d    d S 1 s#w   Y  d S )Nr[   )rM   r|   rX   r/   )r   r5   r   r   r   slice_shift)r7   r8   r;   r!   r!   r"   test_slice_shift_deprecated  s
   
"z'TestNDFrame.test_slice_shift_deprecatedN)rN   r   r   rO   r   r   r5   r   makeStringSeriesmakeObjectSeriesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r   5  s<    




		r   )NN)r   r   numpyr   rO   pandas.core.dtypes.commonr   pandasr   r   pandas._testing_testingr5   r#   r$   r   r!   r!   r!   r"   <module>   s    
   