
    Wh&                     &-   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c 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 	 ddl1Z2[2dZ3n# e4$ r dZ3Y nw xY wdZ5e"j6        j7        r(ddl5Z5	  e5j8        d           n# e5j9        $ r dZ5Y nw xY wej:        ;                    d          Z<d2dZ=dej>        de?de?ddfdZ@d ZAejB        C                    ddejD        jE        f           ejB        F                    d           dG                                D ]VZH eIe"jJ        jK        eH          ZL ejM        eL ejN        eL ejO        dd           ejP                                         WdG                                D ]gZH eIe"jJ        jK        eH          ZL ejM        eL ejN        eL ejO        d d!           ejP                     ejO        d"d#$          %                     hd&G                                D ]gZH eIe"jJ        jK        eH          ZL ejM        eL ejN        eL ejO        d'd(           ejP                     ejO        d"d#$          )                     hejQ        d2d*            ZR ejQ        d+          d2d,            ZS ejQ        g d-d. /          d0             ZTeTZU ejQ        d"d1gd2 /          d3             ZV ejQ        g d45          d6             ZW ejQ        g d45          d7             ZX ejQ        g d85          d9             ZY ejQ        g d:5          d;             ZZ ejQ        g d<5          d=             Z[ ejQ        g d<5          d>             Z\ ejQ        dd?d@dAdBdC ej]        dD ej^        dE          F          g5          dG             Z_ ejQ        d?d@dAdBdC ej]        dD ej^        dE          F          g5          dH             Z` ejQ        ddg5          dI             Za ejQ        g dJ5          dK             Zb ejQ        dLdMg5          dN             Zc ejQ        e+jd        dO /          dP             ZeeeZf ejQ        dejg        e"jh        g5          dQ             ZieiZj ejQ        e+jk        dR /          dS             ZlelZm ejQ        e#e&g5          dT             Zn ejQ        e/e&gdUdVg/          dW             ZoeoZp ejQ        e/e&e"jq        gg dX/          dY             Zr ejQ        e/e&e#e"jq        gdZ /          d[             ZsesZtejQ        d\             ZuejQ        d]             ZvejQ        d^             ZwejQ        de0fd_            ZxejQ        de#fd`            Zyda Zzdb Z{i dc e+j|        dd          de e+j}        dd          df e+j}        dddgh          di e+j~        dd          dj e+j        dd          dk e+j        dd          dl e+j        dd          dm e+j        dd          dn e+j        dd          do e+j        dd                              do          dp e+j        dd                              dp          dq e+j        dddrs          dt e+j        dddus          dv e+j        dddws          dx e+j        dddys          dz e+j        ddd{s          d| e+j        ddd}s          i d~ e+j        ddds          d e+j        ddds          d e+j        ddds          d e+j        ddds          d e+j        d                              e          d e/ej                            d          dk               d e+j        dd          d e+j        dd          d e/g           d e0j         eg dg d                    d e{            d ez            d e/g d          d e/ ej        dd          ds          d e/ ej        dd          ds          d e/ ej        dd          ds          d e/ ej        dd                              e          ds          d e/ e"jq         e+j|        dd          ds                    iZe3r. e/ e"jq         e+j|        dd          ds                    Zeed<    ejQ        e                                5          d             ZeZ ejQ        d eD             5          d             ZeZ ejQ        d eD             5          d             ZejQ        de&fd            ZejQ        de&fd            ZejQ        de&fd            Zd Zd e                                D             ZejQ        de&fd            ZejQ        de&fd            Zd e+j        D             Zi eeeZ ejQ        e                                5          d             ZejQ        de#fd            ZejQ        de#fd            ZejQ        de#fd            ZejQ        de#fd            ZejQ        de&fd            Z ejQ         e$dd!           e drd          f e$dd           e dd          f e%dd          df e%dd          df e(ddh           edh          f e'd          dfg5          d             Zg dâZ ejQ        e5          dĄ             Z ejQ        e
j        e-j        e
j        e-j        e
j        e-j        e
j        e-j        e
j        e-j        e
j        e-j        e
j        e-j        e
j        e
j        e
j        e
j        e
j        e
j        e
j        e-j        e
j        e-j        e
j        e-j        g5          dń             Z ejQ        e
j        e-j        e
j        e-j        e
j        e-j        e
j        e-j        e
j        e-j        e
j        e-j        e
j        e-j        g5          dƄ             Zg dǢZ ejQ        eȬ5          dȄ             ZddgZ ejQ        eʬ5          d˄             Zeez   Z ejQ        e̬5          d̄             Z ejQ        e
j        e
j        e
j        e
j        e
j        e
j        g5          d̈́             Z ejQ        g d΢5          dτ             Z ejQ        g dТ5          dф             ZejQ        d҄             ZejQ        de?dede?f         fdՄ            ZejQ        de#fdք            Zdddddddddd e             e             edަ           ed           edߦ          ej         e ed"                     e ed          d          gZe53eԠ                     e5j8        dg           e5j8        d          g           d eD             Z ej         e?e֦                     ejQ        ee֬/          d                         Z ej         e?ed"d                              ejQ        ed"d         ed"d         /          d                         ZeZdde e            ej        gZe5#e۠                     e5j8        d                      ejQ        e۬5          d             ZeZ ejQ        e+j        5          d             Z ejQ        d ej]        d ej^        dd          F          g5          d             Z ejQ        d ej]        d ej^        dd          F          g5          d             ZeZ ejQ        e+j        5          d             Z ejQ        e+j        5          d             Z ejQ        dd ej]        d ej^        dd          F          g5          d             Z ejQ        e+j        5          d             Z ejQ        e+j        5          d             ZejQ        de(fd            Z ejQ        e+j        5          d             Z ejQ        e+j        5          d             Z ejQ        e+j        e+j        z   5          d             Z ejQ        e+j        5          d             Z ejQ        e+j        5          d             Z ejQ        e+j        5          d             Z ejQ        e+j        5          d             Z ejQ        e+j        5          d             Z ejQ        e+j        e+j        z   5          d              Z ejQ        e+j        e+j        z   5          d             Z ejQ        e+j        5          d             Z  ejQ        e+j        5          d             Z ejQ        e+j        5          d             Z ejQ        e+j        e+j        z   e+j        z   e+j        z   5          d             Zdcdejg        dgfdcde"j        dgfdde"jh        dgfd	d
ejg        dgfdejg        ejg        ejg        gfdg fddejg        dgfddejg        dgfddejg        dgfdd"ejg        dgfdd"ejg        dgfd e	d"          ejg         e	d          gfddejg        dgfdde"j        dgfd ej        d          ejg         ej        d          gfde e(d          ejg         e(d          gfd edd"d"          ejg         edd"d"          gfdj ed"          ejg         ed          gfd ed"          ejg         ed          gfdi e%d          e"jh         e%d          gfd e$dd"          ejg         e$dd          gfgZ ee \  Z	Z
 ejQ        ee	/          d             ZejQ        d             Z ejQ        g d5          d              Z ejQ        d! e"jK        j        D             5          d"             Z ejQ        dd# g5          d$             Z ejQ                    d%             Z ejQ        d&d'd(ejg        ejg        ejg        fejg        e"jh        dfejg        e"j        dfe"j        e"j        e"j        fg5          d)             Z ejQ        e+j        e+j        e+j        g5          d*             Z ejQ        e+j        e+j        g5          d+             Z ejQ        e+j        e+j        g5          d,             Z ejQ        e+j        e+j        g5          d-             Z ejQ        e+j        e+j        g5          d.             Z ejQ        e+j        e+j        g5          d/             ZejQ        d0             ZejQ        defd1            ZdS (3  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
MultiIndexTFUTCz3ignore:Promotion of numbers and bools:FutureWarningreturnc                 &   |                      ddd           |                      ddd           |                      ddd           |                      d	dd
           |                      dd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.)	addoption)parsers    U/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/pandas/conftest.pypytest_addoptionr)   f   s    
]<>OPPP
%lAUVVV
[OLLL
L7N     ]<>STTT
?          itempathmessagec                     | j                             |          r7|                     t          j                            d|                      dS 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-   s      r(   ignore_doctest_warningr5   u   sZ     y$ I223FW3F3FGGHHHHHI Ir*   c                    |                     d          }|                     d          }|                     d          }|                     d          }t          j        j        d|dft          j        j        d|dft          j        j        d|dfg}g d	}| D ]_}|                     d
          s|                     dd          rK|                    t          j                            d                     |D ]\  }	}
t          ||	|
           d|j	        v r$|                    t          j        j
                   |                    t                     |D ]^\  }}}}||j        v rN|r7|                    t          j                            d|                       n|                    |           _|r;d|j        vr2|                    t          j                            d                     ad 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)	getoptionr2   r3   r7   r8   r9   r1   usefixturesr5   nodeidarraymanager suppress_npdev_promotion_warningkeywordsskip)itemsconfig	skip_slow	only_slowskip_networkskip_dbmarksignored_doctest_warningsr+   r,   r-   r3   kwdskip_if_foundarg_names                  r(   pytest_collection_modifyitemsrN      s%     //I  //I##$455L{++G 
	69m<		i{C	w4E       M M/00 	<F4D4D 5E 5
 5
 	<
 OOFK334IJJKKK!9 < <g&tT7;;;; ##OOFK4555899949 	& 	&0T3xdm## ! OOFK$4$45R5R5R$S$STTTE%%% 	Mt}44OOFK,,-JKKLLL7M Mr*   ci)deadlinesuppress_health_checkz)MonthBegin MonthEnd BMonthBegin BMonthEndic   )n	normalizez%YearBegin YearEnd BYearBegin BYearEnd         )	min_value	max_value)rS   rT   monthz1QuarterBegin QuarterEnd BQuarterBegin BQuarterEndi   )rS   rT   startingMonthc                 .    t           | d<   t          | d<   dS )z:
    Make `np` and `pd` names available for doctests.
    nppdN)r_   r`   )doctest_namespaces    r(   r;   r;      s     
 !d dr*   )autousec                  0    t          j        dd           dS )z<
    Configure settings for all tests and test modules.
    chained_assignmentraiseN)r`   
set_option r*   r(   configure_testsrh      s    
 M&00000r*   )r   rW   indexcolumnsc                 &    dt          |            S Nzaxis=reprxs    r(   <lambda>rq   	  s    ARaARAR r*   )paramsidsc                     | j         S )z@
    Fixture for returning the axis numbers of a DataFrame.
    paramrequests    r(   axisry   	      
 =r*   rj   c                 &    dt          |            S rl   rm   ro   s    r(   rq   rq     s    5FT!WW5F5F r*   c                     | j         S )zA
    Fixture for returning aliases of axis 1 of a DataFrame.
    ru   rw   s    r(   axis_1r}     rz   r*   )TFN)rr   c                     | 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).
    ru   rw   s    r(   observedr          =r*   c                     | j         S )z6
    Boolean 'ordered' parameter for Categorical.
    ru   rw   s    r(   orderedr   )  rz   r*   )firstlastFc                     | j         S )z[
    Valid values for the 'keep' parameter used in
    .duplicated or .drop_duplicates
    ru   rw   s    r(   keepr   1       =r*   )bothneitherleftrightc                     | j         S )zA
    Fixture for trying all interval 'inclusive' parameters.
    ru   rw   s    r(   inclusive_endpoints_fixturer   :  rz   r*   )r   r   r   r   c                     | j         S )z<
    Fixture for trying all interval closed parameters.
    ru   rw   s    r(   closedr   B  rz   r*   c                     | j         S )zS
    Secondary closed fixture to allow parametrizing over all pairs of closed.
    ru   rw   s    r(   other_closedr   J  rz   r*   gzipbz2zipxztarzstd	zstandard)rI   c                     | j         S )zK
    Fixture for trying common compression types in compression tests.
    ru   rw   s    r(   compressionr   R       =r*   c                     | j         S )zk
    Fixture for trying common compression types in compression tests excluding
    uncompressed case.
    ru   rw   s    r(   compression_onlyr   d  r   r*   c                     | j         S )z,
    Fixture that an array is writable.
    ru   rw   s    r(   writabler   v  rz   r*   )innerouterr   r   c                     | j         S )z:
    Fixture for trying all types of join operations.
    ru   rw   s    r(   	join_typer   ~  rz   r*   nlargest	nsmallestc                     | j         S )z1
    Fixture for trying all nselect methods.
    ru   rw   s    r(   nselect_methodr     rz   r*   c                 *    t          |           j        S Ntype__name__ro   s    r(   rq   rq     s    d1gg6F r*   c                     | j         S )z/
    Fixture for each null type in pandas.
    ru   rw   s    r(   nulls_fixturer     rz   r*   c                     | j         S )zL
    Fixture for each null type in pandas, each null type exactly once.
    ru   rw   s    r(   unique_nulls_fixturer     rz   r*   c                 *    t          |           j        S r   r   ro   s    r(   rq   rq     s    Q8H r*   c                     | j         S )z-
    Fixture for each NaT type in numpy.
    ru   rw   s    r(   np_nat_fixturer     rz   r*   c                     | j         S )z;
    Fixture to parametrize over DataFrame and Series.
    ru   rw   s    r(   frame_or_seriesr     rz   r*   ri   seriesc                     | 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
    ru   rw   s    r(   index_or_seriesr     s     =r*   )ri   r   arrayc                     | j         S )zG
    Fixture to parametrize over Index, Series, and ExtensionArray
    ru   rw   s    r(   index_or_series_or_arrayr     rz   r*   c                     | j         S r   )r   ro   s    r(   rq   rq     s    1: r*   c                     | j         S )z]
    Fixture to test behavior for Index, Series, DataFrame, and pandas Array
    classes
    ru   rw   s    r(   box_with_arrayr     r   r*   c                  ,     G d dt                     } | S )z,
    Fixture for a dictionary subclass.
    c                       e Zd ZddZdS )"dict_subclass.<locals>.TestSubDictr   Nc                 0    t          j        | g|R i | d S r   )dict__init__)selfargskwargss      r(   r   z+dict_subclass.<locals>.TestSubDict.__init__  s(    M$000000000r*   r   N)r   
__module____qualname__r   rg   r*   r(   TestSubDictr     s(        	1 	1 	1 	1 	1 	1r*   r   )r   )r   s    r(   dict_subclassr     s4    1 1 1 1 1d 1 1 1 r*   c                  6     G d dt           j                  } | S )z8
    Fixture for a non-mapping dictionary subclass.
    c                   (    e Zd ZddZd Zd Zd ZdS )5non_dict_mapping_subclass.<locals>.TestNonDictMappingr   Nc                     || _         d S r   )_data)r   underlying_dicts     r(   r   z>non_dict_mapping_subclass.<locals>.TestNonDictMapping.__init__  s    (DJJJr*   c                 6    | j                             |          S r   )r   __getitem__)r   keys     r(   r   zAnon_dict_mapping_subclass.<locals>.TestNonDictMapping.__getitem__   s    :))#...r*   c                 4    | j                                         S r   )r   __iter__r   s    r(   r   z>non_dict_mapping_subclass.<locals>.TestNonDictMapping.__iter__  s    :&&(((r*   c                 4    | j                                         S r   )r   __len__r   s    r(   r   z=non_dict_mapping_subclass.<locals>.TestNonDictMapping.__len__  s    :%%'''r*   r   )r   r   r   r   r   r   r   rg   r*   r(   TestNonDictMappingr     sU        	) 	) 	) 	)	/ 	/ 	/	) 	) 	)	( 	( 	( 	( 	(r*   r   )r   Mapping)r   s    r(   non_dict_mapping_subclassr     s6    ( ( ( ( (S[ ( ( ( r*   c                  *   t          j        d          } |                     d d d g                                          }|j                            d |j        j        D                       |_        |j                            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                     | j         S r   )yearro   s    r(   rq   zAmultiindex_year_month_day_dataframe_random_data.<locals>.<lambda>  s     r*   c                     | j         S r   )r[   ro   s    r(   rq   zAmultiindex_year_month_day_dataframe_random_data.<locals>.<lambda>  s    17 r*   c                     | j         S r   )dayro   s    r(   rq   zAmultiindex_year_month_day_dataframe_random_data.<locals>.<lambda>  s    ae r*   c                 8    g | ]}|                     d           S )i8)astype).0levs     r(   
<listcomp>zCmultiindex_year_month_day_dataframe_random_data.<locals>.<listcomp>  s$    %S%S%S3cjj&6&6%S%S%Sr*   )r   r[   r   T)inplace)tmmakeTimeDataFramegroupbysumri   
set_levelslevels	set_names)tdfymds     r(   /multiindex_year_month_day_dataframe_random_datar     s     
s
#
#C
++''):):OOL
M
M
Q
Q
S
SC	$$%S%S#)BR%S%S%STTCII000$???Jr*   c                  B    t          g dg dgg dg dgddg          S )z;
    2-level MultiIndex, lexsorted, with string names.
    foobarbazquxonetwothree)
r   r   r   rW   rW      r      r  r  )
r   rW   r   r   rW   rW   r   r   rW   r   r   second)r   codesnames)r   rg   r*   r(   %lexsorted_two_level_string_multiindexr    sM    
 ,,,.E.E.EF---/M/M/MN!   r*   c                     | }t          t          j                            dd          |t	          g dd                    S )z2DataFrame with 2 level MultiIndex with random data
   r  )ABCexpr/   )ri   rj   )r   r_   randomrandnr   )r  ri   s     r(    multiindex_dataframe_random_datar  )  sI    
 2E
	AeU???QV5W5W5W   r*   c                      t          g d          } t          ddg          }t          j        g d          }t          j        g d          }ddg}t          | |g||g|d	          S )
zJ
    MultiIndex used to test the general functionality of this object
    r   r   r   )r   r   rW   r   r  r  )r   rW   r   rW   r   rW   r   r  F)r   r  r  verify_integrity)r   r_   r   r   )
major_axis
minor_axismajor_codesminor_codesindex_namess        r(   _create_multiindexr  4  s     33344Ju~&&J(---..K(---..KH%KJ'K(	   r*   c            	      j    t          j        ddgddgt          j        ddd          gg d	
          S )zB
    MultiIndex with a level that is a tzaware DatetimeIndex.
    rW   r   ab20130101r  
US/Eastern)periodstzr   )r  )r   from_productr`   
date_rangerg   r*   r(   _create_mi_with_dt64tz_levelr!  H  sJ    
 "
Q#sR]:q\RRRS%%%   r*   stringr   r   zdatetime-tzz
US/Pacific)r  periodr   intuintrangefloat	complex64
complex128	num_int64int64dtype	num_int32int32	num_int16int16num_int8int8
num_uint64uint64
num_uint32uint32
num_uint16uint16	num_uint8uint8num_float64float64num_float32float32zbool-objectr  
bool-dtypecategoricalintervalemptytuples)r   r   r   )rW   r   r  mi-with-dt64tz-levelmultirepeats)r   r   rW   rW   r   r   nullable_intInt64nullable_uintUInt16nullable_floatFloat32nullable_boolbooleanzstring-pythonzstring[python]zstring[pyarrow]zstring-pyarrowc                 J    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_dictrv   copyrw   s    r(   ri   ri   }  s     &++---r*   c                 R    g | ]$}t          t          |         t                    "|%S rg   )
isinstancerQ  r   r   r   s     r(   r   r     s<       :l36G+T+T  r*   c                 N    | j         }t          |                                         S )z8
    index fixture, but excluding MultiIndex cases.
    )rv   rQ  rR  )rx   r   s     r(   
index_flatrW    s"     -C!!###r*   c                     g | ]=}|d v |                     d          t          t          |         t                    ;|>S ))r$  r%  r&  rC  rG  r@  num_)
startswithrT  rQ  r   rU  s     r(   r   r     s`       MMM~~f%% N <,j99 N 	 NMMr*   c                 Z   t           | j                                     d          }|j        }| j        dv rT|                                }d|d         dd         z   |d<   d|d         dd         z   |d<   t          j        |          S d|d<   d|d<    t          |          |          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)rD  rE  rF  r   r   rW   N)rQ  rv   rR  valuestolistr   from_tuplesr   )rx   indvalss      r(   index_with_missingrd    s    . w}
%
*
*
*
5
5C:D}CCCzz||DGABBK'QT"Xabb\)R%d+++QRtCyyr*   c                  :    t          j                    } d| _        | S )zC
    Fixture for Series of floats with Index of unique strings
    r   )r   makeStringSeriesr/   ss    r(   string_seriesri    s    
 	AAFHr*   c                  :    t          j                    } d| _        | S )zI
    Fixture for Series of dtype object with Index of unique strings
    objects)r   makeObjectSeriesr/   rg  s    r(   object_seriesrm    s    
 	AAFHr*   c                  :    t          j                    } d| _        | S )z9
    Fixture for Series of floats with DatetimeIndex
    ts)r   makeTimeSeriesr/   rg  s    r(   datetime_seriesrq    s    
 	AAFHr*   c                     t          |           }t          j                            |          }t	          || d          S )zHelper for the _series dictr  )ri   r/   )lenr_   r  r  r   )ri   sizedatas      r(   _create_seriesrv    s5    u::D9??4  D$e#....r*   c                 <    i | ]\  }}d | dt          |          S )zseries-with-z-indexrv  )r   index_idri   s      r(   
<dictcomp>rz    sA       % $8###^E%:%:  r*   c                      t          |           S )zE
    Fixture for tests on series with changing types of indices.
    rx  ri   s    r(   series_with_simple_indexr}    s    
 %   r*   c                      g dg dg} t          |  }t          j        |          }t          j                            d          }t          ||          }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   r   r   r   r   r      r|  r  )r   r   ra  r_   r  r  r   NaN)arraysrD  ri   ru  sers        r(   series_with_multilevel_indexr    sn     	A@@@@@F &\F"6**E9??1D
U
#
#
#CVCFJr*   c                 L    i | ]!}|j          d t          j        d|          "S )z-seriesr  )r/   r-  )r   r   make_rand_series)r   r-  s     r(   rz  rz    sE        ~ 3E J J J  r*   c                 N    t           | j                                     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_objsrv   rR  rw   s    r(   index_or_series_objr    s"     !/44$4???r*   c                  h    t          t          j                                                  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   rg   r*   r(   	int_framer  "  s)    4 R%''((//888r*   c                  B    t          t          j                              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   getTimeSeriesDatarg   r*   r(   datetime_framer  ?  s    4 R)++,,,r*   c                  B    t          t          j                              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  rg   r*   r(   float_framer  \  s    4 R%''(((r*   c            
          t          dddt          j        dgdz  d          t          j        dgdz  d          d	t          j        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,  rW   r/  )r  r  cr?  r/  r|  )r   r_   r   arangerg   r*   r(   mixed_type_framer  y  sk     x
)<<<XqcBhg666	
 	
 imm	 	 	 	r*   c                     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          |                     |           S )zF
    Fixture for Series with a DatetimeIndex that has duplicates.
    i  rW   r   r     rV   r|  )r   r   r_   r  r  rs  )datess    r(   (rand_series_with_duplicate_datetimeindexr    s     	q!q!q!q!q!q!q!q!q!q!E ")//#e**--U;;;;r*   )r   r   r   g?g      ?z2012-01M)freqz	period[M]z
2012-02-01Dz	period[D]z
2011-01-01r  i  )secondsztimedelta64[ns]c                     | j         S r   ru   rw   s    r(   ea_scalar_and_dtyper         =r*   )__add____radd____sub____rsub____mul____rmul____floordiv____rfloordiv____truediv____rtruediv____pow____rpow____mod____rmod__c                     | j         S )zD
    Fixture for dunder names for common arithmetic operations.
    ru   rw   s    r(   all_arithmetic_operatorsr    rz   r*   c                     | j         S )zU
    Fixture for operator and roperator arithmetic, comparison, and logical ops.
    ru   rw   s    r(   all_binary_operatorsr        D =r*   c                     | j         S )z
    Fixture for operator and roperator arithmetic functions.

    Notes
    -----
    This includes divmod and rdivmod, whereas all_arithmetic_operators
    does not.
    ru   rw   s    r(   all_arithmetic_functionsr    s    6 =r*   )
r   maxminmeanprodstdvarmediankurtskewc                     | j         S )z.
    Fixture for numeric reduction names.
    ru   rw   s    r(   all_numeric_reductionsr  "  rz   r*   allanyc                     | j         S )z.
    Fixture for boolean reduction names.
    ru   rw   s    r(   all_boolean_reductionsr  -  rz   r*   c                     | j         S )z>
    Fixture for all (boolean + numeric) reduction names.
    ru   rw   s    r(   all_reductionsr  8  rz   r*   c                     | j         S )z;
    Fixture for operator module comparison functions.
    ru   rw   s    r(   comparison_opr  @  r  r*   )__le____lt____ge____gt__c                     | j         S )zm
    Fixture for dunder names for compare operations except == and !=

    * >=
    * >
    * <
    * <=
    ru   rw   s    r(   compare_operators_no_eq_ner  Q  r   r*   )__and____rand____or____ror____xor____rxor__c                     | j         S )zY
    Fixture for dunder names for common logical operations

    * |
    * &
    * ^
    ru   rw   s    r(   all_logical_operatorsr  ^       =r*   c                 ,    |                      d          S )zO
    Returns the configuration for the test setting `--strict-data-files`.
    r%   )r<   )pytestconfigs    r(   strict_data_filesr  o  s    
 !!"7888r*   r  .c                      t           j                            t           j                            t                    d           f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                      t          j        j        g| R  }t           j                            |          s-rt	          d| d          t          j        d| d           |S )NzCould not find file z  and --strict-data-files is set.zCould not find .)osr,   joinexists
ValueErrorr2   rB   )r   r,   	BASE_PATHr  s     r(   decozdatapath.<locals>.deco  s}    w|I----w~~d## 	7  7 Q4QQQ   5d555666r*   )r  r,   r  dirname__file__)r  r  r  s   ` @r(   datapathr  w  sN    & RW__X66@@I	 	 	 	 	 	 Kr*   c                 B    t          j         | dddd                    S )z*
    The iris dataset as a DataFrame.
    ioru  csvziris.csv)r`   read_csv)r  s    r(   irisr    s$    
 ;xxfeZ@@AAAr*   z
Asia/Tokyozdateutil/US/Pacificzdateutil/Asia/Singaporez+01:15z-02:15z	UTC+01:15z	UTC-02:15i,  i)hoursr^  r   r  c                 ,    g | ]}t          |          S rg   rm   )r   is     r(   r   r     s    +++AQ+++r*   c                     | j         S )zD
    Fixture for trying timezones including default (None): {0}
    ru   rw   s    r(   tz_naive_fixturer    r   r*   c                     | j         S )z4
    Fixture for trying explicit timezones: {0}
    ru   rw   s    r(   tz_aware_fixturer    r   r*   r   zdateutil/UTCc                     | j         S )zQ
    Fixture to provide variants of UTC timezone strings and tzinfo objects.
    ru   rw   s    r(   utc_fixturer    rz   r*   c                     | j         S )zR
    Parametrized fixture for string dtypes.

    * str
    * 'str'
    * 'U'
    ru   rw   s    r(   string_dtyper         =r*   pyarrowz1.0.0)min_versionc                     | j         S )za
    Parametrized fixture for string dtypes.

    * 'string[python]'
    * 'string[pyarrow]'
    ru   rw   s    r(   nullable_string_dtyper    r   r*   pythonc                     | j         S )zb
    Parametrized fixture for pd.options.mode.string_storage.

    * 'python'
    * 'pyarrow'
    ru   rw   s    r(   string_storager    s     =r*   c                     | j         S )zK
    Parametrized fixture for bytes dtypes.

    * bytes
    * 'bytes'
    ru   rw   s    r(   bytes_dtyper         =r*   c                     | j         S )zN
    Parametrized fixture for object dtypes.

    * object
    * 'object'
    ru   rw   s    r(   object_dtyper  $  r  r*   objectc                     | j         S )zo
    Parametrized fixture for string dtypes.
    * 'object'
    * 'string[python]'
    * 'string[pyarrow]'
    ru   rw   s    r(   any_string_dtyper  /        =r*   c                     | j         S )z\
    Parametrized fixture for datetime64 dtypes.

    * 'datetime64[ns]'
    * 'M8[ns]'
    ru   rw   s    r(   datetime64_dtyper
  B  r  r*   c                     | j         S )z^
    Parametrized fixture for timedelta64 dtypes.

    * 'timedelta64[ns]'
    * 'm8[ns]'
    ru   rw   s    r(   timedelta64_dtyper  M  r  r*   c            	      .    t          ddddddd          S )z-
    Fixture emits fixed Timestamp.now()
    i  rW   rX   r        )r   r[   r   hourminuter  microsecond)r   rg   r*   r(   fixed_now_tsr  X  s*    
 1RR   r*   c                     | j         S )z^
    Parameterized fixture for float dtypes.

    * float
    * 'float32'
    * 'float64'
    ru   rw   s    r(   float_numpy_dtyper  b  r  r*   c                     | j         S )zR
    Parameterized fixture for float dtypes.

    * 'Float32'
    * 'Float64'
    ru   rw   s    r(   float_ea_dtyper  n  r  r*   c                     | j         S )z~
    Parameterized fixture for float dtypes.

    * float
    * 'float32'
    * 'float64'
    * 'Float32'
    * 'Float64'
    ru   rw   s    r(   any_float_dtyper  y  r  r*   c                     | j         S )zg
    Parameterized fixture for complex dtypes.

    * complex
    * 'complex64'
    * 'complex128'
    ru   rw   s    r(   complex_dtyper    r  r*   c                     | j         S )z|
    Parameterized fixture for signed integer dtypes.

    * int
    * 'int8'
    * 'int16'
    * 'int32'
    * 'int64'
    ru   rw   s    r(   any_signed_int_numpy_dtyper    r  r*   c                     | j         S )zx
    Parameterized fixture for unsigned integer dtypes.

    * 'uint8'
    * 'uint16'
    * 'uint32'
    * 'uint64'
    ru   rw   s    r(   any_unsigned_int_numpy_dtyper    r   r*   c                     | j         S )z
    Parameterized fixture for any integer dtype.

    * int
    * 'int8'
    * 'uint8'
    * 'int16'
    * 'uint16'
    * 'int32'
    * 'uint32'
    * 'int64'
    * 'uint64'
    ru   rw   s    r(   any_int_numpy_dtyper!    r   r*   c                     | j         S )z
    Parameterized fixture for any nullable integer dtype.

    * 'UInt8'
    * 'Int8'
    * 'UInt16'
    * 'Int16'
    * 'UInt32'
    * 'Int32'
    * 'UInt64'
    * 'Int64'
    ru   rw   s    r(   any_int_ea_dtyper#    r  r*   c                     | 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'
    ru   rw   s    r(   any_int_dtyper%    s    . =r*   c                     | 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'
    ru   rw   s    r(   any_numeric_ea_dtyper'    s    " =r*   c                     | j         S )z~
    Parameterized fixture for any signed nullable integer dtype.

    * 'Int8'
    * 'Int16'
    * 'Int32'
    * 'Int64'
    ru   rw   s    r(   any_signed_int_ea_dtyper)    r   r*   c                     | j         S )z
    Parameterized fixture for any (purely) real numeric dtype.

    * int
    * 'int8'
    * 'uint8'
    * 'int16'
    * 'uint16'
    * 'int32'
    * 'uint32'
    * 'int64'
    * 'uint64'
    * float
    * 'float32'
    * 'float64'
    ru   rw   s    r(   any_real_numpy_dtyper+    s    $ =r*   c                     | 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'
    ru   rw   s    r(   any_numpy_dtyper-  !  r  r*   c                     | 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'
    ru   rw   s    r(   any_numeric_dtyper/  F  s    H =r*   r  r  mixedbytes   a   czmixed-integerr   g       @floatingr  integerzmixed-integer-floatdecimal
datetime64z
2013-01-01z
2018-01-01r  20180101r   i  i  r   c                 T    | j         \  }}t          j        |t                    }||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,  )rv   r_   r   r  )rx   inferred_dtyper_  s      r(   any_skipna_inferred_dtyper;    s2    R %]NFXfF+++F 6!!r*   c                      t          j        dd           ddlm}  ddlm}  |            }d|j        _         | |          S )	zj
    Get an instance of IPython.InteractiveShell.

    Will raise a skip if IPython is not installed.
    IPythonz6.0.0)
minversionr   )InteractiveShell)Configz:memory:)rD   )r2   importorskipIPython.core.interactiveshellr?  traitlets.configr@  HistoryManager	hist_file)r?  r@  r  s      r(   iprF    sj     	g6666>>>>>> ('''''A!+A1%%%%r*   )bsrcoocsccsrdiadoklilc                 >    ddl m} t          || j        dz             S )z-
    Yields scipy sparse matrix classes.
    r   )sparse_matrix)scipyrO  getattrrv   )rx   rO  s     r(   spmatrixrS    s-    
 67=94555r*   c                     g | ]Y}t          t          t          j        |          t          j        j                  r |d k    ?t          t          j        |          ZS )Tick)
issubclassrR  r`   offsetsrU  )r   os     r(   r   r     s[       gbj!,,bjo>> DE;; 	
ACN;;r*   c                     | j         S )zN
    Fixture for Tick based datetime offsets available for a time series.
    ru   rw   s    r(   tick_classesrZ    r  r*   c                     | S r   rg   ro   s    r(   rq   rq     s     r*   c                     | j         S )zk
    Simple fixture for testing keys in sorting methods.
    Tests None (no key) and the identity key.
    ru   rw   s    r(   sort_by_keyr]    r   r*   c               #     K   t          j        d           ddlm}  ddlm} ddlm}  G d d|          } | d|d	
            |            V  |                    dd            d |j	        d<   |j
                                         d S )Nfsspecr   )register_implementation)MemoryFileSystem)	_registryc                   *     e Zd ZdZdgZd fdZ xZS ) fsspectest.<locals>.TestMemoryFStestmemNr   c                 v    |                     dd           | j        d<    t                      j        di | d S )Ntestr   rg   )poprg  superr   )r   r   	__class__s     r(   r   z)fsspectest.<locals>.TestMemoryFS.__init__  s?    !::fd33DIaLEGG&&v&&&&&r*   r   )r   r   r   protocolrg  r   __classcell__)rj  s   @r(   TestMemoryFSrd    sI        v	' 	' 	' 	' 	' 	' 	' 	' 	' 	'r*   rm  re  T)clobber)r2   rA  r_  r`  fsspec.implementations.memoryra  fsspec.registryrb  rh  rg  storeclear)r`  ra  registryrm  s       r(   
fsspectestrt    s      
!!!......>>>>>>555555' ' ' ' '' ' ' ' I|TBBBB
,..LLD!!!Lar*   )r   NN)EgonVenkmanN)NCC1701Drw  rw  c                     | j         S )zP
    A 3-tuple of names, the first two for operands, the last for a result.
    ru   rw   s    r(   r  r  	  r  r*   c                     | j         S )zI
    Parametrize over __setitem__, loc.__setitem__, iloc.__setitem__
    ru   rw   s    r(   indexer_slirz    rz   r*   c                     | j         S )z<
    Parametrize over loc.__getitem__, iloc.__getitem__
    ru   rw   s    r(   
indexer_lir|  $  rz   r*   c                     | j         S )z8
    Parametrize over __setitem__, iloc.__setitem__
    ru   rw   s    r(   
indexer_sir~  ,  rz   r*   c                     | j         S )z7
    Parametrize over __setitem__, loc.__setitem__
    ru   rw   s    r(   
indexer_slr  4  rz   r*   c                     | j         S )z:
    Parametrize over at.__setitem__, loc.__setitem__
    ru   rw   s    r(   
indexer_alr  <  rz   r*   c                     | j         S )z<
    Parametrize over iat.__setitem__, iloc.__setitem__
    ru   rw   s    r(   indexer_ialr  D  rz   r*   c                  6    t           j        j        j        dk    S )z>
    Fixture to check if the array manager is being used.
    r   )r`   optionsmodedata_managerrg   r*   r(   using_array_managerr  L  s    
 :?'722r*   c                  b    t           j        j        j        ot           j        j        j        dk    S )z7
    Fixture to check if Copy-on-Write is enabled.
    block)r`   r  r  copy_on_writer  rg   r*   r(   using_copy_on_writer  T  s"    
 :?(TRZ_-IW-TTr*   r   (   __doc__collectionsr   r   r   r   r   r   r6  r	   operatorr  typingr
   dateutil.tzr   r   
hypothesisr   stnumpyr_   r2   pytzr   r   pandas.util._test_decoratorsutil_test_decoratorstdpandas.core.dtypes.dtypesr   r   pandasr`   r   r   r   r   r   r   pandas._testing_testingr   pandas.corer   pandas.core.indexes.apir   r   r  pahas_pyarrowImportErrorzoneinfocompatPY39ZoneInfoZoneInfoNotFoundErrorr3   r4   r@   r)   Itemstrr5   rN   settingsregister_profileHealthChecktoo_slowload_profilesplitr/   rR  tseriesrW  clsregister_type_strategybuildsintegersbooleansfixturer;   rh   ry   
axis_framer}   r   r   r   r   r   r   rv   
skip_if_nor   r   r   r   r   NULL_OBJECTSr   nulls_fixture2nanNaTr   unique_nulls_fixture2NP_NAT_OBJECTSr   np_nat_fixture2r   r   index_or_series2r   r   r   box_with_array2r   r   r   r  r  r  r!  makeStringIndexmakeDateIndexmakePeriodIndexmakeTimedeltaIndexmakeIntIndexmakeUIntIndexmakeRangeIndexmakeFloatIndexr   makeNumericIndexmakeBoolIndexr  r  r  makeCategoricalIndexmakeIntervalIndexra  r   r  boolrQ  idxkeysri   index_fixture2rW  index_flat2rd  ri  rm  rq  rv  rC   _seriesr}  r  NARROW_NP_DTYPES_narrow_seriesr  r  r  r  r  r  r  r  _all_arithmetic_operatorsr  addraddsubrsubmulrmultruedivrtruedivfloordiv	rfloordivmodrmodpowrpoweqneltlegtgeand_rand_xorrxoror_ror_r  r  _all_numeric_reductionsr  _all_boolean_reductionsr  _all_reductionsr  r  r  r  r  r  r  	TIMEZONESextendTIMEZONE_IDSparametrize_fixture_docr  r  tz_aware_fixture2_UTCSappendr  utc_fixture2STRING_DTYPESr  r  r  string_storage2BYTES_DTYPESr  OBJECT_DTYPESr  r  DATETIME64_DTYPESr
  TIMEDELTA64_DTYPESr  r  FLOAT_NUMPY_DTYPESr  FLOAT_EA_DTYPESr  r  COMPLEX_DTYPESr  SIGNED_INT_NUMPY_DTYPESr  UNSIGNED_INT_NUMPY_DTYPESr  ALL_INT_NUMPY_DTYPESr!  ALL_INT_EA_DTYPESr#  r%  r'  SIGNED_INT_EA_DTYPESr)  ALL_REAL_NUMPY_DTYPESr+  ALL_NUMPY_DTYPESr-  r/  NAr7  _any_skipna_inferred_dtypers   _r;  rF  rS  __all__rZ  r]  rt  r  setitemlocilocrz  r|  r~  r  atr  iatr  r  r  rg   r*   r(   <module>r     s#   (                           				                  ' ' ' ' ' '            
 * ) ) ) ) ) ) ) )       
                                      
 	KK	    KKK 9> 
OOO
%    )    $*;#=#=9$ $     I IC I# I$ I I I I$8M 8M 8Mx   $ $ %1:< %          & & & 8==??  D
'"*$d
+
+CBYRYskbk#r22kbkmmLLL    499;; 
 
D
'"*$d
+
+CB	bk"a  !bkmm"+R888		
 	
 	
    @EEGG 
 
D
'"*$d
+
+CB	bk#r""!bkmm%"+R@@@		
 	
 	
    ! ! ! ! 1 1 1 1 1117R7RSSS  TS 
 9~+F+FGGG  HG ***+++	 	 ,+	 ***+++  ,+ ///000  10 ;;;<<<  =< ;;;<<<  =< ;;;<<<  =< V=2=#=#=>>>
 
 
 
 
 V=2=#=#=>>>	 	 	 	 	 e}%%%  &% :::;;;  <; 
K0111  21 r,F,FGGG  HG  bfbf-...  /. -  r(.H.HIII  JI ! 	6*+++  ,+ 6?( 3  	 	 	 #  vrx06R6R6RSSS  TS vy"(;AUAUVVV  WV ! 	 	 	   0 
 
 
 z          (  $ b %%$  %%$ #2#CL999$  b %%	$
 &&s++$ 
?2?3$ BS!!$ Rs##$ Rs##$ ""3''..{;;$ #"#C((//==$ $$S888$ $$S888$ $$S888$ ##Cv666$  %"%c:::!$" %"%c:::#$ $$ %"%c:::%$& $$S888'$( &2&s)<<<)$* &2&s)<<<+$, #2#B''..v66-$. %%	++a/00/$0 *2*3//1$2 $$S))3$4 UU2YY5$6 $j$SS)>)>)>			%J%JKK7$8 88::9$: !!;$< uu'''((=$> EE)")C..888?$@ UU929S>>:::A$B eeIBIcNN)<<<C$D UU929S>>0066iHHHE$ $F UU828$6B$6s$;$;CSTTTUUG$ $J  )
%++C008IJJJ
K
KC%(L!" |((**+++. . ,+.   #    
$ $ 
$     
 
 
 
 
: v     v         / / / '--//   !v ! ! ! ! f      $   F<E7EnE  ,1133444@ @ 54@ 99 9 9 9 98 -	 - - - -8 )Y ) ) ) )8 )    " <& < < < <. 	q	"	"	"MM'7$C$CD	s#	&	&	&i(I(IJ			$	$	$k2	3	'	'	'5Il|444O|,,,	
 
3			!23
       $ 0111  21 	5  < = <   $	 	% $	    .///  0/ !%.  .///  0/ *,CC '''  (' 	 	 	 	 	 ???@@@	 	 A@	 NNN     9 9 9  c(:    D Bi B B B B 			EGGGIIKKNNKLHYYQ  HYYR   u---%	( 'h'557Hx7H7O7OPQQQ+++++ CC--..yl333  43 /. CCQRR 01122y},qrr*:;;;  <; 32 %  
UUWWhl;	LL""5))*** u    r'(((  )( ]R]9'%R%R%R	
 	
 	
     YmbmI7&S&S&STTT     ! r'''  (' r'(((  )( ]R]9'%R%R%R	
 	
 	
     r+,,,  -, r,---  .- i     r,---  .- r)***  +* r,r/AABBB
 
 CB
 r()))  *) r1222
 
 32
 r3444	 	 54	 r.///  0/" r+,,,  -,  r.1EEFFF  GF2 r+b.@@AAA  BA& r.///	 	 0/	 r/000  10( r*+++! ! ,+!H # 	    F RVS!"RUC !sBFC !tRVT"#rvrvrv&'bMsBFA&'sBFC !#rvs#$BFAQ,-RVWWQZZ01rvu%&rue$%MBM,//|9T9TUV))J'':1F1FGHdd4AT1a(8(89:
 99Q<<167dd1ggrvttAww'(tbfffTll34((1a.."&((1a..9:3 6 
(	)Q 1s;;;," ," <;,"d & & &$ HHHIII6 6 JI6  #       kk*+++  ,+   * !,	 			ru	     
BFBG4555  65 ()))  *) 
BG,---  .- 
BF+,,,  -, rv'''  (' ()))  *) 3 3 3 UT U U U U U Us$   B BB/C   CC