dycw-utilities 0.131.1__tar.gz → 0.131.3__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.1 → dycw_utilities-0.131.3}/PKG-INFO +4 -45
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/pyproject.toml +10 -49
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_hypothesis.py +80 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_tzlocal.py +5 -1
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_whenever.py +1 -20
- dycw_utilities-0.131.3/src/tests/test_whenever2.py +188 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/altair.py +1 -4
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/fastapi.py +2 -3
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/fpdf2.py +2 -2
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/hypothesis.py +160 -3
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/lightweight_charts.py +1 -2
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/logging.py +3 -5
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/orjson.py +0 -2
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/pickle.py +2 -2
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/pydantic.py +2 -2
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/pyinstrument.py +1 -2
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/pytest.py +1 -2
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/traceback.py +3 -7
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/typing.py +1 -1
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/tzlocal.py +6 -1
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/whenever.py +1 -64
- dycw_utilities-0.131.3/src/utilities/whenever2.py +121 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/zoneinfo.py +2 -2
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/.gitignore +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/LICENSE +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/README.md +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_statsmodel.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/click.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/git.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/http.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/math.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/os.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/period.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/random.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/re.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/string.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/text.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/types.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/version.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.131.1 → dycw_utilities-0.131.3}/src/utilities/zipfile.py +0 -0
@@ -1,15 +1,15 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dycw-utilities
|
3
|
-
Version: 0.131.
|
3
|
+
Version: 0.131.3
|
4
4
|
Author-email: Derek Wan <d.wan@icloud.com>
|
5
5
|
License-File: LICENSE
|
6
6
|
Requires-Python: >=3.12
|
7
|
+
Requires-Dist: atomicwrites<1.5,>=1.4.1
|
7
8
|
Requires-Dist: typing-extensions<4.15,>=4.14.0
|
9
|
+
Requires-Dist: tzlocal<5.4,>=5.3.1
|
10
|
+
Requires-Dist: whenever<0.9,>=0.8.5
|
8
11
|
Provides-Extra: logging
|
9
|
-
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'logging'
|
10
12
|
Requires-Dist: coloredlogs<15.1,>=15.0.1; extra == 'logging'
|
11
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'logging'
|
12
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'logging'
|
13
13
|
Provides-Extra: test
|
14
14
|
Requires-Dist: dycw-pytest-only<2.2,>=2.1.1; extra == 'test'
|
15
15
|
Requires-Dist: hypothesis<6.136,>=6.135.2; extra == 'test'
|
@@ -28,14 +28,11 @@ Provides-Extra: zzz-test-aiolimiter
|
|
28
28
|
Requires-Dist: aiolimiter<1.3,>=1.2.1; extra == 'zzz-test-aiolimiter'
|
29
29
|
Provides-Extra: zzz-test-altair
|
30
30
|
Requires-Dist: altair<5.6,>=5.5.0; extra == 'zzz-test-altair'
|
31
|
-
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-altair'
|
32
31
|
Requires-Dist: img2pdf<0.7,>=0.6.0; extra == 'zzz-test-altair'
|
33
32
|
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-altair'
|
34
33
|
Requires-Dist: vl-convert-python<1.9,>=1.8.0; extra == 'zzz-test-altair'
|
35
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-altair'
|
36
34
|
Provides-Extra: zzz-test-asyncio
|
37
35
|
Provides-Extra: zzz-test-atomicwrites
|
38
|
-
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-atomicwrites'
|
39
36
|
Provides-Extra: zzz-test-atools
|
40
37
|
Requires-Dist: atools<0.15,>=0.14.2; extra == 'zzz-test-atools'
|
41
38
|
Provides-Extra: zzz-test-cachetools
|
@@ -43,7 +40,6 @@ Requires-Dist: cachetools<5.6,>=5.5.2; extra == 'zzz-test-cachetools'
|
|
43
40
|
Provides-Extra: zzz-test-click
|
44
41
|
Requires-Dist: click<8.3,>=8.2.1; extra == 'zzz-test-click'
|
45
42
|
Requires-Dist: sqlalchemy<2.1,>=2.0.41; extra == 'zzz-test-click'
|
46
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-click'
|
47
43
|
Provides-Extra: zzz-test-contextlib
|
48
44
|
Provides-Extra: zzz-test-contextvars
|
49
45
|
Provides-Extra: zzz-test-cryptography
|
@@ -53,10 +49,7 @@ Requires-Dist: cvxpy<1.7,>=1.6.5; extra == 'zzz-test-cvxpy'
|
|
53
49
|
Provides-Extra: zzz-test-dataclasses
|
54
50
|
Requires-Dist: orjson<3.11,>=3.10.15; extra == 'zzz-test-dataclasses'
|
55
51
|
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-dataclasses'
|
56
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-dataclasses'
|
57
52
|
Provides-Extra: zzz-test-datetime
|
58
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-datetime'
|
59
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-datetime'
|
60
53
|
Provides-Extra: zzz-test-enum
|
61
54
|
Provides-Extra: zzz-test-errors
|
62
55
|
Provides-Extra: zzz-test-eventkit
|
@@ -67,7 +60,6 @@ Requires-Dist: httpx<0.29,>=0.28.1; extra == 'zzz-test-fastapi'
|
|
67
60
|
Requires-Dist: uvicorn<0.35,>=0.34.1; extra == 'zzz-test-fastapi'
|
68
61
|
Provides-Extra: zzz-test-fpdf2
|
69
62
|
Requires-Dist: fpdf2<2.9,>=2.8.3; extra == 'zzz-test-fpdf2'
|
70
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-fpdf2'
|
71
63
|
Provides-Extra: zzz-test-functions
|
72
64
|
Provides-Extra: zzz-test-functools
|
73
65
|
Provides-Extra: zzz-test-getpass
|
@@ -75,11 +67,8 @@ Provides-Extra: zzz-test-git
|
|
75
67
|
Provides-Extra: zzz-test-hashlib
|
76
68
|
Requires-Dist: orjson<3.11,>=3.10.15; extra == 'zzz-test-hashlib'
|
77
69
|
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-hashlib'
|
78
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-hashlib'
|
79
70
|
Provides-Extra: zzz-test-http
|
80
|
-
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-http'
|
81
71
|
Requires-Dist: orjson<3.11,>=3.10.18; extra == 'zzz-test-http'
|
82
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-http'
|
83
72
|
Provides-Extra: zzz-test-hypothesis
|
84
73
|
Requires-Dist: aiosqlite<0.22,>=0.21.0; extra == 'zzz-test-hypothesis'
|
85
74
|
Requires-Dist: asyncpg<0.31,>=0.30.0; extra == 'zzz-test-hypothesis'
|
@@ -91,27 +80,20 @@ Requires-Dist: pathvalidate<3.3,>=3.2.3; extra == 'zzz-test-hypothesis'
|
|
91
80
|
Requires-Dist: redis<6.3,>=6.2.0; extra == 'zzz-test-hypothesis'
|
92
81
|
Requires-Dist: sqlalchemy<2.1,>=2.0.41; extra == 'zzz-test-hypothesis'
|
93
82
|
Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-hypothesis'
|
94
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-hypothesis'
|
95
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-hypothesis'
|
96
83
|
Provides-Extra: zzz-test-ipython
|
97
84
|
Requires-Dist: ipython<9.1,>=9.0.1; extra == 'zzz-test-ipython'
|
98
85
|
Provides-Extra: zzz-test-iterables
|
99
86
|
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-iterables'
|
100
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-iterables'
|
101
87
|
Provides-Extra: zzz-test-jupyter
|
102
88
|
Requires-Dist: jupyterlab<4.3,>=4.2.0; extra == 'zzz-test-jupyter'
|
103
89
|
Requires-Dist: pandas<2.4,>=2.3.0; extra == 'zzz-test-jupyter'
|
104
90
|
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-jupyter'
|
105
91
|
Provides-Extra: zzz-test-logging
|
106
|
-
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-logging'
|
107
92
|
Requires-Dist: coloredlogs<15.1,>=15.0.1; extra == 'zzz-test-logging'
|
108
93
|
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-logging'
|
109
94
|
Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-logging'
|
110
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-logging'
|
111
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-logging'
|
112
95
|
Provides-Extra: zzz-test-luigi
|
113
96
|
Requires-Dist: luigi<3.7,>=3.6.0; extra == 'zzz-test-luigi'
|
114
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-luigi'
|
115
97
|
Provides-Extra: zzz-test-math
|
116
98
|
Requires-Dist: numpy<2.4,>=2.3.0; extra == 'zzz-test-math'
|
117
99
|
Provides-Extra: zzz-test-memory-profiler
|
@@ -123,43 +105,32 @@ Provides-Extra: zzz-test-numpy
|
|
123
105
|
Requires-Dist: numpy<2.4,>=2.3.0; extra == 'zzz-test-numpy'
|
124
106
|
Provides-Extra: zzz-test-operator
|
125
107
|
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-operator'
|
126
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-operator'
|
127
108
|
Provides-Extra: zzz-test-optuna
|
128
109
|
Requires-Dist: optuna<4.4,>=4.3.0; extra == 'zzz-test-optuna'
|
129
110
|
Provides-Extra: zzz-test-orjson
|
130
111
|
Requires-Dist: orjson<3.11,>=3.10.15; extra == 'zzz-test-orjson'
|
131
112
|
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-orjson'
|
132
113
|
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-orjson'
|
133
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-orjson'
|
134
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-orjson'
|
135
114
|
Provides-Extra: zzz-test-os
|
136
115
|
Provides-Extra: zzz-test-pathlib
|
137
116
|
Provides-Extra: zzz-test-pickle
|
138
|
-
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pickle'
|
139
117
|
Provides-Extra: zzz-test-platform
|
140
118
|
Provides-Extra: zzz-test-polars
|
141
119
|
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-polars'
|
142
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-polars'
|
143
120
|
Provides-Extra: zzz-test-pqdm
|
144
121
|
Requires-Dist: pqdm<0.3,>=0.2.0; extra == 'zzz-test-pqdm'
|
145
122
|
Provides-Extra: zzz-test-pydantic
|
146
|
-
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pydantic'
|
147
123
|
Requires-Dist: pydantic<2.12,>=2.11.4; extra == 'zzz-test-pydantic'
|
148
124
|
Provides-Extra: zzz-test-pyinstrument
|
149
|
-
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pyinstrument'
|
150
125
|
Requires-Dist: pyinstrument<5.1,>=5.0.2; extra == 'zzz-test-pyinstrument'
|
151
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-pyinstrument'
|
152
126
|
Provides-Extra: zzz-test-pyrsistent
|
153
127
|
Requires-Dist: pyrsistent<0.21,>=0.20.0; extra == 'zzz-test-pyrsistent'
|
154
128
|
Provides-Extra: zzz-test-pytest
|
155
|
-
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pytest'
|
156
129
|
Requires-Dist: orjson<3.11,>=3.10.18; extra == 'zzz-test-pytest'
|
157
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-pytest'
|
158
130
|
Provides-Extra: zzz-test-pytest-regressions
|
159
131
|
Requires-Dist: pytest-regressions<2.9,>=2.8.0; extra == 'zzz-test-pytest-regressions'
|
160
132
|
Provides-Extra: zzz-test-python-dotenv
|
161
133
|
Requires-Dist: python-dotenv<1.2,>=1.1.0; extra == 'zzz-test-python-dotenv'
|
162
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-python-dotenv'
|
163
134
|
Provides-Extra: zzz-test-random
|
164
135
|
Provides-Extra: zzz-test-re
|
165
136
|
Provides-Extra: zzz-test-redis
|
@@ -168,8 +139,6 @@ Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-redis'
|
|
168
139
|
Requires-Dist: redis<6.3,>=6.2.0; extra == 'zzz-test-redis'
|
169
140
|
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-redis'
|
170
141
|
Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-redis'
|
171
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-redis'
|
172
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-redis'
|
173
142
|
Provides-Extra: zzz-test-rich
|
174
143
|
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-rich'
|
175
144
|
Provides-Extra: zzz-test-scipy
|
@@ -195,15 +164,11 @@ Requires-Dist: nest-asyncio<1.7,>=1.6.0; extra == 'zzz-test-sqlalchemy-polars'
|
|
195
164
|
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-sqlalchemy-polars'
|
196
165
|
Requires-Dist: sqlalchemy<2.1,>=2.0.41; extra == 'zzz-test-sqlalchemy-polars'
|
197
166
|
Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-sqlalchemy-polars'
|
198
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-sqlalchemy-polars'
|
199
167
|
Provides-Extra: zzz-test-streamlit
|
200
168
|
Requires-Dist: streamlit<1.46,>=1.45.0; extra == 'zzz-test-streamlit'
|
201
169
|
Provides-Extra: zzz-test-sys
|
202
|
-
Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-sys'
|
203
170
|
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-sys'
|
204
171
|
Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-sys'
|
205
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-sys'
|
206
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-sys'
|
207
172
|
Provides-Extra: zzz-test-tempfile
|
208
173
|
Provides-Extra: zzz-test-tenacity
|
209
174
|
Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-tenacity'
|
@@ -213,24 +178,18 @@ Provides-Extra: zzz-test-timer
|
|
213
178
|
Provides-Extra: zzz-test-traceback
|
214
179
|
Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-traceback'
|
215
180
|
Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-traceback'
|
216
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-traceback'
|
217
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-traceback'
|
218
181
|
Provides-Extra: zzz-test-types
|
219
182
|
Provides-Extra: zzz-test-typing
|
220
183
|
Requires-Dist: polars-lts-cpu<1.31,>=1.30.0; extra == 'zzz-test-typing'
|
221
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-typing'
|
222
184
|
Provides-Extra: zzz-test-tzlocal
|
223
|
-
Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-tzlocal'
|
224
185
|
Provides-Extra: zzz-test-uuid
|
225
186
|
Provides-Extra: zzz-test-version
|
226
187
|
Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-version'
|
227
188
|
Provides-Extra: zzz-test-warnings
|
228
189
|
Provides-Extra: zzz-test-whenever
|
229
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-whenever'
|
230
190
|
Provides-Extra: zzz-test-zipfile
|
231
191
|
Provides-Extra: zzz-test-zoneinfo
|
232
192
|
Requires-Dist: tzdata<2025.3,>=2025.2; extra == 'zzz-test-zoneinfo'
|
233
|
-
Requires-Dist: whenever<0.9,>=0.8.5; extra == 'zzz-test-zoneinfo'
|
234
193
|
Description-Content-Type: text/markdown
|
235
194
|
|
236
195
|
[](https://badge.fury.io/py/dycw-utilities)
|
@@ -13,7 +13,6 @@ dev = [
|
|
13
13
|
"aiosqlite >= 0.21.0, < 0.22",
|
14
14
|
"altair >= 5.5.0, < 5.6",
|
15
15
|
"asyncpg >= 0.30.0, < 0.31", # for sqlalchemy async
|
16
|
-
"atomicwrites >= 1.4.1, < 1.5",
|
17
16
|
"atools >= 0.14.2, < 0.15",
|
18
17
|
"cachetools >= 5.5.2, < 5.6",
|
19
18
|
"click >= 8.2.1, < 8.3",
|
@@ -63,12 +62,10 @@ dev = [
|
|
63
62
|
"tenacity >= 8.5.0, < 9.0", # limited by luigi
|
64
63
|
"tomlkit >= 0.13.2, < 0.14",
|
65
64
|
"tzdata >= 2025.2, < 2025.3",
|
66
|
-
"tzlocal >= 5.3.1, < 5.4",
|
67
65
|
"uvicorn >= 0.34.1, < 0.35",
|
68
66
|
"vegafusion >= 2.0.2, < 2.1",
|
69
67
|
"vegafusion-python-embed >= 1.6.9, < 1.7",
|
70
68
|
"vl-convert-python >= 1.8.0, < 1.9",
|
71
|
-
"whenever >= 0.8.5, < 0.9",
|
72
69
|
# test
|
73
70
|
"coverage-conditional-plugin >= 0.9.0, < 0.10",
|
74
71
|
"dycw-pytest-only >= 2.1.1, < 2.2",
|
@@ -89,19 +86,19 @@ dev = [
|
|
89
86
|
[project]
|
90
87
|
authors = [{name = "Derek Wan", email = "d.wan@icloud.com"}]
|
91
88
|
dependencies = [
|
89
|
+
"atomicwrites >= 1.4.1, < 1.5",
|
92
90
|
"typing-extensions >= 4.14.0, < 4.15",
|
91
|
+
"tzlocal >= 5.3.1, < 5.4",
|
92
|
+
"whenever >= 0.8.5, < 0.9",
|
93
93
|
]
|
94
94
|
name = "dycw-utilities"
|
95
95
|
readme = "README.md"
|
96
96
|
requires-python = ">= 3.12"
|
97
|
-
version = "0.131.
|
97
|
+
version = "0.131.3"
|
98
98
|
|
99
99
|
[project.optional-dependencies]
|
100
100
|
logging = [
|
101
|
-
"atomicwrites >= 1.4.1, < 1.5",
|
102
101
|
"coloredlogs >= 15.0.1, < 15.1",
|
103
|
-
"tzlocal >= 5.3.1, < 5.4",
|
104
|
-
"whenever >= 0.8.5, < 0.9",
|
105
102
|
]
|
106
103
|
test = [
|
107
104
|
"dycw-pytest-only >= 2.1.1, < 2.2",
|
@@ -123,14 +120,12 @@ zzz-test-aiolimiter = [
|
|
123
120
|
]
|
124
121
|
zzz-test-altair = [
|
125
122
|
"altair >= 5.5.0, < 5.6",
|
126
|
-
"atomicwrites >= 1.4.1, < 1.5",
|
127
123
|
"img2pdf >= 0.6.0, < 0.7",
|
128
124
|
"polars-lts-cpu >= 1.30.0, < 1.31",
|
129
125
|
"vl-convert-python >= 1.8.0, < 1.9",
|
130
|
-
"whenever >= 0.8.5, < 0.9",
|
131
126
|
]
|
132
127
|
zzz-test-asyncio = []
|
133
|
-
zzz-test-atomicwrites = [
|
128
|
+
zzz-test-atomicwrites = []
|
134
129
|
zzz-test-atools = [
|
135
130
|
"atools >= 0.14.2, < 0.15",
|
136
131
|
]
|
@@ -138,7 +133,6 @@ zzz-test-cachetools = ["cachetools >= 5.5.2, < 5.6"]
|
|
138
133
|
zzz-test-click = [
|
139
134
|
"click >= 8.2.1, < 8.3",
|
140
135
|
"sqlalchemy >= 2.0.41, < 2.1",
|
141
|
-
"whenever >= 0.8.5, < 0.9",
|
142
136
|
]
|
143
137
|
zzz-test-contextlib = []
|
144
138
|
zzz-test-contextvars = []
|
@@ -147,11 +141,8 @@ zzz-test-cvxpy = ["cvxpy >= 1.6.5, < 1.7"]
|
|
147
141
|
zzz-test-dataclasses = [
|
148
142
|
"orjson >= 3.10.15, < 3.11",
|
149
143
|
"polars-lts-cpu >= 1.30.0, < 1.31",
|
150
|
-
"whenever >= 0.8.5, < 0.9",
|
151
144
|
]
|
152
145
|
zzz-test-datetime = [
|
153
|
-
"tzlocal >= 5.3.1, < 5.4",
|
154
|
-
"whenever >= 0.8.5, < 0.9",
|
155
146
|
]
|
156
147
|
zzz-test-enum = []
|
157
148
|
zzz-test-errors = []
|
@@ -163,7 +154,6 @@ zzz-test-fastapi = [
|
|
163
154
|
]
|
164
155
|
zzz-test-fpdf2 = [
|
165
156
|
"fpdf2 >= 2.8.3, < 2.9",
|
166
|
-
"tzlocal >= 5.3.1, < 5.4",
|
167
157
|
]
|
168
158
|
zzz-test-functions = []
|
169
159
|
zzz-test-functools = []
|
@@ -172,12 +162,9 @@ zzz-test-git = []
|
|
172
162
|
zzz-test-hashlib = [
|
173
163
|
"polars-lts-cpu >= 1.30.0, < 1.31",
|
174
164
|
"orjson >= 3.10.15, < 3.11",
|
175
|
-
"whenever >= 0.8.5, < 0.9",
|
176
165
|
]
|
177
166
|
zzz-test-http = [
|
178
|
-
"atomicwrites >= 1.4.1, < 1.5",
|
179
167
|
"orjson >= 3.10.18, < 3.11",
|
180
|
-
"whenever >= 0.8.5, < 0.9",
|
181
168
|
]
|
182
169
|
zzz-test-hypothesis = [
|
183
170
|
"aiosqlite >= 0.21.0, < 0.22",
|
@@ -190,13 +177,10 @@ zzz-test-hypothesis = [
|
|
190
177
|
"redis >= 6.2.0, < 6.3",
|
191
178
|
"sqlalchemy >= 2.0.41, < 2.1",
|
192
179
|
"tenacity >= 8.5.0, < 9.0", # limited by luigi
|
193
|
-
"tzlocal >= 5.3.1, < 5.4",
|
194
|
-
"whenever >= 0.8.5, < 0.9",
|
195
180
|
]
|
196
181
|
zzz-test-ipython = ["ipython >= 9.0.1, < 9.1"]
|
197
182
|
zzz-test-iterables = [
|
198
183
|
"polars-lts-cpu >= 1.30.0, < 1.31",
|
199
|
-
"whenever >= 0.8.5, < 0.9",
|
200
184
|
]
|
201
185
|
zzz-test-jupyter = [
|
202
186
|
"jupyterlab >= 4.2.0, < 4.3",
|
@@ -204,16 +188,12 @@ zzz-test-jupyter = [
|
|
204
188
|
"polars-lts-cpu >= 1.30.0, < 1.31",
|
205
189
|
]
|
206
190
|
zzz-test-logging = [
|
207
|
-
"atomicwrites >= 1.4.1, < 1.5",
|
208
191
|
"coloredlogs >= 15.0.1, < 15.1",
|
209
192
|
"rich >= 14.0.0, < 14.1",
|
210
193
|
"tomlkit >= 0.13.2, < 0.14",
|
211
|
-
"tzlocal >= 5.3.1, < 5.4",
|
212
|
-
"whenever >= 0.8.5, < 0.9",
|
213
194
|
]
|
214
195
|
zzz-test-luigi = [
|
215
196
|
"luigi >= 3.6.0, < 3.7",
|
216
|
-
"whenever >= 0.8.5, < 0.9",
|
217
197
|
]
|
218
198
|
zzz-test-math = ["numpy >= 2.3.0, < 2.4"]
|
219
199
|
zzz-test-memory-profiler = ["memory-profiler >= 0.61.0, < 0.62"]
|
@@ -222,44 +202,34 @@ zzz-test-more-itertools = ["more-itertools >= 10.7.0, < 10.8"]
|
|
222
202
|
zzz-test-numpy = ["numpy >= 2.3.0, < 2.4"]
|
223
203
|
zzz-test-operator = [
|
224
204
|
"polars-lts-cpu >= 1.30.0, < 1.31",
|
225
|
-
"whenever >= 0.8.5, < 0.9",
|
226
205
|
]
|
227
206
|
zzz-test-optuna = ["optuna >= 4.3.0, < 4.4"]
|
228
207
|
zzz-test-orjson = [
|
229
208
|
"orjson >= 3.10.15, < 3.11",
|
230
209
|
"polars-lts-cpu >= 1.30.0, < 1.31",
|
231
210
|
"rich >= 14.0.0, < 14.1",
|
232
|
-
"tzlocal >= 5.3.1, < 5.4",
|
233
|
-
"whenever >= 0.8.5, < 0.9",
|
234
211
|
]
|
235
212
|
zzz-test-os = []
|
236
213
|
zzz-test-pathlib = []
|
237
|
-
zzz-test-pickle = [
|
214
|
+
zzz-test-pickle = []
|
238
215
|
zzz-test-platform = []
|
239
216
|
zzz-test-polars = [
|
240
217
|
"polars-lts-cpu >= 1.30.0, < 1.31",
|
241
|
-
"whenever >= 0.8.5, < 0.9",
|
242
218
|
]
|
243
219
|
zzz-test-pqdm = ["pqdm >= 0.2.0, < 0.3"]
|
244
220
|
zzz-test-pydantic = [
|
245
|
-
"atomicwrites >= 1.4.1, < 1.5",
|
246
221
|
"pydantic >= 2.11.4, < 2.12",
|
247
222
|
]
|
248
223
|
zzz-test-pyinstrument = [
|
249
|
-
"atomicwrites >= 1.4.1, < 1.5",
|
250
224
|
"pyinstrument >= 5.0.2, < 5.1",
|
251
|
-
"tzlocal >= 5.3.1, < 5.4",
|
252
225
|
]
|
253
226
|
zzz-test-pyrsistent = ["pyrsistent >= 0.20.0, < 0.21"]
|
254
227
|
zzz-test-pytest = [
|
255
|
-
"atomicwrites >= 1.4.1, < 1.5",
|
256
228
|
"orjson >= 3.10.18, < 3.11",
|
257
|
-
"whenever >= 0.8.5, < 0.9",
|
258
229
|
]
|
259
230
|
zzz-test-pytest-regressions = ["pytest-regressions >= 2.8.0, < 2.9"]
|
260
231
|
zzz-test-python-dotenv = [
|
261
232
|
"python-dotenv >= 1.1.0, < 1.2",
|
262
|
-
"whenever >= 0.8.5, < 0.9",
|
263
233
|
]
|
264
234
|
zzz-test-random = []
|
265
235
|
zzz-test-re = []
|
@@ -269,8 +239,6 @@ zzz-test-redis = [
|
|
269
239
|
"redis >= 6.2.0, < 6.3",
|
270
240
|
"rich >= 14.0.0, < 14.1",
|
271
241
|
"tenacity >= 8.5.0, < 9.0", # limited by luigi
|
272
|
-
"tzlocal >= 5.3.1, < 5.4",
|
273
|
-
"whenever >= 0.8.5, < 0.9",
|
274
242
|
]
|
275
243
|
zzz-test-rich = ["rich >= 14.0.0, < 14.1"]
|
276
244
|
zzz-test-scipy = ["scipy >= 1.15.3, < 1.16"]
|
@@ -297,15 +265,11 @@ zzz-test-sqlalchemy-polars = [
|
|
297
265
|
"polars-lts-cpu >= 1.30.0, < 1.31",
|
298
266
|
"sqlalchemy >= 2.0.41, < 2.1",
|
299
267
|
"tenacity >= 8.5.0, < 9.0", # limited by luigi
|
300
|
-
"whenever >= 0.8.5, < 0.9",
|
301
268
|
]
|
302
269
|
zzz-test-streamlit = ["streamlit >= 1.45.0, < 1.46"]
|
303
270
|
zzz-test-sys = [
|
304
|
-
"atomicwrites >= 1.4.1, < 1.5",
|
305
271
|
"rich >= 14.0.0, < 14.1",
|
306
272
|
"tomlkit >= 0.13.2, < 0.14",
|
307
|
-
"tzlocal >= 5.3.1, < 5.4",
|
308
|
-
"whenever >= 0.8.5, < 0.9",
|
309
273
|
]
|
310
274
|
zzz-test-tempfile = []
|
311
275
|
zzz-test-tenacity = [
|
@@ -317,23 +281,19 @@ zzz-test-timer = []
|
|
317
281
|
zzz-test-traceback = [
|
318
282
|
"rich >= 14.0.0, < 14.1",
|
319
283
|
"tomlkit >= 0.13.2, < 0.14",
|
320
|
-
"tzlocal >= 5.3.1, < 5.4",
|
321
|
-
"whenever >= 0.8.5, < 0.9",
|
322
284
|
]
|
323
285
|
zzz-test-types = []
|
324
286
|
zzz-test-typing = [
|
325
287
|
"polars-lts-cpu >= 1.30.0, < 1.31",
|
326
|
-
"whenever >= 0.8.5, < 0.9",
|
327
288
|
]
|
328
|
-
zzz-test-tzlocal = [
|
289
|
+
zzz-test-tzlocal = []
|
329
290
|
zzz-test-uuid = []
|
330
291
|
zzz-test-version = ["tomlkit >= 0.13.2, < 0.14"]
|
331
292
|
zzz-test-warnings = []
|
332
|
-
zzz-test-whenever = [
|
293
|
+
zzz-test-whenever = []
|
333
294
|
zzz-test-zipfile = []
|
334
295
|
zzz-test-zoneinfo = [
|
335
296
|
"tzdata >= 2025.2, < 2025.3",
|
336
|
-
"whenever >= 0.8.5, < 0.9",
|
337
297
|
]
|
338
298
|
|
339
299
|
[project.scripts]
|
@@ -341,7 +301,7 @@ zzz-test-zoneinfo = [
|
|
341
301
|
# bump-my-version
|
342
302
|
[tool.bumpversion]
|
343
303
|
allow_dirty = true
|
344
|
-
current_version = "0.131.
|
304
|
+
current_version = "0.131.3"
|
345
305
|
|
346
306
|
[[tool.bumpversion.files]]
|
347
307
|
filename = "src/utilities/__init__.py"
|
@@ -354,6 +314,7 @@ search = "__version__ = \"{current_version}\""
|
|
354
314
|
[tool.coverage.coverage_conditional_plugin.rules]
|
355
315
|
skipif-ci = '"CI" in os_environ'
|
356
316
|
skipif-ci-and-not-linux = '("CI" in os_environ) and (sys_platform != "linux")'
|
317
|
+
skipif-ci-and-not-windows = '("CI" in os_environ) and (sys_platform != "windows")'
|
357
318
|
skipif-ci-and-windows = '("CI" in os_environ) and (sys_platform != "windows")'
|
358
319
|
skipif-linux = 'sys_platform == "linux"'
|
359
320
|
skipif-mac = 'sys_platform == "darwin"'
|
@@ -28,6 +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
32
|
|
32
33
|
from tests.conftest import SKIPIF_CI_AND_WINDOWS
|
33
34
|
from utilities.datetime import (
|
@@ -50,8 +51,10 @@ from utilities.hypothesis import (
|
|
50
51
|
_Draw2InputResolvedToSentinelError,
|
51
52
|
assume_does_not_raise,
|
52
53
|
bool_arrays,
|
54
|
+
date_deltas_whenever,
|
53
55
|
date_durations,
|
54
56
|
dates_two_digit_year,
|
57
|
+
dates_whenever,
|
55
58
|
datetime_durations,
|
56
59
|
draw2,
|
57
60
|
float32s,
|
@@ -73,6 +76,7 @@ from utilities.hypothesis import (
|
|
73
76
|
pairs,
|
74
77
|
paths,
|
75
78
|
plain_datetimes,
|
79
|
+
plain_datetimes_whenever,
|
76
80
|
random_states,
|
77
81
|
sentinels,
|
78
82
|
sets_fixed_length,
|
@@ -94,6 +98,7 @@ from utilities.hypothesis import (
|
|
94
98
|
uint64s,
|
95
99
|
versions,
|
96
100
|
zoned_datetimes,
|
101
|
+
zoned_datetimes_whenever,
|
97
102
|
)
|
98
103
|
from utilities.math import (
|
99
104
|
MAX_FLOAT32,
|
@@ -178,6 +183,31 @@ class TestBoolArrays:
|
|
178
183
|
assert array.shape == shape
|
179
184
|
|
180
185
|
|
186
|
+
class TestDateDeltas:
|
187
|
+
@given(data=data())
|
188
|
+
def test_main(self, *, data: DataObject) -> None:
|
189
|
+
min_value = data.draw(date_deltas_whenever() | none())
|
190
|
+
max_value = data.draw(date_deltas_whenever() | none())
|
191
|
+
with assume_does_not_raise(InvalidArgument):
|
192
|
+
delta = data.draw(
|
193
|
+
date_deltas_whenever(min_value=min_value, max_value=max_value)
|
194
|
+
)
|
195
|
+
assert isinstance(delta, DateDelta)
|
196
|
+
years, months, days = delta.in_years_months_days()
|
197
|
+
assert years == 0
|
198
|
+
assert months == 0
|
199
|
+
if min_value is not None:
|
200
|
+
min_years, min_months, min_days = min_value.in_years_months_days()
|
201
|
+
assert min_years == 0
|
202
|
+
assert min_months == 0
|
203
|
+
assert days >= min_days
|
204
|
+
if max_value is not None:
|
205
|
+
max_years, max_months, max_days = max_value.in_years_months_days()
|
206
|
+
assert max_years == 0
|
207
|
+
assert max_months == 0
|
208
|
+
assert days <= max_days
|
209
|
+
|
210
|
+
|
181
211
|
class TestDateDurations:
|
182
212
|
@given(
|
183
213
|
data=data(),
|
@@ -257,6 +287,20 @@ class TestDatesTwoDigitYear:
|
|
257
287
|
assert date.year == parsed
|
258
288
|
|
259
289
|
|
290
|
+
class TestDatesWhenever:
|
291
|
+
@given(data=data())
|
292
|
+
def test_main(self, *, data: DataObject) -> None:
|
293
|
+
min_value = data.draw(dates_whenever() | none())
|
294
|
+
max_value = data.draw(dates_whenever() | none())
|
295
|
+
with assume_does_not_raise(InvalidArgument):
|
296
|
+
date = data.draw(dates_whenever(min_value=min_value, max_value=max_value))
|
297
|
+
assert isinstance(date, Date)
|
298
|
+
if min_value is not None:
|
299
|
+
assert date >= min_value
|
300
|
+
if max_value is not None:
|
301
|
+
assert date <= max_value
|
302
|
+
|
303
|
+
|
260
304
|
class TestDateTimeDurations:
|
261
305
|
@given(
|
262
306
|
data=data(),
|
@@ -840,6 +884,22 @@ class TestPlainDateTimes:
|
|
840
884
|
_ = data.draw(plain_datetimes(round_="standard"))
|
841
885
|
|
842
886
|
|
887
|
+
class TestPlainDateTimesWhenever:
|
888
|
+
@given(data=data())
|
889
|
+
def test_main(self, *, data: DataObject) -> None:
|
890
|
+
min_value = data.draw(plain_datetimes_whenever() | none())
|
891
|
+
max_value = data.draw(plain_datetimes_whenever() | none())
|
892
|
+
with assume_does_not_raise(InvalidArgument):
|
893
|
+
datetime = data.draw(
|
894
|
+
plain_datetimes_whenever(min_value=min_value, max_value=max_value)
|
895
|
+
)
|
896
|
+
assert isinstance(datetime, PlainDateTime)
|
897
|
+
if min_value is not None:
|
898
|
+
assert datetime >= min_value
|
899
|
+
if max_value is not None:
|
900
|
+
assert datetime <= max_value
|
901
|
+
|
902
|
+
|
843
903
|
class TestRandomStates:
|
844
904
|
@given(data=data())
|
845
905
|
def test_main(self, *, data: DataObject) -> None:
|
@@ -1198,3 +1258,23 @@ class TestZonedDateTimes:
|
|
1198
1258
|
ZonedDateTimesError, match="Rounding requires a timedelta; got None"
|
1199
1259
|
):
|
1200
1260
|
_ = data.draw(zoned_datetimes(round_="standard"))
|
1261
|
+
|
1262
|
+
|
1263
|
+
class TestZonedDateTimesWhenever:
|
1264
|
+
@given(data=data(), time_zone=timezones())
|
1265
|
+
@settings(suppress_health_check={HealthCheck.filter_too_much})
|
1266
|
+
def test_main(self, *, data: DataObject, time_zone: ZoneInfo) -> None:
|
1267
|
+
min_value = data.draw(zoned_datetimes_whenever() | none())
|
1268
|
+
max_value = data.draw(zoned_datetimes_whenever() | none())
|
1269
|
+
with assume_does_not_raise(InvalidArgument):
|
1270
|
+
datetime = data.draw(
|
1271
|
+
zoned_datetimes_whenever(
|
1272
|
+
min_value=min_value, max_value=max_value, time_zone=time_zone
|
1273
|
+
)
|
1274
|
+
)
|
1275
|
+
assert isinstance(datetime, ZonedDateTime)
|
1276
|
+
assert datetime.tz == time_zone.key
|
1277
|
+
if min_value is not None:
|
1278
|
+
assert datetime >= min_value
|
1279
|
+
if max_value is not None:
|
1280
|
+
assert datetime <= max_value
|
@@ -5,6 +5,7 @@ from zoneinfo import ZoneInfo
|
|
5
5
|
|
6
6
|
from utilities.tzdata import HongKong, Tokyo
|
7
7
|
from utilities.tzlocal import (
|
8
|
+
LOCAL_TIME_ZONE,
|
8
9
|
NOW_LOCAL,
|
9
10
|
TODAY_LOCAL,
|
10
11
|
get_local_time_zone,
|
@@ -15,10 +16,13 @@ from utilities.zoneinfo import UTC
|
|
15
16
|
|
16
17
|
|
17
18
|
class TestGetLocalTimeZone:
|
18
|
-
def
|
19
|
+
def test_function(self) -> None:
|
19
20
|
time_zone = get_local_time_zone()
|
20
21
|
assert isinstance(time_zone, ZoneInfo)
|
21
22
|
|
23
|
+
def test_constant(self) -> None:
|
24
|
+
assert isinstance(LOCAL_TIME_ZONE, ZoneInfo)
|
25
|
+
|
22
26
|
|
23
27
|
class TestGetNowLocal:
|
24
28
|
def test_function(self) -> None:
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
2
2
|
|
3
3
|
import datetime as dt
|
4
4
|
from datetime import timezone
|
5
|
-
from logging import DEBUG
|
6
5
|
from re import escape
|
7
6
|
from typing import TYPE_CHECKING
|
8
7
|
from zoneinfo import ZoneInfo
|
@@ -21,7 +20,7 @@ from hypothesis.strategies import (
|
|
21
20
|
timezones,
|
22
21
|
)
|
23
22
|
from pytest import raises
|
24
|
-
from whenever import DateTimeDelta
|
23
|
+
from whenever import DateTimeDelta
|
25
24
|
|
26
25
|
from tests.conftest import SKIPIF_CI_AND_WINDOWS
|
27
26
|
from utilities.datetime import (
|
@@ -61,7 +60,6 @@ from utilities.whenever import (
|
|
61
60
|
SerializePlainDateTimeError,
|
62
61
|
SerializeTimeDeltaError,
|
63
62
|
SerializeZonedDateTimeError,
|
64
|
-
WheneverLogRecord,
|
65
63
|
_CheckValidZonedDateTimeUnequalError,
|
66
64
|
_EnsureTimedeltaNanosecondError,
|
67
65
|
_EnsureTimedeltaParseError,
|
@@ -495,20 +493,3 @@ class TestToDateTimeDelta:
|
|
495
493
|
_ToDateTimeDeltaError, match="Unable to create DateTimeDelta; got .*"
|
496
494
|
):
|
497
495
|
_ = _to_datetime_delta(timedelta)
|
498
|
-
|
499
|
-
|
500
|
-
class TestWheneverLogRecord:
|
501
|
-
def test_init(self) -> None:
|
502
|
-
_ = WheneverLogRecord("name", DEBUG, "pathname", 0, None, None, None)
|
503
|
-
|
504
|
-
def test_get_length(self) -> None:
|
505
|
-
assert isinstance(WheneverLogRecord._get_length(), int)
|
506
|
-
|
507
|
-
def test_get_now(self) -> None:
|
508
|
-
assert isinstance(WheneverLogRecord._get_now(), ZonedDateTime)
|
509
|
-
|
510
|
-
def test_get_time_zone(self) -> None:
|
511
|
-
assert isinstance(WheneverLogRecord._get_time_zone(), ZoneInfo)
|
512
|
-
|
513
|
-
def test_get_time_zone_key(self) -> None:
|
514
|
-
assert isinstance(WheneverLogRecord._get_time_zone_key(), str)
|