
    Mh                     z   S SK r S SKrS SKJr  S SKJrJr  \R                  S 5       r\R                  S 5       r	\R                  S 5       r
\R                  S 5       r\R                  " SS	/S
9S 5       r\R                  S 5       r\R                  S 5       r\R                  S 5       r\R                  S 5       r\R                  S 5       r\R                  S 5       r\R                  " SS/S
9S 5       r\R                  " S S S S // SQS9S 5       r\R                  " SS/S
9S 5       r\R                  " SS/S
9S 5       r\R                  " SS/S
9S 5       r\R                  " SS /S
9S! 5       r\R                  " SS/S
9S" 5       r\R                  S# 5       r\R                  S$\4S% j5       rg)&    N)_get_option)Seriesoptionsc                      [         e)z3A fixture providing the ExtensionDtype to validate.NotImplementedError     Q/var/www/html/env/lib/python3.13/site-packages/pandas/tests/extension/conftest.pydtyper      
     r
   c                      [         e)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                     U R                   (       d)  U R                  S:X  d  [        R                  " U  S35        [        e)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      s4     s!2 	ug456
r
   c                      [         e)zLength-2 array with [NA, Valid]r   r	   r
   r   data_missingr   -   r   r
   r   r   )paramsc                 L    U R                   S:X  a  U$ U R                   S:X  a  U$ g)z5Parametrized fixture giving 'data' and 'data_missing'r   r   Nparam)requestr   r   s      r   all_datar    3   s,     }}	.	( 
)r
   c                    ^  U 4S jnU$ )z
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   :   >#    [        U 5       H  nTv   M	     g 7fN)range)count_r   s     r   gendata_repeated.<locals>.genL   s     uAJ s   r	   )r   r'   s   ` r   data_repeatedr)   <   s      Jr
   c                      [         e)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                      [         e)zk
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                  "    [         R                  $ )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_cmpr1   l   s     <<r
   c                     U R                   $ )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   r3   r3   y   s     >>r
   c                      [         e)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_groupingr5      s
     r
   TFc                     U R                   $ )z#Whether to box the data in a Seriesr   r   s    r   box_in_seriesr8      s     ==r
   c                     gN   r	   xs    r   <lambda>r>      s    !r
   c                      S/[        U 5      -  $ r:   )lenr<   s    r   r>   r>      s    1#A,r
   c                 2    [        S/[        U 5      -  5      $ r:   )r   r@   r<   s    r   r>   r>      s    &!s1v&r
   c                     U $ r#   r	   r<   s    r   r>   r>      s    !r
   )scalarlistseriesobject)r   idsc                     U R                   $ )z$
Functions to test groupby.apply().
r   r7   s    r   groupby_apply_oprI      s     ==r
   c                     U R                   $ )zM
Boolean fixture to support Series and Series.to_frame() comparison testing.
r   r7   s    r   as_framerK          
 ==r
   c                     U R                   $ )zD
Boolean fixture to support arr and Series(arr) comparison testing.
r   r7   s    r   	as_seriesrN      rL   r
   c                     U R                   $ )zX
Boolean fixture to support comparison testing of ExtensionDtype array
and numpy array.
r   r7   s    r   	use_numpyrP           ==r
   ffillbfillc                     U R                   $ )zo
Parametrized fixture giving method parameters 'ffill' and 'bfill' for
Series.fillna(method=<method>) testing.
r   r7   s    r   fillna_methodrU      rQ   r
   c                     U R                   $ )zJ
Boolean fixture to support ExtensionDtype _from_sequence method testing.
r   r7   s    r   as_arrayrW      rL   r
   c                 4    [         R                  [         5      $ )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                  b    [         R                  R                  SL =(       a    [        SSS9S:H  $ )z/
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      s1     	""d* 	E+D9WDr
   )r/   r   pandas._config.configr   pandasr   r   fixturer   r   r   r   r    r)   r+   r-   r1   r3   r5   r8   rI   rK   rN   rP   rU   rW   rZ   boolra   r	   r
   r   <module>rf      sV     -  
      
 /0 1  , 
 
   	 	     e}% &
 &	 	/ e}% & e}% & e}% & )* + e}% & " " T  r
   