All notable changes to this project will be documented in this file.
Something need change or refactor? Contact email errortools.docs@proton.me
- Release 4.0.0
- Add main entry point in
errortools_speedbeltsubmodule.
- Add base warning class
ErrortoolsWarningand experimental warningErrortoolsPytestExperimentalApiWarningin_errortools/warning_types.py. - Delete useless
DeprecationWarningwarning infast_ignoreandpartialsubmodule.
- Optimize
ErrortoolsDeprecationWarninginerrortools/__init__.py: add__slots__, make all constructor parameters keyword-optional (sowarnings.warn(..., ErrortoolsDeprecationWarning)no longer raisesTypeError), introduceformatted_message, a__repr__, anemit()classmethod, and a private_normalize_versionhelper. Add a dedicated regression test moduletesting/test_init.py(21 tests covering the structured constructor, the__getattr__deprecation dispatcher, and module-surface smoke tests). - Refactor
errortools/__init__.pyto importUnionand addfrom __future__ import annotations, keeping PEP 604 union syntax runtime-safe on Python 3.8. - Optimize the lazy
__getattr__deprecation dispatcher inerrortools/__init__.py: hoistimport warningsandimport importlibto module scope, attach structured(deprecated_version, removed_version)metadata viaErrortoolsDeprecationWarning.emit(...), introduce_DEPRECATED_VERSIONSand_DEPRECATED_RESOLVERSlookup tables, and fix the silentglobals().get(name)fall-through that used to returnNone— accessing a deprecated name now returns the canonical replacement (InvalidInputError,AccessDeniedError,NotFoundError,RuntimeFailure,fast_ignore, or thepartialmodule) soisinstanceandfrom errortools import …keep working transparently. Add 11 new tests totesting/test_init.pycovering the structured warning, the resolver catalogue, andisinstanceround-trips through deprecated aliases.
- Add
errortools_speedbeltmodule that downloaded alongside theerrortoolsmodule as a high-speed C core for errortools. - Add C extension for
ErrorIgnoreWrapperclass that used inignorefunction.
- Release 3.6.0
- Fix bugs in
_logger_shell.HistoryHook(in logger shell,_,__and___). - Deprecated
errortools.partialsubmodule. - Add remove time in
fast_ignoreclass.
- Refactor logger shell.
- Add an easteregg in logger shell.
- Add
EasterEggin_errortools/_logger_shelldir. - Add
HistoryHookin_errortools/_logger_shelldir than add Display hook that rotates_,__,___history variables. - Import
TracebackTypeandFrameTypefromtypesmodule in_errortools/typing.pyto speedup. [#69]
Starting now, the format for version logs will follow these rules. Each minor release can contain 3 to 4 commits, which will be aggregated together under one minor version during iteration.
- Move
_print_infoand_cmd_logfunction from_errortools/_cli.pyto_errortools/cli.pyand delete_errortools/_cli.py.
- Change PEP 604 union type hints (e.g.
a | b) toUnion[a, b]form across all source files for compatibility with Python 3.8 and 3.9.
- Add
version_infoand__version_info__in_errortools/version.py.
- Add
# type: ignore[no-any-return]in_errortools/version.pyline 92 (inVersionInfo.__ne__, commit 7e0a72)
- Fix
VersionInfo.__ne__return type error by mypy (In github workflows)
- Rename
_get_version_tuplefunction in_errortools/version.pytoget_version_tupleand add it to the public API. - Add new class
VersionInfoin_errortools/version.py. - Add comprehensive tests for
VersionInfoandget_version_tupleintesting/meta/test_version.py(43 new tests covering construction,from_str,to_tuple, dunder methods, equality, ordering, sorting, and public-API exposure). - Add a dedicated doctest module
testing/doctest/test_version.pywith 55 doctests that double as runnable documentation forVersionInfoandget_version_tuple. - Use
typing.Finalin_errortools/version.py.
- Release 3.5.0
- Refactor type hints of
fast_append_exceptionandfast_suppress_exitin_errortools/future.py.
- Refactor and improve compatibility in
_errortools/_speedup.c.
- Refactor
_errortools/cli.pyto improve robustness, structure and consistency. - Replace fragile
"logger" in sys.argv[0]substring test with a basename-based_detect_mode()helper (handles.exe,.py,.pyw,.pyz,.shsuffixes) so paths likemy_logger_toolor/usr/bin/loggerno longer mis-detect the CLI family. - Cache the detected mode at import time as
_CLI_MODE: Final[str]instead of recomputing on every call. - Split
parse_args()into_build_errortools_parser()and_build_logger_parser()so each CLI family owns its own argument schema. - Extract
_make_parser(prog, description)helper to deduplicate the Python 3.14+color=Truebranch. - Replace
args.message == "shell"dispatch anti-pattern withargs.subcmdchecks plus a defensive fallback branch. - Split each
--*flag action into its own named function (_show_version,_show_author, …) and mark_FLAG_ACTIONSasFinal. - Unify
--versionoutput (errortools 3.4.9) with the format already used by--info. - Add a friendly
ImportErrorhandler for--run-testsso missing test extras produce an actionable message and exit code 2 instead of a traceback. - Switch
parse_args/mainsignatures toSequence[str] | Nonefor broader caller compatibility and enablefrom __future__ import annotationsfor PEP 604 syntax on Python 3.8+. - Add module-level docstring documenting both CLI families.
- Add example cli in
_errortools/version.py,_errortools/metadata.pyand_errortools/plugins.py.
- Change format of
_errortools/classes/protocol.pyback to black's format.
- Add more comments in
_errortools/ignore.py.
- Improve compatibility in
errortools/__init__.pyto Python 3.10 (forNameErrorLikeandAttributeErrorLikecompatibility).
- Fix flake8 error W504 and E704 in
_errortools/classes/protocol.py. - Fix flake8 error B042 in
_errortools/classes/group.py. - Fix flake8 error B027 in
_errortools/logging/sink.py.
- Fix flake8 W504 error in
_errortools/classes/protocol.py.
- Add interactive
logger shellREPL with pre-imported logging shortcuts and std-lib logging base classes.
- Add remove time in deprecated 4 type alias in
_errortools/typing.py.
- Release 3.4.0
- Optimize
_errortools/classes/protocol.py: fix__all__on Python < 3.11, remove dead code, and expand docstrings.
- Fix
get()sentinel bug sodefault=Noneis correctly honored. - Add
has(),clear(), andRegistry.remove()to plugin system. - Improve test coverage for
_errortools/plugins.py.
- Set
logger's floor level toLevel.TRACE(the lowest level).
- Fix #53 to import
_check_methodsfrom_collections_abcmodule in_errortools/classes/abc.py.
- Fixed flake8 F401 error in
errortools/__init__.py.
- Improve compatibility in
errortools/__init__.pyto Python 3.11 (forExceptionGroupcompatibility).
- Release 3.3.0
- Deleted the 4 constants in
_errortools/const.py. - Deleted tests for
_errortools/const.py.
- Add
.. versionadded:: 3.2in_errortools/plugin.py.
- Add ultra-lightweight plugin system in
_errortools/plugins.py. - Expose plugin APIs to top-level errortools module.
- Add complete test suite for plugin system in
tests/test_plugins.py.
- Fix max complexity error in
classes/protocol.py.
- Add
ErrortoolsDeprecationWarningwarning class. - Now the deprecated features will warn
ErrortoolsDeprecationWarning.
- Add 14 protocol classes about exceptions (like
ExceptionLike,ImportErrorLike,ExceptionGroupLike). - Add tests for protocol classes (
test_protocols.py).
- Release 3.2.0
- Add
__getattr__toerrortools/__init__.pyfor lazy-loading submodules (future,logging,partial). - Deprecated aliases (
fast_ignore,InputError,AccessError,LookupError_,RuntimeError_) now emitDeprecationWarningon access. - Add
__dir__toerrortools/__init__.pysodir(errortools)includes all public names.
- Use autoflake to fix errors in
_errortools/classes/abc.py.
- Useing
flake8-comprehensionsandflake8-bugbearplugins in flake8.
- Add function
_get_version_tupleto get the__version_tuple__var in_errortools/version.py.
- Split CLI:
python -m errortools(public) andpython -m _errortools(debug). - Add
--debug,--reset,--check,--list-featuresto private debug CLI.
- Move
timeoutdecorator to_errortools/decorator/timeout.py. - Move
retrydecorator to_errortools/decorator/retry.py. _errortools/ignore.pynow re-exports from new locations for backwards compatibility.
- Add
suppressandconvertdecorators in_errortools/decorator/handlers.py. - Add tests for
suppressandconvertintesting/test_decorator.py.
- Add
fast_suppress_exitC function in_errortools/_speedup.cfor optimized__exit__calls. - Optimize
super_fast_ignoreto usefast_suppress_exit, removingcastoverhead. - Optimize
super_fast_catch.__exit__with inline short-circuit check. - Remove
castcall inExceptionCollector.raise_all. - Add performance tests in
testing/benchmark/test_future_perf.py.
- Add
BaseDescriptorbase class in_errortools/descriptor/base.pyfor shared descriptor logic. - Refactor
ErrorMsgandNonBlankErrorMsgto inherit fromBaseDescriptor. - Add tests for
BaseDescriptorintesting/test_descriptor.py.
- Reduce cyclomatic complexity of
main()in_errortools/cli.py(C901). - Reduce cyclomatic complexity of
retry.__call__in_errortools/ignore.py(C901).
- Changed
except ValueError, OSError:toexcept (ValueError, OSError):at_errortools/errno.pyline 85.
- Changed
except AttributeError, TypeError:toexcept (AttributeError, TypeError):at_errortools/errno.pyline 52.
- Release 3.1.0
- Deprecated
fast_ignorein_errortools/ignore.py.
- Deprecated 4 type alias in
_errortools/typing.py.
Let mypyc OK.Now use mypyc now.
- Optimize exception handling functions in _speedup.c
- Fix flake8 error F811 in
_errortools/wrappers/cache.py. - Fix flake8 error W293 in
_errortools/wrappers/ignore.py.
- Improve compatibility for
TypeAliasacross Python 3.8 to 3.15 in some files.
- Delete 4 classes in
/methods. - Delete 1 class in
classes/abc.py. - Delete tests for 5 delete classes.
- Fix type error by mypy in
future.py.
- Add C extension module
_speedupfor performance optimization infuture.py. - Optimize exception type checking (
issubclass) and list append operations with C implementation - Automatic fallback to pure Python when C extension is unavailable.
- Improve compatibility across Python 3.8 to 3.15.
- Release 2.5.0
- Add Python 3.15 compatibility for
disjoint_baseimports by usingtypingon 3.15+ andtyping_extensionson earlier versions. - Update packaging metadata for v2.4.4, including Python 3.15 classifier support and conditional dependency handling in
setup.pypyproject.toml.
- Show log level icons in default logging output.
- Fix logging file tests on Windows by reading UTF-8 log files explicitly.
- Add logging submodule in errortools module.
- Add future submodule in errortools module.
- Add partial submodule in errortools module.
- Add type hints in
_errortools/partial.py.
experimentaldecorator now warnsFutureWarning.
- Release 2.4.0
- Add docstring in
_errortools/errno.py.
- Add lightweight exception handling utilities to
_errortools/future.py:super_fast_ignore: Ultra-lightweight context manager to suppress exceptionssuper_fast_catch: Ultra-lightweight context manager to catch and store exceptionssuper_fast_reraise: Ultra-lightweight context manager to convert exception typesExceptionCollector: Batch exception collection for bulk operations with support for error grouping
- Add comprehensive test suite for future utilities (36 tests)
- Refactor and optimize
_errortools/errno.py. - Change
tests/test_errno.pyto refactor version.
- Use
typing.Finalin_errortools/logging/level.py.
- Use
typing.Finalin_errortools/const.py.
- Release 2.3.0
Prior to release 2.3.0 we did not provide a changelog. Please check the Git history for details.