dycw-utilities 0.129.5__tar.gz → 0.129.6__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.129.5 → dycw_utilities-0.129.6}/PKG-INFO +1 -1
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/pyproject.toml +2 -2
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_logging.py +40 -42
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/__init__.py +1 -1
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/logging.py +17 -7
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/.gitignore +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/LICENSE +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/README.md +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/__init__.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/conftest.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/__init__.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_missing/__init__.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_missing/module.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_with/__init__.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_with/outer_1.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_with/outer_2.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_without/__init__.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_without/module_1.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_without/module_2.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/standalone.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/with_imports.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_altair.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_asyncio.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_asyncio_classes/__init__.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_asyncio_classes/loopers.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_asyncio_classes/redis.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_atomicwrites.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_atools.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_cachetools.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_click.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_concurrent.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_contextlib.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_contextvars.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_cryptography.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_cvxpy.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_dataclasses.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_datetime.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_enum.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_errors.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_eventkit.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_fastapi.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_fpdf2.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_functions.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_functools.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_getpass.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_hashlib.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_http.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_hypothesis.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_importlib.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_ipython.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_iterables.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_jupyter.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_libcst.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_lightweight_charts.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_loguru.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_luigi.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_math.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_memory_profiler.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_modules.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_more_itertools.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_numpy.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_operator.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_optuna.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_orjson.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_os.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_parse.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_pathlib.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_period.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_pickle.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_platform.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_polars.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_polars_ols.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_pottery.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_pqdm.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_psutil.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_pydantic.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_pyinstrument.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_pyrsistent.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_pytest.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_pytest_regressions.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_python_dotenv.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_random.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_re.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_redis.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_reprlib.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_scipy.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_sentinel.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_shelve.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_slack_sdk.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_socket.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_sqlalchemy.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_statsmodel.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_streamlit.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_string.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_sys.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_tempfile.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_tenacity.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_text.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_threading.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_timer.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/__init__.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/chain.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/decorated_async.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/decorated_sync.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/error_bind.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/many.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/one.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/recursive.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/task_group_one.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/task_group_two.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/two.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/untraced.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_types.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_typing.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_typing_funcs/__init__.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_typing_funcs/no_future.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_typing_funcs/with_future.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_tzdata.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_tzlocal.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_uuid.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_version.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_warnings.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_whenever.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_zipfile.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_zoneinfo.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/altair.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/asyncio.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/atomicwrites.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/atools.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/cachetools.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/click.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/concurrent.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/contextlib.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/contextvars.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/cryptography.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/cvxpy.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/dataclasses.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/datetime.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/enum.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/errors.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/eventkit.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/fastapi.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/fpdf2.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/functions.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/functools.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/getpass.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/hashlib.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/http.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/hypothesis.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/importlib.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/ipython.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/iterables.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/jupyter.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/libcst.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/lightweight_charts.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/loguru.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/luigi.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/math.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/memory_profiler.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/modules.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/more_itertools.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/numpy.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/operator.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/optuna.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/orjson.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/os.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/parse.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/pathlib.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/period.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/pickle.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/platform.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/polars.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/polars_ols.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/pottery.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/pqdm.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/psutil.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/py.typed +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/pydantic.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/pyinstrument.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/pyrsistent.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/pytest.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/pytest_regressions.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/python_dotenv.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/random.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/re.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/redis.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/reprlib.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/scipy.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/sentinel.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/shelve.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/slack_sdk.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/socket.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/sqlalchemy.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/sqlalchemy_polars.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/statsmodels.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/streamlit.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/string.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/sys.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/tempfile.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/tenacity.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/text.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/threading.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/timer.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/traceback.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/types.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/typing.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/tzdata.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/tzlocal.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/uuid.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/version.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/warnings.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/whenever.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/utilities/zipfile.py +0 -0
- {dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/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.129.
|
97
|
+
version = "0.129.6"
|
98
98
|
|
99
99
|
[project.optional-dependencies]
|
100
100
|
test = [
|
@@ -334,7 +334,7 @@ zzz-test-zoneinfo = [
|
|
334
334
|
# bump-my-version
|
335
335
|
[tool.bumpversion]
|
336
336
|
allow_dirty = true
|
337
|
-
current_version = "0.129.
|
337
|
+
current_version = "0.129.6"
|
338
338
|
|
339
339
|
[[tool.bumpversion.files]]
|
340
340
|
filename = "src/utilities/__init__.py"
|
@@ -42,6 +42,7 @@ from utilities.logging import (
|
|
42
42
|
temp_logger,
|
43
43
|
)
|
44
44
|
from utilities.pytest import skipif_windows
|
45
|
+
from utilities.text import unique_str
|
45
46
|
from utilities.types import LogLevel
|
46
47
|
from utilities.typing import get_args
|
47
48
|
|
@@ -53,9 +54,9 @@ if TYPE_CHECKING:
|
|
53
54
|
|
54
55
|
|
55
56
|
class TestAddFilters:
|
56
|
-
@given(
|
57
|
-
def test_main(self, *,
|
58
|
-
logger = getLogger(
|
57
|
+
@given(expected=booleans())
|
58
|
+
def test_main(self, *, expected: bool) -> None:
|
59
|
+
logger = getLogger(unique_str())
|
59
60
|
logger.addHandler(handler := StreamHandler(buffer := StringIO()))
|
60
61
|
add_filters(handler, lambda _: expected)
|
61
62
|
assert len(handler.filters) == 1
|
@@ -71,10 +72,13 @@ class TestAddFilters:
|
|
71
72
|
|
72
73
|
|
73
74
|
class TestBasicConfig:
|
74
|
-
|
75
|
-
|
76
|
-
logger =
|
77
|
-
logger
|
75
|
+
@mark.parametrize("log", [param(True), param(False)])
|
76
|
+
def test_main(self, *, caplog: LogCaptureFixture, log: bool) -> None:
|
77
|
+
logger = unique_str() if log else None
|
78
|
+
basic_config(logger=logger)
|
79
|
+
logger_use = getLogger()
|
80
|
+
logger_use.warning("message")
|
81
|
+
assert "message" in caplog.messages
|
78
82
|
|
79
83
|
|
80
84
|
class TestComputeRolloverActions:
|
@@ -191,16 +195,9 @@ class TestComputeRolloverActions:
|
|
191
195
|
|
192
196
|
|
193
197
|
class TestFilterForKey:
|
194
|
-
@given(
|
195
|
-
|
196
|
-
|
197
|
-
value=booleans() | none(),
|
198
|
-
default=booleans(),
|
199
|
-
)
|
200
|
-
def test_main(
|
201
|
-
self, *, root: Path, key: str, value: bool | None, default: bool
|
202
|
-
) -> None:
|
203
|
-
logger = getLogger(str(root))
|
198
|
+
@given(key=text_ascii(), value=booleans() | none(), default=booleans())
|
199
|
+
def test_main(self, *, key: str, value: bool | None, default: bool) -> None:
|
200
|
+
logger = getLogger(unique_str())
|
204
201
|
logger.addHandler(handler := StreamHandler(buffer := StringIO()))
|
205
202
|
with assume_does_not_raise(FilterForKeyError):
|
206
203
|
filter_ = filter_for_key(key, default=default)
|
@@ -230,15 +227,16 @@ class TestGetDefaultLoggingPath:
|
|
230
227
|
|
231
228
|
|
232
229
|
class TestGetLogger:
|
233
|
-
def test_logger(self
|
234
|
-
logger = getLogger(
|
230
|
+
def test_logger(self) -> None:
|
231
|
+
logger = getLogger(unique_str())
|
235
232
|
result = get_logger(logger=logger)
|
236
233
|
assert result is logger
|
237
234
|
|
238
|
-
def test_str(self
|
239
|
-
|
240
|
-
|
241
|
-
assert
|
235
|
+
def test_str(self) -> None:
|
236
|
+
name = unique_str()
|
237
|
+
logger = getLogger(name)
|
238
|
+
assert isinstance(logger, Logger)
|
239
|
+
assert logger.name == name
|
242
240
|
|
243
241
|
def test_none(self) -> None:
|
244
242
|
result = get_logger()
|
@@ -382,7 +380,7 @@ class TestSetupLogging:
|
|
382
380
|
def test_decorated(
|
383
381
|
self, *, tmp_path: Path, traceback_func_one: Pattern[str]
|
384
382
|
) -> None:
|
385
|
-
name =
|
383
|
+
name = unique_str()
|
386
384
|
setup_logging(logger=name, files_dir=tmp_path)
|
387
385
|
logger = getLogger(name)
|
388
386
|
assert len(logger.handlers) == 7
|
@@ -397,7 +395,7 @@ class TestSetupLogging:
|
|
397
395
|
def test_undecorated(
|
398
396
|
self, *, tmp_path: Path, traceback_func_untraced: Pattern[str]
|
399
397
|
) -> None:
|
400
|
-
name =
|
398
|
+
name = unique_str()
|
401
399
|
setup_logging(logger=name, files_dir=tmp_path)
|
402
400
|
logger = getLogger(name)
|
403
401
|
assert len(logger.handlers) == 7
|
@@ -412,7 +410,7 @@ class TestSetupLogging:
|
|
412
410
|
def test_regular_percent_formatting(
|
413
411
|
self, *, tmp_path: Path, caplog: LogCaptureFixture
|
414
412
|
) -> None:
|
415
|
-
name =
|
413
|
+
name = unique_str()
|
416
414
|
setup_logging(logger=name, files_dir=tmp_path)
|
417
415
|
logger = getLogger(name)
|
418
416
|
logger.info("int: %d, float: %.2f", 1, 12.3456)
|
@@ -423,14 +421,14 @@ class TestSetupLogging:
|
|
423
421
|
|
424
422
|
@skipif_windows
|
425
423
|
def test_no_console(self, *, tmp_path: Path) -> None:
|
426
|
-
name =
|
424
|
+
name = unique_str()
|
427
425
|
setup_logging(logger=name, console_level=None, files_dir=tmp_path)
|
428
426
|
logger = getLogger(name)
|
429
427
|
assert len(logger.handlers) == 5
|
430
428
|
|
431
429
|
@skipif_windows
|
432
430
|
def test_zoned_datetime(self, *, tmp_path: Path, caplog: LogCaptureFixture) -> None:
|
433
|
-
name =
|
431
|
+
name = unique_str()
|
434
432
|
setup_logging(logger=name, files_dir=tmp_path)
|
435
433
|
logger = getLogger(name)
|
436
434
|
logger.info("")
|
@@ -441,7 +439,7 @@ class TestSetupLogging:
|
|
441
439
|
|
442
440
|
@skipif_windows
|
443
441
|
def test_extra(self, *, tmp_path: Path) -> None:
|
444
|
-
name =
|
442
|
+
name = unique_str()
|
445
443
|
|
446
444
|
def extra(logger: LoggerOrName | None, /) -> None:
|
447
445
|
get_logger(logger=logger).addHandler(
|
@@ -478,7 +476,7 @@ class TestSetupLogging:
|
|
478
476
|
class TestSizeAndTimeRotatingFileHandler:
|
479
477
|
@skipif_windows
|
480
478
|
def test_handlers(self, *, tmp_path: Path) -> None:
|
481
|
-
logger = getLogger(
|
479
|
+
logger = getLogger(unique_str())
|
482
480
|
filename = tmp_path.joinpath("log")
|
483
481
|
logger.addHandler(SizeAndTimeRotatingFileHandler(filename=filename))
|
484
482
|
logger.warning("message")
|
@@ -488,7 +486,7 @@ class TestSizeAndTimeRotatingFileHandler:
|
|
488
486
|
|
489
487
|
@skipif_windows
|
490
488
|
def test_size(self, *, tmp_path: Path) -> None:
|
491
|
-
logger = getLogger(
|
489
|
+
logger = getLogger(unique_str())
|
492
490
|
logger.addHandler(
|
493
491
|
SizeAndTimeRotatingFileHandler(
|
494
492
|
filename=tmp_path.joinpath("log.txt"), maxBytes=100, backupCount=3
|
@@ -547,7 +545,7 @@ class TestSizeAndTimeRotatingFileHandler:
|
|
547
545
|
@mark.flaky
|
548
546
|
@skipif_windows
|
549
547
|
def test_time(self, *, tmp_path: Path) -> None:
|
550
|
-
logger = getLogger(
|
548
|
+
logger = getLogger(unique_str())
|
551
549
|
logger.addHandler(
|
552
550
|
SizeAndTimeRotatingFileHandler(
|
553
551
|
filename=tmp_path.joinpath("log.txt"),
|
@@ -620,7 +618,7 @@ class TestSizeAndTimeRotatingFileHandler:
|
|
620
618
|
def test_should_rollover_file_not_found(
|
621
619
|
self, *, tmp_path: Path, caplog: LogCaptureFixture
|
622
620
|
) -> None:
|
623
|
-
logger = getLogger(
|
621
|
+
logger = getLogger(unique_str())
|
624
622
|
path = tmp_path.joinpath("log")
|
625
623
|
logger.addHandler(
|
626
624
|
handler := SizeAndTimeRotatingFileHandler(filename=path, maxBytes=1)
|
@@ -634,7 +632,7 @@ class TestSizeAndTimeRotatingFileHandler:
|
|
634
632
|
class TestStandaloneFileHandler:
|
635
633
|
@skipif_windows
|
636
634
|
def test_main(self, *, tmp_path: Path) -> None:
|
637
|
-
logger = getLogger(
|
635
|
+
logger = getLogger(unique_str())
|
638
636
|
logger.addHandler(StandaloneFileHandler(level=DEBUG, path=tmp_path))
|
639
637
|
assert len(list(tmp_path.iterdir())) == 0
|
640
638
|
logger.warning("message")
|
@@ -646,8 +644,8 @@ class TestStandaloneFileHandler:
|
|
646
644
|
|
647
645
|
|
648
646
|
class TestTempHandler:
|
649
|
-
def test_main(self
|
650
|
-
logger = getLogger(
|
647
|
+
def test_main(self) -> None:
|
648
|
+
logger = getLogger(unique_str())
|
651
649
|
logger.addHandler(h1 := StreamHandler())
|
652
650
|
logger.addHandler(h2 := StreamHandler())
|
653
651
|
assert len(logger.handlers) == 2
|
@@ -660,22 +658,22 @@ class TestTempHandler:
|
|
660
658
|
|
661
659
|
|
662
660
|
class TestTempLogger:
|
663
|
-
def test_disabled(self
|
664
|
-
logger = getLogger(
|
661
|
+
def test_disabled(self) -> None:
|
662
|
+
logger = getLogger(unique_str())
|
665
663
|
assert not logger.disabled
|
666
664
|
with temp_logger(logger, disabled=True):
|
667
665
|
assert logger.disabled
|
668
666
|
assert not logger.disabled
|
669
667
|
|
670
|
-
def test_level(self
|
671
|
-
logger = getLogger(
|
668
|
+
def test_level(self) -> None:
|
669
|
+
logger = getLogger(unique_str())
|
672
670
|
assert logger.level == NOTSET
|
673
671
|
with temp_logger(logger, level="DEBUG"):
|
674
672
|
assert logger.level == DEBUG
|
675
673
|
assert logger.level == NOTSET
|
676
674
|
|
677
|
-
def test_propagate(self
|
678
|
-
logger = getLogger(
|
675
|
+
def test_propagate(self) -> None:
|
676
|
+
logger = getLogger(unique_str())
|
679
677
|
assert logger.propagate
|
680
678
|
with temp_logger(logger, propagate=False):
|
681
679
|
assert not logger.propagate
|
@@ -415,16 +415,26 @@ def add_filters(handler: Handler, /, *filters: _FilterType) -> None:
|
|
415
415
|
|
416
416
|
def basic_config(
|
417
417
|
*,
|
418
|
-
|
418
|
+
logger: LoggerOrName | None = None,
|
419
|
+
format_: str = "{asctime} | {name} | {levelname:8} | {message}",
|
419
420
|
level: LogLevel = "INFO",
|
420
421
|
) -> None:
|
421
422
|
"""Do the basic config."""
|
422
|
-
|
423
|
-
|
424
|
-
datefmt=
|
425
|
-
|
426
|
-
|
427
|
-
|
423
|
+
datefmt = maybe_sub_pct_y("%Y-%m-%d %H:%M:%S")
|
424
|
+
if logger is None:
|
425
|
+
basicConfig(format=format_, datefmt=datefmt, style="{", level=level)
|
426
|
+
else:
|
427
|
+
logger_use = get_logger(logger=logger)
|
428
|
+
logger_use.setLevel(level)
|
429
|
+
logger_use.addHandler(handler := StreamHandler())
|
430
|
+
handler.setLevel(level)
|
431
|
+
try:
|
432
|
+
from coloredlogs import ColoredFormatter
|
433
|
+
except ModuleNotFoundError: # pragma: no cover
|
434
|
+
formatter = Formatter(fmt=format_, datefmt=datefmt, style="{")
|
435
|
+
else:
|
436
|
+
formatter = ColoredFormatter(fmt=format_, datefmt=datefmt, style="{")
|
437
|
+
handler.setFormatter(formatter)
|
428
438
|
|
429
439
|
|
430
440
|
##
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_missing/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_missing/module.py
RENAMED
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/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.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_without/__init__.py
RENAMED
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_without/module_1.py
RENAMED
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/modules/package_without/module_2.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_asyncio_classes/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/__init__.py
RENAMED
File without changes
|
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/decorated_async.py
RENAMED
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/decorated_sync.py
RENAMED
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/error_bind.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/recursive.py
RENAMED
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/task_group_one.py
RENAMED
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/src/tests/test_traceback_funcs/task_group_two.py
RENAMED
File without changes
|
File without changes
|
{dycw_utilities-0.129.5 → dycw_utilities-0.129.6}/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.129.5 → dycw_utilities-0.129.6}/src/tests/test_typing_funcs/with_future.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|