diff --git a/CHANGELOG.md b/CHANGELOG.md index 458b928f..b9336daf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,9 +21,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `Padding`, `AlignedPadding`, `ExactPadding`, etc. - Support for Pillow 10. ([8cfebe2]) - Static Typing & Type Checking Support ([#100]). +- `TermImageUserWarning` warning sub-category ([d710a9e]). ### Changed - `term_image.utils.get_cell_size()` now returns `term_image.geometry.Size` instances in place of tuples ([#96]). +- `TermImageWarning` now inherits from `Warning` instead of `UserWarning` ([d710a9e]). ### Removed - Support for Python 3.7. ([594d451]) @@ -39,6 +41,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [594d451]: https://github.com/AnonymouX47/term-image/commit/594d451d124a47c73a9dce61a4496a2a218261b1 [8cfebe2]: https://github.com/AnonymouX47/term-image/commit/8cfebe27b63dcdd987fc9d0c71616e76777779a9 [b790f0e]: https://github.com/AnonymouX47/term-image/commit/b790f0e7c5cd2afd7dafa7c14797136719b9dafb +[d710a9e]: https://github.com/AnonymouX47/term-image/commit/d710a9e95e149868490f5d38eb3339df68716999 ## [0.7.0] - 2023-06-05 diff --git a/src/term_image/_utils.py b/src/term_image/_utils.py index 324fe8a2..8871f66c 100644 --- a/src/term_image/_utils.py +++ b/src/term_image/_utils.py @@ -30,7 +30,7 @@ import term_image from . import _ctlseqs as ctlseqs -from .exceptions import TermImageWarning +from .exceptions import TermImageUserWarning # import logging @@ -730,7 +730,7 @@ def _process_start_wrapper(self, *args, **kwargs): "using `term_image.disable_queries()`.\n" "Simply set an 'ignore' filter for this warning (before starting " "any subprocess) if not using any of the affected features.", - TermImageWarning, + TermImageUserWarning, ) else: self._tty_lock = _tty_lock @@ -805,8 +805,8 @@ def _process_run_wrapper(self, *args, **kwargs): ".html#active-terminal\n" "Any filter for this warning must be set before loading `term_image`, " "using `UserWarning` with the warning message (since " - "`TermImageWarning` won't be available).", - TermImageWarning, + "`TermImageUserWarning` won't be available).", + TermImageUserWarning, ) if _tty_fd != -1: diff --git a/src/term_image/exceptions.py b/src/term_image/exceptions.py index c731bd67..8a0379f5 100644 --- a/src/term_image/exceptions.py +++ b/src/term_image/exceptions.py @@ -5,8 +5,12 @@ from __future__ import annotations -class TermImageWarning(UserWarning): - """Package-specific warning category.""" +class TermImageWarning(Warning): + """Package-specific warning base category.""" + + +class TermImageUserWarning(TermImageWarning, UserWarning): + """Package-specific user warning sub-category.""" class TermImageError(Exception): @@ -31,10 +35,3 @@ class URLNotFoundError(TermImageError, FileNotFoundError): class UrwidImageError(TermImageError): """Raised for errors specific to :py:class:`~term_image.widget.UrwidImage`.""" - - -__all__ = ["TermImageWarning"] + [ - name - for name, obj in vars().items() - if isinstance(obj, type) and issubclass(obj, TermImageError) -] diff --git a/src/term_image/image/iterm2.py b/src/term_image/image/iterm2.py index 6094466b..c8224e63 100644 --- a/src/term_image/image/iterm2.py +++ b/src/term_image/image/iterm2.py @@ -25,7 +25,7 @@ get_terminal_name_version, write_tty, ) -from ..exceptions import RenderError, TermImageWarning +from ..exceptions import RenderError, TermImageUserWarning from .common import GraphicsImage, ImageMeta, ImageSource # Constants for render methods @@ -386,7 +386,7 @@ class ITerm2Image(GraphicsImage, metaclass=ITerm2ImageMeta): Can not be reset via an instance. - :py:class:`~term_image.exceptions.TermImageWarning` is issued (and shown + :py:class:`~term_image.exceptions.TermImageUserWarning` is issued (and shown **only the first time**, except the warning filters are modified to do otherwise) if the image data size for a native animation is above this value. @@ -628,7 +628,7 @@ def _render_image( if compressed_image.tell() > self.native_anim_max_bytes: warnings.warn( "Image data size above the maximum for native animation", - TermImageWarning, + TermImageUserWarning, ) control_data = "".join( diff --git a/tests/test_image/test_iterm2.py b/tests/test_image/test_iterm2.py index a8e8b08a..bba1f66a 100644 --- a/tests/test_image/test_iterm2.py +++ b/tests/test_image/test_iterm2.py @@ -11,7 +11,7 @@ from PIL.WebPImagePlugin import WebPImageFile from term_image import _ctlseqs as ctlseqs -from term_image.exceptions import RenderError, StyleError, TermImageWarning +from term_image.exceptions import RenderError, StyleError, TermImageUserWarning from term_image.image import iterm2 from term_image.image.iterm2 import ANIM, LINES, WHOLE, ITerm2Image @@ -1196,7 +1196,7 @@ def test_unknown_format(self): # Image data size limit def test_max_bytes(self): ITerm2Image.native_anim_max_bytes = 300000 - with pytest.warns(TermImageWarning, match="maximum for native animation"): + with pytest.warns(TermImageUserWarning, match="maximum for native animation"): self.render_native_anim(self.apng_image) self.render_native_anim(self.gif_image)