|
import pytest |
|
|
|
from pandas import Series |
|
from pandas.core.strings.accessor import StringMethods |
|
|
|
_any_string_method = [ |
|
("cat", (), {"sep": ","}), |
|
("cat", (Series(list("zyx")),), {"sep": ",", "join": "left"}), |
|
("center", (10,), {}), |
|
("contains", ("a",), {}), |
|
("count", ("a",), {}), |
|
("decode", ("UTF-8",), {}), |
|
("encode", ("UTF-8",), {}), |
|
("endswith", ("a",), {}), |
|
("endswith", ((),), {}), |
|
("endswith", (("a",),), {}), |
|
("endswith", (("a", "b"),), {}), |
|
("endswith", (("a", "MISSING"),), {}), |
|
("endswith", ("a",), {"na": True}), |
|
("endswith", ("a",), {"na": False}), |
|
("extract", ("([a-z]*)",), {"expand": False}), |
|
("extract", ("([a-z]*)",), {"expand": True}), |
|
("extractall", ("([a-z]*)",), {}), |
|
("find", ("a",), {}), |
|
("findall", ("a",), {}), |
|
("get", (0,), {}), |
|
|
|
|
|
("index", ("",), {}), |
|
("join", (",",), {}), |
|
("ljust", (10,), {}), |
|
("match", ("a",), {}), |
|
("fullmatch", ("a",), {}), |
|
("normalize", ("NFC",), {}), |
|
("pad", (10,), {}), |
|
("partition", (" ",), {"expand": False}), |
|
("partition", (" ",), {"expand": True}), |
|
("repeat", (3,), {}), |
|
("replace", ("a", "z"), {}), |
|
("rfind", ("a",), {}), |
|
("rindex", ("",), {}), |
|
("rjust", (10,), {}), |
|
("rpartition", (" ",), {"expand": False}), |
|
("rpartition", (" ",), {"expand": True}), |
|
("slice", (0, 1), {}), |
|
("slice_replace", (0, 1, "z"), {}), |
|
("split", (" ",), {"expand": False}), |
|
("split", (" ",), {"expand": True}), |
|
("startswith", ("a",), {}), |
|
("startswith", (("a",),), {}), |
|
("startswith", (("a", "b"),), {}), |
|
("startswith", (("a", "MISSING"),), {}), |
|
("startswith", ((),), {}), |
|
("startswith", ("a",), {"na": True}), |
|
("startswith", ("a",), {"na": False}), |
|
("removeprefix", ("a",), {}), |
|
("removesuffix", ("a",), {}), |
|
|
|
("translate", ({97: 100},), {}), |
|
("wrap", (2,), {}), |
|
("zfill", (10,), {}), |
|
] + list( |
|
zip( |
|
[ |
|
|
|
"capitalize", |
|
"cat", |
|
"get_dummies", |
|
"isalnum", |
|
"isalpha", |
|
"isdecimal", |
|
"isdigit", |
|
"islower", |
|
"isnumeric", |
|
"isspace", |
|
"istitle", |
|
"isupper", |
|
"len", |
|
"lower", |
|
"lstrip", |
|
"partition", |
|
"rpartition", |
|
"rsplit", |
|
"rstrip", |
|
"slice", |
|
"slice_replace", |
|
"split", |
|
"strip", |
|
"swapcase", |
|
"title", |
|
"upper", |
|
"casefold", |
|
], |
|
[()] * 100, |
|
[{}] * 100, |
|
) |
|
) |
|
ids, _, _ = zip(*_any_string_method) |
|
missing_methods = {f for f in dir(StringMethods) if not f.startswith("_")} - set(ids) |
|
|
|
|
|
assert not missing_methods |
|
|
|
|
|
@pytest.fixture(params=_any_string_method, ids=ids) |
|
def any_string_method(request): |
|
""" |
|
Fixture for all public methods of `StringMethods` |
|
|
|
This fixture returns a tuple of the method name and sample arguments |
|
necessary to call the method. |
|
|
|
Returns |
|
------- |
|
method_name : str |
|
The name of the method in `StringMethods` |
|
args : tuple |
|
Sample values for the positional arguments |
|
kwargs : dict |
|
Sample values for the keyword arguments |
|
|
|
Examples |
|
-------- |
|
>>> def test_something(any_string_method): |
|
... s = Series(['a', 'b', np.nan, 'd']) |
|
... |
|
... method_name, args, kwargs = any_string_method |
|
... method = getattr(s.str, method_name) |
|
... # will not raise |
|
... method(*args, **kwargs) |
|
""" |
|
return request.param |
|
|