dycw-utilities 0.109.29__tar.gz → 0.110.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/PKG-INFO +1 -1
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/pyproject.toml +2 -2
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_dataclasses.py +40 -18
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_parse.py +156 -147
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/dataclasses.py +181 -95
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/parse.py +131 -95
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/python_dotenv.py +4 -4
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/types.py +2 -2
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/.gitignore +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/LICENSE +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/README.md +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/scripts/__init__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/scripts/test_async_service/__init__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/scripts/test_async_service/__main__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/scripts/test_async_service/run.sh +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/scripts/test_queue_processor/__init__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/scripts/test_queue_processor/__main__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/scripts/test_queue_processor/run.sh +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_astor.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_git.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_logging.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_loguru.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_rich.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_statsmodel.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_sys.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/__init__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/chain.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/decorated_async.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/decorated_sync.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/error_bind.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/many.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/one.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/recursive.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/task_group_one.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/task_group_two.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/two.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_traceback_funcs/untraced.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/astor.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/click.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/git.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/http.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/logging.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/loguru.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/math.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/os.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/period.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/random.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/re.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/rich.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/sys.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/text.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/version.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.109.29 → dycw_utilities-0.110.1}/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.
|
97
|
+
version = "0.110.1"
|
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.
|
340
|
+
current_version = "0.110.1"
|
341
341
|
|
342
342
|
[[tool.bumpversion.files]]
|
343
343
|
filename = "src/utilities/__init__.py"
|
@@ -38,17 +38,19 @@ from utilities.dataclasses import (
|
|
38
38
|
OneFieldNonUniqueError,
|
39
39
|
StrMappingToFieldMappingError,
|
40
40
|
YieldFieldsError,
|
41
|
-
|
42
|
-
|
41
|
+
_ParseDataClassParseValueError,
|
42
|
+
_ParseDataClassSplitKeyValuePairsDuplicateKeysError,
|
43
|
+
_ParseDataClassSplitKeyValuePairsSplitError,
|
43
44
|
_YieldFieldsClass,
|
44
45
|
_YieldFieldsInstance,
|
45
46
|
dataclass_repr,
|
46
47
|
dataclass_to_dict,
|
47
48
|
mapping_to_dataclass,
|
48
49
|
one_field,
|
50
|
+
parse_dataclass,
|
49
51
|
replace_non_sentinel,
|
52
|
+
serialize_dataclass,
|
50
53
|
str_mapping_to_field_mapping,
|
51
|
-
text_to_dataclass,
|
52
54
|
yield_fields,
|
53
55
|
)
|
54
56
|
from utilities.functions import get_class_name
|
@@ -465,48 +467,68 @@ class TestStrMappingToFieldMapping:
|
|
465
467
|
)
|
466
468
|
|
467
469
|
|
468
|
-
class
|
470
|
+
class TestSerializeAndParseDataClass:
|
471
|
+
@given(int_=integers())
|
472
|
+
def test_main_future_int(self, *, int_: int) -> None:
|
473
|
+
obj = DataClassFutureInt(int_=int_)
|
474
|
+
serialized = serialize_dataclass(obj)
|
475
|
+
result = parse_dataclass(serialized, DataClassFutureInt)
|
476
|
+
assert result == obj
|
477
|
+
|
478
|
+
def test_main_future_int_default(self) -> None:
|
479
|
+
obj = DataClassFutureIntDefault()
|
480
|
+
serialized = serialize_dataclass(obj)
|
481
|
+
result = parse_dataclass(serialized, DataClassFutureIntDefault)
|
482
|
+
assert result == obj
|
483
|
+
|
469
484
|
@given(key=sampled_from(["int_", "INT_"]), int_=integers())
|
470
|
-
def
|
471
|
-
result =
|
485
|
+
def test_parse_text_case_insensitive(self, *, key: str, int_: int) -> None:
|
486
|
+
result = parse_dataclass(f"{key}={int_}", DataClassFutureInt)
|
472
487
|
expected = DataClassFutureInt(int_=int_)
|
473
488
|
assert result == expected
|
474
489
|
|
475
490
|
@given(int_=integers())
|
476
|
-
def
|
477
|
-
result =
|
491
|
+
def test_parse_text_case_sensitive(self, *, int_: int) -> None:
|
492
|
+
result = parse_dataclass(
|
478
493
|
f"int_={int_}", DataClassFutureInt, case_sensitive=True
|
479
494
|
)
|
480
495
|
expected = DataClassFutureInt(int_=int_)
|
481
496
|
assert result == expected
|
482
497
|
|
483
498
|
@given(key=sampled_from(["int_", "INT_"]), int_=integers())
|
484
|
-
def
|
485
|
-
result =
|
499
|
+
def test_parse_mapping_case_insensitive(self, *, key: str, int_: int) -> None:
|
500
|
+
result = parse_dataclass({key: str(int_)}, DataClassFutureInt)
|
486
501
|
expected = DataClassFutureInt(int_=int_)
|
487
502
|
assert result == expected
|
488
503
|
|
489
504
|
@given(int_=integers())
|
490
|
-
def
|
491
|
-
result =
|
505
|
+
def test_parse_mapping_case_sensitive(self, *, int_: int) -> None:
|
506
|
+
result = parse_dataclass(
|
492
507
|
{"int_": str(int_)}, DataClassFutureInt, case_sensitive=True
|
493
508
|
)
|
494
509
|
expected = DataClassFutureInt(int_=int_)
|
495
510
|
assert result == expected
|
496
511
|
|
497
|
-
def
|
512
|
+
def test_parser_split_key_value_pairs_split(self) -> None:
|
513
|
+
with raises(
|
514
|
+
_ParseDataClassSplitKeyValuePairsSplitError,
|
515
|
+
match="Unable to construct 'DataClassFutureInt'; failed to split key-value pair 'bbb'",
|
516
|
+
):
|
517
|
+
_ = parse_dataclass("a=1,bbb,c=333", DataClassFutureInt)
|
518
|
+
|
519
|
+
def test_error_parse_split_key_value_pairs_duplicate(self) -> None:
|
498
520
|
with raises(
|
499
|
-
|
500
|
-
match="Unable to construct 'DataClassFutureInt'
|
521
|
+
_ParseDataClassSplitKeyValuePairsDuplicateKeysError,
|
522
|
+
match=r"Unable to construct 'DataClassFutureInt' since there are duplicate keys; got \{'b': 2\}",
|
501
523
|
):
|
502
|
-
_ =
|
524
|
+
_ = parse_dataclass("a=1,b=22a,b=22b,c=3", DataClassFutureInt)
|
503
525
|
|
504
526
|
def test_error_parse_value(self) -> None:
|
505
527
|
with raises(
|
506
|
-
|
528
|
+
_ParseDataClassParseValueError,
|
507
529
|
match="Unable to construct 'DataClassFutureInt'; unable to parse field 'int_' of type <class 'int'>; got 'invalid'",
|
508
530
|
):
|
509
|
-
_ =
|
531
|
+
_ = parse_dataclass("int_=invalid", DataClassFutureInt)
|
510
532
|
|
511
533
|
|
512
534
|
class TestYieldFields:
|