dycw-utilities 0.138.11__tar.gz → 0.138.13__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.138.11 → dycw_utilities-0.138.13}/PKG-INFO +2 -2
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/pyproject.toml +5 -5
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_polars.py +27 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_whenever.py +20 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/polars.py +21 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/whenever.py +22 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/.gitignore +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/LICENSE +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/README.md +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/click.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/http.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/math.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/os.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/period.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/pytest_regressions_plugin.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/random.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/re.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/string.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/text.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/types.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/version.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/utilities/zoneinfo.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dycw-utilities
|
3
|
-
Version: 0.138.
|
3
|
+
Version: 0.138.13
|
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.136,>=6.135.
|
15
|
+
Requires-Dist: hypothesis<6.136,>=6.135.16; extra == 'test'
|
16
16
|
Requires-Dist: pudb<2025.2,>=2025.1; extra == 'test'
|
17
17
|
Requires-Dist: pytest-asyncio<1.1,>=1.0.0; extra == 'test'
|
18
18
|
Requires-Dist: pytest-cov<6.2,>=6.1.1; extra == 'test'
|
@@ -36,12 +36,12 @@ dev = [
|
|
36
36
|
"pytest-timeout >= 2.4.0, < 2.5",
|
37
37
|
]
|
38
38
|
eventkit = ["eventkit >= 1.0.3, < 1.1"]
|
39
|
-
fastapi = ["fastapi >= 0.115.
|
39
|
+
fastapi = ["fastapi >= 0.115.14, < 0.116"]
|
40
40
|
fastapi-test = ["httpx", "uvicorn"]
|
41
41
|
fpdf2 = ["fpdf2 >= 2.8.3, < 2.9"]
|
42
42
|
hashlib-test = ["orjson"]
|
43
43
|
http-test = ["orjson"]
|
44
|
-
hypothesis = ["hypothesis >= 6.135.
|
44
|
+
hypothesis = ["hypothesis >= 6.135.16, < 6.136"]
|
45
45
|
hypothesis-test = ["libcst", "luigi", "pathvalidate", "numpy", "pytest-rerunfailures"]
|
46
46
|
inflect = ["inflect >= 7.5.0, < 7.6"]
|
47
47
|
jupyter-test = ["pandas", "polars"]
|
@@ -106,7 +106,7 @@ dependencies = [
|
|
106
106
|
name = "dycw-utilities"
|
107
107
|
readme = "README.md"
|
108
108
|
requires-python = ">= 3.12"
|
109
|
-
version = "0.138.
|
109
|
+
version = "0.138.13"
|
110
110
|
|
111
111
|
[project.entry-points.pytest11]
|
112
112
|
pytest-regressions = "utilities.pytest_regressions_plugin"
|
@@ -117,7 +117,7 @@ logging = [
|
|
117
117
|
]
|
118
118
|
test = [
|
119
119
|
"dycw-pytest-only >= 2.1.1, < 2.2",
|
120
|
-
"hypothesis >= 6.135.
|
120
|
+
"hypothesis >= 6.135.16, < 6.136",
|
121
121
|
"pudb >= 2025.1, < 2025.2",
|
122
122
|
"pytest >= 8.3.5, < 8.4",
|
123
123
|
"pytest-asyncio >= 1.0.0, < 1.1",
|
@@ -137,7 +137,7 @@ test = [
|
|
137
137
|
# bump-my-version
|
138
138
|
[tool.bumpversion]
|
139
139
|
allow_dirty = true
|
140
|
-
current_version = "0.138.
|
140
|
+
current_version = "0.138.13"
|
141
141
|
|
142
142
|
[[tool.bumpversion.files]]
|
143
143
|
filename = "src/utilities/__init__.py"
|
@@ -153,6 +153,7 @@ from utilities.polars import (
|
|
153
153
|
nan_sum_agg,
|
154
154
|
nan_sum_cols,
|
155
155
|
normal,
|
156
|
+
order_of_magnitude,
|
156
157
|
reify_exprs,
|
157
158
|
replace_time_zone,
|
158
159
|
set_first_row_as_columns,
|
@@ -1990,6 +1991,32 @@ class TestNormal:
|
|
1990
1991
|
assert series.is_finite().all()
|
1991
1992
|
|
1992
1993
|
|
1994
|
+
class TestOrderOfMagnitude:
|
1995
|
+
@given(
|
1996
|
+
sign=sampled_from([1, -1]),
|
1997
|
+
case=sampled_from([
|
1998
|
+
(0.25, -0.60206, -1),
|
1999
|
+
(0.5, -0.30103, 0),
|
2000
|
+
(0.75, -0.1249387, 0),
|
2001
|
+
(1.0, 0.0, 0),
|
2002
|
+
(5.0, 0.69897, 1),
|
2003
|
+
(10.0, 1.0, 1),
|
2004
|
+
(50.0, 1.69897, 2),
|
2005
|
+
(100.0, 2.0, 2),
|
2006
|
+
]),
|
2007
|
+
)
|
2008
|
+
def test_main(self, *, sign: int, case: tuple[float, float, int]) -> None:
|
2009
|
+
x, exp_float, exp_int = case
|
2010
|
+
x_use = Series(values=[sign * x])
|
2011
|
+
res_float = order_of_magnitude(x_use)
|
2012
|
+
assert res_float.dtype == Float64
|
2013
|
+
assert_series_equal(res_float, Series([exp_float]))
|
2014
|
+
res_int = order_of_magnitude(x_use, round_=True)
|
2015
|
+
assert res_int.dtype == Int64
|
2016
|
+
assert_series_equal(res_int, Series([exp_int]))
|
2017
|
+
assert (res_int == exp_int).all()
|
2018
|
+
|
2019
|
+
|
1993
2020
|
class TestReifyExprs:
|
1994
2021
|
@given(length=hypothesis.strategies.integers(0, 10), name=text_ascii())
|
1995
2022
|
def test_one_expr(self, *, length: int, name: str) -> None:
|
@@ -64,6 +64,7 @@ from utilities.whenever import (
|
|
64
64
|
MeanDateTimeError,
|
65
65
|
MinMaxDateError,
|
66
66
|
ToDaysError,
|
67
|
+
ToMonthsError,
|
67
68
|
ToNanosError,
|
68
69
|
ToPyTimeDeltaError,
|
69
70
|
WheneverLogRecord,
|
@@ -88,6 +89,7 @@ from utilities.whenever import (
|
|
88
89
|
to_date_time_delta,
|
89
90
|
to_days,
|
90
91
|
to_local_plain,
|
92
|
+
to_months,
|
91
93
|
to_nanos,
|
92
94
|
to_py_time_delta,
|
93
95
|
to_time_delta,
|
@@ -523,6 +525,24 @@ class TestToLocalPlain:
|
|
523
525
|
assert isinstance(result, PlainDateTime)
|
524
526
|
|
525
527
|
|
528
|
+
class TestToMonths:
|
529
|
+
@given(months=integers())
|
530
|
+
def test_main(self, *, months: int) -> None:
|
531
|
+
with (
|
532
|
+
assume_does_not_raise(ValueError, match="months out of range"),
|
533
|
+
assume_does_not_raise(
|
534
|
+
OverflowError, match="Python int too large to convert to C long"
|
535
|
+
),
|
536
|
+
):
|
537
|
+
delta = DateDelta(months=months)
|
538
|
+
assert to_months(delta) == months
|
539
|
+
|
540
|
+
def test_error(self) -> None:
|
541
|
+
delta = DateDelta(days=1)
|
542
|
+
with raises(ToMonthsError, match="Date delta must not contain days; got 1"):
|
543
|
+
_ = to_months(delta)
|
544
|
+
|
545
|
+
|
526
546
|
class TestToPyTimeDelta:
|
527
547
|
@mark.parametrize(
|
528
548
|
("delta", "expected"),
|
@@ -1833,6 +1833,26 @@ def normal(
|
|
1833
1833
|
##
|
1834
1834
|
|
1835
1835
|
|
1836
|
+
@overload
|
1837
|
+
def order_of_magnitude(column: ExprLike, /, *, round_: bool = False) -> Expr: ...
|
1838
|
+
@overload
|
1839
|
+
def order_of_magnitude(column: Series, /, *, round_: bool = False) -> Series: ...
|
1840
|
+
@overload
|
1841
|
+
def order_of_magnitude(
|
1842
|
+
column: IntoExprColumn, /, *, round_: bool = False
|
1843
|
+
) -> Expr | Series: ...
|
1844
|
+
def order_of_magnitude(
|
1845
|
+
column: IntoExprColumn, /, *, round_: bool = False
|
1846
|
+
) -> Expr | Series:
|
1847
|
+
"""Compute the order of magnitude of a column."""
|
1848
|
+
column = ensure_expr_or_series(column)
|
1849
|
+
result = column.abs().log10()
|
1850
|
+
return result.round().cast(Int64) if round_ else result
|
1851
|
+
|
1852
|
+
|
1853
|
+
##
|
1854
|
+
|
1855
|
+
|
1836
1856
|
def reify_exprs(
|
1837
1857
|
*exprs: IntoExprColumn, **named_exprs: IntoExprColumn
|
1838
1858
|
) -> Expr | Series | DataFrame:
|
@@ -2184,6 +2204,7 @@ __all__ = [
|
|
2184
2204
|
"nan_sum_agg",
|
2185
2205
|
"nan_sum_cols",
|
2186
2206
|
"normal",
|
2207
|
+
"order_of_magnitude",
|
2187
2208
|
"replace_time_zone",
|
2188
2209
|
"set_first_row_as_columns",
|
2189
2210
|
"struct_dtype",
|
@@ -552,6 +552,26 @@ def to_local_plain(date_time: ZonedDateTime, /) -> PlainDateTime:
|
|
552
552
|
##
|
553
553
|
|
554
554
|
|
555
|
+
def to_months(delta: DateDelta, /) -> int:
|
556
|
+
"""Compute the number of months in a date delta."""
|
557
|
+
months, days = delta.in_months_days()
|
558
|
+
if days != 0:
|
559
|
+
raise ToMonthsError(days=days)
|
560
|
+
return months
|
561
|
+
|
562
|
+
|
563
|
+
@dataclass(kw_only=True, slots=True)
|
564
|
+
class ToMonthsError(Exception):
|
565
|
+
days: int
|
566
|
+
|
567
|
+
@override
|
568
|
+
def __str__(self) -> str:
|
569
|
+
return f"Date delta must not contain days; got {self.days}"
|
570
|
+
|
571
|
+
|
572
|
+
##
|
573
|
+
|
574
|
+
|
555
575
|
def to_nanos(delta: DateTimeDelta, /) -> int:
|
556
576
|
"""Compute the number of nanoseconds in a date-time delta."""
|
557
577
|
try:
|
@@ -801,6 +821,7 @@ __all__ = [
|
|
801
821
|
"MeanDateTimeError",
|
802
822
|
"MinMaxDateError",
|
803
823
|
"ToDaysError",
|
824
|
+
"ToMonthsError",
|
804
825
|
"ToNanosError",
|
805
826
|
"ToPyTimeDeltaError",
|
806
827
|
"WheneverLogRecord",
|
@@ -819,6 +840,7 @@ __all__ = [
|
|
819
840
|
"to_date_time_delta",
|
820
841
|
"to_days",
|
821
842
|
"to_local_plain",
|
843
|
+
"to_months",
|
822
844
|
"to_nanos",
|
823
845
|
"to_py_time_delta",
|
824
846
|
"to_zoned_date_time",
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_with/outer_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/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
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_asyncio_classes/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_asyncio_classes/loopers.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
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/src/tests/test_typing_funcs/no_future.py
RENAMED
File without changes
|
{dycw_utilities-0.138.11 → dycw_utilities-0.138.13}/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.138.11 → dycw_utilities-0.138.13}/src/utilities/pytest_regressions_plugin.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
|