123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- from datetime import timedelta
- import pytest
- import pandas.util._test_decorators as td
- from pandas import (
- DataFrame,
- to_datetime,
- )
- @pytest.fixture(params=[True, False])
- def raw(request):
- """raw keyword argument for rolling.apply"""
- return request.param
- @pytest.fixture(
- params=[
- "triang",
- "blackman",
- "hamming",
- "bartlett",
- "bohman",
- "blackmanharris",
- "nuttall",
- "barthann",
- ]
- )
- def win_types(request):
- return request.param
- @pytest.fixture(params=["kaiser", "gaussian", "general_gaussian", "exponential"])
- def win_types_special(request):
- return request.param
- @pytest.fixture(
- params=[
- "sum",
- "mean",
- "median",
- "max",
- "min",
- "var",
- "std",
- "kurt",
- "skew",
- "count",
- "sem",
- ]
- )
- def arithmetic_win_operators(request):
- return request.param
- @pytest.fixture(
- params=[
- "sum",
- "mean",
- "median",
- "max",
- "min",
- ]
- )
- def arithmetic_numba_supported_operators(request):
- return request.param
- @pytest.fixture(params=["right", "left", "both", "neither"])
- def closed(request):
- return request.param
- @pytest.fixture(params=[True, False])
- def center(request):
- return request.param
- @pytest.fixture(params=[None, 1])
- def min_periods(request):
- return request.param
- @pytest.fixture(params=[True, False])
- def parallel(request):
- """parallel keyword argument for numba.jit"""
- return request.param
- # Can parameterize nogil & nopython over True | False, but limiting per
- # https://github.com/pandas-dev/pandas/pull/41971#issuecomment-860607472
- @pytest.fixture(params=[False])
- def nogil(request):
- """nogil keyword argument for numba.jit"""
- return request.param
- @pytest.fixture(params=[True])
- def nopython(request):
- """nopython keyword argument for numba.jit"""
- return request.param
- @pytest.fixture(params=[True, False])
- def adjust(request):
- """adjust keyword argument for ewm"""
- return request.param
- @pytest.fixture(params=[True, False])
- def ignore_na(request):
- """ignore_na keyword argument for ewm"""
- return request.param
- @pytest.fixture(
- params=[pytest.param("numba", marks=td.skip_if_no("numba", "0.46.0")), "cython"]
- )
- def engine(request):
- """engine keyword argument for rolling.apply"""
- return request.param
- @pytest.fixture(
- params=[
- pytest.param(("numba", True), marks=td.skip_if_no("numba", "0.46.0")),
- ("cython", True),
- ("cython", False),
- ]
- )
- def engine_and_raw(request):
- """engine and raw keyword arguments for rolling.apply"""
- return request.param
- @pytest.fixture
- def times_frame():
- """Frame for testing times argument in EWM groupby."""
- return DataFrame(
- {
- "A": ["a", "b", "c", "a", "b", "c", "a", "b", "c", "a"],
- "B": [0, 0, 0, 1, 1, 1, 2, 2, 2, 3],
- "C": to_datetime(
- [
- "2020-01-01",
- "2020-01-01",
- "2020-01-01",
- "2020-01-02",
- "2020-01-10",
- "2020-01-22",
- "2020-01-03",
- "2020-01-23",
- "2020-01-23",
- "2020-01-04",
- ]
- ),
- }
- )
- @pytest.fixture(params=["1 day", timedelta(days=1)])
- def halflife_with_times(request):
- """Halflife argument for EWM when times is specified."""
- return request.param
- @pytest.fixture(
- params=[
- "object",
- "category",
- "int8",
- "int16",
- "int32",
- "int64",
- "uint8",
- "uint16",
- "uint32",
- "uint64",
- "float16",
- "float32",
- "float64",
- "m8[ns]",
- "M8[ns]",
- pytest.param(
- "datetime64[ns, UTC]",
- marks=pytest.mark.skip(
- "direct creation of extension dtype datetime64[ns, UTC] "
- "is not supported ATM"
- ),
- ),
- ]
- )
- def dtypes(request):
- """Dtypes for window tests"""
- return request.param
- @pytest.fixture(
- params=[
- DataFrame([[2, 4], [1, 2], [5, 2], [8, 1]], columns=[1, 0]),
- DataFrame([[2, 4], [1, 2], [5, 2], [8, 1]], columns=[1, 1]),
- DataFrame([[2, 4], [1, 2], [5, 2], [8, 1]], columns=["C", "C"]),
- DataFrame([[2, 4], [1, 2], [5, 2], [8, 1]], columns=[1.0, 0]),
- DataFrame([[2, 4], [1, 2], [5, 2], [8, 1]], columns=[0.0, 1]),
- DataFrame([[2, 4], [1, 2], [5, 2], [8, 1]], columns=["C", 1]),
- DataFrame([[2.0, 4.0], [1.0, 2.0], [5.0, 2.0], [8.0, 1.0]], columns=[1, 0.0]),
- DataFrame([[2, 4.0], [1, 2.0], [5, 2.0], [8, 1.0]], columns=[0, 1.0]),
- DataFrame([[2, 4], [1, 2], [5, 2], [8, 1.0]], columns=[1.0, "X"]),
- ]
- )
- def pairwise_frames(request):
- """Pairwise frames test_pairwise"""
- return request.param
- @pytest.fixture
- def pairwise_target_frame():
- """Pairwise target frame for test_pairwise"""
- return DataFrame([[2, 4], [1, 2], [5, 2], [8, 1]], columns=[0, 1])
- @pytest.fixture
- def pairwise_other_frame():
- """Pairwise other frame for test_pairwise"""
- return DataFrame(
- [[None, 1, 1], [None, 1, 2], [None, 3, 2], [None, 8, 1]],
- columns=["Y", "Z", "X"],
- )
|