dycw-utilities 0.166.19__tar.gz → 0.166.21__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.166.19 → dycw_utilities-0.166.21}/PKG-INFO +1 -1
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/pyproject.toml +2 -2
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_pydantic_settings_sops.py +2 -4
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_pytest.py +32 -7
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pydantic_settings_sops.py +3 -2
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pytest.py +29 -3
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pytest_plugins/pytest_regressions.py +6 -2
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/.gitignore +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/LICENSE +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/README.md +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_aeventkit.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_gzip.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_json.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_postgres.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_pydantic_settings.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_pytest_randomly.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_testbook.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/aeventkit.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/click.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/git.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/gzip.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/http.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/json.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/math.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/os.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/postgres.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pydantic_settings.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pytest_plugins/__init__.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/random.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/re.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/string.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/testbook.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/text.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/types.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/version.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/zoneinfo.py +0 -0
@@ -246,7 +246,7 @@ dependencies = [
|
|
246
246
|
name = "dycw-utilities"
|
247
247
|
readme = "README.md"
|
248
248
|
requires-python = ">= 3.12"
|
249
|
-
version = "0.166.
|
249
|
+
version = "0.166.21"
|
250
250
|
|
251
251
|
[project.entry-points.pytest11]
|
252
252
|
pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
|
@@ -279,7 +279,7 @@ test = [
|
|
279
279
|
# bump-my-version
|
280
280
|
[tool.bumpversion]
|
281
281
|
allow_dirty = true
|
282
|
-
current_version = "0.166.
|
282
|
+
current_version = "0.166.21"
|
283
283
|
|
284
284
|
[[tool.bumpversion.files]]
|
285
285
|
filename = "src/utilities/__init__.py"
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_pydantic_settings_sops.py
RENAMED
@@ -8,7 +8,7 @@ from typing import TYPE_CHECKING, ClassVar
|
|
8
8
|
from tests.conftest import SKIPIF_CI
|
9
9
|
from utilities.iterables import one
|
10
10
|
from utilities.os import temp_environ
|
11
|
-
from utilities.pydantic_settings import load_settings
|
11
|
+
from utilities.pydantic_settings import PathLikeOrWithSection, load_settings
|
12
12
|
from utilities.pydantic_settings_sops import SopsBaseSettings
|
13
13
|
from utilities.re import extract_group
|
14
14
|
|
@@ -16,8 +16,6 @@ if TYPE_CHECKING:
|
|
16
16
|
from collections.abc import Sequence
|
17
17
|
from pathlib import Path
|
18
18
|
|
19
|
-
from utilities.types import PathLike
|
20
|
-
|
21
19
|
|
22
20
|
class TestSOPSBaseSettings:
|
23
21
|
@SKIPIF_CI
|
@@ -40,7 +38,7 @@ class TestSOPSBaseSettings:
|
|
40
38
|
_ = check_call(["sops", "encrypt", str(unencrypted_file)], stdout=file)
|
41
39
|
|
42
40
|
class Settings(SopsBaseSettings):
|
43
|
-
secret_files: ClassVar[Sequence[
|
41
|
+
secret_files: ClassVar[Sequence[PathLikeOrWithSection]] = [encrypted_file]
|
44
42
|
x: int
|
45
43
|
y: int
|
46
44
|
|
@@ -9,7 +9,12 @@ from pytest import fixture, mark, param, raises
|
|
9
9
|
|
10
10
|
from utilities.iterables import one
|
11
11
|
from utilities.os import temp_environ
|
12
|
-
from utilities.pytest import
|
12
|
+
from utilities.pytest import (
|
13
|
+
_NodeIdToPathNotGetTailError,
|
14
|
+
_NodeIdToPathNotPythonFileError,
|
15
|
+
node_id_path,
|
16
|
+
throttle,
|
17
|
+
)
|
13
18
|
|
14
19
|
if TYPE_CHECKING:
|
15
20
|
from _pytest.legacypath import Testdir
|
@@ -51,26 +56,46 @@ class TestNodeIdPath:
|
|
51
56
|
"node_id",
|
52
57
|
[
|
53
58
|
param("src/tests/module/test_funcs.py::TestClass::test_main"),
|
59
|
+
param("tests/module/test_funcs.py::TestClass::test_main"),
|
54
60
|
param(
|
55
61
|
"python/package/src/tests/module/test_funcs.py::TestClass::test_main"
|
56
62
|
),
|
57
63
|
],
|
58
64
|
)
|
59
65
|
def test_root(self, *, node_id: str) -> None:
|
60
|
-
result = node_id_path(node_id, root="
|
66
|
+
result = node_id_path(node_id, root="tests")
|
61
67
|
expected = Path("module.test_funcs/TestClass__test_main")
|
62
68
|
assert result == expected
|
63
69
|
|
64
|
-
|
65
|
-
node_id
|
66
|
-
|
70
|
+
@mark.parametrize(
|
71
|
+
"node_id",
|
72
|
+
[
|
73
|
+
param("src/tests/module/test_funcs.py::TestClass::test_main"),
|
74
|
+
param("tests/module/test_funcs.py::TestClass::test_main"),
|
75
|
+
],
|
76
|
+
)
|
77
|
+
def test_suffix(self, *, node_id: str) -> None:
|
78
|
+
result = node_id_path(node_id, root="tests", suffix=".csv")
|
67
79
|
expected = Path("module.test_funcs/TestClass__test_main.csv")
|
68
80
|
assert result == expected
|
69
81
|
|
70
|
-
def
|
71
|
-
with raises(
|
82
|
+
def test_error_not_python_file(self) -> None:
|
83
|
+
with raises(
|
84
|
+
_NodeIdToPathNotPythonFileError,
|
85
|
+
match="Node ID must be a Python file; got .*",
|
86
|
+
):
|
72
87
|
_ = node_id_path("src/tests/module/test_funcs.csv::TestClass::test_main")
|
73
88
|
|
89
|
+
def test_error_get_tail_error(self) -> None:
|
90
|
+
with raises(
|
91
|
+
_NodeIdToPathNotGetTailError,
|
92
|
+
match=r"Unable to get the tail of 'tests.+module.+test_funcs' with root 'src.+tests'",
|
93
|
+
):
|
94
|
+
_ = node_id_path(
|
95
|
+
"tests/module/test_funcs.py::TestClass::test_main",
|
96
|
+
root=Path("src", "tests"),
|
97
|
+
)
|
98
|
+
|
74
99
|
|
75
100
|
class TestPytestOptions:
|
76
101
|
def test_unknown_mark(self, *, testdir: Testdir) -> None:
|
@@ -7,6 +7,7 @@ from pydantic_settings_sops import SOPSConfigSettingsSource
|
|
7
7
|
|
8
8
|
from utilities.pydantic_settings import (
|
9
9
|
CustomBaseSettings,
|
10
|
+
PathLikeOrWithSection,
|
10
11
|
_ensure_section,
|
11
12
|
_get_section,
|
12
13
|
)
|
@@ -17,14 +18,14 @@ if TYPE_CHECKING:
|
|
17
18
|
from pydantic_settings import BaseSettings, PydanticBaseSettingsSource
|
18
19
|
from pydantic_settings.sources import PathType
|
19
20
|
|
20
|
-
from utilities.types import MaybeSequenceStr
|
21
|
+
from utilities.types import MaybeSequenceStr
|
21
22
|
|
22
23
|
|
23
24
|
class SopsBaseSettings(CustomBaseSettings):
|
24
25
|
"""Base settings for loading secrets using `sops/age`."""
|
25
26
|
|
26
27
|
# paths
|
27
|
-
secret_files: ClassVar[Sequence[
|
28
|
+
secret_files: ClassVar[Sequence[PathLikeOrWithSection]] = []
|
28
29
|
|
29
30
|
@classmethod
|
30
31
|
@override
|
@@ -13,7 +13,13 @@ from utilities.atomicwrites import writer
|
|
13
13
|
from utilities.functools import cache
|
14
14
|
from utilities.hashlib import md5_hash
|
15
15
|
from utilities.os import get_env_var
|
16
|
-
from utilities.pathlib import
|
16
|
+
from utilities.pathlib import (
|
17
|
+
_GetTailEmptyError,
|
18
|
+
ensure_suffix,
|
19
|
+
get_root,
|
20
|
+
get_tail,
|
21
|
+
module_path,
|
22
|
+
)
|
17
23
|
from utilities.platform import (
|
18
24
|
IS_LINUX,
|
19
25
|
IS_MAC,
|
@@ -118,10 +124,15 @@ def node_id_path(
|
|
118
124
|
path_file, *parts = node_id.split("::")
|
119
125
|
path_file = Path(path_file)
|
120
126
|
if path_file.suffix != ".py":
|
121
|
-
raise
|
127
|
+
raise _NodeIdToPathNotPythonFileError(node_id=node_id)
|
122
128
|
path = path_file.with_suffix("")
|
123
129
|
if root is not None:
|
124
|
-
|
130
|
+
try:
|
131
|
+
path = get_tail(path, root)
|
132
|
+
except _GetTailEmptyError as error:
|
133
|
+
raise _NodeIdToPathNotGetTailError(
|
134
|
+
node_id=node_id, path=error.path, root=error.root
|
135
|
+
) from None
|
125
136
|
path = Path(module_path(path), "__".join(parts))
|
126
137
|
if suffix is not None:
|
127
138
|
path = ensure_suffix(path, suffix)
|
@@ -132,11 +143,26 @@ def node_id_path(
|
|
132
143
|
class NodeIdToPathError(Exception):
|
133
144
|
node_id: str
|
134
145
|
|
146
|
+
|
147
|
+
@dataclass(kw_only=True, slots=True)
|
148
|
+
class _NodeIdToPathNotPythonFileError(NodeIdToPathError):
|
135
149
|
@override
|
136
150
|
def __str__(self) -> str:
|
137
151
|
return f"Node ID must be a Python file; got {self.node_id!r}"
|
138
152
|
|
139
153
|
|
154
|
+
@dataclass(kw_only=True, slots=True)
|
155
|
+
class _NodeIdToPathNotGetTailError(NodeIdToPathError):
|
156
|
+
path: PathLike
|
157
|
+
root: PathLike
|
158
|
+
|
159
|
+
@override
|
160
|
+
def __str__(self) -> str:
|
161
|
+
return (
|
162
|
+
f"Unable to get the tail of {str(self.path)!r} with root {str(self.root)!r}"
|
163
|
+
)
|
164
|
+
|
165
|
+
|
140
166
|
##
|
141
167
|
|
142
168
|
|
@@ -41,11 +41,15 @@ else:
|
|
41
41
|
|
42
42
|
def _get_path(request: FixtureRequest, /) -> Path:
|
43
43
|
from utilities.pathlib import get_root
|
44
|
-
from utilities.pytest import node_id_path
|
44
|
+
from utilities.pytest import _NodeIdToPathNotGetTailError, node_id_path
|
45
45
|
|
46
46
|
path = Path(cast("Any", request).fspath)
|
47
47
|
root = Path("src", "tests")
|
48
|
-
|
48
|
+
try:
|
49
|
+
tail = node_id_path(request.node.nodeid, root=root)
|
50
|
+
except _NodeIdToPathNotGetTailError:
|
51
|
+
root = Path("tests")
|
52
|
+
tail = node_id_path(request.node.nodeid, root=root)
|
49
53
|
return get_root(path).joinpath(root, "regressions", tail)
|
50
54
|
|
51
55
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/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.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/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
|
File without changes
|
File without changes
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/tests/test_typing_funcs/no_future.py
RENAMED
File without changes
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/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
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pytest_plugins/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.166.19 → dycw_utilities-0.166.21}/src/utilities/pytest_plugins/pytest_randomly.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
|