dycw-utilities 0.149.10__tar.gz → 0.149.11__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/PKG-INFO +1 -1
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/pyproject.toml +2 -2
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_pottery.py +19 -5
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pottery.py +9 -1
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/.gitignore +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/LICENSE +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/README.md +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_dnspython.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_gzip.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_inflect.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_json.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_objects/__init__.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_objects/objects.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_postgres.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_pytest_randomly.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_statsmodels.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_typed_settings.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_yield_access/__init__.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_yield_access/script.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_yield_access/script.sh +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/click.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/dnspython.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/gzip.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/http.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/inflect.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/json.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/math.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/os.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/period.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/postgres.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pytest_plugins/__init__.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/random.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/re.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/string.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/text.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/typed_settings.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/types.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/version.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/zoneinfo.py +0 -0
@@ -103,7 +103,7 @@ dependencies = [
|
|
103
103
|
name = "dycw-utilities"
|
104
104
|
readme = "README.md"
|
105
105
|
requires-python = ">= 3.12"
|
106
|
-
version = "0.149.
|
106
|
+
version = "0.149.11"
|
107
107
|
|
108
108
|
[project.entry-points.pytest11]
|
109
109
|
pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
|
@@ -136,7 +136,7 @@ test = [
|
|
136
136
|
# bump-my-version
|
137
137
|
[tool.bumpversion]
|
138
138
|
allow_dirty = true
|
139
|
-
current_version = "0.149.
|
139
|
+
current_version = "0.149.11"
|
140
140
|
|
141
141
|
[[tool.bumpversion.files]]
|
142
142
|
filename = "src/utilities/__init__.py"
|
@@ -1,6 +1,7 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
from asyncio import TaskGroup
|
4
|
+
from contextvars import ContextVar
|
4
5
|
from typing import TYPE_CHECKING, ClassVar
|
5
6
|
|
6
7
|
from pottery import AIORedlock
|
@@ -39,16 +40,27 @@ class TestTryYieldCoroutineLooper:
|
|
39
40
|
delta: ClassVar[TimeDelta] = 0.1 * SECOND
|
40
41
|
|
41
42
|
@mark.parametrize("use_logger", [param(True), param(False)])
|
43
|
+
@mark.parametrize("use_context", [param(True), param(False)])
|
42
44
|
async def test_main(
|
43
|
-
self,
|
45
|
+
self,
|
46
|
+
*,
|
47
|
+
caplog: LogCaptureFixture,
|
48
|
+
use_logger: bool,
|
49
|
+
use_context: bool,
|
50
|
+
test_redis: Redis,
|
44
51
|
) -> None:
|
45
52
|
caplog.set_level("DEBUG", logger=(name := unique_str()))
|
46
53
|
lst: list[None] = []
|
47
54
|
logger = name if use_logger else None
|
55
|
+
context = ContextVar(unique_str(), default=False) if use_context else None
|
48
56
|
|
49
57
|
async with TaskGroup() as tg:
|
50
|
-
_ = tg.create_task(
|
51
|
-
|
58
|
+
_ = tg.create_task(
|
59
|
+
self.now(test_redis, name, lst, logger=logger, context=context)
|
60
|
+
)
|
61
|
+
_ = tg.create_task(
|
62
|
+
self.delayed(test_redis, name, lst, logger=logger, context=context)
|
63
|
+
)
|
52
64
|
|
53
65
|
assert len(lst) == 1
|
54
66
|
if use_logger:
|
@@ -68,9 +80,10 @@ class TestTryYieldCoroutineLooper:
|
|
68
80
|
/,
|
69
81
|
*,
|
70
82
|
logger: LoggerOrName | None = None,
|
83
|
+
context: ContextVar[bool] | None = None,
|
71
84
|
) -> None:
|
72
85
|
async with try_yield_coroutine_looper(
|
73
|
-
redis, key, timeout_acquire=self.delta, logger=logger
|
86
|
+
redis, key, timeout_acquire=self.delta, logger=logger, context=context
|
74
87
|
) as looper:
|
75
88
|
if looper is not None:
|
76
89
|
assert await looper(self.func_main, lst)
|
@@ -83,9 +96,10 @@ class TestTryYieldCoroutineLooper:
|
|
83
96
|
/,
|
84
97
|
*,
|
85
98
|
logger: LoggerOrName | None = None,
|
99
|
+
context: ContextVar[bool] | None = None,
|
86
100
|
) -> None:
|
87
101
|
await sleep_td(self.delta)
|
88
|
-
await self.now(redis, key, lst, logger=logger)
|
102
|
+
await self.now(redis, key, lst, logger=logger, context=context)
|
89
103
|
|
90
104
|
@mark.parametrize("use_logger", [param(True), param(False)])
|
91
105
|
async def test_error(
|
@@ -12,12 +12,14 @@ from redis.asyncio import Redis
|
|
12
12
|
|
13
13
|
from utilities.asyncio import loop_until_succeed, sleep_td, timeout_td
|
14
14
|
from utilities.contextlib import enhanced_async_context_manager
|
15
|
+
from utilities.contextvars import yield_set_context
|
15
16
|
from utilities.iterables import always_iterable
|
16
17
|
from utilities.logging import get_logger
|
17
18
|
from utilities.whenever import MILLISECOND, SECOND, to_seconds
|
18
19
|
|
19
20
|
if TYPE_CHECKING:
|
20
21
|
from collections.abc import AsyncIterator, Callable, Iterable
|
22
|
+
from contextvars import ContextVar
|
21
23
|
|
22
24
|
from whenever import Delta
|
23
25
|
|
@@ -57,6 +59,7 @@ async def try_yield_coroutine_looper(
|
|
57
59
|
throttle: Delta | None = None,
|
58
60
|
logger: LoggerOrName | None = None,
|
59
61
|
sleep_error: Delta | None = None,
|
62
|
+
context: ContextVar[bool] | None = None,
|
60
63
|
) -> AsyncIterator[CoroutineLooper | None]:
|
61
64
|
"""Try acquire access to a coroutine looper."""
|
62
65
|
try: # skipif-ci-and-not-linux
|
@@ -70,7 +73,12 @@ async def try_yield_coroutine_looper(
|
|
70
73
|
sleep=sleep_acquire,
|
71
74
|
throttle=throttle,
|
72
75
|
) as lock:
|
73
|
-
|
76
|
+
looper = CoroutineLooper(lock=lock, logger=logger, sleep=sleep_error)
|
77
|
+
if context is None:
|
78
|
+
yield looper
|
79
|
+
else:
|
80
|
+
with yield_set_context(context):
|
81
|
+
yield looper
|
74
82
|
except _YieldAccessUnableToAcquireLockError as error: # skipif-ci-and-not-linux
|
75
83
|
if logger is not None:
|
76
84
|
get_logger(logger=logger).info("%s", error)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_with/outer_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/modules/package_without/module_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/tests/test_typing_funcs/no_future.py
RENAMED
File without changes
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/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
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pytest_plugins/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.149.10 → dycw_utilities-0.149.11}/src/utilities/pytest_plugins/pytest_randomly.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|