dycw-utilities 0.158.2__tar.gz → 0.159.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/PKG-INFO +2 -2
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/pyproject.toml +5 -5
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_polars.py +132 -220
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/polars.py +130 -179
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/pytest_regressions.py +1 -3
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/.gitignore +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/LICENSE +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/README.md +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_gzip.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_json.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_postgres.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_pytest_randomly.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/click.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/gzip.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/http.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/json.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/math.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/os.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/postgres.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/pytest_plugins/__init__.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/random.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/re.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/string.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/text.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/types.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/version.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.158.2 → dycw_utilities-0.159.1}/src/utilities/zoneinfo.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dycw-utilities
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.159.1
|
4
4
|
Author-email: Derek Wan <d.wan@icloud.com>
|
5
5
|
License-File: LICENSE
|
6
6
|
Requires-Python: >=3.12
|
@@ -12,7 +12,7 @@ Provides-Extra: logging
|
|
12
12
|
Requires-Dist: coloredlogs<15.1,>=15.0.1; extra == 'logging'
|
13
13
|
Provides-Extra: test
|
14
14
|
Requires-Dist: dycw-pytest-only<2.2,>=2.1.1; extra == 'test'
|
15
|
-
Requires-Dist: hypothesis<6.
|
15
|
+
Requires-Dist: hypothesis<6.139,>=6.138.0; extra == 'test'
|
16
16
|
Requires-Dist: pytest-asyncio<1.2,>=1.1.0; extra == 'test'
|
17
17
|
Requires-Dist: pytest-cov<6.3,>=6.2.1; extra == 'test'
|
18
18
|
Requires-Dist: pytest-instafail<0.6,>=0.5.0; extra == 'test'
|
@@ -68,7 +68,7 @@ http-test = [
|
|
68
68
|
"orjson",
|
69
69
|
]
|
70
70
|
hypothesis = [
|
71
|
-
"hypothesis >=6.
|
71
|
+
"hypothesis >=6.138.0, <6.139",
|
72
72
|
]
|
73
73
|
hypothesis-test = [
|
74
74
|
"libcst",
|
@@ -118,7 +118,7 @@ orjson-test = [
|
|
118
118
|
"polars",
|
119
119
|
]
|
120
120
|
polars = [
|
121
|
-
"polars >=1.32.
|
121
|
+
"polars >=1.32.3, <1.33",
|
122
122
|
]
|
123
123
|
polars-ols = [
|
124
124
|
"polars-ols >=0.3.5, <0.4",
|
@@ -227,7 +227,7 @@ dependencies = [
|
|
227
227
|
name = "dycw-utilities"
|
228
228
|
readme = "README.md"
|
229
229
|
requires-python = ">= 3.12"
|
230
|
-
version = "0.
|
230
|
+
version = "0.159.1"
|
231
231
|
|
232
232
|
[project.entry-points.pytest11]
|
233
233
|
pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
|
@@ -239,7 +239,7 @@ logging = [
|
|
239
239
|
]
|
240
240
|
test = [
|
241
241
|
"dycw-pytest-only >=2.1.1, <2.2",
|
242
|
-
"hypothesis >=6.
|
242
|
+
"hypothesis >=6.138.0, <6.139",
|
243
243
|
"pytest >=8.4.1, <8.5",
|
244
244
|
"pytest-asyncio >=1.1.0, <1.2",
|
245
245
|
"pytest-cov >=6.2.1, <6.3",
|
@@ -259,7 +259,7 @@ test = [
|
|
259
259
|
# bump-my-version
|
260
260
|
[tool.bumpversion]
|
261
261
|
allow_dirty = true
|
262
|
-
current_version = "0.
|
262
|
+
current_version = "0.159.1"
|
263
263
|
|
264
264
|
[[tool.bumpversion.files]]
|
265
265
|
filename = "src/utilities/__init__.py"
|
@@ -8,7 +8,7 @@ from enum import auto
|
|
8
8
|
from itertools import chain, repeat
|
9
9
|
from math import isfinite, nan
|
10
10
|
from random import Random
|
11
|
-
from typing import TYPE_CHECKING, Any, ClassVar, Literal, assert_never
|
11
|
+
from typing import TYPE_CHECKING, Any, ClassVar, Literal, assert_never
|
12
12
|
from uuid import UUID, uuid4
|
13
13
|
|
14
14
|
import hypothesis.strategies
|
@@ -90,13 +90,12 @@ from utilities.polars import (
|
|
90
90
|
DatetimeUSCentral,
|
91
91
|
DatetimeUSEastern,
|
92
92
|
DatetimeUTC,
|
93
|
-
DropNullStructSeriesError,
|
94
93
|
ExprOrSeries,
|
95
94
|
FiniteEWMMeanError,
|
96
95
|
InsertAfterError,
|
97
96
|
InsertBeforeError,
|
98
|
-
|
99
|
-
|
97
|
+
OneColumnEmptyError,
|
98
|
+
OneColumnNonUniqueError,
|
100
99
|
SetFirstRowAsColumnsError,
|
101
100
|
TimePeriodDType,
|
102
101
|
_check_polars_dataframe_predicates,
|
@@ -137,8 +136,6 @@ from utilities.polars import (
|
|
137
136
|
_reconstruct_schema,
|
138
137
|
_ReifyExprsEmptyError,
|
139
138
|
_ReifyExprsSeriesNonUniqueError,
|
140
|
-
_StructFromDataClassNotADataclassError,
|
141
|
-
_StructFromDataClassTypeError,
|
142
139
|
ac_halflife,
|
143
140
|
acf,
|
144
141
|
adjust_frequencies,
|
@@ -152,7 +149,6 @@ from utilities.polars import (
|
|
152
149
|
boolean_value_counts,
|
153
150
|
check_polars_dataframe,
|
154
151
|
choice,
|
155
|
-
collect_series,
|
156
152
|
columns_to_dict,
|
157
153
|
concat_series,
|
158
154
|
convert_time_zone,
|
@@ -163,10 +159,10 @@ from utilities.polars import (
|
|
163
159
|
decreasing_horizontal,
|
164
160
|
deserialize_dataframe,
|
165
161
|
deserialize_series,
|
166
|
-
drop_null_struct_series,
|
167
162
|
ensure_data_type,
|
168
163
|
ensure_expr_or_series,
|
169
164
|
ensure_expr_or_series_many,
|
165
|
+
expr_to_series,
|
170
166
|
finite_ewm_mean,
|
171
167
|
get_data_type_or_series_time_zone,
|
172
168
|
get_expr_name,
|
@@ -176,9 +172,9 @@ from utilities.polars import (
|
|
176
172
|
insert_after,
|
177
173
|
insert_before,
|
178
174
|
insert_between,
|
175
|
+
is_false,
|
179
176
|
is_near_event,
|
180
|
-
|
181
|
-
is_null_struct_series,
|
177
|
+
is_true,
|
182
178
|
join,
|
183
179
|
join_into_periods,
|
184
180
|
map_over_columns,
|
@@ -186,6 +182,7 @@ from utilities.polars import (
|
|
186
182
|
nan_sum_cols,
|
187
183
|
normal,
|
188
184
|
offset_datetime,
|
185
|
+
one_column,
|
189
186
|
order_of_magnitude,
|
190
187
|
period_range,
|
191
188
|
read_dataframe,
|
@@ -197,7 +194,10 @@ from utilities.polars import (
|
|
197
194
|
serialize_series,
|
198
195
|
set_first_row_as_columns,
|
199
196
|
struct_dtype,
|
200
|
-
|
197
|
+
to_false,
|
198
|
+
to_not_false,
|
199
|
+
to_not_true,
|
200
|
+
to_true,
|
201
201
|
touch,
|
202
202
|
try_reify_expr,
|
203
203
|
uniform,
|
@@ -830,14 +830,6 @@ class TestChoice:
|
|
830
830
|
assert series.is_in(list(elements)).all()
|
831
831
|
|
832
832
|
|
833
|
-
class TestCollectSeries:
|
834
|
-
def test_main(self) -> None:
|
835
|
-
expr = int_range(end=10)
|
836
|
-
series = collect_series(expr)
|
837
|
-
expected = int_range(end=10, eager=True)
|
838
|
-
assert_series_equal(series, expected)
|
839
|
-
|
840
|
-
|
841
833
|
class TestColumnsToDict:
|
842
834
|
def test_main(self) -> None:
|
843
835
|
df = DataFrame(
|
@@ -1449,29 +1441,6 @@ class TestDatetimeDTypes:
|
|
1449
1441
|
assert name == expected
|
1450
1442
|
|
1451
1443
|
|
1452
|
-
class TestDropNullStructSeries:
|
1453
|
-
def test_main(self) -> None:
|
1454
|
-
series = Series(
|
1455
|
-
values=[
|
1456
|
-
{"a": None, "b": None},
|
1457
|
-
{"a": True, "b": None},
|
1458
|
-
{"a": None, "b": False},
|
1459
|
-
{"a": True, "b": False},
|
1460
|
-
],
|
1461
|
-
dtype=Struct({"a": Boolean, "b": Boolean}),
|
1462
|
-
)
|
1463
|
-
result = drop_null_struct_series(series)
|
1464
|
-
expected = series[1:]
|
1465
|
-
assert_series_equal(result, expected)
|
1466
|
-
|
1467
|
-
def test_error(self) -> None:
|
1468
|
-
series = Series(name="series", values=[1, 2, 3, None], dtype=Int64)
|
1469
|
-
with raises(
|
1470
|
-
DropNullStructSeriesError, match="Series must have Struct-dtype; got Int64"
|
1471
|
-
):
|
1472
|
-
_ = drop_null_struct_series(series)
|
1473
|
-
|
1474
|
-
|
1475
1444
|
class TestEnsureDataType:
|
1476
1445
|
@given(dtype=sampled_from([Boolean, Boolean()]))
|
1477
1446
|
def test_main(self, *, dtype: MaybeType[Boolean]) -> None:
|
@@ -1496,6 +1465,14 @@ class TestEnsureExprOrSeriesMany:
|
|
1496
1465
|
assert isinstance(r, Expr | Series)
|
1497
1466
|
|
1498
1467
|
|
1468
|
+
class TestExprToSeries:
|
1469
|
+
def test_main(self) -> None:
|
1470
|
+
expr = int_range(end=10)
|
1471
|
+
series = expr_to_series(expr)
|
1472
|
+
expected = int_range(end=10, eager=True)
|
1473
|
+
assert_series_equal(series, expected)
|
1474
|
+
|
1475
|
+
|
1499
1476
|
class TestFiniteEWMMean:
|
1500
1477
|
alpha_0_75_values: ClassVar[list[float]] = [
|
1501
1478
|
-8.269850726503885,
|
@@ -1930,68 +1907,20 @@ class TestIsNearEvent:
|
|
1930
1907
|
_ = is_near_event(after=after)
|
1931
1908
|
|
1932
1909
|
|
1933
|
-
class
|
1934
|
-
|
1935
|
-
|
1936
|
-
(is_null_struct_series, [True, False, False, False]),
|
1937
|
-
(is_not_null_struct_series, [False, True, True, True]),
|
1938
|
-
])
|
1910
|
+
class TestIsTrueAndFalse:
|
1911
|
+
series: ClassVar[Series] = Series(
|
1912
|
+
name="x", values=[True, False, None], dtype=Boolean
|
1939
1913
|
)
|
1940
|
-
def test_main(self, *, case: tuple[Callable[[Series], Series], list[bool]]) -> None:
|
1941
|
-
func, exp_values = case
|
1942
|
-
series = Series(
|
1943
|
-
values=[
|
1944
|
-
{"a": None, "b": None},
|
1945
|
-
{"a": True, "b": None},
|
1946
|
-
{"a": None, "b": False},
|
1947
|
-
{"a": True, "b": False},
|
1948
|
-
],
|
1949
|
-
dtype=Struct({"a": Boolean, "b": Boolean}),
|
1950
|
-
)
|
1951
|
-
result = func(series)
|
1952
|
-
expected = Series(values=exp_values, dtype=Boolean)
|
1953
|
-
assert_series_equal(result, expected)
|
1954
1914
|
|
1955
|
-
|
1956
|
-
|
1957
|
-
|
1958
|
-
(is_not_null_struct_series, [True, True, True, False]),
|
1959
|
-
])
|
1960
|
-
)
|
1961
|
-
def test_nested(
|
1962
|
-
self, *, case: tuple[Callable[[Series], Series], list[bool]]
|
1963
|
-
) -> None:
|
1964
|
-
func, exp_values = case
|
1965
|
-
series = Series(
|
1966
|
-
values=[
|
1967
|
-
{"a": 1, "b": 2, "inner": {"lower": 3, "upper": 4}},
|
1968
|
-
{"a": 1, "b": 2, "inner": None},
|
1969
|
-
{"a": None, "b": None, "inner": {"lower": 3, "upper": 4}},
|
1970
|
-
{"a": None, "b": None, "inner": None},
|
1971
|
-
],
|
1972
|
-
dtype=Struct({
|
1973
|
-
"a": Int64,
|
1974
|
-
"b": Int64,
|
1975
|
-
"inner": Struct({"lower": Int64, "upper": Int64}),
|
1976
|
-
}),
|
1977
|
-
)
|
1978
|
-
result = func(series)
|
1979
|
-
expected = Series(values=exp_values, dtype=Boolean)
|
1915
|
+
def test_true(self) -> None:
|
1916
|
+
result = is_true(self.series)
|
1917
|
+
expected = Series(name="x", values=[True, False, False], dtype=Boolean)
|
1980
1918
|
assert_series_equal(result, expected)
|
1981
1919
|
|
1982
|
-
|
1983
|
-
|
1984
|
-
|
1985
|
-
|
1986
|
-
])
|
1987
|
-
)
|
1988
|
-
def test_error(
|
1989
|
-
self, *, case: tuple[Callable[[Series], Series], type[Exception]]
|
1990
|
-
) -> None:
|
1991
|
-
func, error = case
|
1992
|
-
series = Series(name="series", values=[1, 2, 3, None], dtype=Int64)
|
1993
|
-
with raises(error, match="Series must have Struct-dtype; got Int64"):
|
1994
|
-
_ = func(series)
|
1920
|
+
def test_false(self) -> None:
|
1921
|
+
result = is_false(self.series)
|
1922
|
+
expected = Series(name="x", values=[False, True, False], dtype=Boolean)
|
1923
|
+
assert_series_equal(result, expected)
|
1995
1924
|
|
1996
1925
|
|
1997
1926
|
class TestJoin:
|
@@ -2313,6 +2242,27 @@ class TestOffsetDateTime:
|
|
2313
2242
|
assert result == expected
|
2314
2243
|
|
2315
2244
|
|
2245
|
+
class TestOneColumn:
|
2246
|
+
def test_main(self) -> None:
|
2247
|
+
series = int_range(end=10, eager=True).alias("x")
|
2248
|
+
df = series.to_frame()
|
2249
|
+
result = one_column(df)
|
2250
|
+
assert_series_equal(result, series)
|
2251
|
+
|
2252
|
+
def test_error_empty(self) -> None:
|
2253
|
+
with raises(OneColumnEmptyError, match="DataFrame must not be empty"):
|
2254
|
+
_ = one_column(DataFrame())
|
2255
|
+
|
2256
|
+
def test_error_non_unique(self) -> None:
|
2257
|
+
x, y = [int_range(end=10, eager=True).alias(name) for name in ["x", "y"]]
|
2258
|
+
df = concat_series(x, y)
|
2259
|
+
with raises(
|
2260
|
+
OneColumnNonUniqueError,
|
2261
|
+
match="DataFrame must contain exactly one column; got 'x', 'y' and perhaps more",
|
2262
|
+
):
|
2263
|
+
_ = one_column(df)
|
2264
|
+
|
2265
|
+
|
2316
2266
|
class TestOrderOfMagnitude:
|
2317
2267
|
@given(
|
2318
2268
|
sign=sampled_from([1, -1]),
|
@@ -2574,130 +2524,92 @@ class TestStructDType:
|
|
2574
2524
|
assert result == expected
|
2575
2525
|
|
2576
2526
|
|
2577
|
-
class
|
2578
|
-
|
2579
|
-
|
2580
|
-
|
2581
|
-
|
2582
|
-
|
2583
|
-
|
2584
|
-
|
2585
|
-
|
2586
|
-
|
2587
|
-
int_: int
|
2588
|
-
int_maybe: int | None = None
|
2589
|
-
str_: str
|
2590
|
-
str_maybe: str | None = None
|
2591
|
-
|
2592
|
-
result = struct_from_dataclass(Example, globalns=globals())
|
2593
|
-
expected = Struct({
|
2594
|
-
"bool_": Boolean,
|
2595
|
-
"bool_maybe": Boolean,
|
2596
|
-
"date": pl.Date,
|
2597
|
-
"date_maybe": pl.Date,
|
2598
|
-
"float_": Float64,
|
2599
|
-
"float_maybe": Float64,
|
2600
|
-
"int_": Int64,
|
2601
|
-
"int_maybe": Int64,
|
2602
|
-
"str_": String,
|
2603
|
-
"str_maybe": String,
|
2604
|
-
})
|
2605
|
-
assert result == expected
|
2527
|
+
class TestToTrueAndFalse:
|
2528
|
+
series_tt: ClassVar[Series] = Series(name="x", values=[True, True], dtype=Boolean)
|
2529
|
+
series_tf: ClassVar[Series] = Series(name="x", values=[True, False], dtype=Boolean)
|
2530
|
+
series_t0: ClassVar[Series] = Series(name="x", values=[True, None], dtype=Boolean)
|
2531
|
+
series_ft: ClassVar[Series] = Series(name="x", values=[False, True], dtype=Boolean)
|
2532
|
+
series_ff: ClassVar[Series] = Series(name="x", values=[False, False], dtype=Boolean)
|
2533
|
+
series_f0: ClassVar[Series] = Series(name="x", values=[False, None], dtype=Boolean)
|
2534
|
+
series_0t: ClassVar[Series] = Series(name="x", values=[None, True], dtype=Boolean)
|
2535
|
+
series_0f: ClassVar[Series] = Series(name="x", values=[None, False], dtype=Boolean)
|
2536
|
+
series_00: ClassVar[Series] = Series(name="x", values=[None, None], dtype=Boolean)
|
2606
2537
|
|
2607
|
-
|
2608
|
-
|
2609
|
-
|
2610
|
-
|
2611
|
-
|
2612
|
-
|
2613
|
-
|
2614
|
-
|
2615
|
-
|
2616
|
-
|
2617
|
-
|
2618
|
-
|
2619
|
-
|
2620
|
-
|
2621
|
-
|
2622
|
-
|
2623
|
-
|
2624
|
-
|
2625
|
-
field: LowOrHigh # pyright: ignore[reportInvalidTypeForm]
|
2626
|
-
|
2627
|
-
result = struct_from_dataclass(Example, localns=locals())
|
2628
|
-
expected = Struct({"field": String})
|
2629
|
-
assert result == expected
|
2630
|
-
|
2631
|
-
def test_containers(self) -> None:
|
2632
|
-
@dataclass(kw_only=True, slots=True)
|
2633
|
-
class Example:
|
2634
|
-
frozenset_: frozenset[int]
|
2635
|
-
list_: list[int]
|
2636
|
-
set_: set[int]
|
2637
|
-
|
2638
|
-
result = struct_from_dataclass(Example, time_zone=UTC)
|
2639
|
-
expected = Struct({
|
2640
|
-
"frozenset_": List(Int64),
|
2641
|
-
"list_": List(Int64),
|
2642
|
-
"set_": List(Int64),
|
2643
|
-
})
|
2644
|
-
assert result == expected
|
2645
|
-
|
2646
|
-
def test_list_of_struct(self) -> None:
|
2647
|
-
@dataclass(kw_only=True, slots=True)
|
2648
|
-
class Inner:
|
2649
|
-
field: int
|
2650
|
-
|
2651
|
-
@dataclass(kw_only=True, slots=True)
|
2652
|
-
class Outer:
|
2653
|
-
inner: list[Inner]
|
2654
|
-
|
2655
|
-
result = struct_from_dataclass(Outer, localns=locals(), time_zone=UTC)
|
2656
|
-
expected = Struct({"inner": List(Struct({"field": Int64}))})
|
2657
|
-
assert result == expected
|
2658
|
-
|
2659
|
-
def test_struct(self) -> None:
|
2660
|
-
@dataclass(kw_only=True, slots=True)
|
2661
|
-
class Inner:
|
2662
|
-
field: int
|
2663
|
-
|
2664
|
-
@dataclass(kw_only=True, slots=True)
|
2665
|
-
class Outer:
|
2666
|
-
inner: Inner
|
2667
|
-
|
2668
|
-
result = struct_from_dataclass(Outer, localns=locals(), time_zone=UTC)
|
2669
|
-
expected = Struct({"inner": Struct({"field": Int64})})
|
2670
|
-
assert result == expected
|
2671
|
-
|
2672
|
-
def test_struct_of_list(self) -> None:
|
2673
|
-
@dataclass(kw_only=True, slots=True)
|
2674
|
-
class Inner:
|
2675
|
-
field: list[int]
|
2676
|
-
|
2677
|
-
@dataclass(kw_only=True, slots=True)
|
2678
|
-
class Outer:
|
2679
|
-
inner: Inner
|
2680
|
-
|
2681
|
-
result = struct_from_dataclass(Outer, localns=locals(), time_zone=UTC)
|
2682
|
-
expected = Struct({"inner": Struct({"field": List(Int64)})})
|
2683
|
-
assert result == expected
|
2538
|
+
@mark.parametrize(
|
2539
|
+
("series", "exp_values"),
|
2540
|
+
[
|
2541
|
+
param(series_tt, [False, False]),
|
2542
|
+
param(series_tf, [False, False]),
|
2543
|
+
param(series_t0, [False, False]),
|
2544
|
+
param(series_ft, [False, True]),
|
2545
|
+
param(series_ff, [False, False]),
|
2546
|
+
param(series_f0, [False, False]),
|
2547
|
+
param(series_0t, [False, True]),
|
2548
|
+
param(series_0f, [False, False]),
|
2549
|
+
param(series_00, [False, False]),
|
2550
|
+
],
|
2551
|
+
)
|
2552
|
+
def test_to_true(self, *, series: Series, exp_values: list[bool]) -> None:
|
2553
|
+
result = to_true(series)
|
2554
|
+
exp_series = Series(name="x", values=exp_values, dtype=Boolean)
|
2555
|
+
assert_series_equal(result, exp_series)
|
2684
2556
|
|
2685
|
-
|
2686
|
-
|
2687
|
-
|
2688
|
-
|
2689
|
-
|
2690
|
-
|
2557
|
+
@mark.parametrize(
|
2558
|
+
("series", "exp_values"),
|
2559
|
+
[
|
2560
|
+
param(series_tt, [False, False]),
|
2561
|
+
param(series_tf, [False, True]),
|
2562
|
+
param(series_t0, [False, True]),
|
2563
|
+
param(series_ft, [False, False]),
|
2564
|
+
param(series_ff, [False, False]),
|
2565
|
+
param(series_f0, [False, False]),
|
2566
|
+
param(series_0t, [False, False]),
|
2567
|
+
param(series_0f, [False, False]),
|
2568
|
+
param(series_00, [False, False]),
|
2569
|
+
],
|
2570
|
+
)
|
2571
|
+
def test_to_not_true(self, *, series: Series, exp_values: list[bool]) -> None:
|
2572
|
+
result = to_not_true(series)
|
2573
|
+
exp_series = Series(name="x", values=exp_values, dtype=Boolean)
|
2574
|
+
assert_series_equal(result, exp_series)
|
2691
2575
|
|
2692
|
-
|
2693
|
-
|
2694
|
-
|
2695
|
-
|
2576
|
+
@mark.parametrize(
|
2577
|
+
("series", "exp_values"),
|
2578
|
+
[
|
2579
|
+
param(series_tt, [False, False]),
|
2580
|
+
param(series_tf, [False, True]),
|
2581
|
+
param(series_t0, [False, False]),
|
2582
|
+
param(series_ft, [False, False]),
|
2583
|
+
param(series_ff, [False, False]),
|
2584
|
+
param(series_f0, [False, False]),
|
2585
|
+
param(series_0t, [False, False]),
|
2586
|
+
param(series_0f, [False, True]),
|
2587
|
+
param(series_00, [False, False]),
|
2588
|
+
],
|
2589
|
+
)
|
2590
|
+
def test_to_false(self, *, series: Series, exp_values: list[bool]) -> None:
|
2591
|
+
result = to_false(series)
|
2592
|
+
exp_series = Series(name="x", values=exp_values, dtype=Boolean)
|
2593
|
+
assert_series_equal(result, exp_series)
|
2696
2594
|
|
2697
|
-
|
2698
|
-
|
2699
|
-
|
2700
|
-
|
2595
|
+
@mark.parametrize(
|
2596
|
+
("series", "exp_values"),
|
2597
|
+
[
|
2598
|
+
param(series_tt, [False, False]),
|
2599
|
+
param(series_tf, [False, False]),
|
2600
|
+
param(series_t0, [False, False]),
|
2601
|
+
param(series_ft, [False, True]),
|
2602
|
+
param(series_ff, [False, False]),
|
2603
|
+
param(series_f0, [False, True]),
|
2604
|
+
param(series_0t, [False, False]),
|
2605
|
+
param(series_0f, [False, False]),
|
2606
|
+
param(series_00, [False, False]),
|
2607
|
+
],
|
2608
|
+
)
|
2609
|
+
def test_to_not_false(self, *, series: Series, exp_values: list[bool]) -> None:
|
2610
|
+
result = to_not_false(series)
|
2611
|
+
exp_series = Series(name="x", values=exp_values, dtype=Boolean)
|
2612
|
+
assert_series_equal(result, exp_series)
|
2701
2613
|
|
2702
2614
|
|
2703
2615
|
class TestTryReifyExpr:
|