U
    bc&                  '   @   s  d Z ddlmZ ddlmZmZmZmZmZ ddl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ZddlmZ ddlZddlZdd	lmZmZ ddlm  mZ dd
lmZm Z  ddl!Z"ddl!m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( ddl)m*Z+ ddl,m-Z- ddl.m/Z/m0Z0 zddl1Z2W n e3k
r0   dZ4Y nX [2dZ4dZ5e"j6j7rzddl5Z5ze58d W n e5j9k
rx   dZ5Y nX ej:;dZ<ddddZ=ej>e?e?ddddZ@dd ZAejBjCddejDjEfd ejBFd dG D ]8ZHeIe"jJjKeHZLeMeLejNeLeOddeP d qd G D ]DZHeIe"jJjKeHZLeMeLejNeLeOd!d"eP ejOd#d$d%d& q d'G D ]DZHeIe"jJjKeHZLeMeLejNeLeOd(d)eP ejOd#d$d%d* qnejQddd+d,ZRejQdd-ddd.d/ZSejQdd#d0d1gd2d3 d4d5d6 ZTeTZUejQd#d1gd7d3 d4d8d9 ZVejQdddgd:d;d< ZWejQdddgd:d=d> ZXejQd?d@dgd:dAdB ZYejQdCdDdEdFgd:dGdH ZZejQdEdFdCdDgd:dIdJ Z[ejQdEdFdCdDgd:dKdL Z\ejQddMdNdOdPdQej]dRe^dSdTgd:dUdV Z_ejQdMdNdOdPdQej]dRe^dSdTgd:dWdX Z`ejQddgd:dYdZ ZaejQd[d\dEdFgd:d]d^ ZbejQd_d`gd:dadb ZcejQe+jddcd3 d4ddde ZeeeZfejQdejge"jhgd:dfdg ZieiZjejQe+jkdhd3 d4didj ZlelZmejQe#e&gd:dkdl ZnejQe/e&gd0dmgd4dndo ZoeoZpejQe/e&e"jqgd0dmdpgd4dqdr ZrejQe/e&e#e"jqgdsd3 d4dtdu ZsesZtejQdvdw ZuejQdxdy ZvejQdzd{ ZwejQe0dd|d}ZxejQe#dd~dZydd Zzdd Z{e+|de+}de+j}ddde+~de+de+de+de+de+de+dde+dde+jddde+jddde+jddde+jddde+jddde+jddde+jddde+jddde+jddde+jddde+dee/ejddk e+de+de/g e0edddgd#ddge{ ez e/ddd#d#ddge/eddde/eddde/eddde/ededde/e"jqe+|dddd#Ze4re/e"jqe+|dddZeed< ejQe d:dd0 ZeZejQdd eD d:dd ZeZejQdd eD d:dd ZejQe&dddZejQe&dddZejQe&dddZdd Zdd e D ZejQe&dddZejQe&dddZdd e+jD ZeeeZejQe d:dd ZejQe#dddZejQe#dddZejQe#dddZejQe#dddZejQe&dddĄZejQe$dd"dōe ddFfe$dddōe ddFfe%dddʍdfe%dddʍdfe(dddeddfe'ddҍdfgd:ddՄ ZddddddddddddddgZejQed:dd ZejQe
je-je
je-je
je-je
je-je
je-je
je-je
je-je
je
je
je
je
je
je
je-je
je-je
je-jgd:dd ZejQe
je-je
je-je
je-je
je-je
je-je
je-je
je-jgd:dd Zddddddddddg
ZejQed:dd ZddgZejQed:dd Zee ZejQed:dd ZejQe
je
je
je
je
je
jgd:dd ZejQddd dgd:dd ZejQdddddd	gd:d
d ZejQdd ZejQe?ede?f dddZejQe#dddZdddАddddddde e edededejeed#deeddddgZe5dk	r:eԠe58de58dg d d eD Zee?eփejQeed4d!d" Zee?ed#d ejQed#d ed#d d4d#d$ ZeZڐd%d&ee ejgZe5dk	re۠e58d ejQed:d'd( ZeZejQe+jd:d)d* ZejQdej]dej^d+d,d-dTgd:d.d/ ZejQd0ej]d+ej^d+d,d-dTgd:d1d2 ZeZejQe+jd:d3d4 ZejQe+jd:d5d6 ZejQd7dej]dej^d+d,d-dTgd:d8d9 ZejQe+jd:d:d; ZejQe+jd:d<d= ZejQe(dd>d?ZejQe+jd:d@dA ZejQe+jd:dBdC ZejQe+je+j d:dDdE ZejQe+jd:dFdG ZejQe+jd:dHdI ZejQe+jd:dJdK ZejQe+jd:dLdM ZejQe+jd:dNdO ZejQe+je+j d:dPdQ ZejQe+je+j d:dRdS ZejQe+jd:dTdU Z ejQe+jd:dVdW ZejQe+jd:dXdY ZejQe+je+j e+j e+j d:dZd[ Zd\d]ejgd^gfd\d]e"jd^gfd_d]e"jhd^gfd`daejgdbgfdcejgejgejggfdcg fddd]ejgdgfd_d]ejgdegfdfdgejgdegfdhd#ejgdgfdid#ejgdegfdje	d#ejge	dgfddejgdgfdde"jdgfdkedlejgedmgfdne(doejge(dpgfdqedrd#d#ejgedsd#d#gfdted#ejgedgfdued#ejgedgfdve%dre"jhe%dsgfdwe$dd#ejge$ddgfgZee \Z	Z
ejQee	d4dxdy ZejQdzd{ ZejQd|d}d~ddddgd:dd ZejQdd e"jKjD d:dd ZejQddd3 gd:dd ZeQ dd ZejQdddejgejgejgfejge"jhdfejge"jdfe"je"je"jfgd:dd ZejQe+je+je+jgd:dd ZejQe+je+jgd:dd ZejQe+je+jgd:dd ZejQe+je+jgd:dd ZejQe+je+jgd:dd ZejQe+je+jgd:dd ZejQdd ZejQedddZdS (  a  
This file is very long and growing, but it was decided to not split it yet, as
it's still manageable (2020-03-17, ~1.1k LoC). See gh-31989

Instead of splitting it was decided to define sections here:
- Configuration / Settings
- Autouse fixtures
- Common arguments
- Missing values & co.
- Classes
- Indices
- Series'
- DataFrames
- Operators & Operations
- Data sets/files
- Time zones
- Dtypes
- Misc
    )abc)datedatetimetime	timedeltatimezone)DecimalN)Callable)tzlocaltzutc)
strategies)FixedOffsetutc)DatetimeTZDtypeIntervalDtype)	DataFrameIntervalPeriodSeries	Timedelta	Timestamp)ops)Index
MultiIndexFTZUTCz3ignore:Promotion of numbers and bools:FutureWarningreturnc                 C   sd   | j dddd | j dddd | j dddd | j d	dd
d | j dddd | j dddd d S )N--skip-slow
store_truezskip slow tests)actionhelp--skip-networkzskip network tests	--skip-dbzskip db testsz--run-high-memoryzrun high memory tests--only-slowzrun only slow tests--strict-data-filesz0Fail if a test is skipped for missing data file.)Z	addoption)parser r%   .lib/python3.8/site-packages/pandas/conftest.pypytest_addoptionf   s      r'   )itempathmessager   c                 C   s(   | j |r$| tjd|  dS )a  Ignore doctest warning.

    Parameters
    ----------
    item : pytest.Item
        pytest test item.
    path : str
        Module path to Python object, e.g. "pandas.core.frame.DataFrame.append". A
        warning will be filtered when item.name ends with in given path. So it is
        sufficient to specify e.g. "DataFrame.append".
    message : str
        Message to be filtered.
    zignore:N)nameendswith
add_markerpytestmarkfilterwarnings)r(   r)   r*   r%   r%   r&   ignore_doctest_warningu   s    r1   c              	   C   sJ  | d}| d}| d}| d}tjjd|dftjjd|dftjjd|dfg}d	d
dddddddg	}| D ]}| ds|j dddr|tjd |D ]\}	}
t||	|
 qd|j	kr|tjj
 |t |D ]D\}}}}||jkr|r|tjd|   q$|| q|rpd|jkrp|tjd qpd S )Nr   r"   r    r!   slownetworkz	--networkdb)zDataFrame.appendz%The frame.append method is deprecated)zSeries.appendz&The series.append method is deprecated)zdtypes.common.is_categoricalzis_categorical is deprecated)zCategorical.replacez!Categorical.replace is deprecated)zdtypes.common.is_extension_typez!'is_extension_type' is deprecated)zIndex.is_mixedzIndex.is_mixed is deprecated)zMultiIndex._is_lexsortedz%MultiIndex.is_lexsorted is deprecated)zmissing.mask_zero_div_zerozdivide by zero encountered)z$_validators.validate_axis_style_argszUse named argumentsz--doctest-modulesz--doctest-cythonF)defaultadd_doctest_importsz/frame/zskipping due to zskipping due to --only-slow)	getoptionr.   r/   r2   r3   r4   r-   Zusefixturesr1   ZnodeidZarraymanager suppress_npdev_promotion_warningkeywordsskip)itemsconfigZ	skip_slowZ	only_slowZskip_networkZskip_dbmarksZignored_doctest_warningsr(   r)   r*   r/   ZkwdZskip_if_foundZarg_namer%   r%   r&   pytest_collection_modifyitems   sJ    




 


r>   Zci)ZdeadlineZsuppress_health_checkz)MonthBegin MonthEnd BMonthBegin BMonthEndic   )n	normalizez%YearBegin YearEnd BYearBegin BYearEnd         )Z	min_valueZ	max_value)r@   rA   monthz1QuarterBegin QuarterEnd BQuarterBegin BQuarterEndi   )r@   rA   ZstartingMonthc                 C   s   t | d< t| d< dS )z:
    Make `np` and `pd` names available for doctests.
    nppdN)rH   rI   )Zdoctest_namespacer%   r%   r&   r6      s    r6   )Zautousec                   C   s   t dd dS )z<
    Configure settings for all tests and test modules.
    Zchained_assignmentraiseN)rI   Z
set_optionr%   r%   r%   r&   configure_tests   s    rK   indexcolumnsc                 C   s   dt |  S Nzaxis=reprxr%   r%   r&   <lambda>	      rS   )paramsidsc                 C   s   | j S )z@
    Fixture for returning the axis numbers of a DataFrame.
    paramrequestr%   r%   r&   axis	  s    r[   c                 C   s   dt |  S rN   rO   rQ   r%   r%   r&   rS     rT   c                 C   s   | j S )zA
    Fixture for returning aliases of axis 1 of a DataFrame.
    rW   rY   r%   r%   r&   axis_1  s    r\   )rU   c                 C   s   | j S )a  
    Pass in the observed keyword to groupby for [True, False]
    This indicates whether categoricals should return values for
    values which are not in the grouper [False / None], or only values which
    appear in the grouper [True]. [None] is supported for future compatibility
    if we decide to change the default (and would need to warn if this
    parameter is not passed).
    rW   rY   r%   r%   r&   observed  s    
r]   c                 C   s   | j S )z6
    Boolean 'ordered' parameter for Categorical.
    rW   rY   r%   r%   r&   ordered)  s    r^   firstZlastc                 C   s   | j S )z[
    Valid values for the 'keep' parameter used in
    .duplicated or .drop_duplicates
    rW   rY   r%   r%   r&   keep1  s    r`   ZbothZneitherleftrightc                 C   s   | j S )zA
    Fixture for trying all interval 'inclusive' parameters.
    rW   rY   r%   r%   r&   inclusive_endpoints_fixture:  s    rc   c                 C   s   | j S )z<
    Fixture for trying all interval closed parameters.
    rW   rY   r%   r%   r&   closedB  s    rd   c                 C   s   | j S )zS
    Secondary closed fixture to allow parametrizing over all pairs of closed.
    rW   rY   r%   r%   r&   other_closedJ  s    re   Zgzipbz2zipZxzZtarZzstdZ	zstandard)r=   c                 C   s   | j S )zK
    Fixture for trying common compression types in compression tests.
    rW   rY   r%   r%   r&   compressionR  s    rh   c                 C   s   | j S )zk
    Fixture for trying common compression types in compression tests excluding
    uncompressed case.
    rW   rY   r%   r%   r&   compression_onlyd  s    ri   c                 C   s   | j S )z,
    Fixture that an array is writable.
    rW   rY   r%   r%   r&   writablev  s    rj   innerZouterc                 C   s   | j S )z:
    Fixture for trying all types of join operations.
    rW   rY   r%   r%   r&   	join_type~  s    rl   nlargest	nsmallestc                 C   s   | j S )z1
    Fixture for trying all nselect methods.
    rW   rY   r%   r%   r&   nselect_method  s    ro   c                 C   s
   t | jS Ntype__name__rQ   r%   r%   r&   rS     rT   c                 C   s   | j S )z/
    Fixture for each null type in pandas.
    rW   rY   r%   r%   r&   nulls_fixture  s    rt   c                 C   s   | j S )zL
    Fixture for each null type in pandas, each null type exactly once.
    rW   rY   r%   r%   r&   unique_nulls_fixture  s    ru   c                 C   s
   t | jS rp   rq   rQ   r%   r%   r&   rS     rT   c                 C   s   | j S )z-
    Fixture for each NaT type in numpy.
    rW   rY   r%   r%   r&   np_nat_fixture  s    rv   c                 C   s   | j S )z;
    Fixture to parametrize over DataFrame and Series.
    rW   rY   r%   r%   r&   frame_or_series  s    rw   seriesc                 C   s   | j S )z
    Fixture to parametrize over Index and Series, made necessary by a mypy
    bug, giving an error:

    List item 0 has incompatible type "Type[Series]"; expected "Type[PandasObject]"

    See GH#29725
    rW   rY   r%   r%   r&   index_or_series  s    ry   arrayc                 C   s   | j S )zG
    Fixture to parametrize over Index, Series, and ExtensionArray
    rW   rY   r%   r%   r&   index_or_series_or_array  s    r{   c                 C   s   | j S rp   )rs   rQ   r%   r%   r&   rS     rT   c                 C   s   | j S )z]
    Fixture to test behavior for Index, Series, DataFrame, and pandas Array
    classes
    rW   rY   r%   r%   r&   box_with_array  s    r|   c                  C   s   G dd dt } | S )z,
    Fixture for a dictionary subclass.
    c                   @   s   e Zd ZddddZdS )z"dict_subclass.<locals>.TestSubDictNr   c                 _   s   t j| f|| d S rp   )dict__init__)selfargskwargsr%   r%   r&   r~     s    z+dict_subclass.<locals>.TestSubDict.__init__)rs   
__module____qualname__r~   r%   r%   r%   r&   TestSubDict  s   r   )r}   )r   r%   r%   r&   dict_subclass  s    r   c                  C   s   G dd dt j} | S )z8
    Fixture for a non-mapping dictionary subclass.
    c                   @   s2   e Zd ZddddZdd Zdd Zd	d
 ZdS )z5non_dict_mapping_subclass.<locals>.TestNonDictMappingNr   c                 S   s
   || _ d S rp   )_data)r   Zunderlying_dictr%   r%   r&   r~     s    z>non_dict_mapping_subclass.<locals>.TestNonDictMapping.__init__c                 S   s   | j |S rp   )r   __getitem__)r   keyr%   r%   r&   r      s    zAnon_dict_mapping_subclass.<locals>.TestNonDictMapping.__getitem__c                 S   s
   | j  S rp   )r   __iter__r   r%   r%   r&   r     s    z>non_dict_mapping_subclass.<locals>.TestNonDictMapping.__iter__c                 S   s
   | j  S rp   )r   __len__r   r%   r%   r&   r     s    z=non_dict_mapping_subclass.<locals>.TestNonDictMapping.__len__)rs   r   r   r~   r   r   r   r%   r%   r%   r&   TestNonDictMapping  s   r   )r   Mapping)r   r%   r%   r&   non_dict_mapping_subclass  s    r   c                  C   s`   t d} | dd dd dd g }|jdd |jjD |_|jjdd	d
gdd |S )z
    DataFrame with 3 level MultiIndex (year, month, day) covering
    first 100 business days from 2000-01-01 with random data
    d   c                 S   s   | j S rp   )yearrQ   r%   r%   r&   rS     rT   zAmultiindex_year_month_day_dataframe_random_data.<locals>.<lambda>c                 S   s   | j S rp   )rF   rQ   r%   r%   r&   rS     rT   c                 S   s   | j S rp   )dayrQ   r%   r%   r&   rS     rT   c                 S   s   g | ]}| d qS )Zi8)astype).0Zlevr%   r%   r&   
<listcomp>  s     zCmultiindex_year_month_day_dataframe_random_data.<locals>.<listcomp>r   rF   r   T)Zinplace)tmZmakeTimeDataFramegroupbysumrL   Z
set_levelslevelsZ	set_names)ZtdfZymdr%   r%   r&   /multiindex_year_month_day_dataframe_random_data  s
    
 r   c                   C   sP   t ddddgdddggdddd	d	d
d
dddg
dd	d
dd	d	d
dd	d
g
gddgdS )z;
    2-level MultiIndex, lexsorted, with string names.
    foobarbazquxonetwothreer   rD         r_   second)r   codesnames)r   r%   r%   r%   r&   %lexsorted_two_level_string_multiindex  s
    .r   c                 C   s*   | }t tjdd|tdddgdddS )	z2DataFrame with 2 level MultiIndex with random data
   r   ABCZexpr+   )rL   rM   )r   rH   randomrandnr   )r   rL   r%   r%   r&    multiindex_dataframe_random_data)  s      r   c                  C   sh   t ddddg} t ddg}tdddd	d
d
g}tddddddg}ddg}t| |g||g|ddS )zJ
    MultiIndex used to test the general functionality of this object
    r   r   r   r   r   r   r   rD   r   r   r_   r   F)r   r   r   Zverify_integrity)r   rH   rz   r   )Z
major_axisZ
minor_axisZmajor_codesZminor_codesZindex_namesr%   r%   r&   _create_multiindex4  s    r   c                   C   s.   t jddgddgtjddddgd	d
dgdS )zB
    MultiIndex with a level that is a tzaware DatetimeIndex.
    rD   r   ab20130101r   
US/Eastern)Zperiodstzr   r   r   )r   )r   Zfrom_productrI   Z
date_ranger%   r%   r%   r&   _create_mi_with_dt64tz_levelH  s    r   r   z
US/Pacific)r   	complex64
complex128int64dtypeint32Zint16Zint8Zuint64Zuint32Zuint16Zuint8Zfloat64float32r   r   r   r   r   r   ZInt64ZUInt16ZFloat32Zbooleanzstring[python])#stringr   zdatetime-tzperiodr   intuintrangefloatr   r   Z	num_int64Z	num_int32Z	num_int16Znum_int8Z
num_uint64Z
num_uint32Z
num_uint16Z	num_uint8Znum_float64Znum_float32zbool-object
bool-dtypeZcategoricalintervalemptytuplesmi-with-dt64tz-levelmultirepeatsZnullable_intZnullable_uintZnullable_floatZnullable_boolzstring-pythonzstring[pyarrow]zstring-pyarrowc                 C   s   t | j  S )z
    Fixture for many "simple" kinds of indices.

    These indices are unlikely to cover corner cases, e.g.
        - no names
        - no NaTs/NaNs
        - no values near implementation bounds
        - ...
    )indices_dictrX   copyrY   r%   r%   r&   rL   }  s    c                 C   s   g | ]}t t| ts|qS r%   )
isinstancer   r   r   r   r%   r%   r&   r     s     r   c                 C   s   | j }t|  S )z8
    index fixture, but excluding MultiIndex cases.
    )rX   r   r   )rZ   r   r%   r%   r&   
index_flat  s    	r   c                 C   s0   g | ](}|d ks| dstt| ts|qS ))r   r   r   r   r   r   Znum_)
startswithr   r   r   r   r%   r%   r&   r     s
   
c                 C   s   t | j jdd}|j}| jdkrd| }d|d dd  |d< d|d dd  |d< t|S d|d< d|d< t||S dS )	z
    Fixture for indices with missing values.

    Integer-dtype and empty cases are excluded because they cannot hold missing
    values.

    MultiIndex is excluded because isna() is not defined for MultiIndex.
    TZdeep)r   r   r   rp   r   rD   N)r   rX   r   valuestolistr   from_tuplesrr   )rZ   ZindZvalsr%   r%   r&   index_with_missing  s    

r   c                  C   s   t  } d| _| S )zC
    Fixture for Series of floats with Index of unique strings
    rx   )r   ZmakeStringSeriesr+   sr%   r%   r&   string_series  s    r   c                  C   s   t  } d| _| S )zI
    Fixture for Series of dtype object with Index of unique strings
    Zobjects)r   ZmakeObjectSeriesr+   r   r%   r%   r&   object_series  s    r   c                  C   s   t  } d| _| S )z9
    Fixture for Series of floats with DatetimeIndex
    Zts)r   ZmakeTimeSeriesr+   r   r%   r%   r&   datetime_series  s    r   c                 C   s"   t | }tj|}t|| ddS )zHelper for the _series dictr   )rL   r+   )lenrH   r   r   r   )rL   sizedatar%   r%   r&   _create_series  s    r   c                 C   s"   i | ]\}}d | dt |qS )zseries-with-z-indexr   )r   Zindex_idrL   r%   r%   r&   
<dictcomp>  s   
 r   c                 C   s   t | S )zE
    Fixture for tests on series with changing types of indices.
    r   rL   r%   r%   r&   series_with_simple_index  s    r   c               	   C   s`   ddddddddgddddddddgg} t |  }t|}tjd}t||d}tj|d	< |S )
z:
    Fixture with a Series with a 2-level MultiIndex.
    r   r   r   r   r   r      r   r   )rg   r   r   rH   r   r   r   ZNaN)Zarraysr   rL   r   Zserr%   r%   r&   series_with_multilevel_index  s    

r   c                 C   s$   i | ]}|j  d tjd|dqS )z-seriesr   )r+   r   )rs   r   Zmake_rand_series)r   r   r%   r%   r&   r     s   
 c                 C   s   t | j jddS )z|
    Fixture for tests on indexes, series and series with a narrow dtype
    copy to avoid mutation, e.g. setting .name
    Tr   )_index_or_series_objsrX   r   rY   r%   r%   r&   index_or_series_obj  s    r   c                   C   s   t t dS )a6  
    Fixture for DataFrame of ints with index of unique strings

    Columns are ['A', 'B', 'C', 'D']

                A  B  C  D
    vpBeWjM651  1  0  1  0
    5JyxmrP1En -1  0  0  0
    qEDaoD49U2 -1  1  0  0
    m66TkTfsFe  0  0  0  0
    EHPaNzEUFm -1  0 -1  0
    fpRJCevQhi  2  0  0  0
    OlQvnmfi3Q  0  0 -2  0
    ...        .. .. .. ..
    uB1FPlz4uP  0  0  0  1
    EcSe6yNzCU  0  0 -1  0
    L50VudaiI8 -1  1 -2  0
    y3bpw4nwIp  0 -1  0  0
    H0RdLLwrCT  1  1  0  0
    rY82K0vMwm  0  0  0  0
    1OPIUjnkjk  2  0  0  0

    [30 rows x 4 columns]
    r   )r   r   getSeriesDatar   r%   r%   r%   r&   	int_frame"  s    r   c                   C   s   t t S )a  
    Fixture for DataFrame of floats with DatetimeIndex

    Columns are ['A', 'B', 'C', 'D']

                       A         B         C         D
    2000-01-03 -1.122153  0.468535  0.122226  1.693711
    2000-01-04  0.189378  0.486100  0.007864 -1.216052
    2000-01-05  0.041401 -0.835752 -0.035279 -0.414357
    2000-01-06  0.430050  0.894352  0.090719  0.036939
    2000-01-07 -0.620982 -0.668211 -0.706153  1.466335
    2000-01-10 -0.752633  0.328434 -0.815325  0.699674
    2000-01-11 -2.236969  0.615737 -0.829076 -1.196106
    ...              ...       ...       ...       ...
    2000-02-03  1.642618 -0.579288  0.046005  1.385249
    2000-02-04 -0.544873 -1.160962 -0.284071 -1.418351
    2000-02-07 -2.656149 -0.601387  1.410148  0.444150
    2000-02-08 -1.201881 -1.289040  0.772992 -1.445300
    2000-02-09  1.377373  0.398619  1.008453 -0.928207
    2000-02-10  0.473194 -0.636677  0.984058  0.511519
    2000-02-11 -0.965556  0.408313 -1.312844 -0.381948

    [30 rows x 4 columns]
    )r   r   ZgetTimeSeriesDatar%   r%   r%   r&   datetime_frame?  s    r   c                   C   s   t t S )a  
    Fixture for DataFrame of floats with index of unique strings

    Columns are ['A', 'B', 'C', 'D'].

                       A         B         C         D
    P7GACiRnxd -0.465578 -0.361863  0.886172 -0.053465
    qZKh6afn8n -0.466693 -0.373773  0.266873  1.673901
    tkp0r6Qble  0.148691 -0.059051  0.174817  1.598433
    wP70WOCtv8  0.133045 -0.581994 -0.992240  0.261651
    M2AeYQMnCz -1.207959 -0.185775  0.588206  0.563938
    QEPzyGDYDo -0.381843 -0.758281  0.502575 -0.565053
    r78Jwns6dn -0.653707  0.883127  0.682199  0.206159
    ...              ...       ...       ...       ...
    IHEGx9NO0T -0.277360  0.113021 -1.018314  0.196316
    lPMj8K27FA -1.313667 -0.604776 -1.305618 -0.863999
    qa66YMWQa5  1.110525  0.475310 -0.747865  0.032121
    yOa0ATsmcE -0.431457  0.067094  0.096567 -0.264962
    65znX3uRNG  1.528446  0.160416 -0.109635 -0.032987
    eCOBvKqf3e  0.235281  1.622222  0.781255  0.392871
    xSucinXxuV -1.263557  0.252799 -0.552247  0.400426

    [30 rows x 4 columns]
    )r   r   r   r%   r%   r%   r&   float_frame\  s    r   c                	   C   s>   t dddtjdgd ddtjdgd ddd	tdd
S )z
    Fixture for DataFrame of float/int/string columns with RangeIndex
    Columns are ['a', 'b', 'c', 'float32', 'int32'].
          ?r   r   r   r   r   rD   r   )r   r   cr   r   r   )r   rH   rz   aranger%   r%   r%   r&   mixed_type_framey  s    r   c                  C   s   t dddt dddt dddt dddt dddt dddt dddt dddt dddt dddg
} ttjt| | dS )zF
    Fixture for Series with a DatetimeIndex that has duplicates.
    i  rD   r   r      rC   r   )r   r   rH   r   r   r   )Zdatesr%   r%   r&   (rand_series_with_duplicate_datetimeindex  s    









r   )ra   rb   g?g      ?z2012-01M)Zfreqz	period[M]z
2012-02-01Dz	period[D]z
2011-01-01r   i  )Zsecondsztimedelta64[ns]c                 C   s   | j S rp   rW   rY   r%   r%   r&   ea_scalar_and_dtype  s    r   __add____radd____sub____rsub____mul____rmul____floordiv____rfloordiv____truediv____rtruediv____pow____rpow____mod____rmod__c                 C   s   | j S )zD
    Fixture for dunder names for common arithmetic operations.
    rW   rY   r%   r%   r&   all_arithmetic_operators  s    r  c                 C   s   | j S )zU
    Fixture for operator and roperator arithmetic, comparison, and logical ops.
    rW   rY   r%   r%   r&   all_binary_operators  s    "r  c                 C   s   | j S )z
    Fixture for operator and roperator arithmetic functions.

    Notes
    -----
    This includes divmod and rdivmod, whereas all_arithmetic_operators
    does not.
    rW   rY   r%   r%   r&   all_arithmetic_functions  s    r  r   maxminZmeanZprodZstdvarZmedianZkurtZskewc                 C   s   | j S )z.
    Fixture for numeric reduction names.
    rW   rY   r%   r%   r&   all_numeric_reductions"  s    r  allanyc                 C   s   | j S )z.
    Fixture for boolean reduction names.
    rW   rY   r%   r%   r&   all_boolean_reductions-  s    r  c                 C   s   | j S )z>
    Fixture for all (boolean + numeric) reduction names.
    rW   rY   r%   r%   r&   all_reductions8  s    r  c                 C   s   | j S )z;
    Fixture for operator module comparison functions.
    rW   rY   r%   r%   r&   comparison_op@  s    r  __le____lt____ge____gt__c                 C   s   | j S )zm
    Fixture for dunder names for compare operations except == and !=

    * >=
    * >
    * <
    * <=
    rW   rY   r%   r%   r&   compare_operators_no_eq_neQ  s    
r  __and____rand____or____ror____xor____rxor__c                 C   s   | j S )zY
    Fixture for dunder names for common logical operations

    * |
    * &
    * ^
    rW   rY   r%   r%   r&   all_logical_operators^  s    r  c                 C   s
   |  dS )zO
    Returns the configuration for the test setting `--strict-data-files`.
    r#   )r7   )Zpytestconfigr%   r%   r&   strict_data_fileso  s    r  .)r  r   c                    s(   t jt jtd  fdd}|S )a=  
    Get the path to a data file.

    Parameters
    ----------
    path : str
        Path to the file, relative to ``pandas/tests/``

    Returns
    -------
    path including ``pandas/tests``.

    Raises
    ------
    ValueError
        If the path doesn't exist and the --strict-data-files option is set.
    Ztestsc                     sJ   t jj f|  }t j|sFr4td| dntd| d |S )NzCould not find file z  and --strict-data-files is set.zCould not find .)osr)   joinexists
ValueErrorr.   r:   )r   r)   Z	BASE_PATHr  r%   r&   deco  s    
zdatapath.<locals>.deco)r  r)   r  dirname__file__)r  r!  r%   r   r&   datapathw  s    r$  c                 C   s   t | ddddS )z*
    The iris dataset as a DataFrame.
    ior   Zcsvziris.csv)rI   Zread_csv)r$  r%   r%   r&   iris  s    r&  z
Asia/Tokyozdateutil/US/Pacificzdateutil/Asia/Singaporez+01:15z-02:15z	UTC+01:15z	UTC-02:15i,  i)Zhoursr   r   c                 C   s   g | ]}t |qS r%   rO   )r   ir%   r%   r&   r     s     c                 C   s   | j S )zD
    Fixture for trying timezones including default (None): {0}
    rW   rY   r%   r%   r&   tz_naive_fixture  s    r(  c                 C   s   | j S )z4
    Fixture for trying explicit timezones: {0}
    rW   rY   r%   r%   r&   tz_aware_fixture  s    r)  r   zdateutil/UTCc                 C   s   | j S )zQ
    Fixture to provide variants of UTC timezone strings and tzinfo objects.
    rW   rY   r%   r%   r&   utc_fixture  s    r*  c                 C   s   | j S )zR
    Parametrized fixture for string dtypes.

    * str
    * 'str'
    * 'U'
    rW   rY   r%   r%   r&   string_dtype  s    	r+  pyarrowz1.0.0)Zmin_versionc                 C   s   | j S )za
    Parametrized fixture for string dtypes.

    * 'string[python]'
    * 'string[pyarrow]'
    rW   rY   r%   r%   r&   nullable_string_dtype  s    r-  Zpythonc                 C   s   | j S )zb
    Parametrized fixture for pd.options.mode.string_storage.

    * 'python'
    * 'pyarrow'
    rW   rY   r%   r%   r&   string_storage  s    r.  c                 C   s   | j S )zK
    Parametrized fixture for bytes dtypes.

    * bytes
    * 'bytes'
    rW   rY   r%   r%   r&   bytes_dtype  s    r/  c                 C   s   | j S )zN
    Parametrized fixture for object dtypes.

    * object
    * 'object'
    rW   rY   r%   r%   r&   object_dtype$  s    r0  objectc                 C   s   | j S )zo
    Parametrized fixture for string dtypes.
    * 'object'
    * 'string[python]'
    * 'string[pyarrow]'
    rW   rY   r%   r%   r&   any_string_dtype/  s    r2  c                 C   s   | j S )z\
    Parametrized fixture for datetime64 dtypes.

    * 'datetime64[ns]'
    * 'M8[ns]'
    rW   rY   r%   r%   r&   datetime64_dtypeB  s    r3  c                 C   s   | j S )z^
    Parametrized fixture for timedelta64 dtypes.

    * 'timedelta64[ns]'
    * 'm8[ns]'
    rW   rY   r%   r%   r&   timedelta64_dtypeM  s    r4  c                	   C   s   t ddddddddS )z-
    Fixture emits fixed Timestamp.now()
    i  rD   rE   r         )r   rF   r   ZhourZminuter   Zmicrosecond)r   r%   r%   r%   r&   fixed_now_tsX  s          r7  c                 C   s   | j S )z^
    Parameterized fixture for float dtypes.

    * float
    * 'float32'
    * 'float64'
    rW   rY   r%   r%   r&   float_numpy_dtypeb  s    	r8  c                 C   s   | j S )zR
    Parameterized fixture for float dtypes.

    * 'Float32'
    * 'Float64'
    rW   rY   r%   r%   r&   float_ea_dtypen  s    r9  c                 C   s   | j S )z~
    Parameterized fixture for float dtypes.

    * float
    * 'float32'
    * 'float64'
    * 'Float32'
    * 'Float64'
    rW   rY   r%   r%   r&   any_float_dtypey  s    r:  c                 C   s   | j S )zg
    Parameterized fixture for complex dtypes.

    * complex
    * 'complex64'
    * 'complex128'
    rW   rY   r%   r%   r&   complex_dtype  s    	r;  c                 C   s   | j S )z|
    Parameterized fixture for signed integer dtypes.

    * int
    * 'int8'
    * 'int16'
    * 'int32'
    * 'int64'
    rW   rY   r%   r%   r&   any_signed_int_numpy_dtype  s    r<  c                 C   s   | j S )zx
    Parameterized fixture for unsigned integer dtypes.

    * 'uint8'
    * 'uint16'
    * 'uint32'
    * 'uint64'
    rW   rY   r%   r%   r&   any_unsigned_int_numpy_dtype  s    
r=  c                 C   s   | j S )z
    Parameterized fixture for any integer dtype.

    * int
    * 'int8'
    * 'uint8'
    * 'int16'
    * 'uint16'
    * 'int32'
    * 'uint32'
    * 'int64'
    * 'uint64'
    rW   rY   r%   r%   r&   any_int_numpy_dtype  s    r>  c                 C   s   | j S )z
    Parameterized fixture for any nullable integer dtype.

    * 'UInt8'
    * 'Int8'
    * 'UInt16'
    * 'Int16'
    * 'UInt32'
    * 'Int32'
    * 'UInt64'
    * 'Int64'
    rW   rY   r%   r%   r&   any_int_ea_dtype  s    r?  c                 C   s   | j S )a.  
    Parameterized fixture for any nullable integer dtype.

    * int
    * 'int8'
    * 'uint8'
    * 'int16'
    * 'uint16'
    * 'int32'
    * 'uint32'
    * 'int64'
    * 'uint64'
    * 'UInt8'
    * 'Int8'
    * 'UInt16'
    * 'Int16'
    * 'UInt32'
    * 'Int32'
    * 'UInt64'
    * 'Int64'
    rW   rY   r%   r%   r&   any_int_dtype  s    r@  c                 C   s   | j S )z
    Parameterized fixture for any nullable integer dtype and
    any float ea dtypes.

    * 'UInt8'
    * 'Int8'
    * 'UInt16'
    * 'Int16'
    * 'UInt32'
    * 'Int32'
    * 'UInt64'
    * 'Int64'
    * 'Float32'
    * 'Float64'
    rW   rY   r%   r%   r&   any_numeric_ea_dtype  s    rA  c                 C   s   | j S )z~
    Parameterized fixture for any signed nullable integer dtype.

    * 'Int8'
    * 'Int16'
    * 'Int32'
    * 'Int64'
    rW   rY   r%   r%   r&   any_signed_int_ea_dtype  s    
rB  c                 C   s   | j S )z
    Parameterized fixture for any (purely) real numeric dtype.

    * int
    * 'int8'
    * 'uint8'
    * 'int16'
    * 'uint16'
    * 'int32'
    * 'uint32'
    * 'int64'
    * 'uint64'
    * float
    * 'float32'
    * 'float64'
    rW   rY   r%   r%   r&   any_real_numpy_dtype  s    rC  c                 C   s   | j S )a  
    Parameterized fixture for all numpy dtypes.

    * bool
    * 'bool'
    * int
    * 'int8'
    * 'uint8'
    * 'int16'
    * 'uint16'
    * 'int32'
    * 'uint32'
    * 'int64'
    * 'uint64'
    * float
    * 'float32'
    * 'float64'
    * complex
    * 'complex64'
    * 'complex128'
    * str
    * 'str'
    * 'U'
    * bytes
    * 'bytes'
    * 'datetime64[ns]'
    * 'M8[ns]'
    * 'timedelta64[ns]'
    * 'm8[ns]'
    * object
    * 'object'
    rW   rY   r%   r%   r&   any_numpy_dtype!  s    "rD  c                 C   s   | j S )a  
    Parameterized fixture for all numeric dtypes.

    * int
    * 'int8'
    * 'uint8'
    * 'int16'
    * 'uint16'
    * 'int32'
    * 'uint32'
    * 'int64'
    * 'uint64'
    * float
    * 'float32'
    * 'float64'
    * complex
    * 'complex64'
    * 'complex128'
    * 'UInt8'
    * 'Int8'
    * 'UInt16'
    * 'Int16'
    * 'UInt32'
    * 'Int32'
    * 'UInt64'
    * 'Int64'
    * 'Float32'
    * 'Float64'
    rW   rY   r%   r%   r&   any_numeric_dtypeF  s    $rE  r   r   r   Zmixedbytes   a   cr   zmixed-integerg       @Zfloatingr   Zintegerzmixed-integer-floatdecimal
datetime64z
2013-01-01z
2018-01-01r   r   Z20180101r   i  i  r   r   r   r   c                 C   s    | j \}}tj|td}||fS )a  
    Fixture for all inferred dtypes from _libs.lib.infer_dtype

    The covered (inferred) types are:
    * 'string'
    * 'empty'
    * 'bytes'
    * 'mixed'
    * 'mixed-integer'
    * 'mixed-integer-float'
    * 'floating'
    * 'integer'
    * 'decimal'
    * 'boolean'
    * 'datetime64'
    * 'datetime'
    * 'date'
    * 'timedelta'
    * 'time'
    * 'period'
    * 'interval'

    Returns
    -------
    inferred_dtype : str
        The string for the inferred dtype from _libs.lib.infer_dtype
    values : np.ndarray
        An array of object dtype that will be inferred to have
        `inferred_dtype`

    Examples
    --------
    >>> import pandas._libs.lib as lib
    >>>
    >>> def test_something(any_skipna_inferred_dtype):
    ...     inferred_dtype, values = any_skipna_inferred_dtype
    ...     # will pass
    ...     assert lib.infer_dtype(values, skipna=True) == inferred_dtype
    r   )rX   rH   rz   r1  )rZ   Zinferred_dtyper   r%   r%   r&   any_skipna_inferred_dtype  s    )
rK  c                  C   s>   t jddd ddlm}  ddlm} | }d|j_| |dS )	zj
    Get an instance of IPython.InteractiveShell.

    Will raise a skip if IPython is not installed.
    ZIPythonz6.0.0)Z
minversionr   )InteractiveShell)Configz:memory:)r<   )r.   importorskipZIPython.core.interactiveshellrL  Ztraitlets.configrM  ZHistoryManagerZ	hist_file)rL  rM  r   r%   r%   r&   ip  s    rO  ZbsrZcooZcscZcsrZdiaZdokZlilc                 C   s   ddl m} t|| jd S )z-
    Yields scipy sparse matrix classes.
    r   )sparseZ_matrix)ZscipyrP  getattrrX   )rZ   rP  r%   r%   r&   spmatrix  s    rR  c                 C   s6   g | ].}t ttj|tjjr|d krttj|qS )Tick)
issubclassrQ  rI   offsetsrS  )r   or%   r%   r&   r     s    c                 C   s   | j S )zN
    Fixture for Tick based datetime offsets available for a time series.
    rW   rY   r%   r%   r&   tick_classes  s    rW  c                 C   s   | S rp   r%   rQ   r%   r%   r&   rS     rT   c                 C   s   | j S )zk
    Simple fixture for testing keys in sorting methods.
    Tests None (no key) and the identity key.
    rW   rY   r%   r%   r&   sort_by_key  s    rX  c                  c   sx   t d ddlm}  ddlm} ddlm} G dd d|}| d|d	d
 | V  |dd  d |j	d< |j
  d S )Nfsspecr   )register_implementation)MemoryFileSystem)	_registryc                       s,   e Zd ZdZdgZdd fddZ  ZS )z fsspectest.<locals>.TestMemoryFStestmemNr   c                    s$   | dd | jd< t jf | d S )Ntestr   )popr^  superr~   )r   r   	__class__r%   r&   r~     s    z)fsspectest.<locals>.TestMemoryFS.__init__)rs   r   r   Zprotocolr^  r~   __classcell__r%   r%   ra  r&   TestMemoryFS  s   rd  r]  T)Zclobber)r.   rN  rY  rZ  Zfsspec.implementations.memoryr[  Zfsspec.registryr\  r_  r^  Zstoreclear)rZ  r[  registryrd  r%   r%   r&   
fsspectest  s    

rg  )r   NN)ZEgonZVenkmanN)NCC1701Drh  rh  c                 C   s   | j S )zP
    A 3-tuple of names, the first two for operands, the last for a result.
    rW   rY   r%   r%   r&   r   	  s    r   c                 C   s   | j S )zI
    Parametrize over __setitem__, loc.__setitem__, iloc.__setitem__
    rW   rY   r%   r%   r&   indexer_sli  s    ri  c                 C   s   | j S )z<
    Parametrize over loc.__getitem__, iloc.__getitem__
    rW   rY   r%   r%   r&   
indexer_li$  s    rj  c                 C   s   | j S )z8
    Parametrize over __setitem__, iloc.__setitem__
    rW   rY   r%   r%   r&   
indexer_si,  s    rk  c                 C   s   | j S )z7
    Parametrize over __setitem__, loc.__setitem__
    rW   rY   r%   r%   r&   
indexer_sl4  s    rl  c                 C   s   | j S )z:
    Parametrize over at.__setitem__, loc.__setitem__
    rW   rY   r%   r%   r&   
indexer_al<  s    rm  c                 C   s   | j S )z<
    Parametrize over iat.__setitem__, iloc.__setitem__
    rW   rY   r%   r%   r&   indexer_ialD  s    rn  c                   C   s   t jjjdkS )z>
    Fixture to check if the array manager is being used.
    rz   )rI   optionsmodedata_managerr%   r%   r%   r&   using_array_managerL  s    rr  c                   C   s   t jjjot jjjdkS )z7
    Fixture to check if Copy-on-Write is enabled.
    block)rI   ro  rp  Zcopy_on_writerq  r%   r%   r%   r&   using_copy_on_writeT  s    rt  (   __doc__collectionsr   r   r   r   r   r   rI  r   operatorr  typingr	   Zdateutil.tzr
   r   Z
hypothesisr   stZnumpyrH   r.   Zpytzr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsZtdZpandas.core.dtypes.dtypesr   r   ZpandasrI   r   r   r   r   r   r   Zpandas._testingZ_testingr   Zpandas.corer   Zpandas.core.indexes.apir   r   r,  ZpaImportErrorZhas_pyarrowZzoneinfocompatZPY39ZZoneInfoZZoneInfoNotFoundErrorr/   r0   r8   r'   ZItemstrr1   r>   ZsettingsZregister_profileZHealthCheckZtoo_slowZload_profilesplitr+   rQ  ZtseriesrU  clsZregister_type_strategyZbuildsZintegersZbooleansZfixturer6   rK   r[   Z
axis_framer\   r]   r^   r`   rc   rd   re   rX   Z
skip_if_norh   ri   rj   rl   ro   ZNULL_OBJECTSrt   Znulls_fixture2nanZNaTru   Zunique_nulls_fixture2ZNP_NAT_OBJECTSrv   Znp_nat_fixture2rw   ry   Zindex_or_series2rz   r{   r|   Zbox_with_array2r   r   r   r   r   r   r   ZmakeStringIndexZmakeDateIndexZmakePeriodIndexZmakeTimedeltaIndexZmakeIntIndexZmakeUIntIndexZmakeRangeIndexZmakeFloatIndexr   ZmakeNumericIndexZmakeBoolIndexr1  r   r   ZmakeCategoricalIndexZmakeIntervalIndexr   rg   r   boolr   idxkeysrL   Zindex_fixture2r   Zindex_flat2r   r   r   r   r   r;   Z_seriesr   r   ZNARROW_NP_DTYPESZ_narrow_seriesr   r   r   r   r   r   r   r   Z_all_arithmetic_operatorsr  addZraddsubZrsubmulZrmultruedivZrtruedivfloordivZ	rfloordivmodZrmodpowZrpoweqneltlegtgeand_Zrand_xorZrxoror_Zror_r  r  Z_all_numeric_reductionsr  Z_all_boolean_reductionsr  Z_all_reductionsr  r  r  r  r  r$  r&  Z	TIMEZONESextendZTIMEZONE_IDSZparametrize_fixture_docr(  r)  Ztz_aware_fixture2Z_UTCSappendr*  Zutc_fixture2ZSTRING_DTYPESr+  r-  r.  Zstring_storage2ZBYTES_DTYPESr/  ZOBJECT_DTYPESr0  r2  ZDATETIME64_DTYPESr3  ZTIMEDELTA64_DTYPESr4  r7  ZFLOAT_NUMPY_DTYPESr8  ZFLOAT_EA_DTYPESr9  r:  ZCOMPLEX_DTYPESr;  ZSIGNED_INT_NUMPY_DTYPESr<  ZUNSIGNED_INT_NUMPY_DTYPESr=  ZALL_INT_NUMPY_DTYPESr>  ZALL_INT_EA_DTYPESr?  r@  rA  ZSIGNED_INT_EA_DTYPESrB  ZALL_REAL_NUMPY_DTYPESrC  ZALL_NUMPY_DTYPESrD  rE  ZNArJ  Z_any_skipna_inferred_dtyperV   _rK  rO  rR  __all__rW  rX  rg  r   setitemZlocZilocri  rj  rk  rl  Zatrm  Ziatrn  rr  rt  r%   r%   r%   r&   <module>   s*   



< 























 






%

	
			















""


 


 	


	
$#$$2&	