dycw-utilities 0.136.5__tar.gz → 0.136.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/PKG-INFO +1 -1
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/pyproject.toml +4 -4
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_libcst.py +10 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_sqlalchemy.py +22 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/libcst.py +25 -4
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/sqlalchemy.py +20 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/.gitignore +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/LICENSE +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/README.md +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/click.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/git.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/http.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/math.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/os.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/period.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/random.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/re.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/string.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/text.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/types.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/version.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/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.7"
|
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.7"
|
137
137
|
|
138
138
|
[[tool.bumpversion.files]]
|
139
139
|
filename = "src/utilities/__init__.py"
|
@@ -22,6 +22,7 @@ from pytest import raises
|
|
22
22
|
from tests.conftest import SKIPIF_CI
|
23
23
|
from utilities.iterables import one
|
24
24
|
from utilities.libcst import (
|
25
|
+
GenerateImportFromError,
|
25
26
|
_ParseImportAliasError,
|
26
27
|
_ParseImportEmptyModuleError,
|
27
28
|
generate_f_string,
|
@@ -63,8 +64,10 @@ class TestGenerateImportFrom:
|
|
63
64
|
case=sampled_from([
|
64
65
|
("foo", "bar", None, "from foo import bar"),
|
65
66
|
("foo", "bar", "bar2", "from foo import bar as bar2"),
|
67
|
+
("foo", "*", None, "from foo import *"),
|
66
68
|
("foo.bar", "baz", None, "from foo.bar import baz"),
|
67
69
|
("foo.bar", "baz", "baz2", "from foo.bar import baz as baz2"),
|
70
|
+
("foo.bar", "*", None, "from foo.bar import *"),
|
68
71
|
])
|
69
72
|
)
|
70
73
|
def test_main(self, *, case: tuple[str, str, str | None, str]) -> None:
|
@@ -73,6 +76,13 @@ class TestGenerateImportFrom:
|
|
73
76
|
result = Module([SimpleStatementLine([imp])]).code.strip("\n")
|
74
77
|
assert result == expected
|
75
78
|
|
79
|
+
def test_error(self) -> None:
|
80
|
+
with raises(
|
81
|
+
GenerateImportFromError,
|
82
|
+
match=r"Invalid import: 'from foo import \* as bar'",
|
83
|
+
):
|
84
|
+
_ = generate_import_from("foo", "*", asname="bar")
|
85
|
+
|
76
86
|
|
77
87
|
class TestParseImport:
|
78
88
|
def test_import_one_name(self) -> None:
|
@@ -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(
|
@@ -43,10 +43,30 @@ def generate_import_from(
|
|
43
43
|
module: str, name: str, /, *, asname: str | None = None
|
44
44
|
) -> ImportFrom:
|
45
45
|
"""Generate an `ImportFrom` object."""
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
46
|
+
match name, asname:
|
47
|
+
case "*", None:
|
48
|
+
names = ImportStar()
|
49
|
+
case "*", str():
|
50
|
+
raise GenerateImportFromError(module=module, asname=asname)
|
51
|
+
case _, None:
|
52
|
+
alias = ImportAlias(name=Name(name))
|
53
|
+
names = [alias]
|
54
|
+
case _, str():
|
55
|
+
alias = ImportAlias(name=Name(name), asname=AsName(Name(asname)))
|
56
|
+
names = [alias]
|
57
|
+
case _ as never:
|
58
|
+
assert_never(never)
|
59
|
+
return ImportFrom(module=split_dotted_str(module), names=names)
|
60
|
+
|
61
|
+
|
62
|
+
@dataclass(kw_only=True, slots=True)
|
63
|
+
class GenerateImportFromError(Exception):
|
64
|
+
module: str
|
65
|
+
asname: str | None = None
|
66
|
+
|
67
|
+
@override
|
68
|
+
def __str__(self) -> str:
|
69
|
+
return f"Invalid import: 'from {self.module} import * as {self.asname}'"
|
50
70
|
|
51
71
|
|
52
72
|
##
|
@@ -168,6 +188,7 @@ def render_module(source: str | Module, /) -> str:
|
|
168
188
|
|
169
189
|
|
170
190
|
__all__ = [
|
191
|
+
"GenerateImportFromError",
|
171
192
|
"ParseImportError",
|
172
193
|
"generate_f_string",
|
173
194
|
"generate_import",
|
@@ -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.5 → dycw_utilities-0.136.7}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/modules/package_without/module_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.136.5 → dycw_utilities-0.136.7}/src/tests/test_asyncio_classes/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.5 → dycw_utilities-0.136.7}/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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|