dycw-utilities 0.136.10__tar.gz → 0.137.0__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.136.10 → dycw_utilities-0.137.0}/PKG-INFO +1 -1
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/pyproject.toml +2 -2
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_logging.py +6 -6
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_sqlalchemy.py +2 -3
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_whenever.py +8 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/fpdf2.py +2 -2
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/logging.py +8 -3
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/pyinstrument.py +2 -2
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/traceback.py +4 -3
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/whenever.py +10 -1
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/.gitignore +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/LICENSE +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/README.md +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/click.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/git.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/http.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/math.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/os.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/period.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/random.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/re.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/string.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/text.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/types.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/version.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/utilities/zoneinfo.py +0 -0
@@ -105,7 +105,7 @@ dependencies = [
|
|
105
105
|
name = "dycw-utilities"
|
106
106
|
readme = "README.md"
|
107
107
|
requires-python = ">= 3.12"
|
108
|
-
version = "0.
|
108
|
+
version = "0.137.0"
|
109
109
|
|
110
110
|
[project.optional-dependencies]
|
111
111
|
logging = [
|
@@ -133,7 +133,7 @@ test = [
|
|
133
133
|
# bump-my-version
|
134
134
|
[tool.bumpversion]
|
135
135
|
allow_dirty = true
|
136
|
-
current_version = "0.
|
136
|
+
current_version = "0.137.0"
|
137
137
|
|
138
138
|
[[tool.bumpversion.files]]
|
139
139
|
filename = "src/utilities/__init__.py"
|
@@ -38,7 +38,7 @@ from utilities.logging import (
|
|
38
38
|
from utilities.text import unique_str
|
39
39
|
from utilities.types import LogLevel
|
40
40
|
from utilities.typing import get_args
|
41
|
-
from utilities.whenever import format_compact, get_now
|
41
|
+
from utilities.whenever import format_compact, get_now, to_local_plain
|
42
42
|
|
43
43
|
if TYPE_CHECKING:
|
44
44
|
from collections.abc import Mapping
|
@@ -192,7 +192,7 @@ class TestComputeRolloverActions:
|
|
192
192
|
|
193
193
|
await sleep(1)
|
194
194
|
tmp_path.joinpath("log.txt").touch()
|
195
|
-
now = format_compact(get_now()
|
195
|
+
now = format_compact(to_local_plain(get_now()))
|
196
196
|
tmp_path.joinpath(f"log.99__{now}__{now}.txt").touch()
|
197
197
|
actions = _compute_rollover_actions(tmp_path, "log", ".txt")
|
198
198
|
assert len(actions.deletions) == 2
|
@@ -319,7 +319,7 @@ class TestRotatingLogFile:
|
|
319
319
|
def test_from_path_with_index_and_end(
|
320
320
|
self, *, index: int, end: ZonedDateTime
|
321
321
|
) -> None:
|
322
|
-
path = Path(f"log.{index}__{format_compact(end
|
322
|
+
path = Path(f"log.{index}__{format_compact(to_local_plain(end))}.txt")
|
323
323
|
result = _RotatingLogFile.from_path(path, "log", ".txt")
|
324
324
|
assert result is not None
|
325
325
|
assert result.stem == "log"
|
@@ -334,7 +334,7 @@ class TestRotatingLogFile:
|
|
334
334
|
) -> None:
|
335
335
|
start, end = datetimes
|
336
336
|
path = Path(
|
337
|
-
f"log.{index}__{format_compact(start
|
337
|
+
f"log.{index}__{format_compact(to_local_plain(start))}__{format_compact(to_local_plain(end))}.txt"
|
338
338
|
)
|
339
339
|
result = _RotatingLogFile.from_path(path, "log", ".txt")
|
340
340
|
assert result is not None
|
@@ -366,7 +366,7 @@ class TestRotatingLogFile:
|
|
366
366
|
directory=root, stem="log", suffix=".txt", index=index, end=end
|
367
367
|
)
|
368
368
|
assert file.path == root.joinpath(
|
369
|
-
f"log.{index}__{format_compact(end
|
369
|
+
f"log.{index}__{format_compact(to_local_plain(end))}.txt"
|
370
370
|
)
|
371
371
|
|
372
372
|
@given(
|
@@ -382,7 +382,7 @@ class TestRotatingLogFile:
|
|
382
382
|
directory=root, stem="log", suffix=".txt", index=index, start=start, end=end
|
383
383
|
)
|
384
384
|
assert file.path == root.joinpath(
|
385
|
-
f"log.{index}__{format_compact(start
|
385
|
+
f"log.{index}__{format_compact(to_local_plain(start))}__{format_compact(to_local_plain(end))}.txt"
|
386
386
|
)
|
387
387
|
|
388
388
|
|
@@ -89,7 +89,7 @@ from utilities.sqlalchemy import (
|
|
89
89
|
)
|
90
90
|
from utilities.text import strip_and_dedent
|
91
91
|
from utilities.typing import get_args, get_literal_elements
|
92
|
-
from utilities.whenever import SECOND, format_compact, get_now
|
92
|
+
from utilities.whenever import SECOND, format_compact, get_now, to_local_plain
|
93
93
|
|
94
94
|
if TYPE_CHECKING:
|
95
95
|
from collections.abc import Callable, Iterator
|
@@ -102,9 +102,8 @@ if TYPE_CHECKING:
|
|
102
102
|
|
103
103
|
def _table_names() -> str:
|
104
104
|
"""Generate at unique string."""
|
105
|
-
now = get_now()
|
106
105
|
key = str(uuid4()).replace("-", "")
|
107
|
-
return f"{format_compact(
|
106
|
+
return f"{format_compact(to_local_plain(get_now()))}_{key}"
|
108
107
|
|
109
108
|
|
110
109
|
@overload
|
@@ -99,6 +99,7 @@ from utilities.whenever import (
|
|
99
99
|
to_date,
|
100
100
|
to_date_time_delta,
|
101
101
|
to_days,
|
102
|
+
to_local_plain,
|
102
103
|
to_nanos,
|
103
104
|
to_time_delta,
|
104
105
|
to_zoned_date_time,
|
@@ -636,6 +637,13 @@ class TestToDays:
|
|
636
637
|
_ = to_days(delta)
|
637
638
|
|
638
639
|
|
640
|
+
class TestToLocalPlain:
|
641
|
+
@given(date_time=zoned_datetimes())
|
642
|
+
def test_main(self, *, date_time: ZonedDateTime) -> None:
|
643
|
+
result = to_local_plain(date_time)
|
644
|
+
assert isinstance(result, PlainDateTime)
|
645
|
+
|
646
|
+
|
639
647
|
class TestToZonedDateTime:
|
640
648
|
@given(date_time=zoned_datetimes())
|
641
649
|
def test_date_time(self, *, date_time: ZonedDateTime) -> None:
|
@@ -6,7 +6,7 @@ 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.whenever import format_compact,
|
9
|
+
from utilities.whenever import format_compact, get_now, to_local_plain
|
10
10
|
|
11
11
|
if TYPE_CHECKING:
|
12
12
|
from collections.abc import Iterator
|
@@ -47,7 +47,7 @@ def yield_pdf(*, header: str | None = None) -> Iterator[_BasePDF]:
|
|
47
47
|
def footer(self) -> None:
|
48
48
|
self.set_y(-15)
|
49
49
|
self.set_font(family="Helvetica", style="I", size=8)
|
50
|
-
page_no, now = (self.page_no(), format_compact(
|
50
|
+
page_no, now = (self.page_no(), format_compact(to_local_plain(get_now())))
|
51
51
|
text = f"page {page_no}/{{}}; {now}"
|
52
52
|
_ = self.cell(
|
53
53
|
w=0,
|
@@ -45,7 +45,12 @@ from utilities.re import (
|
|
45
45
|
)
|
46
46
|
from utilities.sentinel import Sentinel, sentinel
|
47
47
|
from utilities.tzlocal import LOCAL_TIME_ZONE_NAME
|
48
|
-
from utilities.whenever import
|
48
|
+
from utilities.whenever import (
|
49
|
+
WheneverLogRecord,
|
50
|
+
format_compact,
|
51
|
+
get_now_local,
|
52
|
+
to_local_plain,
|
53
|
+
)
|
49
54
|
|
50
55
|
if TYPE_CHECKING:
|
51
56
|
from collections.abc import Callable, Iterable, Mapping
|
@@ -533,9 +538,9 @@ class _RotatingLogFile:
|
|
533
538
|
case int() as index, None, None:
|
534
539
|
tail = str(index)
|
535
540
|
case int() as index, None, ZonedDateTime() as end:
|
536
|
-
tail = f"{index}__{format_compact(end
|
541
|
+
tail = f"{index}__{format_compact(to_local_plain(end))}"
|
537
542
|
case int() as index, ZonedDateTime() as start, ZonedDateTime() as end:
|
538
|
-
tail = f"{index}__{format_compact(start
|
543
|
+
tail = f"{index}__{format_compact(to_local_plain(start))}__{format_compact(to_local_plain(end))}"
|
539
544
|
case _: # pragma: no cover
|
540
545
|
raise ImpossibleCaseError(
|
541
546
|
case=[f"{self.index=}", f"{self.start=}", f"{self.end=}"]
|
@@ -8,7 +8,7 @@ from pyinstrument.profiler import Profiler
|
|
8
8
|
|
9
9
|
from utilities.atomicwrites import writer
|
10
10
|
from utilities.pathlib import get_path
|
11
|
-
from utilities.whenever import format_compact,
|
11
|
+
from utilities.whenever import format_compact, get_now, to_local_plain
|
12
12
|
|
13
13
|
if TYPE_CHECKING:
|
14
14
|
from collections.abc import Iterator
|
@@ -22,7 +22,7 @@ def profile(*, path: MaybeCallablePathLike | None = Path.cwd) -> Iterator[None]:
|
|
22
22
|
with Profiler() as profiler:
|
23
23
|
yield
|
24
24
|
filename = get_path(path=path).joinpath(
|
25
|
-
f"profile__{format_compact(
|
25
|
+
f"profile__{format_compact(to_local_plain(get_now()))}.html"
|
26
26
|
)
|
27
27
|
with writer(filename) as temp, temp.open(mode="w") as fh:
|
28
28
|
_ = fh.write(profiler.output_html())
|
@@ -31,6 +31,7 @@ from utilities.whenever import (
|
|
31
31
|
format_compact,
|
32
32
|
get_now,
|
33
33
|
get_now_local,
|
34
|
+
to_local_plain,
|
34
35
|
to_zoned_date_time,
|
35
36
|
)
|
36
37
|
|
@@ -96,8 +97,8 @@ def _yield_header_lines(
|
|
96
97
|
"""Yield the header lines."""
|
97
98
|
now = get_now_local()
|
98
99
|
start_use = to_zoned_date_time(date_time=start)
|
99
|
-
yield f"Date/time | {format_compact(now
|
100
|
-
start_str = "" if start_use is None else format_compact(start_use
|
100
|
+
yield f"Date/time | {format_compact(now)}"
|
101
|
+
start_str = "" if start_use is None else format_compact(start_use)
|
101
102
|
yield f"Started | {start_str}"
|
102
103
|
delta = None if start_use is None else (now - start_use)
|
103
104
|
delta_str = "" if delta is None else delta.format_common_iso()
|
@@ -256,7 +257,7 @@ def _make_except_hook_inner(
|
|
256
257
|
if path is not None:
|
257
258
|
path = (
|
258
259
|
get_path(path=path)
|
259
|
-
.joinpath(format_compact(
|
260
|
+
.joinpath(format_compact(to_local_plain(get_now())))
|
260
261
|
.with_suffix(".txt")
|
261
262
|
)
|
262
263
|
full = format_exception_stack(
|
@@ -33,7 +33,7 @@ from utilities.platform import get_strftime
|
|
33
33
|
from utilities.re import ExtractGroupsError, extract_groups
|
34
34
|
from utilities.sentinel import Sentinel, sentinel
|
35
35
|
from utilities.types import DateTimeRoundUnit, MaybeStr
|
36
|
-
from utilities.tzlocal import LOCAL_TIME_ZONE
|
36
|
+
from utilities.tzlocal import LOCAL_TIME_ZONE, LOCAL_TIME_ZONE_NAME
|
37
37
|
from utilities.zoneinfo import UTC, get_time_zone_name
|
38
38
|
|
39
39
|
if TYPE_CHECKING:
|
@@ -668,6 +668,14 @@ def to_date_time_delta(nanos: int, /) -> DateTimeDelta:
|
|
668
668
|
##
|
669
669
|
|
670
670
|
|
671
|
+
def to_local_plain(date_time: ZonedDateTime, /) -> PlainDateTime:
|
672
|
+
"""Convert a datetime to its local/plain variant."""
|
673
|
+
return date_time.to_tz(LOCAL_TIME_ZONE_NAME).to_plain()
|
674
|
+
|
675
|
+
|
676
|
+
##
|
677
|
+
|
678
|
+
|
671
679
|
def to_nanos(delta: DateTimeDelta, /) -> int:
|
672
680
|
"""Compute the number of nanoseconds in a date-time delta."""
|
673
681
|
months, days, _, _ = delta.in_months_days_secs_nanos()
|
@@ -901,6 +909,7 @@ __all__ = [
|
|
901
909
|
"to_date",
|
902
910
|
"to_date_time_delta",
|
903
911
|
"to_days",
|
912
|
+
"to_local_plain",
|
904
913
|
"to_nanos",
|
905
914
|
"to_zoned_date_time",
|
906
915
|
]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_with/outer_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/modules/package_without/module_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_asyncio_classes/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_asyncio_classes/loopers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.136.10 → dycw_utilities-0.137.0}/src/tests/test_typing_funcs/with_future.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|