dycw-utilities 0.149.0__tar.gz → 0.149.2__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.149.0 → dycw_utilities-0.149.2}/PKG-INFO +1 -1
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/pyproject.toml +2 -2
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_click.py +5 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_postgres.py +6 -3
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_typed_settings.py +3 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/click.py +28 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/postgres.py +21 -16
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/typed_settings.py +2 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/.gitignore +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/LICENSE +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/README.md +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_gzip.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_json.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_pytest_randomly.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_yield_access/__init__.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_yield_access/script.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_yield_access/script.sh +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/gzip.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/http.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/json.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/math.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/os.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/period.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/pytest_plugins/__init__.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/random.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/re.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/string.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/text.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/types.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/version.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/utilities/zoneinfo.py +0 -0
@@ -102,7 +102,7 @@ dependencies = [
|
|
102
102
|
name = "dycw-utilities"
|
103
103
|
readme = "README.md"
|
104
104
|
requires-python = ">= 3.12"
|
105
|
-
version = "0.149.
|
105
|
+
version = "0.149.2"
|
106
106
|
|
107
107
|
[project.entry-points.pytest11]
|
108
108
|
pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
|
@@ -135,7 +135,7 @@ test = [
|
|
135
135
|
# bump-my-version
|
136
136
|
[tool.bumpversion]
|
137
137
|
allow_dirty = true
|
138
|
-
current_version = "0.149.
|
138
|
+
current_version = "0.149.2"
|
139
139
|
|
140
140
|
[[tool.bumpversion.files]]
|
141
141
|
filename = "src/utilities/__init__.py"
|
@@ -20,11 +20,13 @@ from hypothesis.strategies import (
|
|
20
20
|
ip_addresses,
|
21
21
|
lists,
|
22
22
|
sampled_from,
|
23
|
+
uuids,
|
23
24
|
)
|
24
25
|
from pytest import mark, param
|
25
26
|
|
26
27
|
from utilities.click import (
|
27
28
|
CONTEXT_SETTINGS_HELP_OPTION_NAMES,
|
29
|
+
UUID,
|
28
30
|
Date,
|
29
31
|
DateDelta,
|
30
32
|
DateTimeDelta,
|
@@ -320,6 +322,9 @@ class TestParameters:
|
|
320
322
|
serialize=whenever.TimeDelta.format_common_iso,
|
321
323
|
failable=True,
|
322
324
|
),
|
325
|
+
_Case(
|
326
|
+
param=UUID(), name="uuid", strategy=uuids(), serialize=str, failable=True
|
327
|
+
),
|
323
328
|
_Case(
|
324
329
|
param=YearMonth(),
|
325
330
|
name="year-month",
|
@@ -15,6 +15,7 @@ from utilities.postgres import (
|
|
15
15
|
_ExtractURLDatabaseError,
|
16
16
|
_ExtractURLHostError,
|
17
17
|
_ExtractURLPortError,
|
18
|
+
_path_pg_dump,
|
18
19
|
_PGDumpFormat,
|
19
20
|
pg_dump,
|
20
21
|
restore,
|
@@ -60,7 +61,6 @@ class TestPGDump:
|
|
60
61
|
@given(
|
61
62
|
url=urls(),
|
62
63
|
path=temp_paths(),
|
63
|
-
format_=sampled_from(get_literal_elements(_PGDumpFormat)),
|
64
64
|
jobs=integers(min_value=0) | none(),
|
65
65
|
schemas=lists(text_ascii(min_size=1)) | none(),
|
66
66
|
schemas_exc=lists(text_ascii(min_size=1)) | none(),
|
@@ -75,7 +75,6 @@ class TestPGDump:
|
|
75
75
|
*,
|
76
76
|
url: URL,
|
77
77
|
path: Path,
|
78
|
-
format_: _PGDumpFormat,
|
79
78
|
jobs: int | None,
|
80
79
|
schemas: list[str] | None,
|
81
80
|
schemas_exc: list[str] | None,
|
@@ -88,7 +87,6 @@ class TestPGDump:
|
|
88
87
|
_ = _build_pg_dump(
|
89
88
|
url,
|
90
89
|
path,
|
91
|
-
format_=format_,
|
92
90
|
jobs=jobs,
|
93
91
|
schemas=schemas,
|
94
92
|
schemas_exc=schemas_exc,
|
@@ -99,6 +97,11 @@ class TestPGDump:
|
|
99
97
|
docker=docker,
|
100
98
|
)
|
101
99
|
|
100
|
+
@given(path=temp_paths(), format_=sampled_from(get_literal_elements(_PGDumpFormat)))
|
101
|
+
def test_path(self, *, path: Path, format_: _PGDumpFormat) -> None:
|
102
|
+
path = _path_pg_dump(path, format_=format_)
|
103
|
+
assert path.suffix in [".sql", ".pgdump", "", ".tar"]
|
104
|
+
|
102
105
|
|
103
106
|
class TestRestore:
|
104
107
|
@given(url=urls(), path=temp_paths(), logger=text_ascii(min_size=1) | none())
|
@@ -3,6 +3,7 @@ from dataclasses import dataclass
|
|
3
3
|
from ipaddress import IPv4Address, IPv6Address
|
4
4
|
from pathlib import Path
|
5
5
|
from typing import Any, ClassVar, assert_never
|
6
|
+
from uuid import UUID
|
6
7
|
|
7
8
|
import typed_settings
|
8
9
|
from hypothesis import given
|
@@ -13,6 +14,7 @@ from hypothesis.strategies import (
|
|
13
14
|
data,
|
14
15
|
ip_addresses,
|
15
16
|
tuples,
|
17
|
+
uuids,
|
16
18
|
)
|
17
19
|
from pytest import mark, param, raises
|
18
20
|
from typed_settings import EnvLoader, FileLoader, TomlFormat
|
@@ -87,6 +89,7 @@ class TestExtendedTSConverter:
|
|
87
89
|
_Case(
|
88
90
|
cls=TimeDelta, strategy=time_deltas(), serialize=TimeDelta.format_common_iso
|
89
91
|
),
|
92
|
+
_Case(cls=UUID, strategy=uuids(), serialize=str),
|
90
93
|
_Case(
|
91
94
|
cls=YearMonth, strategy=year_months(), serialize=YearMonth.format_common_iso
|
92
95
|
),
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
3
3
|
import enum
|
4
4
|
import ipaddress
|
5
5
|
import pathlib
|
6
|
+
import uuid
|
6
7
|
from typing import TYPE_CHECKING, TypedDict, assert_never, override
|
7
8
|
|
8
9
|
import click
|
@@ -329,6 +330,32 @@ class TimeDelta(ParamType):
|
|
329
330
|
assert_never(never)
|
330
331
|
|
331
332
|
|
333
|
+
class UUID(ParamType):
|
334
|
+
"""A UUID-valued parameter."""
|
335
|
+
|
336
|
+
name = "uuid"
|
337
|
+
|
338
|
+
@override
|
339
|
+
def __repr__(self) -> str:
|
340
|
+
return self.name.upper()
|
341
|
+
|
342
|
+
@override
|
343
|
+
def convert(
|
344
|
+
self, value: uuid.UUID | str, param: Parameter | None, ctx: Context | None
|
345
|
+
) -> uuid.UUID:
|
346
|
+
"""Convert a value into the `UUID` type."""
|
347
|
+
match value:
|
348
|
+
case uuid.UUID():
|
349
|
+
return value
|
350
|
+
case str():
|
351
|
+
try:
|
352
|
+
return uuid.UUID(value)
|
353
|
+
except ValueError as error:
|
354
|
+
self.fail(str(error), param, ctx)
|
355
|
+
case _ as never:
|
356
|
+
assert_never(never)
|
357
|
+
|
358
|
+
|
332
359
|
class YearMonth(ParamType):
|
333
360
|
"""A year-month parameter."""
|
334
361
|
|
@@ -561,6 +588,7 @@ def _make_metavar(param: Parameter, desc: str, /) -> str:
|
|
561
588
|
|
562
589
|
__all__ = [
|
563
590
|
"CONTEXT_SETTINGS_HELP_OPTION_NAMES",
|
591
|
+
"UUID",
|
564
592
|
"Date",
|
565
593
|
"DateDelta",
|
566
594
|
"DateTimeDelta",
|
@@ -45,7 +45,7 @@ async def pg_dump(
|
|
45
45
|
logger: LoggerOrName | None = None,
|
46
46
|
) -> None:
|
47
47
|
"""Run `pg_dump`."""
|
48
|
-
path =
|
48
|
+
path = _path_pg_dump(path, format_=format_)
|
49
49
|
path.parent.mkdir(parents=True, exist_ok=True)
|
50
50
|
cmd = _build_pg_dump(
|
51
51
|
url,
|
@@ -107,25 +107,12 @@ def _build_pg_dump(
|
|
107
107
|
docker: str | None = None,
|
108
108
|
) -> str:
|
109
109
|
database, host, port = _extract_url(url)
|
110
|
-
|
111
|
-
case "plain":
|
112
|
-
suffix = ".sql"
|
113
|
-
case "custom":
|
114
|
-
suffix = ".pgdump"
|
115
|
-
case "directory":
|
116
|
-
suffix = None
|
117
|
-
case "tar":
|
118
|
-
suffix = ".tar"
|
119
|
-
case _ as never:
|
120
|
-
assert_never(never)
|
121
|
-
file = Path(path)
|
122
|
-
if suffix is not None:
|
123
|
-
file = ensure_suffix(file, suffix)
|
110
|
+
path = _path_pg_dump(path, format_=format_)
|
124
111
|
parts: list[str] = [
|
125
112
|
"pg_dump",
|
126
113
|
# general options
|
127
114
|
f"--dbname={database}",
|
128
|
-
f"--file={str(
|
115
|
+
f"--file={str(path)!r}",
|
129
116
|
f"--format={format_}",
|
130
117
|
"--verbose",
|
131
118
|
# output options
|
@@ -162,6 +149,24 @@ def _build_pg_dump(
|
|
162
149
|
return " ".join(parts)
|
163
150
|
|
164
151
|
|
152
|
+
def _path_pg_dump(path: PathLike, /, *, format_: _PGDumpFormat = "plain") -> Path:
|
153
|
+
match format_:
|
154
|
+
case "plain":
|
155
|
+
suffix = ".sql"
|
156
|
+
case "custom":
|
157
|
+
suffix = ".pgdump"
|
158
|
+
case "directory":
|
159
|
+
suffix = None
|
160
|
+
case "tar":
|
161
|
+
suffix = ".tar"
|
162
|
+
case _ as never:
|
163
|
+
assert_never(never)
|
164
|
+
path = Path(path)
|
165
|
+
if suffix is not None:
|
166
|
+
path = ensure_suffix(path, suffix)
|
167
|
+
return path
|
168
|
+
|
169
|
+
|
165
170
|
##
|
166
171
|
|
167
172
|
|
@@ -7,6 +7,7 @@ from os import environ
|
|
7
7
|
from pathlib import Path
|
8
8
|
from re import search
|
9
9
|
from typing import TYPE_CHECKING, Any, assert_never, override
|
10
|
+
from uuid import UUID
|
10
11
|
|
11
12
|
import typed_settings
|
12
13
|
from typed_settings import EnvLoader, FileLoader, find
|
@@ -62,6 +63,7 @@ class ExtendedTSConverter(TSConverter):
|
|
62
63
|
(PlainDateTime, PlainDateTime.parse_common_iso),
|
63
64
|
(Time, Time.parse_common_iso),
|
64
65
|
(TimeDelta, TimeDelta.parse_common_iso),
|
66
|
+
(UUID, UUID),
|
65
67
|
(YearMonth, YearMonth.parse_common_iso),
|
66
68
|
(ZonedDateTime, ZonedDateTime.parse_common_iso),
|
67
69
|
]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/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.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/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
|
{dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/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.149.0 → dycw_utilities-0.149.2}/src/utilities/pytest_plugins/pytest_randomly.py
RENAMED
File without changes
|
{dycw_utilities-0.149.0 → dycw_utilities-0.149.2}/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
|