dycw-utilities 0.133.6__tar.gz → 0.133.7__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.133.6 → dycw_utilities-0.133.7}/PKG-INFO +1 -1
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/pyproject.toml +2 -2
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_click.py +196 -103
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/click.py +34 -8
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/.gitignore +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/LICENSE +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/README.md +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_arq.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/arq.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/git.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/http.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/math.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/os.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/period.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/random.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/re.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/string.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/text.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/types.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/version.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/utilities/zoneinfo.py +0 -0
@@ -104,7 +104,7 @@ dependencies = [
|
|
104
104
|
name = "dycw-utilities"
|
105
105
|
readme = "README.md"
|
106
106
|
requires-python = ">= 3.12"
|
107
|
-
version = "0.133.
|
107
|
+
version = "0.133.7"
|
108
108
|
|
109
109
|
[project.optional-dependencies]
|
110
110
|
logging = [
|
@@ -131,7 +131,7 @@ test = [
|
|
131
131
|
# bump-my-version
|
132
132
|
[tool.bumpversion]
|
133
133
|
allow_dirty = true
|
134
|
-
current_version = "0.133.
|
134
|
+
current_version = "0.133.7"
|
135
135
|
|
136
136
|
[[tool.bumpversion.files]]
|
137
137
|
filename = "src/utilities/__init__.py"
|
@@ -1,10 +1,11 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
import enum
|
4
|
+
from dataclasses import dataclass
|
4
5
|
from enum import auto
|
5
6
|
from operator import attrgetter
|
6
7
|
from re import search
|
7
|
-
from typing import TYPE_CHECKING, Any, TypeVar
|
8
|
+
from typing import TYPE_CHECKING, Any, ClassVar, Generic, TypeVar
|
8
9
|
|
9
10
|
import whenever
|
10
11
|
from click import ParamType, argument, command, echo, option
|
@@ -13,7 +14,6 @@ from hypothesis import given
|
|
13
14
|
from hypothesis.strategies import (
|
14
15
|
DataObject,
|
15
16
|
SearchStrategy,
|
16
|
-
booleans,
|
17
17
|
data,
|
18
18
|
frozensets,
|
19
19
|
ip_addresses,
|
@@ -40,6 +40,7 @@ from utilities.click import (
|
|
40
40
|
FrozenSetStrs,
|
41
41
|
IPv4Address,
|
42
42
|
IPv6Address,
|
43
|
+
ListChoices,
|
43
44
|
ListEnums,
|
44
45
|
ListStrs,
|
45
46
|
Month,
|
@@ -54,7 +55,6 @@ from utilities.hypothesis import (
|
|
54
55
|
dates,
|
55
56
|
freqs,
|
56
57
|
months,
|
57
|
-
pairs,
|
58
58
|
plain_datetimes,
|
59
59
|
text_ascii,
|
60
60
|
time_deltas,
|
@@ -184,124 +184,217 @@ def _lift_serializer(
|
|
184
184
|
return wrapped
|
185
185
|
|
186
186
|
|
187
|
+
@dataclass(kw_only=True, slots=True)
|
188
|
+
class _Case(Generic[_T]):
|
189
|
+
param: ParamType
|
190
|
+
name: str
|
191
|
+
repr: str | None = None
|
192
|
+
strategy: SearchStrategy[_T]
|
193
|
+
serialize: Callable[[_T], str]
|
194
|
+
failable: bool = False
|
195
|
+
|
196
|
+
|
187
197
|
class TestParameters:
|
188
|
-
|
198
|
+
cases: ClassVar[list[_Case]] = [
|
199
|
+
_Case(
|
200
|
+
param=Date(),
|
201
|
+
name="date",
|
202
|
+
strategy=dates(),
|
203
|
+
serialize=whenever.Date.format_common_iso,
|
204
|
+
failable=True,
|
205
|
+
),
|
206
|
+
_Case(
|
207
|
+
param=DateDelta(),
|
208
|
+
name="date delta",
|
209
|
+
strategy=date_deltas(parsable=True),
|
210
|
+
serialize=whenever.DateDelta.format_common_iso,
|
211
|
+
failable=True,
|
212
|
+
),
|
213
|
+
_Case(
|
214
|
+
param=DateTimeDelta(),
|
215
|
+
name="date-time delta",
|
216
|
+
strategy=date_time_deltas(parsable=True),
|
217
|
+
serialize=whenever.DateTimeDelta.format_common_iso,
|
218
|
+
failable=True,
|
219
|
+
),
|
220
|
+
_Case(
|
221
|
+
param=Enum(_ExampleEnum),
|
222
|
+
name="enum[_ExampleEnum]",
|
223
|
+
repr="ENUM[_ExampleEnum]",
|
224
|
+
strategy=sampled_from(_ExampleEnum),
|
225
|
+
serialize=attrgetter("name"),
|
226
|
+
failable=True,
|
227
|
+
),
|
228
|
+
_Case(
|
229
|
+
param=Freq(),
|
230
|
+
name="freq",
|
231
|
+
strategy=freqs(),
|
232
|
+
serialize=utilities.whenever.Freq.serialize,
|
233
|
+
failable=True,
|
234
|
+
),
|
235
|
+
_Case(
|
236
|
+
param=FrozenSetChoices(["a", "b", "c"]),
|
237
|
+
name="frozenset[choice]",
|
238
|
+
repr="FROZENSET[Choice(['a', 'b', 'c'])]",
|
239
|
+
strategy=frozensets(sampled_from(["a", "b", "c"])),
|
240
|
+
serialize=_lift_serializer(str, sort=True),
|
241
|
+
failable=True,
|
242
|
+
),
|
243
|
+
_Case(
|
244
|
+
param=FrozenSetEnums(_ExampleEnum),
|
245
|
+
name="frozenset[enum[_ExampleEnum]]",
|
246
|
+
repr="FROZENSET[ENUM[_ExampleEnum]]",
|
247
|
+
strategy=frozensets(sampled_from(_ExampleEnum)),
|
248
|
+
serialize=_lift_serializer(attrgetter("name"), sort=True),
|
249
|
+
failable=True,
|
250
|
+
),
|
251
|
+
_Case(
|
252
|
+
param=FrozenSetStrs(),
|
253
|
+
name="frozenset[text]",
|
254
|
+
repr="FROZENSET[STRING]",
|
255
|
+
strategy=frozensets(text_ascii()),
|
256
|
+
serialize=_lift_serializer(str, sort=True),
|
257
|
+
),
|
258
|
+
_Case(
|
259
|
+
param=IPv4Address(),
|
260
|
+
name="ipv4 address",
|
261
|
+
strategy=ip_addresses(v=4),
|
262
|
+
serialize=str,
|
263
|
+
failable=True,
|
264
|
+
),
|
265
|
+
_Case(
|
266
|
+
param=IPv6Address(),
|
267
|
+
name="ipv6 address",
|
268
|
+
strategy=ip_addresses(v=6),
|
269
|
+
serialize=str,
|
270
|
+
failable=True,
|
271
|
+
),
|
272
|
+
_Case(
|
273
|
+
param=ListChoices(["a", "b", "c"]),
|
274
|
+
name="list[choice]",
|
275
|
+
repr="LIST[Choice(['a', 'b', 'c'])]",
|
276
|
+
strategy=frozensets(sampled_from(["a", "b", "c"])),
|
277
|
+
serialize=_lift_serializer(str, sort=True),
|
278
|
+
failable=True,
|
279
|
+
),
|
280
|
+
_Case(
|
281
|
+
param=ListEnums(_ExampleEnum),
|
282
|
+
name="list[enum[_ExampleEnum]]",
|
283
|
+
repr="LIST[ENUM[_ExampleEnum]]",
|
284
|
+
strategy=lists(sampled_from(_ExampleEnum)),
|
285
|
+
serialize=_lift_serializer(attrgetter("name")),
|
286
|
+
failable=True,
|
287
|
+
),
|
288
|
+
_Case(
|
289
|
+
param=Month(),
|
290
|
+
name="month",
|
291
|
+
strategy=months(),
|
292
|
+
serialize=utilities.whenever.Month.format_common_iso,
|
293
|
+
failable=True,
|
294
|
+
),
|
295
|
+
_Case(
|
296
|
+
param=PlainDateTime(),
|
297
|
+
name="plain date-time",
|
298
|
+
strategy=plain_datetimes(),
|
299
|
+
serialize=whenever.PlainDateTime.format_common_iso,
|
300
|
+
failable=True,
|
301
|
+
),
|
302
|
+
_Case(
|
303
|
+
param=Time(),
|
304
|
+
name="time",
|
305
|
+
strategy=times(),
|
306
|
+
serialize=whenever.Time.format_common_iso,
|
307
|
+
failable=True,
|
308
|
+
),
|
309
|
+
_Case(
|
310
|
+
param=TimeDelta(),
|
311
|
+
name="time-delta",
|
312
|
+
strategy=time_deltas(),
|
313
|
+
serialize=whenever.TimeDelta.format_common_iso,
|
314
|
+
failable=True,
|
315
|
+
),
|
316
|
+
_Case(
|
317
|
+
param=ZonedDateTime(),
|
318
|
+
name="zoned date-time",
|
319
|
+
strategy=zoned_datetimes(),
|
320
|
+
serialize=whenever.ZonedDateTime.format_common_iso,
|
321
|
+
failable=True,
|
322
|
+
),
|
323
|
+
]
|
324
|
+
|
325
|
+
@given(data=data())
|
189
326
|
@mark.parametrize(
|
190
|
-
("param", "
|
191
|
-
[
|
192
|
-
param(Date(), "DATE", dates(), whenever.Date.format_common_iso, True),
|
193
|
-
param(
|
194
|
-
DateDelta(),
|
195
|
-
"DATE DELTA",
|
196
|
-
date_deltas(parsable=True),
|
197
|
-
whenever.DateDelta.format_common_iso,
|
198
|
-
True,
|
199
|
-
),
|
200
|
-
param(
|
201
|
-
DateTimeDelta(),
|
202
|
-
"DATE-TIME DELTA",
|
203
|
-
date_time_deltas(parsable=True),
|
204
|
-
whenever.DateTimeDelta.format_common_iso,
|
205
|
-
True,
|
206
|
-
),
|
207
|
-
param(
|
208
|
-
Enum(_ExampleEnum),
|
209
|
-
"ENUM[_ExampleEnum]",
|
210
|
-
sampled_from(_ExampleEnum),
|
211
|
-
attrgetter("name"),
|
212
|
-
True,
|
213
|
-
),
|
214
|
-
param(Freq(), "FREQ", freqs(), utilities.whenever.Freq.serialize, True),
|
215
|
-
param(
|
216
|
-
FrozenSetChoices(["a", "b", "c"]),
|
217
|
-
"FROZENSET[Choice(['a', 'b', 'c'])]",
|
218
|
-
frozensets(sampled_from(["a", "b", "c"])),
|
219
|
-
_lift_serializer(str, sort=True),
|
220
|
-
True,
|
221
|
-
),
|
222
|
-
param(
|
223
|
-
FrozenSetEnums(_ExampleEnum),
|
224
|
-
"FROZENSET[ENUM[_ExampleEnum]]",
|
225
|
-
frozensets(sampled_from(_ExampleEnum)),
|
226
|
-
_lift_serializer(attrgetter("name"), sort=True),
|
227
|
-
True,
|
228
|
-
),
|
229
|
-
param(
|
230
|
-
FrozenSetStrs(),
|
231
|
-
"FROZENSET[STRING]",
|
232
|
-
frozensets(text_ascii()),
|
233
|
-
_lift_serializer(str, sort=True),
|
234
|
-
False,
|
235
|
-
),
|
236
|
-
param(IPv4Address(), "IPV4 ADDRESS", ip_addresses(v=4), str, True),
|
237
|
-
param(IPv6Address(), "IPV6 ADDRESS", ip_addresses(v=6), str, True),
|
238
|
-
param(
|
239
|
-
ListEnums(_ExampleEnum),
|
240
|
-
"LIST[ENUM[_ExampleEnum]]",
|
241
|
-
lists(sampled_from(_ExampleEnum)),
|
242
|
-
_lift_serializer(attrgetter("name")),
|
243
|
-
True,
|
244
|
-
),
|
245
|
-
param(
|
246
|
-
Month(),
|
247
|
-
"MONTH",
|
248
|
-
months(),
|
249
|
-
utilities.whenever.Month.format_common_iso,
|
250
|
-
True,
|
251
|
-
),
|
252
|
-
param(
|
253
|
-
PlainDateTime(),
|
254
|
-
"PLAIN DATE-TIME",
|
255
|
-
plain_datetimes(),
|
256
|
-
whenever.PlainDateTime.format_common_iso,
|
257
|
-
True,
|
258
|
-
),
|
259
|
-
param(Time(), "TIME", times(), whenever.Time.format_common_iso, True),
|
260
|
-
param(
|
261
|
-
TimeDelta(),
|
262
|
-
"TIME-DELTA",
|
263
|
-
time_deltas(),
|
264
|
-
whenever.TimeDelta.format_common_iso,
|
265
|
-
True,
|
266
|
-
),
|
267
|
-
param(
|
268
|
-
ZonedDateTime(),
|
269
|
-
"ZONED DATE-TIME",
|
270
|
-
zoned_datetimes(),
|
271
|
-
whenever.ZonedDateTime.format_common_iso,
|
272
|
-
True,
|
273
|
-
),
|
274
|
-
],
|
327
|
+
("param", "strategy", "serialize"),
|
328
|
+
[param(c.param, c.strategy, c.serialize) for c in cases],
|
275
329
|
)
|
276
|
-
def
|
330
|
+
def test_default(
|
277
331
|
self,
|
278
332
|
*,
|
279
333
|
data: DataObject,
|
280
334
|
param: ParamType,
|
281
|
-
exp_repr: str,
|
282
335
|
strategy: SearchStrategy[Any],
|
283
336
|
serialize: Callable[[Any], str],
|
284
|
-
use_value: bool,
|
285
|
-
failable: bool,
|
286
337
|
) -> None:
|
287
|
-
|
288
|
-
|
289
|
-
default, value = data.draw(pairs(strategy))
|
338
|
+
default = data.draw(strategy)
|
290
339
|
|
291
340
|
@command()
|
292
341
|
@option("--value", type=param, default=default)
|
293
342
|
def cli(*, value: Any) -> None:
|
294
343
|
echo(f"value = {serialize(value)}")
|
295
344
|
|
296
|
-
|
297
|
-
result
|
345
|
+
result = CliRunner().invoke(cli, args=[])
|
346
|
+
assert result.exit_code == 0
|
347
|
+
assert result.stdout == f"value = {serialize(default)}\n"
|
348
|
+
|
349
|
+
@given(data=data())
|
350
|
+
@mark.parametrize(
|
351
|
+
("param", "strategy", "serialize"),
|
352
|
+
[param(c.param, c.strategy, c.serialize) for c in cases],
|
353
|
+
)
|
354
|
+
def test_cli_value(
|
355
|
+
self,
|
356
|
+
*,
|
357
|
+
data: DataObject,
|
358
|
+
param: ParamType,
|
359
|
+
strategy: SearchStrategy[Any],
|
360
|
+
serialize: Callable[[Any], str],
|
361
|
+
) -> None:
|
362
|
+
@command()
|
363
|
+
@option("--value", type=param)
|
364
|
+
def cli(*, value: Any) -> None:
|
365
|
+
echo(f"value = {serialize(value)}")
|
366
|
+
|
367
|
+
value = data.draw(strategy)
|
368
|
+
ser = serialize(value)
|
369
|
+
result = CliRunner().invoke(cli, args=[f"--value={ser}"])
|
298
370
|
assert result.exit_code == 0
|
299
|
-
|
300
|
-
assert result.stdout == f"value = {expected_str}\n"
|
371
|
+
assert result.stdout == f"value = {ser}\n"
|
301
372
|
|
302
|
-
|
303
|
-
|
304
|
-
|
373
|
+
@mark.parametrize(
|
374
|
+
("param", "serialize"),
|
375
|
+
[param(c.param, c.serialize) for c in cases if c.failable],
|
376
|
+
)
|
377
|
+
def test_cli_fail(
|
378
|
+
self, *, param: ParamType, serialize: Callable[[Any], str]
|
379
|
+
) -> None:
|
380
|
+
@command()
|
381
|
+
@option("--value", type=param)
|
382
|
+
def cli(*, value: Any) -> None:
|
383
|
+
echo(f"value = {serialize(value)}")
|
384
|
+
|
385
|
+
result = CliRunner().invoke(cli, args=["--value=invalid"])
|
386
|
+
assert result.exit_code == 2
|
387
|
+
|
388
|
+
@mark.parametrize(("param", "name"), [param(c.param, c.name) for c in cases])
|
389
|
+
def test_name(self, *, param: ParamType, name: str) -> None:
|
390
|
+
assert param.name == name
|
391
|
+
|
392
|
+
@mark.parametrize(
|
393
|
+
("param", "repr_", "name"), [param(c.param, c.repr, c.name) for c in cases]
|
394
|
+
)
|
395
|
+
def test_repr(self, *, param: ParamType, repr_: str | None, name: str) -> None:
|
396
|
+
expected = name.upper() if repr_ is None else repr_
|
397
|
+
assert repr(param) == expected
|
305
398
|
|
306
399
|
@mark.parametrize(
|
307
400
|
"param",
|
@@ -148,9 +148,10 @@ class DateTimeDelta(ParamType):
|
|
148
148
|
class Enum(ParamType, Generic[TEnum]):
|
149
149
|
"""An enum-valued parameter."""
|
150
150
|
|
151
|
+
@override
|
151
152
|
def __init__(self, enum: type[TEnum], /, *, case_sensitive: bool = False) -> None:
|
152
153
|
cls = get_class_name(enum)
|
153
|
-
self.name = f"
|
154
|
+
self.name = f"enum[{cls}]"
|
154
155
|
self._enum = enum
|
155
156
|
self._case_sensitive = case_sensitive
|
156
157
|
super().__init__()
|
@@ -180,9 +181,11 @@ class Enum(ParamType, Generic[TEnum]):
|
|
180
181
|
class Freq(ParamType):
|
181
182
|
"""An frequency-valued parameter."""
|
182
183
|
|
184
|
+
name = "freq"
|
185
|
+
|
183
186
|
@override
|
184
187
|
def __repr__(self) -> str:
|
185
|
-
return
|
188
|
+
return self.name.upper()
|
186
189
|
|
187
190
|
@override
|
188
191
|
def convert(
|
@@ -383,16 +386,16 @@ class ZonedDateTime(ParamType):
|
|
383
386
|
class FrozenSetParameter(ParamType, Generic[_TParam, _T]):
|
384
387
|
"""A frozenset-valued parameter."""
|
385
388
|
|
389
|
+
@override
|
386
390
|
def __init__(self, param: _TParam, /, *, separator: str = ",") -> None:
|
387
|
-
self.name = f"
|
391
|
+
self.name = f"frozenset[{param.name}]"
|
388
392
|
self._param = param
|
389
393
|
self._separator = separator
|
390
394
|
super().__init__()
|
391
395
|
|
392
396
|
@override
|
393
397
|
def __repr__(self) -> str:
|
394
|
-
|
395
|
-
return f"FROZENSET[{desc}]"
|
398
|
+
return f"FROZENSET[{self._param!r}]"
|
396
399
|
|
397
400
|
@override
|
398
401
|
def convert(
|
@@ -425,6 +428,7 @@ class FrozenSetParameter(ParamType, Generic[_TParam, _T]):
|
|
425
428
|
class FrozenSetChoices(FrozenSetParameter[Choice, str]):
|
426
429
|
"""A frozenset-of-choices-valued parameter."""
|
427
430
|
|
431
|
+
@override
|
428
432
|
def __init__(
|
429
433
|
self,
|
430
434
|
choices: Sequence[str],
|
@@ -441,6 +445,7 @@ class FrozenSetChoices(FrozenSetParameter[Choice, str]):
|
|
441
445
|
class FrozenSetEnums(FrozenSetParameter[Enum[TEnum], TEnum]):
|
442
446
|
"""A frozenset-of-enums-valued parameter."""
|
443
447
|
|
448
|
+
@override
|
444
449
|
def __init__(
|
445
450
|
self,
|
446
451
|
enum: type[TEnum],
|
@@ -455,6 +460,7 @@ class FrozenSetEnums(FrozenSetParameter[Enum[TEnum], TEnum]):
|
|
455
460
|
class FrozenSetStrs(FrozenSetParameter[StringParamType, str]):
|
456
461
|
"""A frozenset-of-strs-valued parameter."""
|
457
462
|
|
463
|
+
@override
|
458
464
|
def __init__(self, *, separator: str = ",") -> None:
|
459
465
|
super().__init__(StringParamType(), separator=separator)
|
460
466
|
|
@@ -465,16 +471,16 @@ class FrozenSetStrs(FrozenSetParameter[StringParamType, str]):
|
|
465
471
|
class ListParameter(ParamType, Generic[_TParam, _T]):
|
466
472
|
"""A list-valued parameter."""
|
467
473
|
|
474
|
+
@override
|
468
475
|
def __init__(self, param: _TParam, /, *, separator: str = ",") -> None:
|
469
|
-
self.name = f"
|
476
|
+
self.name = f"list[{param.name}]"
|
470
477
|
self._param = param
|
471
478
|
self._separator = separator
|
472
479
|
super().__init__()
|
473
480
|
|
474
481
|
@override
|
475
482
|
def __repr__(self) -> str:
|
476
|
-
|
477
|
-
return f"LIST[{desc}]"
|
483
|
+
return f"LIST[{self._param!r}]"
|
478
484
|
|
479
485
|
@override
|
480
486
|
def convert(
|
@@ -504,9 +510,27 @@ class ListParameter(ParamType, Generic[_TParam, _T]):
|
|
504
510
|
return _make_metavar(param, desc)
|
505
511
|
|
506
512
|
|
513
|
+
class ListChoices(ListParameter[Choice, str]):
|
514
|
+
"""A frozenset-of-choices-valued parameter."""
|
515
|
+
|
516
|
+
@override
|
517
|
+
def __init__(
|
518
|
+
self,
|
519
|
+
choices: Sequence[str],
|
520
|
+
/,
|
521
|
+
*,
|
522
|
+
case_sensitive: bool = False,
|
523
|
+
separator: str = ",",
|
524
|
+
) -> None:
|
525
|
+
super().__init__(
|
526
|
+
Choice(choices, case_sensitive=case_sensitive), separator=separator
|
527
|
+
)
|
528
|
+
|
529
|
+
|
507
530
|
class ListEnums(ListParameter[Enum[TEnum], TEnum]):
|
508
531
|
"""A list-of-enums-valued parameter."""
|
509
532
|
|
533
|
+
@override
|
510
534
|
def __init__(
|
511
535
|
self,
|
512
536
|
enum: type[TEnum],
|
@@ -521,6 +545,7 @@ class ListEnums(ListParameter[Enum[TEnum], TEnum]):
|
|
521
545
|
class ListStrs(ListParameter[StringParamType, str]):
|
522
546
|
"""A list-of-strs-valued parameter."""
|
523
547
|
|
548
|
+
@override
|
524
549
|
def __init__(self, *, separator: str = ",") -> None:
|
525
550
|
super().__init__(StringParamType(), separator=separator)
|
526
551
|
|
@@ -550,6 +575,7 @@ __all__ = [
|
|
550
575
|
"FrozenSetStrs",
|
551
576
|
"IPv4Address",
|
552
577
|
"IPv6Address",
|
578
|
+
"ListChoices",
|
553
579
|
"ListEnums",
|
554
580
|
"ListParameter",
|
555
581
|
"ListStrs",
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/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.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/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
|
{dycw_utilities-0.133.6 → dycw_utilities-0.133.7}/src/tests/test_asyncio_classes/__init__.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
|