dycw-utilities 0.110.6__tar.gz → 0.110.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/PKG-INFO +1 -1
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/pyproject.toml +2 -2
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_functions.py +55 -13
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/functions.py +39 -8
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/parse.py +2 -2
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/.gitignore +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/LICENSE +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/README.md +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/__init__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/test_async_service/__init__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/test_async_service/__main__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/test_async_service/run.sh +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/test_queue_processor/__init__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/test_queue_processor/__main__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/test_queue_processor/run.sh +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_astor.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_loguru.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_rich.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_statsmodel.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_sys.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/__init__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/chain.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/decorated_async.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/decorated_sync.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/error_bind.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/many.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/one.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/recursive.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/task_group_one.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/task_group_two.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/two.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/untraced.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/astor.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/click.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/git.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/http.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/loguru.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/math.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/os.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/period.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/random.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/re.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/rich.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/sys.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/text.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/types.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/version.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/utilities/zoneinfo.py +0 -0
@@ -94,7 +94,7 @@ dependencies = [
|
|
94
94
|
name = "dycw-utilities"
|
95
95
|
readme = "README.md"
|
96
96
|
requires-python = ">= 3.12"
|
97
|
-
version = "0.110.
|
97
|
+
version = "0.110.7"
|
98
98
|
|
99
99
|
[project.optional-dependencies]
|
100
100
|
test = [
|
@@ -337,7 +337,7 @@ zzz-test-zoneinfo = [
|
|
337
337
|
# bump-my-version
|
338
338
|
[tool.bumpversion]
|
339
339
|
allow_dirty = true
|
340
|
-
current_version = "0.110.
|
340
|
+
current_version = "0.110.7"
|
341
341
|
|
342
342
|
[[tool.bumpversion.files]]
|
343
343
|
filename = "src/utilities/__init__.py"
|
@@ -12,6 +12,7 @@ from typing import TYPE_CHECKING, Any, ClassVar, ParamSpec, TypeVar, cast
|
|
12
12
|
from hypothesis import given
|
13
13
|
from hypothesis.strategies import (
|
14
14
|
DataObject,
|
15
|
+
SearchStrategy,
|
15
16
|
booleans,
|
16
17
|
builds,
|
17
18
|
data,
|
@@ -73,7 +74,7 @@ from utilities.functions import (
|
|
73
74
|
is_dataclass_class,
|
74
75
|
is_dataclass_instance,
|
75
76
|
is_hashable,
|
76
|
-
|
77
|
+
is_instance_not_bool_int,
|
77
78
|
is_iterable_of,
|
78
79
|
is_none,
|
79
80
|
is_not_none,
|
@@ -82,7 +83,7 @@ from utilities.functions import (
|
|
82
83
|
is_sized,
|
83
84
|
is_sized_not_str,
|
84
85
|
is_string_mapping,
|
85
|
-
|
86
|
+
is_subclass_not_bool_int,
|
86
87
|
is_tuple,
|
87
88
|
is_tuple_or_str_mapping,
|
88
89
|
make_isinstance,
|
@@ -621,14 +622,37 @@ class TestIsHashable:
|
|
621
622
|
assert is_hashable(obj) is expected
|
622
623
|
|
623
624
|
|
624
|
-
class
|
625
|
-
@given(
|
626
|
-
|
627
|
-
|
625
|
+
class TestIsInstanceNotIntBool:
|
626
|
+
@given(
|
627
|
+
data=data(),
|
628
|
+
case=sampled_from([
|
629
|
+
(booleans(), bool, True),
|
630
|
+
(booleans(), int, False),
|
631
|
+
(integers(), bool, False),
|
632
|
+
(integers(), int, True),
|
633
|
+
(booleans(), (bool, int), True),
|
634
|
+
(integers(), (bool, int), True),
|
635
|
+
]),
|
636
|
+
)
|
637
|
+
def test_main(
|
638
|
+
self, *, data: DataObject, case: tuple[SearchStrategy[Any], type[Any], bool]
|
639
|
+
) -> None:
|
640
|
+
strategy, type_, expected = case
|
641
|
+
value = data.draw(strategy)
|
642
|
+
assert is_instance_not_bool_int(value, type_) is expected
|
628
643
|
|
629
644
|
@given(bool_=booleans())
|
630
|
-
def
|
631
|
-
|
645
|
+
def test_bool_value_vs_custom_int(self, *, bool_: bool) -> None:
|
646
|
+
class MyInt(int): ...
|
647
|
+
|
648
|
+
assert not is_instance_not_bool_int(bool_, MyInt)
|
649
|
+
|
650
|
+
@given(int_=integers())
|
651
|
+
def test_int_value_vs_custom_int(self, *, int_: int) -> None:
|
652
|
+
class MyInt(int): ...
|
653
|
+
|
654
|
+
assert not is_instance_not_bool_int(int_, MyInt)
|
655
|
+
assert is_instance_not_bool_int(MyInt(int_), MyInt)
|
632
656
|
|
633
657
|
|
634
658
|
class TestIsIterableOf:
|
@@ -751,11 +775,29 @@ class TestIsStringMapping:
|
|
751
775
|
assert result is expected
|
752
776
|
|
753
777
|
|
754
|
-
class
|
755
|
-
@given(
|
756
|
-
|
757
|
-
|
758
|
-
|
778
|
+
class TestIsSubclassNotBoolInt:
|
779
|
+
@given(
|
780
|
+
case=sampled_from([
|
781
|
+
(bool, bool, True),
|
782
|
+
(bool, int, False),
|
783
|
+
(int, bool, False),
|
784
|
+
(int, int, True),
|
785
|
+
(bool, (bool, int), True),
|
786
|
+
(int, (bool, int), True),
|
787
|
+
])
|
788
|
+
)
|
789
|
+
def test_main(self, *, case: tuple[type[Any], type[Any], bool]) -> None:
|
790
|
+
child, parent, expected = case
|
791
|
+
assert is_subclass_not_bool_int(child, parent) is expected
|
792
|
+
|
793
|
+
def test_custom_int(self) -> None:
|
794
|
+
class MyInt(int): ...
|
795
|
+
|
796
|
+
assert not is_subclass_not_bool_int(bool, MyInt)
|
797
|
+
assert not is_subclass_not_bool_int(MyInt, bool)
|
798
|
+
assert not is_subclass_not_bool_int(int, MyInt)
|
799
|
+
assert is_subclass_not_bool_int(MyInt, int)
|
800
|
+
assert is_subclass_not_bool_int(MyInt, MyInt)
|
759
801
|
|
760
802
|
|
761
803
|
class TestIsTuple:
|
@@ -22,6 +22,7 @@ from typing import (
|
|
22
22
|
Literal,
|
23
23
|
TypeGuard,
|
24
24
|
TypeVar,
|
25
|
+
assert_never,
|
25
26
|
cast,
|
26
27
|
overload,
|
27
28
|
override,
|
@@ -182,6 +183,8 @@ def ensure_class(
|
|
182
183
|
*,
|
183
184
|
nullable: Literal[False] = False,
|
184
185
|
) -> _T1 | _T2 | _T3 | _T4 | _T5: ...
|
186
|
+
@overload
|
187
|
+
def ensure_class(obj: Any, cls: TypeLike[_T], /, *, nullable: bool = False) -> Any: ...
|
185
188
|
def ensure_class(obj: Any, cls: TypeLike[_T], /, *, nullable: bool = False) -> Any:
|
186
189
|
"""Ensure an object is of the required class."""
|
187
190
|
if isinstance(obj, cls) or ((obj is None) and nullable):
|
@@ -657,9 +660,23 @@ def is_hashable(obj: Any, /) -> TypeGuard[Hashable]:
|
|
657
660
|
##
|
658
661
|
|
659
662
|
|
660
|
-
def
|
661
|
-
|
662
|
-
|
663
|
+
def is_instance_not_bool_int(
|
664
|
+
obj: Any, class_or_tuple: TypeLike[Any], /
|
665
|
+
) -> TypeGuard[int]:
|
666
|
+
"""Check if an instance relationship holds, except bool<int."""
|
667
|
+
match class_or_tuple:
|
668
|
+
case type() as type_:
|
669
|
+
return _is_instance_not_bool_int(obj, type_)
|
670
|
+
case tuple() as types:
|
671
|
+
return any(_is_instance_not_bool_int(obj, p) for p in types)
|
672
|
+
case _ as never:
|
673
|
+
assert_never(never)
|
674
|
+
|
675
|
+
|
676
|
+
def _is_instance_not_bool_int(obj: Any, type_: type[Any], /) -> bool:
|
677
|
+
return isinstance(obj, type_) and not (
|
678
|
+
isinstance(obj, bool) and issubclass(type_, int) and not issubclass(type_, bool)
|
679
|
+
)
|
663
680
|
|
664
681
|
|
665
682
|
##
|
@@ -779,9 +796,23 @@ def is_string_mapping(obj: Any, /) -> TypeGuard[StrMapping]:
|
|
779
796
|
##
|
780
797
|
|
781
798
|
|
782
|
-
def
|
783
|
-
"""Check if a
|
784
|
-
|
799
|
+
def is_subclass_not_bool_int(cls: type[Any], class_or_tuple: TypeLike[Any], /) -> bool:
|
800
|
+
"""Check if a subclass relationship holds, except bool<int."""
|
801
|
+
match class_or_tuple:
|
802
|
+
case type() as parent:
|
803
|
+
return _is_subclass_int_not_bool_one(cls, parent)
|
804
|
+
case tuple() as parents:
|
805
|
+
return any(_is_subclass_int_not_bool_one(cls, p) for p in parents)
|
806
|
+
case _ as never:
|
807
|
+
assert_never(never)
|
808
|
+
|
809
|
+
|
810
|
+
def _is_subclass_int_not_bool_one(cls: type[Any], parent: type[Any], /) -> bool:
|
811
|
+
return issubclass(cls, parent) and not (
|
812
|
+
issubclass(cls, bool)
|
813
|
+
and issubclass(parent, int)
|
814
|
+
and not issubclass(parent, bool)
|
815
|
+
)
|
785
816
|
|
786
817
|
|
787
818
|
##
|
@@ -1044,7 +1075,7 @@ __all__ = [
|
|
1044
1075
|
"is_dataclass_class",
|
1045
1076
|
"is_dataclass_instance",
|
1046
1077
|
"is_hashable",
|
1047
|
-
"
|
1078
|
+
"is_instance_not_bool_int",
|
1048
1079
|
"is_iterable_of",
|
1049
1080
|
"is_none",
|
1050
1081
|
"is_not_none",
|
@@ -1052,7 +1083,7 @@ __all__ = [
|
|
1052
1083
|
"is_sized",
|
1053
1084
|
"is_sized_not_str",
|
1054
1085
|
"is_string_mapping",
|
1055
|
-
"
|
1086
|
+
"is_subclass_not_bool_int",
|
1056
1087
|
"is_tuple",
|
1057
1088
|
"is_tuple_or_str_mapping",
|
1058
1089
|
"make_isinstance",
|
@@ -14,7 +14,7 @@ from utilities.datetime import (
|
|
14
14
|
is_subclass_date_not_datetime,
|
15
15
|
)
|
16
16
|
from utilities.enum import ParseEnumError, parse_enum
|
17
|
-
from utilities.functions import
|
17
|
+
from utilities.functions import is_subclass_not_bool_int
|
18
18
|
from utilities.iterables import OneEmptyError, OneNonUniqueError, one, one_str
|
19
19
|
from utilities.math import ParseNumberError, parse_number
|
20
20
|
from utilities.re import ExtractGroupError, extract_group
|
@@ -174,7 +174,7 @@ def _parse_object_type(
|
|
174
174
|
return parse_bool(text)
|
175
175
|
except ParseBoolError:
|
176
176
|
raise _ParseObjectParseError(type_=cls, text=text) from None
|
177
|
-
if
|
177
|
+
if is_subclass_not_bool_int(cls, int):
|
178
178
|
try:
|
179
179
|
return int(text)
|
180
180
|
except ValueError:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_with/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/modules/package_without/module_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/test_async_service/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/test_async_service/__main__.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/test_async_service/run.sh
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/test_queue_processor/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/scripts/test_queue_processor/__main__.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/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
|
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/__init__.py
RENAMED
File without changes
|
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/decorated_async.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/decorated_sync.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/error_bind.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/recursive.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/task_group_one.py
RENAMED
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/task_group_two.py
RENAMED
File without changes
|
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_traceback_funcs/untraced.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.110.6 → dycw_utilities-0.110.7}/src/tests/test_typing_funcs/with_future.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|