comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/lib/python3.8/site-packages/exceptiongroup-1.2.2.dist-info/METADATA @ 68:5028fdace37b

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 16:23:26 -0400
parents
children
comparison
equal deleted inserted replaced
67:0e9998148a16 68:5028fdace37b
1 Metadata-Version: 2.1
2 Name: exceptiongroup
3 Version: 1.2.2
4 Summary: Backport of PEP 654 (exception groups)
5 Author-email: Alex Grönholm <alex.gronholm@nextday.fi>
6 Requires-Python: >=3.7
7 Description-Content-Type: text/x-rst
8 Classifier: Development Status :: 5 - Production/Stable
9 Classifier: Intended Audience :: Developers
10 Classifier: License :: OSI Approved :: MIT License
11 Classifier: Programming Language :: Python
12 Classifier: Programming Language :: Python :: 3 :: Only
13 Classifier: Typing :: Typed
14 Requires-Dist: pytest >= 6 ; extra == "test"
15 Project-URL: Changelog, https://github.com/agronholm/exceptiongroup/blob/main/CHANGES.rst
16 Project-URL: Issue Tracker, https://github.com/agronholm/exceptiongroup/issues
17 Project-URL: Source code, https://github.com/agronholm/exceptiongroup
18 Provides-Extra: test
19
20 .. image:: https://github.com/agronholm/exceptiongroup/actions/workflows/test.yml/badge.svg
21 :target: https://github.com/agronholm/exceptiongroup/actions/workflows/test.yml
22 :alt: Build Status
23 .. image:: https://coveralls.io/repos/github/agronholm/exceptiongroup/badge.svg?branch=main
24 :target: https://coveralls.io/github/agronholm/exceptiongroup?branch=main
25 :alt: Code Coverage
26
27 This is a backport of the ``BaseExceptionGroup`` and ``ExceptionGroup`` classes from
28 Python 3.11.
29
30 It contains the following:
31
32 * The ``exceptiongroup.BaseExceptionGroup`` and ``exceptiongroup.ExceptionGroup``
33 classes
34 * A utility function (``exceptiongroup.catch()``) for catching exceptions possibly
35 nested in an exception group
36 * Patches to the ``TracebackException`` class that properly formats exception groups
37 (installed on import)
38 * An exception hook that handles formatting of exception groups through
39 ``TracebackException`` (installed on import)
40 * Special versions of some of the functions from the ``traceback`` module, modified to
41 correctly handle exception groups even when monkey patching is disabled, or blocked by
42 another custom exception hook:
43
44 * ``traceback.format_exception()``
45 * ``traceback.format_exception_only()``
46 * ``traceback.print_exception()``
47 * ``traceback.print_exc()``
48 * A backported version of ``contextlib.suppress()`` from Python 3.12.1 which also
49 handles suppressing exceptions inside exception groups
50
51 If this package is imported on Python 3.11 or later, the built-in implementations of the
52 exception group classes are used instead, ``TracebackException`` is not monkey patched
53 and the exception hook won't be installed.
54
55 See the `standard library documentation`_ for more information on exception groups.
56
57 .. _standard library documentation: https://docs.python.org/3/library/exceptions.html
58
59 Catching exceptions
60 ===================
61
62 Due to the lack of the ``except*`` syntax introduced by `PEP 654`_ in earlier Python
63 versions, you need to use ``exceptiongroup.catch()`` to catch exceptions that are
64 potentially nested inside an exception group. This function returns a context manager
65 that calls the given handler for any exceptions matching the sole argument.
66
67 The argument to ``catch()`` must be a dict (or any ``Mapping``) where each key is either
68 an exception class or an iterable of exception classes. Each value must be a callable
69 that takes a single positional argument. The handler will be called at most once, with
70 an exception group as an argument which will contain all the exceptions that are any
71 of the given types, or their subclasses. The exception group may contain nested groups
72 containing more matching exceptions.
73
74 Thus, the following Python 3.11+ code:
75
76 .. code-block:: python
77
78 try:
79 ...
80 except* (ValueError, KeyError) as excgroup:
81 for exc in excgroup.exceptions:
82 print('Caught exception:', type(exc))
83 except* RuntimeError:
84 print('Caught runtime error')
85
86 would be written with this backport like this:
87
88 .. code-block:: python
89
90 from exceptiongroup import BaseExceptionGroup, catch
91
92 def value_key_err_handler(excgroup: BaseExceptionGroup) -> None:
93 for exc in excgroup.exceptions:
94 print('Caught exception:', type(exc))
95
96 def runtime_err_handler(exc: BaseExceptionGroup) -> None:
97 print('Caught runtime error')
98
99 with catch({
100 (ValueError, KeyError): value_key_err_handler,
101 RuntimeError: runtime_err_handler
102 }):
103 ...
104
105 **NOTE**: Just like with ``except*``, you cannot handle ``BaseExceptionGroup`` or
106 ``ExceptionGroup`` with ``catch()``.
107
108 Suppressing exceptions
109 ======================
110
111 This library contains a backport of the ``contextlib.suppress()`` context manager from
112 Python 3.12.1. It allows you to selectively ignore certain exceptions, even when they're
113 inside exception groups:
114
115 .. code-block:: python
116
117 from exceptiongroup import suppress
118
119 with suppress(RuntimeError):
120 raise ExceptionGroup("", [RuntimeError("boo")])
121
122 Notes on monkey patching
123 ========================
124
125 To make exception groups render properly when an unhandled exception group is being
126 printed out, this package does two things when it is imported on any Python version
127 earlier than 3.11:
128
129 #. The ``traceback.TracebackException`` class is monkey patched to store extra
130 information about exception groups (in ``__init__()``) and properly format them (in
131 ``format()``)
132 #. An exception hook is installed at ``sys.excepthook``, provided that no other hook is
133 already present. This hook causes the exception to be formatted using
134 ``traceback.TracebackException`` rather than the built-in rendered.
135
136 If ``sys.exceptionhook`` is found to be set to something else than the default when
137 ``exceptiongroup`` is imported, no monkeypatching is done at all.
138
139 To prevent the exception hook and patches from being installed, set the environment
140 variable ``EXCEPTIONGROUP_NO_PATCH`` to ``1``.
141
142 Formatting exception groups
143 ---------------------------
144
145 Normally, the monkey patching applied by this library on import will cause exception
146 groups to be printed properly in tracebacks. But in cases when the monkey patching is
147 blocked by a third party exception hook, or monkey patching is explicitly disabled,
148 you can still manually format exceptions using the special versions of the ``traceback``
149 functions, like ``format_exception()``, listed at the top of this page. They work just
150 like their counterparts in the ``traceback`` module, except that they use a separately
151 patched subclass of ``TracebackException`` to perform the rendering.
152
153 Particularly in cases where a library installs its own exception hook, it is recommended
154 to use these special versions to do the actual formatting of exceptions/tracebacks.
155
156 .. _PEP 654: https://www.python.org/dev/peps/pep-0654/
157