
    bMh                        d dl Z d dlZd dlmZ d dlmZmZ ej        d             Zej        d             Z	ej        d             Z
ej        d             Z ej        dd	g
          d             Zej        d             Zej        d             Zej        d             Zej        d             Zej        d             Zej        d             Z ej        ddg
          d             Z ej        d d d d gg d          d             Z ej        ddg
          d             Z ej        ddg
          d             Z ej        ddg
          d             Z ej        dd g
          d!             Z ej        ddg
          d"             Zej        d#             Zej        d$efd%            ZdS )&    N)_get_option)Seriesoptionsc                      t           )z3A fixture providing the ExtensionDtype to validate.NotImplementedError     _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/extension/conftest.pydtyper      
     r
   c                      t           )z
    Length-100 array for this type.

    * data[0] and data[1] should both be non missing
    * data[0] and data[1] should not be equal
    r   r	   r
   r   datar      
     r
   c                 b    | j         s"| j        dk    st          j        |  d           t          )z
    Length-100 array in which all the elements are two.

    Call pytest.skip in your fixture if the dtype does not support divmod.
    mz is not a numeric dtype)_is_numerickindpytestskipr   r   s    r   data_for_twosr      s<      7s!2!2 	u555666
r
   c                      t           )zLength-2 array with [NA, Valid]r   r	   r
   r   data_missingr   -   r   r
   r   r   )paramsc                 :    | j         dk    r|S | j         dk    r|S dS )z5Parametrized fixture giving 'data' and 'data_missing'r   r   Nparam)requestr   r   s      r   all_datar    3   s1     }	.	(	( 
)	(r
   c                       fd}|S )a  
    Generate many datasets.

    Parameters
    ----------
    data : fixture implementing `data`

    Returns
    -------
    Callable[[int], Generator]:
        A callable that takes a `count` argument and
        returns a generator yielding `count` datasets.
    c              3   8   K   t          |           D ]}V  d S N)range)count_r   s     r   genzdata_repeated.<locals>.genL   s1      u 	 	AJJJJ	 	r
   r	   )r   r'   s   ` r   data_repeatedr(   <   s#          Jr
   c                      t           )z
    Length-3 array with a known sort order.

    This should be three items [B, C, A] with
    A < B < C

    For boolean dtypes (for which there are only 2 values available),
    set B=C=True
    r   r	   r
   r   data_for_sortingr*   S   s
     r
   c                      t           )z{
    Length-3 array with a known sort order.

    This should be three items [B, NA, A] with
    A < B and NA missing.
    r   r	   r
   r   data_missing_for_sortingr,   a   r   r
   c                      t           j        S )z
    Binary operator for comparing NA values.

    Should return a function of two arguments that returns
    True if both arguments are (scalar) NA for your type.

    By default, uses ``operator.is_``
    )operatoris_r	   r
   r   na_cmpr0   l   s     <r
   c                     | j         S )z
    The scalar missing value for this type. Default dtype.na_value.

    TODO: can be removed in 3.x (see https://github.com/pandas-dev/pandas/pull/54930)
    )na_valuer   s    r   r2   r2   y   s     >r
   c                      t           )z
    Data for factorization, grouping, and unique tests.

    Expected to be like [B, B, NA, NA, A, A, B, C]

    Where A < B < C and NA is missing.

    If a dtype has _is_boolean = True, i.e. only 2 unique non-NA entries,
    then set C=B.
    r   r	   r
   r   data_for_groupingr4      s
     r
   TFc                     | j         S )z#Whether to box the data in a Seriesr   r   s    r   box_in_seriesr7      s     =r
   c                     dS N   r	   xs    r   <lambda>r=          ! r
   c                 (    dgt          |           z  S r9   )lenr;   s    r   r=   r=      s    1#A, r
   c                 B    t          dgt          |           z            S r9   )r   r@   r;   s    r   r=   r=      s    &!s1vv&& r
   c                     | S r#   r	   r;   s    r   r=   r=      r>   r
   )scalarlistseriesobject)r   idsc                     | j         S )z,
    Functions to test groupby.apply().
    r   r6   s    r   groupby_apply_oprI      s     =r
   c                     | j         S )zU
    Boolean fixture to support Series and Series.to_frame() comparison testing.
    r   r6   s    r   as_framerK          
 =r
   c                     | j         S )zL
    Boolean fixture to support arr and Series(arr) comparison testing.
    r   r6   s    r   	as_seriesrN      rL   r
   c                     | j         S )zd
    Boolean fixture to support comparison testing of ExtensionDtype array
    and numpy array.
    r   r6   s    r   	use_numpyrP           =r
   ffillbfillc                     | j         S )z{
    Parametrized fixture giving method parameters 'ffill' and 'bfill' for
    Series.fillna(method=<method>) testing.
    r   r6   s    r   fillna_methodrU      rQ   r
   c                     | j         S )zR
    Boolean fixture to support ExtensionDtype _from_sequence method testing.
    r   r6   s    r   as_arrayrW      rL   r
   c                 @    t                               t                     S )z
    A scalar that *cannot* be held by this ExtensionArray.

    The default should work for most subclasses, but is not guaranteed.

    If the array can hold any item (i.e. object dtype), then use pytest.skip.
    )rF   __new__)r   s    r   invalid_scalarrZ      s     >>&!!!r
   returnc                  R    t           j        j        du ot          dd          dk    S )z7
    Fixture to check if Copy-on-Write is enabled.
    Tzmode.data_manager)silentblock)r   modecopy_on_writer   r	   r
   r   using_copy_on_writera      s2     	"d* 	E+D999WDr
   )r.   r   pandas._config.configr   pandasr   r   fixturer   r   r   r   r    r(   r*   r,   r0   r2   r4   r7   rI   rK   rN   rP   rU   rW   rZ   boolra   r	   r
   r   <module>rf      se     - - - - - -          
         
 /000  10   , 
 
 
    	 	 	       e}%%%  &%
 &&	 	/..     e}%%%  &% e}%%%  &% e}%%%  &% )***  +* e}%%%  &% " " " T      r
   