dycw-utilities 0.112.12__tar.gz → 0.112.14__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.112.12 → dycw_utilities-0.112.14}/PKG-INFO +1 -1
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/pyproject.toml +2 -2
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_more_itertools.py +14 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_redis.py +27 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/more_itertools.py +31 -1
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/redis.py +8 -4
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/.gitignore +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/LICENSE +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/README.md +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/scripts/__init__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/scripts/test_async_service/__init__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/scripts/test_async_service/__main__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/scripts/test_async_service/run.sh +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/scripts/test_queue_processor/__init__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/scripts/test_queue_processor/__main__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/scripts/test_queue_processor/run.sh +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_astor.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_loguru.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_rich.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_statsmodel.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_sys.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/__init__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/chain.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/decorated_async.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/decorated_sync.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/error_bind.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/many.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/one.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/recursive.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/task_group_one.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/task_group_two.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/two.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/untraced.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/astor.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/click.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/git.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/http.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/loguru.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/math.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/os.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/period.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/random.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/re.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/rich.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/sys.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/text.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/types.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/version.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/utilities/zoneinfo.py +0 -0
@@ -93,7 +93,7 @@ dependencies = [
|
|
93
93
|
name = "dycw-utilities"
|
94
94
|
readme = "README.md"
|
95
95
|
requires-python = ">= 3.12"
|
96
|
-
version = "0.112.
|
96
|
+
version = "0.112.14"
|
97
97
|
|
98
98
|
[project.optional-dependencies]
|
99
99
|
test = [
|
@@ -336,7 +336,7 @@ zzz-test-zoneinfo = [
|
|
336
336
|
# bump-my-version
|
337
337
|
[tool.bumpversion]
|
338
338
|
allow_dirty = true
|
339
|
-
current_version = "0.112.
|
339
|
+
current_version = "0.112.14"
|
340
340
|
|
341
341
|
[[tool.bumpversion.files]]
|
342
342
|
filename = "src/utilities/__init__.py"
|
@@ -7,6 +7,7 @@ from pytest import mark, param, raises
|
|
7
7
|
from utilities.more_itertools import (
|
8
8
|
Split,
|
9
9
|
bucket_mapping,
|
10
|
+
partition_list,
|
10
11
|
partition_typeguard,
|
11
12
|
peekable,
|
12
13
|
yield_splits,
|
@@ -35,6 +36,19 @@ class TestBucketMapping:
|
|
35
36
|
assert mapping["c"] == ["c1", "c2"]
|
36
37
|
|
37
38
|
|
39
|
+
class TestPartitionList:
|
40
|
+
def test_main(self) -> None:
|
41
|
+
def is_even(x: int, /) -> bool:
|
42
|
+
return x % 2 == 0
|
43
|
+
|
44
|
+
iterable = [1, 2, 3, 4]
|
45
|
+
false, true = partition_list(is_even, iterable)
|
46
|
+
assert isinstance(false, list)
|
47
|
+
assert false == [1, 3]
|
48
|
+
assert isinstance(true, list)
|
49
|
+
assert true == [2, 4]
|
50
|
+
|
51
|
+
|
38
52
|
class TestPartitionTypeguard:
|
39
53
|
def test_main(self) -> None:
|
40
54
|
def is_int(x: Any, /) -> TypeGuard[int]:
|
@@ -20,6 +20,7 @@ from tests.test_operator import make_objects
|
|
20
20
|
from utilities.functions import get_class_name
|
21
21
|
from utilities.hypothesis import (
|
22
22
|
int64s,
|
23
|
+
pairs,
|
23
24
|
settings_with_reduced_examples,
|
24
25
|
text_ascii,
|
25
26
|
yield_test_redis,
|
@@ -323,6 +324,20 @@ class TestRedisHashMapKey:
|
|
323
324
|
with raises(KeyError):
|
324
325
|
_ = await hm_key.get(test.redis, key)
|
325
326
|
|
327
|
+
@given(data=data(), key=pairs(int64s()), value=booleans())
|
328
|
+
@settings_with_reduced_examples(phases={Phase.generate})
|
329
|
+
@SKIPIF_CI_AND_NOT_LINUX
|
330
|
+
async def test_delete_compound(
|
331
|
+
self, *, data: DataObject, key: tuple[int, int], value: bool
|
332
|
+
) -> None:
|
333
|
+
async with yield_test_redis(data) as test:
|
334
|
+
hm_key = redis_hash_map_key(test.key, tuple[int, int], bool)
|
335
|
+
_ = await hm_key.set(test.redis, key, value)
|
336
|
+
assert await hm_key.get(test.redis, key) is value
|
337
|
+
_ = await hm_key.delete(test.redis, key)
|
338
|
+
with raises(KeyError):
|
339
|
+
_ = await hm_key.get(test.redis, key)
|
340
|
+
|
326
341
|
@given(data=data(), key=int64s(), value=booleans())
|
327
342
|
@settings_with_reduced_examples(phases={Phase.generate})
|
328
343
|
@SKIPIF_CI_AND_NOT_LINUX
|
@@ -333,6 +348,18 @@ class TestRedisHashMapKey:
|
|
333
348
|
_ = await hm_key.set(test.redis, key, value)
|
334
349
|
assert await hm_key.exists(test.redis, key)
|
335
350
|
|
351
|
+
@given(data=data(), key=pairs(int64s()), value=booleans())
|
352
|
+
@settings_with_reduced_examples(phases={Phase.generate})
|
353
|
+
@SKIPIF_CI_AND_NOT_LINUX
|
354
|
+
async def test_exists_compound(
|
355
|
+
self, *, data: DataObject, key: tuple[int, int], value: bool
|
356
|
+
) -> None:
|
357
|
+
async with yield_test_redis(data) as test:
|
358
|
+
hm_key = redis_hash_map_key(test.key, tuple[int, int], bool)
|
359
|
+
assert not (await hm_key.exists(test.redis, key))
|
360
|
+
_ = await hm_key.set(test.redis, key, value)
|
361
|
+
assert await hm_key.exists(test.redis, key)
|
362
|
+
|
336
363
|
@given(data=data(), mapping=dictionaries(int64s(), booleans()))
|
337
364
|
@settings_with_reduced_examples(phases={Phase.generate})
|
338
365
|
@SKIPIF_CI_AND_NOT_LINUX
|
@@ -32,6 +32,9 @@ _T = TypeVar("_T")
|
|
32
32
|
_U = TypeVar("_U")
|
33
33
|
|
34
34
|
|
35
|
+
##
|
36
|
+
|
37
|
+
|
35
38
|
@overload
|
36
39
|
def bucket_mapping(
|
37
40
|
iterable: Iterable[_T], func: Callable[[_T], THashable], /, *, list: Literal[True]
|
@@ -55,6 +58,20 @@ def bucket_mapping(
|
|
55
58
|
return mapping
|
56
59
|
|
57
60
|
|
61
|
+
##
|
62
|
+
|
63
|
+
|
64
|
+
def partition_list(
|
65
|
+
pred: Callable[[_T], bool], iterable: Iterable[_T], /
|
66
|
+
) -> tuple[list[_T], list[_T]]:
|
67
|
+
"""Partition with lists."""
|
68
|
+
false, true = partition(pred, iterable)
|
69
|
+
return list(false), list(true)
|
70
|
+
|
71
|
+
|
72
|
+
##
|
73
|
+
|
74
|
+
|
58
75
|
def partition_typeguard(
|
59
76
|
pred: Callable[[_T], TypeGuard[_U]], iterable: Iterable[_T], /
|
60
77
|
) -> tuple[Iterator[_T], Iterator[_U]]:
|
@@ -64,6 +81,9 @@ def partition_typeguard(
|
|
64
81
|
return false, true
|
65
82
|
|
66
83
|
|
84
|
+
##
|
85
|
+
|
86
|
+
|
67
87
|
class peekable(_peekable, Generic[_T]): # noqa: N801
|
68
88
|
"""Peekable which supports dropwhile/takewhile methods."""
|
69
89
|
|
@@ -98,6 +118,9 @@ class peekable(_peekable, Generic[_T]): # noqa: N801
|
|
98
118
|
yield next(self)
|
99
119
|
|
100
120
|
|
121
|
+
##
|
122
|
+
|
123
|
+
|
101
124
|
@dataclass(kw_only=True, slots=True)
|
102
125
|
class Split(Generic[_T]):
|
103
126
|
"""An iterable split into head/tail."""
|
@@ -184,4 +207,11 @@ def _yield_splits3(
|
|
184
207
|
)
|
185
208
|
|
186
209
|
|
187
|
-
__all__ = [
|
210
|
+
__all__ = [
|
211
|
+
"Split",
|
212
|
+
"bucket_mapping",
|
213
|
+
"partition_list",
|
214
|
+
"partition_typeguard",
|
215
|
+
"peekable",
|
216
|
+
"yield_splits",
|
217
|
+
]
|
@@ -88,20 +88,24 @@ class RedisHashMapKey(Generic[_K, _V]):
|
|
88
88
|
|
89
89
|
async def delete(self, redis: Redis, key: _K, /) -> int:
|
90
90
|
"""Delete a key from a hashmap in `redis`."""
|
91
|
+
ser = _serialize( # skipif-ci-and-not-linux
|
92
|
+
key, serializer=self.key_serializer
|
93
|
+
).decode()
|
91
94
|
async with timeout_dur( # skipif-ci-and-not-linux
|
92
95
|
duration=self.timeout, error=self.error
|
93
96
|
):
|
94
|
-
return await cast("Awaitable[int]", redis.hdel(self.name,
|
97
|
+
return await cast("Awaitable[int]", redis.hdel(self.name, ser))
|
95
98
|
raise ImpossibleCaseError(case=[f"{redis=}", f"{key=}"]) # pragma: no cover
|
96
99
|
|
97
100
|
async def exists(self, redis: Redis, key: _K, /) -> bool:
|
98
101
|
"""Check if the key exists in a hashmap in `redis`."""
|
102
|
+
ser = _serialize( # skipif-ci-and-not-linux
|
103
|
+
key, serializer=self.key_serializer
|
104
|
+
).decode()
|
99
105
|
async with timeout_dur( # skipif-ci-and-not-linux
|
100
106
|
duration=self.timeout, error=self.error
|
101
107
|
):
|
102
|
-
return await cast(
|
103
|
-
"Awaitable[bool]", redis.hexists(self.name, cast("str", key))
|
104
|
-
)
|
108
|
+
return await cast("Awaitable[bool]", redis.hexists(self.name, ser))
|
105
109
|
|
106
110
|
async def get(self, redis: Redis, key: _K, /) -> _V:
|
107
111
|
"""Get a value from a hashmap in `redis`."""
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_with/outer_1.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/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.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/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
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/scripts/test_async_service/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/scripts/test_async_service/__main__.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/scripts/test_async_service/run.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/scripts/test_queue_processor/run.sh
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
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/decorated_sync.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/error_bind.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/recursive.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/task_group_one.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/task_group_two.py
RENAMED
File without changes
|
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_traceback_funcs/untraced.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/src/tests/test_typing_funcs/no_future.py
RENAMED
File without changes
|
{dycw_utilities-0.112.12 → dycw_utilities-0.112.14}/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
|