o
    թZh                     @   s  d dl Z d dlZd dlmZ d dlmZmZ ejdd Zejdd Z	ejdd	 Z
ejd
d Zejddgddd Zejdd Zejdd Zejdd Zejdd Zejdd Zejdd Zejddgddd Zejdd  d!d  d"d  d#d  gg d$d%d&d' Zejddgdd(d) Zejddgdd*d+ Zejddgdd,d- Zejd.d/gdd0d1 Zejddgdd2d3 Zejd4d5 Zejd6efd7d8ZdS )9    N)_get_option)Seriesoptionsc                   C      t )z3A fixture providing the ExtensionDtype to validate.NotImplementedError r   r   V/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/extension/conftest.pydtype      r
   c                   C   r   )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   r	   data      r   c                 C   s$   | j s| jdkst|  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)Z_is_numerickindpytestskipr   r
   r   r   r	   data_for_twos   s   r   c                   C   r   )zLength-2 array with [NA, Valid]r   r   r   r   r	   data_missing-   r   r   )paramsc                 C   s    | 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   r   r   r	   all_data3   s
   

r   c                    s    fd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   s    t | D ]} V  qd S N)range)count_r   r   r	   genL   s   zdata_repeated.<locals>.genr   )r   r   r   r   r	   data_repeated<   s   r    c                   C   r   )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   r	   data_for_sortingS   s   r!   c                   C   r   )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   r	   data_missing_for_sortinga   r   r"   c                   C   s   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   r	   na_cmpl   s   
r%   c                 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   r   r   r	   r'   y   s   r'   c                   C   r   )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   r	   data_for_grouping   s   r(   TFc                 C   r&   )z#Whether to box the data in a Seriesr   r   r   r   r	   box_in_series   s   r*   c                 C   s   dS N   r   xr   r   r	   <lambda>       r/   c                 C   s   dgt |  S r+   )lenr-   r   r   r	   r/      s    c                 C   s   t dgt|  S r+   )r   r1   r-   r   r   r	   r/      s    c                 C   s   | S r   r   r-   r   r   r	   r/      r0   )ZscalarlistZseriesobject)r   Zidsc                 C   r&   )z,
    Functions to test groupby.apply().
    r   r)   r   r   r	   groupby_apply_op   s   r4   c                 C   r&   )zU
    Boolean fixture to support Series and Series.to_frame() comparison testing.
    r   r)   r   r   r	   as_frame      r5   c                 C   r&   )zL
    Boolean fixture to support arr and Series(arr) comparison testing.
    r   r)   r   r   r	   	as_series   r6   r7   c                 C   r&   )zd
    Boolean fixture to support comparison testing of ExtensionDtype array
    and numpy array.
    r   r)   r   r   r	   	use_numpy      r8   ZffillZbfillc                 C   r&   )z{
    Parametrized fixture giving method parameters 'ffill' and 'bfill' for
    Series.fillna(method=<method>) testing.
    r   r)   r   r   r	   fillna_method   r9   r:   c                 C   r&   )zR
    Boolean fixture to support ExtensionDtype _from_sequence method testing.
    r   r)   r   r   r	   as_array   r6   r;   c                 C   s
   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.
    )r3   __new__r   r   r   r	   invalid_scalar   s   
	r=   returnc                   C   s   t jjdu otddddkS )z7
    Fixture to check if Copy-on-Write is enabled.
    Tzmode.data_manager)Zsilentblock)r   modeZcopy_on_writer   r   r   r   r	   using_copy_on_write   s   rA   )r#   r   Zpandas._config.configr   Zpandasr   r   Zfixturer
   r   r   r   r   r    r!   r"   r%   r'   r(   r*   r4   r5   r7   r8   r:   r;   r=   boolrA   r   r   r   r	   <module>   sf    











	


	





