Add files using upload-large-folder tool
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .venv/lib/python3.11/site-packages/colorful/colors.py +101 -0
- .venv/lib/python3.11/site-packages/colorful/core.py +551 -0
- .venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/INSTALLER +1 -0
- .venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/METADATA +563 -0
- .venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/RECORD +96 -0
- .venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/WHEEL +4 -0
- .venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/entry_points.txt +5 -0
- .venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/licenses/LICENSE +21 -0
- .venv/lib/python3.11/site-packages/grpc_status/__init__.py +13 -0
- .venv/lib/python3.11/site-packages/grpc_status/__pycache__/__init__.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/grpc_status/__pycache__/_async.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/grpc_status/__pycache__/_common.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/grpc_status/__pycache__/rpc_status.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/grpc_status/_async.py +58 -0
- .venv/lib/python3.11/site-packages/grpc_status/_common.py +27 -0
- .venv/lib/python3.11/site-packages/grpc_status/rpc_status.py +96 -0
- .venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/INSTALLER +1 -0
- .venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/METADATA +80 -0
- .venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/RECORD +14 -0
- .venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/WHEEL +4 -0
- .venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/licenses/LICENSE +19 -0
- .venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/INSTALLER +1 -0
- .venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/LICENSE.txt +28 -0
- .venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/METADATA +75 -0
- .venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/RECORD +57 -0
- .venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/WHEEL +4 -0
- .venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/entry_points.txt +3 -0
- .venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/INSTALLER +1 -0
- .venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/License.txt +1568 -0
- .venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/METADATA +35 -0
- .venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/RECORD +36 -0
- .venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/WHEEL +5 -0
- .venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/top_level.txt +1 -0
- .venv/lib/python3.11/site-packages/pyparsing-3.2.1.dist-info/INSTALLER +1 -0
- .venv/lib/python3.11/site-packages/pyparsing-3.2.1.dist-info/LICENSE +18 -0
- .venv/lib/python3.11/site-packages/pyparsing-3.2.1.dist-info/METADATA +124 -0
- .venv/lib/python3.11/site-packages/pyparsing-3.2.1.dist-info/RECORD +28 -0
- .venv/lib/python3.11/site-packages/pyparsing-3.2.1.dist-info/WHEEL +4 -0
- .venv/lib/python3.11/site-packages/pytest/__init__.py +172 -0
- .venv/lib/python3.11/site-packages/pytest/__main__.py +9 -0
- .venv/lib/python3.11/site-packages/pytest/__pycache__/__init__.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pytest/__pycache__/__main__.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pytest/py.typed +0 -0
- .venv/lib/python3.11/site-packages/torchaudio/_extension/__init__.py +74 -0
- .venv/lib/python3.11/site-packages/torchaudio/_extension/__pycache__/__init__.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/torchaudio/_extension/__pycache__/utils.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/torchaudio/_extension/utils.py +180 -0
- .venv/lib/python3.11/site-packages/torchaudio/datasets/__pycache__/__init__.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/torchaudio/datasets/__pycache__/cmuarctic.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/torchaudio/datasets/__pycache__/cmudict.cpython-311.pyc +0 -0
.venv/lib/python3.11/site-packages/colorful/colors.py
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# -*- coding: utf-8 -*-
|
| 2 |
+
|
| 3 |
+
"""
|
| 4 |
+
colorful
|
| 5 |
+
~~~~~~~~
|
| 6 |
+
|
| 7 |
+
Terminal string styling done right, in Python.
|
| 8 |
+
|
| 9 |
+
:copyright: (c) 2017 by Timo Furrer <tuxtimo@gmail.com>
|
| 10 |
+
:license: MIT, see LICENSE for more details.
|
| 11 |
+
"""
|
| 12 |
+
|
| 13 |
+
import json
|
| 14 |
+
|
| 15 |
+
from . import utils
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def parse_colors(path):
|
| 19 |
+
"""Parse the given color files.
|
| 20 |
+
|
| 21 |
+
Supported are:
|
| 22 |
+
* .txt for X11 colors
|
| 23 |
+
* .json for colornames
|
| 24 |
+
"""
|
| 25 |
+
if path.endswith(".txt"):
|
| 26 |
+
return parse_rgb_txt_file(path)
|
| 27 |
+
elif path.endswith(".json"):
|
| 28 |
+
return parse_json_color_file(path)
|
| 29 |
+
|
| 30 |
+
raise TypeError("colorful only supports .txt and .json files for colors")
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
def parse_rgb_txt_file(path):
|
| 34 |
+
"""
|
| 35 |
+
Parse the given rgb.txt file into a Python dict.
|
| 36 |
+
|
| 37 |
+
See https://en.wikipedia.org/wiki/X11_color_names for more information
|
| 38 |
+
|
| 39 |
+
:param str path: the path to the X11 rgb.txt file
|
| 40 |
+
"""
|
| 41 |
+
#: Holds the generated color dict
|
| 42 |
+
color_dict = {}
|
| 43 |
+
|
| 44 |
+
with open(path, 'r') as rgb_txt:
|
| 45 |
+
for line in rgb_txt:
|
| 46 |
+
line = line.strip()
|
| 47 |
+
if not line or line.startswith('!'):
|
| 48 |
+
continue # skip comments
|
| 49 |
+
|
| 50 |
+
parts = line.split()
|
| 51 |
+
color_dict[" ".join(parts[3:])] = (int(parts[0]), int(parts[1]), int(parts[2]))
|
| 52 |
+
|
| 53 |
+
return color_dict
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
def parse_json_color_file(path):
|
| 57 |
+
"""Parse a JSON color file.
|
| 58 |
+
|
| 59 |
+
The JSON has to be in the following format:
|
| 60 |
+
|
| 61 |
+
.. code:: json
|
| 62 |
+
|
| 63 |
+
[{"name": "COLOR_NAME", "hex": "#HEX"}, ...]
|
| 64 |
+
|
| 65 |
+
:param str path: the path to the JSON color file
|
| 66 |
+
"""
|
| 67 |
+
with open(path, "r") as color_file:
|
| 68 |
+
color_list = json.load(color_file)
|
| 69 |
+
|
| 70 |
+
# transform raw color list into color dict
|
| 71 |
+
color_dict = {c["name"]: c["hex"] for c in color_list}
|
| 72 |
+
return color_dict
|
| 73 |
+
|
| 74 |
+
|
| 75 |
+
def sanitize_color_palette(colorpalette):
|
| 76 |
+
"""
|
| 77 |
+
Sanitze the given color palette so it can
|
| 78 |
+
be safely used by Colorful.
|
| 79 |
+
|
| 80 |
+
It will convert colors specified in hex RGB to
|
| 81 |
+
a RGB channel triplet.
|
| 82 |
+
"""
|
| 83 |
+
new_palette = {}
|
| 84 |
+
|
| 85 |
+
def __make_valid_color_name(name):
|
| 86 |
+
"""
|
| 87 |
+
Convert the given name into a valid colorname
|
| 88 |
+
"""
|
| 89 |
+
if len(name) == 1:
|
| 90 |
+
name = name[0]
|
| 91 |
+
return name[:1].lower() + name[1:]
|
| 92 |
+
|
| 93 |
+
return name[0].lower() + ''.join(word.capitalize() for word in name[1:])
|
| 94 |
+
|
| 95 |
+
for key, value in colorpalette.items():
|
| 96 |
+
if isinstance(value, str):
|
| 97 |
+
# we assume it's a hex RGB value
|
| 98 |
+
value = utils.hex_to_rgb(value)
|
| 99 |
+
new_palette[__make_valid_color_name(key.split())] = value
|
| 100 |
+
|
| 101 |
+
return new_palette
|
.venv/lib/python3.11/site-packages/colorful/core.py
ADDED
|
@@ -0,0 +1,551 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# -*- coding: utf-8 -*-
|
| 2 |
+
|
| 3 |
+
"""
|
| 4 |
+
colorful
|
| 5 |
+
~~~~~~~~
|
| 6 |
+
|
| 7 |
+
Terminal string styling done right, in Python.
|
| 8 |
+
|
| 9 |
+
:copyright: (c) 2017 by Timo Furrer <tuxtimo@gmail.com>
|
| 10 |
+
:license: MIT, see LICENSE for more details.
|
| 11 |
+
"""
|
| 12 |
+
|
| 13 |
+
import os
|
| 14 |
+
|
| 15 |
+
from . import ansi
|
| 16 |
+
from . import colors
|
| 17 |
+
from . import styles
|
| 18 |
+
from . import terminal
|
| 19 |
+
|
| 20 |
+
#: Holds the name of the env variable which is
|
| 21 |
+
# used as path to the default rgb.txt file
|
| 22 |
+
DEFAULT_RGB_TXT_PATH = os.environ.get(
|
| 23 |
+
'COLORFUL_DEFAULT_COLOR_PALETTE',
|
| 24 |
+
os.path.join(os.path.dirname(__file__), 'data', 'rgb.txt'))
|
| 25 |
+
|
| 26 |
+
#: Holds the color names mapped to RGB channels
|
| 27 |
+
COLOR_PALETTE = colors.parse_colors(path=DEFAULT_RGB_TXT_PATH)
|
| 28 |
+
|
| 29 |
+
#: Holds the path to the built-in `colornames` color palette file
|
| 30 |
+
COLORNAMES_COLORS_PATH = os.path.join(os.path.dirname(__file__), "data", "colornames.json")
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
class ColorfulError(Exception):
|
| 34 |
+
"""
|
| 35 |
+
Exception which is raised for Colorful specific
|
| 36 |
+
usage errors.
|
| 37 |
+
"""
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
class ColorfulAttributeError(AttributeError, ColorfulError):
|
| 41 |
+
"""
|
| 42 |
+
Exception which is raised for Colorful specific
|
| 43 |
+
usage errors raised during ``__getattr__`` calls.
|
| 44 |
+
|
| 45 |
+
This is to ensure a correct ``__getattr__`` protocol implementation.
|
| 46 |
+
"""
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
def translate_rgb_to_ansi_code(red, green, blue, offset, colormode):
|
| 50 |
+
"""
|
| 51 |
+
Translate the given RGB color into the appropriate ANSI escape code
|
| 52 |
+
for the given color mode.
|
| 53 |
+
The offset is used for the base color which is used.
|
| 54 |
+
|
| 55 |
+
The ``colormode`` has to be one of:
|
| 56 |
+
* 0: no colors / disabled
|
| 57 |
+
* 8: use ANSI 8 colors
|
| 58 |
+
* 16: use ANSI 16 colors (same as 8 but with brightness)
|
| 59 |
+
* 256: use ANSI 256 colors
|
| 60 |
+
* 0xFFFFFF / 16777215: use 16 Million true colors
|
| 61 |
+
|
| 62 |
+
:param int red: the red channel value
|
| 63 |
+
:param int green: the green channel value
|
| 64 |
+
:param int blue: the blue channel value
|
| 65 |
+
:param int offset: the offset to use for the base color
|
| 66 |
+
:param int colormode: the color mode to use. See explanation above
|
| 67 |
+
"""
|
| 68 |
+
if colormode == terminal.NO_COLORS: # colors are disabled, thus return empty string
|
| 69 |
+
return '', ''
|
| 70 |
+
|
| 71 |
+
if colormode == terminal.ANSI_8_COLORS or colormode == terminal.ANSI_16_COLORS:
|
| 72 |
+
color_code = ansi.rgb_to_ansi16(red, green, blue)
|
| 73 |
+
start_code = ansi.ANSI_ESCAPE_CODE.format(
|
| 74 |
+
code=color_code + offset - ansi.FOREGROUND_COLOR_OFFSET)
|
| 75 |
+
end_code = ansi.ANSI_ESCAPE_CODE.format(code=offset + ansi.COLOR_CLOSE_OFFSET)
|
| 76 |
+
return start_code, end_code
|
| 77 |
+
|
| 78 |
+
if colormode == terminal.ANSI_256_COLORS:
|
| 79 |
+
color_code = ansi.rgb_to_ansi256(red, green, blue)
|
| 80 |
+
start_code = ansi.ANSI_ESCAPE_CODE.format(code='{base};5;{code}'.format(
|
| 81 |
+
base=8 + offset, code=color_code))
|
| 82 |
+
end_code = ansi.ANSI_ESCAPE_CODE.format(code=offset + ansi.COLOR_CLOSE_OFFSET)
|
| 83 |
+
return start_code, end_code
|
| 84 |
+
|
| 85 |
+
if colormode == terminal.TRUE_COLORS:
|
| 86 |
+
start_code = ansi.ANSI_ESCAPE_CODE.format(code='{base};2;{red};{green};{blue}'.format(
|
| 87 |
+
base=8 + offset, red=red, green=green, blue=blue))
|
| 88 |
+
end_code = ansi.ANSI_ESCAPE_CODE.format(code=offset + ansi.COLOR_CLOSE_OFFSET)
|
| 89 |
+
return start_code, end_code
|
| 90 |
+
|
| 91 |
+
raise ColorfulAttributeError('invalid color mode "{0}"'.format(colormode))
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
def translate_colorname_to_ansi_code(colorname, offset, colormode, colorpalette):
|
| 95 |
+
"""
|
| 96 |
+
Translate the given color name to a valid
|
| 97 |
+
ANSI escape code.
|
| 98 |
+
|
| 99 |
+
:parma str colorname: the name of the color to resolve
|
| 100 |
+
:parma str offset: the offset for the color code
|
| 101 |
+
:param int colormode: the color mode to use. See ``translate_rgb_to_ansi_code``
|
| 102 |
+
:parma dict colorpalette: the color palette to use for the color name mapping
|
| 103 |
+
|
| 104 |
+
:returns str: the color as ANSI escape code
|
| 105 |
+
|
| 106 |
+
:raises ColorfulError: if the given color name is invalid
|
| 107 |
+
"""
|
| 108 |
+
try:
|
| 109 |
+
red, green, blue = colorpalette[colorname]
|
| 110 |
+
except KeyError:
|
| 111 |
+
raise ColorfulAttributeError('the color "{0}" is unknown. Use a color in your color palette (by default: X11 rgb.txt)'.format( # noqa
|
| 112 |
+
colorname))
|
| 113 |
+
else:
|
| 114 |
+
return translate_rgb_to_ansi_code(red, green, blue, offset, colormode)
|
| 115 |
+
|
| 116 |
+
|
| 117 |
+
def resolve_modifier_to_ansi_code(modifiername, colormode):
|
| 118 |
+
"""
|
| 119 |
+
Resolve the given modifier name to a valid
|
| 120 |
+
ANSI escape code.
|
| 121 |
+
|
| 122 |
+
:param str modifiername: the name of the modifier to resolve
|
| 123 |
+
:param int colormode: the color mode to use. See ``translate_rgb_to_ansi_code``
|
| 124 |
+
|
| 125 |
+
:returns str: the ANSI escape code for the modifier
|
| 126 |
+
|
| 127 |
+
:raises ColorfulError: if the given modifier name is invalid
|
| 128 |
+
"""
|
| 129 |
+
if colormode == terminal.NO_COLORS: # return empty string if colors are disabled
|
| 130 |
+
return '', ''
|
| 131 |
+
|
| 132 |
+
try:
|
| 133 |
+
start_code, end_code = ansi.MODIFIERS[modifiername]
|
| 134 |
+
except KeyError:
|
| 135 |
+
raise ColorfulAttributeError('the modifier "{0}" is unknown. Use one of: {1}'.format(
|
| 136 |
+
modifiername, ansi.MODIFIERS.keys()))
|
| 137 |
+
else:
|
| 138 |
+
return ansi.ANSI_ESCAPE_CODE.format(
|
| 139 |
+
code=start_code), ansi.ANSI_ESCAPE_CODE.format(
|
| 140 |
+
code=end_code)
|
| 141 |
+
|
| 142 |
+
|
| 143 |
+
def translate_style(style, colormode, colorpalette):
|
| 144 |
+
"""
|
| 145 |
+
Translate the given style to an ANSI escape code
|
| 146 |
+
sequence.
|
| 147 |
+
|
| 148 |
+
``style`` examples are:
|
| 149 |
+
|
| 150 |
+
* green
|
| 151 |
+
* bold
|
| 152 |
+
* red_on_black
|
| 153 |
+
* bold_green
|
| 154 |
+
* italic_yellow_on_cyan
|
| 155 |
+
|
| 156 |
+
:param str style: the style to translate
|
| 157 |
+
:param int colormode: the color mode to use. See ``translate_rgb_to_ansi_code``
|
| 158 |
+
:parma dict colorpalette: the color palette to use for the color name mapping
|
| 159 |
+
"""
|
| 160 |
+
style_parts = iter(style.split('_'))
|
| 161 |
+
|
| 162 |
+
ansi_start_sequence = []
|
| 163 |
+
ansi_end_sequence = []
|
| 164 |
+
|
| 165 |
+
try:
|
| 166 |
+
# consume all modifiers
|
| 167 |
+
part = None
|
| 168 |
+
for mod_part in style_parts:
|
| 169 |
+
part = mod_part
|
| 170 |
+
if part not in ansi.MODIFIERS:
|
| 171 |
+
break # all modifiers have been consumed
|
| 172 |
+
|
| 173 |
+
mod_start_code, mod_end_code = resolve_modifier_to_ansi_code(part, colormode)
|
| 174 |
+
ansi_start_sequence.append(mod_start_code)
|
| 175 |
+
ansi_end_sequence.append(mod_end_code)
|
| 176 |
+
else: # we've consumed all parts, thus we can exit
|
| 177 |
+
raise StopIteration()
|
| 178 |
+
|
| 179 |
+
# next part has to be a foreground color or the 'on' keyword
|
| 180 |
+
# which means we have to consume background colors
|
| 181 |
+
if part != 'on':
|
| 182 |
+
ansi_start_code, ansi_end_code = translate_colorname_to_ansi_code(
|
| 183 |
+
part, ansi.FOREGROUND_COLOR_OFFSET, colormode, colorpalette)
|
| 184 |
+
ansi_start_sequence.append(ansi_start_code)
|
| 185 |
+
ansi_end_sequence.append(ansi_end_code)
|
| 186 |
+
# consume the required 'on' keyword after the foreground color
|
| 187 |
+
next(style_parts)
|
| 188 |
+
|
| 189 |
+
# next part has to be the background color
|
| 190 |
+
part = next(style_parts)
|
| 191 |
+
ansi_start_code, ansi_end_code = translate_colorname_to_ansi_code(
|
| 192 |
+
part, ansi.BACKGROUND_COLOR_OFFSET, colormode, colorpalette)
|
| 193 |
+
ansi_start_sequence.append(ansi_start_code)
|
| 194 |
+
ansi_end_sequence.append(ansi_end_code)
|
| 195 |
+
except StopIteration: # we've consumed all parts of the styling string
|
| 196 |
+
pass
|
| 197 |
+
|
| 198 |
+
# construct and return ANSI escape code sequence
|
| 199 |
+
return ''.join(ansi_start_sequence), ''.join(ansi_end_sequence)
|
| 200 |
+
|
| 201 |
+
|
| 202 |
+
def style_string(string, ansi_style, colormode, nested=False):
|
| 203 |
+
"""
|
| 204 |
+
Style the given string according to the given
|
| 205 |
+
ANSI style string.
|
| 206 |
+
|
| 207 |
+
:param str string: the string to style
|
| 208 |
+
:param tuple ansi_style: the styling string returned by ``translate_style``
|
| 209 |
+
:param int colormode: the color mode to use. See ``translate_rgb_to_ansi_code``
|
| 210 |
+
|
| 211 |
+
:returns: a string containing proper ANSI sequence
|
| 212 |
+
"""
|
| 213 |
+
ansi_start_code, ansi_end_code = ansi_style
|
| 214 |
+
|
| 215 |
+
# replace nest placeholders with the current begin style
|
| 216 |
+
string = str(string).replace(ansi.NEST_PLACEHOLDER, ansi_start_code)
|
| 217 |
+
|
| 218 |
+
return '{start_code}{string}{end_code}{nest_ph}'.format(
|
| 219 |
+
start_code=ansi_start_code,
|
| 220 |
+
string=string,
|
| 221 |
+
end_code=ansi_end_code,
|
| 222 |
+
nest_ph=ansi.NEST_PLACEHOLDER if nested else '')
|
| 223 |
+
|
| 224 |
+
|
| 225 |
+
class ColorfulString(object):
|
| 226 |
+
"""
|
| 227 |
+
Represents a colored string
|
| 228 |
+
"""
|
| 229 |
+
def __init__(self, orig_string, styled_string, colorful_ctx):
|
| 230 |
+
self.orig_string = str(orig_string)
|
| 231 |
+
self.styled_string = str(styled_string)
|
| 232 |
+
self.colorful_ctx = colorful_ctx
|
| 233 |
+
|
| 234 |
+
def __str__(self):
|
| 235 |
+
if self.colorful_ctx.colormode == terminal.NO_COLORS:
|
| 236 |
+
return self.orig_string
|
| 237 |
+
else:
|
| 238 |
+
return self.styled_string
|
| 239 |
+
|
| 240 |
+
def __len__(self):
|
| 241 |
+
return len(self.orig_string)
|
| 242 |
+
|
| 243 |
+
def __iter__(self):
|
| 244 |
+
return iter(self.styled_string)
|
| 245 |
+
|
| 246 |
+
def __add__(self, other):
|
| 247 |
+
if isinstance(other, ColorfulString):
|
| 248 |
+
return ColorfulString(
|
| 249 |
+
self.orig_string + other.orig_string,
|
| 250 |
+
self.styled_string + other.styled_string,
|
| 251 |
+
self.colorful_ctx)
|
| 252 |
+
|
| 253 |
+
return ColorfulString(
|
| 254 |
+
self.orig_string + other,
|
| 255 |
+
self.styled_string + other,
|
| 256 |
+
self.colorful_ctx)
|
| 257 |
+
|
| 258 |
+
def __iadd__(self, other):
|
| 259 |
+
if isinstance(other, ColorfulString):
|
| 260 |
+
self.orig_string += other.orig_string
|
| 261 |
+
self.styled_string += other.styled_string
|
| 262 |
+
else:
|
| 263 |
+
self.orig_string += other
|
| 264 |
+
self.styled_string += other
|
| 265 |
+
|
| 266 |
+
return self
|
| 267 |
+
|
| 268 |
+
def __radd__(self, other):
|
| 269 |
+
if isinstance(other, ColorfulString):
|
| 270 |
+
return ColorfulString(
|
| 271 |
+
other.orig_string + self.orig_string,
|
| 272 |
+
other.styled_string + self.styled_string,
|
| 273 |
+
self.colorful_ctx)
|
| 274 |
+
|
| 275 |
+
# we return handover the conversion to the
|
| 276 |
+
# object on the left side
|
| 277 |
+
return other + self.styled_string
|
| 278 |
+
|
| 279 |
+
def __mul__(self, other):
|
| 280 |
+
return ColorfulString(
|
| 281 |
+
self.orig_string * other,
|
| 282 |
+
self.styled_string * other,
|
| 283 |
+
self.colorful_ctx)
|
| 284 |
+
|
| 285 |
+
def __format__(self, format_spec):
|
| 286 |
+
if self.colorful_ctx.colormode == terminal.NO_COLORS:
|
| 287 |
+
return self.orig_string.__format__(format_spec)
|
| 288 |
+
|
| 289 |
+
# append nested placeholder to styled string in order to continue the
|
| 290 |
+
# previous styles. If the string already ends with the nest placeholder
|
| 291 |
+
# we don't have to append it again.
|
| 292 |
+
if self.styled_string.endswith(ansi.NEST_PLACEHOLDER):
|
| 293 |
+
styled_string = self.styled_string
|
| 294 |
+
else:
|
| 295 |
+
styled_string = '{orig_str}{nest_ph}'.format(
|
| 296 |
+
orig_str=self.styled_string, nest_ph=ansi.NEST_PLACEHOLDER)
|
| 297 |
+
return styled_string.__format__(format_spec)
|
| 298 |
+
|
| 299 |
+
def __getattr__(self, name):
|
| 300 |
+
str_method = getattr(self.styled_string, name)
|
| 301 |
+
return str_method
|
| 302 |
+
|
| 303 |
+
|
| 304 |
+
class Colorful(object):
|
| 305 |
+
"""
|
| 306 |
+
Provides methods to style strings for terminal
|
| 307 |
+
output.
|
| 308 |
+
|
| 309 |
+
:param int colormode: the color mode to use. See ``translate_rgb_to_ansi_code``
|
| 310 |
+
"""
|
| 311 |
+
# re-expose the color modes from ``colorful.terminal``
|
| 312 |
+
# on a package level.
|
| 313 |
+
NO_COLORS = terminal.NO_COLORS
|
| 314 |
+
ANSI_8_COLORS = terminal.ANSI_8_COLORS
|
| 315 |
+
ANSI_16_COLORS = terminal.ANSI_16_COLORS
|
| 316 |
+
ANSI_256_COLORS = terminal.ANSI_256_COLORS
|
| 317 |
+
TRUE_COLORS = terminal.TRUE_COLORS
|
| 318 |
+
|
| 319 |
+
# expose the `colornames` color palette
|
| 320 |
+
COLORNAMES_COLORS = COLORNAMES_COLORS_PATH
|
| 321 |
+
|
| 322 |
+
# expose ANSI escape codes to close colors
|
| 323 |
+
# this is especially useful when using ``str.format()``.
|
| 324 |
+
close_fg_color = ansi.ANSI_ESCAPE_CODE.format(
|
| 325 |
+
code=ansi.FOREGROUND_COLOR_OFFSET + ansi.COLOR_CLOSE_OFFSET)
|
| 326 |
+
close_bg_color = ansi.ANSI_ESCAPE_CODE.format(
|
| 327 |
+
code=ansi.BACKGROUND_COLOR_OFFSET + ansi.COLOR_CLOSE_OFFSET)
|
| 328 |
+
|
| 329 |
+
# expose ANSI escape codes to close modifiers
|
| 330 |
+
no_bold = ansi.ANSI_ESCAPE_CODE.format(code=ansi.MODIFIERS['bold'][1])
|
| 331 |
+
no_dimmed = ansi.ANSI_ESCAPE_CODE.format(code=ansi.MODIFIERS['dimmed'][1])
|
| 332 |
+
no_italic = ansi.ANSI_ESCAPE_CODE.format(code=ansi.MODIFIERS['italic'][1])
|
| 333 |
+
no_underlined = ansi.ANSI_ESCAPE_CODE.format(code=ansi.MODIFIERS['underlined'][1])
|
| 334 |
+
no_blinkslow = ansi.ANSI_ESCAPE_CODE.format(code=ansi.MODIFIERS['blinkslow'][1])
|
| 335 |
+
no_blinkrapid = ansi.ANSI_ESCAPE_CODE.format(code=ansi.MODIFIERS['blinkrapid'][1])
|
| 336 |
+
no_inversed = ansi.ANSI_ESCAPE_CODE.format(code=ansi.MODIFIERS['inversed'][1])
|
| 337 |
+
no_concealed = ansi.ANSI_ESCAPE_CODE.format(code=ansi.MODIFIERS['concealed'][1])
|
| 338 |
+
no_struckthrough = ansi.ANSI_ESCAPE_CODE.format(code=ansi.MODIFIERS['struckthrough'][1])
|
| 339 |
+
|
| 340 |
+
def __init__(self, colormode=None, colorpalette=None):
|
| 341 |
+
if colormode is None: # try to auto-detect color mode
|
| 342 |
+
colormode = terminal.detect_color_support(env=os.environ)
|
| 343 |
+
|
| 344 |
+
if colorpalette is None: # load default color palette
|
| 345 |
+
colorpalette = COLOR_PALETTE
|
| 346 |
+
elif isinstance(colorpalette, str): # we assume it's a path to a color file
|
| 347 |
+
colorpalette = colors.parse_colors(colorpalette)
|
| 348 |
+
|
| 349 |
+
#: Holds the color mode to use for this Colorful object.
|
| 350 |
+
self.colormode = colormode
|
| 351 |
+
|
| 352 |
+
#: Holds the color palette to use for this Colorful object.
|
| 353 |
+
self._colorpalette = None
|
| 354 |
+
self.colorpalette = colorpalette
|
| 355 |
+
|
| 356 |
+
@property
|
| 357 |
+
def colorpalette(self):
|
| 358 |
+
"""
|
| 359 |
+
Get the current used color palette
|
| 360 |
+
"""
|
| 361 |
+
return self._colorpalette
|
| 362 |
+
|
| 363 |
+
@colorpalette.setter
|
| 364 |
+
def colorpalette(self, colorpalette):
|
| 365 |
+
"""
|
| 366 |
+
Set the colorpalette which should be used
|
| 367 |
+
"""
|
| 368 |
+
if isinstance(colorpalette, str): # we assume it's a path to a color file
|
| 369 |
+
colorpalette = colors.parse_colors(colorpalette)
|
| 370 |
+
|
| 371 |
+
self._colorpalette = colors.sanitize_color_palette(colorpalette)
|
| 372 |
+
|
| 373 |
+
def setup(self, colormode=None, colorpalette=None, extend_colors=False):
|
| 374 |
+
"""
|
| 375 |
+
Setup this colorful object by setting a ``colormode`` and
|
| 376 |
+
the ``colorpalette`. The ``extend_colors`` flag is used
|
| 377 |
+
to extend the currently active color palette instead of
|
| 378 |
+
replacing it.
|
| 379 |
+
|
| 380 |
+
:param int colormode: the color mode to use. See ``translate_rgb_to_ansi_code``
|
| 381 |
+
:parma dict colorpalette: the colorpalette to use. This ``dict`` should map
|
| 382 |
+
color names to it's corresponding RGB value
|
| 383 |
+
:param bool extend_colors: extend the active color palette instead of replacing it
|
| 384 |
+
"""
|
| 385 |
+
if colormode is not None:
|
| 386 |
+
self.colormode = colormode
|
| 387 |
+
|
| 388 |
+
if colorpalette:
|
| 389 |
+
if extend_colors:
|
| 390 |
+
self.update_palette(colorpalette)
|
| 391 |
+
else:
|
| 392 |
+
self.colorpalette = colorpalette
|
| 393 |
+
|
| 394 |
+
def disable(self):
|
| 395 |
+
"""
|
| 396 |
+
Disable all colors and styles
|
| 397 |
+
"""
|
| 398 |
+
self.colormode = terminal.NO_COLORS
|
| 399 |
+
|
| 400 |
+
def use_8_ansi_colors(self):
|
| 401 |
+
"""
|
| 402 |
+
Use 8 ANSI colors for this colorful object
|
| 403 |
+
"""
|
| 404 |
+
self.colormode = terminal.ANSI_8_COLORS
|
| 405 |
+
|
| 406 |
+
def use_16_ansi_colors(self):
|
| 407 |
+
"""
|
| 408 |
+
Use 16 ANSI colors for this colorful object
|
| 409 |
+
"""
|
| 410 |
+
self.colormode = terminal.ANSI_16_COLORS
|
| 411 |
+
|
| 412 |
+
def use_256_ansi_colors(self):
|
| 413 |
+
"""
|
| 414 |
+
Use 256 ANSI colors for this colorful object
|
| 415 |
+
"""
|
| 416 |
+
self.colormode = terminal.ANSI_256_COLORS
|
| 417 |
+
|
| 418 |
+
def use_true_colors(self):
|
| 419 |
+
"""
|
| 420 |
+
Use true colors for this colorful object
|
| 421 |
+
"""
|
| 422 |
+
self.colormode = terminal.TRUE_COLORS
|
| 423 |
+
|
| 424 |
+
def use_palette(self, colorpalette):
|
| 425 |
+
"""
|
| 426 |
+
Use the given color palette
|
| 427 |
+
"""
|
| 428 |
+
self.colorpalette = colorpalette
|
| 429 |
+
|
| 430 |
+
def update_palette(self, colorpalette):
|
| 431 |
+
"""
|
| 432 |
+
Update the currently active color palette
|
| 433 |
+
with the given color palette
|
| 434 |
+
"""
|
| 435 |
+
self.colorpalette.update(colors.sanitize_color_palette(colorpalette))
|
| 436 |
+
|
| 437 |
+
def use_style(self, style_name):
|
| 438 |
+
"""
|
| 439 |
+
Use a predefined style as color palette
|
| 440 |
+
|
| 441 |
+
:param str style_name: the name of the style
|
| 442 |
+
"""
|
| 443 |
+
try:
|
| 444 |
+
style = getattr(styles, style_name.upper())
|
| 445 |
+
except AttributeError:
|
| 446 |
+
raise ColorfulError('the style "{0}" is undefined'.format(
|
| 447 |
+
style_name))
|
| 448 |
+
else:
|
| 449 |
+
self.colorpalette = style
|
| 450 |
+
|
| 451 |
+
def format(self, string, *args, **kwargs):
|
| 452 |
+
"""
|
| 453 |
+
Format the given string with the given ``args`` and ``kwargs``.
|
| 454 |
+
The string can contain references to ``c`` which is provided by
|
| 455 |
+
this colorful object.
|
| 456 |
+
|
| 457 |
+
:param str string: the string to format
|
| 458 |
+
"""
|
| 459 |
+
return string.format(c=self, *args, **kwargs)
|
| 460 |
+
|
| 461 |
+
def str(self, string):
|
| 462 |
+
"""
|
| 463 |
+
Create a new ColorfulString instance of the given
|
| 464 |
+
unstyled string.
|
| 465 |
+
|
| 466 |
+
This method should be used to create a ColorfulString
|
| 467 |
+
which is actually not styled yet but can safely be concatinated
|
| 468 |
+
with other ColorfulStrings like:
|
| 469 |
+
|
| 470 |
+
>>> s = colorful.str('Hello ')
|
| 471 |
+
>>> s =+ colorful.black('World')
|
| 472 |
+
>>> str(s)
|
| 473 |
+
'Hello \033[30mWorld\033[39m'
|
| 474 |
+
|
| 475 |
+
:param str string: the string to use for the ColorfulString
|
| 476 |
+
"""
|
| 477 |
+
return ColorfulString(string, string, self)
|
| 478 |
+
|
| 479 |
+
def print(self, *objects, sep=' ', end='\n', file=None, flush=False):
|
| 480 |
+
"""
|
| 481 |
+
Print the given objects to the given file stream.
|
| 482 |
+
See https://docs.python.org/3/library/functions.html#print
|
| 483 |
+
|
| 484 |
+
The only difference to the ``print()`` built-in is that
|
| 485 |
+
``Colorful.print()`` formats the string with ``c=self``.
|
| 486 |
+
With that stylings are possible
|
| 487 |
+
|
| 488 |
+
:param str sep: the seperater between the objects
|
| 489 |
+
:param str end: the ending delimiter after all objects
|
| 490 |
+
:param file: the file stream to write to
|
| 491 |
+
:param bool flush: if the stream should be flushed
|
| 492 |
+
"""
|
| 493 |
+
styled_objects = [self.format(o) for o in objects]
|
| 494 |
+
print(*styled_objects, sep=sep, end=end, file=file, flush=flush)
|
| 495 |
+
|
| 496 |
+
class ColorfulStyle(object):
|
| 497 |
+
"""
|
| 498 |
+
Represents a colorful style
|
| 499 |
+
"""
|
| 500 |
+
def __init__(self, style, colormode, colorful_ctx):
|
| 501 |
+
self.style = style
|
| 502 |
+
self.colormode = colormode
|
| 503 |
+
self.colorful_ctx = colorful_ctx
|
| 504 |
+
|
| 505 |
+
def evaluate(self, string, nested=False):
|
| 506 |
+
"""
|
| 507 |
+
Evaluate the style on the given string.
|
| 508 |
+
|
| 509 |
+
:parma str string: the string to style
|
| 510 |
+
:param bool nested: if the string is part of another styled string
|
| 511 |
+
(=> nested in another style)
|
| 512 |
+
"""
|
| 513 |
+
return ColorfulString(
|
| 514 |
+
string,
|
| 515 |
+
style_string(string, self.style, self.colormode, nested),
|
| 516 |
+
self.colorful_ctx)
|
| 517 |
+
|
| 518 |
+
def __str__(self):
|
| 519 |
+
return self.style[0]
|
| 520 |
+
|
| 521 |
+
def __and__(self, other):
|
| 522 |
+
new_style = (
|
| 523 |
+
self.style[0] + other.style[0],
|
| 524 |
+
self.style[1] + other.style[1]
|
| 525 |
+
)
|
| 526 |
+
return Colorful.ColorfulStyle(new_style, self.colormode, self.colorful_ctx)
|
| 527 |
+
|
| 528 |
+
def __call__(self, string, nested=False):
|
| 529 |
+
return self.evaluate(string, nested)
|
| 530 |
+
|
| 531 |
+
def __or__(self, other):
|
| 532 |
+
return self.evaluate(other)
|
| 533 |
+
|
| 534 |
+
def __eq__(self, other):
|
| 535 |
+
if not isinstance(other, Colorful.ColorfulStyle):
|
| 536 |
+
return False
|
| 537 |
+
|
| 538 |
+
return (
|
| 539 |
+
self.style == other.style and
|
| 540 |
+
self.colormode == other.colormode and
|
| 541 |
+
self.colorful_ctx == other.colorful_ctx
|
| 542 |
+
)
|
| 543 |
+
|
| 544 |
+
def __hash__(self):
|
| 545 |
+
return hash((self.style, self.colormode, self.colorful_ctx))
|
| 546 |
+
|
| 547 |
+
def __getattr__(self, name):
|
| 548 |
+
# translate the given name into an ANSI escape code sequence
|
| 549 |
+
style = translate_style(name, self.colormode, self.colorpalette)
|
| 550 |
+
style_wrapper = self.ColorfulStyle(style, self.colormode, self)
|
| 551 |
+
return style_wrapper
|
.venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/INSTALLER
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
.venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/METADATA
ADDED
|
@@ -0,0 +1,563 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Metadata-Version: 2.1
|
| 2 |
+
Name: fastapi
|
| 3 |
+
Version: 0.115.8
|
| 4 |
+
Summary: FastAPI framework, high performance, easy to learn, fast to code, ready for production
|
| 5 |
+
Author-Email: =?utf-8?q?Sebasti=C3=A1n_Ram=C3=ADrez?= <tiangolo@gmail.com>
|
| 6 |
+
Classifier: Intended Audience :: Information Technology
|
| 7 |
+
Classifier: Intended Audience :: System Administrators
|
| 8 |
+
Classifier: Operating System :: OS Independent
|
| 9 |
+
Classifier: Programming Language :: Python :: 3
|
| 10 |
+
Classifier: Programming Language :: Python
|
| 11 |
+
Classifier: Topic :: Internet
|
| 12 |
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
| 13 |
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
| 14 |
+
Classifier: Topic :: Software Development :: Libraries
|
| 15 |
+
Classifier: Topic :: Software Development
|
| 16 |
+
Classifier: Typing :: Typed
|
| 17 |
+
Classifier: Development Status :: 4 - Beta
|
| 18 |
+
Classifier: Environment :: Web Environment
|
| 19 |
+
Classifier: Framework :: AsyncIO
|
| 20 |
+
Classifier: Framework :: FastAPI
|
| 21 |
+
Classifier: Framework :: Pydantic
|
| 22 |
+
Classifier: Framework :: Pydantic :: 1
|
| 23 |
+
Classifier: Framework :: Pydantic :: 2
|
| 24 |
+
Classifier: Intended Audience :: Developers
|
| 25 |
+
Classifier: License :: OSI Approved :: MIT License
|
| 26 |
+
Classifier: Programming Language :: Python :: 3 :: Only
|
| 27 |
+
Classifier: Programming Language :: Python :: 3.8
|
| 28 |
+
Classifier: Programming Language :: Python :: 3.9
|
| 29 |
+
Classifier: Programming Language :: Python :: 3.10
|
| 30 |
+
Classifier: Programming Language :: Python :: 3.11
|
| 31 |
+
Classifier: Programming Language :: Python :: 3.12
|
| 32 |
+
Classifier: Programming Language :: Python :: 3.13
|
| 33 |
+
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
|
| 34 |
+
Classifier: Topic :: Internet :: WWW/HTTP
|
| 35 |
+
Project-URL: Homepage, https://github.com/fastapi/fastapi
|
| 36 |
+
Project-URL: Documentation, https://fastapi.tiangolo.com/
|
| 37 |
+
Project-URL: Repository, https://github.com/fastapi/fastapi
|
| 38 |
+
Project-URL: Issues, https://github.com/fastapi/fastapi/issues
|
| 39 |
+
Project-URL: Changelog, https://fastapi.tiangolo.com/release-notes/
|
| 40 |
+
Requires-Python: >=3.8
|
| 41 |
+
Requires-Dist: starlette<0.46.0,>=0.40.0
|
| 42 |
+
Requires-Dist: pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4
|
| 43 |
+
Requires-Dist: typing-extensions>=4.8.0
|
| 44 |
+
Provides-Extra: standard
|
| 45 |
+
Requires-Dist: fastapi-cli[standard]>=0.0.5; extra == "standard"
|
| 46 |
+
Requires-Dist: httpx>=0.23.0; extra == "standard"
|
| 47 |
+
Requires-Dist: jinja2>=3.1.5; extra == "standard"
|
| 48 |
+
Requires-Dist: python-multipart>=0.0.18; extra == "standard"
|
| 49 |
+
Requires-Dist: email-validator>=2.0.0; extra == "standard"
|
| 50 |
+
Requires-Dist: uvicorn[standard]>=0.12.0; extra == "standard"
|
| 51 |
+
Provides-Extra: all
|
| 52 |
+
Requires-Dist: fastapi-cli[standard]>=0.0.5; extra == "all"
|
| 53 |
+
Requires-Dist: httpx>=0.23.0; extra == "all"
|
| 54 |
+
Requires-Dist: jinja2>=3.1.5; extra == "all"
|
| 55 |
+
Requires-Dist: python-multipart>=0.0.18; extra == "all"
|
| 56 |
+
Requires-Dist: itsdangerous>=1.1.0; extra == "all"
|
| 57 |
+
Requires-Dist: pyyaml>=5.3.1; extra == "all"
|
| 58 |
+
Requires-Dist: ujson!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,>=4.0.1; extra == "all"
|
| 59 |
+
Requires-Dist: orjson>=3.2.1; extra == "all"
|
| 60 |
+
Requires-Dist: email-validator>=2.0.0; extra == "all"
|
| 61 |
+
Requires-Dist: uvicorn[standard]>=0.12.0; extra == "all"
|
| 62 |
+
Requires-Dist: pydantic-settings>=2.0.0; extra == "all"
|
| 63 |
+
Requires-Dist: pydantic-extra-types>=2.0.0; extra == "all"
|
| 64 |
+
Description-Content-Type: text/markdown
|
| 65 |
+
|
| 66 |
+
<p align="center">
|
| 67 |
+
<a href="https://fastapi.tiangolo.com"><img src="https://fastapi.tiangolo.com/img/logo-margin/logo-teal.png" alt="FastAPI"></a>
|
| 68 |
+
</p>
|
| 69 |
+
<p align="center">
|
| 70 |
+
<em>FastAPI framework, high performance, easy to learn, fast to code, ready for production</em>
|
| 71 |
+
</p>
|
| 72 |
+
<p align="center">
|
| 73 |
+
<a href="https://github.com/fastapi/fastapi/actions?query=workflow%3ATest+event%3Apush+branch%3Amaster" target="_blank">
|
| 74 |
+
<img src="https://github.com/fastapi/fastapi/workflows/Test/badge.svg?event=push&branch=master" alt="Test">
|
| 75 |
+
</a>
|
| 76 |
+
<a href="https://coverage-badge.samuelcolvin.workers.dev/redirect/fastapi/fastapi" target="_blank">
|
| 77 |
+
<img src="https://coverage-badge.samuelcolvin.workers.dev/fastapi/fastapi.svg" alt="Coverage">
|
| 78 |
+
</a>
|
| 79 |
+
<a href="https://pypi.org/project/fastapi" target="_blank">
|
| 80 |
+
<img src="https://img.shields.io/pypi/v/fastapi?color=%2334D058&label=pypi%20package" alt="Package version">
|
| 81 |
+
</a>
|
| 82 |
+
<a href="https://pypi.org/project/fastapi" target="_blank">
|
| 83 |
+
<img src="https://img.shields.io/pypi/pyversions/fastapi.svg?color=%2334D058" alt="Supported Python versions">
|
| 84 |
+
</a>
|
| 85 |
+
</p>
|
| 86 |
+
|
| 87 |
+
---
|
| 88 |
+
|
| 89 |
+
**Documentation**: <a href="https://fastapi.tiangolo.com" target="_blank">https://fastapi.tiangolo.com</a>
|
| 90 |
+
|
| 91 |
+
**Source Code**: <a href="https://github.com/fastapi/fastapi" target="_blank">https://github.com/fastapi/fastapi</a>
|
| 92 |
+
|
| 93 |
+
---
|
| 94 |
+
|
| 95 |
+
FastAPI is a modern, fast (high-performance), web framework for building APIs with Python based on standard Python type hints.
|
| 96 |
+
|
| 97 |
+
The key features are:
|
| 98 |
+
|
| 99 |
+
* **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic). [One of the fastest Python frameworks available](#performance).
|
| 100 |
+
* **Fast to code**: Increase the speed to develop features by about 200% to 300%. *
|
| 101 |
+
* **Fewer bugs**: Reduce about 40% of human (developer) induced errors. *
|
| 102 |
+
* **Intuitive**: Great editor support. <abbr title="also known as auto-complete, autocompletion, IntelliSense">Completion</abbr> everywhere. Less time debugging.
|
| 103 |
+
* **Easy**: Designed to be easy to use and learn. Less time reading docs.
|
| 104 |
+
* **Short**: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs.
|
| 105 |
+
* **Robust**: Get production-ready code. With automatic interactive documentation.
|
| 106 |
+
* **Standards-based**: Based on (and fully compatible with) the open standards for APIs: <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a> (previously known as Swagger) and <a href="https://json-schema.org/" class="external-link" target="_blank">JSON Schema</a>.
|
| 107 |
+
|
| 108 |
+
<small>* estimation based on tests on an internal development team, building production applications.</small>
|
| 109 |
+
|
| 110 |
+
## Sponsors
|
| 111 |
+
|
| 112 |
+
<!-- sponsors -->
|
| 113 |
+
|
| 114 |
+
<a href="https://blockbee.io?ref=fastapi" target="_blank" title="BlockBee Cryptocurrency Payment Gateway"><img src="https://fastapi.tiangolo.com/img/sponsors/blockbee.png"></a>
|
| 115 |
+
<a href="https://platform.sh/try-it-now/?utm_source=fastapi-signup&utm_medium=banner&utm_campaign=FastAPI-signup-June-2023" target="_blank" title="Build, run and scale your apps on a modern, reliable, and secure PaaS."><img src="https://fastapi.tiangolo.com/img/sponsors/platform-sh.png"></a>
|
| 116 |
+
<a href="https://www.porter.run" target="_blank" title="Deploy FastAPI on AWS with a few clicks"><img src="https://fastapi.tiangolo.com/img/sponsors/porter.png"></a>
|
| 117 |
+
<a href="https://bump.sh/fastapi?utm_source=fastapi&utm_medium=referral&utm_campaign=sponsor" target="_blank" title="Automate FastAPI documentation generation with Bump.sh"><img src="https://fastapi.tiangolo.com/img/sponsors/bump-sh.svg"></a>
|
| 118 |
+
<a href="https://github.com/scalar/scalar/?utm_source=fastapi&utm_medium=website&utm_campaign=main-badge" target="_blank" title="Scalar: Beautiful Open-Source API References from Swagger/OpenAPI files"><img src="https://fastapi.tiangolo.com/img/sponsors/scalar.svg"></a>
|
| 119 |
+
<a href="https://www.propelauth.com/?utm_source=fastapi&utm_campaign=1223&utm_medium=mainbadge" target="_blank" title="Auth, user management and more for your B2B product"><img src="https://fastapi.tiangolo.com/img/sponsors/propelauth.png"></a>
|
| 120 |
+
<a href="https://www.withcoherence.com/?utm_medium=advertising&utm_source=fastapi&utm_campaign=website" target="_blank" title="Coherence"><img src="https://fastapi.tiangolo.com/img/sponsors/coherence.png"></a>
|
| 121 |
+
<a href="https://www.mongodb.com/developer/languages/python/python-quickstart-fastapi/?utm_campaign=fastapi_framework&utm_source=fastapi_sponsorship&utm_medium=web_referral" target="_blank" title="Simplify Full Stack Development with FastAPI & MongoDB"><img src="https://fastapi.tiangolo.com/img/sponsors/mongodb.png"></a>
|
| 122 |
+
<a href="https://zuplo.link/fastapi-gh" target="_blank" title="Zuplo: Scale, Protect, Document, and Monetize your FastAPI"><img src="https://fastapi.tiangolo.com/img/sponsors/zuplo.png"></a>
|
| 123 |
+
<a href="https://liblab.com?utm_source=fastapi" target="_blank" title="liblab - Generate SDKs from FastAPI"><img src="https://fastapi.tiangolo.com/img/sponsors/liblab.png"></a>
|
| 124 |
+
<a href="https://docs.render.com/deploy-fastapi?utm_source=deploydoc&utm_medium=referral&utm_campaign=fastapi" target="_blank" title="Deploy & scale any full-stack web app on Render. Focus on building apps, not infra."><img src="https://fastapi.tiangolo.com/img/sponsors/render.svg"></a>
|
| 125 |
+
<a href="https://github.com/deepset-ai/haystack/" target="_blank" title="Build powerful search from composable, open source building blocks"><img src="https://fastapi.tiangolo.com/img/sponsors/haystack-fastapi.svg"></a>
|
| 126 |
+
<a href="https://databento.com/" target="_blank" title="Pay as you go for market data"><img src="https://fastapi.tiangolo.com/img/sponsors/databento.svg"></a>
|
| 127 |
+
<a href="https://speakeasy.com?utm_source=fastapi+repo&utm_medium=github+sponsorship" target="_blank" title="SDKs for your API | Speakeasy"><img src="https://fastapi.tiangolo.com/img/sponsors/speakeasy.png"></a>
|
| 128 |
+
<a href="https://www.svix.com/" target="_blank" title="Svix - Webhooks as a service"><img src="https://fastapi.tiangolo.com/img/sponsors/svix.svg"></a>
|
| 129 |
+
<a href="https://www.stainlessapi.com/?utm_source=fastapi&utm_medium=referral" target="_blank" title="Stainless | Generate best-in-class SDKs"><img src="https://fastapi.tiangolo.com/img/sponsors/stainless.png"></a>
|
| 130 |
+
|
| 131 |
+
<!-- /sponsors -->
|
| 132 |
+
|
| 133 |
+
<a href="https://fastapi.tiangolo.com/fastapi-people/#sponsors" class="external-link" target="_blank">Other sponsors</a>
|
| 134 |
+
|
| 135 |
+
## Opinions
|
| 136 |
+
|
| 137 |
+
"_[...] I'm using **FastAPI** a ton these days. [...] I'm actually planning to use it for all of my team's **ML services at Microsoft**. Some of them are getting integrated into the core **Windows** product and some **Office** products._"
|
| 138 |
+
|
| 139 |
+
<div style="text-align: right; margin-right: 10%;">Kabir Khan - <strong>Microsoft</strong> <a href="https://github.com/fastapi/fastapi/pull/26" target="_blank"><small>(ref)</small></a></div>
|
| 140 |
+
|
| 141 |
+
---
|
| 142 |
+
|
| 143 |
+
"_We adopted the **FastAPI** library to spawn a **REST** server that can be queried to obtain **predictions**. [for Ludwig]_"
|
| 144 |
+
|
| 145 |
+
<div style="text-align: right; margin-right: 10%;">Piero Molino, Yaroslav Dudin, and Sai Sumanth Miryala - <strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/" target="_blank"><small>(ref)</small></a></div>
|
| 146 |
+
|
| 147 |
+
---
|
| 148 |
+
|
| 149 |
+
"_**Netflix** is pleased to announce the open-source release of our **crisis management** orchestration framework: **Dispatch**! [built with **FastAPI**]_"
|
| 150 |
+
|
| 151 |
+
<div style="text-align: right; margin-right: 10%;">Kevin Glisson, Marc Vilanova, Forest Monsen - <strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072" target="_blank"><small>(ref)</small></a></div>
|
| 152 |
+
|
| 153 |
+
---
|
| 154 |
+
|
| 155 |
+
"_I’m over the moon excited about **FastAPI**. It’s so fun!_"
|
| 156 |
+
|
| 157 |
+
<div style="text-align: right; margin-right: 10%;">Brian Okken - <strong><a href="https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855" target="_blank">Python Bytes</a> podcast host</strong> <a href="https://twitter.com/brianokken/status/1112220079972728832" target="_blank"><small>(ref)</small></a></div>
|
| 158 |
+
|
| 159 |
+
---
|
| 160 |
+
|
| 161 |
+
"_Honestly, what you've built looks super solid and polished. In many ways, it's what I wanted **Hug** to be - it's really inspiring to see someone build that._"
|
| 162 |
+
|
| 163 |
+
<div style="text-align: right; margin-right: 10%;">Timothy Crosley - <strong><a href="https://github.com/hugapi/hug" target="_blank">Hug</a> creator</strong> <a href="https://news.ycombinator.com/item?id=19455465" target="_blank"><small>(ref)</small></a></div>
|
| 164 |
+
|
| 165 |
+
---
|
| 166 |
+
|
| 167 |
+
"_If you're looking to learn one **modern framework** for building REST APIs, check out **FastAPI** [...] It's fast, easy to use and easy to learn [...]_"
|
| 168 |
+
|
| 169 |
+
"_We've switched over to **FastAPI** for our **APIs** [...] I think you'll like it [...]_"
|
| 170 |
+
|
| 171 |
+
<div style="text-align: right; margin-right: 10%;">Ines Montani - Matthew Honnibal - <strong><a href="https://explosion.ai" target="_blank">Explosion AI</a> founders - <a href="https://spacy.io" target="_blank">spaCy</a> creators</strong> <a href="https://twitter.com/_inesmontani/status/1144173225322143744" target="_blank"><small>(ref)</small></a> - <a href="https://twitter.com/honnibal/status/1144031421859655680" target="_blank"><small>(ref)</small></a></div>
|
| 172 |
+
|
| 173 |
+
---
|
| 174 |
+
|
| 175 |
+
"_If anyone is looking to build a production Python API, I would highly recommend **FastAPI**. It is **beautifully designed**, **simple to use** and **highly scalable**, it has become a **key component** in our API first development strategy and is driving many automations and services such as our Virtual TAC Engineer._"
|
| 176 |
+
|
| 177 |
+
<div style="text-align: right; margin-right: 10%;">Deon Pillsbury - <strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/" target="_blank"><small>(ref)</small></a></div>
|
| 178 |
+
|
| 179 |
+
---
|
| 180 |
+
|
| 181 |
+
## **Typer**, the FastAPI of CLIs
|
| 182 |
+
|
| 183 |
+
<a href="https://typer.tiangolo.com" target="_blank"><img src="https://typer.tiangolo.com/img/logo-margin/logo-margin-vector.svg" style="width: 20%;"></a>
|
| 184 |
+
|
| 185 |
+
If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be used in the terminal instead of a web API, check out <a href="https://typer.tiangolo.com/" class="external-link" target="_blank">**Typer**</a>.
|
| 186 |
+
|
| 187 |
+
**Typer** is FastAPI's little sibling. And it's intended to be the **FastAPI of CLIs**. ⌨️ 🚀
|
| 188 |
+
|
| 189 |
+
## Requirements
|
| 190 |
+
|
| 191 |
+
FastAPI stands on the shoulders of giants:
|
| 192 |
+
|
| 193 |
+
* <a href="https://www.starlette.io/" class="external-link" target="_blank">Starlette</a> for the web parts.
|
| 194 |
+
* <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> for the data parts.
|
| 195 |
+
|
| 196 |
+
## Installation
|
| 197 |
+
|
| 198 |
+
Create and activate a <a href="https://fastapi.tiangolo.com/virtual-environments/" class="external-link" target="_blank">virtual environment</a> and then install FastAPI:
|
| 199 |
+
|
| 200 |
+
<div class="termy">
|
| 201 |
+
|
| 202 |
+
```console
|
| 203 |
+
$ pip install "fastapi[standard]"
|
| 204 |
+
|
| 205 |
+
---> 100%
|
| 206 |
+
```
|
| 207 |
+
|
| 208 |
+
</div>
|
| 209 |
+
|
| 210 |
+
**Note**: Make sure you put `"fastapi[standard]"` in quotes to ensure it works in all terminals.
|
| 211 |
+
|
| 212 |
+
## Example
|
| 213 |
+
|
| 214 |
+
### Create it
|
| 215 |
+
|
| 216 |
+
* Create a file `main.py` with:
|
| 217 |
+
|
| 218 |
+
```Python
|
| 219 |
+
from typing import Union
|
| 220 |
+
|
| 221 |
+
from fastapi import FastAPI
|
| 222 |
+
|
| 223 |
+
app = FastAPI()
|
| 224 |
+
|
| 225 |
+
|
| 226 |
+
@app.get("/")
|
| 227 |
+
def read_root():
|
| 228 |
+
return {"Hello": "World"}
|
| 229 |
+
|
| 230 |
+
|
| 231 |
+
@app.get("/items/{item_id}")
|
| 232 |
+
def read_item(item_id: int, q: Union[str, None] = None):
|
| 233 |
+
return {"item_id": item_id, "q": q}
|
| 234 |
+
```
|
| 235 |
+
|
| 236 |
+
<details markdown="1">
|
| 237 |
+
<summary>Or use <code>async def</code>...</summary>
|
| 238 |
+
|
| 239 |
+
If your code uses `async` / `await`, use `async def`:
|
| 240 |
+
|
| 241 |
+
```Python hl_lines="9 14"
|
| 242 |
+
from typing import Union
|
| 243 |
+
|
| 244 |
+
from fastapi import FastAPI
|
| 245 |
+
|
| 246 |
+
app = FastAPI()
|
| 247 |
+
|
| 248 |
+
|
| 249 |
+
@app.get("/")
|
| 250 |
+
async def read_root():
|
| 251 |
+
return {"Hello": "World"}
|
| 252 |
+
|
| 253 |
+
|
| 254 |
+
@app.get("/items/{item_id}")
|
| 255 |
+
async def read_item(item_id: int, q: Union[str, None] = None):
|
| 256 |
+
return {"item_id": item_id, "q": q}
|
| 257 |
+
```
|
| 258 |
+
|
| 259 |
+
**Note**:
|
| 260 |
+
|
| 261 |
+
If you don't know, check the _"In a hurry?"_ section about <a href="https://fastapi.tiangolo.com/async/#in-a-hurry" target="_blank">`async` and `await` in the docs</a>.
|
| 262 |
+
|
| 263 |
+
</details>
|
| 264 |
+
|
| 265 |
+
### Run it
|
| 266 |
+
|
| 267 |
+
Run the server with:
|
| 268 |
+
|
| 269 |
+
<div class="termy">
|
| 270 |
+
|
| 271 |
+
```console
|
| 272 |
+
$ fastapi dev main.py
|
| 273 |
+
|
| 274 |
+
╭────────── FastAPI CLI - Development mode ───────────╮
|
| 275 |
+
│ │
|
| 276 |
+
│ Serving at: http://127.0.0.1:8000 │
|
| 277 |
+
│ │
|
| 278 |
+
│ API docs: http://127.0.0.1:8000/docs │
|
| 279 |
+
│ │
|
| 280 |
+
│ Running in development mode, for production use: │
|
| 281 |
+
│ │
|
| 282 |
+
│ fastapi run │
|
| 283 |
+
│ │
|
| 284 |
+
╰─────────────────────────────────────────────────────╯
|
| 285 |
+
|
| 286 |
+
INFO: Will watch for changes in these directories: ['/home/user/code/awesomeapp']
|
| 287 |
+
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
|
| 288 |
+
INFO: Started reloader process [2248755] using WatchFiles
|
| 289 |
+
INFO: Started server process [2248757]
|
| 290 |
+
INFO: Waiting for application startup.
|
| 291 |
+
INFO: Application startup complete.
|
| 292 |
+
```
|
| 293 |
+
|
| 294 |
+
</div>
|
| 295 |
+
|
| 296 |
+
<details markdown="1">
|
| 297 |
+
<summary>About the command <code>fastapi dev main.py</code>...</summary>
|
| 298 |
+
|
| 299 |
+
The command `fastapi dev` reads your `main.py` file, detects the **FastAPI** app in it, and starts a server using <a href="https://www.uvicorn.org" class="external-link" target="_blank">Uvicorn</a>.
|
| 300 |
+
|
| 301 |
+
By default, `fastapi dev` will start with auto-reload enabled for local development.
|
| 302 |
+
|
| 303 |
+
You can read more about it in the <a href="https://fastapi.tiangolo.com/fastapi-cli/" target="_blank">FastAPI CLI docs</a>.
|
| 304 |
+
|
| 305 |
+
</details>
|
| 306 |
+
|
| 307 |
+
### Check it
|
| 308 |
+
|
| 309 |
+
Open your browser at <a href="http://127.0.0.1:8000/items/5?q=somequery" class="external-link" target="_blank">http://127.0.0.1:8000/items/5?q=somequery</a>.
|
| 310 |
+
|
| 311 |
+
You will see the JSON response as:
|
| 312 |
+
|
| 313 |
+
```JSON
|
| 314 |
+
{"item_id": 5, "q": "somequery"}
|
| 315 |
+
```
|
| 316 |
+
|
| 317 |
+
You already created an API that:
|
| 318 |
+
|
| 319 |
+
* Receives HTTP requests in the _paths_ `/` and `/items/{item_id}`.
|
| 320 |
+
* Both _paths_ take `GET` <em>operations</em> (also known as HTTP _methods_).
|
| 321 |
+
* The _path_ `/items/{item_id}` has a _path parameter_ `item_id` that should be an `int`.
|
| 322 |
+
* The _path_ `/items/{item_id}` has an optional `str` _query parameter_ `q`.
|
| 323 |
+
|
| 324 |
+
### Interactive API docs
|
| 325 |
+
|
| 326 |
+
Now go to <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>.
|
| 327 |
+
|
| 328 |
+
You will see the automatic interactive API documentation (provided by <a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank">Swagger UI</a>):
|
| 329 |
+
|
| 330 |
+

|
| 331 |
+
|
| 332 |
+
### Alternative API docs
|
| 333 |
+
|
| 334 |
+
And now, go to <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>.
|
| 335 |
+
|
| 336 |
+
You will see the alternative automatic documentation (provided by <a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank">ReDoc</a>):
|
| 337 |
+
|
| 338 |
+

|
| 339 |
+
|
| 340 |
+
## Example upgrade
|
| 341 |
+
|
| 342 |
+
Now modify the file `main.py` to receive a body from a `PUT` request.
|
| 343 |
+
|
| 344 |
+
Declare the body using standard Python types, thanks to Pydantic.
|
| 345 |
+
|
| 346 |
+
```Python hl_lines="4 9-12 25-27"
|
| 347 |
+
from typing import Union
|
| 348 |
+
|
| 349 |
+
from fastapi import FastAPI
|
| 350 |
+
from pydantic import BaseModel
|
| 351 |
+
|
| 352 |
+
app = FastAPI()
|
| 353 |
+
|
| 354 |
+
|
| 355 |
+
class Item(BaseModel):
|
| 356 |
+
name: str
|
| 357 |
+
price: float
|
| 358 |
+
is_offer: Union[bool, None] = None
|
| 359 |
+
|
| 360 |
+
|
| 361 |
+
@app.get("/")
|
| 362 |
+
def read_root():
|
| 363 |
+
return {"Hello": "World"}
|
| 364 |
+
|
| 365 |
+
|
| 366 |
+
@app.get("/items/{item_id}")
|
| 367 |
+
def read_item(item_id: int, q: Union[str, None] = None):
|
| 368 |
+
return {"item_id": item_id, "q": q}
|
| 369 |
+
|
| 370 |
+
|
| 371 |
+
@app.put("/items/{item_id}")
|
| 372 |
+
def update_item(item_id: int, item: Item):
|
| 373 |
+
return {"item_name": item.name, "item_id": item_id}
|
| 374 |
+
```
|
| 375 |
+
|
| 376 |
+
The `fastapi dev` server should reload automatically.
|
| 377 |
+
|
| 378 |
+
### Interactive API docs upgrade
|
| 379 |
+
|
| 380 |
+
Now go to <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>.
|
| 381 |
+
|
| 382 |
+
* The interactive API documentation will be automatically updated, including the new body:
|
| 383 |
+
|
| 384 |
+

|
| 385 |
+
|
| 386 |
+
* Click on the button "Try it out", it allows you to fill the parameters and directly interact with the API:
|
| 387 |
+
|
| 388 |
+

|
| 389 |
+
|
| 390 |
+
* Then click on the "Execute" button, the user interface will communicate with your API, send the parameters, get the results and show them on the screen:
|
| 391 |
+
|
| 392 |
+

|
| 393 |
+
|
| 394 |
+
### Alternative API docs upgrade
|
| 395 |
+
|
| 396 |
+
And now, go to <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>.
|
| 397 |
+
|
| 398 |
+
* The alternative documentation will also reflect the new query parameter and body:
|
| 399 |
+
|
| 400 |
+

|
| 401 |
+
|
| 402 |
+
### Recap
|
| 403 |
+
|
| 404 |
+
In summary, you declare **once** the types of parameters, body, etc. as function parameters.
|
| 405 |
+
|
| 406 |
+
You do that with standard modern Python types.
|
| 407 |
+
|
| 408 |
+
You don't have to learn a new syntax, the methods or classes of a specific library, etc.
|
| 409 |
+
|
| 410 |
+
Just standard **Python**.
|
| 411 |
+
|
| 412 |
+
For example, for an `int`:
|
| 413 |
+
|
| 414 |
+
```Python
|
| 415 |
+
item_id: int
|
| 416 |
+
```
|
| 417 |
+
|
| 418 |
+
or for a more complex `Item` model:
|
| 419 |
+
|
| 420 |
+
```Python
|
| 421 |
+
item: Item
|
| 422 |
+
```
|
| 423 |
+
|
| 424 |
+
...and with that single declaration you get:
|
| 425 |
+
|
| 426 |
+
* Editor support, including:
|
| 427 |
+
* Completion.
|
| 428 |
+
* Type checks.
|
| 429 |
+
* Validation of data:
|
| 430 |
+
* Automatic and clear errors when the data is invalid.
|
| 431 |
+
* Validation even for deeply nested JSON objects.
|
| 432 |
+
* <abbr title="also known as: serialization, parsing, marshalling">Conversion</abbr> of input data: coming from the network to Python data and types. Reading from:
|
| 433 |
+
* JSON.
|
| 434 |
+
* Path parameters.
|
| 435 |
+
* Query parameters.
|
| 436 |
+
* Cookies.
|
| 437 |
+
* Headers.
|
| 438 |
+
* Forms.
|
| 439 |
+
* Files.
|
| 440 |
+
* <abbr title="also known as: serialization, parsing, marshalling">Conversion</abbr> of output data: converting from Python data and types to network data (as JSON):
|
| 441 |
+
* Convert Python types (`str`, `int`, `float`, `bool`, `list`, etc).
|
| 442 |
+
* `datetime` objects.
|
| 443 |
+
* `UUID` objects.
|
| 444 |
+
* Database models.
|
| 445 |
+
* ...and many more.
|
| 446 |
+
* Automatic interactive API documentation, including 2 alternative user interfaces:
|
| 447 |
+
* Swagger UI.
|
| 448 |
+
* ReDoc.
|
| 449 |
+
|
| 450 |
+
---
|
| 451 |
+
|
| 452 |
+
Coming back to the previous code example, **FastAPI** will:
|
| 453 |
+
|
| 454 |
+
* Validate that there is an `item_id` in the path for `GET` and `PUT` requests.
|
| 455 |
+
* Validate that the `item_id` is of type `int` for `GET` and `PUT` requests.
|
| 456 |
+
* If it is not, the client will see a useful, clear error.
|
| 457 |
+
* Check if there is an optional query parameter named `q` (as in `http://127.0.0.1:8000/items/foo?q=somequery`) for `GET` requests.
|
| 458 |
+
* As the `q` parameter is declared with `= None`, it is optional.
|
| 459 |
+
* Without the `None` it would be required (as is the body in the case with `PUT`).
|
| 460 |
+
* For `PUT` requests to `/items/{item_id}`, read the body as JSON:
|
| 461 |
+
* Check that it has a required attribute `name` that should be a `str`.
|
| 462 |
+
* Check that it has a required attribute `price` that has to be a `float`.
|
| 463 |
+
* Check that it has an optional attribute `is_offer`, that should be a `bool`, if present.
|
| 464 |
+
* All this would also work for deeply nested JSON objects.
|
| 465 |
+
* Convert from and to JSON automatically.
|
| 466 |
+
* Document everything with OpenAPI, that can be used by:
|
| 467 |
+
* Interactive documentation systems.
|
| 468 |
+
* Automatic client code generation systems, for many languages.
|
| 469 |
+
* Provide 2 interactive documentation web interfaces directly.
|
| 470 |
+
|
| 471 |
+
---
|
| 472 |
+
|
| 473 |
+
We just scratched the surface, but you already get the idea of how it all works.
|
| 474 |
+
|
| 475 |
+
Try changing the line with:
|
| 476 |
+
|
| 477 |
+
```Python
|
| 478 |
+
return {"item_name": item.name, "item_id": item_id}
|
| 479 |
+
```
|
| 480 |
+
|
| 481 |
+
...from:
|
| 482 |
+
|
| 483 |
+
```Python
|
| 484 |
+
... "item_name": item.name ...
|
| 485 |
+
```
|
| 486 |
+
|
| 487 |
+
...to:
|
| 488 |
+
|
| 489 |
+
```Python
|
| 490 |
+
... "item_price": item.price ...
|
| 491 |
+
```
|
| 492 |
+
|
| 493 |
+
...and see how your editor will auto-complete the attributes and know their types:
|
| 494 |
+
|
| 495 |
+

|
| 496 |
+
|
| 497 |
+
For a more complete example including more features, see the <a href="https://fastapi.tiangolo.com/tutorial/">Tutorial - User Guide</a>.
|
| 498 |
+
|
| 499 |
+
**Spoiler alert**: the tutorial - user guide includes:
|
| 500 |
+
|
| 501 |
+
* Declaration of **parameters** from other different places as: **headers**, **cookies**, **form fields** and **files**.
|
| 502 |
+
* How to set **validation constraints** as `maximum_length` or `regex`.
|
| 503 |
+
* A very powerful and easy to use **<abbr title="also known as components, resources, providers, services, injectables">Dependency Injection</abbr>** system.
|
| 504 |
+
* Security and authentication, including support for **OAuth2** with **JWT tokens** and **HTTP Basic** auth.
|
| 505 |
+
* More advanced (but equally easy) techniques for declaring **deeply nested JSON models** (thanks to Pydantic).
|
| 506 |
+
* **GraphQL** integration with <a href="https://strawberry.rocks" class="external-link" target="_blank">Strawberry</a> and other libraries.
|
| 507 |
+
* Many extra features (thanks to Starlette) as:
|
| 508 |
+
* **WebSockets**
|
| 509 |
+
* extremely easy tests based on HTTPX and `pytest`
|
| 510 |
+
* **CORS**
|
| 511 |
+
* **Cookie Sessions**
|
| 512 |
+
* ...and more.
|
| 513 |
+
|
| 514 |
+
## Performance
|
| 515 |
+
|
| 516 |
+
Independent TechEmpower benchmarks show **FastAPI** applications running under Uvicorn as <a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7" class="external-link" target="_blank">one of the fastest Python frameworks available</a>, only below Starlette and Uvicorn themselves (used internally by FastAPI). (*)
|
| 517 |
+
|
| 518 |
+
To understand more about it, see the section <a href="https://fastapi.tiangolo.com/benchmarks/" class="internal-link" target="_blank">Benchmarks</a>.
|
| 519 |
+
|
| 520 |
+
## Dependencies
|
| 521 |
+
|
| 522 |
+
FastAPI depends on Pydantic and Starlette.
|
| 523 |
+
|
| 524 |
+
### `standard` Dependencies
|
| 525 |
+
|
| 526 |
+
When you install FastAPI with `pip install "fastapi[standard]"` it comes with the `standard` group of optional dependencies:
|
| 527 |
+
|
| 528 |
+
Used by Pydantic:
|
| 529 |
+
|
| 530 |
+
* <a href="https://github.com/JoshData/python-email-validator" target="_blank"><code>email-validator</code></a> - for email validation.
|
| 531 |
+
|
| 532 |
+
Used by Starlette:
|
| 533 |
+
|
| 534 |
+
* <a href="https://www.python-httpx.org" target="_blank"><code>httpx</code></a> - Required if you want to use the `TestClient`.
|
| 535 |
+
* <a href="https://jinja.palletsprojects.com" target="_blank"><code>jinja2</code></a> - Required if you want to use the default template configuration.
|
| 536 |
+
* <a href="https://github.com/Kludex/python-multipart" target="_blank"><code>python-multipart</code></a> - Required if you want to support form <abbr title="converting the string that comes from an HTTP request into Python data">"parsing"</abbr>, with `request.form()`.
|
| 537 |
+
|
| 538 |
+
Used by FastAPI / Starlette:
|
| 539 |
+
|
| 540 |
+
* <a href="https://www.uvicorn.org" target="_blank"><code>uvicorn</code></a> - for the server that loads and serves your application. This includes `uvicorn[standard]`, which includes some dependencies (e.g. `uvloop`) needed for high performance serving.
|
| 541 |
+
* `fastapi-cli` - to provide the `fastapi` command.
|
| 542 |
+
|
| 543 |
+
### Without `standard` Dependencies
|
| 544 |
+
|
| 545 |
+
If you don't want to include the `standard` optional dependencies, you can install with `pip install fastapi` instead of `pip install "fastapi[standard]"`.
|
| 546 |
+
|
| 547 |
+
### Additional Optional Dependencies
|
| 548 |
+
|
| 549 |
+
There are some additional dependencies you might want to install.
|
| 550 |
+
|
| 551 |
+
Additional optional Pydantic dependencies:
|
| 552 |
+
|
| 553 |
+
* <a href="https://docs.pydantic.dev/latest/usage/pydantic_settings/" target="_blank"><code>pydantic-settings</code></a> - for settings management.
|
| 554 |
+
* <a href="https://docs.pydantic.dev/latest/usage/types/extra_types/extra_types/" target="_blank"><code>pydantic-extra-types</code></a> - for extra types to be used with Pydantic.
|
| 555 |
+
|
| 556 |
+
Additional optional FastAPI dependencies:
|
| 557 |
+
|
| 558 |
+
* <a href="https://github.com/ijl/orjson" target="_blank"><code>orjson</code></a> - Required if you want to use `ORJSONResponse`.
|
| 559 |
+
* <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a> - Required if you want to use `UJSONResponse`.
|
| 560 |
+
|
| 561 |
+
## License
|
| 562 |
+
|
| 563 |
+
This project is licensed under the terms of the MIT license.
|
.venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/RECORD
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
../../../bin/fastapi,sha256=ozVeLQVTLKWi0x-sgvSDSBbpnbxkxT-Or79kovMzyk8,228
|
| 2 |
+
fastapi-0.115.8.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
| 3 |
+
fastapi-0.115.8.dist-info/METADATA,sha256=4srjIseFlbNIV_5S9uJbfMX9VvUk21nJ_Hu0HnXMqe4,27152
|
| 4 |
+
fastapi-0.115.8.dist-info/RECORD,,
|
| 5 |
+
fastapi-0.115.8.dist-info/WHEEL,sha256=thaaA2w1JzcGC48WYufAs8nrYZjJm8LqNfnXFOFyCC4,90
|
| 6 |
+
fastapi-0.115.8.dist-info/entry_points.txt,sha256=GCf-WbIZxyGT4MUmrPGj1cOHYZoGsNPHAvNkT6hnGeA,61
|
| 7 |
+
fastapi-0.115.8.dist-info/licenses/LICENSE,sha256=Tsif_IFIW5f-xYSy1KlhAy7v_oNEU4lP2cEnSQbMdE4,1086
|
| 8 |
+
fastapi/__init__.py,sha256=_MYtqtXdcIyUpF2BUpb8Y-6UGaviGakeY05sV25X5DE,1081
|
| 9 |
+
fastapi/__main__.py,sha256=bKePXLdO4SsVSM6r9SVoLickJDcR2c0cTOxZRKq26YQ,37
|
| 10 |
+
fastapi/__pycache__/__init__.cpython-311.pyc,,
|
| 11 |
+
fastapi/__pycache__/__main__.cpython-311.pyc,,
|
| 12 |
+
fastapi/__pycache__/_compat.cpython-311.pyc,,
|
| 13 |
+
fastapi/__pycache__/applications.cpython-311.pyc,,
|
| 14 |
+
fastapi/__pycache__/background.cpython-311.pyc,,
|
| 15 |
+
fastapi/__pycache__/cli.cpython-311.pyc,,
|
| 16 |
+
fastapi/__pycache__/concurrency.cpython-311.pyc,,
|
| 17 |
+
fastapi/__pycache__/datastructures.cpython-311.pyc,,
|
| 18 |
+
fastapi/__pycache__/encoders.cpython-311.pyc,,
|
| 19 |
+
fastapi/__pycache__/exception_handlers.cpython-311.pyc,,
|
| 20 |
+
fastapi/__pycache__/exceptions.cpython-311.pyc,,
|
| 21 |
+
fastapi/__pycache__/logger.cpython-311.pyc,,
|
| 22 |
+
fastapi/__pycache__/param_functions.cpython-311.pyc,,
|
| 23 |
+
fastapi/__pycache__/params.cpython-311.pyc,,
|
| 24 |
+
fastapi/__pycache__/requests.cpython-311.pyc,,
|
| 25 |
+
fastapi/__pycache__/responses.cpython-311.pyc,,
|
| 26 |
+
fastapi/__pycache__/routing.cpython-311.pyc,,
|
| 27 |
+
fastapi/__pycache__/staticfiles.cpython-311.pyc,,
|
| 28 |
+
fastapi/__pycache__/templating.cpython-311.pyc,,
|
| 29 |
+
fastapi/__pycache__/testclient.cpython-311.pyc,,
|
| 30 |
+
fastapi/__pycache__/types.cpython-311.pyc,,
|
| 31 |
+
fastapi/__pycache__/utils.cpython-311.pyc,,
|
| 32 |
+
fastapi/__pycache__/websockets.cpython-311.pyc,,
|
| 33 |
+
fastapi/_compat.py,sha256=Rg7kA7uue4Z6yr8T7hf8b7G6PeC_06mK004Nnykijfk,23953
|
| 34 |
+
fastapi/applications.py,sha256=Ix-o9pQAWhEDf9J0Q1hZ0nBB1uP72c-Y3oiYzvrwqiM,176316
|
| 35 |
+
fastapi/background.py,sha256=rouLirxUANrcYC824MSMypXL_Qb2HYg2YZqaiEqbEKI,1768
|
| 36 |
+
fastapi/cli.py,sha256=OYhZb0NR_deuT5ofyPF2NoNBzZDNOP8Salef2nk-HqA,418
|
| 37 |
+
fastapi/concurrency.py,sha256=MirfowoSpkMQZ8j_g0ZxaQKpV6eB3G-dB5TgcXCrgEA,1424
|
| 38 |
+
fastapi/datastructures.py,sha256=b2PEz77XGq-u3Ur1Inwk0AGjOsQZO49yF9C7IPJ15cY,5766
|
| 39 |
+
fastapi/dependencies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 40 |
+
fastapi/dependencies/__pycache__/__init__.cpython-311.pyc,,
|
| 41 |
+
fastapi/dependencies/__pycache__/models.cpython-311.pyc,,
|
| 42 |
+
fastapi/dependencies/__pycache__/utils.cpython-311.pyc,,
|
| 43 |
+
fastapi/dependencies/models.py,sha256=Pjl6vx-4nZ5Tta9kJa3-RfQKkXtCpS09-FhMgs9eWNs,1507
|
| 44 |
+
fastapi/dependencies/utils.py,sha256=UqN1H0k_4PCnP-nRYNpup1fdIuzEx1F5ZVO6WuVRx4E,35579
|
| 45 |
+
fastapi/encoders.py,sha256=LvwYmFeOz4tVwvgBoC5rvZnbr7hZr73KGrU8O7zSptU,11068
|
| 46 |
+
fastapi/exception_handlers.py,sha256=MBrIOA-ugjJDivIi4rSsUJBdTsjuzN76q4yh0q1COKw,1332
|
| 47 |
+
fastapi/exceptions.py,sha256=taNixuFEXb67lI1bnX1ubq8y8TseJ4yoPlWjyP0fTzk,4969
|
| 48 |
+
fastapi/logger.py,sha256=I9NNi3ov8AcqbsbC9wl1X-hdItKgYt2XTrx1f99Zpl4,54
|
| 49 |
+
fastapi/middleware/__init__.py,sha256=oQDxiFVcc1fYJUOIFvphnK7pTT5kktmfL32QXpBFvvo,58
|
| 50 |
+
fastapi/middleware/__pycache__/__init__.cpython-311.pyc,,
|
| 51 |
+
fastapi/middleware/__pycache__/cors.cpython-311.pyc,,
|
| 52 |
+
fastapi/middleware/__pycache__/gzip.cpython-311.pyc,,
|
| 53 |
+
fastapi/middleware/__pycache__/httpsredirect.cpython-311.pyc,,
|
| 54 |
+
fastapi/middleware/__pycache__/trustedhost.cpython-311.pyc,,
|
| 55 |
+
fastapi/middleware/__pycache__/wsgi.cpython-311.pyc,,
|
| 56 |
+
fastapi/middleware/cors.py,sha256=ynwjWQZoc_vbhzZ3_ZXceoaSrslHFHPdoM52rXr0WUU,79
|
| 57 |
+
fastapi/middleware/gzip.py,sha256=xM5PcsH8QlAimZw4VDvcmTnqQamslThsfe3CVN2voa0,79
|
| 58 |
+
fastapi/middleware/httpsredirect.py,sha256=rL8eXMnmLijwVkH7_400zHri1AekfeBd6D6qs8ix950,115
|
| 59 |
+
fastapi/middleware/trustedhost.py,sha256=eE5XGRxGa7c5zPnMJDGp3BxaL25k5iVQlhnv-Pk0Pss,109
|
| 60 |
+
fastapi/middleware/wsgi.py,sha256=Z3Ue-7wni4lUZMvH3G9ek__acgYdJstbnpZX_HQAboY,79
|
| 61 |
+
fastapi/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 62 |
+
fastapi/openapi/__pycache__/__init__.cpython-311.pyc,,
|
| 63 |
+
fastapi/openapi/__pycache__/constants.cpython-311.pyc,,
|
| 64 |
+
fastapi/openapi/__pycache__/docs.cpython-311.pyc,,
|
| 65 |
+
fastapi/openapi/__pycache__/models.cpython-311.pyc,,
|
| 66 |
+
fastapi/openapi/__pycache__/utils.cpython-311.pyc,,
|
| 67 |
+
fastapi/openapi/constants.py,sha256=adGzmis1L1HJRTE3kJ5fmHS_Noq6tIY6pWv_SFzoFDU,153
|
| 68 |
+
fastapi/openapi/docs.py,sha256=XcQq-ZbQdC5sI0gIGu5MoHK1q-OFaqws7-ORTo6sjY4,10348
|
| 69 |
+
fastapi/openapi/models.py,sha256=PqkxQiqcEgjKuhfUIWPZPQcyTcubtUCB3vcObLsB7VE,15397
|
| 70 |
+
fastapi/openapi/utils.py,sha256=vpbAzWpuNaJL_ocBxt4jp0GUUwrDKNB1anyoAx69fhA,23177
|
| 71 |
+
fastapi/param_functions.py,sha256=JHNPLIYvoAwdnZZavIVsxOat8x23fX_Kl33reh7HKl8,64019
|
| 72 |
+
fastapi/params.py,sha256=g450axUBQgQJODdtM7WBxZbQj9Z64inFvadrgHikBbU,28237
|
| 73 |
+
fastapi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 74 |
+
fastapi/requests.py,sha256=zayepKFcienBllv3snmWI20Gk0oHNVLU4DDhqXBb4LU,142
|
| 75 |
+
fastapi/responses.py,sha256=QNQQlwpKhQoIPZTTWkpc9d_QGeGZ_aVQPaDV3nQ8m7c,1761
|
| 76 |
+
fastapi/routing.py,sha256=WK06IwZeyRwxkdB4uHZ7JXinxtVOxM8Ke0tqHaDOvYA,176208
|
| 77 |
+
fastapi/security/__init__.py,sha256=bO8pNmxqVRXUjfl2mOKiVZLn0FpBQ61VUYVjmppnbJw,881
|
| 78 |
+
fastapi/security/__pycache__/__init__.cpython-311.pyc,,
|
| 79 |
+
fastapi/security/__pycache__/api_key.cpython-311.pyc,,
|
| 80 |
+
fastapi/security/__pycache__/base.cpython-311.pyc,,
|
| 81 |
+
fastapi/security/__pycache__/http.cpython-311.pyc,,
|
| 82 |
+
fastapi/security/__pycache__/oauth2.cpython-311.pyc,,
|
| 83 |
+
fastapi/security/__pycache__/open_id_connect_url.cpython-311.pyc,,
|
| 84 |
+
fastapi/security/__pycache__/utils.cpython-311.pyc,,
|
| 85 |
+
fastapi/security/api_key.py,sha256=cBI5Z4zWVjL1uJrsjTeLy7MafHPAO2HQPzTrpyoIYWA,9094
|
| 86 |
+
fastapi/security/base.py,sha256=dl4pvbC-RxjfbWgPtCWd8MVU-7CB2SZ22rJDXVCXO6c,141
|
| 87 |
+
fastapi/security/http.py,sha256=223bAV_d7NjI57Pzhbd_KlQTYlMyr5MoN1TW80rbxF8,13512
|
| 88 |
+
fastapi/security/oauth2.py,sha256=xCo5j1qpze6CvEuJHIneOI0v2fodGVMpHHVnHpiLfoM,21589
|
| 89 |
+
fastapi/security/open_id_connect_url.py,sha256=8vizZ2tGqEp1ur8SwtVgyHJhGAJ5AqahgcvSpaIioDI,2722
|
| 90 |
+
fastapi/security/utils.py,sha256=bd8T0YM7UQD5ATKucr1bNtAvz_Y3__dVNAv5UebiPvc,293
|
| 91 |
+
fastapi/staticfiles.py,sha256=iirGIt3sdY2QZXd36ijs3Cj-T0FuGFda3cd90kM9Ikw,69
|
| 92 |
+
fastapi/templating.py,sha256=4zsuTWgcjcEainMJFAlW6-gnslm6AgOS1SiiDWfmQxk,76
|
| 93 |
+
fastapi/testclient.py,sha256=nBvaAmX66YldReJNZXPOk1sfuo2Q6hs8bOvIaCep6LQ,66
|
| 94 |
+
fastapi/types.py,sha256=nFb36sK3DSoqoyo7Miwy3meKK5UdFBgkAgLSzQlUVyI,383
|
| 95 |
+
fastapi/utils.py,sha256=y8Bj5ttMaI9tS4D60OUgXqKnktBr99NdYUnHHV9LgoY,7948
|
| 96 |
+
fastapi/websockets.py,sha256=419uncYObEKZG0YcrXscfQQYLSWoE10jqxVMetGdR98,222
|
.venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/WHEEL
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Wheel-Version: 1.0
|
| 2 |
+
Generator: pdm-backend (2.4.3)
|
| 3 |
+
Root-Is-Purelib: true
|
| 4 |
+
Tag: py3-none-any
|
.venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/entry_points.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[console_scripts]
|
| 2 |
+
fastapi = fastapi.cli:main
|
| 3 |
+
|
| 4 |
+
[gui_scripts]
|
| 5 |
+
|
.venv/lib/python3.11/site-packages/fastapi-0.115.8.dist-info/licenses/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
The MIT License (MIT)
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2018 Sebastián Ramírez
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
+
in the Software without restriction, including without limitation the rights
|
| 8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
+
furnished to do so, subject to the following conditions:
|
| 11 |
+
|
| 12 |
+
The above copyright notice and this permission notice shall be included in
|
| 13 |
+
all copies or substantial portions of the Software.
|
| 14 |
+
|
| 15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
| 21 |
+
THE SOFTWARE.
|
.venv/lib/python3.11/site-packages/grpc_status/__init__.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright 2018 The gRPC Authors
|
| 2 |
+
#
|
| 3 |
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
| 4 |
+
# you may not use this file except in compliance with the License.
|
| 5 |
+
# You may obtain a copy of the License at
|
| 6 |
+
#
|
| 7 |
+
# http://www.apache.org/licenses/LICENSE-2.0
|
| 8 |
+
#
|
| 9 |
+
# Unless required by applicable law or agreed to in writing, software
|
| 10 |
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
| 11 |
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 12 |
+
# See the License for the specific language governing permissions and
|
| 13 |
+
# limitations under the License.
|
.venv/lib/python3.11/site-packages/grpc_status/__pycache__/__init__.cpython-311.pyc
ADDED
|
Binary file (184 Bytes). View file
|
|
|
.venv/lib/python3.11/site-packages/grpc_status/__pycache__/_async.cpython-311.pyc
ADDED
|
Binary file (2.03 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/grpc_status/__pycache__/_common.cpython-311.pyc
ADDED
|
Binary file (956 Bytes). View file
|
|
|
.venv/lib/python3.11/site-packages/grpc_status/__pycache__/rpc_status.cpython-311.pyc
ADDED
|
Binary file (3.51 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/grpc_status/_async.py
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright 2020 The gRPC Authors
|
| 2 |
+
#
|
| 3 |
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
| 4 |
+
# you may not use this file except in compliance with the License.
|
| 5 |
+
# You may obtain a copy of the License at
|
| 6 |
+
#
|
| 7 |
+
# http://www.apache.org/licenses/LICENSE-2.0
|
| 8 |
+
#
|
| 9 |
+
# Unless required by applicable law or agreed to in writing, software
|
| 10 |
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
| 11 |
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 12 |
+
# See the License for the specific language governing permissions and
|
| 13 |
+
# limitations under the License.
|
| 14 |
+
"""Reference implementation for status mapping in gRPC Python."""
|
| 15 |
+
|
| 16 |
+
from google.rpc import status_pb2
|
| 17 |
+
from grpc.experimental import aio
|
| 18 |
+
|
| 19 |
+
from ._common import GRPC_DETAILS_METADATA_KEY
|
| 20 |
+
from ._common import code_to_grpc_status_code
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
async def from_call(call: aio.Call):
|
| 24 |
+
"""Returns a google.rpc.status.Status message from a given grpc.aio.Call.
|
| 25 |
+
|
| 26 |
+
This is an EXPERIMENTAL API.
|
| 27 |
+
|
| 28 |
+
Args:
|
| 29 |
+
call: An grpc.aio.Call instance.
|
| 30 |
+
|
| 31 |
+
Returns:
|
| 32 |
+
A google.rpc.status.Status message representing the status of the RPC.
|
| 33 |
+
"""
|
| 34 |
+
code = await call.code()
|
| 35 |
+
details = await call.details()
|
| 36 |
+
trailing_metadata = await call.trailing_metadata()
|
| 37 |
+
if trailing_metadata is None:
|
| 38 |
+
return None
|
| 39 |
+
for key, value in trailing_metadata:
|
| 40 |
+
if key == GRPC_DETAILS_METADATA_KEY:
|
| 41 |
+
rich_status = status_pb2.Status.FromString(value)
|
| 42 |
+
if code.value[0] != rich_status.code:
|
| 43 |
+
raise ValueError(
|
| 44 |
+
"Code in Status proto (%s) doesn't match status code (%s)"
|
| 45 |
+
% (code_to_grpc_status_code(rich_status.code), code)
|
| 46 |
+
)
|
| 47 |
+
if details != rich_status.message:
|
| 48 |
+
raise ValueError(
|
| 49 |
+
"Message in Status proto (%s) doesn't match status details"
|
| 50 |
+
" (%s)" % (rich_status.message, details)
|
| 51 |
+
)
|
| 52 |
+
return rich_status
|
| 53 |
+
return None
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
__all__ = [
|
| 57 |
+
"from_call",
|
| 58 |
+
]
|
.venv/lib/python3.11/site-packages/grpc_status/_common.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright 2020 The gRPC Authors
|
| 2 |
+
#
|
| 3 |
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
| 4 |
+
# you may not use this file except in compliance with the License.
|
| 5 |
+
# You may obtain a copy of the License at
|
| 6 |
+
#
|
| 7 |
+
# http://www.apache.org/licenses/LICENSE-2.0
|
| 8 |
+
#
|
| 9 |
+
# Unless required by applicable law or agreed to in writing, software
|
| 10 |
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
| 11 |
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 12 |
+
# See the License for the specific language governing permissions and
|
| 13 |
+
# limitations under the License.
|
| 14 |
+
"""Reference implementation for status mapping in gRPC Python."""
|
| 15 |
+
|
| 16 |
+
import grpc
|
| 17 |
+
|
| 18 |
+
_CODE_TO_GRPC_CODE_MAPPING = {x.value[0]: x for x in grpc.StatusCode}
|
| 19 |
+
|
| 20 |
+
GRPC_DETAILS_METADATA_KEY = "grpc-status-details-bin"
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def code_to_grpc_status_code(code):
|
| 24 |
+
try:
|
| 25 |
+
return _CODE_TO_GRPC_CODE_MAPPING[code]
|
| 26 |
+
except KeyError:
|
| 27 |
+
raise ValueError("Invalid status code %s" % code)
|
.venv/lib/python3.11/site-packages/grpc_status/rpc_status.py
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright 2018 The gRPC Authors
|
| 2 |
+
#
|
| 3 |
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
| 4 |
+
# you may not use this file except in compliance with the License.
|
| 5 |
+
# You may obtain a copy of the License at
|
| 6 |
+
#
|
| 7 |
+
# http://www.apache.org/licenses/LICENSE-2.0
|
| 8 |
+
#
|
| 9 |
+
# Unless required by applicable law or agreed to in writing, software
|
| 10 |
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
| 11 |
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 12 |
+
# See the License for the specific language governing permissions and
|
| 13 |
+
# limitations under the License.
|
| 14 |
+
"""Reference implementation for status mapping in gRPC Python."""
|
| 15 |
+
|
| 16 |
+
import collections
|
| 17 |
+
import sys
|
| 18 |
+
|
| 19 |
+
from google.rpc import status_pb2
|
| 20 |
+
import grpc
|
| 21 |
+
|
| 22 |
+
from ._common import GRPC_DETAILS_METADATA_KEY
|
| 23 |
+
from ._common import code_to_grpc_status_code
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
class _Status(
|
| 27 |
+
collections.namedtuple("_Status", ("code", "details", "trailing_metadata")),
|
| 28 |
+
grpc.Status,
|
| 29 |
+
):
|
| 30 |
+
pass
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
def from_call(call):
|
| 34 |
+
"""Returns a google.rpc.status.Status message corresponding to a given grpc.Call.
|
| 35 |
+
|
| 36 |
+
This is an EXPERIMENTAL API.
|
| 37 |
+
|
| 38 |
+
Args:
|
| 39 |
+
call: A grpc.Call instance.
|
| 40 |
+
|
| 41 |
+
Returns:
|
| 42 |
+
A google.rpc.status.Status message representing the status of the RPC.
|
| 43 |
+
|
| 44 |
+
Raises:
|
| 45 |
+
ValueError: If the gRPC call's code or details are inconsistent with the
|
| 46 |
+
status code and message inside of the google.rpc.status.Status.
|
| 47 |
+
"""
|
| 48 |
+
if call.trailing_metadata() is None:
|
| 49 |
+
return None
|
| 50 |
+
for key, value in call.trailing_metadata():
|
| 51 |
+
if key == GRPC_DETAILS_METADATA_KEY:
|
| 52 |
+
rich_status = status_pb2.Status.FromString(value)
|
| 53 |
+
if call.code().value[0] != rich_status.code:
|
| 54 |
+
raise ValueError(
|
| 55 |
+
"Code in Status proto (%s) doesn't match status code (%s)"
|
| 56 |
+
% (code_to_grpc_status_code(rich_status.code), call.code())
|
| 57 |
+
)
|
| 58 |
+
if call.details() != rich_status.message:
|
| 59 |
+
raise ValueError(
|
| 60 |
+
"Message in Status proto (%s) doesn't match status details"
|
| 61 |
+
" (%s)" % (rich_status.message, call.details())
|
| 62 |
+
)
|
| 63 |
+
return rich_status
|
| 64 |
+
return None
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
def to_status(status):
|
| 68 |
+
"""Convert a google.rpc.status.Status message to grpc.Status.
|
| 69 |
+
|
| 70 |
+
This is an EXPERIMENTAL API.
|
| 71 |
+
|
| 72 |
+
Args:
|
| 73 |
+
status: a google.rpc.status.Status message representing the non-OK status
|
| 74 |
+
to terminate the RPC with and communicate it to the client.
|
| 75 |
+
|
| 76 |
+
Returns:
|
| 77 |
+
A grpc.Status instance representing the input google.rpc.status.Status message.
|
| 78 |
+
"""
|
| 79 |
+
return _Status(
|
| 80 |
+
code=code_to_grpc_status_code(status.code),
|
| 81 |
+
details=status.message,
|
| 82 |
+
trailing_metadata=(
|
| 83 |
+
(GRPC_DETAILS_METADATA_KEY, status.SerializeToString()),
|
| 84 |
+
),
|
| 85 |
+
)
|
| 86 |
+
|
| 87 |
+
|
| 88 |
+
__all__ = [
|
| 89 |
+
"from_call",
|
| 90 |
+
"to_status",
|
| 91 |
+
]
|
| 92 |
+
|
| 93 |
+
if sys.version_info[0] >= 3 and sys.version_info[1] >= 6:
|
| 94 |
+
from . import _async as aio # pylint: disable=unused-import
|
| 95 |
+
|
| 96 |
+
__all__.append("aio")
|
.venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/INSTALLER
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
.venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/METADATA
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Metadata-Version: 2.1
|
| 2 |
+
Name: iniconfig
|
| 3 |
+
Version: 2.0.0
|
| 4 |
+
Summary: brain-dead simple config-ini parsing
|
| 5 |
+
Project-URL: Homepage, https://github.com/pytest-dev/iniconfig
|
| 6 |
+
Author-email: Ronny Pfannschmidt <opensource@ronnypfannschmidt.de>, Holger Krekel <holger.krekel@gmail.com>
|
| 7 |
+
License-Expression: MIT
|
| 8 |
+
License-File: LICENSE
|
| 9 |
+
Classifier: Development Status :: 4 - Beta
|
| 10 |
+
Classifier: Intended Audience :: Developers
|
| 11 |
+
Classifier: License :: OSI Approved :: MIT License
|
| 12 |
+
Classifier: Operating System :: MacOS :: MacOS X
|
| 13 |
+
Classifier: Operating System :: Microsoft :: Windows
|
| 14 |
+
Classifier: Operating System :: POSIX
|
| 15 |
+
Classifier: Programming Language :: Python :: 3
|
| 16 |
+
Classifier: Programming Language :: Python :: 3 :: Only
|
| 17 |
+
Classifier: Programming Language :: Python :: 3.7
|
| 18 |
+
Classifier: Programming Language :: Python :: 3.8
|
| 19 |
+
Classifier: Programming Language :: Python :: 3.9
|
| 20 |
+
Classifier: Programming Language :: Python :: 3.10
|
| 21 |
+
Classifier: Programming Language :: Python :: 3.11
|
| 22 |
+
Classifier: Topic :: Software Development :: Libraries
|
| 23 |
+
Classifier: Topic :: Utilities
|
| 24 |
+
Requires-Python: >=3.7
|
| 25 |
+
Description-Content-Type: text/x-rst
|
| 26 |
+
|
| 27 |
+
iniconfig: brain-dead simple parsing of ini files
|
| 28 |
+
=======================================================
|
| 29 |
+
|
| 30 |
+
iniconfig is a small and simple INI-file parser module
|
| 31 |
+
having a unique set of features:
|
| 32 |
+
|
| 33 |
+
* maintains order of sections and entries
|
| 34 |
+
* supports multi-line values with or without line-continuations
|
| 35 |
+
* supports "#" comments everywhere
|
| 36 |
+
* raises errors with proper line-numbers
|
| 37 |
+
* no bells and whistles like automatic substitutions
|
| 38 |
+
* iniconfig raises an Error if two sections have the same name.
|
| 39 |
+
|
| 40 |
+
If you encounter issues or have feature wishes please report them to:
|
| 41 |
+
|
| 42 |
+
https://github.com/RonnyPfannschmidt/iniconfig/issues
|
| 43 |
+
|
| 44 |
+
Basic Example
|
| 45 |
+
===================================
|
| 46 |
+
|
| 47 |
+
If you have an ini file like this:
|
| 48 |
+
|
| 49 |
+
.. code-block:: ini
|
| 50 |
+
|
| 51 |
+
# content of example.ini
|
| 52 |
+
[section1] # comment
|
| 53 |
+
name1=value1 # comment
|
| 54 |
+
name1b=value1,value2 # comment
|
| 55 |
+
|
| 56 |
+
[section2]
|
| 57 |
+
name2=
|
| 58 |
+
line1
|
| 59 |
+
line2
|
| 60 |
+
|
| 61 |
+
then you can do:
|
| 62 |
+
|
| 63 |
+
.. code-block:: pycon
|
| 64 |
+
|
| 65 |
+
>>> import iniconfig
|
| 66 |
+
>>> ini = iniconfig.IniConfig("example.ini")
|
| 67 |
+
>>> ini['section1']['name1'] # raises KeyError if not exists
|
| 68 |
+
'value1'
|
| 69 |
+
>>> ini.get('section1', 'name1b', [], lambda x: x.split(","))
|
| 70 |
+
['value1', 'value2']
|
| 71 |
+
>>> ini.get('section1', 'notexist', [], lambda x: x.split(","))
|
| 72 |
+
[]
|
| 73 |
+
>>> [x.name for x in list(ini)]
|
| 74 |
+
['section1', 'section2']
|
| 75 |
+
>>> list(list(ini)[0].items())
|
| 76 |
+
[('name1', 'value1'), ('name1b', 'value1,value2')]
|
| 77 |
+
>>> 'section1' in ini
|
| 78 |
+
True
|
| 79 |
+
>>> 'inexistendsection' in ini
|
| 80 |
+
False
|
.venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/RECORD
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
iniconfig-2.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
| 2 |
+
iniconfig-2.0.0.dist-info/METADATA,sha256=2KcBd5DEFiZclO-ruP_qzN71qcTL0hNsCw5MCDIPN6I,2599
|
| 3 |
+
iniconfig-2.0.0.dist-info/RECORD,,
|
| 4 |
+
iniconfig-2.0.0.dist-info/WHEEL,sha256=hKi7AIIx6qfnsRbr087vpeJnrVUuDokDHZacPPMW7-Y,87
|
| 5 |
+
iniconfig-2.0.0.dist-info/licenses/LICENSE,sha256=KvaAw570k_uCgwNW0dPfGstaBgM8ui3sehniHKp3qGY,1061
|
| 6 |
+
iniconfig/__init__.py,sha256=ALJSNenAgTD7RNj820NggEQuyaZp2QseTCThGJPavk0,5473
|
| 7 |
+
iniconfig/__pycache__/__init__.cpython-311.pyc,,
|
| 8 |
+
iniconfig/__pycache__/_parse.cpython-311.pyc,,
|
| 9 |
+
iniconfig/__pycache__/_version.cpython-311.pyc,,
|
| 10 |
+
iniconfig/__pycache__/exceptions.cpython-311.pyc,,
|
| 11 |
+
iniconfig/_parse.py,sha256=OWGLbmE8GjxcoMWTvnGbck1RoNsTm5bt5ficIRZqWJ8,2436
|
| 12 |
+
iniconfig/_version.py,sha256=WM8rOXoL5t25aMQJp4qbU2XP09nrDtmDnrAGhHSk0Wk,160
|
| 13 |
+
iniconfig/exceptions.py,sha256=3V2JS5rndwiYUh84PNYS_1zd8H8IB-Rar81ARAA7E9s,501
|
| 14 |
+
iniconfig/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
.venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/WHEEL
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Wheel-Version: 1.0
|
| 2 |
+
Generator: hatchling 1.12.2
|
| 3 |
+
Root-Is-Purelib: true
|
| 4 |
+
Tag: py3-none-any
|
.venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/licenses/LICENSE
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 3 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 4 |
+
in the Software without restriction, including without limitation the rights
|
| 5 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 6 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 7 |
+
furnished to do so, subject to the following conditions:
|
| 8 |
+
|
| 9 |
+
The above copyright notice and this permission notice shall be included in all
|
| 10 |
+
copies or substantial portions of the Software.
|
| 11 |
+
|
| 12 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 13 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 14 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 15 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 16 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 17 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 18 |
+
SOFTWARE.
|
| 19 |
+
|
.venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/INSTALLER
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
.venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/LICENSE.txt
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Copyright 2007 Pallets
|
| 2 |
+
|
| 3 |
+
Redistribution and use in source and binary forms, with or without
|
| 4 |
+
modification, are permitted provided that the following conditions are
|
| 5 |
+
met:
|
| 6 |
+
|
| 7 |
+
1. Redistributions of source code must retain the above copyright
|
| 8 |
+
notice, this list of conditions and the following disclaimer.
|
| 9 |
+
|
| 10 |
+
2. Redistributions in binary form must reproduce the above copyright
|
| 11 |
+
notice, this list of conditions and the following disclaimer in the
|
| 12 |
+
documentation and/or other materials provided with the distribution.
|
| 13 |
+
|
| 14 |
+
3. Neither the name of the copyright holder nor the names of its
|
| 15 |
+
contributors may be used to endorse or promote products derived from
|
| 16 |
+
this software without specific prior written permission.
|
| 17 |
+
|
| 18 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| 19 |
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| 20 |
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
| 21 |
+
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| 22 |
+
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| 23 |
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
| 24 |
+
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
| 25 |
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
| 26 |
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
| 27 |
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
| 28 |
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
.venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/METADATA
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Metadata-Version: 2.3
|
| 2 |
+
Name: Jinja2
|
| 3 |
+
Version: 3.1.5
|
| 4 |
+
Summary: A very fast and expressive template engine.
|
| 5 |
+
Maintainer-email: Pallets <contact@palletsprojects.com>
|
| 6 |
+
Requires-Python: >=3.7
|
| 7 |
+
Description-Content-Type: text/markdown
|
| 8 |
+
Classifier: Development Status :: 5 - Production/Stable
|
| 9 |
+
Classifier: Environment :: Web Environment
|
| 10 |
+
Classifier: Intended Audience :: Developers
|
| 11 |
+
Classifier: License :: OSI Approved :: BSD License
|
| 12 |
+
Classifier: Operating System :: OS Independent
|
| 13 |
+
Classifier: Programming Language :: Python
|
| 14 |
+
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
| 15 |
+
Classifier: Topic :: Text Processing :: Markup :: HTML
|
| 16 |
+
Classifier: Typing :: Typed
|
| 17 |
+
Requires-Dist: MarkupSafe>=2.0
|
| 18 |
+
Requires-Dist: Babel>=2.7 ; extra == "i18n"
|
| 19 |
+
Project-URL: Changes, https://jinja.palletsprojects.com/changes/
|
| 20 |
+
Project-URL: Chat, https://discord.gg/pallets
|
| 21 |
+
Project-URL: Documentation, https://jinja.palletsprojects.com/
|
| 22 |
+
Project-URL: Donate, https://palletsprojects.com/donate
|
| 23 |
+
Project-URL: Source, https://github.com/pallets/jinja/
|
| 24 |
+
Provides-Extra: i18n
|
| 25 |
+
|
| 26 |
+
# Jinja
|
| 27 |
+
|
| 28 |
+
Jinja is a fast, expressive, extensible templating engine. Special
|
| 29 |
+
placeholders in the template allow writing code similar to Python
|
| 30 |
+
syntax. Then the template is passed data to render the final document.
|
| 31 |
+
|
| 32 |
+
It includes:
|
| 33 |
+
|
| 34 |
+
- Template inheritance and inclusion.
|
| 35 |
+
- Define and import macros within templates.
|
| 36 |
+
- HTML templates can use autoescaping to prevent XSS from untrusted
|
| 37 |
+
user input.
|
| 38 |
+
- A sandboxed environment can safely render untrusted templates.
|
| 39 |
+
- AsyncIO support for generating templates and calling async
|
| 40 |
+
functions.
|
| 41 |
+
- I18N support with Babel.
|
| 42 |
+
- Templates are compiled to optimized Python code just-in-time and
|
| 43 |
+
cached, or can be compiled ahead-of-time.
|
| 44 |
+
- Exceptions point to the correct line in templates to make debugging
|
| 45 |
+
easier.
|
| 46 |
+
- Extensible filters, tests, functions, and even syntax.
|
| 47 |
+
|
| 48 |
+
Jinja's philosophy is that while application logic belongs in Python if
|
| 49 |
+
possible, it shouldn't make the template designer's job difficult by
|
| 50 |
+
restricting functionality too much.
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
## In A Nutshell
|
| 54 |
+
|
| 55 |
+
```jinja
|
| 56 |
+
{% extends "base.html" %}
|
| 57 |
+
{% block title %}Members{% endblock %}
|
| 58 |
+
{% block content %}
|
| 59 |
+
<ul>
|
| 60 |
+
{% for user in users %}
|
| 61 |
+
<li><a href="{{ user.url }}">{{ user.username }}</a></li>
|
| 62 |
+
{% endfor %}
|
| 63 |
+
</ul>
|
| 64 |
+
{% endblock %}
|
| 65 |
+
```
|
| 66 |
+
|
| 67 |
+
## Donate
|
| 68 |
+
|
| 69 |
+
The Pallets organization develops and supports Jinja and other popular
|
| 70 |
+
packages. In order to grow the community of contributors and users, and
|
| 71 |
+
allow the maintainers to devote more time to the projects, [please
|
| 72 |
+
donate today][].
|
| 73 |
+
|
| 74 |
+
[please donate today]: https://palletsprojects.com/donate
|
| 75 |
+
|
.venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/RECORD
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
jinja2-3.1.5.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
| 2 |
+
jinja2-3.1.5.dist-info/LICENSE.txt,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475
|
| 3 |
+
jinja2-3.1.5.dist-info/METADATA,sha256=PJNSUFNBwoqGA2vce2XSP8M_p2EYqAHYI7hoWLABtFo,2593
|
| 4 |
+
jinja2-3.1.5.dist-info/RECORD,,
|
| 5 |
+
jinja2-3.1.5.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
| 6 |
+
jinja2-3.1.5.dist-info/entry_points.txt,sha256=OL85gYU1eD8cuPlikifFngXpeBjaxl6rIJ8KkC_3r-I,58
|
| 7 |
+
jinja2/__init__.py,sha256=zpt8UHzpS2eB1c04kn1LkKkaXLXXcKd33klq7UJGIgg,1928
|
| 8 |
+
jinja2/__pycache__/__init__.cpython-311.pyc,,
|
| 9 |
+
jinja2/__pycache__/_identifier.cpython-311.pyc,,
|
| 10 |
+
jinja2/__pycache__/async_utils.cpython-311.pyc,,
|
| 11 |
+
jinja2/__pycache__/bccache.cpython-311.pyc,,
|
| 12 |
+
jinja2/__pycache__/compiler.cpython-311.pyc,,
|
| 13 |
+
jinja2/__pycache__/constants.cpython-311.pyc,,
|
| 14 |
+
jinja2/__pycache__/debug.cpython-311.pyc,,
|
| 15 |
+
jinja2/__pycache__/defaults.cpython-311.pyc,,
|
| 16 |
+
jinja2/__pycache__/environment.cpython-311.pyc,,
|
| 17 |
+
jinja2/__pycache__/exceptions.cpython-311.pyc,,
|
| 18 |
+
jinja2/__pycache__/ext.cpython-311.pyc,,
|
| 19 |
+
jinja2/__pycache__/filters.cpython-311.pyc,,
|
| 20 |
+
jinja2/__pycache__/idtracking.cpython-311.pyc,,
|
| 21 |
+
jinja2/__pycache__/lexer.cpython-311.pyc,,
|
| 22 |
+
jinja2/__pycache__/loaders.cpython-311.pyc,,
|
| 23 |
+
jinja2/__pycache__/meta.cpython-311.pyc,,
|
| 24 |
+
jinja2/__pycache__/nativetypes.cpython-311.pyc,,
|
| 25 |
+
jinja2/__pycache__/nodes.cpython-311.pyc,,
|
| 26 |
+
jinja2/__pycache__/optimizer.cpython-311.pyc,,
|
| 27 |
+
jinja2/__pycache__/parser.cpython-311.pyc,,
|
| 28 |
+
jinja2/__pycache__/runtime.cpython-311.pyc,,
|
| 29 |
+
jinja2/__pycache__/sandbox.cpython-311.pyc,,
|
| 30 |
+
jinja2/__pycache__/tests.cpython-311.pyc,,
|
| 31 |
+
jinja2/__pycache__/utils.cpython-311.pyc,,
|
| 32 |
+
jinja2/__pycache__/visitor.cpython-311.pyc,,
|
| 33 |
+
jinja2/_identifier.py,sha256=_zYctNKzRqlk_murTNlzrju1FFJL7Va_Ijqqd7ii2lU,1958
|
| 34 |
+
jinja2/async_utils.py,sha256=vK-PdsuorOMnWSnEkT3iUJRIkTnYgO2T6MnGxDgHI5o,2834
|
| 35 |
+
jinja2/bccache.py,sha256=gh0qs9rulnXo0PhX5jTJy2UHzI8wFnQ63o_vw7nhzRg,14061
|
| 36 |
+
jinja2/compiler.py,sha256=9RpCQl5X88BHllJiPsHPh295Hh0uApvwFJNQuutULeM,74131
|
| 37 |
+
jinja2/constants.py,sha256=GMoFydBF_kdpaRKPoM5cl5MviquVRLVyZtfp5-16jg0,1433
|
| 38 |
+
jinja2/debug.py,sha256=CnHqCDHd-BVGvti_8ZsTolnXNhA3ECsY-6n_2pwU8Hw,6297
|
| 39 |
+
jinja2/defaults.py,sha256=boBcSw78h-lp20YbaXSJsqkAI2uN_mD_TtCydpeq5wU,1267
|
| 40 |
+
jinja2/environment.py,sha256=9nhrP7Ch-NbGX00wvyr4yy-uhNHq2OCc60ggGrni_fk,61513
|
| 41 |
+
jinja2/exceptions.py,sha256=ioHeHrWwCWNaXX1inHmHVblvc4haO7AXsjCp3GfWvx0,5071
|
| 42 |
+
jinja2/ext.py,sha256=5PF5eHfh8mXAIxXHHRB2xXbXohi8pE3nHSOxa66uS7E,31875
|
| 43 |
+
jinja2/filters.py,sha256=cvRI2pqXNMzw8ba41VOBpgu_wu1r-l1_QxwD6yVoJ5g,55025
|
| 44 |
+
jinja2/idtracking.py,sha256=-ll5lIp73pML3ErUYiIJj7tdmWxcH_IlDv3yA_hiZYo,10555
|
| 45 |
+
jinja2/lexer.py,sha256=LYiYio6br-Tep9nPcupWXsPEtjluw3p1mU-lNBVRUfk,29786
|
| 46 |
+
jinja2/loaders.py,sha256=wIrnxjvcbqh5VwW28NSkfotiDq8qNCxIOSFbGUiSLB4,24055
|
| 47 |
+
jinja2/meta.py,sha256=OTDPkaFvU2Hgvx-6akz7154F8BIWaRmvJcBFvwopHww,4397
|
| 48 |
+
jinja2/nativetypes.py,sha256=7GIGALVJgdyL80oZJdQUaUfwSt5q2lSSZbXt0dNf_M4,4210
|
| 49 |
+
jinja2/nodes.py,sha256=m1Duzcr6qhZI8JQ6VyJgUNinjAf5bQzijSmDnMsvUx8,34579
|
| 50 |
+
jinja2/optimizer.py,sha256=rJnCRlQ7pZsEEmMhsQDgC_pKyDHxP5TPS6zVPGsgcu8,1651
|
| 51 |
+
jinja2/parser.py,sha256=lLOFy3sEmHc5IaEHRiH1sQVnId2moUQzhyeJZTtdY30,40383
|
| 52 |
+
jinja2/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 53 |
+
jinja2/runtime.py,sha256=gDk-GvdriJXqgsGbHgrcKTP0Yp6zPXzhzrIpCFH3jAU,34249
|
| 54 |
+
jinja2/sandbox.py,sha256=Mw2aitlY2I8la7FYhcX2YG9BtUYcLnD0Gh3d29cDWrY,15009
|
| 55 |
+
jinja2/tests.py,sha256=VLsBhVFnWg-PxSBz1MhRnNWgP1ovXk3neO1FLQMeC9Q,5926
|
| 56 |
+
jinja2/utils.py,sha256=rRp3o9e7ZKS4fyrWRbELyLcpuGVTFcnooaOa1qx_FIk,24129
|
| 57 |
+
jinja2/visitor.py,sha256=EcnL1PIwf_4RVCOMxsRNuR8AXHbS1qfAdMOE2ngKJz4,3557
|
.venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/WHEEL
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Wheel-Version: 1.0
|
| 2 |
+
Generator: flit 3.10.1
|
| 3 |
+
Root-Is-Purelib: true
|
| 4 |
+
Tag: py3-none-any
|
.venv/lib/python3.11/site-packages/jinja2-3.1.5.dist-info/entry_points.txt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[babel.extractors]
|
| 2 |
+
jinja2=jinja2.ext:babel_extract[i18n]
|
| 3 |
+
|
.venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/INSTALLER
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
.venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/License.txt
ADDED
|
@@ -0,0 +1,1568 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
End User License Agreement
|
| 2 |
+
--------------------------
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
Preface
|
| 6 |
+
-------
|
| 7 |
+
|
| 8 |
+
The Software License Agreement in Chapter 1 and the Supplement
|
| 9 |
+
in Chapter 2 contain license terms and conditions that govern
|
| 10 |
+
the use of NVIDIA software. By accepting this agreement, you
|
| 11 |
+
agree to comply with all the terms and conditions applicable
|
| 12 |
+
to the product(s) included herein.
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
NVIDIA Driver
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
Description
|
| 19 |
+
|
| 20 |
+
This package contains the operating system driver and
|
| 21 |
+
fundamental system software components for NVIDIA GPUs.
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
NVIDIA CUDA Toolkit
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
Description
|
| 28 |
+
|
| 29 |
+
The NVIDIA CUDA Toolkit provides command-line and graphical
|
| 30 |
+
tools for building, debugging and optimizing the performance
|
| 31 |
+
of applications accelerated by NVIDIA GPUs, runtime and math
|
| 32 |
+
libraries, and documentation including programming guides,
|
| 33 |
+
user manuals, and API references.
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
Default Install Location of CUDA Toolkit
|
| 37 |
+
|
| 38 |
+
Windows platform:
|
| 39 |
+
|
| 40 |
+
%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v#.#
|
| 41 |
+
|
| 42 |
+
Linux platform:
|
| 43 |
+
|
| 44 |
+
/usr/local/cuda-#.#
|
| 45 |
+
|
| 46 |
+
Mac platform:
|
| 47 |
+
|
| 48 |
+
/Developer/NVIDIA/CUDA-#.#
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
NVIDIA CUDA Samples
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
Description
|
| 55 |
+
|
| 56 |
+
This package includes over 100+ CUDA examples that demonstrate
|
| 57 |
+
various CUDA programming principles, and efficient CUDA
|
| 58 |
+
implementation of algorithms in specific application domains.
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
Default Install Location of CUDA Samples
|
| 62 |
+
|
| 63 |
+
Windows platform:
|
| 64 |
+
|
| 65 |
+
%ProgramData%\NVIDIA Corporation\CUDA Samples\v#.#
|
| 66 |
+
|
| 67 |
+
Linux platform:
|
| 68 |
+
|
| 69 |
+
/usr/local/cuda-#.#/samples
|
| 70 |
+
|
| 71 |
+
and
|
| 72 |
+
|
| 73 |
+
$HOME/NVIDIA_CUDA-#.#_Samples
|
| 74 |
+
|
| 75 |
+
Mac platform:
|
| 76 |
+
|
| 77 |
+
/Developer/NVIDIA/CUDA-#.#/samples
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
NVIDIA Nsight Visual Studio Edition (Windows only)
|
| 81 |
+
|
| 82 |
+
|
| 83 |
+
Description
|
| 84 |
+
|
| 85 |
+
NVIDIA Nsight Development Platform, Visual Studio Edition is a
|
| 86 |
+
development environment integrated into Microsoft Visual
|
| 87 |
+
Studio that provides tools for debugging, profiling, analyzing
|
| 88 |
+
and optimizing your GPU computing and graphics applications.
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
Default Install Location of Nsight Visual Studio Edition
|
| 92 |
+
|
| 93 |
+
Windows platform:
|
| 94 |
+
|
| 95 |
+
%ProgramFiles(x86)%\NVIDIA Corporation\Nsight Visual Studio Edition #.#
|
| 96 |
+
|
| 97 |
+
|
| 98 |
+
1. License Agreement for NVIDIA Software Development Kits
|
| 99 |
+
---------------------------------------------------------
|
| 100 |
+
|
| 101 |
+
|
| 102 |
+
Release Date: July 26, 2018
|
| 103 |
+
---------------------------
|
| 104 |
+
|
| 105 |
+
|
| 106 |
+
Important NoticeRead before downloading, installing,
|
| 107 |
+
copying or using the licensed software:
|
| 108 |
+
-------------------------------------------------------
|
| 109 |
+
|
| 110 |
+
This license agreement, including exhibits attached
|
| 111 |
+
("Agreement”) is a legal agreement between you and NVIDIA
|
| 112 |
+
Corporation ("NVIDIA") and governs your use of a NVIDIA
|
| 113 |
+
software development kit (“SDK”).
|
| 114 |
+
|
| 115 |
+
Each SDK has its own set of software and materials, but here
|
| 116 |
+
is a description of the types of items that may be included in
|
| 117 |
+
a SDK: source code, header files, APIs, data sets and assets
|
| 118 |
+
(examples include images, textures, models, scenes, videos,
|
| 119 |
+
native API input/output files), binary software, sample code,
|
| 120 |
+
libraries, utility programs, programming code and
|
| 121 |
+
documentation.
|
| 122 |
+
|
| 123 |
+
This Agreement can be accepted only by an adult of legal age
|
| 124 |
+
of majority in the country in which the SDK is used.
|
| 125 |
+
|
| 126 |
+
If you are entering into this Agreement on behalf of a company
|
| 127 |
+
or other legal entity, you represent that you have the legal
|
| 128 |
+
authority to bind the entity to this Agreement, in which case
|
| 129 |
+
“you” will mean the entity you represent.
|
| 130 |
+
|
| 131 |
+
If you don’t have the required age or authority to accept
|
| 132 |
+
this Agreement, or if you don’t accept all the terms and
|
| 133 |
+
conditions of this Agreement, do not download, install or use
|
| 134 |
+
the SDK.
|
| 135 |
+
|
| 136 |
+
You agree to use the SDK only for purposes that are permitted
|
| 137 |
+
by (a) this Agreement, and (b) any applicable law, regulation
|
| 138 |
+
or generally accepted practices or guidelines in the relevant
|
| 139 |
+
jurisdictions.
|
| 140 |
+
|
| 141 |
+
|
| 142 |
+
1.1. License
|
| 143 |
+
|
| 144 |
+
|
| 145 |
+
1.1.1. License Grant
|
| 146 |
+
|
| 147 |
+
Subject to the terms of this Agreement, NVIDIA hereby grants
|
| 148 |
+
you a non-exclusive, non-transferable license, without the
|
| 149 |
+
right to sublicense (except as expressly provided in this
|
| 150 |
+
Agreement) to:
|
| 151 |
+
|
| 152 |
+
1. Install and use the SDK,
|
| 153 |
+
|
| 154 |
+
2. Modify and create derivative works of sample source code
|
| 155 |
+
delivered in the SDK, and
|
| 156 |
+
|
| 157 |
+
3. Distribute those portions of the SDK that are identified
|
| 158 |
+
in this Agreement as distributable, as incorporated in
|
| 159 |
+
object code format into a software application that meets
|
| 160 |
+
the distribution requirements indicated in this Agreement.
|
| 161 |
+
|
| 162 |
+
|
| 163 |
+
1.1.2. Distribution Requirements
|
| 164 |
+
|
| 165 |
+
These are the distribution requirements for you to exercise
|
| 166 |
+
the distribution grant:
|
| 167 |
+
|
| 168 |
+
1. Your application must have material additional
|
| 169 |
+
functionality, beyond the included portions of the SDK.
|
| 170 |
+
|
| 171 |
+
2. The distributable portions of the SDK shall only be
|
| 172 |
+
accessed by your application.
|
| 173 |
+
|
| 174 |
+
3. The following notice shall be included in modifications
|
| 175 |
+
and derivative works of sample source code distributed:
|
| 176 |
+
“This software contains source code provided by NVIDIA
|
| 177 |
+
Corporation.”
|
| 178 |
+
|
| 179 |
+
4. Unless a developer tool is identified in this Agreement
|
| 180 |
+
as distributable, it is delivered for your internal use
|
| 181 |
+
only.
|
| 182 |
+
|
| 183 |
+
5. The terms under which you distribute your application
|
| 184 |
+
must be consistent with the terms of this Agreement,
|
| 185 |
+
including (without limitation) terms relating to the
|
| 186 |
+
license grant and license restrictions and protection of
|
| 187 |
+
NVIDIA’s intellectual property rights. Additionally, you
|
| 188 |
+
agree that you will protect the privacy, security and
|
| 189 |
+
legal rights of your application users.
|
| 190 |
+
|
| 191 |
+
6. You agree to notify NVIDIA in writing of any known or
|
| 192 |
+
suspected distribution or use of the SDK not in compliance
|
| 193 |
+
with the requirements of this Agreement, and to enforce
|
| 194 |
+
the terms of your agreements with respect to distributed
|
| 195 |
+
SDK.
|
| 196 |
+
|
| 197 |
+
|
| 198 |
+
1.1.3. Authorized Users
|
| 199 |
+
|
| 200 |
+
You may allow employees and contractors of your entity or of
|
| 201 |
+
your subsidiary(ies) to access and use the SDK from your
|
| 202 |
+
secure network to perform work on your behalf.
|
| 203 |
+
|
| 204 |
+
If you are an academic institution you may allow users
|
| 205 |
+
enrolled or employed by the academic institution to access and
|
| 206 |
+
use the SDK from your secure network.
|
| 207 |
+
|
| 208 |
+
You are responsible for the compliance with the terms of this
|
| 209 |
+
Agreement by your authorized users. If you become aware that
|
| 210 |
+
your authorized users didn’t follow the terms of this
|
| 211 |
+
Agreement, you agree to take reasonable steps to resolve the
|
| 212 |
+
non-compliance and prevent new occurrences.
|
| 213 |
+
|
| 214 |
+
|
| 215 |
+
1.1.4. Pre-Release SDK
|
| 216 |
+
|
| 217 |
+
The SDK versions identified as alpha, beta, preview or
|
| 218 |
+
otherwise as pre-release, may not be fully functional, may
|
| 219 |
+
contain errors or design flaws, and may have reduced or
|
| 220 |
+
different security, privacy, accessibility, availability, and
|
| 221 |
+
reliability standards relative to commercial versions of
|
| 222 |
+
NVIDIA software and materials. Use of a pre-release SDK may
|
| 223 |
+
result in unexpected results, loss of data, project delays or
|
| 224 |
+
other unpredictable damage or loss.
|
| 225 |
+
|
| 226 |
+
You may use a pre-release SDK at your own risk, understanding
|
| 227 |
+
that pre-release SDKs are not intended for use in production
|
| 228 |
+
or business-critical systems.
|
| 229 |
+
|
| 230 |
+
NVIDIA may choose not to make available a commercial version
|
| 231 |
+
of any pre-release SDK. NVIDIA may also choose to abandon
|
| 232 |
+
development and terminate the availability of a pre-release
|
| 233 |
+
SDK at any time without liability.
|
| 234 |
+
|
| 235 |
+
|
| 236 |
+
1.1.5. Updates
|
| 237 |
+
|
| 238 |
+
NVIDIA may, at its option, make available patches, workarounds
|
| 239 |
+
or other updates to this SDK. Unless the updates are provided
|
| 240 |
+
with their separate governing terms, they are deemed part of
|
| 241 |
+
the SDK licensed to you as provided in this Agreement. You
|
| 242 |
+
agree that the form and content of the SDK that NVIDIA
|
| 243 |
+
provides may change without prior notice to you. While NVIDIA
|
| 244 |
+
generally maintains compatibility between versions, NVIDIA may
|
| 245 |
+
in some cases make changes that introduce incompatibilities in
|
| 246 |
+
future versions of the SDK.
|
| 247 |
+
|
| 248 |
+
|
| 249 |
+
1.1.6. Third Party Licenses
|
| 250 |
+
|
| 251 |
+
The SDK may come bundled with, or otherwise include or be
|
| 252 |
+
distributed with, third party software licensed by a NVIDIA
|
| 253 |
+
supplier and/or open source software provided under an open
|
| 254 |
+
source license. Use of third party software is subject to the
|
| 255 |
+
third-party license terms, or in the absence of third party
|
| 256 |
+
terms, the terms of this Agreement. Copyright to third party
|
| 257 |
+
software is held by the copyright holders indicated in the
|
| 258 |
+
third-party software or license.
|
| 259 |
+
|
| 260 |
+
|
| 261 |
+
1.1.7. Reservation of Rights
|
| 262 |
+
|
| 263 |
+
NVIDIA reserves all rights, title, and interest in and to the
|
| 264 |
+
SDK, not expressly granted to you under this Agreement.
|
| 265 |
+
|
| 266 |
+
|
| 267 |
+
1.2. Limitations
|
| 268 |
+
|
| 269 |
+
The following license limitations apply to your use of the
|
| 270 |
+
SDK:
|
| 271 |
+
|
| 272 |
+
1. You may not reverse engineer, decompile or disassemble,
|
| 273 |
+
or remove copyright or other proprietary notices from any
|
| 274 |
+
portion of the SDK or copies of the SDK.
|
| 275 |
+
|
| 276 |
+
2. Except as expressly provided in this Agreement, you may
|
| 277 |
+
not copy, sell, rent, sublicense, transfer, distribute,
|
| 278 |
+
modify, or create derivative works of any portion of the
|
| 279 |
+
SDK. For clarity, you may not distribute or sublicense the
|
| 280 |
+
SDK as a stand-alone product.
|
| 281 |
+
|
| 282 |
+
3. Unless you have an agreement with NVIDIA for this
|
| 283 |
+
purpose, you may not indicate that an application created
|
| 284 |
+
with the SDK is sponsored or endorsed by NVIDIA.
|
| 285 |
+
|
| 286 |
+
4. You may not bypass, disable, or circumvent any
|
| 287 |
+
encryption, security, digital rights management or
|
| 288 |
+
authentication mechanism in the SDK.
|
| 289 |
+
|
| 290 |
+
5. You may not use the SDK in any manner that would cause it
|
| 291 |
+
to become subject to an open source software license. As
|
| 292 |
+
examples, licenses that require as a condition of use,
|
| 293 |
+
modification, and/or distribution that the SDK be:
|
| 294 |
+
|
| 295 |
+
a. Disclosed or distributed in source code form;
|
| 296 |
+
|
| 297 |
+
b. Licensed for the purpose of making derivative works;
|
| 298 |
+
or
|
| 299 |
+
|
| 300 |
+
c. Redistributable at no charge.
|
| 301 |
+
|
| 302 |
+
6. Unless you have an agreement with NVIDIA for this
|
| 303 |
+
purpose, you may not use the SDK with any system or
|
| 304 |
+
application where the use or failure of the system or
|
| 305 |
+
application can reasonably be expected to threaten or
|
| 306 |
+
result in personal injury, death, or catastrophic loss.
|
| 307 |
+
Examples include use in avionics, navigation, military,
|
| 308 |
+
medical, life support or other life critical applications.
|
| 309 |
+
NVIDIA does not design, test or manufacture the SDK for
|
| 310 |
+
these critical uses and NVIDIA shall not be liable to you
|
| 311 |
+
or any third party, in whole or in part, for any claims or
|
| 312 |
+
damages arising from such uses.
|
| 313 |
+
|
| 314 |
+
7. You agree to defend, indemnify and hold harmless NVIDIA
|
| 315 |
+
and its affiliates, and their respective employees,
|
| 316 |
+
contractors, agents, officers and directors, from and
|
| 317 |
+
against any and all claims, damages, obligations, losses,
|
| 318 |
+
liabilities, costs or debt, fines, restitutions and
|
| 319 |
+
expenses (including but not limited to attorney’s fees
|
| 320 |
+
and costs incident to establishing the right of
|
| 321 |
+
indemnification) arising out of or related to your use of
|
| 322 |
+
the SDK outside of the scope of this Agreement, or not in
|
| 323 |
+
compliance with its terms.
|
| 324 |
+
|
| 325 |
+
|
| 326 |
+
1.3. Ownership
|
| 327 |
+
|
| 328 |
+
1. NVIDIA or its licensors hold all rights, title and
|
| 329 |
+
interest in and to the SDK and its modifications and
|
| 330 |
+
derivative works, including their respective intellectual
|
| 331 |
+
property rights, subject to your rights described in this
|
| 332 |
+
section. This SDK may include software and materials from
|
| 333 |
+
NVIDIA’s licensors, and these licensors are intended
|
| 334 |
+
third party beneficiaries that may enforce this Agreement
|
| 335 |
+
with respect to their intellectual property rights.
|
| 336 |
+
|
| 337 |
+
2. You hold all rights, title and interest in and to your
|
| 338 |
+
applications and your derivative works of the sample
|
| 339 |
+
source code delivered in the SDK, including their
|
| 340 |
+
respective intellectual property rights, subject to
|
| 341 |
+
NVIDIA’s rights described in this section.
|
| 342 |
+
|
| 343 |
+
3. You may, but don’t have to, provide to NVIDIA
|
| 344 |
+
suggestions, feature requests or other feedback regarding
|
| 345 |
+
the SDK, including possible enhancements or modifications
|
| 346 |
+
to the SDK. For any feedback that you voluntarily provide,
|
| 347 |
+
you hereby grant NVIDIA and its affiliates a perpetual,
|
| 348 |
+
non-exclusive, worldwide, irrevocable license to use,
|
| 349 |
+
reproduce, modify, license, sublicense (through multiple
|
| 350 |
+
tiers of sublicensees), and distribute (through multiple
|
| 351 |
+
tiers of distributors) it without the payment of any
|
| 352 |
+
royalties or fees to you. NVIDIA will use feedback at its
|
| 353 |
+
choice. NVIDIA is constantly looking for ways to improve
|
| 354 |
+
its products, so you may send feedback to NVIDIA through
|
| 355 |
+
the developer portal at https://developer.nvidia.com.
|
| 356 |
+
|
| 357 |
+
|
| 358 |
+
1.4. No Warranties
|
| 359 |
+
|
| 360 |
+
THE SDK IS PROVIDED BY NVIDIA “AS IS” AND “WITH ALL
|
| 361 |
+
FAULTS.” TO THE MAXIMUM EXTENT PERMITTED BY LAW, NVIDIA AND
|
| 362 |
+
ITS AFFILIATES EXPRESSLY DISCLAIM ALL WARRANTIES OF ANY KIND
|
| 363 |
+
OR NATURE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING,
|
| 364 |
+
BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
|
| 365 |
+
FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, OR THE
|
| 366 |
+
ABSENCE OF ANY DEFECTS THEREIN, WHETHER LATENT OR PATENT. NO
|
| 367 |
+
WARRANTY IS MADE ON THE BASIS OF TRADE USAGE, COURSE OF
|
| 368 |
+
DEALING OR COURSE OF TRADE.
|
| 369 |
+
|
| 370 |
+
|
| 371 |
+
1.5. Limitation of Liability
|
| 372 |
+
|
| 373 |
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, NVIDIA AND ITS
|
| 374 |
+
AFFILIATES SHALL NOT BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
|
| 375 |
+
PUNITIVE OR CONSEQUENTIAL DAMAGES, OR ANY LOST PROFITS, LOSS
|
| 376 |
+
OF USE, LOSS OF DATA OR LOSS OF GOODWILL, OR THE COSTS OF
|
| 377 |
+
PROCURING SUBSTITUTE PRODUCTS, ARISING OUT OF OR IN CONNECTION
|
| 378 |
+
WITH THIS AGREEMENT OR THE USE OR PERFORMANCE OF THE SDK,
|
| 379 |
+
WHETHER SUCH LIABILITY ARISES FROM ANY CLAIM BASED UPON BREACH
|
| 380 |
+
OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE),
|
| 381 |
+
PRODUCT LIABILITY OR ANY OTHER CAUSE OF ACTION OR THEORY OF
|
| 382 |
+
LIABILITY. IN NO EVENT WILL NVIDIA’S AND ITS AFFILIATES
|
| 383 |
+
TOTAL CUMULATIVE LIABILITY UNDER OR ARISING OUT OF THIS
|
| 384 |
+
AGREEMENT EXCEED US$10.00. THE NATURE OF THE LIABILITY OR THE
|
| 385 |
+
NUMBER OF CLAIMS OR SUITS SHALL NOT ENLARGE OR EXTEND THIS
|
| 386 |
+
LIMIT.
|
| 387 |
+
|
| 388 |
+
These exclusions and limitations of liability shall apply
|
| 389 |
+
regardless if NVIDIA or its affiliates have been advised of
|
| 390 |
+
the possibility of such damages, and regardless of whether a
|
| 391 |
+
remedy fails its essential purpose. These exclusions and
|
| 392 |
+
limitations of liability form an essential basis of the
|
| 393 |
+
bargain between the parties, and, absent any of these
|
| 394 |
+
exclusions or limitations of liability, the provisions of this
|
| 395 |
+
Agreement, including, without limitation, the economic terms,
|
| 396 |
+
would be substantially different.
|
| 397 |
+
|
| 398 |
+
|
| 399 |
+
1.6. Termination
|
| 400 |
+
|
| 401 |
+
1. This Agreement will continue to apply until terminated by
|
| 402 |
+
either you or NVIDIA as described below.
|
| 403 |
+
|
| 404 |
+
2. If you want to terminate this Agreement, you may do so by
|
| 405 |
+
stopping to use the SDK.
|
| 406 |
+
|
| 407 |
+
3. NVIDIA may, at any time, terminate this Agreement if:
|
| 408 |
+
|
| 409 |
+
a. (i) you fail to comply with any term of this
|
| 410 |
+
Agreement and the non-compliance is not fixed within
|
| 411 |
+
thirty (30) days following notice from NVIDIA (or
|
| 412 |
+
immediately if you violate NVIDIA’s intellectual
|
| 413 |
+
property rights);
|
| 414 |
+
|
| 415 |
+
b. (ii) you commence or participate in any legal
|
| 416 |
+
proceeding against NVIDIA with respect to the SDK; or
|
| 417 |
+
|
| 418 |
+
c. (iii) NVIDIA decides to no longer provide the SDK in
|
| 419 |
+
a country or, in NVIDIA’s sole discretion, the
|
| 420 |
+
continued use of it is no longer commercially viable.
|
| 421 |
+
|
| 422 |
+
4. Upon any termination of this Agreement, you agree to
|
| 423 |
+
promptly discontinue use of the SDK and destroy all copies
|
| 424 |
+
in your possession or control. Your prior distributions in
|
| 425 |
+
accordance with this Agreement are not affected by the
|
| 426 |
+
termination of this Agreement. Upon written request, you
|
| 427 |
+
will certify in writing that you have complied with your
|
| 428 |
+
commitments under this section. Upon any termination of
|
| 429 |
+
this Agreement all provisions survive except for the
|
| 430 |
+
license grant provisions.
|
| 431 |
+
|
| 432 |
+
|
| 433 |
+
1.7. General
|
| 434 |
+
|
| 435 |
+
If you wish to assign this Agreement or your rights and
|
| 436 |
+
obligations, including by merger, consolidation, dissolution
|
| 437 |
+
or operation of law, contact NVIDIA to ask for permission. Any
|
| 438 |
+
attempted assignment not approved by NVIDIA in writing shall
|
| 439 |
+
be void and of no effect. NVIDIA may assign, delegate or
|
| 440 |
+
transfer this Agreement and its rights and obligations, and if
|
| 441 |
+
to a non-affiliate you will be notified.
|
| 442 |
+
|
| 443 |
+
You agree to cooperate with NVIDIA and provide reasonably
|
| 444 |
+
requested information to verify your compliance with this
|
| 445 |
+
Agreement.
|
| 446 |
+
|
| 447 |
+
This Agreement will be governed in all respects by the laws of
|
| 448 |
+
the United States and of the State of Delaware as those laws
|
| 449 |
+
are applied to contracts entered into and performed entirely
|
| 450 |
+
within Delaware by Delaware residents, without regard to the
|
| 451 |
+
conflicts of laws principles. The United Nations Convention on
|
| 452 |
+
Contracts for the International Sale of Goods is specifically
|
| 453 |
+
disclaimed. You agree to all terms of this Agreement in the
|
| 454 |
+
English language.
|
| 455 |
+
|
| 456 |
+
The state or federal courts residing in Santa Clara County,
|
| 457 |
+
California shall have exclusive jurisdiction over any dispute
|
| 458 |
+
or claim arising out of this Agreement. Notwithstanding this,
|
| 459 |
+
you agree that NVIDIA shall still be allowed to apply for
|
| 460 |
+
injunctive remedies or an equivalent type of urgent legal
|
| 461 |
+
relief in any jurisdiction.
|
| 462 |
+
|
| 463 |
+
If any court of competent jurisdiction determines that any
|
| 464 |
+
provision of this Agreement is illegal, invalid or
|
| 465 |
+
unenforceable, such provision will be construed as limited to
|
| 466 |
+
the extent necessary to be consistent with and fully
|
| 467 |
+
enforceable under the law and the remaining provisions will
|
| 468 |
+
remain in full force and effect. Unless otherwise specified,
|
| 469 |
+
remedies are cumulative.
|
| 470 |
+
|
| 471 |
+
Each party acknowledges and agrees that the other is an
|
| 472 |
+
independent contractor in the performance of this Agreement.
|
| 473 |
+
|
| 474 |
+
The SDK has been developed entirely at private expense and is
|
| 475 |
+
“commercial items” consisting of “commercial computer
|
| 476 |
+
software” and “commercial computer software
|
| 477 |
+
documentation” provided with RESTRICTED RIGHTS. Use,
|
| 478 |
+
duplication or disclosure by the U.S. Government or a U.S.
|
| 479 |
+
Government subcontractor is subject to the restrictions in
|
| 480 |
+
this Agreement pursuant to DFARS 227.7202-3(a) or as set forth
|
| 481 |
+
in subparagraphs (c)(1) and (2) of the Commercial Computer
|
| 482 |
+
Software - Restricted Rights clause at FAR 52.227-19, as
|
| 483 |
+
applicable. Contractor/manufacturer is NVIDIA, 2788 San Tomas
|
| 484 |
+
Expressway, Santa Clara, CA 95051.
|
| 485 |
+
|
| 486 |
+
The SDK is subject to United States export laws and
|
| 487 |
+
regulations. You agree that you will not ship, transfer or
|
| 488 |
+
export the SDK into any country, or use the SDK in any manner,
|
| 489 |
+
prohibited by the United States Bureau of Industry and
|
| 490 |
+
Security or economic sanctions regulations administered by the
|
| 491 |
+
U.S. Department of Treasury’s Office of Foreign Assets
|
| 492 |
+
Control (OFAC), or any applicable export laws, restrictions or
|
| 493 |
+
regulations. These laws include restrictions on destinations,
|
| 494 |
+
end users and end use. By accepting this Agreement, you
|
| 495 |
+
confirm that you are not a resident or citizen of any country
|
| 496 |
+
currently embargoed by the U.S. and that you are not otherwise
|
| 497 |
+
prohibited from receiving the SDK.
|
| 498 |
+
|
| 499 |
+
Any notice delivered by NVIDIA to you under this Agreement
|
| 500 |
+
will be delivered via mail, email or fax. You agree that any
|
| 501 |
+
notices that NVIDIA sends you electronically will satisfy any
|
| 502 |
+
legal communication requirements. Please direct your legal
|
| 503 |
+
notices or other correspondence to NVIDIA Corporation, 2788
|
| 504 |
+
San Tomas Expressway, Santa Clara, California 95051, United
|
| 505 |
+
States of America, Attention: Legal Department.
|
| 506 |
+
|
| 507 |
+
This Agreement and any exhibits incorporated into this
|
| 508 |
+
Agreement constitute the entire agreement of the parties with
|
| 509 |
+
respect to the subject matter of this Agreement and supersede
|
| 510 |
+
all prior negotiations or documentation exchanged between the
|
| 511 |
+
parties relating to this SDK license. Any additional and/or
|
| 512 |
+
conflicting terms on documents issued by you are null, void,
|
| 513 |
+
and invalid. Any amendment or waiver under this Agreement
|
| 514 |
+
shall be in writing and signed by representatives of both
|
| 515 |
+
parties.
|
| 516 |
+
|
| 517 |
+
|
| 518 |
+
2. CUDA Toolkit Supplement to Software License Agreement for
|
| 519 |
+
NVIDIA Software Development Kits
|
| 520 |
+
------------------------------------------------------------
|
| 521 |
+
|
| 522 |
+
|
| 523 |
+
Release date: August 16, 2018
|
| 524 |
+
-----------------------------
|
| 525 |
+
|
| 526 |
+
The terms in this supplement govern your use of the NVIDIA
|
| 527 |
+
CUDA Toolkit SDK under the terms of your license agreement
|
| 528 |
+
(“Agreement”) as modified by this supplement. Capitalized
|
| 529 |
+
terms used but not defined below have the meaning assigned to
|
| 530 |
+
them in the Agreement.
|
| 531 |
+
|
| 532 |
+
This supplement is an exhibit to the Agreement and is
|
| 533 |
+
incorporated as an integral part of the Agreement. In the
|
| 534 |
+
event of conflict between the terms in this supplement and the
|
| 535 |
+
terms in the Agreement, the terms in this supplement govern.
|
| 536 |
+
|
| 537 |
+
|
| 538 |
+
2.1. License Scope
|
| 539 |
+
|
| 540 |
+
The SDK is licensed for you to develop applications only for
|
| 541 |
+
use in systems with NVIDIA GPUs.
|
| 542 |
+
|
| 543 |
+
|
| 544 |
+
2.2. Distribution
|
| 545 |
+
|
| 546 |
+
The portions of the SDK that are distributable under the
|
| 547 |
+
Agreement are listed in Attachment A.
|
| 548 |
+
|
| 549 |
+
|
| 550 |
+
2.3. Operating Systems
|
| 551 |
+
|
| 552 |
+
Those portions of the SDK designed exclusively for use on the
|
| 553 |
+
Linux or FreeBSD operating systems, or other operating systems
|
| 554 |
+
derived from the source code to these operating systems, may
|
| 555 |
+
be copied and redistributed for use in accordance with this
|
| 556 |
+
Agreement, provided that the object code files are not
|
| 557 |
+
modified in any way (except for unzipping of compressed
|
| 558 |
+
files).
|
| 559 |
+
|
| 560 |
+
|
| 561 |
+
2.4. Audio and Video Encoders and Decoders
|
| 562 |
+
|
| 563 |
+
You acknowledge and agree that it is your sole responsibility
|
| 564 |
+
to obtain any additional third-party licenses required to
|
| 565 |
+
make, have made, use, have used, sell, import, and offer for
|
| 566 |
+
sale your products or services that include or incorporate any
|
| 567 |
+
third-party software and content relating to audio and/or
|
| 568 |
+
video encoders and decoders from, including but not limited
|
| 569 |
+
to, Microsoft, Thomson, Fraunhofer IIS, Sisvel S.p.A.,
|
| 570 |
+
MPEG-LA, and Coding Technologies. NVIDIA does not grant to you
|
| 571 |
+
under this Agreement any necessary patent or other rights with
|
| 572 |
+
respect to any audio and/or video encoders and decoders.
|
| 573 |
+
|
| 574 |
+
|
| 575 |
+
2.5. Licensing
|
| 576 |
+
|
| 577 |
+
If the distribution terms in this Agreement are not suitable
|
| 578 |
+
for your organization, or for any questions regarding this
|
| 579 |
+
Agreement, please contact NVIDIA at
|
| 580 |
+
nvidia-compute-license-questions@nvidia.com.
|
| 581 |
+
|
| 582 |
+
|
| 583 |
+
2.6. Attachment A
|
| 584 |
+
|
| 585 |
+
The following portions of the SDK are distributable under the
|
| 586 |
+
Agreement:
|
| 587 |
+
|
| 588 |
+
Component
|
| 589 |
+
|
| 590 |
+
CUDA Runtime
|
| 591 |
+
|
| 592 |
+
Windows
|
| 593 |
+
|
| 594 |
+
cudart.dll, cudart_static.lib, cudadevrt.lib
|
| 595 |
+
|
| 596 |
+
Mac OSX
|
| 597 |
+
|
| 598 |
+
libcudart.dylib, libcudart_static.a, libcudadevrt.a
|
| 599 |
+
|
| 600 |
+
Linux
|
| 601 |
+
|
| 602 |
+
libcudart.so, libcudart_static.a, libcudadevrt.a
|
| 603 |
+
|
| 604 |
+
Android
|
| 605 |
+
|
| 606 |
+
libcudart.so, libcudart_static.a, libcudadevrt.a
|
| 607 |
+
|
| 608 |
+
Component
|
| 609 |
+
|
| 610 |
+
CUDA FFT Library
|
| 611 |
+
|
| 612 |
+
Windows
|
| 613 |
+
|
| 614 |
+
cufft.dll, cufftw.dll, cufft.lib, cufftw.lib
|
| 615 |
+
|
| 616 |
+
Mac OSX
|
| 617 |
+
|
| 618 |
+
libcufft.dylib, libcufft_static.a, libcufftw.dylib,
|
| 619 |
+
libcufftw_static.a
|
| 620 |
+
|
| 621 |
+
Linux
|
| 622 |
+
|
| 623 |
+
libcufft.so, libcufft_static.a, libcufftw.so,
|
| 624 |
+
libcufftw_static.a
|
| 625 |
+
|
| 626 |
+
Android
|
| 627 |
+
|
| 628 |
+
libcufft.so, libcufft_static.a, libcufftw.so,
|
| 629 |
+
libcufftw_static.a
|
| 630 |
+
|
| 631 |
+
Component
|
| 632 |
+
|
| 633 |
+
CUDA BLAS Library
|
| 634 |
+
|
| 635 |
+
Windows
|
| 636 |
+
|
| 637 |
+
cublas.dll, cublasLt.dll
|
| 638 |
+
|
| 639 |
+
Mac OSX
|
| 640 |
+
|
| 641 |
+
libcublas.dylib, libcublasLt.dylib, libcublas_static.a,
|
| 642 |
+
libcublasLt_static.a
|
| 643 |
+
|
| 644 |
+
Linux
|
| 645 |
+
|
| 646 |
+
libcublas.so, libcublasLt.so, libcublas_static.a,
|
| 647 |
+
libcublasLt_static.a
|
| 648 |
+
|
| 649 |
+
Android
|
| 650 |
+
|
| 651 |
+
libcublas.so, libcublasLt.so, libcublas_static.a,
|
| 652 |
+
libcublasLt_static.a
|
| 653 |
+
|
| 654 |
+
Component
|
| 655 |
+
|
| 656 |
+
NVIDIA "Drop-in" BLAS Library
|
| 657 |
+
|
| 658 |
+
Windows
|
| 659 |
+
|
| 660 |
+
nvblas.dll
|
| 661 |
+
|
| 662 |
+
Mac OSX
|
| 663 |
+
|
| 664 |
+
libnvblas.dylib
|
| 665 |
+
|
| 666 |
+
Linux
|
| 667 |
+
|
| 668 |
+
libnvblas.so
|
| 669 |
+
|
| 670 |
+
Component
|
| 671 |
+
|
| 672 |
+
CUDA Sparse Matrix Library
|
| 673 |
+
|
| 674 |
+
Windows
|
| 675 |
+
|
| 676 |
+
cusparse.dll, cusparse.lib
|
| 677 |
+
|
| 678 |
+
Mac OSX
|
| 679 |
+
|
| 680 |
+
libcusparse.dylib, libcusparse_static.a
|
| 681 |
+
|
| 682 |
+
Linux
|
| 683 |
+
|
| 684 |
+
libcusparse.so, libcusparse_static.a
|
| 685 |
+
|
| 686 |
+
Android
|
| 687 |
+
|
| 688 |
+
libcusparse.so, libcusparse_static.a
|
| 689 |
+
|
| 690 |
+
Component
|
| 691 |
+
|
| 692 |
+
CUDA Linear Solver Library
|
| 693 |
+
|
| 694 |
+
Windows
|
| 695 |
+
|
| 696 |
+
cusolver.dll, cusolver.lib
|
| 697 |
+
|
| 698 |
+
Mac OSX
|
| 699 |
+
|
| 700 |
+
libcusolver.dylib, libcusolver_static.a
|
| 701 |
+
|
| 702 |
+
Linux
|
| 703 |
+
|
| 704 |
+
libcusolver.so, libcusolver_static.a
|
| 705 |
+
|
| 706 |
+
Android
|
| 707 |
+
|
| 708 |
+
libcusolver.so, libcusolver_static.a
|
| 709 |
+
|
| 710 |
+
Component
|
| 711 |
+
|
| 712 |
+
CUDA Random Number Generation Library
|
| 713 |
+
|
| 714 |
+
Windows
|
| 715 |
+
|
| 716 |
+
curand.dll, curand.lib
|
| 717 |
+
|
| 718 |
+
Mac OSX
|
| 719 |
+
|
| 720 |
+
libcurand.dylib, libcurand_static.a
|
| 721 |
+
|
| 722 |
+
Linux
|
| 723 |
+
|
| 724 |
+
libcurand.so, libcurand_static.a
|
| 725 |
+
|
| 726 |
+
Android
|
| 727 |
+
|
| 728 |
+
libcurand.so, libcurand_static.a
|
| 729 |
+
|
| 730 |
+
Component
|
| 731 |
+
|
| 732 |
+
CUDA Accelerated Graph Library
|
| 733 |
+
|
| 734 |
+
Component
|
| 735 |
+
|
| 736 |
+
NVIDIA Performance Primitives Library
|
| 737 |
+
|
| 738 |
+
Windows
|
| 739 |
+
|
| 740 |
+
nppc.dll, nppc.lib, nppial.dll, nppial.lib, nppicc.dll,
|
| 741 |
+
nppicc.lib, nppicom.dll, nppicom.lib, nppidei.dll,
|
| 742 |
+
nppidei.lib, nppif.dll, nppif.lib, nppig.dll, nppig.lib,
|
| 743 |
+
nppim.dll, nppim.lib, nppist.dll, nppist.lib, nppisu.dll,
|
| 744 |
+
nppisu.lib, nppitc.dll, nppitc.lib, npps.dll, npps.lib
|
| 745 |
+
|
| 746 |
+
Mac OSX
|
| 747 |
+
|
| 748 |
+
libnppc.dylib, libnppc_static.a, libnppial.dylib,
|
| 749 |
+
libnppial_static.a, libnppicc.dylib, libnppicc_static.a,
|
| 750 |
+
libnppicom.dylib, libnppicom_static.a, libnppidei.dylib,
|
| 751 |
+
libnppidei_static.a, libnppif.dylib, libnppif_static.a,
|
| 752 |
+
libnppig.dylib, libnppig_static.a, libnppim.dylib,
|
| 753 |
+
libnppisu_static.a, libnppitc.dylib, libnppitc_static.a,
|
| 754 |
+
libnpps.dylib, libnpps_static.a
|
| 755 |
+
|
| 756 |
+
Linux
|
| 757 |
+
|
| 758 |
+
libnppc.so, libnppc_static.a, libnppial.so,
|
| 759 |
+
libnppial_static.a, libnppicc.so, libnppicc_static.a,
|
| 760 |
+
libnppicom.so, libnppicom_static.a, libnppidei.so,
|
| 761 |
+
libnppidei_static.a, libnppif.so, libnppif_static.a
|
| 762 |
+
libnppig.so, libnppig_static.a, libnppim.so,
|
| 763 |
+
libnppim_static.a, libnppist.so, libnppist_static.a,
|
| 764 |
+
libnppisu.so, libnppisu_static.a, libnppitc.so
|
| 765 |
+
libnppitc_static.a, libnpps.so, libnpps_static.a
|
| 766 |
+
|
| 767 |
+
Android
|
| 768 |
+
|
| 769 |
+
libnppc.so, libnppc_static.a, libnppial.so,
|
| 770 |
+
libnppial_static.a, libnppicc.so, libnppicc_static.a,
|
| 771 |
+
libnppicom.so, libnppicom_static.a, libnppidei.so,
|
| 772 |
+
libnppidei_static.a, libnppif.so, libnppif_static.a
|
| 773 |
+
libnppig.so, libnppig_static.a, libnppim.so,
|
| 774 |
+
libnppim_static.a, libnppist.so, libnppist_static.a,
|
| 775 |
+
libnppisu.so, libnppisu_static.a, libnppitc.so
|
| 776 |
+
libnppitc_static.a, libnpps.so, libnpps_static.a
|
| 777 |
+
|
| 778 |
+
Component
|
| 779 |
+
|
| 780 |
+
NVIDIA JPEG Library
|
| 781 |
+
|
| 782 |
+
Linux
|
| 783 |
+
|
| 784 |
+
libnvjpeg.so, libnvjpeg_static.a
|
| 785 |
+
|
| 786 |
+
Component
|
| 787 |
+
|
| 788 |
+
Internal common library required for statically linking to
|
| 789 |
+
cuBLAS, cuSPARSE, cuFFT, cuRAND, nvJPEG and NPP
|
| 790 |
+
|
| 791 |
+
Mac OSX
|
| 792 |
+
|
| 793 |
+
libculibos.a
|
| 794 |
+
|
| 795 |
+
Linux
|
| 796 |
+
|
| 797 |
+
libculibos.a
|
| 798 |
+
|
| 799 |
+
Component
|
| 800 |
+
|
| 801 |
+
NVIDIA Runtime Compilation Library and Header
|
| 802 |
+
|
| 803 |
+
All
|
| 804 |
+
|
| 805 |
+
nvrtc.h
|
| 806 |
+
|
| 807 |
+
Windows
|
| 808 |
+
|
| 809 |
+
nvrtc.dll, nvrtc-builtins.dll
|
| 810 |
+
|
| 811 |
+
Mac OSX
|
| 812 |
+
|
| 813 |
+
libnvrtc.dylib, libnvrtc-builtins.dylib
|
| 814 |
+
|
| 815 |
+
Linux
|
| 816 |
+
|
| 817 |
+
libnvrtc.so, libnvrtc-builtins.so
|
| 818 |
+
|
| 819 |
+
Component
|
| 820 |
+
|
| 821 |
+
NVIDIA Optimizing Compiler Library
|
| 822 |
+
|
| 823 |
+
Windows
|
| 824 |
+
|
| 825 |
+
nvvm.dll
|
| 826 |
+
|
| 827 |
+
Mac OSX
|
| 828 |
+
|
| 829 |
+
libnvvm.dylib
|
| 830 |
+
|
| 831 |
+
Linux
|
| 832 |
+
|
| 833 |
+
libnvvm.so
|
| 834 |
+
|
| 835 |
+
Component
|
| 836 |
+
|
| 837 |
+
NVIDIA Common Device Math Functions Library
|
| 838 |
+
|
| 839 |
+
Windows
|
| 840 |
+
|
| 841 |
+
libdevice.10.bc
|
| 842 |
+
|
| 843 |
+
Mac OSX
|
| 844 |
+
|
| 845 |
+
libdevice.10.bc
|
| 846 |
+
|
| 847 |
+
Linux
|
| 848 |
+
|
| 849 |
+
libdevice.10.bc
|
| 850 |
+
|
| 851 |
+
Component
|
| 852 |
+
|
| 853 |
+
CUDA Occupancy Calculation Header Library
|
| 854 |
+
|
| 855 |
+
All
|
| 856 |
+
|
| 857 |
+
cuda_occupancy.h
|
| 858 |
+
|
| 859 |
+
Component
|
| 860 |
+
|
| 861 |
+
CUDA Half Precision Headers
|
| 862 |
+
|
| 863 |
+
All
|
| 864 |
+
|
| 865 |
+
cuda_fp16.h, cuda_fp16.hpp
|
| 866 |
+
|
| 867 |
+
Component
|
| 868 |
+
|
| 869 |
+
CUDA Profiling Tools Interface (CUPTI) Library
|
| 870 |
+
|
| 871 |
+
Windows
|
| 872 |
+
|
| 873 |
+
cupti.dll
|
| 874 |
+
|
| 875 |
+
Mac OSX
|
| 876 |
+
|
| 877 |
+
libcupti.dylib
|
| 878 |
+
|
| 879 |
+
Linux
|
| 880 |
+
|
| 881 |
+
libcupti.so
|
| 882 |
+
|
| 883 |
+
Component
|
| 884 |
+
|
| 885 |
+
NVIDIA Tools Extension Library
|
| 886 |
+
|
| 887 |
+
Windows
|
| 888 |
+
|
| 889 |
+
nvToolsExt.dll, nvToolsExt.lib
|
| 890 |
+
|
| 891 |
+
Mac OSX
|
| 892 |
+
|
| 893 |
+
libnvToolsExt.dylib
|
| 894 |
+
|
| 895 |
+
Linux
|
| 896 |
+
|
| 897 |
+
libnvToolsExt.so
|
| 898 |
+
|
| 899 |
+
Component
|
| 900 |
+
|
| 901 |
+
NVIDIA CUDA Driver Libraries
|
| 902 |
+
|
| 903 |
+
Linux
|
| 904 |
+
|
| 905 |
+
libcuda.so, libnvidia-fatbinaryloader.so,
|
| 906 |
+
libnvidia-ptxjitcompiler.so
|
| 907 |
+
|
| 908 |
+
The NVIDIA CUDA Driver Libraries are only distributable in
|
| 909 |
+
applications that meet this criteria:
|
| 910 |
+
|
| 911 |
+
1. The application was developed starting from a NVIDIA CUDA
|
| 912 |
+
container obtained from Docker Hub or the NVIDIA GPU
|
| 913 |
+
Cloud, and
|
| 914 |
+
|
| 915 |
+
2. The resulting application is packaged as a Docker
|
| 916 |
+
container and distributed to users on Docker Hub or the
|
| 917 |
+
NVIDIA GPU Cloud only.
|
| 918 |
+
|
| 919 |
+
|
| 920 |
+
2.7. Attachment B
|
| 921 |
+
|
| 922 |
+
|
| 923 |
+
Additional Licensing Obligations
|
| 924 |
+
|
| 925 |
+
The following third party components included in the SOFTWARE
|
| 926 |
+
are licensed to Licensee pursuant to the following terms and
|
| 927 |
+
conditions:
|
| 928 |
+
|
| 929 |
+
1. Licensee's use of the GDB third party component is
|
| 930 |
+
subject to the terms and conditions of GNU GPL v3:
|
| 931 |
+
|
| 932 |
+
This product includes copyrighted third-party software licensed
|
| 933 |
+
under the terms of the GNU General Public License v3 ("GPL v3").
|
| 934 |
+
All third-party software packages are copyright by their respective
|
| 935 |
+
authors. GPL v3 terms and conditions are hereby incorporated into
|
| 936 |
+
the Agreement by this reference: http://www.gnu.org/licenses/gpl.txt
|
| 937 |
+
|
| 938 |
+
Consistent with these licensing requirements, the software
|
| 939 |
+
listed below is provided under the terms of the specified
|
| 940 |
+
open source software licenses. To obtain source code for
|
| 941 |
+
software provided under licenses that require
|
| 942 |
+
redistribution of source code, including the GNU General
|
| 943 |
+
Public License (GPL) and GNU Lesser General Public License
|
| 944 |
+
(LGPL), contact oss-requests@nvidia.com. This offer is
|
| 945 |
+
valid for a period of three (3) years from the date of the
|
| 946 |
+
distribution of this product by NVIDIA CORPORATION.
|
| 947 |
+
|
| 948 |
+
Component License
|
| 949 |
+
CUDA-GDB GPL v3
|
| 950 |
+
|
| 951 |
+
2. Licensee represents and warrants that any and all third
|
| 952 |
+
party licensing and/or royalty payment obligations in
|
| 953 |
+
connection with Licensee's use of the H.264 video codecs
|
| 954 |
+
are solely the responsibility of Licensee.
|
| 955 |
+
|
| 956 |
+
3. Licensee's use of the Thrust library is subject to the
|
| 957 |
+
terms and conditions of the Apache License Version 2.0.
|
| 958 |
+
All third-party software packages are copyright by their
|
| 959 |
+
respective authors. Apache License Version 2.0 terms and
|
| 960 |
+
conditions are hereby incorporated into the Agreement by
|
| 961 |
+
this reference.
|
| 962 |
+
http://www.apache.org/licenses/LICENSE-2.0.html
|
| 963 |
+
|
| 964 |
+
In addition, Licensee acknowledges the following notice:
|
| 965 |
+
Thrust includes source code from the Boost Iterator,
|
| 966 |
+
Tuple, System, and Random Number libraries.
|
| 967 |
+
|
| 968 |
+
Boost Software License - Version 1.0 - August 17th, 2003
|
| 969 |
+
. . . .
|
| 970 |
+
|
| 971 |
+
Permission is hereby granted, free of charge, to any person or
|
| 972 |
+
organization obtaining a copy of the software and accompanying
|
| 973 |
+
documentation covered by this license (the "Software") to use,
|
| 974 |
+
reproduce, display, distribute, execute, and transmit the Software,
|
| 975 |
+
and to prepare derivative works of the Software, and to permit
|
| 976 |
+
third-parties to whom the Software is furnished to do so, all
|
| 977 |
+
subject to the following:
|
| 978 |
+
|
| 979 |
+
The copyright notices in the Software and this entire statement,
|
| 980 |
+
including the above license grant, this restriction and the following
|
| 981 |
+
disclaimer, must be included in all copies of the Software, in whole
|
| 982 |
+
or in part, and all derivative works of the Software, unless such
|
| 983 |
+
copies or derivative works are solely in the form of machine-executable
|
| 984 |
+
object code generated by a source language processor.
|
| 985 |
+
|
| 986 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 987 |
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 988 |
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
|
| 989 |
+
NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
|
| 990 |
+
ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR
|
| 991 |
+
OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING
|
| 992 |
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
| 993 |
+
OTHER DEALINGS IN THE SOFTWARE.
|
| 994 |
+
|
| 995 |
+
4. Licensee's use of the LLVM third party component is
|
| 996 |
+
subject to the following terms and conditions:
|
| 997 |
+
|
| 998 |
+
======================================================
|
| 999 |
+
LLVM Release License
|
| 1000 |
+
======================================================
|
| 1001 |
+
University of Illinois/NCSA
|
| 1002 |
+
Open Source License
|
| 1003 |
+
|
| 1004 |
+
Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign.
|
| 1005 |
+
All rights reserved.
|
| 1006 |
+
|
| 1007 |
+
Developed by:
|
| 1008 |
+
|
| 1009 |
+
LLVM Team
|
| 1010 |
+
|
| 1011 |
+
University of Illinois at Urbana-Champaign
|
| 1012 |
+
|
| 1013 |
+
http://llvm.org
|
| 1014 |
+
|
| 1015 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 1016 |
+
of this software and associated documentation files (the "Software"), to
|
| 1017 |
+
deal with the Software without restriction, including without limitation the
|
| 1018 |
+
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
| 1019 |
+
sell copies of the Software, and to permit persons to whom the Software is
|
| 1020 |
+
furnished to do so, subject to the following conditions:
|
| 1021 |
+
|
| 1022 |
+
* Redistributions of source code must retain the above copyright notice,
|
| 1023 |
+
this list of conditions and the following disclaimers.
|
| 1024 |
+
|
| 1025 |
+
* Redistributions in binary form must reproduce the above copyright
|
| 1026 |
+
notice, this list of conditions and the following disclaimers in the
|
| 1027 |
+
documentation and/or other materials provided with the distribution.
|
| 1028 |
+
|
| 1029 |
+
* Neither the names of the LLVM Team, University of Illinois at Urbana-
|
| 1030 |
+
Champaign, nor the names of its contributors may be used to endorse or
|
| 1031 |
+
promote products derived from this Software without specific prior
|
| 1032 |
+
written permission.
|
| 1033 |
+
|
| 1034 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 1035 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 1036 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
| 1037 |
+
THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
| 1038 |
+
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
| 1039 |
+
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
| 1040 |
+
DEALINGS WITH THE SOFTWARE.
|
| 1041 |
+
|
| 1042 |
+
5. Licensee's use (e.g. nvprof) of the PCRE third party
|
| 1043 |
+
component is subject to the following terms and
|
| 1044 |
+
conditions:
|
| 1045 |
+
|
| 1046 |
+
------------
|
| 1047 |
+
PCRE LICENCE
|
| 1048 |
+
------------
|
| 1049 |
+
PCRE is a library of functions to support regular expressions whose syntax
|
| 1050 |
+
and semantics are as close as possible to those of the Perl 5 language.
|
| 1051 |
+
Release 8 of PCRE is distributed under the terms of the "BSD" licence, as
|
| 1052 |
+
specified below. The documentation for PCRE, supplied in the "doc"
|
| 1053 |
+
directory, is distributed under the same terms as the software itself. The
|
| 1054 |
+
basic library functions are written in C and are freestanding. Also
|
| 1055 |
+
included in the distribution is a set of C++ wrapper functions, and a just-
|
| 1056 |
+
in-time compiler that can be used to optimize pattern matching. These are
|
| 1057 |
+
both optional features that can be omitted when the library is built.
|
| 1058 |
+
|
| 1059 |
+
THE BASIC LIBRARY FUNCTIONS
|
| 1060 |
+
---------------------------
|
| 1061 |
+
Written by: Philip Hazel
|
| 1062 |
+
Email local part: ph10
|
| 1063 |
+
Email domain: cam.ac.uk
|
| 1064 |
+
University of Cambridge Computing Service,
|
| 1065 |
+
Cambridge, England.
|
| 1066 |
+
Copyright (c) 1997-2012 University of Cambridge
|
| 1067 |
+
All rights reserved.
|
| 1068 |
+
|
| 1069 |
+
PCRE JUST-IN-TIME COMPILATION SUPPORT
|
| 1070 |
+
-------------------------------------
|
| 1071 |
+
Written by: Zoltan Herczeg
|
| 1072 |
+
Email local part: hzmester
|
| 1073 |
+
Emain domain: freemail.hu
|
| 1074 |
+
Copyright(c) 2010-2012 Zoltan Herczeg
|
| 1075 |
+
All rights reserved.
|
| 1076 |
+
|
| 1077 |
+
STACK-LESS JUST-IN-TIME COMPILER
|
| 1078 |
+
--------------------------------
|
| 1079 |
+
Written by: Zoltan Herczeg
|
| 1080 |
+
Email local part: hzmester
|
| 1081 |
+
Emain domain: freemail.hu
|
| 1082 |
+
Copyright(c) 2009-2012 Zoltan Herczeg
|
| 1083 |
+
All rights reserved.
|
| 1084 |
+
|
| 1085 |
+
THE C++ WRAPPER FUNCTIONS
|
| 1086 |
+
-------------------------
|
| 1087 |
+
Contributed by: Google Inc.
|
| 1088 |
+
Copyright (c) 2007-2012, Google Inc.
|
| 1089 |
+
All rights reserved.
|
| 1090 |
+
|
| 1091 |
+
THE "BSD" LICENCE
|
| 1092 |
+
-----------------
|
| 1093 |
+
Redistribution and use in source and binary forms, with or without
|
| 1094 |
+
modification, are permitted provided that the following conditions are met:
|
| 1095 |
+
|
| 1096 |
+
* Redistributions of source code must retain the above copyright notice,
|
| 1097 |
+
this list of conditions and the following disclaimer.
|
| 1098 |
+
|
| 1099 |
+
* Redistributions in binary form must reproduce the above copyright
|
| 1100 |
+
notice, this list of conditions and the following disclaimer in the
|
| 1101 |
+
documentation and/or other materials provided with the distribution.
|
| 1102 |
+
|
| 1103 |
+
* Neither the name of the University of Cambridge nor the name of Google
|
| 1104 |
+
Inc. nor the names of their contributors may be used to endorse or
|
| 1105 |
+
promote products derived from this software without specific prior
|
| 1106 |
+
written permission.
|
| 1107 |
+
|
| 1108 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
| 1109 |
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| 1110 |
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
| 1111 |
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
| 1112 |
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
| 1113 |
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
| 1114 |
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
| 1115 |
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
| 1116 |
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
| 1117 |
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
| 1118 |
+
POSSIBILITY OF SUCH DAMAGE.
|
| 1119 |
+
|
| 1120 |
+
6. Some of the cuBLAS library routines were written by or
|
| 1121 |
+
derived from code written by Vasily Volkov and are subject
|
| 1122 |
+
to the Modified Berkeley Software Distribution License as
|
| 1123 |
+
follows:
|
| 1124 |
+
|
| 1125 |
+
Copyright (c) 2007-2009, Regents of the University of California
|
| 1126 |
+
|
| 1127 |
+
All rights reserved.
|
| 1128 |
+
|
| 1129 |
+
Redistribution and use in source and binary forms, with or without
|
| 1130 |
+
modification, are permitted provided that the following conditions are
|
| 1131 |
+
met:
|
| 1132 |
+
* Redistributions of source code must retain the above copyright
|
| 1133 |
+
notice, this list of conditions and the following disclaimer.
|
| 1134 |
+
* Redistributions in binary form must reproduce the above
|
| 1135 |
+
copyright notice, this list of conditions and the following
|
| 1136 |
+
disclaimer in the documentation and/or other materials provided
|
| 1137 |
+
with the distribution.
|
| 1138 |
+
* Neither the name of the University of California, Berkeley nor
|
| 1139 |
+
the names of its contributors may be used to endorse or promote
|
| 1140 |
+
products derived from this software without specific prior
|
| 1141 |
+
written permission.
|
| 1142 |
+
|
| 1143 |
+
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
| 1144 |
+
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
| 1145 |
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
| 1146 |
+
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
|
| 1147 |
+
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
| 1148 |
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
| 1149 |
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
| 1150 |
+
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
| 1151 |
+
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
| 1152 |
+
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
| 1153 |
+
POSSIBILITY OF SUCH DAMAGE.
|
| 1154 |
+
|
| 1155 |
+
7. Some of the cuBLAS library routines were written by or
|
| 1156 |
+
derived from code written by Davide Barbieri and are
|
| 1157 |
+
subject to the Modified Berkeley Software Distribution
|
| 1158 |
+
License as follows:
|
| 1159 |
+
|
| 1160 |
+
Copyright (c) 2008-2009 Davide Barbieri @ University of Rome Tor Vergata.
|
| 1161 |
+
|
| 1162 |
+
All rights reserved.
|
| 1163 |
+
|
| 1164 |
+
Redistribution and use in source and binary forms, with or without
|
| 1165 |
+
modification, are permitted provided that the following conditions are
|
| 1166 |
+
met:
|
| 1167 |
+
* Redistributions of source code must retain the above copyright
|
| 1168 |
+
notice, this list of conditions and the following disclaimer.
|
| 1169 |
+
* Redistributions in binary form must reproduce the above
|
| 1170 |
+
copyright notice, this list of conditions and the following
|
| 1171 |
+
disclaimer in the documentation and/or other materials provided
|
| 1172 |
+
with the distribution.
|
| 1173 |
+
* The name of the author may not be used to endorse or promote
|
| 1174 |
+
products derived from this software without specific prior
|
| 1175 |
+
written permission.
|
| 1176 |
+
|
| 1177 |
+
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
| 1178 |
+
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
| 1179 |
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
| 1180 |
+
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
|
| 1181 |
+
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
| 1182 |
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
| 1183 |
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
| 1184 |
+
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
| 1185 |
+
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
| 1186 |
+
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
| 1187 |
+
POSSIBILITY OF SUCH DAMAGE.
|
| 1188 |
+
|
| 1189 |
+
8. Some of the cuBLAS library routines were derived from
|
| 1190 |
+
code developed by the University of Tennessee and are
|
| 1191 |
+
subject to the Modified Berkeley Software Distribution
|
| 1192 |
+
License as follows:
|
| 1193 |
+
|
| 1194 |
+
Copyright (c) 2010 The University of Tennessee.
|
| 1195 |
+
|
| 1196 |
+
All rights reserved.
|
| 1197 |
+
|
| 1198 |
+
Redistribution and use in source and binary forms, with or without
|
| 1199 |
+
modification, are permitted provided that the following conditions are
|
| 1200 |
+
met:
|
| 1201 |
+
* Redistributions of source code must retain the above copyright
|
| 1202 |
+
notice, this list of conditions and the following disclaimer.
|
| 1203 |
+
* Redistributions in binary form must reproduce the above
|
| 1204 |
+
copyright notice, this list of conditions and the following
|
| 1205 |
+
disclaimer listed in this license in the documentation and/or
|
| 1206 |
+
other materials provided with the distribution.
|
| 1207 |
+
* Neither the name of the copyright holders nor the names of its
|
| 1208 |
+
contributors may be used to endorse or promote products derived
|
| 1209 |
+
from this software without specific prior written permission.
|
| 1210 |
+
|
| 1211 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| 1212 |
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| 1213 |
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| 1214 |
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| 1215 |
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| 1216 |
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| 1217 |
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| 1218 |
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| 1219 |
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| 1220 |
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| 1221 |
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| 1222 |
+
|
| 1223 |
+
9. Some of the cuBLAS library routines were written by or
|
| 1224 |
+
derived from code written by Jonathan Hogg and are subject
|
| 1225 |
+
to the Modified Berkeley Software Distribution License as
|
| 1226 |
+
follows:
|
| 1227 |
+
|
| 1228 |
+
Copyright (c) 2012, The Science and Technology Facilities Council (STFC).
|
| 1229 |
+
|
| 1230 |
+
All rights reserved.
|
| 1231 |
+
|
| 1232 |
+
Redistribution and use in source and binary forms, with or without
|
| 1233 |
+
modification, are permitted provided that the following conditions are
|
| 1234 |
+
met:
|
| 1235 |
+
* Redistributions of source code must retain the above copyright
|
| 1236 |
+
notice, this list of conditions and the following disclaimer.
|
| 1237 |
+
* Redistributions in binary form must reproduce the above
|
| 1238 |
+
copyright notice, this list of conditions and the following
|
| 1239 |
+
disclaimer in the documentation and/or other materials provided
|
| 1240 |
+
with the distribution.
|
| 1241 |
+
* Neither the name of the STFC nor the names of its contributors
|
| 1242 |
+
may be used to endorse or promote products derived from this
|
| 1243 |
+
software without specific prior written permission.
|
| 1244 |
+
|
| 1245 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| 1246 |
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| 1247 |
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| 1248 |
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE STFC BE
|
| 1249 |
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
| 1250 |
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
| 1251 |
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
| 1252 |
+
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
| 1253 |
+
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
| 1254 |
+
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
| 1255 |
+
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| 1256 |
+
|
| 1257 |
+
10. Some of the cuBLAS library routines were written by or
|
| 1258 |
+
derived from code written by Ahmad M. Abdelfattah, David
|
| 1259 |
+
Keyes, and Hatem Ltaief, and are subject to the Apache
|
| 1260 |
+
License, Version 2.0, as follows:
|
| 1261 |
+
|
| 1262 |
+
-- (C) Copyright 2013 King Abdullah University of Science and Technology
|
| 1263 |
+
Authors:
|
| 1264 |
+
Ahmad Abdelfattah (ahmad.ahmad@kaust.edu.sa)
|
| 1265 |
+
David Keyes (david.keyes@kaust.edu.sa)
|
| 1266 |
+
Hatem Ltaief (hatem.ltaief@kaust.edu.sa)
|
| 1267 |
+
|
| 1268 |
+
Redistribution and use in source and binary forms, with or without
|
| 1269 |
+
modification, are permitted provided that the following conditions
|
| 1270 |
+
are met:
|
| 1271 |
+
|
| 1272 |
+
* Redistributions of source code must retain the above copyright
|
| 1273 |
+
notice, this list of conditions and the following disclaimer.
|
| 1274 |
+
* Redistributions in binary form must reproduce the above copyright
|
| 1275 |
+
notice, this list of conditions and the following disclaimer in the
|
| 1276 |
+
documentation and/or other materials provided with the distribution.
|
| 1277 |
+
* Neither the name of the King Abdullah University of Science and
|
| 1278 |
+
Technology nor the names of its contributors may be used to endorse
|
| 1279 |
+
or promote products derived from this software without specific prior
|
| 1280 |
+
written permission.
|
| 1281 |
+
|
| 1282 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| 1283 |
+
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| 1284 |
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| 1285 |
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| 1286 |
+
HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| 1287 |
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| 1288 |
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| 1289 |
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| 1290 |
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| 1291 |
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| 1292 |
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
|
| 1293 |
+
|
| 1294 |
+
11. Some of the cuSPARSE library routines were written by or
|
| 1295 |
+
derived from code written by Li-Wen Chang and are subject
|
| 1296 |
+
to the NCSA Open Source License as follows:
|
| 1297 |
+
|
| 1298 |
+
Copyright (c) 2012, University of Illinois.
|
| 1299 |
+
|
| 1300 |
+
All rights reserved.
|
| 1301 |
+
|
| 1302 |
+
Developed by: IMPACT Group, University of Illinois, http://impact.crhc.illinois.edu
|
| 1303 |
+
|
| 1304 |
+
Permission is hereby granted, free of charge, to any person obtaining
|
| 1305 |
+
a copy of this software and associated documentation files (the
|
| 1306 |
+
"Software"), to deal with the Software without restriction, including
|
| 1307 |
+
without limitation the rights to use, copy, modify, merge, publish,
|
| 1308 |
+
distribute, sublicense, and/or sell copies of the Software, and to
|
| 1309 |
+
permit persons to whom the Software is furnished to do so, subject to
|
| 1310 |
+
the following conditions:
|
| 1311 |
+
* Redistributions of source code must retain the above copyright
|
| 1312 |
+
notice, this list of conditions and the following disclaimer.
|
| 1313 |
+
* Redistributions in binary form must reproduce the above
|
| 1314 |
+
copyright notice, this list of conditions and the following
|
| 1315 |
+
disclaimers in the documentation and/or other materials provided
|
| 1316 |
+
with the distribution.
|
| 1317 |
+
* Neither the names of IMPACT Group, University of Illinois, nor
|
| 1318 |
+
the names of its contributors may be used to endorse or promote
|
| 1319 |
+
products derived from this Software without specific prior
|
| 1320 |
+
written permission.
|
| 1321 |
+
|
| 1322 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 1323 |
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 1324 |
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
| 1325 |
+
NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT
|
| 1326 |
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
| 1327 |
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
| 1328 |
+
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
|
| 1329 |
+
SOFTWARE.
|
| 1330 |
+
|
| 1331 |
+
12. Some of the cuRAND library routines were written by or
|
| 1332 |
+
derived from code written by Mutsuo Saito and Makoto
|
| 1333 |
+
Matsumoto and are subject to the following license:
|
| 1334 |
+
|
| 1335 |
+
Copyright (c) 2009, 2010 Mutsuo Saito, Makoto Matsumoto and Hiroshima
|
| 1336 |
+
University. All rights reserved.
|
| 1337 |
+
|
| 1338 |
+
Copyright (c) 2011 Mutsuo Saito, Makoto Matsumoto, Hiroshima
|
| 1339 |
+
University and University of Tokyo. All rights reserved.
|
| 1340 |
+
|
| 1341 |
+
Redistribution and use in source and binary forms, with or without
|
| 1342 |
+
modification, are permitted provided that the following conditions are
|
| 1343 |
+
met:
|
| 1344 |
+
* Redistributions of source code must retain the above copyright
|
| 1345 |
+
notice, this list of conditions and the following disclaimer.
|
| 1346 |
+
* Redistributions in binary form must reproduce the above
|
| 1347 |
+
copyright notice, this list of conditions and the following
|
| 1348 |
+
disclaimer in the documentation and/or other materials provided
|
| 1349 |
+
with the distribution.
|
| 1350 |
+
* Neither the name of the Hiroshima University nor the names of
|
| 1351 |
+
its contributors may be used to endorse or promote products
|
| 1352 |
+
derived from this software without specific prior written
|
| 1353 |
+
permission.
|
| 1354 |
+
|
| 1355 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| 1356 |
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| 1357 |
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| 1358 |
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| 1359 |
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| 1360 |
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| 1361 |
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| 1362 |
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| 1363 |
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| 1364 |
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| 1365 |
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| 1366 |
+
|
| 1367 |
+
13. Some of the cuRAND library routines were derived from
|
| 1368 |
+
code developed by D. E. Shaw Research and are subject to
|
| 1369 |
+
the following license:
|
| 1370 |
+
|
| 1371 |
+
Copyright 2010-2011, D. E. Shaw Research.
|
| 1372 |
+
|
| 1373 |
+
All rights reserved.
|
| 1374 |
+
|
| 1375 |
+
Redistribution and use in source and binary forms, with or without
|
| 1376 |
+
modification, are permitted provided that the following conditions are
|
| 1377 |
+
met:
|
| 1378 |
+
* Redistributions of source code must retain the above copyright
|
| 1379 |
+
notice, this list of conditions, and the following disclaimer.
|
| 1380 |
+
* Redistributions in binary form must reproduce the above
|
| 1381 |
+
copyright notice, this list of conditions, and the following
|
| 1382 |
+
disclaimer in the documentation and/or other materials provided
|
| 1383 |
+
with the distribution.
|
| 1384 |
+
* Neither the name of D. E. Shaw Research nor the names of its
|
| 1385 |
+
contributors may be used to endorse or promote products derived
|
| 1386 |
+
from this software without specific prior written permission.
|
| 1387 |
+
|
| 1388 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| 1389 |
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| 1390 |
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| 1391 |
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| 1392 |
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| 1393 |
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| 1394 |
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| 1395 |
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| 1396 |
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| 1397 |
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| 1398 |
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| 1399 |
+
|
| 1400 |
+
14. Some of the Math library routines were written by or
|
| 1401 |
+
derived from code developed by Norbert Juffa and are
|
| 1402 |
+
subject to the following license:
|
| 1403 |
+
|
| 1404 |
+
Copyright (c) 2015-2017, Norbert Juffa
|
| 1405 |
+
All rights reserved.
|
| 1406 |
+
|
| 1407 |
+
Redistribution and use in source and binary forms, with or without
|
| 1408 |
+
modification, are permitted provided that the following conditions
|
| 1409 |
+
are met:
|
| 1410 |
+
|
| 1411 |
+
1. Redistributions of source code must retain the above copyright
|
| 1412 |
+
notice, this list of conditions and the following disclaimer.
|
| 1413 |
+
|
| 1414 |
+
2. Redistributions in binary form must reproduce the above copyright
|
| 1415 |
+
notice, this list of conditions and the following disclaimer in the
|
| 1416 |
+
documentation and/or other materials provided with the distribution.
|
| 1417 |
+
|
| 1418 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| 1419 |
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| 1420 |
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| 1421 |
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| 1422 |
+
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| 1423 |
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| 1424 |
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| 1425 |
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| 1426 |
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| 1427 |
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| 1428 |
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| 1429 |
+
|
| 1430 |
+
15. Licensee's use of the lz4 third party component is
|
| 1431 |
+
subject to the following terms and conditions:
|
| 1432 |
+
|
| 1433 |
+
Copyright (C) 2011-2013, Yann Collet.
|
| 1434 |
+
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
| 1435 |
+
|
| 1436 |
+
Redistribution and use in source and binary forms, with or without
|
| 1437 |
+
modification, are permitted provided that the following conditions are
|
| 1438 |
+
met:
|
| 1439 |
+
|
| 1440 |
+
* Redistributions of source code must retain the above copyright
|
| 1441 |
+
notice, this list of conditions and the following disclaimer.
|
| 1442 |
+
* Redistributions in binary form must reproduce the above
|
| 1443 |
+
copyright notice, this list of conditions and the following disclaimer
|
| 1444 |
+
in the documentation and/or other materials provided with the
|
| 1445 |
+
distribution.
|
| 1446 |
+
|
| 1447 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| 1448 |
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| 1449 |
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| 1450 |
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| 1451 |
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| 1452 |
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| 1453 |
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| 1454 |
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| 1455 |
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| 1456 |
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| 1457 |
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| 1458 |
+
|
| 1459 |
+
16. The NPP library uses code from the Boost Math Toolkit,
|
| 1460 |
+
and is subject to the following license:
|
| 1461 |
+
|
| 1462 |
+
Boost Software License - Version 1.0 - August 17th, 2003
|
| 1463 |
+
. . . .
|
| 1464 |
+
|
| 1465 |
+
Permission is hereby granted, free of charge, to any person or
|
| 1466 |
+
organization obtaining a copy of the software and accompanying
|
| 1467 |
+
documentation covered by this license (the "Software") to use,
|
| 1468 |
+
reproduce, display, distribute, execute, and transmit the Software,
|
| 1469 |
+
and to prepare derivative works of the Software, and to permit
|
| 1470 |
+
third-parties to whom the Software is furnished to do so, all
|
| 1471 |
+
subject to the following:
|
| 1472 |
+
|
| 1473 |
+
The copyright notices in the Software and this entire statement,
|
| 1474 |
+
including the above license grant, this restriction and the following
|
| 1475 |
+
disclaimer, must be included in all copies of the Software, in whole
|
| 1476 |
+
or in part, and all derivative works of the Software, unless such
|
| 1477 |
+
copies or derivative works are solely in the form of machine-executable
|
| 1478 |
+
object code generated by a source language processor.
|
| 1479 |
+
|
| 1480 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 1481 |
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 1482 |
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
|
| 1483 |
+
NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
|
| 1484 |
+
ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR
|
| 1485 |
+
OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING
|
| 1486 |
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
| 1487 |
+
OTHER DEALINGS IN THE SOFTWARE.
|
| 1488 |
+
|
| 1489 |
+
17. Portions of the Nsight Eclipse Edition is subject to the
|
| 1490 |
+
following license:
|
| 1491 |
+
|
| 1492 |
+
The Eclipse Foundation makes available all content in this plug-in
|
| 1493 |
+
("Content"). Unless otherwise indicated below, the Content is provided
|
| 1494 |
+
to you under the terms and conditions of the Eclipse Public License
|
| 1495 |
+
Version 1.0 ("EPL"). A copy of the EPL is available at http://
|
| 1496 |
+
www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program"
|
| 1497 |
+
will mean the Content.
|
| 1498 |
+
|
| 1499 |
+
If you did not receive this Content directly from the Eclipse
|
| 1500 |
+
Foundation, the Content is being redistributed by another party
|
| 1501 |
+
("Redistributor") and different terms and conditions may apply to your
|
| 1502 |
+
use of any object code in the Content. Check the Redistributor's
|
| 1503 |
+
license that was provided with the Content. If no such license exists,
|
| 1504 |
+
contact the Redistributor. Unless otherwise indicated below, the terms
|
| 1505 |
+
and conditions of the EPL still apply to any source code in the
|
| 1506 |
+
Content and such source code may be obtained at http://www.eclipse.org.
|
| 1507 |
+
|
| 1508 |
+
18. Some of the cuBLAS library routines uses code from
|
| 1509 |
+
OpenAI, which is subject to the following license:
|
| 1510 |
+
|
| 1511 |
+
License URL
|
| 1512 |
+
https://github.com/openai/openai-gemm/blob/master/LICENSE
|
| 1513 |
+
|
| 1514 |
+
License Text
|
| 1515 |
+
The MIT License
|
| 1516 |
+
|
| 1517 |
+
Copyright (c) 2016 OpenAI (http://openai.com), 2016 Google Inc.
|
| 1518 |
+
|
| 1519 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 1520 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 1521 |
+
in the Software without restriction, including without limitation the rights
|
| 1522 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 1523 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 1524 |
+
furnished to do so, subject to the following conditions:
|
| 1525 |
+
|
| 1526 |
+
The above copyright notice and this permission notice shall be included in
|
| 1527 |
+
all copies or substantial portions of the Software.
|
| 1528 |
+
|
| 1529 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 1530 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 1531 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 1532 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 1533 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 1534 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
| 1535 |
+
THE SOFTWARE.
|
| 1536 |
+
|
| 1537 |
+
19. Licensee's use of the Visual Studio Setup Configuration
|
| 1538 |
+
Samples is subject to the following license:
|
| 1539 |
+
|
| 1540 |
+
The MIT License (MIT)
|
| 1541 |
+
Copyright (C) Microsoft Corporation. All rights reserved.
|
| 1542 |
+
|
| 1543 |
+
Permission is hereby granted, free of charge, to any person
|
| 1544 |
+
obtaining a copy of this software and associated documentation
|
| 1545 |
+
files (the "Software"), to deal in the Software without restriction,
|
| 1546 |
+
including without limitation the rights to use, copy, modify, merge,
|
| 1547 |
+
publish, distribute, sublicense, and/or sell copies of the Software,
|
| 1548 |
+
and to permit persons to whom the Software is furnished to do so,
|
| 1549 |
+
subject to the following conditions:
|
| 1550 |
+
|
| 1551 |
+
The above copyright notice and this permission notice shall be included
|
| 1552 |
+
in all copies or substantial portions of the Software.
|
| 1553 |
+
|
| 1554 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
| 1555 |
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 1556 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 1557 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 1558 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 1559 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
| 1560 |
+
|
| 1561 |
+
20. Licensee's use of linmath.h header for CPU functions for
|
| 1562 |
+
GL vector/matrix operations from lunarG is subject to the
|
| 1563 |
+
Apache License Version 2.0.
|
| 1564 |
+
|
| 1565 |
+
21. The DX12-CUDA sample uses the d3dx12.h header, which is
|
| 1566 |
+
subject to the MIT license .
|
| 1567 |
+
|
| 1568 |
+
-----------------
|
.venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/METADATA
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Metadata-Version: 2.1
|
| 2 |
+
Name: nvidia-nvtx-cu12
|
| 3 |
+
Version: 12.4.127
|
| 4 |
+
Summary: NVIDIA Tools Extension
|
| 5 |
+
Home-page: https://developer.nvidia.com/cuda-zone
|
| 6 |
+
Author: Nvidia CUDA Installer Team
|
| 7 |
+
Author-email: cuda_installer@nvidia.com
|
| 8 |
+
License: NVIDIA Proprietary Software
|
| 9 |
+
Keywords: cuda,nvidia,runtime,machine learning,deep learning
|
| 10 |
+
Classifier: Development Status :: 4 - Beta
|
| 11 |
+
Classifier: Intended Audience :: Developers
|
| 12 |
+
Classifier: Intended Audience :: Education
|
| 13 |
+
Classifier: Intended Audience :: Science/Research
|
| 14 |
+
Classifier: License :: Other/Proprietary License
|
| 15 |
+
Classifier: Natural Language :: English
|
| 16 |
+
Classifier: Programming Language :: Python :: 3
|
| 17 |
+
Classifier: Programming Language :: Python :: 3.5
|
| 18 |
+
Classifier: Programming Language :: Python :: 3.6
|
| 19 |
+
Classifier: Programming Language :: Python :: 3.7
|
| 20 |
+
Classifier: Programming Language :: Python :: 3.8
|
| 21 |
+
Classifier: Programming Language :: Python :: 3.9
|
| 22 |
+
Classifier: Programming Language :: Python :: 3.10
|
| 23 |
+
Classifier: Programming Language :: Python :: 3.11
|
| 24 |
+
Classifier: Programming Language :: Python :: 3 :: Only
|
| 25 |
+
Classifier: Topic :: Scientific/Engineering
|
| 26 |
+
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
| 27 |
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
| 28 |
+
Classifier: Topic :: Software Development
|
| 29 |
+
Classifier: Topic :: Software Development :: Libraries
|
| 30 |
+
Classifier: Operating System :: Microsoft :: Windows
|
| 31 |
+
Classifier: Operating System :: POSIX :: Linux
|
| 32 |
+
Requires-Python: >=3
|
| 33 |
+
License-File: License.txt
|
| 34 |
+
|
| 35 |
+
A C-based API for annotating events, code ranges, and resources in your applications. Applications which integrate NVTX can use the Visual Profiler to capture and visualize these events and ranges.
|
.venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/RECORD
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
nvidia/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 2 |
+
nvidia/__pycache__/__init__.cpython-311.pyc,,
|
| 3 |
+
nvidia/nvtx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 4 |
+
nvidia/nvtx/__pycache__/__init__.cpython-311.pyc,,
|
| 5 |
+
nvidia/nvtx/include/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 6 |
+
nvidia/nvtx/include/__pycache__/__init__.cpython-311.pyc,,
|
| 7 |
+
nvidia/nvtx/include/nvToolsExt.h,sha256=OiT6v1G2-vlkYnpDQZjiGT1O-THDyk1gw2021qMRvQM,53680
|
| 8 |
+
nvidia/nvtx/include/nvToolsExtCuda.h,sha256=UDA1pbmvoRFmlJ11Et9tIMEztOtOVw-10mO27Q6K8jg,6009
|
| 9 |
+
nvidia/nvtx/include/nvToolsExtCudaRt.h,sha256=6IbgdRGObly53jzRqvsZ4FQoTrXJOJwSyCOLuXr9ncA,5192
|
| 10 |
+
nvidia/nvtx/include/nvToolsExtOpenCL.h,sha256=gETZH9ch_o6MYE_BYQ2pj9SSuxyAo1H4ptmRK-DMWSo,8360
|
| 11 |
+
nvidia/nvtx/include/nvToolsExtSync.h,sha256=wqONIiycUPaUUCzQBmCippilgKt8sOL9tpzG773u0nY,14562
|
| 12 |
+
nvidia/nvtx/include/nvtx3/nvToolsExt.h,sha256=TFEF3fx1043EwMdbS7FqvvavwK0koZeGrIOAsCrB12s,52247
|
| 13 |
+
nvidia/nvtx/include/nvtx3/nvToolsExtCuda.h,sha256=4ZbZHUMcmHRf4SdKB7nH0E3uHd_9ZhZBuwuWPItK-Vs,6204
|
| 14 |
+
nvidia/nvtx/include/nvtx3/nvToolsExtCudaRt.h,sha256=boW0zdYobNFFE9wwxCyzBGBLcSGtdbQ5osKjQGNC2E8,5393
|
| 15 |
+
nvidia/nvtx/include/nvtx3/nvToolsExtOpenCL.h,sha256=RPfsZl3lHAPIOCzTipmz07-vaiIO4cxelcx12EjB2L0,8563
|
| 16 |
+
nvidia/nvtx/include/nvtx3/nvToolsExtSync.h,sha256=C-HIVBaupxYom3BqMggQ_ePq1bxFhw8kXsOfYJKBWrI,14756
|
| 17 |
+
nvidia/nvtx/include/nvtx3/nvtxDetail/nvtxImpl.h,sha256=jEnYF3MyLsD72euw2It3Bz0X0GK4Xv_htEd8BeIrPjY,23333
|
| 18 |
+
nvidia/nvtx/include/nvtx3/nvtxDetail/nvtxImplCore.h,sha256=sYpWqZfYrjsMddxtezPX3qSTIbAOn4dlEoLiYQ9M2nM,9756
|
| 19 |
+
nvidia/nvtx/include/nvtx3/nvtxDetail/nvtxImplCudaRt_v3.h,sha256=SoaiprvsI80yLmEAnlFX0iFufv6RtKjjMMrVwQZjjQI,4775
|
| 20 |
+
nvidia/nvtx/include/nvtx3/nvtxDetail/nvtxImplCuda_v3.h,sha256=IEor-ISqComCRGVDdIzKBLU3eWCuDI0Igqz-eRKKcvg,5550
|
| 21 |
+
nvidia/nvtx/include/nvtx3/nvtxDetail/nvtxImplOpenCL_v3.h,sha256=iPR2x74bJE3plFQBT9FWGBaTm4sC-Pll6WAjpKRnz7g,8275
|
| 22 |
+
nvidia/nvtx/include/nvtx3/nvtxDetail/nvtxImplSync_v3.h,sha256=TqwQfEUVbwc58bpHioE13NMweFhOuHXNql65BnLzhvc,5022
|
| 23 |
+
nvidia/nvtx/include/nvtx3/nvtxDetail/nvtxInit.h,sha256=foajOFacvLGx3BN5ntw5v8o4J3OY4hqkVZE5ZC0x3e4,14716
|
| 24 |
+
nvidia/nvtx/include/nvtx3/nvtxDetail/nvtxInitDecls.h,sha256=-Qyxcy9CDXOBhEtYZ8L7iYd6daJ9aCeyQM48X0BafMM,9361
|
| 25 |
+
nvidia/nvtx/include/nvtx3/nvtxDetail/nvtxInitDefs.h,sha256=dLhOV4knhNrmT2DnUNzXreOt_Qc6GAa3yIlmqJFCeVI,35432
|
| 26 |
+
nvidia/nvtx/include/nvtx3/nvtxDetail/nvtxLinkOnce.h,sha256=Jp-z6LTz_p8fKRulcFfdcskIxzcZ6ybbHkGB9mpJa2M,3863
|
| 27 |
+
nvidia/nvtx/include/nvtx3/nvtxDetail/nvtxTypes.h,sha256=jkbCwyvIP1G-Ef8SwYp4kDi69hjZbzaxKSk7ScgrNI8,17352
|
| 28 |
+
nvidia/nvtx/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 29 |
+
nvidia/nvtx/lib/__pycache__/__init__.cpython-311.pyc,,
|
| 30 |
+
nvidia/nvtx/lib/libnvToolsExt.so.1,sha256=hH148nXIzJdEKieAcyBL3BoACf_CVZv3JIxw2SEF39w,40136
|
| 31 |
+
nvidia_nvtx_cu12-12.4.127.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
| 32 |
+
nvidia_nvtx_cu12-12.4.127.dist-info/License.txt,sha256=rW9YU_ugyg0VnQ9Y1JrkmDDC-Mk_epJki5zpCttMbM0,59262
|
| 33 |
+
nvidia_nvtx_cu12-12.4.127.dist-info/METADATA,sha256=9RLXm3hRj_WuKLEP5eYxTAhsLGAeFt3LoHymjVqrI7I,1660
|
| 34 |
+
nvidia_nvtx_cu12-12.4.127.dist-info/RECORD,,
|
| 35 |
+
nvidia_nvtx_cu12-12.4.127.dist-info/WHEEL,sha256=XDTs3wIbcE-BcRO08VJlZpA6z9OaC1mOKPCGGGwuM2g,109
|
| 36 |
+
nvidia_nvtx_cu12-12.4.127.dist-info/top_level.txt,sha256=fTkAtiFuL16nUrB9ytDDtpytz2t0B4NvYTnRzwAhO14,7
|
.venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/WHEEL
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Wheel-Version: 1.0
|
| 2 |
+
Generator: bdist_wheel (0.42.0)
|
| 3 |
+
Root-Is-Purelib: true
|
| 4 |
+
Tag: py3-none-manylinux2014_x86_64
|
| 5 |
+
|
.venv/lib/python3.11/site-packages/nvidia_nvtx_cu12-12.4.127.dist-info/top_level.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
nvidia
|
.venv/lib/python3.11/site-packages/pyparsing-3.2.1.dist-info/INSTALLER
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
.venv/lib/python3.11/site-packages/pyparsing-3.2.1.dist-info/LICENSE
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Permission is hereby granted, free of charge, to any person obtaining
|
| 2 |
+
a copy of this software and associated documentation files (the
|
| 3 |
+
"Software"), to deal in the Software without restriction, including
|
| 4 |
+
without limitation the rights to use, copy, modify, merge, publish,
|
| 5 |
+
distribute, sublicense, and/or sell copies of the Software, and to
|
| 6 |
+
permit persons to whom the Software is furnished to do so, subject to
|
| 7 |
+
the following conditions:
|
| 8 |
+
|
| 9 |
+
The above copyright notice and this permission notice shall be
|
| 10 |
+
included in all copies or substantial portions of the Software.
|
| 11 |
+
|
| 12 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 13 |
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 14 |
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
| 15 |
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
| 16 |
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
| 17 |
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
| 18 |
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
.venv/lib/python3.11/site-packages/pyparsing-3.2.1.dist-info/METADATA
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Metadata-Version: 2.1
|
| 2 |
+
Name: pyparsing
|
| 3 |
+
Version: 3.2.1
|
| 4 |
+
Summary: pyparsing module - Classes and methods to define and execute parsing grammars
|
| 5 |
+
Author-email: Paul McGuire <ptmcg.gm+pyparsing@gmail.com>
|
| 6 |
+
Requires-Python: >=3.9
|
| 7 |
+
Description-Content-Type: text/x-rst
|
| 8 |
+
Classifier: Development Status :: 5 - Production/Stable
|
| 9 |
+
Classifier: Intended Audience :: Developers
|
| 10 |
+
Classifier: Intended Audience :: Information Technology
|
| 11 |
+
Classifier: License :: OSI Approved :: MIT License
|
| 12 |
+
Classifier: Operating System :: OS Independent
|
| 13 |
+
Classifier: Programming Language :: Python
|
| 14 |
+
Classifier: Programming Language :: Python :: 3
|
| 15 |
+
Classifier: Programming Language :: Python :: 3.9
|
| 16 |
+
Classifier: Programming Language :: Python :: 3.10
|
| 17 |
+
Classifier: Programming Language :: Python :: 3.11
|
| 18 |
+
Classifier: Programming Language :: Python :: 3.12
|
| 19 |
+
Classifier: Programming Language :: Python :: 3.13
|
| 20 |
+
Classifier: Programming Language :: Python :: 3 :: Only
|
| 21 |
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
| 22 |
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
| 23 |
+
Classifier: Topic :: Software Development :: Compilers
|
| 24 |
+
Classifier: Topic :: Text Processing
|
| 25 |
+
Classifier: Typing :: Typed
|
| 26 |
+
Requires-Dist: railroad-diagrams ; extra == "diagrams"
|
| 27 |
+
Requires-Dist: jinja2 ; extra == "diagrams"
|
| 28 |
+
Project-URL: Homepage, https://github.com/pyparsing/pyparsing/
|
| 29 |
+
Provides-Extra: diagrams
|
| 30 |
+
|
| 31 |
+
PyParsing -- A Python Parsing Module
|
| 32 |
+
====================================
|
| 33 |
+
|
| 34 |
+
|Version| |Build Status| |Coverage| |License| |Python Versions| |Snyk Score|
|
| 35 |
+
|
| 36 |
+
Introduction
|
| 37 |
+
============
|
| 38 |
+
|
| 39 |
+
The pyparsing module is an alternative approach to creating and
|
| 40 |
+
executing simple grammars, vs. the traditional lex/yacc approach, or the
|
| 41 |
+
use of regular expressions. The pyparsing module provides a library of
|
| 42 |
+
classes that client code uses to construct the grammar directly in
|
| 43 |
+
Python code.
|
| 44 |
+
|
| 45 |
+
*[Since first writing this description of pyparsing in late 2003, this
|
| 46 |
+
technique for developing parsers has become more widespread, under the
|
| 47 |
+
name Parsing Expression Grammars - PEGs. See more information on PEGs*
|
| 48 |
+
`here <https://en.wikipedia.org/wiki/Parsing_expression_grammar>`__
|
| 49 |
+
*.]*
|
| 50 |
+
|
| 51 |
+
Here is a program to parse ``"Hello, World!"`` (or any greeting of the form
|
| 52 |
+
``"salutation, addressee!"``):
|
| 53 |
+
|
| 54 |
+
.. code:: python
|
| 55 |
+
|
| 56 |
+
from pyparsing import Word, alphas
|
| 57 |
+
greet = Word(alphas) + "," + Word(alphas) + "!"
|
| 58 |
+
hello = "Hello, World!"
|
| 59 |
+
print(hello, "->", greet.parseString(hello))
|
| 60 |
+
|
| 61 |
+
The program outputs the following::
|
| 62 |
+
|
| 63 |
+
Hello, World! -> ['Hello', ',', 'World', '!']
|
| 64 |
+
|
| 65 |
+
The Python representation of the grammar is quite readable, owing to the
|
| 66 |
+
self-explanatory class names, and the use of '+', '|' and '^' operator
|
| 67 |
+
definitions.
|
| 68 |
+
|
| 69 |
+
The parsed results returned from ``parseString()`` is a collection of type
|
| 70 |
+
``ParseResults``, which can be accessed as a
|
| 71 |
+
nested list, a dictionary, or an object with named attributes.
|
| 72 |
+
|
| 73 |
+
The pyparsing module handles some of the problems that are typically
|
| 74 |
+
vexing when writing text parsers:
|
| 75 |
+
|
| 76 |
+
- extra or missing whitespace (the above program will also handle ``"Hello,World!"``, ``"Hello , World !"``, etc.)
|
| 77 |
+
- quoted strings
|
| 78 |
+
- embedded comments
|
| 79 |
+
|
| 80 |
+
The examples directory includes a simple SQL parser, simple CORBA IDL
|
| 81 |
+
parser, a config file parser, a chemical formula parser, and a four-
|
| 82 |
+
function algebraic notation parser, among many others.
|
| 83 |
+
|
| 84 |
+
Documentation
|
| 85 |
+
=============
|
| 86 |
+
|
| 87 |
+
There are many examples in the online docstrings of the classes
|
| 88 |
+
and methods in pyparsing. You can find them compiled into `online docs <https://pyparsing-docs.readthedocs.io/en/latest/>`__. Additional
|
| 89 |
+
documentation resources and project info are listed in the online
|
| 90 |
+
`GitHub wiki <https://github.com/pyparsing/pyparsing/wiki>`__. An
|
| 91 |
+
entire directory of examples can be found `here <https://github.com/pyparsing/pyparsing/tree/master/examples>`__.
|
| 92 |
+
|
| 93 |
+
License
|
| 94 |
+
=======
|
| 95 |
+
|
| 96 |
+
MIT License. See header of the `pyparsing __init__.py <https://github.com/pyparsing/pyparsing/blob/master/pyparsing/__init__.py#L1-L23>`__ file.
|
| 97 |
+
|
| 98 |
+
History
|
| 99 |
+
=======
|
| 100 |
+
|
| 101 |
+
See `CHANGES <https://github.com/pyparsing/pyparsing/blob/master/CHANGES>`__ file.
|
| 102 |
+
|
| 103 |
+
.. |Build Status| image:: https://github.com/pyparsing/pyparsing/actions/workflows/ci.yml/badge.svg
|
| 104 |
+
:target: https://github.com/pyparsing/pyparsing/actions/workflows/ci.yml
|
| 105 |
+
|
| 106 |
+
.. |Coverage| image:: https://codecov.io/gh/pyparsing/pyparsing/branch/master/graph/badge.svg
|
| 107 |
+
:target: https://codecov.io/gh/pyparsing/pyparsing
|
| 108 |
+
|
| 109 |
+
.. |Version| image:: https://img.shields.io/pypi/v/pyparsing?style=flat-square
|
| 110 |
+
:target: https://pypi.org/project/pyparsing/
|
| 111 |
+
:alt: Version
|
| 112 |
+
|
| 113 |
+
.. |License| image:: https://img.shields.io/pypi/l/pyparsing.svg?style=flat-square
|
| 114 |
+
:target: https://pypi.org/project/pyparsing/
|
| 115 |
+
:alt: License
|
| 116 |
+
|
| 117 |
+
.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/pyparsing.svg?style=flat-square
|
| 118 |
+
:target: https://pypi.org/project/python-liquid/
|
| 119 |
+
:alt: Python versions
|
| 120 |
+
|
| 121 |
+
.. |Snyk Score| image:: https://snyk.io//advisor/python/pyparsing/badge.svg
|
| 122 |
+
:target: https://snyk.io//advisor/python/pyparsing
|
| 123 |
+
:alt: pyparsing
|
| 124 |
+
|
.venv/lib/python3.11/site-packages/pyparsing-3.2.1.dist-info/RECORD
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pyparsing-3.2.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
| 2 |
+
pyparsing-3.2.1.dist-info/LICENSE,sha256=ENUSChaAWAT_2otojCIL-06POXQbVzIGBNRVowngGXI,1023
|
| 3 |
+
pyparsing-3.2.1.dist-info/METADATA,sha256=Cn5py_teLACvRMsW9ZrQgb7HGiy3ohpVn0xlg0YNG0k,4989
|
| 4 |
+
pyparsing-3.2.1.dist-info/RECORD,,
|
| 5 |
+
pyparsing-3.2.1.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
| 6 |
+
pyparsing/__init__.py,sha256=F1Bz3e2TP95q_i5nBz4_3HOgrp_UpxyAYnLtvs6MhIU,9038
|
| 7 |
+
pyparsing/__pycache__/__init__.cpython-311.pyc,,
|
| 8 |
+
pyparsing/__pycache__/actions.cpython-311.pyc,,
|
| 9 |
+
pyparsing/__pycache__/common.cpython-311.pyc,,
|
| 10 |
+
pyparsing/__pycache__/core.cpython-311.pyc,,
|
| 11 |
+
pyparsing/__pycache__/exceptions.cpython-311.pyc,,
|
| 12 |
+
pyparsing/__pycache__/helpers.cpython-311.pyc,,
|
| 13 |
+
pyparsing/__pycache__/results.cpython-311.pyc,,
|
| 14 |
+
pyparsing/__pycache__/testing.cpython-311.pyc,,
|
| 15 |
+
pyparsing/__pycache__/unicode.cpython-311.pyc,,
|
| 16 |
+
pyparsing/__pycache__/util.cpython-311.pyc,,
|
| 17 |
+
pyparsing/actions.py,sha256=ULt36RofyW2bDxa-z-5NpHDk46zcT5V5ibaYcqUTm30,7257
|
| 18 |
+
pyparsing/common.py,sha256=SyZAEQpwDAPOpUenOltIv-y1N-tzSN3nCEzNYcOpiDw,13673
|
| 19 |
+
pyparsing/core.py,sha256=N43lH6j1FJ7JBrKXAXapwGYjxPc7PqPi6inyv8CQN-I,231982
|
| 20 |
+
pyparsing/diagram/__init__.py,sha256=bEsqh-GrtLHQFnqtBoXGLZqrB8uqM38dUhgKdNByJwU,26563
|
| 21 |
+
pyparsing/diagram/__pycache__/__init__.cpython-311.pyc,,
|
| 22 |
+
pyparsing/exceptions.py,sha256=30rC4NZxcp0dHh5KiwbWkwRFG7viRlY0DsgzAupZFRE,9886
|
| 23 |
+
pyparsing/helpers.py,sha256=Xi6INfOY0lnqOk66vK_2KQQ_v913QzVNLg6yNuLGq-M,39527
|
| 24 |
+
pyparsing/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 25 |
+
pyparsing/results.py,sha256=dyIT3HPwR1n_7klZ1Lbf3dQId5JiCn6ksM1Ktn9JGUo,26246
|
| 26 |
+
pyparsing/testing.py,sha256=r-kKXcv_8r1G-4vrprBkJeuQFpr94OSm0jlXdGwAYF0,14682
|
| 27 |
+
pyparsing/unicode.py,sha256=doanv7BYQB4EdQRfdXigaiV_SDhZyyaBSwgvVEz6eXc,10614
|
| 28 |
+
pyparsing/util.py,sha256=M9wzp560rlBaCuRv7smMvcLBIxMJstBNKweHIE91onU,12975
|
.venv/lib/python3.11/site-packages/pyparsing-3.2.1.dist-info/WHEEL
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Wheel-Version: 1.0
|
| 2 |
+
Generator: flit 3.9.0
|
| 3 |
+
Root-Is-Purelib: true
|
| 4 |
+
Tag: py3-none-any
|
.venv/lib/python3.11/site-packages/pytest/__init__.py
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# PYTHON_ARGCOMPLETE_OK
|
| 2 |
+
"""pytest: unit and functional testing with Python."""
|
| 3 |
+
|
| 4 |
+
from __future__ import annotations
|
| 5 |
+
|
| 6 |
+
from _pytest import __version__
|
| 7 |
+
from _pytest import version_tuple
|
| 8 |
+
from _pytest._code import ExceptionInfo
|
| 9 |
+
from _pytest.assertion import register_assert_rewrite
|
| 10 |
+
from _pytest.cacheprovider import Cache
|
| 11 |
+
from _pytest.capture import CaptureFixture
|
| 12 |
+
from _pytest.config import cmdline
|
| 13 |
+
from _pytest.config import Config
|
| 14 |
+
from _pytest.config import console_main
|
| 15 |
+
from _pytest.config import ExitCode
|
| 16 |
+
from _pytest.config import hookimpl
|
| 17 |
+
from _pytest.config import hookspec
|
| 18 |
+
from _pytest.config import main
|
| 19 |
+
from _pytest.config import PytestPluginManager
|
| 20 |
+
from _pytest.config import UsageError
|
| 21 |
+
from _pytest.config.argparsing import OptionGroup
|
| 22 |
+
from _pytest.config.argparsing import Parser
|
| 23 |
+
from _pytest.debugging import pytestPDB as __pytestPDB
|
| 24 |
+
from _pytest.doctest import DoctestItem
|
| 25 |
+
from _pytest.fixtures import fixture
|
| 26 |
+
from _pytest.fixtures import FixtureDef
|
| 27 |
+
from _pytest.fixtures import FixtureLookupError
|
| 28 |
+
from _pytest.fixtures import FixtureRequest
|
| 29 |
+
from _pytest.fixtures import yield_fixture
|
| 30 |
+
from _pytest.freeze_support import freeze_includes
|
| 31 |
+
from _pytest.legacypath import TempdirFactory
|
| 32 |
+
from _pytest.legacypath import Testdir
|
| 33 |
+
from _pytest.logging import LogCaptureFixture
|
| 34 |
+
from _pytest.main import Dir
|
| 35 |
+
from _pytest.main import Session
|
| 36 |
+
from _pytest.mark import Mark
|
| 37 |
+
from _pytest.mark import MARK_GEN as mark
|
| 38 |
+
from _pytest.mark import MarkDecorator
|
| 39 |
+
from _pytest.mark import MarkGenerator
|
| 40 |
+
from _pytest.mark import param
|
| 41 |
+
from _pytest.monkeypatch import MonkeyPatch
|
| 42 |
+
from _pytest.nodes import Collector
|
| 43 |
+
from _pytest.nodes import Directory
|
| 44 |
+
from _pytest.nodes import File
|
| 45 |
+
from _pytest.nodes import Item
|
| 46 |
+
from _pytest.outcomes import exit
|
| 47 |
+
from _pytest.outcomes import fail
|
| 48 |
+
from _pytest.outcomes import importorskip
|
| 49 |
+
from _pytest.outcomes import skip
|
| 50 |
+
from _pytest.outcomes import xfail
|
| 51 |
+
from _pytest.pytester import HookRecorder
|
| 52 |
+
from _pytest.pytester import LineMatcher
|
| 53 |
+
from _pytest.pytester import Pytester
|
| 54 |
+
from _pytest.pytester import RecordedHookCall
|
| 55 |
+
from _pytest.pytester import RunResult
|
| 56 |
+
from _pytest.python import Class
|
| 57 |
+
from _pytest.python import Function
|
| 58 |
+
from _pytest.python import Metafunc
|
| 59 |
+
from _pytest.python import Module
|
| 60 |
+
from _pytest.python import Package
|
| 61 |
+
from _pytest.python_api import approx
|
| 62 |
+
from _pytest.python_api import raises
|
| 63 |
+
from _pytest.recwarn import deprecated_call
|
| 64 |
+
from _pytest.recwarn import WarningsRecorder
|
| 65 |
+
from _pytest.recwarn import warns
|
| 66 |
+
from _pytest.reports import CollectReport
|
| 67 |
+
from _pytest.reports import TestReport
|
| 68 |
+
from _pytest.runner import CallInfo
|
| 69 |
+
from _pytest.stash import Stash
|
| 70 |
+
from _pytest.stash import StashKey
|
| 71 |
+
from _pytest.terminal import TestShortLogReport
|
| 72 |
+
from _pytest.tmpdir import TempPathFactory
|
| 73 |
+
from _pytest.warning_types import PytestAssertRewriteWarning
|
| 74 |
+
from _pytest.warning_types import PytestCacheWarning
|
| 75 |
+
from _pytest.warning_types import PytestCollectionWarning
|
| 76 |
+
from _pytest.warning_types import PytestConfigWarning
|
| 77 |
+
from _pytest.warning_types import PytestDeprecationWarning
|
| 78 |
+
from _pytest.warning_types import PytestExperimentalApiWarning
|
| 79 |
+
from _pytest.warning_types import PytestRemovedIn9Warning
|
| 80 |
+
from _pytest.warning_types import PytestReturnNotNoneWarning
|
| 81 |
+
from _pytest.warning_types import PytestUnhandledCoroutineWarning
|
| 82 |
+
from _pytest.warning_types import PytestUnhandledThreadExceptionWarning
|
| 83 |
+
from _pytest.warning_types import PytestUnknownMarkWarning
|
| 84 |
+
from _pytest.warning_types import PytestUnraisableExceptionWarning
|
| 85 |
+
from _pytest.warning_types import PytestWarning
|
| 86 |
+
|
| 87 |
+
|
| 88 |
+
set_trace = __pytestPDB.set_trace
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
__all__ = [
|
| 92 |
+
"__version__",
|
| 93 |
+
"approx",
|
| 94 |
+
"Cache",
|
| 95 |
+
"CallInfo",
|
| 96 |
+
"CaptureFixture",
|
| 97 |
+
"Class",
|
| 98 |
+
"cmdline",
|
| 99 |
+
"Collector",
|
| 100 |
+
"CollectReport",
|
| 101 |
+
"Config",
|
| 102 |
+
"console_main",
|
| 103 |
+
"deprecated_call",
|
| 104 |
+
"Dir",
|
| 105 |
+
"Directory",
|
| 106 |
+
"DoctestItem",
|
| 107 |
+
"exit",
|
| 108 |
+
"ExceptionInfo",
|
| 109 |
+
"ExitCode",
|
| 110 |
+
"fail",
|
| 111 |
+
"File",
|
| 112 |
+
"fixture",
|
| 113 |
+
"FixtureDef",
|
| 114 |
+
"FixtureLookupError",
|
| 115 |
+
"FixtureRequest",
|
| 116 |
+
"freeze_includes",
|
| 117 |
+
"Function",
|
| 118 |
+
"hookimpl",
|
| 119 |
+
"HookRecorder",
|
| 120 |
+
"hookspec",
|
| 121 |
+
"importorskip",
|
| 122 |
+
"Item",
|
| 123 |
+
"LineMatcher",
|
| 124 |
+
"LogCaptureFixture",
|
| 125 |
+
"main",
|
| 126 |
+
"mark",
|
| 127 |
+
"Mark",
|
| 128 |
+
"MarkDecorator",
|
| 129 |
+
"MarkGenerator",
|
| 130 |
+
"Metafunc",
|
| 131 |
+
"Module",
|
| 132 |
+
"MonkeyPatch",
|
| 133 |
+
"OptionGroup",
|
| 134 |
+
"Package",
|
| 135 |
+
"param",
|
| 136 |
+
"Parser",
|
| 137 |
+
"PytestAssertRewriteWarning",
|
| 138 |
+
"PytestCacheWarning",
|
| 139 |
+
"PytestCollectionWarning",
|
| 140 |
+
"PytestConfigWarning",
|
| 141 |
+
"PytestDeprecationWarning",
|
| 142 |
+
"PytestExperimentalApiWarning",
|
| 143 |
+
"PytestRemovedIn9Warning",
|
| 144 |
+
"PytestReturnNotNoneWarning",
|
| 145 |
+
"Pytester",
|
| 146 |
+
"PytestPluginManager",
|
| 147 |
+
"PytestUnhandledCoroutineWarning",
|
| 148 |
+
"PytestUnhandledThreadExceptionWarning",
|
| 149 |
+
"PytestUnknownMarkWarning",
|
| 150 |
+
"PytestUnraisableExceptionWarning",
|
| 151 |
+
"PytestWarning",
|
| 152 |
+
"raises",
|
| 153 |
+
"RecordedHookCall",
|
| 154 |
+
"register_assert_rewrite",
|
| 155 |
+
"RunResult",
|
| 156 |
+
"Session",
|
| 157 |
+
"set_trace",
|
| 158 |
+
"skip",
|
| 159 |
+
"Stash",
|
| 160 |
+
"StashKey",
|
| 161 |
+
"version_tuple",
|
| 162 |
+
"TempdirFactory",
|
| 163 |
+
"TempPathFactory",
|
| 164 |
+
"Testdir",
|
| 165 |
+
"TestReport",
|
| 166 |
+
"TestShortLogReport",
|
| 167 |
+
"UsageError",
|
| 168 |
+
"WarningsRecorder",
|
| 169 |
+
"warns",
|
| 170 |
+
"xfail",
|
| 171 |
+
"yield_fixture",
|
| 172 |
+
]
|
.venv/lib/python3.11/site-packages/pytest/__main__.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""The pytest entry point."""
|
| 2 |
+
|
| 3 |
+
from __future__ import annotations
|
| 4 |
+
|
| 5 |
+
import pytest
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
if __name__ == "__main__":
|
| 9 |
+
raise SystemExit(pytest.console_main())
|
.venv/lib/python3.11/site-packages/pytest/__pycache__/__init__.cpython-311.pyc
ADDED
|
Binary file (5.39 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pytest/__pycache__/__main__.cpython-311.pyc
ADDED
|
Binary file (457 Bytes). View file
|
|
|
.venv/lib/python3.11/site-packages/pytest/py.typed
ADDED
|
File without changes
|
.venv/lib/python3.11/site-packages/torchaudio/_extension/__init__.py
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import logging
|
| 2 |
+
import os
|
| 3 |
+
import sys
|
| 4 |
+
|
| 5 |
+
from torchaudio._internal.module_utils import fail_with_message, is_module_available, no_op
|
| 6 |
+
|
| 7 |
+
from .utils import _check_cuda_version, _init_dll_path, _init_sox, _LazyImporter, _load_lib
|
| 8 |
+
|
| 9 |
+
_LG = logging.getLogger(__name__)
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
# Note:
|
| 13 |
+
# `_check_cuda_version` is not meant to be used by regular users.
|
| 14 |
+
# Builder uses it for debugging purpose, so we export it.
|
| 15 |
+
# https://github.com/pytorch/builder/blob/e2e4542b8eb0bdf491214451a1a4128bd606cce2/test/smoke_test/smoke_test.py#L80
|
| 16 |
+
__all__ = [
|
| 17 |
+
"_check_cuda_version",
|
| 18 |
+
"_IS_TORCHAUDIO_EXT_AVAILABLE",
|
| 19 |
+
"_IS_RIR_AVAILABLE",
|
| 20 |
+
"lazy_import_sox_ext",
|
| 21 |
+
]
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
if os.name == "nt" and (3, 8) <= sys.version_info < (3, 9):
|
| 25 |
+
_init_dll_path()
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
# When the extension module is built, we initialize it.
|
| 29 |
+
# In case of an error, we do not catch the failure as it suggests there is something
|
| 30 |
+
# wrong with the installation.
|
| 31 |
+
_IS_TORCHAUDIO_EXT_AVAILABLE = is_module_available("torchaudio.lib._torchaudio")
|
| 32 |
+
# RIR features are implemented in _torchaudio extension, but they can be individually
|
| 33 |
+
# turned on/off at build time. Available means that _torchaudio is loaded properly, and
|
| 34 |
+
# RIR features are found there.
|
| 35 |
+
_IS_RIR_AVAILABLE = False
|
| 36 |
+
_IS_ALIGN_AVAILABLE = False
|
| 37 |
+
if _IS_TORCHAUDIO_EXT_AVAILABLE:
|
| 38 |
+
_load_lib("libtorchaudio")
|
| 39 |
+
|
| 40 |
+
import torchaudio.lib._torchaudio # noqa
|
| 41 |
+
|
| 42 |
+
_check_cuda_version()
|
| 43 |
+
_IS_RIR_AVAILABLE = torchaudio.lib._torchaudio.is_rir_available()
|
| 44 |
+
_IS_ALIGN_AVAILABLE = torchaudio.lib._torchaudio.is_align_available()
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
_SOX_EXT = None
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
def lazy_import_sox_ext():
|
| 51 |
+
"""Load SoX integration based on availability in lazy manner"""
|
| 52 |
+
|
| 53 |
+
global _SOX_EXT
|
| 54 |
+
if _SOX_EXT is None:
|
| 55 |
+
_SOX_EXT = _LazyImporter("_torchaudio_sox", _init_sox)
|
| 56 |
+
return _SOX_EXT
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
fail_if_no_rir = (
|
| 60 |
+
no_op
|
| 61 |
+
if _IS_RIR_AVAILABLE
|
| 62 |
+
else fail_with_message(
|
| 63 |
+
"requires RIR extension, but TorchAudio is not compiled with it. Please build TorchAudio with RIR support."
|
| 64 |
+
)
|
| 65 |
+
)
|
| 66 |
+
|
| 67 |
+
fail_if_no_align = (
|
| 68 |
+
no_op
|
| 69 |
+
if _IS_ALIGN_AVAILABLE
|
| 70 |
+
else fail_with_message(
|
| 71 |
+
"Requires alignment extension, but TorchAudio is not compiled with it. \
|
| 72 |
+
Please build TorchAudio with alignment support."
|
| 73 |
+
)
|
| 74 |
+
)
|
.venv/lib/python3.11/site-packages/torchaudio/_extension/__pycache__/__init__.cpython-311.pyc
ADDED
|
Binary file (2.2 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/torchaudio/_extension/__pycache__/utils.cpython-311.pyc
ADDED
|
Binary file (8.84 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/torchaudio/_extension/utils.py
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Module to implement logics used for initializing extensions.
|
| 2 |
+
|
| 3 |
+
The implementations here should be stateless.
|
| 4 |
+
They should not depend on external state.
|
| 5 |
+
Anything that depends on external state should happen in __init__.py
|
| 6 |
+
"""
|
| 7 |
+
import importlib
|
| 8 |
+
import logging
|
| 9 |
+
import os
|
| 10 |
+
import types
|
| 11 |
+
from pathlib import Path
|
| 12 |
+
|
| 13 |
+
import torch
|
| 14 |
+
from torchaudio._internal.module_utils import eval_env
|
| 15 |
+
|
| 16 |
+
_LG = logging.getLogger(__name__)
|
| 17 |
+
_LIB_DIR = Path(__file__).parent.parent / "lib"
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
def _get_lib_path(lib: str):
|
| 21 |
+
suffix = "pyd" if os.name == "nt" else "so"
|
| 22 |
+
path = _LIB_DIR / f"{lib}.{suffix}"
|
| 23 |
+
return path
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
def _load_lib(lib: str) -> bool:
|
| 27 |
+
"""Load extension module
|
| 28 |
+
|
| 29 |
+
Note:
|
| 30 |
+
In case `torchaudio` is deployed with `pex` format, the library file
|
| 31 |
+
is not in a standard location.
|
| 32 |
+
In this case, we expect that `libtorchaudio` is available somewhere
|
| 33 |
+
in the search path of dynamic loading mechanism, so that importing
|
| 34 |
+
`_torchaudio` will have library loader find and load `libtorchaudio`.
|
| 35 |
+
This is the reason why the function should not raising an error when the library
|
| 36 |
+
file is not found.
|
| 37 |
+
|
| 38 |
+
Returns:
|
| 39 |
+
bool:
|
| 40 |
+
True if the library file is found AND the library loaded without failure.
|
| 41 |
+
False if the library file is not found (like in the case where torchaudio
|
| 42 |
+
is deployed with pex format, thus the shared library file is
|
| 43 |
+
in a non-standard location.).
|
| 44 |
+
If the library file is found but there is an issue loading the library,
|
| 45 |
+
(such as missing dependency) then this function raises the exception as-is.
|
| 46 |
+
|
| 47 |
+
Raises:
|
| 48 |
+
Exception:
|
| 49 |
+
If the library file is found, but there is an issue loading the library file,
|
| 50 |
+
(when underlying `ctype.DLL` throws an exception), this function will pass
|
| 51 |
+
the exception as-is, instead of catching it and returning bool.
|
| 52 |
+
The expected case is `OSError` thrown by `ctype.DLL` when a dynamic dependency
|
| 53 |
+
is not found.
|
| 54 |
+
This behavior was chosen because the expected failure case is not recoverable.
|
| 55 |
+
If a dependency is missing, then users have to install it.
|
| 56 |
+
"""
|
| 57 |
+
path = _get_lib_path(lib)
|
| 58 |
+
if not path.exists():
|
| 59 |
+
return False
|
| 60 |
+
torch.ops.load_library(path)
|
| 61 |
+
return True
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
def _import_sox_ext():
|
| 65 |
+
if os.name == "nt":
|
| 66 |
+
raise RuntimeError("sox extension is not supported on Windows")
|
| 67 |
+
if not eval_env("TORCHAUDIO_USE_SOX", True):
|
| 68 |
+
raise RuntimeError("sox extension is disabled. (TORCHAUDIO_USE_SOX=0)")
|
| 69 |
+
|
| 70 |
+
ext = "torchaudio.lib._torchaudio_sox"
|
| 71 |
+
|
| 72 |
+
if not importlib.util.find_spec(ext):
|
| 73 |
+
raise RuntimeError(
|
| 74 |
+
# fmt: off
|
| 75 |
+
"TorchAudio is not built with sox extension. "
|
| 76 |
+
"Please build TorchAudio with libsox support. (BUILD_SOX=1)"
|
| 77 |
+
# fmt: on
|
| 78 |
+
)
|
| 79 |
+
|
| 80 |
+
_load_lib("libtorchaudio_sox")
|
| 81 |
+
return importlib.import_module(ext)
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
def _init_sox():
|
| 85 |
+
ext = _import_sox_ext()
|
| 86 |
+
ext.set_verbosity(0)
|
| 87 |
+
|
| 88 |
+
import atexit
|
| 89 |
+
|
| 90 |
+
torch.ops.torchaudio_sox.initialize_sox_effects()
|
| 91 |
+
atexit.register(torch.ops.torchaudio_sox.shutdown_sox_effects)
|
| 92 |
+
|
| 93 |
+
# Bundle functions registered with TORCH_LIBRARY into extension
|
| 94 |
+
# so that they can also be accessed in the same (lazy) manner
|
| 95 |
+
# from the extension.
|
| 96 |
+
keys = [
|
| 97 |
+
"get_info",
|
| 98 |
+
"load_audio_file",
|
| 99 |
+
"save_audio_file",
|
| 100 |
+
"apply_effects_tensor",
|
| 101 |
+
"apply_effects_file",
|
| 102 |
+
]
|
| 103 |
+
for key in keys:
|
| 104 |
+
setattr(ext, key, getattr(torch.ops.torchaudio_sox, key))
|
| 105 |
+
|
| 106 |
+
return ext
|
| 107 |
+
|
| 108 |
+
|
| 109 |
+
class _LazyImporter(types.ModuleType):
|
| 110 |
+
"""Lazily import module/extension."""
|
| 111 |
+
|
| 112 |
+
def __init__(self, name, import_func):
|
| 113 |
+
super().__init__(name)
|
| 114 |
+
self.import_func = import_func
|
| 115 |
+
self.module = None
|
| 116 |
+
|
| 117 |
+
# Note:
|
| 118 |
+
# Python caches what was retrieved with `__getattr__`, so this method will not be
|
| 119 |
+
# called again for the same item.
|
| 120 |
+
def __getattr__(self, item):
|
| 121 |
+
self._import_once()
|
| 122 |
+
return getattr(self.module, item)
|
| 123 |
+
|
| 124 |
+
def __repr__(self):
|
| 125 |
+
if self.module is None:
|
| 126 |
+
return f"<module '{self.__module__}.{self.__class__.__name__}(\"{self.name}\")'>"
|
| 127 |
+
return repr(self.module)
|
| 128 |
+
|
| 129 |
+
def __dir__(self):
|
| 130 |
+
self._import_once()
|
| 131 |
+
return dir(self.module)
|
| 132 |
+
|
| 133 |
+
def _import_once(self):
|
| 134 |
+
if self.module is None:
|
| 135 |
+
self.module = self.import_func()
|
| 136 |
+
# Note:
|
| 137 |
+
# By attaching the module attributes to self,
|
| 138 |
+
# module attributes are directly accessible.
|
| 139 |
+
# This allows to avoid calling __getattr__ for every attribute access.
|
| 140 |
+
self.__dict__.update(self.module.__dict__)
|
| 141 |
+
|
| 142 |
+
def is_available(self):
|
| 143 |
+
try:
|
| 144 |
+
self._import_once()
|
| 145 |
+
except Exception:
|
| 146 |
+
return False
|
| 147 |
+
return True
|
| 148 |
+
|
| 149 |
+
|
| 150 |
+
def _init_dll_path():
|
| 151 |
+
# On Windows Python-3.8+ has `os.add_dll_directory` call,
|
| 152 |
+
# which is called to configure dll search path.
|
| 153 |
+
# To find cuda related dlls we need to make sure the
|
| 154 |
+
# conda environment/bin path is configured Please take a look:
|
| 155 |
+
# https://stackoverflow.com/questions/59330863/cant-import-dll-module-in-python
|
| 156 |
+
# Please note: if some path can't be added using add_dll_directory we simply ignore this path
|
| 157 |
+
for path in os.environ.get("PATH", "").split(";"):
|
| 158 |
+
if os.path.exists(path):
|
| 159 |
+
try:
|
| 160 |
+
os.add_dll_directory(path)
|
| 161 |
+
except Exception:
|
| 162 |
+
pass
|
| 163 |
+
|
| 164 |
+
|
| 165 |
+
def _check_cuda_version():
|
| 166 |
+
import torchaudio.lib._torchaudio
|
| 167 |
+
|
| 168 |
+
version = torchaudio.lib._torchaudio.cuda_version()
|
| 169 |
+
if version is not None and torch.version.cuda is not None:
|
| 170 |
+
version_str = str(version)
|
| 171 |
+
ta_version = f"{version_str[:-3]}.{version_str[-2]}"
|
| 172 |
+
t_version = torch.version.cuda.split(".")
|
| 173 |
+
t_version = f"{t_version[0]}.{t_version[1]}"
|
| 174 |
+
if ta_version != t_version:
|
| 175 |
+
raise RuntimeError(
|
| 176 |
+
"Detected that PyTorch and TorchAudio were compiled with different CUDA versions. "
|
| 177 |
+
f"PyTorch has CUDA version {t_version} whereas TorchAudio has CUDA version {ta_version}. "
|
| 178 |
+
"Please install the TorchAudio version that matches your PyTorch version."
|
| 179 |
+
)
|
| 180 |
+
return version
|
.venv/lib/python3.11/site-packages/torchaudio/datasets/__pycache__/__init__.cpython-311.pyc
ADDED
|
Binary file (1.64 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/torchaudio/datasets/__pycache__/cmuarctic.cpython-311.pyc
ADDED
|
Binary file (9.3 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/torchaudio/datasets/__pycache__/cmudict.cpython-311.pyc
ADDED
|
Binary file (7.72 kB). View file
|
|
|