dycw-utilities 0.134.0__tar.gz → 0.134.1__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.134.0 → dycw_utilities-0.134.1}/PKG-INFO +1 -1
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/pyproject.toml +3 -2
- dycw_utilities-0.134.1/src/tests/test_pudb.py +37 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/functools.py +6 -3
- dycw_utilities-0.134.1/src/utilities/pudb.py +62 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/.gitignore +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/LICENSE +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/README.md +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_aiolimiter.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_arq.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/aiolimiter.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/arq.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/click.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/git.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/http.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/math.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/os.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/period.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/random.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/re.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/string.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/text.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/types.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/version.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/utilities/zoneinfo.py +0 -0
@@ -64,6 +64,7 @@ pottery = ["pottery >= 3.0.1, < 3.1"]
|
|
64
64
|
pottery-test = ["orjson", "pytest-rerunfailures"]
|
65
65
|
pqdm = ["pqdm >= 0.2.0, < 0.3"]
|
66
66
|
psutil = ["psutil >= 7.0.0, < 7.1"]
|
67
|
+
pudb = ["pudb >= 2025.1, < 2025.2"]
|
67
68
|
pydantic = ["pydantic >= 2.11.4, < 2.12"]
|
68
69
|
pyinstrument = ["pyinstrument >= 5.0.2, < 5.1"]
|
69
70
|
pytest = [
|
@@ -104,7 +105,7 @@ dependencies = [
|
|
104
105
|
name = "dycw-utilities"
|
105
106
|
readme = "README.md"
|
106
107
|
requires-python = ">= 3.12"
|
107
|
-
version = "0.134.
|
108
|
+
version = "0.134.1"
|
108
109
|
|
109
110
|
[project.optional-dependencies]
|
110
111
|
logging = [
|
@@ -131,7 +132,7 @@ test = [
|
|
131
132
|
# bump-my-version
|
132
133
|
[tool.bumpversion]
|
133
134
|
allow_dirty = true
|
134
|
-
current_version = "0.134.
|
135
|
+
current_version = "0.134.1"
|
135
136
|
|
136
137
|
[[tool.bumpversion.files]]
|
137
138
|
filename = "src/utilities/__init__.py"
|
@@ -0,0 +1,37 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from asyncio import sleep
|
4
|
+
|
5
|
+
from hypothesis import given
|
6
|
+
from pytest import raises
|
7
|
+
|
8
|
+
from utilities.hypothesis import text_ascii
|
9
|
+
from utilities.pudb import call_pudb
|
10
|
+
|
11
|
+
|
12
|
+
class TestCallPUDB:
|
13
|
+
def test_sync(self) -> None:
|
14
|
+
@call_pudb
|
15
|
+
def func(x: int, y: int, /) -> float:
|
16
|
+
return x / y
|
17
|
+
|
18
|
+
with raises(ZeroDivisionError):
|
19
|
+
_ = func(1, 0)
|
20
|
+
|
21
|
+
async def test_async(self) -> None:
|
22
|
+
@call_pudb
|
23
|
+
async def func(x: int, y: int, /) -> float:
|
24
|
+
await sleep(0.01)
|
25
|
+
return x / y
|
26
|
+
|
27
|
+
with raises(ZeroDivisionError):
|
28
|
+
_ = await func(1, 0)
|
29
|
+
|
30
|
+
@given(env_var=text_ascii(min_size=1))
|
31
|
+
def test_custom_env_var(self, *, env_var: str) -> None:
|
32
|
+
@call_pudb(env_var=env_var)
|
33
|
+
def func(x: int, y: int, /) -> float:
|
34
|
+
return x / y
|
35
|
+
|
36
|
+
with raises(ZeroDivisionError):
|
37
|
+
_ = func(1, 0)
|
@@ -18,16 +18,19 @@ def cache[F: Callable](func: F, /) -> F:
|
|
18
18
|
##
|
19
19
|
|
20
20
|
|
21
|
+
_MAX_SIZE = 128
|
22
|
+
|
23
|
+
|
21
24
|
@overload
|
22
25
|
def lru_cache[F: Callable](
|
23
|
-
func: F, /, *, max_size: int =
|
26
|
+
func: F, /, *, max_size: int = _MAX_SIZE, typed: bool = False
|
24
27
|
) -> F: ...
|
25
28
|
@overload
|
26
29
|
def lru_cache[F: Callable](
|
27
|
-
func: None = None, /, *, max_size: int =
|
30
|
+
func: None = None, /, *, max_size: int = _MAX_SIZE, typed: bool = False
|
28
31
|
) -> Callable[[F], F]: ...
|
29
32
|
def lru_cache[F: Callable](
|
30
|
-
func: F | None = None, /, *, max_size: int =
|
33
|
+
func: F | None = None, /, *, max_size: int = _MAX_SIZE, typed: bool = False
|
31
34
|
) -> F | Callable[[F], F]:
|
32
35
|
"""Typed version of `lru_cache`."""
|
33
36
|
if func is None:
|
@@ -0,0 +1,62 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from asyncio import iscoroutinefunction
|
4
|
+
from functools import partial, wraps
|
5
|
+
from typing import TYPE_CHECKING, Any, NoReturn, cast, overload
|
6
|
+
|
7
|
+
from pudb import post_mortem
|
8
|
+
|
9
|
+
from utilities.os import GetEnvVarError, get_env_var
|
10
|
+
|
11
|
+
if TYPE_CHECKING:
|
12
|
+
from collections.abc import Callable
|
13
|
+
|
14
|
+
|
15
|
+
_ENV_VAR = "DEBUG"
|
16
|
+
|
17
|
+
|
18
|
+
@overload
|
19
|
+
def call_pudb[F: Callable](func: F, /, *, env_var: str = _ENV_VAR) -> F: ...
|
20
|
+
@overload
|
21
|
+
def call_pudb[F: Callable](
|
22
|
+
func: None = None, /, *, env_var: str = _ENV_VAR
|
23
|
+
) -> Callable[[F], F]: ...
|
24
|
+
def call_pudb[F: Callable](
|
25
|
+
func: F | None = None, /, *, env_var: str = _ENV_VAR
|
26
|
+
) -> F | Callable[[F], F]:
|
27
|
+
"""Call `pudb` upon failure, if the required environment variable is set."""
|
28
|
+
if func is None:
|
29
|
+
result = partial(call_pudb, env_var=env_var)
|
30
|
+
return cast("Callable[[F], F]", result)
|
31
|
+
|
32
|
+
if not iscoroutinefunction(func):
|
33
|
+
|
34
|
+
@wraps(func)
|
35
|
+
def wrapped_sync(*args: Any, **kwargs: Any) -> Any:
|
36
|
+
try:
|
37
|
+
return func(*args, **kwargs)
|
38
|
+
except Exception as error: # noqa: BLE001
|
39
|
+
_call_pudb(error, env_var=env_var)
|
40
|
+
|
41
|
+
return cast("F", wrapped_sync)
|
42
|
+
|
43
|
+
@wraps(func)
|
44
|
+
async def wrapped_async(*args: Any, **kwargs: Any) -> Any:
|
45
|
+
try:
|
46
|
+
return await func(*args, **kwargs)
|
47
|
+
except Exception as error: # noqa: BLE001
|
48
|
+
_call_pudb(error, env_var=env_var)
|
49
|
+
|
50
|
+
return cast("F", wrapped_async)
|
51
|
+
|
52
|
+
|
53
|
+
def _call_pudb(error: Exception, /, *, env_var: str = _ENV_VAR) -> NoReturn:
|
54
|
+
try:
|
55
|
+
_ = get_env_var(env_var)
|
56
|
+
except GetEnvVarError:
|
57
|
+
raise error from None
|
58
|
+
post_mortem() # pragma: no cover
|
59
|
+
raise error # pragma: no cover
|
60
|
+
|
61
|
+
|
62
|
+
__all__ = ["call_pudb"]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/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.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/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
|
{dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/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
|
File without changes
|
File without changes
|
{dycw_utilities-0.134.0 → dycw_utilities-0.134.1}/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
|
File without changes
|
File without changes
|