dycw-utilities 0.138.10__tar.gz → 0.138.11__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.10 → dycw_utilities-0.138.11}/PKG-INFO +2 -2
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/pyproject.toml +4 -4
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_whenever.py +30 -1
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/whenever.py +38 -3
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/.gitignore +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/LICENSE +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/README.md +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/click.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/http.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/math.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/os.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/period.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/pytest_regressions_plugin.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/random.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/re.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/string.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/text.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/types.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/version.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/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.11
|
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.15; 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'
|
@@ -41,7 +41,7 @@ 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.15, < 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.11"
|
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.15, < 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.11"
|
141
141
|
|
142
142
|
[[tool.bumpversion.files]]
|
143
143
|
filename = "src/utilities/__init__.py"
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import datetime as dt
|
3
4
|
from dataclasses import dataclass, field
|
4
5
|
from logging import DEBUG
|
5
6
|
from typing import TYPE_CHECKING, ClassVar, Self
|
@@ -7,7 +8,7 @@ from zoneinfo import ZoneInfo
|
|
7
8
|
|
8
9
|
from hypothesis import given
|
9
10
|
from hypothesis.strategies import integers, none, sampled_from, timezones
|
10
|
-
from pytest import raises
|
11
|
+
from pytest import mark, param, raises
|
11
12
|
from whenever import (
|
12
13
|
Date,
|
13
14
|
DateDelta,
|
@@ -64,6 +65,7 @@ from utilities.whenever import (
|
|
64
65
|
MinMaxDateError,
|
65
66
|
ToDaysError,
|
66
67
|
ToNanosError,
|
68
|
+
ToPyTimeDeltaError,
|
67
69
|
WheneverLogRecord,
|
68
70
|
_FreqDayIncrementError,
|
69
71
|
_FreqIncrementError,
|
@@ -87,6 +89,7 @@ from utilities.whenever import (
|
|
87
89
|
to_days,
|
88
90
|
to_local_plain,
|
89
91
|
to_nanos,
|
92
|
+
to_py_time_delta,
|
90
93
|
to_time_delta,
|
91
94
|
to_zoned_date_time,
|
92
95
|
two_digit_year_month,
|
@@ -520,6 +523,32 @@ class TestToLocalPlain:
|
|
520
523
|
assert isinstance(result, PlainDateTime)
|
521
524
|
|
522
525
|
|
526
|
+
class TestToPyTimeDelta:
|
527
|
+
@mark.parametrize(
|
528
|
+
("delta", "expected"),
|
529
|
+
[
|
530
|
+
param(DateDelta(days=1), dt.timedelta(days=1)),
|
531
|
+
param(TimeDelta(microseconds=1), dt.timedelta(microseconds=1)),
|
532
|
+
param(
|
533
|
+
DateTimeDelta(days=1, microseconds=1),
|
534
|
+
dt.timedelta(days=1, microseconds=1),
|
535
|
+
),
|
536
|
+
],
|
537
|
+
)
|
538
|
+
def test_main(
|
539
|
+
self, *, delta: DateDelta | TimeDelta | DateTimeDelta, expected: dt.timedelta
|
540
|
+
) -> None:
|
541
|
+
result = to_py_time_delta(delta)
|
542
|
+
assert result == expected
|
543
|
+
|
544
|
+
def test_error(self) -> None:
|
545
|
+
delta = TimeDelta(nanoseconds=1)
|
546
|
+
with raises(
|
547
|
+
ToPyTimeDeltaError, match="Time delta must not contain nanoseconds; got 1"
|
548
|
+
):
|
549
|
+
_ = to_py_time_delta(delta)
|
550
|
+
|
551
|
+
|
523
552
|
class TestToZonedDateTime:
|
524
553
|
@given(date_time=zoned_datetimes())
|
525
554
|
def test_date_time(self, *, date_time: ZonedDateTime) -> None:
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import datetime as dt
|
3
4
|
from collections.abc import Callable, Iterable, Mapping
|
4
5
|
from dataclasses import dataclass
|
5
6
|
from functools import cache
|
@@ -553,9 +554,10 @@ def to_local_plain(date_time: ZonedDateTime, /) -> PlainDateTime:
|
|
553
554
|
|
554
555
|
def to_nanos(delta: DateTimeDelta, /) -> int:
|
555
556
|
"""Compute the number of nanoseconds in a date-time delta."""
|
556
|
-
|
557
|
-
|
558
|
-
|
557
|
+
try:
|
558
|
+
days = to_days(delta.date_part())
|
559
|
+
except ToDaysError as error:
|
560
|
+
raise ToNanosError(months=error.months) from None
|
559
561
|
return 24 * 60 * 60 * int(1e9) * days + delta.time_part().in_nanoseconds()
|
560
562
|
|
561
563
|
|
@@ -571,6 +573,37 @@ class ToNanosError(Exception):
|
|
571
573
|
##
|
572
574
|
|
573
575
|
|
576
|
+
def to_py_time_delta(delta: DateDelta | TimeDelta | DateTimeDelta, /) -> dt.timedelta:
|
577
|
+
"""Try convert a DateDelta to a standard library timedelta."""
|
578
|
+
match delta:
|
579
|
+
case DateDelta():
|
580
|
+
return dt.timedelta(days=to_days(delta))
|
581
|
+
case TimeDelta():
|
582
|
+
nanos = delta.in_nanoseconds()
|
583
|
+
micros, remainder = divmod(nanos, 1000)
|
584
|
+
if remainder != 0:
|
585
|
+
raise ToPyTimeDeltaError(nanoseconds=remainder)
|
586
|
+
return dt.timedelta(microseconds=micros)
|
587
|
+
case DateTimeDelta():
|
588
|
+
return to_py_time_delta(delta.date_part()) + to_py_time_delta(
|
589
|
+
delta.time_part()
|
590
|
+
)
|
591
|
+
case _ as never:
|
592
|
+
assert_never(never)
|
593
|
+
|
594
|
+
|
595
|
+
@dataclass(kw_only=True, slots=True)
|
596
|
+
class ToPyTimeDeltaError(Exception):
|
597
|
+
nanoseconds: int
|
598
|
+
|
599
|
+
@override
|
600
|
+
def __str__(self) -> str:
|
601
|
+
return f"Time delta must not contain nanoseconds; got {self.nanoseconds}"
|
602
|
+
|
603
|
+
|
604
|
+
##
|
605
|
+
|
606
|
+
|
574
607
|
def to_time_delta(nanos: int, /) -> TimeDelta:
|
575
608
|
"""Construct a time delta."""
|
576
609
|
components = _to_time_delta_components(nanos)
|
@@ -769,6 +802,7 @@ __all__ = [
|
|
769
802
|
"MinMaxDateError",
|
770
803
|
"ToDaysError",
|
771
804
|
"ToNanosError",
|
805
|
+
"ToPyTimeDeltaError",
|
772
806
|
"WheneverLogRecord",
|
773
807
|
"datetime_utc",
|
774
808
|
"format_compact",
|
@@ -786,6 +820,7 @@ __all__ = [
|
|
786
820
|
"to_days",
|
787
821
|
"to_local_plain",
|
788
822
|
"to_nanos",
|
823
|
+
"to_py_time_delta",
|
789
824
|
"to_zoned_date_time",
|
790
825
|
"two_digit_year_month",
|
791
826
|
]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/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.10 → dycw_utilities-0.138.11}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/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.10 → dycw_utilities-0.138.11}/src/tests/test_asyncio_classes/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/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
|
File without changes
|
{dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/src/tests/test_typing_funcs/no_future.py
RENAMED
File without changes
|
{dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/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
|
File without changes
|
{dycw_utilities-0.138.10 → dycw_utilities-0.138.11}/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
|