dycw-utilities 0.131.19__tar.gz → 0.131.20__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.19 → dycw_utilities-0.131.20}/PKG-INFO +1 -1
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/pyproject.toml +2 -2
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_datetime.py +2 -12
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_platform.py +12 -2
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/datetime.py +1 -18
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/platform.py +18 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/whenever2.py +2 -2
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/.gitignore +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/LICENSE +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/README.md +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_statsmodel.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_whenever2.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/click.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/git.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/http.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/math.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/os.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/period.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/random.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/re.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/string.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/text.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/types.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/version.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/utilities/zoneinfo.py +0 -0
@@ -94,7 +94,7 @@ dependencies = [
|
|
94
94
|
name = "dycw-utilities"
|
95
95
|
readme = "README.md"
|
96
96
|
requires-python = ">= 3.12"
|
97
|
-
version = "0.131.
|
97
|
+
version = "0.131.20"
|
98
98
|
|
99
99
|
[project.optional-dependencies]
|
100
100
|
logging = [
|
@@ -121,7 +121,7 @@ test = [
|
|
121
121
|
# bump-my-version
|
122
122
|
[tool.bumpversion]
|
123
123
|
allow_dirty = true
|
124
|
-
current_version = "0.131.
|
124
|
+
current_version = "0.131.20"
|
125
125
|
|
126
126
|
[[tool.bumpversion.files]]
|
127
127
|
filename = "src/utilities/__init__.py"
|
@@ -1,10 +1,9 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
import datetime as dt
|
4
|
-
from re import search
|
5
4
|
from typing import TYPE_CHECKING
|
6
5
|
|
7
|
-
from hypothesis import
|
6
|
+
from hypothesis import given
|
8
7
|
from hypothesis.strategies import DataObject, data, dates, integers, sampled_from
|
9
8
|
from pytest import mark, param, raises
|
10
9
|
|
@@ -17,12 +16,11 @@ from utilities.datetime import (
|
|
17
16
|
_ParseTwoDigitYearInvalidStringError,
|
18
17
|
date_to_month,
|
19
18
|
ensure_month,
|
20
|
-
maybe_sub_pct_y,
|
21
19
|
parse_month,
|
22
20
|
parse_two_digit_year,
|
23
21
|
serialize_month,
|
24
22
|
)
|
25
|
-
from utilities.hypothesis import months
|
23
|
+
from utilities.hypothesis import months
|
26
24
|
from utilities.zoneinfo import UTC
|
27
25
|
|
28
26
|
if TYPE_CHECKING:
|
@@ -36,14 +34,6 @@ class TestDateToMonth:
|
|
36
34
|
assert result == date
|
37
35
|
|
38
36
|
|
39
|
-
class TestMaybeSubPctY:
|
40
|
-
@given(text=text_clean())
|
41
|
-
def test_main(self, *, text: str) -> None:
|
42
|
-
result = maybe_sub_pct_y(text)
|
43
|
-
_ = assume(not search("%Y", result))
|
44
|
-
assert not search("%Y", result)
|
45
|
-
|
46
|
-
|
47
37
|
class TestMonth:
|
48
38
|
@mark.parametrize(
|
49
39
|
("month", "n", "expected"),
|
@@ -1,11 +1,12 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
from re import search
|
3
4
|
from typing import TYPE_CHECKING, assert_never
|
4
5
|
|
5
|
-
from hypothesis import given
|
6
|
+
from hypothesis import assume, given
|
6
7
|
from hypothesis.strategies import sampled_from, sets
|
7
8
|
|
8
|
-
from utilities.hypothesis import text_ascii
|
9
|
+
from utilities.hypothesis import text_ascii, text_clean
|
9
10
|
from utilities.platform import (
|
10
11
|
IS_LINUX,
|
11
12
|
IS_MAC,
|
@@ -17,6 +18,7 @@ from utilities.platform import (
|
|
17
18
|
SYSTEM,
|
18
19
|
System,
|
19
20
|
get_max_pid,
|
21
|
+
get_strftime,
|
20
22
|
get_system,
|
21
23
|
maybe_yield_lower_case,
|
22
24
|
)
|
@@ -51,6 +53,14 @@ class TestGetMaxPID:
|
|
51
53
|
assert_never(never)
|
52
54
|
|
53
55
|
|
56
|
+
class TestGetStrftime:
|
57
|
+
@given(text=text_clean())
|
58
|
+
def test_main(self, *, text: str) -> None:
|
59
|
+
result = get_strftime(text)
|
60
|
+
_ = assume(not search("%Y", result))
|
61
|
+
assert not search("%Y", result)
|
62
|
+
|
63
|
+
|
54
64
|
class TestGetSystem:
|
55
65
|
def test_function(self) -> None:
|
56
66
|
assert get_system() in get_args(System)
|
@@ -2,11 +2,10 @@ from __future__ import annotations
|
|
2
2
|
|
3
3
|
import datetime as dt
|
4
4
|
from dataclasses import dataclass, replace
|
5
|
-
from re import search
|
5
|
+
from re import search
|
6
6
|
from typing import Any, Self, assert_never, overload, override
|
7
7
|
|
8
8
|
from utilities.iterables import OneEmptyError, one
|
9
|
-
from utilities.platform import SYSTEM
|
10
9
|
from utilities.types import MaybeStr
|
11
10
|
from utilities.zoneinfo import UTC
|
12
11
|
|
@@ -41,22 +40,6 @@ class EnsureMonthError(Exception):
|
|
41
40
|
##
|
42
41
|
|
43
42
|
|
44
|
-
def maybe_sub_pct_y(text: str, /) -> str:
|
45
|
-
"""Substitute the `%Y' token with '%4Y' if necessary."""
|
46
|
-
match SYSTEM:
|
47
|
-
case "windows": # skipif-not-windows
|
48
|
-
return text
|
49
|
-
case "mac": # skipif-not-macos
|
50
|
-
return text
|
51
|
-
case "linux": # skipif-not-linux
|
52
|
-
return sub("%Y", "%4Y", text)
|
53
|
-
case _ as never:
|
54
|
-
assert_never(never)
|
55
|
-
|
56
|
-
|
57
|
-
##
|
58
|
-
|
59
|
-
|
60
43
|
@dataclass(order=True, unsafe_hash=True, slots=True)
|
61
44
|
class Month:
|
62
45
|
"""Represents a month in time."""
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
3
3
|
from dataclasses import dataclass
|
4
4
|
from pathlib import Path
|
5
5
|
from platform import system
|
6
|
+
from re import sub
|
6
7
|
from typing import TYPE_CHECKING, Literal, assert_never, override
|
7
8
|
|
8
9
|
if TYPE_CHECKING:
|
@@ -69,6 +70,22 @@ MAX_PID = get_max_pid()
|
|
69
70
|
##
|
70
71
|
|
71
72
|
|
73
|
+
def get_strftime(text: str, /) -> str:
|
74
|
+
"""Get a platform-specific format string."""
|
75
|
+
match SYSTEM:
|
76
|
+
case "windows": # skipif-not-windows
|
77
|
+
return text
|
78
|
+
case "mac": # skipif-not-macos
|
79
|
+
return text
|
80
|
+
case "linux": # skipif-not-linux
|
81
|
+
return sub("%Y", "%4Y", text)
|
82
|
+
case _ as never:
|
83
|
+
assert_never(never)
|
84
|
+
|
85
|
+
|
86
|
+
##
|
87
|
+
|
88
|
+
|
72
89
|
def maybe_yield_lower_case(text: Iterable[str], /) -> Iterator[str]:
|
73
90
|
"""Yield lower-cased text if the platform is case-insentive."""
|
74
91
|
match SYSTEM:
|
@@ -94,6 +111,7 @@ __all__ = [
|
|
94
111
|
"GetSystemError",
|
95
112
|
"System",
|
96
113
|
"get_max_pid",
|
114
|
+
"get_strftime",
|
97
115
|
"get_system",
|
98
116
|
"maybe_yield_lower_case",
|
99
117
|
]
|
@@ -18,8 +18,8 @@ from whenever import (
|
|
18
18
|
ZonedDateTime,
|
19
19
|
)
|
20
20
|
|
21
|
-
from utilities.datetime import maybe_sub_pct_y
|
22
21
|
from utilities.math import sign
|
22
|
+
from utilities.platform import get_strftime
|
23
23
|
from utilities.sentinel import Sentinel, sentinel
|
24
24
|
from utilities.tzlocal import LOCAL_TIME_ZONE, LOCAL_TIME_ZONE_NAME
|
25
25
|
from utilities.zoneinfo import UTC, get_time_zone_name
|
@@ -148,7 +148,7 @@ def datetime_utc(
|
|
148
148
|
def format_compact(datetime: ZonedDateTime, /) -> str:
|
149
149
|
"""Convert a zoned datetime to the local time zone, then format."""
|
150
150
|
py_datetime = datetime.round().to_tz(LOCAL_TIME_ZONE_NAME).to_plain().py_datetime()
|
151
|
-
return py_datetime.strftime(
|
151
|
+
return py_datetime.strftime(get_strftime("%Y%m%dT%H%M%S"))
|
152
152
|
|
153
153
|
|
154
154
|
##
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/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.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/modules/package_without/module_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_asyncio_classes/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/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
|
File without changes
|
{dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_typing_funcs/no_future.py
RENAMED
File without changes
|
{dycw_utilities-0.131.19 → dycw_utilities-0.131.20}/src/tests/test_typing_funcs/with_future.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|