Add python venv
This commit is contained in:
@ -0,0 +1 @@
|
||||
pip
|
@ -0,0 +1,73 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2022 Alex Grönholm
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
This project contains code copied from the Python standard library.
|
||||
The following is the required license notice for those parts.
|
||||
|
||||
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
|
||||
--------------------------------------------
|
||||
|
||||
1. This LICENSE AGREEMENT is between the Python Software Foundation
|
||||
("PSF"), and the Individual or Organization ("Licensee") accessing and
|
||||
otherwise using this software ("Python") in source or binary form and
|
||||
its associated documentation.
|
||||
|
||||
2. Subject to the terms and conditions of this License Agreement, PSF hereby
|
||||
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
|
||||
analyze, test, perform and/or display publicly, prepare derivative works,
|
||||
distribute, and otherwise use Python alone or in any derivative version,
|
||||
provided, however, that PSF's License Agreement and PSF's notice of copyright,
|
||||
i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
||||
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Python Software Foundation;
|
||||
All Rights Reserved" are retained in Python alone or in any derivative version
|
||||
prepared by Licensee.
|
||||
|
||||
3. In the event Licensee prepares a derivative work that is based on
|
||||
or incorporates Python or any part thereof, and wants to make
|
||||
the derivative work available to others as provided herein, then
|
||||
Licensee hereby agrees to include in any such work a brief summary of
|
||||
the changes made to Python.
|
||||
|
||||
4. PSF is making Python available to Licensee on an "AS IS"
|
||||
basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
|
||||
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
|
||||
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
|
||||
INFRINGE ANY THIRD PARTY RIGHTS.
|
||||
|
||||
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
|
||||
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
|
||||
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
|
||||
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
|
||||
|
||||
6. This License Agreement will automatically terminate upon a material
|
||||
breach of its terms and conditions.
|
||||
|
||||
7. Nothing in this License Agreement shall be deemed to create any
|
||||
relationship of agency, partnership, or joint venture between PSF and
|
||||
Licensee. This License Agreement does not grant permission to use PSF
|
||||
trademarks or trade name in a trademark sense to endorse or promote
|
||||
products or services of Licensee, or any third party.
|
||||
|
||||
8. By copying, installing or otherwise using Python, Licensee
|
||||
agrees to be bound by the terms and conditions of this License
|
||||
Agreement.
|
@ -0,0 +1,141 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: exceptiongroup
|
||||
Version: 1.0.0
|
||||
Summary: Backport of PEP 654 (exception groups)
|
||||
Author-email: Alex Grönholm <alex.gronholm@nextday.fi>
|
||||
Requires-Python: >=3.7
|
||||
Description-Content-Type: text/x-rst
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Typing :: Typed
|
||||
Requires-Dist: pytest >= 6 ; extra == "test"
|
||||
Project-URL: Changelog, https://github.com/agronholm/exceptiongroup/blob/main/CHANGES.rst
|
||||
Project-URL: Issue Tracker, https://github.com/agronholm/exceptiongroup/issues
|
||||
Project-URL: Source code, https://github.com/agronholm/exceptiongroup
|
||||
Provides-Extra: test
|
||||
|
||||
.. image:: https://github.com/agronholm/exceptiongroup/actions/workflows/test.yml/badge.svg
|
||||
:target: https://github.com/agronholm/exceptiongroup/actions/workflows/test.yml
|
||||
:alt: Build Status
|
||||
.. image:: https://coveralls.io/repos/github/agronholm/exceptiongroup/badge.svg?branch=main
|
||||
:target: https://coveralls.io/github/agronholm/exceptiongroup?branch=main
|
||||
:alt: Code Coverage
|
||||
|
||||
This is a backport of the ``BaseExceptionGroup`` and ``ExceptionGroup`` classes from
|
||||
Python 3.11.
|
||||
|
||||
It contains the following:
|
||||
|
||||
* The ``exceptiongroup.BaseExceptionGroup`` and ``exceptiongroup.ExceptionGroup``
|
||||
classes
|
||||
* A utility function (``exceptiongroup.catch()``) for catching exceptions possibly
|
||||
nested in an exception group
|
||||
* Patches to the ``TracebackException`` class that properly formats exception groups
|
||||
(installed on import)
|
||||
* An exception hook that handles formatting of exception groups through
|
||||
``TracebackException`` (installed on import)
|
||||
* Special versions of some of the functions from the ``traceback`` module, modified to
|
||||
correctly handle exception groups even when monkey patching is disabled, or blocked by
|
||||
another custom exception hook:
|
||||
|
||||
* ``traceback.format_exception()``
|
||||
* ``traceback.format_exception_only()``
|
||||
* ``traceback.print_exception()``
|
||||
* ``traceback.print_exc()``
|
||||
|
||||
If this package is imported on Python 3.11 or later, the built-in implementations of the
|
||||
exception group classes are used instead, ``TracebackException`` is not monkey patched
|
||||
and the exception hook won't be installed.
|
||||
|
||||
See the `standard library documentation`_ for more information on exception groups.
|
||||
|
||||
.. _standard library documentation: https://docs.python.org/3/library/exceptions.html
|
||||
|
||||
Catching exceptions
|
||||
===================
|
||||
|
||||
Due to the lack of the ``except*`` syntax introduced by `PEP 654`_ in earlier Python
|
||||
versions, you need to use ``exceptiongroup.catch()`` to catch exceptions that are
|
||||
potentially nested inside an exception group. This function returns a context manager
|
||||
that calls the given handler for any exceptions matching the sole argument.
|
||||
|
||||
The argument to ``catch()`` must be a dict (or any ``Mapping``) where each key is either
|
||||
an exception class or an iterable of exception classes. Each value must be a callable
|
||||
that takes a single positional argument. The handler will be called at most once, with
|
||||
an exception group as an argument which will contain all the exceptions that are any
|
||||
of the given types, or their subclasses. The exception group may contain nested groups
|
||||
containing more matching exceptions.
|
||||
|
||||
Thus, the following Python 3.11+ code:
|
||||
|
||||
.. code-block:: python3
|
||||
|
||||
try:
|
||||
...
|
||||
except* (ValueError, KeyError) as excgroup:
|
||||
for exc in excgroup.exceptions:
|
||||
print('Caught exception:', type(exc))
|
||||
except* RuntimeError:
|
||||
print('Caught runtime error')
|
||||
|
||||
would be written with this backport like this:
|
||||
|
||||
.. code-block:: python3
|
||||
|
||||
from exceptiongroup import ExceptionGroup, catch
|
||||
|
||||
def value_key_err_handler(excgroup: ExceptionGroup) -> None:
|
||||
for exc in excgroup.exceptions:
|
||||
print('Caught exception:', type(exc))
|
||||
|
||||
def runtime_err_handler(exc: ExceptionGroup) -> None:
|
||||
print('Caught runtime error')
|
||||
|
||||
with catch({
|
||||
(ValueError, KeyError): value_key_err_handler,
|
||||
RuntimeError: runtime_err_handler
|
||||
}):
|
||||
...
|
||||
|
||||
**NOTE**: Just like with ``except*``, you cannot handle ``BaseExceptionGroup`` or
|
||||
``ExceptionGroup`` with ``catch()``.
|
||||
|
||||
Notes on monkey patching
|
||||
========================
|
||||
|
||||
To make exception groups render properly when an unhandled exception group is being
|
||||
printed out, this package does two things when it is imported on any Python version
|
||||
earlier than 3.11:
|
||||
|
||||
#. The ``traceback.TracebackException`` class is monkey patched to store extra
|
||||
information about exception groups (in ``__init__()``) and properly format them (in
|
||||
``format()``)
|
||||
#. An exception hook is installed at ``sys.excepthook``, provided that no other hook is
|
||||
already present. This hook causes the exception to be formatted using
|
||||
``traceback.TracebackException`` rather than the built-in rendered.
|
||||
|
||||
If ``sys.exceptionhook`` is found to be set to something else than the default when
|
||||
``exceptiongroup`` is imported, no monkeypatching is done at all.
|
||||
|
||||
To prevent the exception hook and patches from being installed, set the environment
|
||||
variable ``EXCEPTIONGROUP_NO_PATCH`` to ``1``.
|
||||
|
||||
Formatting exception groups
|
||||
---------------------------
|
||||
|
||||
Normally, the monkey patching applied by this library on import will cause exception
|
||||
groups to be printed properly in tracebacks. But in cases when the monkey patching is
|
||||
blocked by a third party exception hook, or monkey patching is explicitly disabled,
|
||||
you can still manually format exceptions using the special versions of the ``traceback``
|
||||
functions, like ``format_exception()``, listed at the top of this page. They work just
|
||||
like their counterparts in the ``traceback`` module, except that they use a separately
|
||||
patched subclass of ``TracebackException`` to perform the rendering.
|
||||
|
||||
Particularly in cases where a library installs its own exception hook, it is recommended
|
||||
to use these special versions to do the actual formatting of exceptions/tracebacks.
|
||||
|
||||
.. _PEP 654: https://www.python.org/dev/peps/pep-0654/
|
||||
|
@ -0,0 +1,16 @@
|
||||
exceptiongroup-1.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
exceptiongroup-1.0.0.dist-info/LICENSE,sha256=blBw12UDHgrUA6HL-Qrm0ZoCKPgC4yC3rP9GCqcu1Hw,3704
|
||||
exceptiongroup-1.0.0.dist-info/METADATA,sha256=hUNdg8I9ktjbq7rOSH6XGZhxJQB8a94ZYiVABt6m13s,6083
|
||||
exceptiongroup-1.0.0.dist-info/RECORD,,
|
||||
exceptiongroup-1.0.0.dist-info/WHEEL,sha256=4TfKIB_xu-04bc2iKz6_zFt-gEFEEDU_31HGhqzOCE8,81
|
||||
exceptiongroup/__init__.py,sha256=Zr-MMWDXFMdrRBC8nS8UFqATRQL0Z-Lb-SANqs-uu0I,920
|
||||
exceptiongroup/__pycache__/__init__.cpython-310.pyc,,
|
||||
exceptiongroup/__pycache__/_catch.cpython-310.pyc,,
|
||||
exceptiongroup/__pycache__/_exceptions.cpython-310.pyc,,
|
||||
exceptiongroup/__pycache__/_formatting.cpython-310.pyc,,
|
||||
exceptiongroup/__pycache__/_version.cpython-310.pyc,,
|
||||
exceptiongroup/_catch.py,sha256=m7BHRSU_kKy_pqMISPArf99zW1RgMG00i8623f7_sEo,3578
|
||||
exceptiongroup/_exceptions.py,sha256=dgaJUb5mZacPl81T-N5c-yav77aAaq2qR8gdaMOocSI,6709
|
||||
exceptiongroup/_formatting.py,sha256=cvOabBHv3kJX2Ro_k1a_qaO3vKfsju9EWxlpxp8-R2A,13645
|
||||
exceptiongroup/_version.py,sha256=XOK0OR9a7lhuJ90Z1ilVUxr-KiKlU6duLTEFS_4wjFg,176
|
||||
exceptiongroup/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@ -0,0 +1,4 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: flit 3.7.1
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
Reference in New Issue
Block a user