mirror of
https://github.com/kristoferssolo/School.git
synced 2025-10-21 20:10:38 +00:00
234 lines
5.3 KiB
Python
234 lines
5.3 KiB
Python
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"],
|
|
)
|