""" common utilities """ | |
from __future__ import annotations | |
from typing import ( | |
Any, | |
Literal, | |
) | |
def _mklbl(prefix: str, n: int): | |
return [f"{prefix}{i}" for i in range(n)] | |
def check_indexing_smoketest_or_raises( | |
obj, | |
method: Literal["iloc", "loc"], | |
key: Any, | |
axes: Literal[0, 1] | None = None, | |
fails=None, | |
) -> None: | |
if axes is None: | |
axes_list = [0, 1] | |
else: | |
assert axes in [0, 1] | |
axes_list = [axes] | |
for ax in axes_list: | |
if ax < obj.ndim: | |
# create a tuple accessor | |
new_axes = [slice(None)] * obj.ndim | |
new_axes[ax] = key | |
axified = tuple(new_axes) | |
try: | |
getattr(obj, method).__getitem__(axified) | |
except (IndexError, TypeError, KeyError) as detail: | |
# if we are in fails, the ok, otherwise raise it | |
if fails is not None: | |
if isinstance(detail, fails): | |
return | |
raise | |