
    Owg                    8   d Z ddlm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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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-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z6 ddl7m8Z8 ddl9m:Z:m;Z; ddl<m=Z= erddl>m?Z?m@Z@ 	 ddlAZB[BdZCddlEZE	  eEj                  d       d8dZHd9dZId8dZJej                  j                  gZM e=ej                         e=d      k\  r%eMj                  ej                  j                         ej                  j                  dd eSeM             ej                  j                  d       dj                         D ]e  ZV eWe'j                  j                  eV      ZZ ej                  eZ ej                  eZ ej                  dd       ej                                      g dj                         D ]x  ZV eWe'j                  j                  eV      ZZ ej                  eZ ej                  eZ ej                  d d!       ej                          ej                  d"d#$      %             z d&j                         D ]x  ZV eWe'j                  j                  eV      ZZ ej                  eZ ej                  eZ ej                  d'd(       ej                          ej                  d"d#$      )             z  ej                  d*      d8d+       Z` ej                  d*      d8d,       Za ej                  g d-d. /      d0        ZbebZc ej                  d"d1gd2 /      d3        Zd ej                  g d45      d6        Ze ej                  g d45      d7        Zf ej                  ddg5      d8        Zg ej                  g d95      d:        Zh ej                  g d;5      d<        Zi ej                  g d=5      d>        Zj ej                  g d=5      d?        Zk ej                  dd@dAdBdCdD ej                  dE e"j                  dF      G      g5      dH        Zn ej                  d@dAdBdCdD ej                  dE e"j                  dF      G      g5      dI        Zo ej                  ddg5      dJ        Zp ej                  g dK5      dL        Zq ej                  dMdNg5      dO        Zr ej                  e6j                  dP /      dQ        ZtetZu ej                  dej                  e'j                  g5      dR        ZxexZy ej                  e6j                  dS /      dT        Z{e{Z| ej                  e)e.g5      dU        Z} ej                  e:e.gdVdWg/      dX        Z~e~Z ej                  e:e.e'j                   gg dY/      dZ        Z ej                  e:e.e)e'j                   gd[ /      d\        ZeZej                  d:d]       Zej                  d;d^       Zej                  d_        Zej                  d<d`       Zej                  	 	 d=da       Zdb Zdc Zi dd e: ede      D  cg c]  } df|  	 c}       dg e1dhdei      dj e1dhdedkl      dm e2dhdedno      dp e3dqdednr      ds e-de      dt e: ej                  de      dtu      dv e: ej                  de      dvu      dw e: ej                  de      dwu      dx e: ej                  de      dxu      dy e: ej                  de      dyu      dz e: ej                  de      dzu      d{ e: ej                  de      d{u      d| e: ej                  de      d|u      d} e: ej                  de      d}u      d~ e: ej                  de      d~u      d e:ddgd!z  eu       e:ddgd!z  eu       e: ej                  dedu      d ej                  dedu      z  z          e: ej                  dedu      d ej                  dedu      z  z          e( ed      dz         e+j                    ej"                  dded             e:g        e;j$                   eg dg d             e        e        e:g d       e: ej                  de      du       e: ej                  de      du       e: ej                  de      du       e: ej                  de      j)                  e      du       e: e'j                    ede      D  cg c]  } df|  	 c} du            dZeCr7 e: e'j                    ede      D  cg c]  } df|  	 c} du            Zeed<    ej                  ej/                         5      d        ZeZ ej                  ej5                         D cg c]  \  }} e|e;      r| c}}5      d        ZeZ ej                  ej5                         D cg c]&  \  }}|j=                  d      s|dv s e|e;      s|( c}}5      d        Zej                  d>d       Zej                  d>d       Zej                  d>d       Zd Zej5                         D ci c]  \  }}d| d e|       c}}Zej                  d>d       Ze6jL                  D  ci c]:  }|jN                   d e. ed       ed      D  cg c]  } d|  	 c} d|      < c} }Zi eeeZ ej                  ej/                         5      d        Ze6jV                  D ci c]  }|jN                   d e.|       c}Zi eeeeZ ej                  ej/                         5      d        Zej                  d=d       Zej                  d=d       Zej                  d>d       Z ej                   e*dd!       e%dxd      f e*dd       e%d~d      f e,dd      df e,ddn      df e0dd       e$dd      f e/d      dfg5      d        Z ej                  e6jf                  5      d        Z ej                  ejj                  e8jl                  ejn                  e8jp                  ejr                  e8jt                  ejv                  e8jx                  ejz                  e8j|                  ej~                  e8j                  ej                  e8j                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  e8j                  ej                  e8j                  ej                  e8j                  g5      d        Z ej                  ejj                  e8jl                  ejn                  e8jp                  ejr                  e8jt                  ejv                  e8jx                  ejz                  e8j|                  ej~                  e8j                  ej                  e8j                  g5      d        Zg dZ ej                  eѬ5      d        ZddgZ ej                  eӬ5      d        Zeez   Z ej                  eլ5      dÄ        Z ej                  ej                  ej                  ej                  ej                  ej                  ej                  g5      dĄ        Z ej                  g dŢ5      dƄ        Z ej                  g dǢ5      dȄ        Zg dɢZ ej                  eڬ5      dʄ        Zej                  d˄        Zej                  d?d̄       Zdddddddddd e        e        edԫ       ed       edի      e	j8                   e	 ed"֫             e	 ed׬֫      dج٫      gZeE4eސj                   eEj                  dk       eEj                  d      g       eD  cg c]
  }  e|        c} Z e"j                   ee             ej                  ee/      dڄ               Z e"j                   eed"d              ej                  ed"d ed"d /      dۄ               ZeZdde e       e	j8                  gZeE!ej                   eEj                  d              ej                  e5      dބ        ZeZ ej                  g dߢ5      d        ZeZ ej                  e6j                  5      d        Z ej                  d ej                  d e"j                  d      G      g5      d        Z ej                  d ej                  d e"j                  d      G       ej                  d e"j                  d      G      g5      d        Z ej                  d ej                  d e"j                  d      G      g5      d        ZeZ ej                  e6j                  5      d        Z ej                  e6j                  5      d        Z ej                  dd ej                  d e"j                  d      G       ej                  d e"j                  d      G      g5      d        Z ej                  e6j                  5      d        Z ej                  e6j                  5      d        Zej                  d@d       Z ej                  e6j                  5      d        Z ej                  e6j                  5      d        Z ej                  e6j                   5      d        Z ej                  e6j                  5      d        Z ej                  e6j                  5      d        Z ej                  e6j                  5      d        Z ej                  e6j                  5      d        Z	 ej                  e6j                  5      d        Z ej                  e6j                  5      d        Z ej                  e6j                  5      d        Z ej                  e6j                  e6j                  z   5      d        Z ej                  e6j                  e6j                  z   e6j"                  z   e6j$                  z   5      d        Z ej                  e6j(                  5      d        Z ej                  e6j,                  5      d        Z ej                  e6j0                  5      d        Z ej                  e6j4                  5      d         Z ej                  e6j8                  5      d        Z ej                  e6j<                  5      d        Zdddej                  dgfddde'j@                  dgfdde'j                  dgfddej                  dgfdej                  ej                  ej                  gfdg fd	dej                  d
gfddej                  dgfddej                  dgfdd"ej                  d
gfdd"ej                  dgfd ed"      ej                   ed
      gfddej                  dgfdde'j@                  dgfd ejB                  d      ej                   ejB                  d      gfdg e0d      ej                   e0d      gfd edd"d"      ej                   edd"d"      gfddej                  dgfdp ed"      ej                   ed
      gfd ed"      ej                   ed
      gfdm e,d      e'j                   e,d      gfd e*dd"      ej                   e*dd
      gfgZ" ee" \  Z#Z$ ej                  e"e#/      d        Z%ej                  d        Z& ej                  g d 5      d!        Z' ej                  e'j                  jP                  D cg c]K  } e) eWe'j                  |      e'j                  jT                        r|d"k7  r eWe'j                  |      M c}5      d#        Z+ ej                  dd$ g5      d%        Z, ej                  d&d'd(ej                  ej                  ej                  fej                  e'j                  dfej                  e'j@                  dfe'j@                  e'j@                  e'j@                  fg5      dAd)       Z- ej                  e6j\                  e6j^                  e6j`                  g5      d*        Z1 ej                  e6j^                  e6j`                  g5      d+        Z2 ej                  e6j\                  e6j`                  g5      d,        Z3 ej                  e6j\                  e6j^                  g5      d-        Z4 ej                  e6jj                  e6j^                  g5      d.        Z6 ej                  e6jn                  e6j`                  g5      d/        Z8ej                  dBd0       Z9ej                  dBd1       Z:ej                  dBd2       Z;ej                  dBd3       Z<d4d5gZ=eE#e=j                   eEj                  d4              ej                  e=5      dCd6       Z> ej                         d7        Z?y# eD$ r dZCY hw xY w# eEj                  $ r dZEY iw xY wc c} w c c} w c c} w c c}}w c c}}w c c}}w c c} w c c} }w c c}w c c} w c c}w (D  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
    )annotations)abc)datedatetimetime	timedeltatimezone)DecimalN)TYPE_CHECKINGCallable)tzlocaltzutc)
strategies)FixedOffsetutc_get_option)DatetimeTZDtypeIntervalDtype)CategoricalIndex	DataFrameIntervalIntervalIndexPeriod
RangeIndexSeries	Timedelta	Timestamp
date_rangeperiod_rangetimedelta_range)ops)Index
MultiIndex)Version)HashableIteratorTFUTCc                ,    | j                  ddd       y )N--no-strict-data-filesstore_falsez6Don't fail if a test is skipped for missing data file.)actionhelp)	addoption)parsers    F/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/conftest.pypytest_addoptionr1   o   s    
 E      c                    | j                   j                  |      r2| j                  t        j                  j                  d|              yy)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)itempathmessages      r0   ignore_doctest_warningr=   w   s=     yy$22WWI3FGH  r2   c                    |j                  d      xs |j                  dd      }g d}|r| D ]  }|D ]  \  }}t        |||         y y )Nz--doctest-modulesz--doctest-cythonF)default))is_int64_dtypezis_int64_dtype is deprecated)is_interval_dtypezis_interval_dtype is deprecated)is_period_dtypezis_period_dtype is deprecated)is_datetime64tz_dtypez#is_datetime64tz_dtype is deprecated)is_categorical_dtypez"is_categorical_dtype is deprecated)	is_sparsezis_sparse is deprecated)DataFrameGroupBy.fillnaz%DataFrameGroupBy.fillna is deprecated)NDFrame.replacezThe 'method' keyword)rG   zSeries.replace without 'value')zNDFrame.clipz4Downcasting behavior in Series and DataFrame methods)zSeries.idxminThe behavior of Series.idxmin)zSeries.idxmaxThe behavior of Series.idxmax)zSeriesGroupBy.fillnaz"SeriesGroupBy.fillna is deprecated)zSeriesGroupBy.idxminrH   )zSeriesGroupBy.idxmaxrI   )zmissing.mask_zero_div_zerozdivide by zero encountered)to_pydatetimez>The behavior of DatetimeProperties.to_pydatetime is deprecated)z pandas.core.generic.NDFrame.boolzY(Series|DataFrame).bool is now deprecated and will be removed in future version of pandas)z!pandas.core.generic.NDFrame.firstzqfirst is deprecated and will be removed in a future version. Please create a mask and filter using `.loc` instead)zResampler.fillnaz+DatetimeIndexResampler.fillna is deprecated)rF   z3DataFrameGroupBy.fillna with 'method' is deprecated)rF   z,DataFrame.fillna with 'method' is deprecated)read_parquetz1Passing a BlockManager to DataFrame is deprecated)	getoptionr=   )itemsconfig
is_doctestignored_doctest_warningsr:   r;   r<   s          r0   pytest_collection_modifyitemsrQ      sq    !!"56 &:J:JE ;K ;J- ^  	<D!9 <g&tT7;<	< r2   z6.83.2ci)deadlinesuppress_health_checkz)MonthBegin MonthEnd BMonthBegin BMonthEndic   )n	normalizez%YearBegin YearEnd BYearBegin BYearEnd         )	min_value	max_value)rV   rW   monthz1QuarterBegin QuarterEnd BQuarterBegin BQuarterEndi   )rV   rW   startingMonth)autousec                (    t         | d<   t        | d<   y)z:
    Make `np` and `pd` names available for doctests.
    nppdN)rc   rd   )doctest_namespaces    r0   add_doctest_importsrf      s    
 !d dr2   c                 0    t        j                  dd       y)z<
    Configure settings for all tests and test modules.
    chained_assignmentraiseN)rd   
set_option r2   r0   configure_testsrl   	  s    
 MM&0r2   )r   rZ   indexcolumnsc                    dt        |        S Nzaxis=reprxs    r0   <lambda>ru     s    5a	AR r2   )paramsidsc                    | j                   S )z@
    Fixture for returning the axis numbers of a DataFrame.
    paramrequests    r0   axisr}         
 ==r2   rn   c                    dt        |        S rp   rq   rs   s    r0   ru   ru     s    uT!WI5F r2   c                    | j                   S )zA
    Fixture for returning aliases of axis 1 of a DataFrame.
    ry   r{   s    r0   axis_1r     r~   r2   )TFN)rv   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).
    ry   r{   s    r0   observedr   '       ==r2   c                    | j                   S )z6
    Boolean 'ordered' parameter for Categorical.
    ry   r{   s    r0   orderedr   4  r~   r2   c                    | j                   S )z%
    Boolean 'skipna' parameter.
    ry   r{   s    r0   skipnar   <  r~   r2   )firstlastFc                    | j                   S )z[
    Valid values for the 'keep' parameter used in
    .duplicated or .drop_duplicates
    ry   r{   s    r0   keepr   D       ==r2   )bothneitherleftrightc                    | j                   S )zA
    Fixture for trying all interval 'inclusive' parameters.
    ry   r{   s    r0   inclusive_endpoints_fixturer   M  r~   r2   )r   r   r   r   c                    | j                   S )z<
    Fixture for trying all interval closed parameters.
    ry   r{   s    r0   closedr   U  r~   r2   c                    | j                   S )zS
    Secondary closed fixture to allow parametrizing over all pairs of closed.
    ry   r{   s    r0   other_closedr   ]  r~   r2   gzipbz2zipxztarzstd	zstandard)marksc                    | j                   S )zK
    Fixture for trying common compression types in compression tests.
    ry   r{   s    r0   compressionr   e       ==r2   c                    | j                   S )zk
    Fixture for trying common compression types in compression tests excluding
    uncompressed case.
    ry   r{   s    r0   compression_onlyr   w  r   r2   c                    | j                   S )z,
    Fixture that an array is writable.
    ry   r{   s    r0   writabler     r~   r2   )innerouterr   r   c                    | j                   S )z:
    Fixture for trying all types of join operations.
    ry   r{   s    r0   	join_typer     r~   r2   nlargest	nsmallestc                    | j                   S )z1
    Fixture for trying all nselect methods.
    ry   r{   s    r0   nselect_methodr     r~   r2   c                ,    t        |       j                  S Ntype__name__rs   s    r0   ru   ru     s    d1g6F6F r2   c                    | j                   S )z/
    Fixture for each null type in pandas.
    ry   r{   s    r0   nulls_fixturer     r~   r2   c                    | j                   S )zL
    Fixture for each null type in pandas, each null type exactly once.
    ry   r{   s    r0   unique_nulls_fixturer     r~   r2   c                ,    t        |       j                  S r   r   rs   s    r0   ru   ru     s    Q8H8H r2   c                    | j                   S )z-
    Fixture for each NaT type in numpy.
    ry   r{   s    r0   np_nat_fixturer     r~   r2   c                    | j                   S )z;
    Fixture to parametrize over DataFrame and Series.
    ry   r{   s    r0   frame_or_seriesr     r~   r2   rm   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
    ry   r{   s    r0   index_or_seriesr     r   r2   )rm   r   arrayc                    | j                   S )zG
    Fixture to parametrize over Index, Series, and ExtensionArray
    ry   r{   s    r0   index_or_series_or_arrayr     r~   r2   c                    | j                   S r   )r   rs   s    r0   ru   ru     s
    1:: r2   c                    | j                   S )z]
    Fixture to test behavior for Index, Series, DataFrame, and pandas Array
    classes
    ry   r{   s    r0   box_with_arrayr     r   r2   c                 $     G d dt               } | S )z,
    Fixture for a dictionary subclass.
    c                      e Zd ZddZy)"dict_subclass.<locals>.TestSubDictc                6    t        j                  | g|i | y r   )dict__init__)selfargskwargss      r0   r   z+dict_subclass.<locals>.TestSubDict.__init__   s    MM$000r2   NreturnNone)r   
__module____qualname__r   rk   r2   r0   TestSubDictr     s    	1r2   r   )r   )r   s    r0   dict_subclassr     s    1d 1 r2   c                 8     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dZddZy)	5non_dict_mapping_subclass.<locals>.TestNonDictMappingc                    || _         y r   )_data)r   underlying_dicts     r0   r   z>non_dict_mapping_subclass.<locals>.TestNonDictMapping.__init__  s	    (DJr2   c                8    | j                   j                  |      S r   )r   __getitem__)r   keys     r0   r   zAnon_dict_mapping_subclass.<locals>.TestNonDictMapping.__getitem__  s    ::))#..r2   c                6    | j                   j                         S r   )r   __iter__r   s    r0   r   z>non_dict_mapping_subclass.<locals>.TestNonDictMapping.__iter__  s    ::&&((r2   c                6    | j                   j                         S r   )r   __len__r   s    r0   r   z=non_dict_mapping_subclass.<locals>.TestNonDictMapping.__len__  s    ::%%''r2   Nr   )r   r'   )r   int)r   r   r   r   r   r   r   rk   r2   r0   TestNonDictMappingr     s    	)	/	)	(r2   r   )r   Mapping)r   s    r0   non_dict_mapping_subclassr     s    (S[[ ( r2   c            	        t        t        j                  j                  d      j	                  d      t        t        d      t              t        ddd      	      } | j                  d
 d d g      j                         }|j                  j                  |j                  j                  D cg c]  }|j                  d       c}      |_        |j                  j                  g dd       |S c c}w )z
    DataFrame with 3 level MultiIndex (year, month, day) covering
    first 100 business days from 2000-01-01 with random data
       )d      ABCDdtype
2000-01-01r   Bperiodsfreq)rn   rm   c                    | j                   S r   )yearrs   s    r0   ru   zAmultiindex_year_month_day_dataframe_random_data.<locals>.<lambda>*  s
     r2   c                    | j                   S r   )r^   rs   s    r0   ru   zAmultiindex_year_month_day_dataframe_random_data.<locals>.<lambda>*  s
    177 r2   c                    | j                   S r   )dayrs   s    r0   ru   zAmultiindex_year_month_day_dataframe_random_data.<locals>.<lambda>*  s
    aee r2   i8)r   r^   r   T)inplace)r   rc   randomdefault_rngstandard_normalr#   listobjectr   groupbysumrm   
set_levelslevelsastype	set_names)tdfymdlevs      r0   /multiindex_year_month_day_dataframe_random_datar	    s     
		a 00:d6l&1s=C
 ++'):OL
M
Q
Q
SC		$$#))BRBR%S3cjj&6%STCIII0$?J &Ts   1C6c                 :    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   rZ   rZ   r   r      r  r  )
r   rZ   r   r   rZ   rZ   r   r   rZ   r   r   second)r  codesnames)r$   rk   r2   r0   %lexsorted_two_level_string_multiindexr  1  s+    
 ,.EF-/MN! r2   c                    | }t        t        j                  j                  d      j	                  d      |t        g dd            S )z2DataFrame with 2 level MultiIndex with random datar   )
   r  )Ar   Cexpr4   rm   rn   )r   rc   r   r   r   r#   )r  rm   s     r0    multiindex_dataframe_random_datar   =  s@    
 2E
		a 009oE2 r2   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   rZ   r   r  r  )r   rZ   r   rZ   r   rZ   r   r  F)r  r  r  verify_integrity)r#   rc   r   r$   )
major_axis
minor_axismajor_codesminor_codesindex_namess        r0   _create_multiindexr(  J  sh     34Ju~&J((-.K((-.KH%KJ'K(	 r2   c            	     Z    t        j                  ddgddgt        ddd      gg d	
      S )zB
    MultiIndex with a level that is a tzaware DatetimeIndex.
    rZ   r   ab20130101r  
US/Easternr   tzr  )r  )r$   from_productr   rk   r2   r0   _create_mi_with_dt64tz_levelr1  ^  s5    
 ""
Q#sZ
A,OP% r2   stringr   pandas_r   z
2020-01-01)r   zdatetime-tzz
US/Pacificr.  periodDr   r   z1 day)startr   r   rangeint8r   int16int32int64uint8uint16uint32uint64float32float64zbool-object	complex64y              ?
complex128abcd   e   )num)r  r  r  )rZ   r   r  )r   r   rZ   rZ   r   r   Int64UInt16Float32booleanzstring[python])
bool-dtyperB  rC  categoricalintervalemptytuplesmi-with-dt64tz-levelmultirepeatsnullable_intnullable_uintnullable_floatnullable_boolzstring-pythonzstring[pyarrow]zstring-pyarrowc                D    t         | j                     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_dictrz   copyr{   s    r0   rm   rm     s     &++--r2   c                H    | j                   }t        |   j                         S )z8
    index fixture, but excluding MultiIndex cases.
    )rz   rY  rZ  )r|   r   s     r0   
index_flatr\    s!     --C!!##r2   )r   uintfloat)r7  rO  rS  rL  c                P   t         | j                     j                  d      }|j                  j                         }| j                  dv rA|j	                         }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)rP  rQ  rR  r   r   rZ   N)rY  rz   rZ  valuestolistr$   from_tuplesr   )r|   indvalss      r0   index_with_missingrh    s    . w}}
%
*
*
*
5C::??D}}CCzz|DGABK'QT"Xab\)R%%d++QRtCyr2   c            
         t        t        j                  dt        j                        dz  t	        t        d      D  cg c]  } d|  	 c} t              d      S c c} w )zC
    Fixture for Series of floats with Index of unique strings
       r   g?i_r   rm   r4   )r   rc   arangerA  r#   r7  r   is    r0   string_seriesrp    sM    
 
		"BJJ'#-uRy1!r!X1@ 1s   Ac                     t        d      D  cg c]  } d|  	 }} t        t        d      D  cg c]  } d|  	 c} t              }t        ||dt              S c c} w c c} w )zI
    Fixture for Series of dtype object with Index of unique strings
    rj  foo_bar_r   objectsrm   r4   r   )r7  r#   r   r   )ro  datarm   s      r0   object_seriesrw    s[    
 !&b	*1d1#J*D*uRy1!T!:1@E$e)6BB +1s
   AAc                     t        t        j                  j                  d      j	                  d      t        ddd      d      S )z9
    Fixture for Series of floats with DatetimeIndex
    r   rj  r   r   r   tsrl  )r   rc   r   r   r   r   rk   r2   r0   datetime_seriesrz    s=    
 
		a 004r< r2   c                    t        |       }t        j                  j                  d      j	                  |      }t        || dd      S )zHelper for the _series dictr   r*  F)rm   r4   rZ  )lenrc   r   r   r   r   )rm   sizerv  s      r0   _create_seriesr~    s;    u:D99  #33D9D$e#E::r2   zseries-with-z-indexc                    t        |       S )zE
    Fixture for tests on series with changing types of indices.
    )r~  rm   s    r0   series_with_simple_indexr    s    
 %  r2   z-seriesrj  zi-r*  ru  c                H    t         | j                     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_objsrz   rZ  r{   s    r0   index_or_series_objr  $  s!     !/44$4??r2   c                H    t         | j                     j                  d      S )z
    Fixture for tests on indexes, series, series with a narrow dtype and
    series with empty objects type
    copy to avoid mutation, e.g. setting .name
    Tr`  )_index_or_series_memory_objsrz   rZ  r{   s    r0   index_or_series_memory_objr  :  s!     (6;;;FFr2   c            
         t        t        j                  dt        j                        t	        t        d      D  cg c]  } d|  	 c} t              t	        t        d      t                    S c c} w )zj
    Fixture for DataFrame of ints with index of unique strings

    Columns are ['A', 'B', 'C', 'D']
    rj  r   r   rj  rr  r   r  )r   rc   onesr;  r#   r7  r   r   rn  s    r0   	int_framer  G  sS     
rxx(r3AtA3Z36Bd6l&1 3s   A3c            
         t        t        j                  j                  d      j	                  d      t        t        d      D  cg c]  } d|  	 c}       t        t        d                  S c c} w )zm
    Fixture for DataFrame of floats with index of unique strings

    Columns are ['A', 'B', 'C', 'D'].
    r   r  rj  rr  r   r  )r   rc   r   r   r   r#   r7  r   rn  s    r0   float_framer  U  sZ     
		a 009r3AtA3Z34d6l# 3s   A0c                 z   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                  j	                  d      j                  t        |             |       S )zF
    Fixture for Series with a DatetimeIndex that has duplicates.
    i  rZ   r   r  r   rY   r  )r   r   rc   r   r   r   r|  )datess    r0   (rand_series_with_duplicate_datetimeindexr  c  s     	q!q!q!q!q!q!q!q!q!q!E "))''*::3u:FeTTr2   )r   r   r   g?g      ?z2012-01M)r   z	period[M]z
2012-02-01z	period[D]z
2011-01-01r-  )r/  s)unitr/  i  )secondsztimedelta64[ns]c                    | j                   S r   ry   r{   s    r0   ea_scalar_and_dtyper  {       ==r2   c                    | j                   S )zD
    Fixture for dunder names for common arithmetic operations.
    ry   r{   s    r0   all_arithmetic_operatorsr    r~   r2   c                    | j                   S )zU
    Fixture for operator and roperator arithmetic, comparison, and logical ops.
    ry   r{   s    r0   all_binary_operatorsr        D ==r2   c                    | j                   S )z
    Fixture for operator and roperator arithmetic functions.

    Notes
    -----
    This includes divmod and rdivmod, whereas all_arithmetic_operators
    does not.
    ry   r{   s    r0   all_arithmetic_functionsr    s    6 ==r2   )countr  maxminmeanprodstdvarmediankurtskewsemc                    | j                   S )z.
    Fixture for numeric reduction names.
    ry   r{   s    r0   all_numeric_reductionsr    r~   r2   allanyc                    | j                   S )z.
    Fixture for boolean reduction names.
    ry   r{   s    r0   all_boolean_reductionsr    r~   r2   c                    | j                   S )z>
    Fixture for all (boolean + numeric) reduction names.
    ry   r{   s    r0   all_reductionsr    r~   r2   c                    | j                   S )z;
    Fixture for operator module comparison functions.
    ry   r{   s    r0   comparison_opr  
  r  r2   )__le____lt____ge____gt__c                    | j                   S )zm
    Fixture for dunder names for compare operations except == and !=

    * >=
    * >
    * <
    * <=
    ry   r{   s    r0   compare_operators_no_eq_ner    r   r2   )__and____rand____or____ror____xor____rxor__c                    | j                   S )zY
    Fixture for dunder names for common logical operations

    * |
    * &
    * ^
    ry   r{   s    r0   all_logical_operatorsr  (       ==r2   )cumsumcumprodcummincummaxc                    | j                   S )z0
    Fixture for numeric accumulation names
    ry   r{   s    r0   all_numeric_accumulationsr  9  r~   r2   c                $    | j                  d      S )zR
    Returns the configuration for the test setting `--no-strict-data-files`.
    r*   )rL   )pytestconfigs    r0   strict_data_filesr  D  s    
 !!":;;r2   c                     t         j                  j                  t         j                  j                  t              d       fd}|S )aD  
    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 --no-strict-data-files option is not set.
    testsc                     t        j                  j                  g|  }t         j                  j                  |      s*rt	        d| d      t        j                  d| d       |S )NzCould not find file z' and --no-strict-data-files is not set.zCould not find .)osr;   joinexists
ValueErrorr7   skip)r   r;   	BASE_PATHr  s     r0   decozdatapath.<locals>.decoa  sc    ww||I--ww~~d#  *4&0WX  KK/$q12r2   )r  r;   r  dirname__file__)r  r  r  s   ` @r0   datapathr  L  s2    & RWW__X6@I Kr2   z
Asia/Tokyozdateutil/US/Pacificzdateutil/Asia/Singaporez+01:15z-02:15z	UTC+01:15z	UTC-02:15i,  i)hoursrb  r  r  c                    | j                   S )zD
    Fixture for trying timezones including default (None): {0}
    ry   r{   s    r0   tz_naive_fixturer    r   r2   c                    | j                   S )z4
    Fixture for trying explicit timezones: {0}
    ry   r{   s    r0   tz_aware_fixturer    r   r2   r   zdateutil/UTCc                    | j                   S )zQ
    Fixture to provide variants of UTC timezone strings and tzinfo objects.
    ry   r{   s    r0   utc_fixturer    r~   r2   )r  msusnsc                    | j                   S )z&
    datetime64 units we support.
    ry   r{   s    r0   r  r    r~   r2   c                    | j                   S )zR
    Parametrized fixture for string dtypes.

    * str
    * 'str'
    * 'U'
    ry   r{   s    r0   string_dtyper         ==r2   pyarrowc                    | j                   S )za
    Parametrized fixture for string dtypes.

    * 'string[python]'
    * 'string[pyarrow]'
    ry   r{   s    r0   nullable_string_dtyper         ==r2   pythonpyarrow_numpyc                    | j                   S )zx
    Parametrized fixture for pd.options.mode.string_storage.

    * 'python'
    * 'pyarrow'
    * 'pyarrow_numpy'
    ry   r{   s    r0   string_storager    r   r2   numpy_nullablec                    | j                   S )zb
    Parametrized fixture for pd.options.mode.string_storage.

    * 'python'
    * 'pyarrow'
    ry   r{   s    r0   dtype_backendr    r  r2   c                    | j                   S )zK
    Parametrized fixture for bytes dtypes.

    * bytes
    * 'bytes'
    ry   r{   s    r0   bytes_dtyper         ==r2   c                    | j                   S )zN
    Parametrized fixture for object dtypes.

    * object
    * 'object'
    ry   r{   s    r0   object_dtyper    r  r2   r   zstring[pyarrow_numpy]c                    | j                   S )zo
    Parametrized fixture for string dtypes.
    * 'object'
    * 'string[python]'
    * 'string[pyarrow]'
    ry   r{   s    r0   any_string_dtyper    r   r2   c                    | j                   S )z\
    Parametrized fixture for datetime64 dtypes.

    * 'datetime64[ns]'
    * 'M8[ns]'
    ry   r{   s    r0   datetime64_dtyper  -  r  r2   c                    | j                   S )z^
    Parametrized fixture for timedelta64 dtypes.

    * 'timedelta64[ns]'
    * 'm8[ns]'
    ry   r{   s    r0   timedelta64_dtyper  8  r  r2   c            	     &    t        ddddddd      S )z-
    Fixture emits fixed Timestamp.now()
    i  rZ   r[   r         )r   r^   r   hourminuter  microsecond)r   rk   r2   r0   fixed_now_tsr  C  s     
 1RR r2   c                    | j                   S )z^
    Parameterized fixture for float dtypes.

    * float
    * 'float32'
    * 'float64'
    ry   r{   s    r0   float_numpy_dtyper  M  r  r2   c                    | j                   S )zR
    Parameterized fixture for float dtypes.

    * 'Float32'
    * 'Float64'
    ry   r{   s    r0   float_ea_dtyper  Y  r  r2   c                    | j                   S )z~
    Parameterized fixture for float dtypes.

    * float
    * 'float32'
    * 'float64'
    * 'Float32'
    * 'Float64'
    ry   r{   s    r0   any_float_dtyper
  d  r  r2   c                    | j                   S )zg
    Parameterized fixture for complex dtypes.

    * complex
    * 'complex64'
    * 'complex128'
    ry   r{   s    r0   complex_dtyper  r  r  r2   c                    | j                   S )z
    Parameterized fixture for complex and numpy float dtypes.

    * complex
    * 'complex64'
    * 'complex128'
    * float
    * 'float32'
    * 'float64'
    ry   r{   s    r0   complex_or_float_dtyper  ~  s     ==r2   c                    | j                   S )z|
    Parameterized fixture for signed integer dtypes.

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

    * 'uint8'
    * 'uint16'
    * 'uint32'
    * 'uint64'
    ry   r{   s    r0   any_unsigned_int_numpy_dtyper    r   r2   c                    | j                   S )z
    Parameterized fixture for any integer dtype.

    * int
    * 'int8'
    * 'uint8'
    * 'int16'
    * 'uint16'
    * 'int32'
    * 'uint32'
    * 'int64'
    * 'uint64'
    ry   r{   s    r0   any_int_numpy_dtyper    r   r2   c                    | j                   S )z
    Parameterized fixture for any nullable integer dtype.

    * 'UInt8'
    * 'Int8'
    * 'UInt16'
    * 'Int16'
    * 'UInt32'
    * 'Int32'
    * 'UInt64'
    * 'Int64'
    ry   r{   s    r0   any_int_ea_dtyper    r  r2   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'
    ry   r{   s    r0   any_int_dtyper    s    . ==r2   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'
    ry   r{   s    r0   any_numeric_ea_dtyper    s    " ==r2   c                    | j                   S )a  
    Parameterized fixture for any nullable integer dtype and
    any float ea dtypes.

    * 'UInt8'
    * 'Int8'
    * 'UInt16'
    * 'Int16'
    * 'UInt32'
    * 'Int32'
    * 'UInt64'
    * 'Int64'
    * 'Float32'
    * 'Float64'
    * 'uint8[pyarrow]'
    * 'int8[pyarrow]'
    * 'uint16[pyarrow]'
    * 'int16[pyarrow]'
    * 'uint32[pyarrow]'
    * 'int32[pyarrow]'
    * 'uint64[pyarrow]'
    * 'int64[pyarrow]'
    * 'float32[pyarrow]'
    * 'float64[pyarrow]'
    ry   r{   s    r0   any_numeric_ea_and_arrow_dtyper    s    @ ==r2   c                    | j                   S )z~
    Parameterized fixture for any signed nullable integer dtype.

    * 'Int8'
    * 'Int16'
    * 'Int32'
    * 'Int64'
    ry   r{   s    r0   any_signed_int_ea_dtyper    r   r2   c                    | j                   S )z
    Parameterized fixture for any (purely) real numeric dtype.

    * int
    * 'int8'
    * 'uint8'
    * 'int16'
    * 'uint16'
    * 'int32'
    * 'uint32'
    * 'int64'
    * 'uint64'
    * float
    * 'float32'
    * 'float64'
    ry   r{   s    r0   any_real_numpy_dtyper   +  s    $ ==r2   c                    | j                   S )a  
    Parameterized fixture for any (purely) real numeric dtype.

    * int
    * 'int8'
    * 'uint8'
    * 'int16'
    * 'uint16'
    * 'int32'
    * 'uint32'
    * 'int64'
    * 'uint64'
    * float
    * 'float32'
    * 'float64'

    and associated ea dtypes.
    ry   r{   s    r0   any_real_numeric_dtyper"  @  s    ( ==r2   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'
    ry   r{   s    r0   any_numpy_dtyper$  W  r  r2   c                    | j                   S )a  
    Parameterized fixture for all real dtypes that can hold NA.

    * float
    * 'float32'
    * 'float64'
    * 'Float32'
    * 'Float64'
    * 'UInt8'
    * 'UInt16'
    * 'UInt32'
    * 'UInt64'
    * 'Int8'
    * 'Int16'
    * 'Int32'
    * 'Int64'
    * 'uint8[pyarrow]'
    * 'uint16[pyarrow]'
    * 'uint32[pyarrow]'
    * 'uint64[pyarrow]'
    * 'int8[pyarrow]'
    * 'int16[pyarrow]'
    * 'int32[pyarrow]'
    * 'int64[pyarrow]'
    * 'float[pyarrow]'
    * 'double[pyarrow]'
    ry   r{   s    r0   any_real_nullable_dtyper&  |  s    : ==r2   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'
    ry   r{   s    r0   any_numeric_dtyper(    s    > ==r2   cmixedbytes   a   crO  zmixed-integerr   g       @floatingg      ?integerzmixed-integer-floatdecimal
datetime64z
2013-01-01z
2018-01-01r,  20180101r   i  i  complexy      ?      ?y       @       @r   rN  c                ^    | 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
    --------
    >>> from pandas._libs import 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   )rz   rc   r   r   )r|   inferred_dtyperc  s      r0   any_skipna_inferred_dtyper6    s0    R %]]NFXXfF+F 6!!r2   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:)rN   )r7   importorskipIPython.core.interactiveshellr:  traitlets.configr;  HistoryManager	hist_file)r:  r;  r)  s      r0   iprA    s<     	g6> (A!+A1%%r2   )bsrcoocsccsrdiadoklilc                ^    t        j                  d      }t        || j                  dz         S )z-
    Yields scipy sparse matrix classes.
    zscipy.sparse_matrix)r7   r<  getattrrz   )r|   sparses     r0   spmatrixrM  #  s*    
   0F67==9455r2   Tickc                    | j                   S )zN
    Fixture for Tick based datetime offsets available for a time series.
    ry   r{   s    r0   tick_classesrP  -  r  r2   c                    | S r   rk   rs   s    r0   ru   ru   ;  s     r2   c                    | j                   S )zk
    Simple fixture for testing keys in sorting methods.
    Tests None (no key) and the identity key.
    ry   r{   s    r0   sort_by_keyrS  ;  r   r2   )r  NN)EgonVenkmanN)NCC1701DrV  rV  c                    | j                   S )zP
    A 3-tuple of names, the first two for operands, the last for a result.
    ry   r{   s    r0   r  r  D  s      ==r2   c                    | j                   S )zI
    Parametrize over __setitem__, loc.__setitem__, iloc.__setitem__
    ry   r{   s    r0   indexer_slirY  W  r~   r2   c                    | j                   S )z<
    Parametrize over loc.__getitem__, iloc.__getitem__
    ry   r{   s    r0   
indexer_lir[  _  r~   r2   c                    | j                   S )z8
    Parametrize over __setitem__, iloc.__setitem__
    ry   r{   s    r0   
indexer_sir]  g  r~   r2   c                    | j                   S )z7
    Parametrize over __setitem__, loc.__setitem__
    ry   r{   s    r0   
indexer_slr_  o  r~   r2   c                    | j                   S )z:
    Parametrize over at.__setitem__, loc.__setitem__
    ry   r{   s    r0   
indexer_alra  w  r~   r2   c                    | j                   S )z<
    Parametrize over iat.__setitem__, iloc.__setitem__
    ry   r{   s    r0   indexer_ialrc    r~   r2   c                 "    t        dd      dk(  S )z>
    Fixture to check if the array manager is being used.
    mode.data_managerTsilentr   r   rk   r2   r0   using_array_managerrh    s    
 *48GCCr2   c                 r    t         j                  j                  j                  du xr t	        dd      dk(  S )z7
    Fixture to check if Copy-on-Write is enabled.
    Tre  rf  blockrd   optionsmodecopy_on_writer   rk   r2   r0   using_copy_on_writero    s5     	

%%- 	E+D9WDr2   c                 t    t         j                  j                  j                  dk(  xr t	        dd      dk(  S )z?
    Fixture to check if Copy-on-Write is in warning mode.
    warnre  Trf  rj  rk  rk   r2   r0   warn_copy_on_writerr    s5     	

%%/ 	E+D9WDr2   c                 N    t         j                  j                  j                  du S )z=
    Fixture to check if infer string option is enabled.
    T)rd   rl  futureinfer_stringrk   r2   r0   using_infer_stringrv    s    
 ::))T11r2   zEurope/Warsawzdateutil/Europe/Warsawc                    | j                   S )zE
    tzinfo for Europe/Warsaw using pytz, dateutil, or zoneinfo.
    ry   r{   s    r0   warsawrx    r~   r2   c                      y)N)r  r  rk   rk   r2   r0   arrow_string_storagerz    s    'r2   r   )r:   zpytest.Itemr;   strr<   r{  r   r   )r   z
type[dict])r   ztype[abc.Mapping])r   r$   )r   r   )r   r   )r  r{  r   zCallable[..., str])r   r   )r   z#tuple[Hashable, Hashable, Hashable])r   bool)r   r{  (@  __doc__
__future__r   collectionsr   r   r   r   r   r	   r0  r
   operatorr  typingr   r   dateutil.tzr   r   
hypothesisr   stnumpyrc   r7   pytzr   r   pandas._config.configr   pandas.util._test_decoratorsutil_test_decoratorstdpandas.core.dtypes.dtypesr   r   pandasrd   r   r   r   r   r   r   r   r   r   r   r    r!   pandas._testing_testingtmpandas.corer"   pandas.core.indexes.apir#   r$   pandas.util.versionr%   collections.abcr&   r'   r  pahas_pyarrowImportErrorzoneinfoZoneInfoZoneInfoNotFoundErrorr1   r=   rQ   HealthChecktoo_slowhypothesis_health_checks__version__appenddiffering_executorssettingsregister_profiletupleload_profilesplitr4   rK  tseriesoffsetsclsregister_type_strategybuildsintegersbooleansfixturerf   rl   r}   
axis_framer   r   r   r   r   r   r   r   rz   
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(  r1  r7  rm  r   r|  r   from_breakslinspacere  r   r  rY  idxkeysrm   index_fixture2rM   
isinstancer\  index_flat2
startswithrh  rp  rw  rz  r~  _seriesr  NARROW_NP_DTYPESr   _narrow_seriesr  r  PYTHON_DATA_TYPES_typ_objects_seriesr  r  r  r  r  r  arithmetic_dunder_methodsr  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  _all_numeric_accumulationsr  r  r  	TIMEZONESextendrr   TIMEZONE_IDSparametrize_fixture_docr{  r  r  tz_aware_fixture2_UTCSr  utc_fixture2r  unit2STRING_DTYPESr  r  r  r  string_storage2BYTES_DTYPESr  OBJECT_DTYPESr  r  DATETIME64_DTYPESr  TIMEDELTA64_DTYPESr  r  FLOAT_NUMPY_DTYPESr  FLOAT_EA_DTYPESr  ALL_FLOAT_DTYPESr
  COMPLEX_DTYPESr  COMPLEX_FLOAT_DTYPESr  SIGNED_INT_NUMPY_DTYPESr  UNSIGNED_INT_NUMPY_DTYPESr  ALL_INT_NUMPY_DTYPESr  ALL_INT_EA_DTYPESr  ALL_INT_DTYPESr  r  ALL_INT_PYARROW_DTYPES_STR_REPRFLOAT_PYARROW_DTYPES_STR_REPRr  SIGNED_INT_EA_DTYPESr  ALL_REAL_NUMPY_DTYPESr   ALL_REAL_DTYPESr"  ALL_NUMPY_DTYPESr$  ALL_REAL_NULLABLE_DTYPESr&  ALL_NUMERIC_DTYPESr(  NAr1  _any_skipna_inferred_dtyperw   _r6  rA  rM  __all__
issubclassrN  rP  rS  r  setitemlocilocrY  r[  r]  r_  atra  iatrc  rh  ro  rr  rv  warsawsrx  rz  )ro  r   valueindex_idrm   r   os   0000000r0   <module>r     s  & #     	
  '  
 . ) )
       (
 	K HeI$9<x '22;;< 
:!!"gh&77##J$:$:$N$NO    $ $  89 %         & 8==? D
"**$$d
+CBYRYYskbkk#r2kbkkmL 499; 
D
"**$$d
+CB		bkk"a !bkkm"++R8		

 @EEG 
D
"**$$d
+CB		bkk#r"!bkkm%"++R@		

( ! ! 1 1 17RS T 
 9~+FG H *+	 ,	 *+ , e}% & /0 1 ;< = ;< = ;< = V=2==#=>

 V=2==#=>		 e}% & :; < 
K01 2 r,FG H  bffbff-. / -  r((.HI J ! 	6*+ , vWh,?@	 A	 #  vrxx06RS T vy"((;AUV W ! 	 	  0  "   		 	('eE#J7qwqc]78'
<5' :lCLI' l<3?	'
 w#F' Z_' E)"))C./' U9299S>1' U9299S>1' U9299S>1' U9299S>1' eIBIIcN(3' eIBIIcN(3' eIBIIcN(3' uYRYYs^95'  uYRYYs^95!'" 5$*&9#'$ u)6		#[)D9299S3T,TT 		#\*TIBIIc4V-VV $DL2$56)))+"++a#*FG2Y$j$$S)>	%JK8:!'()"))C.89299S>:IBIIcN)<9299S>006iHs4AGA3-4<LMI'P 
s<AGA3-<DUV
WC%(L!" |((*+. ,.  *002U*UJ:W
$
$   ',,.CNN34AA5*- 	

:   C C  ; (--/% 8*F#^E%:: ! ! $$	 	 ~~gb	E"I6qBqc(6S!  F<E7EnE  ,1134@ 5@ <>;O;O27u~~gu- 
      	   388:;G <G 
 
 
 
 U U. 	q	"M'7$CD	s#	&i(IJ			$k2	3	'5l|46	
 
3	!23
 r334 5 		5<=< $	%$	   ./ 0 !%.  ./ 0 *,CC ' ( 		 ?@	 A	 N G  12 3 < <  J 			GINLLYQ YR u-%	( Hl+He$	
 "++AQ+ C-.yl3 4 / CQR 012y},qr*:; < 3 %  
UWhll;	LL"""5)* u   ./ 0 	 r''( ) &mbmmI.FG YmbmmI&>?_MBMM),DE YmbmmI&>? ! r' ( r''( ) &mbmmI.FG,MBMM)4LM	 r++, - r,,- .   r,,- . r))* + r**+
 ,
 r(() * r../ 0 r112
 3
 r334	 5	 r../ 0" r++, -  r(() *2 r++b.@.@@A B* (() 	&&': r../	 0	 r//0 1( r))* +, r**+! ,!H r223 4> r,,- .F RVVS!"RUUC !sBFFC !tRVVT"#rvvrvvrvv&'bMsBFFA&'sBFFC !#rvvs#$BFFAQ,-RVVWQZ01rvvu%&ruue$%MBMM,/|9TUV)J':1FGHd4AT1a(89:() 9Q<167d1grvvtAw'(tbfffTl34(1a."&&(1a.9:3 6 
(	)Q 1s;," <,"d & &$ HI6 J6  ##gbjj!,bjjoo>1; 	

A k*+ , !,	 			ruu	 

BFFBGG45 6 () * 

BGG,- . 

BFF+, - rvv' ( () * D D     2 2 4
5NN$8$$_56 w   ( (A;  K %% HJ 8H 5 =0"`  7(~
 ,Ds   1Ap =Ap$ Ap<5Aq*,AqAq
&Aq
+Aq
(Aq''Aq"AqAq")Aq(B Aq-dAAq2pAp!p Ap!p$Ap9p8Ap9qAq"