dycw-utilities 0.131.5__tar.gz → 0.131.6__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.131.5 → dycw_utilities-0.131.6}/PKG-INFO +1 -1
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/pyproject.toml +2 -2
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_whenever2.py +36 -6
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/whenever2.py +71 -6
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/.gitignore +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/LICENSE +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/README.md +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_statsmodel.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/click.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/git.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/http.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/math.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/os.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/period.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/random.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/re.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/string.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/text.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/types.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/version.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/utilities/zoneinfo.py +0 -0
@@ -94,7 +94,7 @@ dependencies = [
|
|
94
94
|
name = "dycw-utilities"
|
95
95
|
readme = "README.md"
|
96
96
|
requires-python = ">= 3.12"
|
97
|
-
version = "0.131.
|
97
|
+
version = "0.131.6"
|
98
98
|
|
99
99
|
[project.optional-dependencies]
|
100
100
|
logging = [
|
@@ -121,7 +121,7 @@ test = [
|
|
121
121
|
# bump-my-version
|
122
122
|
[tool.bumpversion]
|
123
123
|
allow_dirty = true
|
124
|
-
current_version = "0.131.
|
124
|
+
current_version = "0.131.6"
|
125
125
|
|
126
126
|
[[tool.bumpversion.files]]
|
127
127
|
filename = "src/utilities/__init__.py"
|
@@ -6,11 +6,12 @@ from zoneinfo import ZoneInfo
|
|
6
6
|
from hypothesis import given
|
7
7
|
from hypothesis.strategies import just, timezones
|
8
8
|
from pytest import mark, param, raises
|
9
|
-
from whenever import DateDelta, DateTimeDelta, TimeDelta, ZonedDateTime
|
9
|
+
from whenever import Date, DateDelta, DateTimeDelta, TimeDelta, ZonedDateTime
|
10
10
|
|
11
11
|
from tests.conftest import IS_CI
|
12
12
|
from utilities.hypothesis import zoned_datetimes_whenever
|
13
13
|
from utilities.tzdata import HongKong, Tokyo
|
14
|
+
from utilities.tzlocal import LOCAL_TIME_ZONE
|
14
15
|
from utilities.whenever2 import (
|
15
16
|
DATE_DELTA_MAX,
|
16
17
|
DATE_DELTA_MIN,
|
@@ -22,11 +23,14 @@ from utilities.whenever2 import (
|
|
22
23
|
DATE_TIME_DELTA_MIN,
|
23
24
|
DATE_TIME_DELTA_PARSABLE_MAX,
|
24
25
|
DATE_TIME_DELTA_PARSABLE_MIN,
|
26
|
+
NOW_LOCAL,
|
25
27
|
NOW_UTC,
|
26
28
|
PLAIN_DATE_TIME_MAX,
|
27
29
|
PLAIN_DATE_TIME_MIN,
|
28
30
|
TIME_DELTA_MAX,
|
29
31
|
TIME_DELTA_MIN,
|
32
|
+
TODAY_LOCAL,
|
33
|
+
TODAY_UTC,
|
30
34
|
ZONED_DATE_TIME_MAX,
|
31
35
|
ZONED_DATE_TIME_MIN,
|
32
36
|
WheneverLogRecord,
|
@@ -35,6 +39,8 @@ from utilities.whenever2 import (
|
|
35
39
|
from_timestamp_nanos,
|
36
40
|
get_now,
|
37
41
|
get_now_local,
|
42
|
+
get_today,
|
43
|
+
get_today_local,
|
38
44
|
)
|
39
45
|
from utilities.zoneinfo import UTC
|
40
46
|
|
@@ -81,6 +87,28 @@ class TestGetNowLocal:
|
|
81
87
|
time_zones = {ETC, HongKong, Tokyo, UTC}
|
82
88
|
assert any(now.tz == time_zone.key for time_zone in time_zones)
|
83
89
|
|
90
|
+
def test_constant(self) -> None:
|
91
|
+
assert isinstance(NOW_LOCAL, ZonedDateTime)
|
92
|
+
assert NOW_LOCAL.tz == LOCAL_TIME_ZONE.key
|
93
|
+
|
94
|
+
|
95
|
+
class TestGetToday:
|
96
|
+
def test_function(self) -> None:
|
97
|
+
today = get_today()
|
98
|
+
assert isinstance(today, Date)
|
99
|
+
|
100
|
+
def test_constant(self) -> None:
|
101
|
+
assert isinstance(TODAY_UTC, Date)
|
102
|
+
|
103
|
+
|
104
|
+
class TestGetTodayLocal:
|
105
|
+
def test_function(self) -> None:
|
106
|
+
today = get_today_local()
|
107
|
+
assert isinstance(today, Date)
|
108
|
+
|
109
|
+
def test_constant(self) -> None:
|
110
|
+
assert isinstance(TODAY_LOCAL, Date)
|
111
|
+
|
84
112
|
|
85
113
|
class TestMinMax:
|
86
114
|
def test_date_min(self) -> None:
|
@@ -151,19 +179,19 @@ class TestMinMax:
|
|
151
179
|
|
152
180
|
def test_date_time_delta_parsable_min(self) -> None:
|
153
181
|
def func(delta: DateTimeDelta, /) -> None:
|
154
|
-
_ =
|
182
|
+
_ = DateTimeDelta.parse_common_iso(delta.format_common_iso())
|
155
183
|
|
156
184
|
_ = func(DATE_TIME_DELTA_PARSABLE_MIN)
|
157
|
-
with raises(ValueError, match="
|
185
|
+
with raises(ValueError, match="Addition result out of bounds"):
|
158
186
|
_ = func(DATE_TIME_DELTA_PARSABLE_MIN - DateTimeDelta(nanoseconds=1))
|
159
187
|
|
160
188
|
def test_date_time_delta_parsable_max(self) -> None:
|
161
189
|
def func(delta: DateTimeDelta, /) -> None:
|
162
|
-
_ =
|
190
|
+
_ = DateTimeDelta.parse_common_iso(delta.format_common_iso())
|
163
191
|
|
164
192
|
_ = func(DATE_TIME_DELTA_PARSABLE_MAX)
|
165
|
-
with raises(ValueError, match="Invalid format: '.*'"):
|
166
|
-
_ = func(DATE_TIME_DELTA_PARSABLE_MAX +
|
193
|
+
with raises(ValueError, match="Invalid format or out of range: '.*'"):
|
194
|
+
_ = func(DATE_TIME_DELTA_PARSABLE_MAX + TimeDelta(nanoseconds=1))
|
167
195
|
|
168
196
|
def test_plain_date_time_min(self) -> None:
|
169
197
|
with raises(ValueError, match=r"Result of subtract\(\) out of range"):
|
@@ -184,6 +212,7 @@ class TestMinMax:
|
|
184
212
|
],
|
185
213
|
)
|
186
214
|
def test_time_delta_min(self, *, delta: TimeDelta) -> None:
|
215
|
+
_ = TimeDelta.parse_common_iso(TIME_DELTA_MIN.format_common_iso())
|
187
216
|
with raises(ValueError, match="Addition result out of range"):
|
188
217
|
_ = TIME_DELTA_MIN - delta
|
189
218
|
|
@@ -202,6 +231,7 @@ class TestMinMax:
|
|
202
231
|
def test_time_delta_max(self, *, delta: TimeDelta, is_ok: bool) -> None:
|
203
232
|
if is_ok:
|
204
233
|
_ = TIME_DELTA_MAX + delta
|
234
|
+
_ = TimeDelta.parse_common_iso(delta.format_common_iso())
|
205
235
|
else:
|
206
236
|
with raises(ValueError, match="Addition result out of range"):
|
207
237
|
_ = TIME_DELTA_MAX + delta
|
@@ -5,7 +5,15 @@ from functools import cache
|
|
5
5
|
from logging import LogRecord
|
6
6
|
from typing import TYPE_CHECKING, Any, override
|
7
7
|
|
8
|
-
from whenever import
|
8
|
+
from whenever import (
|
9
|
+
Date,
|
10
|
+
DateDelta,
|
11
|
+
DateTimeDelta,
|
12
|
+
PlainDateTime,
|
13
|
+
Time,
|
14
|
+
TimeDelta,
|
15
|
+
ZonedDateTime,
|
16
|
+
)
|
9
17
|
|
10
18
|
from utilities.zoneinfo import UTC, get_time_zone_name
|
11
19
|
|
@@ -15,8 +23,15 @@ if TYPE_CHECKING:
|
|
15
23
|
from utilities.types import TimeZoneLike
|
16
24
|
|
17
25
|
|
26
|
+
## bounds
|
27
|
+
|
28
|
+
|
18
29
|
DATE_MIN = Date.from_py_date(dt.date.min)
|
19
30
|
DATE_MAX = Date.from_py_date(dt.date.max)
|
31
|
+
TIME_MIN = Time.from_py_time(dt.time.min)
|
32
|
+
TIME_MAX = Time.from_py_time(dt.time.max)
|
33
|
+
|
34
|
+
|
20
35
|
PLAIN_DATE_TIME_MIN = PlainDateTime.from_py_datetime(dt.datetime.min) # noqa: DTZ901
|
21
36
|
PLAIN_DATE_TIME_MAX = PlainDateTime.from_py_datetime(dt.datetime.max) # noqa: DTZ901
|
22
37
|
ZONED_DATE_TIME_MIN = PLAIN_DATE_TIME_MIN.assume_tz(UTC.key)
|
@@ -28,10 +43,24 @@ DATE_DELTA_MAX = DATE_TIME_DELTA_MAX.date_part()
|
|
28
43
|
TIME_DELTA_MIN = DATE_TIME_DELTA_MIN.time_part()
|
29
44
|
TIME_DELTA_MAX = DATE_TIME_DELTA_MAX.time_part()
|
30
45
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
46
|
+
|
47
|
+
DATE_TIME_DELTA_PARSABLE_MIN = DateTimeDelta(days=-999999, seconds=-316192377600)
|
48
|
+
DATE_TIME_DELTA_PARSABLE_MAX = DateTimeDelta(days=999999, seconds=316192377600)
|
49
|
+
DATE_DELTA_PARSABLE_MIN = DateDelta(days=-999999)
|
50
|
+
DATE_DELTA_PARSABLE_MAX = DateDelta(days=999999)
|
51
|
+
|
52
|
+
|
53
|
+
## common constants
|
54
|
+
|
55
|
+
|
56
|
+
ZERO_TIME = Time()
|
57
|
+
MICROSECOND = TimeDelta(microseconds=1)
|
58
|
+
MILLISECOND = TimeDelta(milliseconds=1)
|
59
|
+
SECOND = TimeDelta(seconds=1)
|
60
|
+
MINUTE = TimeDelta(minutes=1)
|
61
|
+
HOUR = TimeDelta(hours=1)
|
62
|
+
DAY = DateDelta(days=1)
|
63
|
+
WEEK = DateDelta(weeks=1)
|
35
64
|
|
36
65
|
|
37
66
|
##
|
@@ -68,6 +97,28 @@ def get_now_local() -> ZonedDateTime:
|
|
68
97
|
return get_now(time_zone="local")
|
69
98
|
|
70
99
|
|
100
|
+
NOW_LOCAL = get_now_local()
|
101
|
+
|
102
|
+
|
103
|
+
##
|
104
|
+
|
105
|
+
|
106
|
+
def get_today(*, time_zone: TimeZoneLike = UTC) -> Date:
|
107
|
+
"""Get the current, timezone-aware local date."""
|
108
|
+
return get_now(time_zone=time_zone).date()
|
109
|
+
|
110
|
+
|
111
|
+
TODAY_UTC = get_today(time_zone=UTC)
|
112
|
+
|
113
|
+
|
114
|
+
def get_today_local() -> Date:
|
115
|
+
"""Get the current, timezone-aware local date."""
|
116
|
+
return get_today(time_zone="local")
|
117
|
+
|
118
|
+
|
119
|
+
TODAY_LOCAL = get_today_local()
|
120
|
+
|
121
|
+
|
71
122
|
##
|
72
123
|
|
73
124
|
|
@@ -132,10 +183,23 @@ __all__ = [
|
|
132
183
|
"DATE_TIME_DELTA_MIN",
|
133
184
|
"DATE_TIME_DELTA_PARSABLE_MAX",
|
134
185
|
"DATE_TIME_DELTA_PARSABLE_MIN",
|
186
|
+
"DAY",
|
187
|
+
"HOUR",
|
188
|
+
"MICROSECOND",
|
189
|
+
"MILLISECOND",
|
190
|
+
"MINUTE",
|
191
|
+
"NOW_LOCAL",
|
135
192
|
"PLAIN_DATE_TIME_MAX",
|
136
193
|
"PLAIN_DATE_TIME_MIN",
|
194
|
+
"SECOND",
|
137
195
|
"TIME_DELTA_MAX",
|
138
196
|
"TIME_DELTA_MIN",
|
197
|
+
"TIME_MAX",
|
198
|
+
"TIME_MIN",
|
199
|
+
"TODAY_LOCAL",
|
200
|
+
"TODAY_UTC",
|
201
|
+
"WEEK",
|
202
|
+
"ZERO_TIME",
|
139
203
|
"ZONED_DATE_TIME_MAX",
|
140
204
|
"ZONED_DATE_TIME_MIN",
|
141
205
|
"WheneverLogRecord",
|
@@ -143,6 +207,7 @@ __all__ = [
|
|
143
207
|
"from_timestamp_millis",
|
144
208
|
"from_timestamp_nanos",
|
145
209
|
"get_now",
|
146
|
-
"get_now",
|
147
210
|
"get_now_local",
|
211
|
+
"get_today",
|
212
|
+
"get_today_local",
|
148
213
|
]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/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.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/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.131.5 → dycw_utilities-0.131.6}/src/tests/test_asyncio_classes/__init__.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
|
{dycw_utilities-0.131.5 → dycw_utilities-0.131.6}/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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|