dycw-utilities 0.155.4__tar.gz → 0.156.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.155.4 → dycw_utilities-0.156.0}/PKG-INFO +1 -1
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/pyproject.toml +3 -3
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_click.py +14 -87
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/click.py +29 -15
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/.gitignore +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/LICENSE +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/README.md +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_gzip.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_json.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_postgres.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_pytest_randomly.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_yield_access/__init__.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_yield_access/script.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_yield_access/script.sh +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/gzip.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/http.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/json.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/math.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/os.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/postgres.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pytest_plugins/__init__.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/random.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/re.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/string.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/text.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/types.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/version.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/zoneinfo.py +0 -0
@@ -144,7 +144,7 @@ psutil = [
|
|
144
144
|
"psutil >=7.0.0, <7.1",
|
145
145
|
]
|
146
146
|
pyinstrument = [
|
147
|
-
"pyinstrument >=5.0
|
147
|
+
"pyinstrument >=5.1.0, <5.2",
|
148
148
|
]
|
149
149
|
pytest = [
|
150
150
|
"pytest >=8.4.1, <8.5",
|
@@ -227,7 +227,7 @@ dependencies = [
|
|
227
227
|
name = "dycw-utilities"
|
228
228
|
readme = "README.md"
|
229
229
|
requires-python = ">= 3.12"
|
230
|
-
version = "0.
|
230
|
+
version = "0.156.0"
|
231
231
|
|
232
232
|
[project.entry-points.pytest11]
|
233
233
|
pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
|
@@ -259,7 +259,7 @@ test = [
|
|
259
259
|
# bump-my-version
|
260
260
|
[tool.bumpversion]
|
261
261
|
allow_dirty = true
|
262
|
-
current_version = "0.
|
262
|
+
current_version = "0.156.0"
|
263
263
|
|
264
264
|
[[tool.bumpversion.files]]
|
265
265
|
filename = "src/utilities/__init__.py"
|
@@ -1,6 +1,7 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
import enum
|
4
|
+
import pathlib
|
4
5
|
from dataclasses import dataclass
|
5
6
|
from enum import auto
|
6
7
|
from operator import attrgetter
|
@@ -30,11 +31,7 @@ from utilities.click import (
|
|
30
31
|
Date,
|
31
32
|
DateDelta,
|
32
33
|
DateTimeDelta,
|
33
|
-
DirPath,
|
34
34
|
Enum,
|
35
|
-
ExistingDirPath,
|
36
|
-
ExistingFilePath,
|
37
|
-
FilePath,
|
38
35
|
FrozenSetChoices,
|
39
36
|
FrozenSetEnums,
|
40
37
|
FrozenSetInts,
|
@@ -46,6 +43,7 @@ from utilities.click import (
|
|
46
43
|
ListInts,
|
47
44
|
ListStrs,
|
48
45
|
MonthDay,
|
46
|
+
Path,
|
49
47
|
PlainDateTime,
|
50
48
|
Time,
|
51
49
|
TimeDelta,
|
@@ -57,6 +55,7 @@ from utilities.hypothesis import (
|
|
57
55
|
date_time_deltas,
|
58
56
|
dates,
|
59
57
|
month_days,
|
58
|
+
paths,
|
60
59
|
plain_date_times,
|
61
60
|
text_ascii,
|
62
61
|
time_deltas,
|
@@ -68,7 +67,6 @@ from utilities.text import join_strs, strip_and_dedent
|
|
68
67
|
|
69
68
|
if TYPE_CHECKING:
|
70
69
|
from collections.abc import Callable, Iterable
|
71
|
-
from pathlib import Path
|
72
70
|
|
73
71
|
|
74
72
|
class TestContextSettingsHelpOptionNames:
|
@@ -81,91 +79,17 @@ class TestContextSettingsHelpOptionNames:
|
|
81
79
|
assert result.exit_code == 0
|
82
80
|
|
83
81
|
|
84
|
-
class
|
85
|
-
def
|
86
|
-
|
87
|
-
@argument("path", type=ExistingDirPath)
|
88
|
-
def cli(*, path: Path) -> None:
|
89
|
-
from pathlib import Path
|
90
|
-
|
91
|
-
assert isinstance(path, Path)
|
82
|
+
class TestPath:
|
83
|
+
def test_path(self, *, tmp_path: pathlib.Path) -> None:
|
84
|
+
path_use = pathlib.Path("~", tmp_path)
|
92
85
|
|
93
|
-
result = CliRunner().invoke(cli, [str(tmp_path)])
|
94
|
-
assert result.exit_code == 0
|
95
|
-
|
96
|
-
file_path = tmp_path.joinpath("file.txt")
|
97
|
-
file_path.touch()
|
98
|
-
result = CliRunner().invoke(cli, [str(file_path)])
|
99
|
-
assert result.exit_code == 2
|
100
|
-
assert search("is a file", result.stderr)
|
101
|
-
|
102
|
-
non_existent = tmp_path.joinpath("non-existent")
|
103
|
-
result = CliRunner().invoke(cli, [str(non_existent)])
|
104
|
-
assert result.exit_code == 2
|
105
|
-
assert search("does not exist", result.stderr)
|
106
|
-
|
107
|
-
def test_existing_file_path(self, *, tmp_path: Path) -> None:
|
108
86
|
@command()
|
109
|
-
@argument("path", type=
|
110
|
-
def cli(*, path: Path) -> None:
|
111
|
-
|
112
|
-
|
113
|
-
assert isinstance(path, Path)
|
87
|
+
@argument("path", type=Path())
|
88
|
+
def cli(*, path: pathlib.Path) -> None:
|
89
|
+
assert isinstance(path, pathlib.Path)
|
90
|
+
assert path == path.expanduser()
|
114
91
|
|
115
|
-
result = CliRunner().invoke(cli, [str(
|
116
|
-
assert result.exit_code == 2
|
117
|
-
assert search("is a directory", result.stderr)
|
118
|
-
|
119
|
-
file_path = tmp_path.joinpath("file.txt")
|
120
|
-
file_path.touch()
|
121
|
-
result = CliRunner().invoke(cli, [str(file_path)])
|
122
|
-
assert result.exit_code == 0
|
123
|
-
|
124
|
-
non_existent = tmp_path.joinpath("non-existent")
|
125
|
-
result = CliRunner().invoke(cli, [str(non_existent)])
|
126
|
-
assert result.exit_code == 2
|
127
|
-
assert search("does not exist", result.stderr)
|
128
|
-
|
129
|
-
def test_dir_path(self, *, tmp_path: Path) -> None:
|
130
|
-
@command()
|
131
|
-
@argument("path", type=DirPath)
|
132
|
-
def cli(*, path: Path) -> None:
|
133
|
-
from pathlib import Path
|
134
|
-
|
135
|
-
assert isinstance(path, Path)
|
136
|
-
|
137
|
-
result = CliRunner().invoke(cli, [str(tmp_path)])
|
138
|
-
assert result.exit_code == 0
|
139
|
-
|
140
|
-
file_path = tmp_path.joinpath("file.txt")
|
141
|
-
file_path.touch()
|
142
|
-
result = CliRunner().invoke(cli, [str(file_path)])
|
143
|
-
assert result.exit_code == 2
|
144
|
-
assert search("is a file", result.stderr)
|
145
|
-
|
146
|
-
non_existent = tmp_path.joinpath("non-existent")
|
147
|
-
result = CliRunner().invoke(cli, [str(non_existent)])
|
148
|
-
assert result.exit_code == 0
|
149
|
-
|
150
|
-
def test_file_path(self, *, tmp_path: Path) -> None:
|
151
|
-
@command()
|
152
|
-
@argument("path", type=FilePath)
|
153
|
-
def cli(*, path: Path) -> None:
|
154
|
-
from pathlib import Path
|
155
|
-
|
156
|
-
assert isinstance(path, Path)
|
157
|
-
|
158
|
-
result = CliRunner().invoke(cli, [str(tmp_path)])
|
159
|
-
assert result.exit_code == 2
|
160
|
-
assert search("is a directory", result.stderr)
|
161
|
-
|
162
|
-
file_path = tmp_path.joinpath("file.txt")
|
163
|
-
file_path.touch()
|
164
|
-
result = CliRunner().invoke(cli, [str(file_path)])
|
165
|
-
assert result.exit_code == 0
|
166
|
-
|
167
|
-
non_existent = tmp_path.joinpath("non-existent")
|
168
|
-
result = CliRunner().invoke(cli, [str(non_existent)])
|
92
|
+
result = CliRunner().invoke(cli, [str(path_use)])
|
169
93
|
assert result.exit_code == 0
|
170
94
|
|
171
95
|
|
@@ -301,6 +225,9 @@ class TestParameters:
|
|
301
225
|
serialize=whenever.MonthDay.format_common_iso,
|
302
226
|
failable=True,
|
303
227
|
),
|
228
|
+
_Case(
|
229
|
+
param=Path(), name="path", strategy=paths(), serialize=str, failable=False
|
230
|
+
),
|
304
231
|
_Case(
|
305
232
|
param=PlainDateTime(),
|
306
233
|
name="plain date-time",
|
@@ -6,7 +6,6 @@ import pathlib
|
|
6
6
|
import uuid
|
7
7
|
from typing import TYPE_CHECKING, TypedDict, assert_never, override
|
8
8
|
|
9
|
-
import click
|
10
9
|
import whenever
|
11
10
|
from click import Choice, Context, Parameter, ParamType
|
12
11
|
from click.types import IntParamType, StringParamType
|
@@ -29,6 +28,7 @@ if TYPE_CHECKING:
|
|
29
28
|
IPv6AddressLike,
|
30
29
|
MaybeStr,
|
31
30
|
MonthDayLike,
|
31
|
+
PathLike,
|
32
32
|
PlainDateTimeLike,
|
33
33
|
TimeDeltaLike,
|
34
34
|
TimeLike,
|
@@ -37,16 +37,6 @@ if TYPE_CHECKING:
|
|
37
37
|
)
|
38
38
|
|
39
39
|
|
40
|
-
FilePath = click.Path(file_okay=True, dir_okay=False, path_type=pathlib.Path)
|
41
|
-
DirPath = click.Path(file_okay=False, dir_okay=True, path_type=pathlib.Path)
|
42
|
-
ExistingFilePath = click.Path(
|
43
|
-
exists=True, file_okay=True, dir_okay=False, path_type=pathlib.Path
|
44
|
-
)
|
45
|
-
ExistingDirPath = click.Path(
|
46
|
-
exists=True, file_okay=False, dir_okay=True, path_type=pathlib.Path
|
47
|
-
)
|
48
|
-
|
49
|
-
|
50
40
|
class _HelpOptionNames(TypedDict):
|
51
41
|
help_option_names: Sequence[str]
|
52
42
|
|
@@ -252,6 +242,32 @@ class MonthDay(ParamType):
|
|
252
242
|
assert_never(never)
|
253
243
|
|
254
244
|
|
245
|
+
class Path(ParamType):
|
246
|
+
"""A path-valued parameter."""
|
247
|
+
|
248
|
+
name = "path"
|
249
|
+
|
250
|
+
@override
|
251
|
+
def __repr__(self) -> str:
|
252
|
+
return self.name.upper()
|
253
|
+
|
254
|
+
@override
|
255
|
+
def convert(
|
256
|
+
self, value: PathLike, param: Parameter | None, ctx: Context | None
|
257
|
+
) -> pathlib.Path:
|
258
|
+
"""Convert a value into the `Path` type."""
|
259
|
+
match value:
|
260
|
+
case pathlib.Path():
|
261
|
+
return value.expanduser()
|
262
|
+
case str():
|
263
|
+
try:
|
264
|
+
return pathlib.Path(value).expanduser()
|
265
|
+
except ValueError as error:
|
266
|
+
self.fail(str(error), param, ctx)
|
267
|
+
case never:
|
268
|
+
assert_never(never)
|
269
|
+
|
270
|
+
|
255
271
|
class PlainDateTime(ParamType):
|
256
272
|
"""A local-datetime-valued parameter."""
|
257
273
|
|
@@ -592,11 +608,7 @@ __all__ = [
|
|
592
608
|
"Date",
|
593
609
|
"DateDelta",
|
594
610
|
"DateTimeDelta",
|
595
|
-
"DirPath",
|
596
611
|
"Enum",
|
597
|
-
"ExistingDirPath",
|
598
|
-
"ExistingFilePath",
|
599
|
-
"FilePath",
|
600
612
|
"FrozenSetChoices",
|
601
613
|
"FrozenSetEnums",
|
602
614
|
"FrozenSetParameter",
|
@@ -609,6 +621,8 @@ __all__ = [
|
|
609
621
|
"ListParameter",
|
610
622
|
"ListStrs",
|
611
623
|
"MonthDay",
|
624
|
+
"Path",
|
625
|
+
"Path",
|
612
626
|
"PlainDateTime",
|
613
627
|
"Time",
|
614
628
|
"TimeDelta",
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.155.4 → dycw_utilities-0.156.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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.155.4 → dycw_utilities-0.156.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
|
{dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pytest_plugins/pytest_randomly.py
RENAMED
File without changes
|
{dycw_utilities-0.155.4 → dycw_utilities-0.156.0}/src/utilities/pytest_plugins/pytest_regressions.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
|