U
    f/eF                     @   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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-m.Z. ej/0dZ1dd Z2dd Z3dd Z4ej5j6ddej7j8fd ej59d d: D ]8Z;e<e j=j>e;Z?e@e?ejAe?eBddeC d qNd: D ]DZ;e<e j=j>e;Z?e@e?ejAe?eBddeC ejBddd d! qd": D ]DZ;e<e j=j>e;Z?e@e?ejAe?eBd#d$eC ejBddd d% qejDd&d'd(d) ZEejDd&d'd*d+ ZFejDddd,d-gd.d/ d0d1d2 ZGeGZHejDd&d3dgd4d5d6 ZIejDd&d3dgd4d7d8 ZJejDd9d:d3gd4d;d< ZKejDd=d>d?d@gd4dAdB ZLejDd=d>d?d@gd4dCdD ZMejDddEdFdGdHgd4dIdJ ZNejDdEdFdGdHgd4dKdL ZOejDd&d3gd4dMdN ZPejDdOdPd=d>gd4dQdR ZQejDdSdTgd4dUdV ZRejDe)jSdWd/ d0dXdY ZTeTZUejDdejVe jWgd4dZd[ ZXeXZYejDe!e$gd4d\d] ZZejDe-e$gd,d^gd0d_d` Z[e[Z\ejDe-e$e j]gd,d^dagd0dbdc Z^ejDddde Z_ejDdfdg Z`ejDdhdi ZaejDdjdk Zbdldm Zcdndo Zde)edpe)fdpe)gdpe)jgdpdqdre)hdpe)idpe)jdpe)kdpe)ldpe)mdpe)ndse)odpe)pdpe-g e.qerdtdudvgddwdxged ec e-dddddwdwgdyZsejDest d4dzd, ZueuZvejDd{d| esD d4d}d~ ZwewZxejDdd| esD d4dd ZyejDdd ZzejDdd Z{ejDdd Z|ejDdd Z}dd Z~dd es D ZejDdd ZejDdd ZejejejejejejejejgZdd eD ZejDet d4dd ZeseeZejDet d4dd ZejDdd ZejDdd ZejDdd ZejDdd ZejDdd ZejDdd ZejDe"dddedd>fe"dddedd>fe#ddddfe#ddddfe&dddreddrfe%dddfgd4dd ZddddddddddddddgZejDed4ddĄ ZejDe
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d4ddƄ ZejDe
je+je
je+je
je+je
je+je
je+je
je+je
je+jgd4ddȄ Zddddddddddg
ZejDed4ddԄ ZddgZejDed4dd؄ Zee ZejDed4ddڄ ZejDddddddgd4dd ZejDddddgd4dd ZejDddddddgd4dd ZejDdd ZejDdd ZejDdd Zdddddddddde e edededejeeddeedddtdgZd d| eD ZeeeejDeed0dd Zeeedd ejDedd edd d0dd ZeZejDddee ejgd4dd ZeZejDe)jd4d	d
 ZejDdej̐dej͐ddddgd4dd ZejDdej̐dej͐ddddgd4dd ZeZejDe)jd4dd ZejDe)jd4dd ZejDddej̐dej͐ddddgd4dd ZejDe)jd4dd ZejDe)jd4dd  ZejDe)jd4d!d" ZejDe)jd4d#d$ ZejDe)je)j d4d%d& ZejDe)jd4d'd( ZejDe)jd4d)d* ZejDe)jd4d+d, ZejDe)jd4d-d. ZejDe)jd4d/d0 ZejDe)je)j d4d1d2 ZejDe)je)j d4d3d4 ZejDe)jd4d5d6 ZejDe)jd4d7d8 ZejDe)jd4d9d: Zd;d<ejVd=gfd;d<e jd=gfd>d?ejVd@gfdAejVejVejVgfdAg fdBd<ejVdwgfdCd<ejVdDgfdEdFejVdDgfdGdejVdwgfdHdejVdDgfdIe	dejVe	dwgfdJd&ejVd3gfdJd&e jd3gfdKedLejVedMgfdNe&dOejVe&dPgfdQedRddejVedSddgfdTedejVedwgfdUedejVedwgfdVe#dRe jWe#dSgfdWe"ddejVe"ddwgfgZere \ZZejDeed0dXdY ZejDdZd[ ZejDd\d]d^d_d`dadbgd4dcdd ZejDded| e j>jD d4dfdg ZejDddhd/ gd4didj ZeD dkdl ZejDdmdndogd4dpdq ZejDe)je)je)j gd4drds ZejDe)je)j gd4dtdu ZejDe)je)jgd4dvdw ZejDe)je)jgd4dxdy ZejDdz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)tzlocaltzutc)
strategies)FixedOffsetutc)DatetimeTZDtypeIntervalDtype)	DataFrameIntervalPeriodSeries	Timedelta	Timestamp)ops)Index
MultiIndexz3ignore:Promotion of numbers and bools:FutureWarningc                 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 tests--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#   3/tmp/pip-unpacked-wheel-tiezk1ph/pandas/conftest.pypytest_addoptionP   s      r%   c                 C   s   d| j kr | jdr td d| j kr@| jdr@td d| j kr`| jdr`td d	| j kr| jd
rtd d| j kr| jdstd d S )NZslowr   zskipping due to --skip-slowr    zskipping due to --only-slownetworkr   zskipping due to --skip-networkdbr   zskipping due to --skip-dbZhigh_memoryr   z=skipping high memory test since --run-high-memory was not set)keywordsconfig	getoptionpytestskip)itemr#   r#   r$   pytest_runtest_setup_   s    



r.   c                 C   s0   | D ]&}d|j kr |tjj |t qd S )Nz/frame/)ZnodeidZ
add_markerr+   markZarraymanager suppress_npdev_promotion_warning)itemsr-   r#   r#   r$   pytest_collection_modifyitemsr   s    
r2   cii  )deadlineZsuppress_health_checkz)MonthBegin MonthEnd BMonthBegin BMonthEndic   )n	normalizez%YearBegin YearEnd BYearBegin BYearEnd         )Z	min_valueZ	max_value)r6   r7   monthz1QuarterBegin QuarterEnd BQuarterBegin BQuarterEndi   )r6   r7   ZstartingMonthT)Zautousec                   C   s   t dd dS )z<
    Configure settings for all tests and test modules.
    Zchained_assignmentraiseN)pdZ
set_optionr#   r#   r#   r$   configure_tests   s    r@   c                 C   s   t | d< t| d< dS )z:
    Make `np` and `pd` names available for doctests.
    npr?   N)rA   r?   )Zdoctest_namespacer#   r#   r$   add_imports   s    rB   indexcolumnsc                 C   s   dt |  S )Nzaxis=reprxr#   r#   r$   <lambda>       rI   )paramsidsc                 C   s   | j S )z@
    Fixture for returning the axis numbers of a DataFrame.
    paramrequestr#   r#   r$   axis   s    rQ   F)rK   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).
    rM   rO   r#   r#   r$   observed   s    
rR   c                 C   s   | j S )z6
    Boolean 'ordered' parameter for Categorical.
    rM   rO   r#   r#   r$   ordered   s    rS   firstlastc                 C   s   | j S )z[
    Valid values for the 'keep' parameter used in
    .duplicated or .drop_duplicates
    rM   rO   r#   r#   r$   keep   s    rV   leftrightZbothZneitherc                 C   s   | j S )z<
    Fixture for trying all interval closed parameters.
    rM   rO   r#   r#   r$   closed   s    rY   c                 C   s   | j S )zS
    Secondary closed fixture to allow parametrizing over all pairs of closed.
    rM   rO   r#   r#   r$   other_closed   s    rZ   gzipbz2zipxzc                 C   s   | j S )zK
    Fixture for trying common compression types in compression tests.
    rM   rO   r#   r#   r$   compression   s    r_   c                 C   s   | j S )zk
    Fixture for trying common compression types in compression tests excluding
    uncompressed case.
    rM   rO   r#   r#   r$   compression_only  s    r`   c                 C   s   | j S )z,
    Fixture that an array is writable.
    rM   rO   r#   r#   r$   writable
  s    ra   innerouterc                 C   s   | j S )z:
    Fixture for trying all types of join operations.
    rM   rO   r#   r#   r$   	join_type  s    rd   nlargest	nsmallestc                 C   s   | j S )z1
    Fixture for trying all nselect methods.
    rM   rO   r#   r#   r$   nselect_method  s    rg   c                 C   s
   t | jS N)type__name__rG   r#   r#   r$   rI   %  rJ   c                 C   s   | j S )z/
    Fixture for each null type in pandas.
    rM   rO   r#   r#   r$   nulls_fixture%  s    rk   c                 C   s   | j S )zL
    Fixture for each null type in pandas, each null type exactly once.
    rM   rO   r#   r#   r$   unique_nulls_fixture0  s    rl   c                 C   s   | j S )z;
    Fixture to parametrize over DataFrame and Series.
    rM   rO   r#   r#   r$   frame_or_series@  s    rm   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
    rM   rO   r#   r#   r$   index_or_seriesI  s    ro   arrayc                 C   s   | j S )zG
    Fixture to parametrize over Index, Series, and ExtensionArray
    rM   rO   r#   r#   r$   index_or_series_or_array\  s    rq   c                  C   s   G dd dt } | S )z,
    Fixture for a dictionary subclass.
    c                   @   s   e Zd Zdd ZdS )z"dict_subclass.<locals>.TestSubDictc                 _   s   t j| f|| d S rh   )dict__init__)selfargskwargsr#   r#   r$   rs   k  s    z+dict_subclass.<locals>.TestSubDict.__init__N)rj   
__module____qualname__rs   r#   r#   r#   r$   TestSubDictj  s   ry   )rr   )ry   r#   r#   r$   dict_subclassd  s    rz   c                  C   s   G dd dt j} | S )z8
    Fixture for a non-mapping dictionary subclass.
    c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z5non_dict_mapping_subclass.<locals>.TestNonDictMappingc                 S   s
   || _ d S rh   )_data)rt   Zunderlying_dictr#   r#   r$   rs   x  s    z>non_dict_mapping_subclass.<locals>.TestNonDictMapping.__init__c                 S   s   | j |S rh   )r{   __getitem__)rt   keyr#   r#   r$   r|   {  s    zAnon_dict_mapping_subclass.<locals>.TestNonDictMapping.__getitem__c                 S   s
   | j  S rh   )r{   __iter__rt   r#   r#   r$   r~   ~  s    z>non_dict_mapping_subclass.<locals>.TestNonDictMapping.__iter__c                 S   s
   | j  S rh   )r{   __len__r   r#   r#   r$   r     s    z=non_dict_mapping_subclass.<locals>.TestNonDictMapping.__len__N)rj   rw   rx   rs   r|   r~   r   r#   r#   r#   r$   TestNonDictMappingw  s   r   )r   Mapping)r   r#   r#   r$   non_dict_mapping_subclassq  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 rh   )yearrG   r#   r#   r$   rI     rJ   zAmultiindex_year_month_day_dataframe_random_data.<locals>.<lambda>c                 S   s   | j S rh   )r<   rG   r#   r#   r$   rI     rJ   c                 S   s   | j S rh   )dayrG   r#   r#   r$   rI     rJ   c                 S   s   g | ]}| d qS )i8)astype).0Zlevr#   r#   r$   
<listcomp>  s     zCmultiindex_year_month_day_dataframe_random_data.<locals>.<listcomp>r   r<   r   T)Zinplace)tmZmakeTimeDataFramegroupbysumrC   Z
set_levelslevelsZ	set_names)ZtdfZymdr#   r#   r$   /multiindex_year_month_day_dataframe_random_data  s
    
 r   c                  C   sv   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} ttjdd| tdddgdddS )z2DataFrame with 2 level MultiIndex with random datafoobarbazquxonetwothreer   r:         rT   second)r   codesnames
   ABCexpname)rC   rD   )r   r   rA   randomrandnr   rC   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   r:   r   r   rT   r   F)r   r   r   Zverify_integrity)r   rA   rp   r   )Z
major_axisZ
minor_axisZmajor_codesZminor_codesZindex_namesr#   r#   r$   _create_multiindex  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.
    r:   r   ab20130101r   
US/Eastern)Zperiodstzr   r   r   )r   )r   Zfrom_productr?   Z
date_ranger#   r#   r#   r$   _create_mi_with_dt64tz_level  s    r   r   z
US/Pacific)r   r   r   r   r   r   r   )unicodestringr   zdatetime-tzperiodr   intuintrangefloatboolZcategoricalintervalemptytuplesmi-with-dt64tz-levelmultirepeatsc                 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_dictrN   copyrO   r#   r#   r$   rC     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.
    )rN   r   r   )rP   r}   r#   r#   r$   
index_flat  s    	r   c                 C   s&   g | ]}|d krt t| ts|qS ))r   r   r   r   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deep)r   r   r   rh   r   r:   N)r   rN   r   valuestolistr   from_tuplesri   )rP   indvalsr#   r#   r$   index_with_missing  s    

r   c                   C   s   t g g tjdS )N)rC   dtype)r   rA   float64r#   r#   r#   r$   empty_series#  s    r   c                  C   s   t  } d| _| S )zC
    Fixture for Series of floats with Index of unique strings
    rn   )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_series2  s    r   c                  C   s   t  } d| _| S )z9
    Fixture for Series of floats with DatetimeIndex
    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   )rC   r   )lenrA   r   r   r   )rC   sizedatar#   r#   r$   _create_seriesF  s    r   c                 C   s"   i | ]\}}d | dt |qS )zseries-with-z-indexr   )r   Zindex_idrC   r#   r#   r$   
<dictcomp>M  s   
 r   c                 C   s   t | S )zE
    Fixture for tests on series with changing types of indices.
    r   r   r#   r#   r$   series_with_simple_indexS  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   )r]   r   r   rA   r   r   r   NaN)Zarraysr   rC   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   )rj   r   ZmakeFloatSeriesr   )r   r   r#   r#   r$   r   v  s   
 c                 C   s   t | j  S )z:
    Fixture for Series with low precision data types
    )_narrow_seriesrN   r   rO   r#   r#   r$   narrow_series|  s    r   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_objsrN   r   rO   r#   r#   r$   index_or_series_obj  s    r   c                   C   s   t  S rh   )r   r#   r#   r#   r$   empty_frame  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]
    int64)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   float32r   r:   int32)r   r   cr   r   r   )r   rA   rp   Zaranger#   r#   r#   r$   mixed_type_frame  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  r:   r   r      r9   r   )r   r   rA   r   r   r   )datesr#   r#   r$   (rand_series_with_duplicate_datetimeindex  s    









r   )rW   rX   r   g?g      ?r   z2012-01M)freqz	period[M]z
2012-02-01Dz	period[D]z
2011-01-01r   )secondsztimedelta64[ns]c                 C   s   | j S rh   rM   rO   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.
    rM   rO   r#   r#   r$   all_arithmetic_operators@  s    r  c                 C   s   | j S )zU
    Fixture for operator and roperator arithmetic, comparison, and logical ops.
    rM   rO   r#   r#   r$   all_binary_operatorsH  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.
    rM   rO   r#   r#   r$   all_arithmetic_functionsm  s    r  r   maxminZmeanprodZstdvarZmedianZkurtZskewc                 C   s   | j S )z.
    Fixture for numeric reduction names.
    rM   rO   r#   r#   r$   all_numeric_reductions  s    r  allanyc                 C   s   | j S )z.
    Fixture for boolean reduction names.
    rM   rO   r#   r#   r$   all_boolean_reductions  s    r  c                 C   s   | j S )z>
    Fixture for all (boolean + numeric) reduction names.
    rM   rO   r#   r#   r$   all_reductions  s    r  __eq____ne____le____lt____ge____gt__c                 C   s   | j S )zu
    Fixture for dunder names for common compare operations

    * >=
    * >
    * ==
    * !=
    * <
    * <=
    rM   rO   r#   r#   r$   all_compare_operators  s    r  c                 C   s   | j S )zm
    Fixture for dunder names for compare operations except == and !=

    * >=
    * >
    * <
    * <=
    rM   rO   r#   r#   r$   compare_operators_no_eq_ne  s    
r  __and____rand____or____ror____xor____rxor__c                 C   s   | j S )zY
    Fixture for dunder names for common logical operations

    * |
    * &
    * ^
    rM   rO   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!   )r*   )Zpytestconfigr#   r#   r$   strict_data_files  s    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.
    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 .)ospathjoinexists
ValueErrorr+   r,   )ru   r#  Z	BASE_PATHr  r#   r$   deco  s    
zdatapath.<locals>.deco)r"  r#  r$  dirname__file__)r  r(  r#   r'  r$   datapath  s    r+  c                 C   s   t | ddddS )z*
    The iris dataset as a DataFrame.
    ior   csvziris.csv)r?   Zread_csv)r+  r#   r#   r$   iris  s    r.  UTCz
Asia/Tokyozdateutil/US/Pacificzdateutil/Asia/Singaporez+01:15z-02:15z	UTC+01:15z	UTC-02:15i,  i)hoursr   r   c                 C   s   g | ]}t |qS r#   rE   )r   ir#   r#   r$   r   .  s     c                 C   s   | j S )zD
    Fixture for trying timezones including default (None): {0}
    rM   rO   r#   r#   r$   tz_naive_fixture1  s    r2  c                 C   s   | j S )z4
    Fixture for trying explicit timezones: {0}
    rM   rO   r#   r#   r$   tz_aware_fixture:  s    r3  r   zdateutil/UTCc                 C   s   | j S )zQ
    Fixture to provide variants of UTC timezone strings and tzinfo objects.
    rM   rO   r#   r#   r$   utc_fixtureG  s    r4  c                 C   s   | j S )zR
    Parametrized fixture for string dtypes.

    * str
    * 'str'
    * 'U'
    rM   rO   r#   r#   r$   string_dtypeU  s    	r5  zstring[python]zstring[pyarrow]Zpyarrowz1.0.0)min_version)Zmarksc                 C   s   | j S )za
    Parametrized fixture for string dtypes.

    * 'string[python]'
    * 'string[pyarrow]'
    rM   rO   r#   r#   r$   nullable_string_dtypea  s    r7  pythonc                 C   s   | j S )zb
    Parametrized fixture for pd.options.mode.string_storage.

    * 'python'
    * 'pyarrow'
    rM   rO   r#   r#   r$   string_storages  s    r9  c                 C   s   | j S )zK
    Parametrized fixture for bytes dtypes.

    * bytes
    * 'bytes'
    rM   rO   r#   r#   r$   bytes_dtype  s    r:  c                 C   s   | j S )zN
    Parametrized fixture for object dtypes.

    * object
    * 'object'
    rM   rO   r#   r#   r$   object_dtype  s    r;  objectc                 C   s   | j S )zo
    Parametrized fixture for string dtypes.
    * 'object'
    * 'string[python]'
    * 'string[pyarrow]'
    rM   rO   r#   r#   r$   any_string_dtype  s    r=  c                 C   s   | j S )z\
    Parametrized fixture for datetime64 dtypes.

    * 'datetime64[ns]'
    * 'M8[ns]'
    rM   rO   r#   r#   r$   datetime64_dtype  s    r>  c                 C   s   | j S )z^
    Parametrized fixture for timedelta64 dtypes.

    * 'timedelta64[ns]'
    * 'm8[ns]'
    rM   rO   r#   r#   r$   timedelta64_dtype  s    r?  c                 C   s   | j S )z^
    Parameterized fixture for float dtypes.

    * float
    * 'float32'
    * 'float64'
    rM   rO   r#   r#   r$   float_dtype  s    	r@  c                 C   s   | j S )zR
    Parameterized fixture for float dtypes.

    * 'Float32'
    * 'Float64'
    rM   rO   r#   r#   r$   float_ea_dtype  s    rA  c                 C   s   | j S )z~
    Parameterized fixture for float dtypes.

    * float
    * 'float32'
    * 'float64'
    * 'Float32'
    * 'Float64'
    rM   rO   r#   r#   r$    any_float_allowed_nullable_dtype  s    rB  c                 C   s   | j S )zg
    Parameterized fixture for complex dtypes.

    * complex
    * 'complex64'
    * 'complex128'
    rM   rO   r#   r#   r$   complex_dtype  s    	rC  c                 C   s   | j S )z|
    Parameterized fixture for signed integer dtypes.

    * int
    * 'int8'
    * 'int16'
    * 'int32'
    * 'int64'
    rM   rO   r#   r#   r$   
sint_dtype  s    rD  c                 C   s   | j S )zx
    Parameterized fixture for unsigned integer dtypes.

    * 'uint8'
    * 'uint16'
    * 'uint32'
    * 'uint64'
    rM   rO   r#   r#   r$   
uint_dtype  s    
rE  c                 C   s   | j S )z
    Parameterized fixture for any integer dtype.

    * int
    * 'int8'
    * 'uint8'
    * 'int16'
    * 'uint16'
    * 'int32'
    * 'uint32'
    * 'int64'
    * 'uint64'
    rM   rO   r#   r#   r$   any_int_dtype  s    rF  c                 C   s   | j S )z
    Parameterized fixture for any nullable integer dtype.

    * 'UInt8'
    * 'Int8'
    * 'UInt16'
    * 'Int16'
    * 'UInt32'
    * 'Int32'
    * 'UInt64'
    * 'Int64'
    rM   rO   r#   r#   r$   any_nullable_int_dtype$  s    rG  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'
    rM   rO   r#   r#   r$   any_int_or_nullable_int_dtype5  s    rH  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'
    rM   rO   r#   r#   r$   any_nullable_numeric_dtypeO  s    rI  c                 C   s   | j S )z~
    Parameterized fixture for any signed nullable integer dtype.

    * 'Int8'
    * 'Int16'
    * 'Int32'
    * 'Int64'
    rM   rO   r#   r#   r$   any_signed_nullable_int_dtypec  s    
rJ  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'
    rM   rO   r#   r#   r$   any_real_dtypep  s    rK  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'
    rM   rO   r#   r#   r$   any_numpy_dtype  s    "rL  r   r   r   bytes   a   cr   zmixed-integermixedg       @Zfloatingr   integerzmixed-integer-floatdecimalboolean
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   )rN   rA   rp   r<  )rP   Zinferred_dtyper   r#   r#   r$   any_skipna_inferred_dtype  s    )
rU  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.interactiveshellrV  Ztraitlets.configrW  ZHistoryManagerZ	hist_file)rV  rW  r   r#   r#   r$   ip  s    rY  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scipyrZ  getattrrN   )rP   rZ  r#   r#   r$   spmatrix  s    r\  c                 C   s.   g | ]&}t ttj|tjjrttj|qS r#   )
issubclassr[  r?   offsetsZTick)r   or#   r#   r$   r     s   c                 C   s   | j S )zN
    Fixture for Tick based datetime offsets available for a time series.
    rM   rO   r#   r#   r$   tick_classes  s    r`  c                 C   s   | S rh   r#   rG   r#   r#   r$   rI   &  rJ   c                 C   s   | j S )zk
    Simple fixture for testing keys in sorting methods.
    Tests None (no key) and the identity key.
    rM   rO   r#   r#   r$   sort_by_key&  s    ra  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 fddZ  ZS )z fsspectest.<locals>.TestMemoryFStestmemNc                    s$   | dd | jd< t jf | d S )Ntestr   )poprg  superrs   )rt   rv   	__class__r#   r$   rs   :  s    z)fsspectest.<locals>.TestMemoryFS.__init__)rj   rw   rx   protocolrg  rs   __classcell__r#   r#   rj  r$   TestMemoryFS6  s   rn  rf  T)clobber)r+   rX  rb  rc  Zfsspec.implementations.memoryrd  Zfsspec.registryre  rh  rg  storeclear)rc  rd  registryrn  r#   r#   r$   
fsspectest/  s    

rs  )r   NN)ZEgonZVenkmanN)NCC1701Drt  rt  c                 C   s   | j S )zP
    A 3-tuple of names, the first two for operands, the last for a result.
    rM   rO   r#   r#   r$   r   E  s    r   c                 C   s   | j S )zI
    Parametrize over __setitem__, loc.__setitem__, iloc.__setitem__
    rM   rO   r#   r#   r$   indexer_sliS  s    ru  c                 C   s   | j S )z8
    Parametrize over __setitem__, iloc.__setitem__
    rM   rO   r#   r#   r$   
indexer_si[  s    rv  c                 C   s   | j S )z7
    Parametrize over __setitem__, loc.__setitem__
    rM   rO   r#   r#   r$   
indexer_slc  s    rw  c                 C   s   | j S )z:
    Parametrize over at.__setitem__, loc.__setitem__
    rM   rO   r#   r#   r$   
indexer_alk  s    rx  c                 C   s   t jjjdkS )z>
    Fixture to check if the array manager is being used.
    rp   )r?   optionsmodeZdata_managerrO   r#   r#   r$   using_array_managers  s    r{  (  __doc__collectionsr   r   r   r   r   r   rR  r   operatorr"  Zdateutil.tzr	   r
   Z
hypothesisr   stZnumpyrA   r+   Zpytzr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandas.core.dtypes.dtypesr   r   Zpandasr?   r   r   r   r   r   r   Zpandas._testingZ_testingr   Zpandas.corer   Zpandas.core.indexes.apir   r   r/   filterwarningsr0   r%   r.   r2   settingsZregister_profileZHealthCheckZtoo_slowZload_profilesplitr   r[  Ztseriesr^  clsZregister_type_strategyZbuildsZintegersZbooleansZfixturer@   rB   rQ   Z
axis_framerR   rS   rV   rY   rZ   r_   r`   ra   rd   rg   ZNULL_OBJECTSrk   Znulls_fixture2nanZNaTrl   Zunique_nulls_fixture2rm   ro   Zindex_or_series2rp   rq   rz   r   r   r   r   r   ZmakeUnicodeIndexZmakeStringIndexZmakeDateIndexZmakePeriodIndexZmakeTimedeltaIndexZmakeIntIndexZmakeUIntIndexZmakeRangeIndexZmakeFloatIndexZmakeBoolIndexZmakeCategoricalIndexZmakeIntervalIndexr   r]   r   keysrC   Zindex_fixture2r   Zindex_flat2r   r   r   r   r   r   r1   Z_seriesr   r   Zfloat16r   Zint8Zint16r   Zuint8Zuint16Zuint32Z_narrow_dtypesr   r   r   r   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	TIMEZONESZTIMEZONE_IDSZparametrize_fixture_docstrr2  r3  Ztz_aware_fixture2r4  Zutc_fixture2ZSTRING_DTYPESr5  rN   Z
skip_if_nor7  r9  Zstring_storage2ZBYTES_DTYPESr:  ZOBJECT_DTYPESr;  r=  ZDATETIME64_DTYPESr>  ZTIMEDELTA64_DTYPESr?  ZFLOAT_DTYPESr@  ZFLOAT_EA_DTYPESrA  rB  ZCOMPLEX_DTYPESrC  ZSIGNED_INT_DTYPESrD  ZUNSIGNED_INT_DTYPESrE  ZALL_INT_DTYPESrF  ZALL_EA_INT_DTYPESrG  rH  rI  ZSIGNED_EA_INT_DTYPESrJ  ZALL_REAL_DTYPESrK  ZALL_NUMPY_DTYPESrL  ZNArT  Z_any_skipna_inferred_dtyperL   _rU  rY  r\  __all__r`  ra  rs  r   setitemlocZilocru  rv  rw  atrx  r{  r#   r#   r#   r$   <module>   s   


 


















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