dycw-utilities 0.131.2__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.2 → dycw_utilities-0.131.3}/PKG-INFO +4 -45
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/pyproject.toml +9 -49
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_tzlocal.py +5 -1
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_whenever2.py +0 -6
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/altair.py +1 -4
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/fastapi.py +2 -3
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/fpdf2.py +2 -2
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/hypothesis.py +2 -4
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/lightweight_charts.py +1 -2
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/logging.py +2 -4
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/orjson.py +0 -2
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/pickle.py +2 -2
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/pydantic.py +2 -2
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/pyinstrument.py +1 -2
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/pytest.py +1 -2
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/traceback.py +3 -7
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/tzlocal.py +6 -1
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/whenever2.py +2 -20
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/zoneinfo.py +2 -2
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/.gitignore +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/LICENSE +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/README.md +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_statsmodel.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/click.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/git.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/http.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/math.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/os.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/period.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/random.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/re.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/string.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/text.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/types.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/version.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.131.2 → dycw_utilities-0.131.3}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.131.2 → 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"
|
@@ -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:
|
@@ -186,9 +186,3 @@ class TestWheneverLogRecord:
|
|
186
186
|
|
187
187
|
def test_get_length(self) -> None:
|
188
188
|
assert isinstance(WheneverLogRecord._get_length(), int)
|
189
|
-
|
190
|
-
def test_get_time_zone(self) -> None:
|
191
|
-
assert isinstance(WheneverLogRecord._get_time_zone(), ZoneInfo)
|
192
|
-
|
193
|
-
def test_get_time_zone_key(self) -> None:
|
194
|
-
assert isinstance(WheneverLogRecord._get_time_zone_key(), str)
|
@@ -23,6 +23,7 @@ from altair import (
|
|
23
23
|
)
|
24
24
|
from altair.utils.schemapi import Undefined
|
25
25
|
|
26
|
+
from utilities.atomicwrites import writer
|
26
27
|
from utilities.functions import ensure_bytes, ensure_number
|
27
28
|
from utilities.iterables import always_iterable
|
28
29
|
from utilities.tempfile import TemporaryDirectory
|
@@ -265,8 +266,6 @@ def save_chart(
|
|
265
266
|
chart: _ChartLike, path: PathLike, /, *, overwrite: bool = False
|
266
267
|
) -> None:
|
267
268
|
"""Atomically save a chart to disk."""
|
268
|
-
from utilities.atomicwrites import writer
|
269
|
-
|
270
269
|
with writer(path, overwrite=overwrite) as temp:
|
271
270
|
chart.save(str(temp), format="png")
|
272
271
|
|
@@ -280,8 +279,6 @@ def save_charts_as_pdf(
|
|
280
279
|
"""Atomically save a chart/set of charts to disk."""
|
281
280
|
from img2pdf import convert
|
282
281
|
|
283
|
-
from utilities.atomicwrites import writer
|
284
|
-
|
285
282
|
with TemporaryDirectory() as temp_dir:
|
286
283
|
temp_paths = [temp_dir.joinpath(f"{i}.png") for i in range(len(charts))]
|
287
284
|
for chart, temp_path in zip(charts, temp_paths, strict=True):
|
@@ -9,6 +9,8 @@ from uvicorn import Config, Server
|
|
9
9
|
|
10
10
|
from utilities.asyncio import Looper
|
11
11
|
from utilities.datetime import SECOND, datetime_duration_to_float
|
12
|
+
from utilities.tzlocal import get_now_local # skipif-ci
|
13
|
+
from utilities.whenever import serialize_zoned_datetime # skipif-ci
|
12
14
|
|
13
15
|
if TYPE_CHECKING:
|
14
16
|
from types import TracebackType
|
@@ -29,9 +31,6 @@ class _PingerReceiverApp(FastAPI):
|
|
29
31
|
|
30
32
|
@self.get("/ping") # skipif-ci
|
31
33
|
def ping() -> str:
|
32
|
-
from utilities.tzlocal import get_now_local # skipif-ci
|
33
|
-
from utilities.whenever import serialize_zoned_datetime # skipif-ci
|
34
|
-
|
35
34
|
now = serialize_zoned_datetime(get_now_local()) # skipif-ci
|
36
35
|
return f"pong @ {now}" # skipif-ci
|
37
36
|
|
@@ -6,6 +6,8 @@ from typing import TYPE_CHECKING, override
|
|
6
6
|
from fpdf import FPDF
|
7
7
|
from fpdf.enums import XPos, YPos
|
8
8
|
|
9
|
+
from utilities.tzlocal import get_now_local
|
10
|
+
|
9
11
|
if TYPE_CHECKING:
|
10
12
|
from collections.abc import Iterator
|
11
13
|
|
@@ -43,8 +45,6 @@ def yield_pdf(*, header: str | None = None) -> Iterator[_BasePDF]:
|
|
43
45
|
|
44
46
|
@override
|
45
47
|
def footer(self) -> None:
|
46
|
-
from utilities.tzlocal import get_now_local
|
47
|
-
|
48
48
|
self.set_y(-15)
|
49
49
|
self.set_font(family="Helvetica", style="I", size=8)
|
50
50
|
page_no, now = self.page_no(), get_now_local()
|
@@ -47,7 +47,7 @@ from hypothesis.strategies import (
|
|
47
47
|
uuids,
|
48
48
|
)
|
49
49
|
from hypothesis.utils.conventions import not_set
|
50
|
-
from whenever import Date, DateDelta
|
50
|
+
from whenever import Date, DateDelta, PlainDateTime
|
51
51
|
|
52
52
|
from utilities.datetime import (
|
53
53
|
DATETIME_MAX_NAIVE,
|
@@ -97,7 +97,7 @@ if TYPE_CHECKING:
|
|
97
97
|
|
98
98
|
from hypothesis.database import ExampleDatabase
|
99
99
|
from numpy.random import RandomState
|
100
|
-
from whenever import
|
100
|
+
from whenever import ZonedDateTime
|
101
101
|
|
102
102
|
from utilities.numpy import NDArrayB, NDArrayF, NDArrayI, NDArrayO
|
103
103
|
from utilities.types import Duration, Number, RoundMode, TimeZoneLike
|
@@ -1050,8 +1050,6 @@ def plain_datetimes_whenever(
|
|
1050
1050
|
max_value: MaybeSearchStrategy[PlainDateTime | None] = None,
|
1051
1051
|
) -> PlainDateTime:
|
1052
1052
|
"""Strategy for generating plain datetimes."""
|
1053
|
-
from whenever import PlainDateTime
|
1054
|
-
|
1055
1053
|
from utilities.whenever2 import PLAIN_DATE_TIME_MAX, PLAIN_DATE_TIME_MIN
|
1056
1054
|
|
1057
1055
|
min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
|
@@ -4,6 +4,7 @@ from contextlib import asynccontextmanager
|
|
4
4
|
from dataclasses import dataclass
|
5
5
|
from typing import TYPE_CHECKING, override
|
6
6
|
|
7
|
+
from utilities.atomicwrites import writer # pragma: no cover
|
7
8
|
from utilities.iterables import OneEmptyError, OneNonUniqueError, one
|
8
9
|
from utilities.reprlib import get_repr
|
9
10
|
|
@@ -23,8 +24,6 @@ if TYPE_CHECKING:
|
|
23
24
|
|
24
25
|
def save_chart(chart: Chart, path: PathLike, /, *, overwrite: bool = False) -> None:
|
25
26
|
"""Atomically save a chart to disk."""
|
26
|
-
from utilities.atomicwrites import writer # pragma: no cover
|
27
|
-
|
28
27
|
chart.show(block=False) # pragma: no cover
|
29
28
|
with ( # pragma: no cover
|
30
29
|
writer(path, overwrite=overwrite) as temp,
|
@@ -32,6 +32,7 @@ from typing import (
|
|
32
32
|
override,
|
33
33
|
)
|
34
34
|
|
35
|
+
from utilities.atomicwrites import move_many
|
35
36
|
from utilities.dataclasses import replace_non_sentinel
|
36
37
|
from utilities.datetime import (
|
37
38
|
SECOND,
|
@@ -43,6 +44,7 @@ from utilities.errors import ImpossibleCaseError
|
|
43
44
|
from utilities.iterables import OneEmptyError, always_iterable, one
|
44
45
|
from utilities.pathlib import ensure_suffix, get_path
|
45
46
|
from utilities.sentinel import Sentinel, sentinel
|
47
|
+
from utilities.tzlocal import get_now_local
|
46
48
|
|
47
49
|
if TYPE_CHECKING:
|
48
50
|
from collections.abc import Callable, Iterable, Mapping
|
@@ -426,8 +428,6 @@ def _compute_rollover_actions(
|
|
426
428
|
patterns: _RolloverPatterns | None = None,
|
427
429
|
backup_count: int = 1,
|
428
430
|
) -> _RolloverActions:
|
429
|
-
from utilities.tzlocal import get_now_local
|
430
|
-
|
431
431
|
patterns = (
|
432
432
|
_compute_rollover_patterns(stem, suffix) if patterns is None else patterns
|
433
433
|
)
|
@@ -470,8 +470,6 @@ class _RolloverActions:
|
|
470
470
|
rotations: set[_Rotation] = field(default_factory=set)
|
471
471
|
|
472
472
|
def do(self) -> None:
|
473
|
-
from utilities.atomicwrites import move_many
|
474
|
-
|
475
473
|
for deletion in self.deletions:
|
476
474
|
deletion.delete()
|
477
475
|
move_many(*((r.file.path, r.destination) for r in self.rotations))
|
@@ -4,6 +4,8 @@ import gzip
|
|
4
4
|
from pickle import dump, load
|
5
5
|
from typing import TYPE_CHECKING, Any
|
6
6
|
|
7
|
+
from utilities.atomicwrites import writer
|
8
|
+
|
7
9
|
if TYPE_CHECKING:
|
8
10
|
from utilities.types import PathLike
|
9
11
|
|
@@ -16,8 +18,6 @@ def read_pickle(path: PathLike, /) -> Any:
|
|
16
18
|
|
17
19
|
def write_pickle(obj: Any, path: PathLike, /, *, overwrite: bool = False) -> None:
|
18
20
|
"""Write an object to disk."""
|
19
|
-
from utilities.atomicwrites import writer
|
20
|
-
|
21
21
|
with writer(path, overwrite=overwrite) as temp, gzip.open(temp, mode="wb") as gz:
|
22
22
|
dump(obj, gz)
|
23
23
|
|
@@ -6,6 +6,8 @@ from typing import TYPE_CHECKING, TypeVar, override
|
|
6
6
|
|
7
7
|
from pydantic import BaseModel
|
8
8
|
|
9
|
+
from utilities.atomicwrites import writer
|
10
|
+
|
9
11
|
if TYPE_CHECKING:
|
10
12
|
from utilities.types import PathLike
|
11
13
|
|
@@ -52,8 +54,6 @@ class _LoadModelIsADirectoryError(LoadModelError):
|
|
52
54
|
|
53
55
|
|
54
56
|
def save_model(model: BaseModel, path: PathLike, /, *, overwrite: bool = False) -> None:
|
55
|
-
from utilities.atomicwrites import writer
|
56
|
-
|
57
57
|
with writer(path, overwrite=overwrite) as temp, temp.open(mode="w") as fh:
|
58
58
|
_ = fh.write(model.model_dump_json())
|
59
59
|
|
@@ -6,6 +6,7 @@ from typing import TYPE_CHECKING
|
|
6
6
|
|
7
7
|
from pyinstrument.profiler import Profiler
|
8
8
|
|
9
|
+
from utilities.atomicwrites import writer
|
9
10
|
from utilities.datetime import serialize_compact
|
10
11
|
from utilities.pathlib import get_path
|
11
12
|
from utilities.tzlocal import get_now_local
|
@@ -19,8 +20,6 @@ if TYPE_CHECKING:
|
|
19
20
|
@contextmanager
|
20
21
|
def profile(*, path: MaybeCallablePathLike | None = Path.cwd) -> Iterator[None]:
|
21
22
|
"""Profile the contents of a block."""
|
22
|
-
from utilities.atomicwrites import writer
|
23
|
-
|
24
23
|
with Profiler() as profiler:
|
25
24
|
yield
|
26
25
|
filename = get_path(path=path).joinpath(
|