dycw-utilities 0.159.0__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.159.0 → dycw_utilities-0.159.1}/PKG-INFO +1 -1
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/pyproject.toml +3 -3
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_polars.py +33 -9
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/polars.py +64 -26
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pytest_regressions.py +1 -3
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/.gitignore +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/LICENSE +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/README.md +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_gzip.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_json.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_postgres.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_pytest_randomly.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/click.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/gzip.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/http.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/json.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/math.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/os.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/postgres.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pytest_plugins/__init__.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/random.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/re.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/string.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/text.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/types.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/version.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/zoneinfo.py +0 -0
@@ -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.159.
|
230
|
+
version = "0.159.1"
|
231
231
|
|
232
232
|
[project.entry-points.pytest11]
|
233
233
|
pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
|
@@ -259,7 +259,7 @@ test = [
|
|
259
259
|
# bump-my-version
|
260
260
|
[tool.bumpversion]
|
261
261
|
allow_dirty = true
|
262
|
-
current_version = "0.159.
|
262
|
+
current_version = "0.159.1"
|
263
263
|
|
264
264
|
[[tool.bumpversion.files]]
|
265
265
|
filename = "src/utilities/__init__.py"
|
@@ -94,6 +94,8 @@ from utilities.polars import (
|
|
94
94
|
FiniteEWMMeanError,
|
95
95
|
InsertAfterError,
|
96
96
|
InsertBeforeError,
|
97
|
+
OneColumnEmptyError,
|
98
|
+
OneColumnNonUniqueError,
|
97
99
|
SetFirstRowAsColumnsError,
|
98
100
|
TimePeriodDType,
|
99
101
|
_check_polars_dataframe_predicates,
|
@@ -147,7 +149,6 @@ from utilities.polars import (
|
|
147
149
|
boolean_value_counts,
|
148
150
|
check_polars_dataframe,
|
149
151
|
choice,
|
150
|
-
collect_series,
|
151
152
|
columns_to_dict,
|
152
153
|
concat_series,
|
153
154
|
convert_time_zone,
|
@@ -161,6 +162,7 @@ from utilities.polars import (
|
|
161
162
|
ensure_data_type,
|
162
163
|
ensure_expr_or_series,
|
163
164
|
ensure_expr_or_series_many,
|
165
|
+
expr_to_series,
|
164
166
|
finite_ewm_mean,
|
165
167
|
get_data_type_or_series_time_zone,
|
166
168
|
get_expr_name,
|
@@ -180,6 +182,7 @@ from utilities.polars import (
|
|
180
182
|
nan_sum_cols,
|
181
183
|
normal,
|
182
184
|
offset_datetime,
|
185
|
+
one_column,
|
183
186
|
order_of_magnitude,
|
184
187
|
period_range,
|
185
188
|
read_dataframe,
|
@@ -827,14 +830,6 @@ class TestChoice:
|
|
827
830
|
assert series.is_in(list(elements)).all()
|
828
831
|
|
829
832
|
|
830
|
-
class TestCollectSeries:
|
831
|
-
def test_main(self) -> None:
|
832
|
-
expr = int_range(end=10)
|
833
|
-
series = collect_series(expr)
|
834
|
-
expected = int_range(end=10, eager=True)
|
835
|
-
assert_series_equal(series, expected)
|
836
|
-
|
837
|
-
|
838
833
|
class TestColumnsToDict:
|
839
834
|
def test_main(self) -> None:
|
840
835
|
df = DataFrame(
|
@@ -1470,6 +1465,14 @@ class TestEnsureExprOrSeriesMany:
|
|
1470
1465
|
assert isinstance(r, Expr | Series)
|
1471
1466
|
|
1472
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
|
+
|
1473
1476
|
class TestFiniteEWMMean:
|
1474
1477
|
alpha_0_75_values: ClassVar[list[float]] = [
|
1475
1478
|
-8.269850726503885,
|
@@ -2239,6 +2242,27 @@ class TestOffsetDateTime:
|
|
2239
2242
|
assert result == expected
|
2240
2243
|
|
2241
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
|
+
|
2242
2266
|
class TestOrderOfMagnitude:
|
2243
2267
|
@given(
|
2244
2268
|
sign=sampled_from([1, -1]),
|
@@ -42,9 +42,9 @@ from polars import (
|
|
42
42
|
from polars._typing import PolarsDataType
|
43
43
|
from polars.datatypes import DataType, DataTypeClass
|
44
44
|
from polars.exceptions import (
|
45
|
-
ColumnNotFoundError,
|
45
|
+
ColumnNotFoundError,
|
46
46
|
NoRowsReturnedError,
|
47
|
-
OutOfBoundsError,
|
47
|
+
OutOfBoundsError,
|
48
48
|
PolarsInefficientMapWarning,
|
49
49
|
)
|
50
50
|
from polars.schema import Schema
|
@@ -337,8 +337,8 @@ def are_frames_equal(
|
|
337
337
|
check_column_order: bool = True,
|
338
338
|
check_dtypes: bool = True,
|
339
339
|
check_exact: bool = False,
|
340
|
-
|
341
|
-
|
340
|
+
rel_tol: float = 1e-5,
|
341
|
+
abs_tol: float = 1e-8,
|
342
342
|
categorical_as_str: bool = False,
|
343
343
|
) -> bool:
|
344
344
|
"""Check if two DataFrames are equal."""
|
@@ -350,8 +350,8 @@ def are_frames_equal(
|
|
350
350
|
check_column_order=check_column_order,
|
351
351
|
check_dtypes=check_dtypes,
|
352
352
|
check_exact=check_exact,
|
353
|
-
|
354
|
-
|
353
|
+
rel_tol=rel_tol,
|
354
|
+
abs_tol=abs_tol,
|
355
355
|
categorical_as_str=categorical_as_str,
|
356
356
|
)
|
357
357
|
except AssertionError:
|
@@ -783,15 +783,6 @@ def choice(
|
|
783
783
|
##
|
784
784
|
|
785
785
|
|
786
|
-
def collect_series(expr: Expr, /) -> Series:
|
787
|
-
"""Collect a column expression into a Series."""
|
788
|
-
data = DataFrame().with_columns(expr)
|
789
|
-
return data[one(data.columns)]
|
790
|
-
|
791
|
-
|
792
|
-
##
|
793
|
-
|
794
|
-
|
795
786
|
def columns_to_dict(df: DataFrame, key: str, value: str, /) -> dict[Any, Any]:
|
796
787
|
"""Map a pair of columns into a dictionary. Must be unique on `key`."""
|
797
788
|
col_key = df[key]
|
@@ -1044,7 +1035,9 @@ def _dataclass_to_dataframe_cast(series: Series, /) -> Series:
|
|
1044
1035
|
is_path = series.map_elements(make_isinstance(Path), return_dtype=Boolean).all()
|
1045
1036
|
is_uuid = series.map_elements(make_isinstance(UUID), return_dtype=Boolean).all()
|
1046
1037
|
if is_path or is_uuid:
|
1047
|
-
with suppress_warnings(
|
1038
|
+
with suppress_warnings(
|
1039
|
+
category=cast("type[Warning]", PolarsInefficientMapWarning)
|
1040
|
+
):
|
1048
1041
|
return series.map_elements(str, return_dtype=String)
|
1049
1042
|
if series.map_elements(make_isinstance(whenever.Time), return_dtype=Boolean).all():
|
1050
1043
|
return series.map_elements(lambda x: x.py_time(), return_dtype=pl.Time)
|
@@ -1219,6 +1212,14 @@ def ensure_expr_or_series_many(
|
|
1219
1212
|
##
|
1220
1213
|
|
1221
1214
|
|
1215
|
+
def expr_to_series(expr: Expr, /) -> Series:
|
1216
|
+
"""Collect a column expression into a Series."""
|
1217
|
+
return one_column(DataFrame().with_columns(expr))
|
1218
|
+
|
1219
|
+
|
1220
|
+
##
|
1221
|
+
|
1222
|
+
|
1222
1223
|
@overload
|
1223
1224
|
def finite_ewm_mean(
|
1224
1225
|
column: ExprLike,
|
@@ -1393,8 +1394,7 @@ def get_expr_name(obj: Series | DataFrame, expr: IntoExprColumn, /) -> str:
|
|
1393
1394
|
case Series() as series:
|
1394
1395
|
return get_expr_name(series.to_frame(), expr)
|
1395
1396
|
case DataFrame() as df:
|
1396
|
-
|
1397
|
-
return one(selected.columns)
|
1397
|
+
return one_column(df.select(expr)).name
|
1398
1398
|
case never:
|
1399
1399
|
assert_never(never)
|
1400
1400
|
|
@@ -1989,6 +1989,43 @@ def offset_datetime(
|
|
1989
1989
|
##
|
1990
1990
|
|
1991
1991
|
|
1992
|
+
def one_column(df: DataFrame, /) -> Series:
|
1993
|
+
"""Return the unique column in a DataFrame."""
|
1994
|
+
try:
|
1995
|
+
return df[one(df.columns)]
|
1996
|
+
except OneEmptyError:
|
1997
|
+
raise OneColumnEmptyError(df=df) from None
|
1998
|
+
except OneNonUniqueError as error:
|
1999
|
+
raise OneColumnNonUniqueError(
|
2000
|
+
df=df, first=error.first, second=error.second
|
2001
|
+
) from None
|
2002
|
+
|
2003
|
+
|
2004
|
+
@dataclass(kw_only=True, slots=True)
|
2005
|
+
class OneColumnError(Exception):
|
2006
|
+
df: DataFrame
|
2007
|
+
|
2008
|
+
|
2009
|
+
@dataclass(kw_only=True, slots=True)
|
2010
|
+
class OneColumnEmptyError(OneColumnError):
|
2011
|
+
@override
|
2012
|
+
def __str__(self) -> str:
|
2013
|
+
return "DataFrame must not be empty"
|
2014
|
+
|
2015
|
+
|
2016
|
+
@dataclass(kw_only=True, slots=True)
|
2017
|
+
class OneColumnNonUniqueError(OneColumnError):
|
2018
|
+
first: str
|
2019
|
+
second: str
|
2020
|
+
|
2021
|
+
@override
|
2022
|
+
def __str__(self) -> str:
|
2023
|
+
return f"DataFrame must contain exactly one column; got {self.first!r}, {self.second!r} and perhaps more"
|
2024
|
+
|
2025
|
+
|
2026
|
+
##
|
2027
|
+
|
2028
|
+
|
1992
2029
|
@overload
|
1993
2030
|
def order_of_magnitude(column: ExprLike, /, *, round_: bool = False) -> Expr: ...
|
1994
2031
|
@overload
|
@@ -2110,13 +2147,10 @@ def reify_exprs(
|
|
2110
2147
|
.with_columns(*all_exprs)
|
2111
2148
|
.drop("_index")
|
2112
2149
|
)
|
2113
|
-
|
2114
|
-
|
2115
|
-
|
2116
|
-
|
2117
|
-
return df[one(df.columns)]
|
2118
|
-
case _:
|
2119
|
-
return df
|
2150
|
+
try:
|
2151
|
+
return one_column(df)
|
2152
|
+
except OneColumnNonUniqueError:
|
2153
|
+
return df
|
2120
2154
|
|
2121
2155
|
|
2122
2156
|
@dataclass(kw_only=True, slots=True)
|
@@ -2519,6 +2553,9 @@ __all__ = [
|
|
2519
2553
|
"InsertBeforeError",
|
2520
2554
|
"InsertBetweenError",
|
2521
2555
|
"IsNearEventError",
|
2556
|
+
"OneColumnEmptyError",
|
2557
|
+
"OneColumnError",
|
2558
|
+
"OneColumnNonUniqueError",
|
2522
2559
|
"SetFirstRowAsColumnsError",
|
2523
2560
|
"TimePeriodDType",
|
2524
2561
|
"acf",
|
@@ -2533,7 +2570,6 @@ __all__ = [
|
|
2533
2570
|
"boolean_value_counts",
|
2534
2571
|
"check_polars_dataframe",
|
2535
2572
|
"choice",
|
2536
|
-
"collect_series",
|
2537
2573
|
"columns_to_dict",
|
2538
2574
|
"concat_series",
|
2539
2575
|
"convert_time_zone",
|
@@ -2545,6 +2581,7 @@ __all__ = [
|
|
2545
2581
|
"ensure_data_type",
|
2546
2582
|
"ensure_expr_or_series",
|
2547
2583
|
"ensure_expr_or_series_many",
|
2584
|
+
"expr_to_series",
|
2548
2585
|
"finite_ewm_mean",
|
2549
2586
|
"get_data_type_or_series_time_zone",
|
2550
2587
|
"get_expr_name",
|
@@ -2565,6 +2602,7 @@ __all__ = [
|
|
2565
2602
|
"nan_sum_cols",
|
2566
2603
|
"normal",
|
2567
2604
|
"offset_datetime",
|
2605
|
+
"one_column",
|
2568
2606
|
"order_of_magnitude",
|
2569
2607
|
"period_range",
|
2570
2608
|
"read_dataframe",
|
@@ -91,9 +91,7 @@ class PolarsRegressionFixture:
|
|
91
91
|
def check(self, obj: Series | DataFrame, /, *, suffix: str | None = None) -> None:
|
92
92
|
"""Check the Series/DataFrame summary against the baseline."""
|
93
93
|
from polars import DataFrame, Series, col
|
94
|
-
from polars.exceptions import
|
95
|
-
InvalidOperationError, # pyright: ignore[reportAttributeAccessIssue]
|
96
|
-
)
|
94
|
+
from polars.exceptions import InvalidOperationError
|
97
95
|
|
98
96
|
data: StrMapping = {
|
99
97
|
"describe": obj.describe(percentiles=[i / 10 for i in range(1, 10)]).rows(
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/modules/package_without/module_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/tests/test_typing_funcs/with_future.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pytest_plugins/pytest_randomly.py
RENAMED
File without changes
|
{dycw_utilities-0.159.0 → dycw_utilities-0.159.1}/src/utilities/pytest_plugins/pytest_regressions.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|