dycw-utilities 0.159.6__tar.gz → 0.159.8__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.6 → dycw_utilities-0.159.8}/PKG-INFO +1 -1
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/pyproject.toml +2 -2
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_polars.py +39 -3
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/polars.py +37 -2
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/.gitignore +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/LICENSE +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/README.md +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_gzip.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_json.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_postgres.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_pytest_randomly.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/click.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/gzip.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/http.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/json.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/math.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/os.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/postgres.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/pytest_plugins/__init__.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/random.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/re.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/string.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/text.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/types.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/version.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/utilities/zoneinfo.py +0 -0
@@ -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.8"
|
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.8"
|
263
263
|
|
264
264
|
[[tool.bumpversion.files]]
|
265
265
|
filename = "src/utilities/__init__.py"
|
@@ -98,6 +98,7 @@ from utilities.polars import (
|
|
98
98
|
OneColumnEmptyError,
|
99
99
|
OneColumnNonUniqueError,
|
100
100
|
RoundToFloatError,
|
101
|
+
SelectExactError,
|
101
102
|
SetFirstRowAsColumnsError,
|
102
103
|
TimePeriodDType,
|
103
104
|
_check_polars_dataframe_predicates,
|
@@ -191,6 +192,7 @@ from utilities.polars import (
|
|
191
192
|
reify_exprs,
|
192
193
|
replace_time_zone,
|
193
194
|
round_to_float,
|
195
|
+
select_exact,
|
194
196
|
serialize_dataframe,
|
195
197
|
serialize_series,
|
196
198
|
set_first_row_as_columns,
|
@@ -2442,11 +2444,12 @@ class TestRoundToFloat:
|
|
2442
2444
|
expected = Series(name="x", values=[1.2], dtype=Float64).to_frame()
|
2443
2445
|
assert_frame_equal(df, expected)
|
2444
2446
|
|
2445
|
-
|
2447
|
+
@mark.parametrize(("y_value", "expected"), [param(0.1, 1.2), param(None, None)])
|
2448
|
+
def test_series_and_expr(self, *, y_value: float, expected: float | None) -> None:
|
2446
2449
|
x = Series(name="x", values=[1.234], dtype=Float64)
|
2447
|
-
y = lit(
|
2450
|
+
y = lit(y_value, dtype=Float64).alias("y")
|
2448
2451
|
result = round_to_float(x, y)
|
2449
|
-
assert result.item() ==
|
2452
|
+
assert result.item() == expected
|
2450
2453
|
|
2451
2454
|
def test_expr_and_expr(self) -> None:
|
2452
2455
|
x = lit(1.234, dtype=Float64).alias("x")
|
@@ -2466,6 +2469,39 @@ class TestRoundToFloat:
|
|
2466
2469
|
_ = round_to_float(cast("Any", x), cast("Any", y))
|
2467
2470
|
|
2468
2471
|
|
2472
|
+
class TestSelectExact:
|
2473
|
+
df: ClassVar[DataFrame] = DataFrame(
|
2474
|
+
data=[(True, False), (False, None), (None, True)],
|
2475
|
+
schema={"x": Boolean, "y": Boolean},
|
2476
|
+
orient="row",
|
2477
|
+
)
|
2478
|
+
|
2479
|
+
def test_adding_and_reordering(self) -> None:
|
2480
|
+
df = select_exact(self.df, "y", ~col.x.alias("z"), "x")
|
2481
|
+
expected = DataFrame(
|
2482
|
+
data=[(False, False, True), (None, True, False), (True, None, None)],
|
2483
|
+
schema={"y": Boolean, "z": Boolean, "x": Boolean},
|
2484
|
+
orient="row",
|
2485
|
+
)
|
2486
|
+
assert_frame_equal(df, expected)
|
2487
|
+
|
2488
|
+
def test_adding_and_dropping(self) -> None:
|
2489
|
+
df = select_exact(self.df, "y", ~col.x.alias("z"), drop="x")
|
2490
|
+
expected = DataFrame(
|
2491
|
+
data=[(False, False), (None, True), (True, None)],
|
2492
|
+
schema={"y": Boolean, "z": Boolean},
|
2493
|
+
orient="row",
|
2494
|
+
)
|
2495
|
+
assert_frame_equal(df, expected)
|
2496
|
+
|
2497
|
+
def test_error(self) -> None:
|
2498
|
+
with raises(
|
2499
|
+
SelectExactError,
|
2500
|
+
match=r"All columns must be selected; got \['y'\] remaining",
|
2501
|
+
):
|
2502
|
+
_ = select_exact(self.df, ~col.x.alias("z"), "x")
|
2503
|
+
|
2504
|
+
|
2469
2505
|
class TestSerializeAndDeserializeDataFrame:
|
2470
2506
|
cases: ClassVar[list[tuple[PolarsDataType, SearchStrategy[Any]]]] = [
|
2471
2507
|
(Boolean, booleans()),
|
@@ -2421,8 +2421,16 @@ def round_to_float(
|
|
2421
2421
|
|
2422
2422
|
|
2423
2423
|
def _round_to_float_one(df: DataFrame, /) -> DataFrame:
|
2424
|
-
decimals: int = df["_decimals"].unique().item()
|
2425
|
-
|
2424
|
+
decimals: int | None = df["_decimals"].unique().item()
|
2425
|
+
name = df.columns[1]
|
2426
|
+
match decimals:
|
2427
|
+
case int():
|
2428
|
+
expr = col(name).round(decimals=decimals)
|
2429
|
+
case None:
|
2430
|
+
expr = lit(None, dtype=Float64).alias(name)
|
2431
|
+
case never:
|
2432
|
+
assert_never(never)
|
2433
|
+
return df.with_columns(expr)
|
2426
2434
|
|
2427
2435
|
|
2428
2436
|
@dataclass(kw_only=True, slots=True)
|
@@ -2438,6 +2446,31 @@ class RoundToFloatError(Exception):
|
|
2438
2446
|
##
|
2439
2447
|
|
2440
2448
|
|
2449
|
+
def select_exact(
|
2450
|
+
df: DataFrame, /, *columns: IntoExprColumn, drop: MaybeIterable[str] | None = None
|
2451
|
+
) -> DataFrame:
|
2452
|
+
"""Select an exact set of columns from a DataFrame."""
|
2453
|
+
names = [get_expr_name(df, c) for c in columns]
|
2454
|
+
drop = set() if drop is None else set(always_iterable(drop))
|
2455
|
+
union = set(names) | drop
|
2456
|
+
extra = [c for c in df.columns if c not in union]
|
2457
|
+
if len(extra) >= 1:
|
2458
|
+
raise SelectExactError(columns=extra)
|
2459
|
+
return df.select(*columns)
|
2460
|
+
|
2461
|
+
|
2462
|
+
@dataclass(kw_only=True, slots=True)
|
2463
|
+
class SelectExactError(Exception):
|
2464
|
+
columns: list[str]
|
2465
|
+
|
2466
|
+
@override
|
2467
|
+
def __str__(self) -> str:
|
2468
|
+
return f"All columns must be selected; got {get_repr(self.columns)} remaining"
|
2469
|
+
|
2470
|
+
|
2471
|
+
##
|
2472
|
+
|
2473
|
+
|
2441
2474
|
def set_first_row_as_columns(df: DataFrame, /) -> DataFrame:
|
2442
2475
|
"""Set the first row of a DataFrame as its columns."""
|
2443
2476
|
try:
|
@@ -2646,6 +2679,7 @@ __all__ = [
|
|
2646
2679
|
"OneColumnError",
|
2647
2680
|
"OneColumnNonUniqueError",
|
2648
2681
|
"RoundToFloatError",
|
2682
|
+
"SelectExactError",
|
2649
2683
|
"SetFirstRowAsColumnsError",
|
2650
2684
|
"TimePeriodDType",
|
2651
2685
|
"acf",
|
@@ -2701,6 +2735,7 @@ __all__ = [
|
|
2701
2735
|
"read_series",
|
2702
2736
|
"replace_time_zone",
|
2703
2737
|
"round_to_float",
|
2738
|
+
"select_exact",
|
2704
2739
|
"serialize_dataframe",
|
2705
2740
|
"set_first_row_as_columns",
|
2706
2741
|
"struct_dtype",
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/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.6 → dycw_utilities-0.159.8}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/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.6 → dycw_utilities-0.159.8}/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.6 → dycw_utilities-0.159.8}/src/utilities/pytest_plugins/pytest_randomly.py
RENAMED
File without changes
|
{dycw_utilities-0.159.6 → dycw_utilities-0.159.8}/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
|
File without changes
|