dycw-utilities 0.150.13__tar.gz → 0.150.15__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.150.13 → dycw_utilities-0.150.15}/PKG-INFO +1 -1
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/pyproject.toml +2 -2
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_sqlalchemy.py +4 -1
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/sqlalchemy.py +22 -15
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/sqlalchemy_polars.py +6 -6
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/.gitignore +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/LICENSE +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/README.md +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_dnspython.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_gzip.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_json.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_postgres.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_pytest_randomly.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_yield_access/__init__.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_yield_access/script.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_yield_access/script.sh +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/click.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/dnspython.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/gzip.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/http.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/json.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/math.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/os.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/period.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/postgres.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/pytest_plugins/__init__.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/random.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/re.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/string.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/text.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/types.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/version.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/zoneinfo.py +0 -0
@@ -232,7 +232,7 @@ dependencies = [
|
|
232
232
|
name = "dycw-utilities"
|
233
233
|
readme = "README.md"
|
234
234
|
requires-python = ">= 3.12"
|
235
|
-
version = "0.150.
|
235
|
+
version = "0.150.15"
|
236
236
|
|
237
237
|
[project.entry-points.pytest11]
|
238
238
|
pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
|
@@ -265,7 +265,7 @@ test = [
|
|
265
265
|
# bump-my-version
|
266
266
|
[tool.bumpversion]
|
267
267
|
allow_dirty = true
|
268
|
-
current_version = "0.150.
|
268
|
+
current_version = "0.150.15"
|
269
269
|
|
270
270
|
[[tool.bumpversion.files]]
|
271
271
|
filename = "src/utilities/__init__.py"
|
@@ -94,7 +94,7 @@ from utilities.sqlalchemy import (
|
|
94
94
|
)
|
95
95
|
from utilities.text import strip_and_dedent
|
96
96
|
from utilities.typing import get_args, get_literal_elements
|
97
|
-
from utilities.whenever import format_compact, get_now, to_local_plain
|
97
|
+
from utilities.whenever import MILLISECOND, format_compact, get_now, to_local_plain
|
98
98
|
|
99
99
|
if TYPE_CHECKING:
|
100
100
|
from collections.abc import Callable, Iterator
|
@@ -144,6 +144,9 @@ class TestCheckConnect:
|
|
144
144
|
async def test_async(self, *, test_async_engine: AsyncEngine) -> None:
|
145
145
|
assert await check_connect_async(test_async_engine)
|
146
146
|
|
147
|
+
async def test_async_timeout(self, *, test_async_engine: AsyncEngine) -> None:
|
148
|
+
assert not await check_connect_async(test_async_engine, timeout=MILLISECOND)
|
149
|
+
|
147
150
|
|
148
151
|
class TestCheckEngine:
|
149
152
|
async def test_main(self, *, test_async_engine: AsyncEngine) -> None:
|
@@ -97,12 +97,17 @@ from utilities.iterables import (
|
|
97
97
|
)
|
98
98
|
from utilities.reprlib import get_repr
|
99
99
|
from utilities.text import secret_str, snake_case
|
100
|
-
from utilities.types import
|
100
|
+
from utilities.types import (
|
101
|
+
Delta,
|
102
|
+
MaybeIterable,
|
103
|
+
MaybeType,
|
104
|
+
StrMapping,
|
105
|
+
TupleOrStrMapping,
|
106
|
+
)
|
101
107
|
|
102
108
|
if TYPE_CHECKING:
|
103
109
|
from enum import Enum, StrEnum
|
104
110
|
|
105
|
-
from whenever import TimeDelta
|
106
111
|
|
107
112
|
type EngineOrConnectionOrAsync = Engine | Connection | AsyncEngine | AsyncConnection
|
108
113
|
type Dialect = Literal["mssql", "mysql", "oracle", "postgresql", "sqlite"]
|
@@ -127,12 +132,14 @@ def check_connect(engine: Engine, /) -> bool:
|
|
127
132
|
return False
|
128
133
|
|
129
134
|
|
130
|
-
async def check_connect_async(
|
135
|
+
async def check_connect_async(
|
136
|
+
engine: AsyncEngine, /, *, timeout: Delta | None = None
|
137
|
+
) -> bool:
|
131
138
|
"""Check if an engine can connect."""
|
132
139
|
try:
|
133
|
-
async with engine.connect() as conn:
|
140
|
+
async with timeout_td(timeout), engine.connect() as conn:
|
134
141
|
return bool((await conn.execute(_SELECT)).scalar_one())
|
135
|
-
except (OperationalError, ProgrammingError):
|
142
|
+
except (OperationalError, ProgrammingError, TimeoutError):
|
136
143
|
return False
|
137
144
|
|
138
145
|
|
@@ -143,7 +150,7 @@ async def check_engine(
|
|
143
150
|
engine: AsyncEngine,
|
144
151
|
/,
|
145
152
|
*,
|
146
|
-
timeout:
|
153
|
+
timeout: Delta | None = None,
|
147
154
|
error: type[Exception] = TimeoutError,
|
148
155
|
num_tables: int | tuple[int, float] | None = None,
|
149
156
|
) -> None:
|
@@ -316,7 +323,7 @@ async def ensure_tables_created(
|
|
316
323
|
engine: AsyncEngine,
|
317
324
|
/,
|
318
325
|
*tables_or_orms: TableOrORMInstOrClass,
|
319
|
-
timeout:
|
326
|
+
timeout: Delta | None = None,
|
320
327
|
error: type[Exception] = TimeoutError,
|
321
328
|
) -> None:
|
322
329
|
"""Ensure a table/set of tables is/are created."""
|
@@ -345,7 +352,7 @@ async def ensure_tables_created(
|
|
345
352
|
async def ensure_tables_dropped(
|
346
353
|
engine: AsyncEngine,
|
347
354
|
*tables_or_orms: TableOrORMInstOrClass,
|
348
|
-
timeout:
|
355
|
+
timeout: Delta | None = None,
|
349
356
|
error: type[Exception] = TimeoutError,
|
350
357
|
) -> None:
|
351
358
|
"""Ensure a table/set of tables is/are dropped."""
|
@@ -575,9 +582,9 @@ async def insert_items(
|
|
575
582
|
snake: bool = False,
|
576
583
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
577
584
|
assume_tables_exist: bool = False,
|
578
|
-
timeout_create:
|
585
|
+
timeout_create: Delta | None = None,
|
579
586
|
error_create: type[Exception] = TimeoutError,
|
580
|
-
timeout_insert:
|
587
|
+
timeout_insert: Delta | None = None,
|
581
588
|
error_insert: type[Exception] = TimeoutError,
|
582
589
|
) -> None:
|
583
590
|
"""Insert a set of items into a database.
|
@@ -676,9 +683,9 @@ async def migrate_data(
|
|
676
683
|
table_or_orm_to: TableOrORMInstOrClass | None = None,
|
677
684
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
678
685
|
assume_tables_exist: bool = False,
|
679
|
-
timeout_create:
|
686
|
+
timeout_create: Delta | None = None,
|
680
687
|
error_create: type[Exception] = TimeoutError,
|
681
|
-
timeout_insert:
|
688
|
+
timeout_insert: Delta | None = None,
|
682
689
|
error_insert: type[Exception] = TimeoutError,
|
683
690
|
) -> None:
|
684
691
|
"""Migrate the contents of a table from one database to another."""
|
@@ -812,9 +819,9 @@ async def upsert_items(
|
|
812
819
|
selected_or_all: _SelectedOrAll = "selected",
|
813
820
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
814
821
|
assume_tables_exist: bool = False,
|
815
|
-
timeout_create:
|
822
|
+
timeout_create: Delta | None = None,
|
816
823
|
error_create: type[Exception] = TimeoutError,
|
817
|
-
timeout_insert:
|
824
|
+
timeout_insert: Delta | None = None,
|
818
825
|
error_insert: type[Exception] = TimeoutError,
|
819
826
|
) -> None:
|
820
827
|
"""Upsert a set of items into a database.
|
@@ -934,7 +941,7 @@ async def yield_connection(
|
|
934
941
|
engine: AsyncEngine,
|
935
942
|
/,
|
936
943
|
*,
|
937
|
-
timeout:
|
944
|
+
timeout: Delta | None = None,
|
938
945
|
error: MaybeType[BaseException] = TimeoutError,
|
939
946
|
) -> AsyncIterator[AsyncConnection]:
|
940
947
|
"""Yield an async connection."""
|
@@ -65,7 +65,7 @@ if TYPE_CHECKING:
|
|
65
65
|
from sqlalchemy.sql.base import ReadOnlyColumnCollection
|
66
66
|
from whenever import TimeDelta
|
67
67
|
|
68
|
-
from utilities.types import MaybeType, TimeZoneLike
|
68
|
+
from utilities.types import Delta, MaybeType, TimeZoneLike
|
69
69
|
|
70
70
|
|
71
71
|
async def insert_dataframe(
|
@@ -228,7 +228,7 @@ async def select_to_dataframe(
|
|
228
228
|
in_clauses: tuple[Column[Any], Iterable[Any]] | None = None,
|
229
229
|
in_clauses_chunk_size: int | None = None,
|
230
230
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
231
|
-
timeout:
|
231
|
+
timeout: Delta | None = None,
|
232
232
|
**kwargs: Any,
|
233
233
|
) -> DataFrame: ...
|
234
234
|
@overload
|
@@ -243,7 +243,7 @@ async def select_to_dataframe(
|
|
243
243
|
in_clauses: None = None,
|
244
244
|
in_clauses_chunk_size: int | None = None,
|
245
245
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
246
|
-
timeout:
|
246
|
+
timeout: Delta | None = None,
|
247
247
|
**kwargs: Any,
|
248
248
|
) -> Iterable[DataFrame]: ...
|
249
249
|
@overload
|
@@ -258,7 +258,7 @@ async def select_to_dataframe(
|
|
258
258
|
in_clauses: tuple[Column[Any], Iterable[Any]],
|
259
259
|
in_clauses_chunk_size: int | None = None,
|
260
260
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
261
|
-
timeout:
|
261
|
+
timeout: Delta | None = None,
|
262
262
|
**kwargs: Any,
|
263
263
|
) -> AsyncIterable[DataFrame]: ...
|
264
264
|
@overload
|
@@ -273,7 +273,7 @@ async def select_to_dataframe(
|
|
273
273
|
in_clauses: tuple[Column[Any], Iterable[Any]] | None = None,
|
274
274
|
in_clauses_chunk_size: int | None = None,
|
275
275
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
276
|
-
timeout:
|
276
|
+
timeout: Delta | None = None,
|
277
277
|
**kwargs: Any,
|
278
278
|
) -> DataFrame | Iterable[DataFrame] | AsyncIterable[DataFrame]: ...
|
279
279
|
async def select_to_dataframe(
|
@@ -287,7 +287,7 @@ async def select_to_dataframe(
|
|
287
287
|
in_clauses: tuple[Column[Any], Iterable[Any]] | None = None,
|
288
288
|
in_clauses_chunk_size: int | None = None,
|
289
289
|
chunk_size_frac: float = CHUNK_SIZE_FRAC,
|
290
|
-
timeout:
|
290
|
+
timeout: Delta | None = None,
|
291
291
|
error: MaybeType[BaseException] = TimeoutError,
|
292
292
|
**kwargs: Any,
|
293
293
|
) -> DataFrame | Iterable[DataFrame] | AsyncIterable[DataFrame]:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/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.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/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
|
{dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_typing_funcs/no_future.py
RENAMED
File without changes
|
{dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/tests/test_typing_funcs/with_future.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/src/utilities/pytest_plugins/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.150.13 → dycw_utilities-0.150.15}/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
|