dycw-utilities 0.131.5__tar.gz → 0.131.7__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.7}/PKG-INFO +1 -1
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/pyproject.toml +2 -2
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_hypothesis.py +35 -1
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_whenever2.py +36 -6
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/hypothesis.py +89 -15
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/whenever2.py +71 -6
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/.gitignore +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/LICENSE +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/README.md +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_statsmodel.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/click.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/git.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/http.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/math.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/os.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/period.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/random.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/re.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/string.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/text.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/types.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/version.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/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.7"
|
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.7"
|
125
125
|
|
126
126
|
[[tool.bumpversion.files]]
|
127
127
|
filename = "src/utilities/__init__.py"
|
@@ -28,7 +28,7 @@ from luigi import Task
|
|
28
28
|
from numpy import inf, int64, isfinite, isinf, isnan, ravel, rint
|
29
29
|
from pathvalidate import validate_filepath
|
30
30
|
from pytest import mark, raises
|
31
|
-
from whenever import Date, DateDelta, PlainDateTime, ZonedDateTime
|
31
|
+
from whenever import Date, DateDelta, PlainDateTime, Time, TimeDelta, ZonedDateTime
|
32
32
|
|
33
33
|
from tests.conftest import SKIPIF_CI_AND_WINDOWS
|
34
34
|
from utilities.datetime import (
|
@@ -92,7 +92,9 @@ from utilities.hypothesis import (
|
|
92
92
|
text_clean,
|
93
93
|
text_digits,
|
94
94
|
text_printable,
|
95
|
+
time_deltas_whenever,
|
95
96
|
timedeltas_2w,
|
97
|
+
times_whenever,
|
96
98
|
triples,
|
97
99
|
uint32s,
|
98
100
|
uint64s,
|
@@ -1153,6 +1155,38 @@ class TestTimeDeltas2W:
|
|
1153
1155
|
assert min_value <= timedelta <= max_value
|
1154
1156
|
|
1155
1157
|
|
1158
|
+
class TestTimeDeltas:
|
1159
|
+
@given(data=data())
|
1160
|
+
def test_main(self, *, data: DataObject) -> None:
|
1161
|
+
min_value = data.draw(time_deltas_whenever() | none())
|
1162
|
+
max_value = data.draw(time_deltas_whenever() | none())
|
1163
|
+
with assume_does_not_raise(InvalidArgument):
|
1164
|
+
delta = data.draw(
|
1165
|
+
time_deltas_whenever(min_value=min_value, max_value=max_value)
|
1166
|
+
)
|
1167
|
+
assert isinstance(delta, TimeDelta)
|
1168
|
+
assert TimeDelta.parse_common_iso(delta.format_common_iso()) == delta
|
1169
|
+
if min_value is not None:
|
1170
|
+
assert delta >= min_value
|
1171
|
+
if max_value is not None:
|
1172
|
+
assert delta <= max_value
|
1173
|
+
|
1174
|
+
|
1175
|
+
class TestTimes:
|
1176
|
+
@given(data=data())
|
1177
|
+
def test_main(self, *, data: DataObject) -> None:
|
1178
|
+
min_value = data.draw(times_whenever() | none())
|
1179
|
+
max_value = data.draw(times_whenever() | none())
|
1180
|
+
with assume_does_not_raise(InvalidArgument):
|
1181
|
+
time = data.draw(times_whenever(min_value=min_value, max_value=max_value))
|
1182
|
+
assert isinstance(time, Time)
|
1183
|
+
assert Time.parse_common_iso(time.format_common_iso()) == time
|
1184
|
+
if min_value is not None:
|
1185
|
+
assert time >= min_value
|
1186
|
+
if max_value is not None:
|
1187
|
+
assert time <= max_value
|
1188
|
+
|
1189
|
+
|
1156
1190
|
class TestTriples:
|
1157
1191
|
@given(data=data(), unique=booleans(), sorted_=booleans())
|
1158
1192
|
def test_main(self, *, data: DataObject, unique: bool, sorted_: bool) -> None:
|
@@ -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
|
@@ -24,6 +24,7 @@ from typing import (
|
|
24
24
|
override,
|
25
25
|
)
|
26
26
|
|
27
|
+
import hypothesis.strategies
|
27
28
|
from hypothesis import HealthCheck, Phase, Verbosity, assume, settings
|
28
29
|
from hypothesis.errors import InvalidArgument
|
29
30
|
from hypothesis.strategies import (
|
@@ -47,7 +48,7 @@ from hypothesis.strategies import (
|
|
47
48
|
uuids,
|
48
49
|
)
|
49
50
|
from hypothesis.utils.conventions import not_set
|
50
|
-
from whenever import Date, DateDelta
|
51
|
+
from whenever import Date, DateDelta, PlainDateTime, Time, TimeDelta
|
51
52
|
|
52
53
|
from utilities.datetime import (
|
53
54
|
DATETIME_MAX_NAIVE,
|
@@ -89,6 +90,20 @@ from utilities.platform import IS_WINDOWS
|
|
89
90
|
from utilities.sentinel import Sentinel, sentinel
|
90
91
|
from utilities.tempfile import TEMP_DIR, TemporaryDirectory
|
91
92
|
from utilities.version import Version
|
93
|
+
from utilities.whenever2 import (
|
94
|
+
DATE_DELTA_MAX,
|
95
|
+
DATE_DELTA_MIN,
|
96
|
+
DATE_DELTA_PARSABLE_MAX,
|
97
|
+
DATE_DELTA_PARSABLE_MIN,
|
98
|
+
DATE_MAX,
|
99
|
+
DATE_MIN,
|
100
|
+
PLAIN_DATE_TIME_MAX,
|
101
|
+
PLAIN_DATE_TIME_MIN,
|
102
|
+
TIME_DELTA_MAX,
|
103
|
+
TIME_DELTA_MIN,
|
104
|
+
TIME_MAX,
|
105
|
+
TIME_MIN,
|
106
|
+
)
|
92
107
|
from utilities.zoneinfo import UTC, ensure_time_zone
|
93
108
|
|
94
109
|
if TYPE_CHECKING:
|
@@ -97,7 +112,7 @@ if TYPE_CHECKING:
|
|
97
112
|
|
98
113
|
from hypothesis.database import ExampleDatabase
|
99
114
|
from numpy.random import RandomState
|
100
|
-
from whenever import
|
115
|
+
from whenever import ZonedDateTime
|
101
116
|
|
102
117
|
from utilities.numpy import NDArrayB, NDArrayF, NDArrayI, NDArrayO
|
103
118
|
from utilities.types import Duration, Number, RoundMode, TimeZoneLike
|
@@ -170,13 +185,6 @@ def date_deltas_whenever(
|
|
170
185
|
parsable: MaybeSearchStrategy[bool] = False,
|
171
186
|
) -> DateDelta:
|
172
187
|
"""Strategy for generating date deltas."""
|
173
|
-
from utilities.whenever2 import (
|
174
|
-
DATE_DELTA_MAX,
|
175
|
-
DATE_DELTA_MIN,
|
176
|
-
DATE_DELTA_PARSABLE_MAX,
|
177
|
-
DATE_DELTA_PARSABLE_MIN,
|
178
|
-
)
|
179
|
-
|
180
188
|
min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
|
181
189
|
match min_value_:
|
182
190
|
case None:
|
@@ -307,8 +315,6 @@ def dates_whenever(
|
|
307
315
|
max_value: MaybeSearchStrategy[Date | None] = None,
|
308
316
|
) -> Date:
|
309
317
|
"""Strategy for generating dates."""
|
310
|
-
from utilities.whenever2 import DATE_MAX, DATE_MIN
|
311
|
-
|
312
318
|
min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
|
313
319
|
match min_value_:
|
314
320
|
case None:
|
@@ -1069,10 +1075,6 @@ def plain_datetimes_whenever(
|
|
1069
1075
|
max_value: MaybeSearchStrategy[PlainDateTime | None] = None,
|
1070
1076
|
) -> PlainDateTime:
|
1071
1077
|
"""Strategy for generating plain datetimes."""
|
1072
|
-
from whenever import PlainDateTime
|
1073
|
-
|
1074
|
-
from utilities.whenever2 import PLAIN_DATE_TIME_MAX, PLAIN_DATE_TIME_MIN
|
1075
|
-
|
1076
1078
|
min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
|
1077
1079
|
match min_value_:
|
1078
1080
|
case None:
|
@@ -1405,6 +1407,41 @@ def text_printable(
|
|
1405
1407
|
##
|
1406
1408
|
|
1407
1409
|
|
1410
|
+
@composite
|
1411
|
+
def time_deltas_whenever(
|
1412
|
+
draw: DrawFn,
|
1413
|
+
/,
|
1414
|
+
*,
|
1415
|
+
min_value: MaybeSearchStrategy[TimeDelta | None] = None,
|
1416
|
+
max_value: MaybeSearchStrategy[TimeDelta | None] = None,
|
1417
|
+
) -> TimeDelta:
|
1418
|
+
"""Strategy for generating time deltas."""
|
1419
|
+
min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
|
1420
|
+
match min_value_:
|
1421
|
+
case None:
|
1422
|
+
min_value_ = TIME_DELTA_MIN
|
1423
|
+
case TimeDelta():
|
1424
|
+
...
|
1425
|
+
case _ as never:
|
1426
|
+
assert_never(never)
|
1427
|
+
match max_value_:
|
1428
|
+
case None:
|
1429
|
+
max_value_ = TIME_DELTA_MAX
|
1430
|
+
case TimeDelta():
|
1431
|
+
...
|
1432
|
+
case _ as never:
|
1433
|
+
assert_never(never)
|
1434
|
+
py_time = draw(
|
1435
|
+
hypothesis.strategies.timedeltas(
|
1436
|
+
min_value=min_value_.py_timedelta(), max_value=max_value_.py_timedelta()
|
1437
|
+
)
|
1438
|
+
)
|
1439
|
+
return TimeDelta.from_py_timedelta(py_time)
|
1440
|
+
|
1441
|
+
|
1442
|
+
##
|
1443
|
+
|
1444
|
+
|
1408
1445
|
@composite
|
1409
1446
|
def timedeltas_2w(
|
1410
1447
|
draw: DrawFn,
|
@@ -1431,6 +1468,41 @@ def timedeltas_2w(
|
|
1431
1468
|
##
|
1432
1469
|
|
1433
1470
|
|
1471
|
+
@composite
|
1472
|
+
def times_whenever(
|
1473
|
+
draw: DrawFn,
|
1474
|
+
/,
|
1475
|
+
*,
|
1476
|
+
min_value: MaybeSearchStrategy[Time | None] = None,
|
1477
|
+
max_value: MaybeSearchStrategy[Time | None] = None,
|
1478
|
+
) -> Time:
|
1479
|
+
"""Strategy for generating times."""
|
1480
|
+
min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
|
1481
|
+
match min_value_:
|
1482
|
+
case None:
|
1483
|
+
min_value_ = TIME_MIN
|
1484
|
+
case Time():
|
1485
|
+
...
|
1486
|
+
case _ as never:
|
1487
|
+
assert_never(never)
|
1488
|
+
match max_value_:
|
1489
|
+
case None:
|
1490
|
+
max_value_ = TIME_MAX
|
1491
|
+
case Time():
|
1492
|
+
...
|
1493
|
+
case _ as never:
|
1494
|
+
assert_never(never)
|
1495
|
+
py_time = draw(
|
1496
|
+
hypothesis.strategies.times(
|
1497
|
+
min_value=min_value_.py_time(), max_value=max_value_.py_time()
|
1498
|
+
)
|
1499
|
+
)
|
1500
|
+
return Time.from_py_time(py_time)
|
1501
|
+
|
1502
|
+
|
1503
|
+
##
|
1504
|
+
|
1505
|
+
|
1434
1506
|
def triples(
|
1435
1507
|
strategy: SearchStrategy[_T],
|
1436
1508
|
/,
|
@@ -1651,7 +1723,9 @@ __all__ = [
|
|
1651
1723
|
"text_clean",
|
1652
1724
|
"text_digits",
|
1653
1725
|
"text_printable",
|
1726
|
+
"time_deltas_whenever",
|
1654
1727
|
"timedeltas_2w",
|
1728
|
+
"times_whenever",
|
1655
1729
|
"triples",
|
1656
1730
|
"uint32s",
|
1657
1731
|
"uint64s",
|
@@ -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.7}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/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.7}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.131.5 → dycw_utilities-0.131.7}/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.7}/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
|