dycw-utilities 0.136.6__tar.gz → 0.136.8__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.136.6 → dycw_utilities-0.136.8}/PKG-INFO +1 -1
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/pyproject.toml +4 -4
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_pottery.py +1 -1
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_sqlalchemy.py +22 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/sqlalchemy.py +20 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/.gitignore +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/LICENSE +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/README.md +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/click.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/git.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/http.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/math.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/more_itertools.py +39 -39
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/os.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/period.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/random.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/re.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/string.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/text.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/types.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/version.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/utilities/zoneinfo.py +0 -0
@@ -51,7 +51,7 @@ luigi = ["luigi >= 3.6.0, < 3.7"]
|
|
51
51
|
math-test = ["numpy"]
|
52
52
|
memory-profiler = ["memory-profiler >= 0.61.0, < 0.62"]
|
53
53
|
more-itertools = ["more-itertools >= 10.7.0, < 10.8"]
|
54
|
-
numpy = ["numpy >= 2.3.
|
54
|
+
numpy = ["numpy >= 2.3.1, < 2.4"]
|
55
55
|
operator = ["polars-lts-cpu"]
|
56
56
|
optuna = ["optuna >= 4.4.0, < 4.5"]
|
57
57
|
orjson = ["orjson >= 3.10.18, < 3.11"]
|
@@ -80,7 +80,7 @@ python-dotenv = ["python-dotenv >= 1.1.0, < 1.2"]
|
|
80
80
|
redis = ["redis >= 6.2.0, < 6.3", "orjson"]
|
81
81
|
redis-test = ["pytest-rerunfailures"]
|
82
82
|
reprlib-test = ["rich"]
|
83
|
-
scipy = ["scipy >= 1.
|
83
|
+
scipy = ["scipy >= 1.16.0, < 1.17"]
|
84
84
|
sklearn = ["scikit-learn >= 1.7.0, < 1.8"]
|
85
85
|
slack-sdk = ["slack-sdk >= 3.35.0, < 3.36"]
|
86
86
|
slack-sdk-test = ["aiohttp"]
|
@@ -105,7 +105,7 @@ dependencies = [
|
|
105
105
|
name = "dycw-utilities"
|
106
106
|
readme = "README.md"
|
107
107
|
requires-python = ">= 3.12"
|
108
|
-
version = "0.136.
|
108
|
+
version = "0.136.8"
|
109
109
|
|
110
110
|
[project.optional-dependencies]
|
111
111
|
logging = [
|
@@ -133,7 +133,7 @@ test = [
|
|
133
133
|
# bump-my-version
|
134
134
|
[tool.bumpversion]
|
135
135
|
allow_dirty = true
|
136
|
-
current_version = "0.136.
|
136
|
+
current_version = "0.136.8"
|
137
137
|
|
138
138
|
[[tool.bumpversion.files]]
|
139
139
|
filename = "src/utilities/__init__.py"
|
@@ -66,7 +66,7 @@ class TestYieldAccess:
|
|
66
66
|
) -> None:
|
67
67
|
with Timer() as timer:
|
68
68
|
await _func_access(num_tasks, unique_str(), num_locks=num_locks)
|
69
|
-
assert (min_multiple * _DELTA) <= timer <= (
|
69
|
+
assert (min_multiple * _DELTA) <= timer <= (5 * min_multiple * _DELTA)
|
70
70
|
|
71
71
|
async def test_error_num_locks(self) -> None:
|
72
72
|
key = unique_str()
|
@@ -1,6 +1,7 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
from dataclasses import dataclass, field
|
4
|
+
from enum import Enum, StrEnum, auto
|
4
5
|
from itertools import chain
|
5
6
|
from typing import TYPE_CHECKING, Any, Literal, cast, overload, override
|
6
7
|
from uuid import uuid4
|
@@ -69,6 +70,8 @@ from utilities.sqlalchemy import (
|
|
69
70
|
create_async_engine,
|
70
71
|
ensure_tables_created,
|
71
72
|
ensure_tables_dropped,
|
73
|
+
enum_name,
|
74
|
+
enum_values,
|
72
75
|
get_chunk_size,
|
73
76
|
get_column_names,
|
74
77
|
get_columns,
|
@@ -278,6 +281,25 @@ class TestEnsureTablesDropped:
|
|
278
281
|
_ = await conn.execute(sel)
|
279
282
|
|
280
283
|
|
284
|
+
class TestEnumName:
|
285
|
+
def test_main(self) -> None:
|
286
|
+
class Example(Enum): ...
|
287
|
+
|
288
|
+
result = enum_name(Example)
|
289
|
+
assert result == "example_enum"
|
290
|
+
|
291
|
+
|
292
|
+
class TestEnumValues:
|
293
|
+
def test_main(self) -> None:
|
294
|
+
class Example(StrEnum):
|
295
|
+
true = auto()
|
296
|
+
false = auto()
|
297
|
+
|
298
|
+
result = enum_values(Example)
|
299
|
+
expected = ["true", "false"]
|
300
|
+
assert result == expected
|
301
|
+
|
302
|
+
|
281
303
|
class TestGetChunkSize:
|
282
304
|
@given(chunk_size_frac=floats(0.0, 1.0), scaling=int32s(min_value=0))
|
283
305
|
@settings(
|
@@ -86,6 +86,8 @@ from utilities.types import MaybeIterable, MaybeType, StrMapping, TupleOrStrMapp
|
|
86
86
|
from utilities.whenever import SECOND
|
87
87
|
|
88
88
|
if TYPE_CHECKING:
|
89
|
+
from enum import Enum, StrEnum
|
90
|
+
|
89
91
|
from whenever import TimeDelta
|
90
92
|
|
91
93
|
type _EngineOrConnectionOrAsync = Engine | Connection | AsyncEngine | AsyncConnection
|
@@ -284,6 +286,22 @@ async def ensure_tables_dropped(
|
|
284
286
|
##
|
285
287
|
|
286
288
|
|
289
|
+
def enum_name(enum: type[Enum], /) -> str:
|
290
|
+
"""Get the name of an Enum."""
|
291
|
+
return f"{snake_case(get_class_name(enum))}_enum"
|
292
|
+
|
293
|
+
|
294
|
+
##
|
295
|
+
|
296
|
+
|
297
|
+
def enum_values(enum: type[StrEnum], /) -> list[str]:
|
298
|
+
"""Get the values of a StrEnum."""
|
299
|
+
return [e.value for e in enum]
|
300
|
+
|
301
|
+
|
302
|
+
##
|
303
|
+
|
304
|
+
|
287
305
|
def get_chunk_size(
|
288
306
|
engine_or_conn: _EngineOrConnectionOrAsync,
|
289
307
|
/,
|
@@ -1171,6 +1189,8 @@ __all__ = [
|
|
1171
1189
|
"create_async_engine",
|
1172
1190
|
"ensure_tables_created",
|
1173
1191
|
"ensure_tables_dropped",
|
1192
|
+
"enum_name",
|
1193
|
+
"enum_values",
|
1174
1194
|
"get_chunk_size",
|
1175
1195
|
"get_column_names",
|
1176
1196
|
"get_columns",
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/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.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/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
|
{dycw_utilities-0.136.6 → dycw_utilities-0.136.8}/src/tests/test_asyncio_classes/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.136.6 → dycw_utilities-0.136.8}/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
|
@@ -28,50 +28,59 @@ if TYPE_CHECKING:
|
|
28
28
|
|
29
29
|
|
30
30
|
@overload
|
31
|
-
def bucket_mapping[T,
|
31
|
+
def bucket_mapping[T, UH: Hashable](
|
32
32
|
iterable: Iterable[T],
|
33
33
|
func: Callable[[T], UH],
|
34
34
|
/,
|
35
35
|
*,
|
36
|
-
pre:
|
36
|
+
pre: None = None,
|
37
|
+
post: None = None,
|
38
|
+
) -> Mapping[UH, Iterator[T]]: ...
|
39
|
+
@overload
|
40
|
+
def bucket_mapping[T, UH: Hashable](
|
41
|
+
iterable: Iterable[T],
|
42
|
+
func: Callable[[T], UH],
|
43
|
+
/,
|
44
|
+
*,
|
45
|
+
pre: None = None,
|
37
46
|
post: Literal["list"],
|
38
|
-
) -> Mapping[UH, list[
|
47
|
+
) -> Mapping[UH, list[T]]: ...
|
39
48
|
@overload
|
40
|
-
def bucket_mapping[T,
|
49
|
+
def bucket_mapping[T, UH: Hashable](
|
41
50
|
iterable: Iterable[T],
|
42
51
|
func: Callable[[T], UH],
|
43
52
|
/,
|
44
53
|
*,
|
45
|
-
pre:
|
54
|
+
pre: None = None,
|
46
55
|
post: Literal["tuple"],
|
47
|
-
) -> Mapping[UH, tuple[
|
56
|
+
) -> Mapping[UH, tuple[T, ...]]: ...
|
48
57
|
@overload
|
49
|
-
def bucket_mapping[T,
|
58
|
+
def bucket_mapping[T, UH: Hashable](
|
50
59
|
iterable: Iterable[T],
|
51
60
|
func: Callable[[T], UH],
|
52
61
|
/,
|
53
62
|
*,
|
54
|
-
pre:
|
63
|
+
pre: None = None,
|
55
64
|
post: Literal["set"],
|
56
|
-
) -> Mapping[UH, set[
|
65
|
+
) -> Mapping[UH, set[T]]: ...
|
57
66
|
@overload
|
58
|
-
def bucket_mapping[T,
|
67
|
+
def bucket_mapping[T, UH: Hashable](
|
59
68
|
iterable: Iterable[T],
|
60
69
|
func: Callable[[T], UH],
|
61
70
|
/,
|
62
71
|
*,
|
63
|
-
pre:
|
72
|
+
pre: None = None,
|
64
73
|
post: Literal["frozenset"],
|
65
|
-
) -> Mapping[UH, frozenset[
|
74
|
+
) -> Mapping[UH, frozenset[T]]: ...
|
66
75
|
@overload
|
67
|
-
def bucket_mapping[T,
|
76
|
+
def bucket_mapping[T, UH: Hashable](
|
68
77
|
iterable: Iterable[T],
|
69
78
|
func: Callable[[T], UH],
|
70
79
|
/,
|
71
80
|
*,
|
72
|
-
pre:
|
81
|
+
pre: None = None,
|
73
82
|
post: Literal["unique"],
|
74
|
-
) -> Mapping[UH,
|
83
|
+
) -> Mapping[UH, T]: ...
|
75
84
|
@overload
|
76
85
|
def bucket_mapping[T, U, UH: Hashable](
|
77
86
|
iterable: Iterable[T],
|
@@ -82,59 +91,50 @@ def bucket_mapping[T, U, UH: Hashable](
|
|
82
91
|
post: None = None,
|
83
92
|
) -> Mapping[UH, Iterator[U]]: ...
|
84
93
|
@overload
|
85
|
-
def bucket_mapping[T, UH: Hashable](
|
94
|
+
def bucket_mapping[T, U, UH: Hashable](
|
86
95
|
iterable: Iterable[T],
|
87
96
|
func: Callable[[T], UH],
|
88
97
|
/,
|
89
98
|
*,
|
90
|
-
pre:
|
99
|
+
pre: Callable[[T], U],
|
91
100
|
post: Literal["list"],
|
92
|
-
) -> Mapping[UH, list[
|
101
|
+
) -> Mapping[UH, list[U]]: ...
|
93
102
|
@overload
|
94
|
-
def bucket_mapping[T, UH: Hashable](
|
103
|
+
def bucket_mapping[T, U, UH: Hashable](
|
95
104
|
iterable: Iterable[T],
|
96
105
|
func: Callable[[T], UH],
|
97
106
|
/,
|
98
107
|
*,
|
99
|
-
pre:
|
108
|
+
pre: Callable[[T], U],
|
100
109
|
post: Literal["tuple"],
|
101
|
-
) -> Mapping[UH, tuple[
|
110
|
+
) -> Mapping[UH, tuple[U, ...]]: ...
|
102
111
|
@overload
|
103
|
-
def bucket_mapping[T, UH: Hashable](
|
112
|
+
def bucket_mapping[T, U, UH: Hashable](
|
104
113
|
iterable: Iterable[T],
|
105
114
|
func: Callable[[T], UH],
|
106
115
|
/,
|
107
116
|
*,
|
108
|
-
pre:
|
117
|
+
pre: Callable[[T], U],
|
109
118
|
post: Literal["set"],
|
110
|
-
) -> Mapping[UH, set[
|
119
|
+
) -> Mapping[UH, set[U]]: ...
|
111
120
|
@overload
|
112
|
-
def bucket_mapping[T, UH: Hashable](
|
121
|
+
def bucket_mapping[T, U, UH: Hashable](
|
113
122
|
iterable: Iterable[T],
|
114
123
|
func: Callable[[T], UH],
|
115
124
|
/,
|
116
125
|
*,
|
117
|
-
pre:
|
126
|
+
pre: Callable[[T], U],
|
118
127
|
post: Literal["frozenset"],
|
119
|
-
) -> Mapping[UH, frozenset[
|
128
|
+
) -> Mapping[UH, frozenset[U]]: ...
|
120
129
|
@overload
|
121
|
-
def bucket_mapping[T, UH: Hashable](
|
130
|
+
def bucket_mapping[T, U, UH: Hashable](
|
122
131
|
iterable: Iterable[T],
|
123
132
|
func: Callable[[T], UH],
|
124
133
|
/,
|
125
134
|
*,
|
126
|
-
pre: None = None,
|
135
|
+
pre: Callable[[T], U] | None = None,
|
127
136
|
post: Literal["unique"],
|
128
|
-
) -> Mapping[UH,
|
129
|
-
@overload
|
130
|
-
def bucket_mapping[T, UH: Hashable](
|
131
|
-
iterable: Iterable[T],
|
132
|
-
func: Callable[[T], UH],
|
133
|
-
/,
|
134
|
-
*,
|
135
|
-
pre: None = None,
|
136
|
-
post: None = None,
|
137
|
-
) -> Mapping[UH, Iterator[T]]: ...
|
137
|
+
) -> Mapping[UH, U]: ...
|
138
138
|
@overload
|
139
139
|
def bucket_mapping[T, U, UH: Hashable](
|
140
140
|
iterable: Iterable[T],
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|