Add files using upload-large-folder tool
Browse files- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/__init__.py +5 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/_punycode.py +67 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/main.py +355 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/py.typed +1 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/ruler.py +276 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/utils.py +176 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/__init__.py +15 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_elffile.py +108 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_manylinux.py +252 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_musllinux.py +83 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_parser.py +359 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_structures.py +61 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_tokenizer.py +192 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/markers.py +252 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/metadata.py +822 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/py.typed +0 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/requirements.py +90 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/specifiers.py +1008 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/tags.py +553 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/utils.py +172 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/version.py +563 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/AUTHORS.txt +806 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/INSTALLER +1 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/LICENSE.txt +20 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/RECORD +854 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/REQUESTED +0 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/WHEEL +5 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/entry_points.txt +3 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/top_level.txt +1 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/__init__.py +32 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/_helpers.py +39 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/_helpers_c.pyx +84 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/_helpers_py.py +56 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/api.py +8 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/py.typed +1 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/INSTALLER +1 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/LICENSE.txt +0 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/METADATA +86 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/NOTICE.txt +84 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/RECORD +876 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/WHEEL +5 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/top_level.txt +2 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/INSTALLER +1 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE +3 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE.APACHE2 +202 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE.MIT +20 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/METADATA +104 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/RECORD +19 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/WHEEL +5 -0
- Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/top_level.txt +1 -0
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/__init__.py
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""A Python port of Markdown-It"""
|
| 2 |
+
__all__ = ("MarkdownIt",)
|
| 3 |
+
__version__ = "3.0.0"
|
| 4 |
+
|
| 5 |
+
from .main import MarkdownIt
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/_punycode.py
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright 2014 Mathias Bynens <https://mathiasbynens.be/>
|
| 2 |
+
# Copyright 2021 Taneli Hukkinen
|
| 3 |
+
#
|
| 4 |
+
# Permission is hereby granted, free of charge, to any person obtaining
|
| 5 |
+
# a copy of this software and associated documentation files (the
|
| 6 |
+
# "Software"), to deal in the Software without restriction, including
|
| 7 |
+
# without limitation the rights to use, copy, modify, merge, publish,
|
| 8 |
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
| 9 |
+
# permit persons to whom the Software is furnished to do so, subject to
|
| 10 |
+
# the following conditions:
|
| 11 |
+
#
|
| 12 |
+
# The above copyright notice and this permission notice shall be
|
| 13 |
+
# included in all copies or substantial portions of the Software.
|
| 14 |
+
#
|
| 15 |
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 16 |
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 17 |
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
| 18 |
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
| 19 |
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
| 20 |
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
| 21 |
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
| 22 |
+
|
| 23 |
+
import codecs
|
| 24 |
+
import re
|
| 25 |
+
from typing import Callable
|
| 26 |
+
|
| 27 |
+
REGEX_SEPARATORS = re.compile(r"[\x2E\u3002\uFF0E\uFF61]")
|
| 28 |
+
REGEX_NON_ASCII = re.compile(r"[^\0-\x7E]")
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
def encode(uni: str) -> str:
|
| 32 |
+
return codecs.encode(uni, encoding="punycode").decode()
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
def decode(ascii: str) -> str:
|
| 36 |
+
return codecs.decode(ascii, encoding="punycode") # type: ignore
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
def map_domain(string: str, fn: Callable[[str], str]) -> str:
|
| 40 |
+
parts = string.split("@")
|
| 41 |
+
result = ""
|
| 42 |
+
if len(parts) > 1:
|
| 43 |
+
# In email addresses, only the domain name should be punycoded. Leave
|
| 44 |
+
# the local part (i.e. everything up to `@`) intact.
|
| 45 |
+
result = parts[0] + "@"
|
| 46 |
+
string = parts[1]
|
| 47 |
+
labels = REGEX_SEPARATORS.split(string)
|
| 48 |
+
encoded = ".".join(fn(label) for label in labels)
|
| 49 |
+
return result + encoded
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
def to_unicode(obj: str) -> str:
|
| 53 |
+
def mapping(obj: str) -> str:
|
| 54 |
+
if obj.startswith("xn--"):
|
| 55 |
+
return decode(obj[4:].lower())
|
| 56 |
+
return obj
|
| 57 |
+
|
| 58 |
+
return map_domain(obj, mapping)
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
def to_ascii(obj: str) -> str:
|
| 62 |
+
def mapping(obj: str) -> str:
|
| 63 |
+
if REGEX_NON_ASCII.search(obj):
|
| 64 |
+
return "xn--" + encode(obj)
|
| 65 |
+
return obj
|
| 66 |
+
|
| 67 |
+
return map_domain(obj, mapping)
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/main.py
ADDED
|
@@ -0,0 +1,355 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
from collections.abc import Callable, Generator, Iterable, Mapping, MutableMapping
|
| 4 |
+
from contextlib import contextmanager
|
| 5 |
+
from typing import Any, Literal, overload
|
| 6 |
+
|
| 7 |
+
from . import helpers, presets
|
| 8 |
+
from .common import normalize_url, utils
|
| 9 |
+
from .parser_block import ParserBlock
|
| 10 |
+
from .parser_core import ParserCore
|
| 11 |
+
from .parser_inline import ParserInline
|
| 12 |
+
from .renderer import RendererHTML, RendererProtocol
|
| 13 |
+
from .rules_core.state_core import StateCore
|
| 14 |
+
from .token import Token
|
| 15 |
+
from .utils import EnvType, OptionsDict, OptionsType, PresetType
|
| 16 |
+
|
| 17 |
+
try:
|
| 18 |
+
import linkify_it
|
| 19 |
+
except ModuleNotFoundError:
|
| 20 |
+
linkify_it = None
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
_PRESETS: dict[str, PresetType] = {
|
| 24 |
+
"default": presets.default.make(),
|
| 25 |
+
"js-default": presets.js_default.make(),
|
| 26 |
+
"zero": presets.zero.make(),
|
| 27 |
+
"commonmark": presets.commonmark.make(),
|
| 28 |
+
"gfm-like": presets.gfm_like.make(),
|
| 29 |
+
}
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
class MarkdownIt:
|
| 33 |
+
def __init__(
|
| 34 |
+
self,
|
| 35 |
+
config: str | PresetType = "commonmark",
|
| 36 |
+
options_update: Mapping[str, Any] | None = None,
|
| 37 |
+
*,
|
| 38 |
+
renderer_cls: Callable[[MarkdownIt], RendererProtocol] = RendererHTML,
|
| 39 |
+
):
|
| 40 |
+
"""Main parser class
|
| 41 |
+
|
| 42 |
+
:param config: name of configuration to load or a pre-defined dictionary
|
| 43 |
+
:param options_update: dictionary that will be merged into ``config["options"]``
|
| 44 |
+
:param renderer_cls: the class to load as the renderer:
|
| 45 |
+
``self.renderer = renderer_cls(self)
|
| 46 |
+
"""
|
| 47 |
+
# add modules
|
| 48 |
+
self.utils = utils
|
| 49 |
+
self.helpers = helpers
|
| 50 |
+
|
| 51 |
+
# initialise classes
|
| 52 |
+
self.inline = ParserInline()
|
| 53 |
+
self.block = ParserBlock()
|
| 54 |
+
self.core = ParserCore()
|
| 55 |
+
self.renderer = renderer_cls(self)
|
| 56 |
+
self.linkify = linkify_it.LinkifyIt() if linkify_it else None
|
| 57 |
+
|
| 58 |
+
# set the configuration
|
| 59 |
+
if options_update and not isinstance(options_update, Mapping):
|
| 60 |
+
# catch signature change where renderer_cls was not used as a key-word
|
| 61 |
+
raise TypeError(
|
| 62 |
+
f"options_update should be a mapping: {options_update}"
|
| 63 |
+
"\n(Perhaps you intended this to be the renderer_cls?)"
|
| 64 |
+
)
|
| 65 |
+
self.configure(config, options_update=options_update)
|
| 66 |
+
|
| 67 |
+
def __repr__(self) -> str:
|
| 68 |
+
return f"{self.__class__.__module__}.{self.__class__.__name__}()"
|
| 69 |
+
|
| 70 |
+
@overload
|
| 71 |
+
def __getitem__(self, name: Literal["inline"]) -> ParserInline:
|
| 72 |
+
...
|
| 73 |
+
|
| 74 |
+
@overload
|
| 75 |
+
def __getitem__(self, name: Literal["block"]) -> ParserBlock:
|
| 76 |
+
...
|
| 77 |
+
|
| 78 |
+
@overload
|
| 79 |
+
def __getitem__(self, name: Literal["core"]) -> ParserCore:
|
| 80 |
+
...
|
| 81 |
+
|
| 82 |
+
@overload
|
| 83 |
+
def __getitem__(self, name: Literal["renderer"]) -> RendererProtocol:
|
| 84 |
+
...
|
| 85 |
+
|
| 86 |
+
@overload
|
| 87 |
+
def __getitem__(self, name: str) -> Any:
|
| 88 |
+
...
|
| 89 |
+
|
| 90 |
+
def __getitem__(self, name: str) -> Any:
|
| 91 |
+
return {
|
| 92 |
+
"inline": self.inline,
|
| 93 |
+
"block": self.block,
|
| 94 |
+
"core": self.core,
|
| 95 |
+
"renderer": self.renderer,
|
| 96 |
+
}[name]
|
| 97 |
+
|
| 98 |
+
def set(self, options: OptionsType) -> None:
|
| 99 |
+
"""Set parser options (in the same format as in constructor).
|
| 100 |
+
Probably, you will never need it, but you can change options after constructor call.
|
| 101 |
+
|
| 102 |
+
__Note:__ To achieve the best possible performance, don't modify a
|
| 103 |
+
`markdown-it` instance options on the fly. If you need multiple configurations
|
| 104 |
+
it's best to create multiple instances and initialize each with separate config.
|
| 105 |
+
"""
|
| 106 |
+
self.options = OptionsDict(options)
|
| 107 |
+
|
| 108 |
+
def configure(
|
| 109 |
+
self, presets: str | PresetType, options_update: Mapping[str, Any] | None = None
|
| 110 |
+
) -> MarkdownIt:
|
| 111 |
+
"""Batch load of all options and component settings.
|
| 112 |
+
This is an internal method, and you probably will not need it.
|
| 113 |
+
But if you will - see available presets and data structure
|
| 114 |
+
[here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)
|
| 115 |
+
|
| 116 |
+
We strongly recommend to use presets instead of direct config loads.
|
| 117 |
+
That will give better compatibility with next versions.
|
| 118 |
+
"""
|
| 119 |
+
if isinstance(presets, str):
|
| 120 |
+
if presets not in _PRESETS:
|
| 121 |
+
raise KeyError(f"Wrong `markdown-it` preset '{presets}', check name")
|
| 122 |
+
config = _PRESETS[presets]
|
| 123 |
+
else:
|
| 124 |
+
config = presets
|
| 125 |
+
|
| 126 |
+
if not config:
|
| 127 |
+
raise ValueError("Wrong `markdown-it` config, can't be empty")
|
| 128 |
+
|
| 129 |
+
options = config.get("options", {}) or {}
|
| 130 |
+
if options_update:
|
| 131 |
+
options = {**options, **options_update} # type: ignore
|
| 132 |
+
|
| 133 |
+
self.set(options) # type: ignore
|
| 134 |
+
|
| 135 |
+
if "components" in config:
|
| 136 |
+
for name, component in config["components"].items():
|
| 137 |
+
rules = component.get("rules", None)
|
| 138 |
+
if rules:
|
| 139 |
+
self[name].ruler.enableOnly(rules)
|
| 140 |
+
rules2 = component.get("rules2", None)
|
| 141 |
+
if rules2:
|
| 142 |
+
self[name].ruler2.enableOnly(rules2)
|
| 143 |
+
|
| 144 |
+
return self
|
| 145 |
+
|
| 146 |
+
def get_all_rules(self) -> dict[str, list[str]]:
|
| 147 |
+
"""Return the names of all active rules."""
|
| 148 |
+
rules = {
|
| 149 |
+
chain: self[chain].ruler.get_all_rules()
|
| 150 |
+
for chain in ["core", "block", "inline"]
|
| 151 |
+
}
|
| 152 |
+
rules["inline2"] = self.inline.ruler2.get_all_rules()
|
| 153 |
+
return rules
|
| 154 |
+
|
| 155 |
+
def get_active_rules(self) -> dict[str, list[str]]:
|
| 156 |
+
"""Return the names of all active rules."""
|
| 157 |
+
rules = {
|
| 158 |
+
chain: self[chain].ruler.get_active_rules()
|
| 159 |
+
for chain in ["core", "block", "inline"]
|
| 160 |
+
}
|
| 161 |
+
rules["inline2"] = self.inline.ruler2.get_active_rules()
|
| 162 |
+
return rules
|
| 163 |
+
|
| 164 |
+
def enable(
|
| 165 |
+
self, names: str | Iterable[str], ignoreInvalid: bool = False
|
| 166 |
+
) -> MarkdownIt:
|
| 167 |
+
"""Enable list or rules. (chainable)
|
| 168 |
+
|
| 169 |
+
:param names: rule name or list of rule names to enable.
|
| 170 |
+
:param ignoreInvalid: set `true` to ignore errors when rule not found.
|
| 171 |
+
|
| 172 |
+
It will automatically find appropriate components,
|
| 173 |
+
containing rules with given names. If rule not found, and `ignoreInvalid`
|
| 174 |
+
not set - throws exception.
|
| 175 |
+
|
| 176 |
+
Example::
|
| 177 |
+
|
| 178 |
+
md = MarkdownIt().enable(['sub', 'sup']).disable('smartquotes')
|
| 179 |
+
|
| 180 |
+
"""
|
| 181 |
+
result = []
|
| 182 |
+
|
| 183 |
+
if isinstance(names, str):
|
| 184 |
+
names = [names]
|
| 185 |
+
|
| 186 |
+
for chain in ["core", "block", "inline"]:
|
| 187 |
+
result.extend(self[chain].ruler.enable(names, True))
|
| 188 |
+
result.extend(self.inline.ruler2.enable(names, True))
|
| 189 |
+
|
| 190 |
+
missed = [name for name in names if name not in result]
|
| 191 |
+
if missed and not ignoreInvalid:
|
| 192 |
+
raise ValueError(f"MarkdownIt. Failed to enable unknown rule(s): {missed}")
|
| 193 |
+
|
| 194 |
+
return self
|
| 195 |
+
|
| 196 |
+
def disable(
|
| 197 |
+
self, names: str | Iterable[str], ignoreInvalid: bool = False
|
| 198 |
+
) -> MarkdownIt:
|
| 199 |
+
"""The same as [[MarkdownIt.enable]], but turn specified rules off. (chainable)
|
| 200 |
+
|
| 201 |
+
:param names: rule name or list of rule names to disable.
|
| 202 |
+
:param ignoreInvalid: set `true` to ignore errors when rule not found.
|
| 203 |
+
|
| 204 |
+
"""
|
| 205 |
+
result = []
|
| 206 |
+
|
| 207 |
+
if isinstance(names, str):
|
| 208 |
+
names = [names]
|
| 209 |
+
|
| 210 |
+
for chain in ["core", "block", "inline"]:
|
| 211 |
+
result.extend(self[chain].ruler.disable(names, True))
|
| 212 |
+
result.extend(self.inline.ruler2.disable(names, True))
|
| 213 |
+
|
| 214 |
+
missed = [name for name in names if name not in result]
|
| 215 |
+
if missed and not ignoreInvalid:
|
| 216 |
+
raise ValueError(f"MarkdownIt. Failed to disable unknown rule(s): {missed}")
|
| 217 |
+
return self
|
| 218 |
+
|
| 219 |
+
@contextmanager
|
| 220 |
+
def reset_rules(self) -> Generator[None, None, None]:
|
| 221 |
+
"""A context manager, that will reset the current enabled rules on exit."""
|
| 222 |
+
chain_rules = self.get_active_rules()
|
| 223 |
+
yield
|
| 224 |
+
for chain, rules in chain_rules.items():
|
| 225 |
+
if chain != "inline2":
|
| 226 |
+
self[chain].ruler.enableOnly(rules)
|
| 227 |
+
self.inline.ruler2.enableOnly(chain_rules["inline2"])
|
| 228 |
+
|
| 229 |
+
def add_render_rule(
|
| 230 |
+
self, name: str, function: Callable[..., Any], fmt: str = "html"
|
| 231 |
+
) -> None:
|
| 232 |
+
"""Add a rule for rendering a particular Token type.
|
| 233 |
+
|
| 234 |
+
Only applied when ``renderer.__output__ == fmt``
|
| 235 |
+
"""
|
| 236 |
+
if self.renderer.__output__ == fmt:
|
| 237 |
+
self.renderer.rules[name] = function.__get__(self.renderer) # type: ignore
|
| 238 |
+
|
| 239 |
+
def use(
|
| 240 |
+
self, plugin: Callable[..., None], *params: Any, **options: Any
|
| 241 |
+
) -> MarkdownIt:
|
| 242 |
+
"""Load specified plugin with given params into current parser instance. (chainable)
|
| 243 |
+
|
| 244 |
+
It's just a sugar to call `plugin(md, params)` with curring.
|
| 245 |
+
|
| 246 |
+
Example::
|
| 247 |
+
|
| 248 |
+
def func(tokens, idx):
|
| 249 |
+
tokens[idx].content = tokens[idx].content.replace('foo', 'bar')
|
| 250 |
+
md = MarkdownIt().use(plugin, 'foo_replace', 'text', func)
|
| 251 |
+
|
| 252 |
+
"""
|
| 253 |
+
plugin(self, *params, **options)
|
| 254 |
+
return self
|
| 255 |
+
|
| 256 |
+
def parse(self, src: str, env: EnvType | None = None) -> list[Token]:
|
| 257 |
+
"""Parse the source string to a token stream
|
| 258 |
+
|
| 259 |
+
:param src: source string
|
| 260 |
+
:param env: environment sandbox
|
| 261 |
+
|
| 262 |
+
Parse input string and return list of block tokens (special token type
|
| 263 |
+
"inline" will contain list of inline tokens).
|
| 264 |
+
|
| 265 |
+
`env` is used to pass data between "distributed" rules and return additional
|
| 266 |
+
metadata like reference info, needed for the renderer. It also can be used to
|
| 267 |
+
inject data in specific cases. Usually, you will be ok to pass `{}`,
|
| 268 |
+
and then pass updated object to renderer.
|
| 269 |
+
"""
|
| 270 |
+
env = {} if env is None else env
|
| 271 |
+
if not isinstance(env, MutableMapping):
|
| 272 |
+
raise TypeError(f"Input data should be a MutableMapping, not {type(env)}")
|
| 273 |
+
if not isinstance(src, str):
|
| 274 |
+
raise TypeError(f"Input data should be a string, not {type(src)}")
|
| 275 |
+
state = StateCore(src, self, env)
|
| 276 |
+
self.core.process(state)
|
| 277 |
+
return state.tokens
|
| 278 |
+
|
| 279 |
+
def render(self, src: str, env: EnvType | None = None) -> Any:
|
| 280 |
+
"""Render markdown string into html. It does all magic for you :).
|
| 281 |
+
|
| 282 |
+
:param src: source string
|
| 283 |
+
:param env: environment sandbox
|
| 284 |
+
:returns: The output of the loaded renderer
|
| 285 |
+
|
| 286 |
+
`env` can be used to inject additional metadata (`{}` by default).
|
| 287 |
+
But you will not need it with high probability. See also comment
|
| 288 |
+
in [[MarkdownIt.parse]].
|
| 289 |
+
"""
|
| 290 |
+
env = {} if env is None else env
|
| 291 |
+
return self.renderer.render(self.parse(src, env), self.options, env)
|
| 292 |
+
|
| 293 |
+
def parseInline(self, src: str, env: EnvType | None = None) -> list[Token]:
|
| 294 |
+
"""The same as [[MarkdownIt.parse]] but skip all block rules.
|
| 295 |
+
|
| 296 |
+
:param src: source string
|
| 297 |
+
:param env: environment sandbox
|
| 298 |
+
|
| 299 |
+
It returns the
|
| 300 |
+
block tokens list with the single `inline` element, containing parsed inline
|
| 301 |
+
tokens in `children` property. Also updates `env` object.
|
| 302 |
+
"""
|
| 303 |
+
env = {} if env is None else env
|
| 304 |
+
if not isinstance(env, MutableMapping):
|
| 305 |
+
raise TypeError(f"Input data should be an MutableMapping, not {type(env)}")
|
| 306 |
+
if not isinstance(src, str):
|
| 307 |
+
raise TypeError(f"Input data should be a string, not {type(src)}")
|
| 308 |
+
state = StateCore(src, self, env)
|
| 309 |
+
state.inlineMode = True
|
| 310 |
+
self.core.process(state)
|
| 311 |
+
return state.tokens
|
| 312 |
+
|
| 313 |
+
def renderInline(self, src: str, env: EnvType | None = None) -> Any:
|
| 314 |
+
"""Similar to [[MarkdownIt.render]] but for single paragraph content.
|
| 315 |
+
|
| 316 |
+
:param src: source string
|
| 317 |
+
:param env: environment sandbox
|
| 318 |
+
|
| 319 |
+
Similar to [[MarkdownIt.render]] but for single paragraph content. Result
|
| 320 |
+
will NOT be wrapped into `<p>` tags.
|
| 321 |
+
"""
|
| 322 |
+
env = {} if env is None else env
|
| 323 |
+
return self.renderer.render(self.parseInline(src, env), self.options, env)
|
| 324 |
+
|
| 325 |
+
# link methods
|
| 326 |
+
|
| 327 |
+
def validateLink(self, url: str) -> bool:
|
| 328 |
+
"""Validate if the URL link is allowed in output.
|
| 329 |
+
|
| 330 |
+
This validator can prohibit more than really needed to prevent XSS.
|
| 331 |
+
It's a tradeoff to keep code simple and to be secure by default.
|
| 332 |
+
|
| 333 |
+
Note: the url should be normalized at this point, and existing entities decoded.
|
| 334 |
+
"""
|
| 335 |
+
return normalize_url.validateLink(url)
|
| 336 |
+
|
| 337 |
+
def normalizeLink(self, url: str) -> str:
|
| 338 |
+
"""Normalize destination URLs in links
|
| 339 |
+
|
| 340 |
+
::
|
| 341 |
+
|
| 342 |
+
[label]: destination 'title'
|
| 343 |
+
^^^^^^^^^^^
|
| 344 |
+
"""
|
| 345 |
+
return normalize_url.normalizeLink(url)
|
| 346 |
+
|
| 347 |
+
def normalizeLinkText(self, link: str) -> str:
|
| 348 |
+
"""Normalize autolink content
|
| 349 |
+
|
| 350 |
+
::
|
| 351 |
+
|
| 352 |
+
<destination>
|
| 353 |
+
~~~~~~~~~~~
|
| 354 |
+
"""
|
| 355 |
+
return normalize_url.normalizeLinkText(link)
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/py.typed
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
# Marker file for PEP 561
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/ruler.py
ADDED
|
@@ -0,0 +1,276 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
class Ruler
|
| 3 |
+
|
| 4 |
+
Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and
|
| 5 |
+
[[MarkdownIt#inline]] to manage sequences of functions (rules):
|
| 6 |
+
|
| 7 |
+
- keep rules in defined order
|
| 8 |
+
- assign the name to each rule
|
| 9 |
+
- enable/disable rules
|
| 10 |
+
- add/replace rules
|
| 11 |
+
- allow assign rules to additional named chains (in the same)
|
| 12 |
+
- caching lists of active rules
|
| 13 |
+
|
| 14 |
+
You will not need use this class directly until write plugins. For simple
|
| 15 |
+
rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and
|
| 16 |
+
[[MarkdownIt.use]].
|
| 17 |
+
"""
|
| 18 |
+
from __future__ import annotations
|
| 19 |
+
|
| 20 |
+
from collections.abc import Iterable
|
| 21 |
+
from dataclasses import dataclass, field
|
| 22 |
+
from typing import TYPE_CHECKING, Generic, TypedDict, TypeVar
|
| 23 |
+
import warnings
|
| 24 |
+
|
| 25 |
+
from markdown_it._compat import DATACLASS_KWARGS
|
| 26 |
+
|
| 27 |
+
from .utils import EnvType
|
| 28 |
+
|
| 29 |
+
if TYPE_CHECKING:
|
| 30 |
+
from markdown_it import MarkdownIt
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
class StateBase:
|
| 34 |
+
def __init__(self, src: str, md: MarkdownIt, env: EnvType):
|
| 35 |
+
self.src = src
|
| 36 |
+
self.env = env
|
| 37 |
+
self.md = md
|
| 38 |
+
|
| 39 |
+
@property
|
| 40 |
+
def src(self) -> str:
|
| 41 |
+
return self._src
|
| 42 |
+
|
| 43 |
+
@src.setter
|
| 44 |
+
def src(self, value: str) -> None:
|
| 45 |
+
self._src = value
|
| 46 |
+
self._srcCharCode: tuple[int, ...] | None = None
|
| 47 |
+
|
| 48 |
+
@property
|
| 49 |
+
def srcCharCode(self) -> tuple[int, ...]:
|
| 50 |
+
warnings.warn(
|
| 51 |
+
"StateBase.srcCharCode is deprecated. Use StateBase.src instead.",
|
| 52 |
+
DeprecationWarning,
|
| 53 |
+
stacklevel=2,
|
| 54 |
+
)
|
| 55 |
+
if self._srcCharCode is None:
|
| 56 |
+
self._srcCharCode = tuple(ord(c) for c in self._src)
|
| 57 |
+
return self._srcCharCode
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
class RuleOptionsType(TypedDict, total=False):
|
| 61 |
+
alt: list[str]
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
RuleFuncTv = TypeVar("RuleFuncTv")
|
| 65 |
+
"""A rule function, whose signature is dependent on the state type."""
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
@dataclass(**DATACLASS_KWARGS)
|
| 69 |
+
class Rule(Generic[RuleFuncTv]):
|
| 70 |
+
name: str
|
| 71 |
+
enabled: bool
|
| 72 |
+
fn: RuleFuncTv = field(repr=False)
|
| 73 |
+
alt: list[str]
|
| 74 |
+
|
| 75 |
+
|
| 76 |
+
class Ruler(Generic[RuleFuncTv]):
|
| 77 |
+
def __init__(self) -> None:
|
| 78 |
+
# List of added rules.
|
| 79 |
+
self.__rules__: list[Rule[RuleFuncTv]] = []
|
| 80 |
+
# Cached rule chains.
|
| 81 |
+
# First level - chain name, '' for default.
|
| 82 |
+
# Second level - diginal anchor for fast filtering by charcodes.
|
| 83 |
+
self.__cache__: dict[str, list[RuleFuncTv]] | None = None
|
| 84 |
+
|
| 85 |
+
def __find__(self, name: str) -> int:
|
| 86 |
+
"""Find rule index by name"""
|
| 87 |
+
for i, rule in enumerate(self.__rules__):
|
| 88 |
+
if rule.name == name:
|
| 89 |
+
return i
|
| 90 |
+
return -1
|
| 91 |
+
|
| 92 |
+
def __compile__(self) -> None:
|
| 93 |
+
"""Build rules lookup cache"""
|
| 94 |
+
chains = {""}
|
| 95 |
+
# collect unique names
|
| 96 |
+
for rule in self.__rules__:
|
| 97 |
+
if not rule.enabled:
|
| 98 |
+
continue
|
| 99 |
+
for name in rule.alt:
|
| 100 |
+
chains.add(name)
|
| 101 |
+
self.__cache__ = {}
|
| 102 |
+
for chain in chains:
|
| 103 |
+
self.__cache__[chain] = []
|
| 104 |
+
for rule in self.__rules__:
|
| 105 |
+
if not rule.enabled:
|
| 106 |
+
continue
|
| 107 |
+
if chain and (chain not in rule.alt):
|
| 108 |
+
continue
|
| 109 |
+
self.__cache__[chain].append(rule.fn)
|
| 110 |
+
|
| 111 |
+
def at(
|
| 112 |
+
self, ruleName: str, fn: RuleFuncTv, options: RuleOptionsType | None = None
|
| 113 |
+
) -> None:
|
| 114 |
+
"""Replace rule by name with new function & options.
|
| 115 |
+
|
| 116 |
+
:param ruleName: rule name to replace.
|
| 117 |
+
:param fn: new rule function.
|
| 118 |
+
:param options: new rule options (not mandatory).
|
| 119 |
+
:raises: KeyError if name not found
|
| 120 |
+
"""
|
| 121 |
+
index = self.__find__(ruleName)
|
| 122 |
+
options = options or {}
|
| 123 |
+
if index == -1:
|
| 124 |
+
raise KeyError(f"Parser rule not found: {ruleName}")
|
| 125 |
+
self.__rules__[index].fn = fn
|
| 126 |
+
self.__rules__[index].alt = options.get("alt", [])
|
| 127 |
+
self.__cache__ = None
|
| 128 |
+
|
| 129 |
+
def before(
|
| 130 |
+
self,
|
| 131 |
+
beforeName: str,
|
| 132 |
+
ruleName: str,
|
| 133 |
+
fn: RuleFuncTv,
|
| 134 |
+
options: RuleOptionsType | None = None,
|
| 135 |
+
) -> None:
|
| 136 |
+
"""Add new rule to chain before one with given name.
|
| 137 |
+
|
| 138 |
+
:param beforeName: new rule will be added before this one.
|
| 139 |
+
:param ruleName: new rule will be added before this one.
|
| 140 |
+
:param fn: new rule function.
|
| 141 |
+
:param options: new rule options (not mandatory).
|
| 142 |
+
:raises: KeyError if name not found
|
| 143 |
+
"""
|
| 144 |
+
index = self.__find__(beforeName)
|
| 145 |
+
options = options or {}
|
| 146 |
+
if index == -1:
|
| 147 |
+
raise KeyError(f"Parser rule not found: {beforeName}")
|
| 148 |
+
self.__rules__.insert(
|
| 149 |
+
index, Rule[RuleFuncTv](ruleName, True, fn, options.get("alt", []))
|
| 150 |
+
)
|
| 151 |
+
self.__cache__ = None
|
| 152 |
+
|
| 153 |
+
def after(
|
| 154 |
+
self,
|
| 155 |
+
afterName: str,
|
| 156 |
+
ruleName: str,
|
| 157 |
+
fn: RuleFuncTv,
|
| 158 |
+
options: RuleOptionsType | None = None,
|
| 159 |
+
) -> None:
|
| 160 |
+
"""Add new rule to chain after one with given name.
|
| 161 |
+
|
| 162 |
+
:param afterName: new rule will be added after this one.
|
| 163 |
+
:param ruleName: new rule will be added after this one.
|
| 164 |
+
:param fn: new rule function.
|
| 165 |
+
:param options: new rule options (not mandatory).
|
| 166 |
+
:raises: KeyError if name not found
|
| 167 |
+
"""
|
| 168 |
+
index = self.__find__(afterName)
|
| 169 |
+
options = options or {}
|
| 170 |
+
if index == -1:
|
| 171 |
+
raise KeyError(f"Parser rule not found: {afterName}")
|
| 172 |
+
self.__rules__.insert(
|
| 173 |
+
index + 1, Rule[RuleFuncTv](ruleName, True, fn, options.get("alt", []))
|
| 174 |
+
)
|
| 175 |
+
self.__cache__ = None
|
| 176 |
+
|
| 177 |
+
def push(
|
| 178 |
+
self, ruleName: str, fn: RuleFuncTv, options: RuleOptionsType | None = None
|
| 179 |
+
) -> None:
|
| 180 |
+
"""Push new rule to the end of chain.
|
| 181 |
+
|
| 182 |
+
:param ruleName: new rule will be added to the end of chain.
|
| 183 |
+
:param fn: new rule function.
|
| 184 |
+
:param options: new rule options (not mandatory).
|
| 185 |
+
|
| 186 |
+
"""
|
| 187 |
+
self.__rules__.append(
|
| 188 |
+
Rule[RuleFuncTv](ruleName, True, fn, (options or {}).get("alt", []))
|
| 189 |
+
)
|
| 190 |
+
self.__cache__ = None
|
| 191 |
+
|
| 192 |
+
def enable(
|
| 193 |
+
self, names: str | Iterable[str], ignoreInvalid: bool = False
|
| 194 |
+
) -> list[str]:
|
| 195 |
+
"""Enable rules with given names.
|
| 196 |
+
|
| 197 |
+
:param names: name or list of rule names to enable.
|
| 198 |
+
:param ignoreInvalid: ignore errors when rule not found
|
| 199 |
+
:raises: KeyError if name not found and not ignoreInvalid
|
| 200 |
+
:return: list of found rule names
|
| 201 |
+
"""
|
| 202 |
+
if isinstance(names, str):
|
| 203 |
+
names = [names]
|
| 204 |
+
result: list[str] = []
|
| 205 |
+
for name in names:
|
| 206 |
+
idx = self.__find__(name)
|
| 207 |
+
if (idx < 0) and ignoreInvalid:
|
| 208 |
+
continue
|
| 209 |
+
if (idx < 0) and not ignoreInvalid:
|
| 210 |
+
raise KeyError(f"Rules manager: invalid rule name {name}")
|
| 211 |
+
self.__rules__[idx].enabled = True
|
| 212 |
+
result.append(name)
|
| 213 |
+
self.__cache__ = None
|
| 214 |
+
return result
|
| 215 |
+
|
| 216 |
+
def enableOnly(
|
| 217 |
+
self, names: str | Iterable[str], ignoreInvalid: bool = False
|
| 218 |
+
) -> list[str]:
|
| 219 |
+
"""Enable rules with given names, and disable everything else.
|
| 220 |
+
|
| 221 |
+
:param names: name or list of rule names to enable.
|
| 222 |
+
:param ignoreInvalid: ignore errors when rule not found
|
| 223 |
+
:raises: KeyError if name not found and not ignoreInvalid
|
| 224 |
+
:return: list of found rule names
|
| 225 |
+
"""
|
| 226 |
+
if isinstance(names, str):
|
| 227 |
+
names = [names]
|
| 228 |
+
for rule in self.__rules__:
|
| 229 |
+
rule.enabled = False
|
| 230 |
+
return self.enable(names, ignoreInvalid)
|
| 231 |
+
|
| 232 |
+
def disable(
|
| 233 |
+
self, names: str | Iterable[str], ignoreInvalid: bool = False
|
| 234 |
+
) -> list[str]:
|
| 235 |
+
"""Disable rules with given names.
|
| 236 |
+
|
| 237 |
+
:param names: name or list of rule names to enable.
|
| 238 |
+
:param ignoreInvalid: ignore errors when rule not found
|
| 239 |
+
:raises: KeyError if name not found and not ignoreInvalid
|
| 240 |
+
:return: list of found rule names
|
| 241 |
+
"""
|
| 242 |
+
if isinstance(names, str):
|
| 243 |
+
names = [names]
|
| 244 |
+
result = []
|
| 245 |
+
for name in names:
|
| 246 |
+
idx = self.__find__(name)
|
| 247 |
+
if (idx < 0) and ignoreInvalid:
|
| 248 |
+
continue
|
| 249 |
+
if (idx < 0) and not ignoreInvalid:
|
| 250 |
+
raise KeyError(f"Rules manager: invalid rule name {name}")
|
| 251 |
+
self.__rules__[idx].enabled = False
|
| 252 |
+
result.append(name)
|
| 253 |
+
self.__cache__ = None
|
| 254 |
+
return result
|
| 255 |
+
|
| 256 |
+
def getRules(self, chainName: str = "") -> list[RuleFuncTv]:
|
| 257 |
+
"""Return array of active functions (rules) for given chain name.
|
| 258 |
+
It analyzes rules configuration, compiles caches if not exists and returns result.
|
| 259 |
+
|
| 260 |
+
Default chain name is `''` (empty string). It can't be skipped.
|
| 261 |
+
That's done intentionally, to keep signature monomorphic for high speed.
|
| 262 |
+
|
| 263 |
+
"""
|
| 264 |
+
if self.__cache__ is None:
|
| 265 |
+
self.__compile__()
|
| 266 |
+
assert self.__cache__ is not None
|
| 267 |
+
# Chain can be empty, if rules disabled. But we still have to return Array.
|
| 268 |
+
return self.__cache__.get(chainName, []) or []
|
| 269 |
+
|
| 270 |
+
def get_all_rules(self) -> list[str]:
|
| 271 |
+
"""Return all available rule names."""
|
| 272 |
+
return [r.name for r in self.__rules__]
|
| 273 |
+
|
| 274 |
+
def get_active_rules(self) -> list[str]:
|
| 275 |
+
"""Return the active rule names."""
|
| 276 |
+
return [r.name for r in self.__rules__ if r.enabled]
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/markdown_it/utils.py
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
from collections.abc import MutableMapping as MutableMappingABC
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from typing import Any, Callable, Iterable, MutableMapping, TypedDict, cast
|
| 6 |
+
|
| 7 |
+
EnvType = MutableMapping[str, Any] # note: could use TypeAlias in python 3.10
|
| 8 |
+
"""Type for the environment sandbox used in parsing and rendering,
|
| 9 |
+
which stores mutable variables for use by plugins and rules.
|
| 10 |
+
"""
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
class OptionsType(TypedDict):
|
| 14 |
+
"""Options for parsing."""
|
| 15 |
+
|
| 16 |
+
maxNesting: int
|
| 17 |
+
"""Internal protection, recursion limit."""
|
| 18 |
+
html: bool
|
| 19 |
+
"""Enable HTML tags in source."""
|
| 20 |
+
linkify: bool
|
| 21 |
+
"""Enable autoconversion of URL-like texts to links."""
|
| 22 |
+
typographer: bool
|
| 23 |
+
"""Enable smartquotes and replacements."""
|
| 24 |
+
quotes: str
|
| 25 |
+
"""Quote characters."""
|
| 26 |
+
xhtmlOut: bool
|
| 27 |
+
"""Use '/' to close single tags (<br />)."""
|
| 28 |
+
breaks: bool
|
| 29 |
+
"""Convert newlines in paragraphs into <br>."""
|
| 30 |
+
langPrefix: str
|
| 31 |
+
"""CSS language prefix for fenced blocks."""
|
| 32 |
+
highlight: Callable[[str, str, str], str] | None
|
| 33 |
+
"""Highlighter function: (content, lang, attrs) -> str."""
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
class PresetType(TypedDict):
|
| 37 |
+
"""Preset configuration for markdown-it."""
|
| 38 |
+
|
| 39 |
+
options: OptionsType
|
| 40 |
+
"""Options for parsing."""
|
| 41 |
+
components: MutableMapping[str, MutableMapping[str, list[str]]]
|
| 42 |
+
"""Components for parsing and rendering."""
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
class OptionsDict(MutableMappingABC): # type: ignore
|
| 46 |
+
"""A dictionary, with attribute access to core markdownit configuration options."""
|
| 47 |
+
|
| 48 |
+
# Note: ideally we would probably just remove attribute access entirely,
|
| 49 |
+
# but we keep it for backwards compatibility.
|
| 50 |
+
|
| 51 |
+
def __init__(self, options: OptionsType) -> None:
|
| 52 |
+
self._options = cast(OptionsType, dict(options))
|
| 53 |
+
|
| 54 |
+
def __getitem__(self, key: str) -> Any:
|
| 55 |
+
return self._options[key] # type: ignore[literal-required]
|
| 56 |
+
|
| 57 |
+
def __setitem__(self, key: str, value: Any) -> None:
|
| 58 |
+
self._options[key] = value # type: ignore[literal-required]
|
| 59 |
+
|
| 60 |
+
def __delitem__(self, key: str) -> None:
|
| 61 |
+
del self._options[key] # type: ignore
|
| 62 |
+
|
| 63 |
+
def __iter__(self) -> Iterable[str]: # type: ignore
|
| 64 |
+
return iter(self._options)
|
| 65 |
+
|
| 66 |
+
def __len__(self) -> int:
|
| 67 |
+
return len(self._options)
|
| 68 |
+
|
| 69 |
+
def __repr__(self) -> str:
|
| 70 |
+
return repr(self._options)
|
| 71 |
+
|
| 72 |
+
def __str__(self) -> str:
|
| 73 |
+
return str(self._options)
|
| 74 |
+
|
| 75 |
+
@property
|
| 76 |
+
def maxNesting(self) -> int:
|
| 77 |
+
"""Internal protection, recursion limit."""
|
| 78 |
+
return self._options["maxNesting"]
|
| 79 |
+
|
| 80 |
+
@maxNesting.setter
|
| 81 |
+
def maxNesting(self, value: int) -> None:
|
| 82 |
+
self._options["maxNesting"] = value
|
| 83 |
+
|
| 84 |
+
@property
|
| 85 |
+
def html(self) -> bool:
|
| 86 |
+
"""Enable HTML tags in source."""
|
| 87 |
+
return self._options["html"]
|
| 88 |
+
|
| 89 |
+
@html.setter
|
| 90 |
+
def html(self, value: bool) -> None:
|
| 91 |
+
self._options["html"] = value
|
| 92 |
+
|
| 93 |
+
@property
|
| 94 |
+
def linkify(self) -> bool:
|
| 95 |
+
"""Enable autoconversion of URL-like texts to links."""
|
| 96 |
+
return self._options["linkify"]
|
| 97 |
+
|
| 98 |
+
@linkify.setter
|
| 99 |
+
def linkify(self, value: bool) -> None:
|
| 100 |
+
self._options["linkify"] = value
|
| 101 |
+
|
| 102 |
+
@property
|
| 103 |
+
def typographer(self) -> bool:
|
| 104 |
+
"""Enable smartquotes and replacements."""
|
| 105 |
+
return self._options["typographer"]
|
| 106 |
+
|
| 107 |
+
@typographer.setter
|
| 108 |
+
def typographer(self, value: bool) -> None:
|
| 109 |
+
self._options["typographer"] = value
|
| 110 |
+
|
| 111 |
+
@property
|
| 112 |
+
def quotes(self) -> str:
|
| 113 |
+
"""Quote characters."""
|
| 114 |
+
return self._options["quotes"]
|
| 115 |
+
|
| 116 |
+
@quotes.setter
|
| 117 |
+
def quotes(self, value: str) -> None:
|
| 118 |
+
self._options["quotes"] = value
|
| 119 |
+
|
| 120 |
+
@property
|
| 121 |
+
def xhtmlOut(self) -> bool:
|
| 122 |
+
"""Use '/' to close single tags (<br />)."""
|
| 123 |
+
return self._options["xhtmlOut"]
|
| 124 |
+
|
| 125 |
+
@xhtmlOut.setter
|
| 126 |
+
def xhtmlOut(self, value: bool) -> None:
|
| 127 |
+
self._options["xhtmlOut"] = value
|
| 128 |
+
|
| 129 |
+
@property
|
| 130 |
+
def breaks(self) -> bool:
|
| 131 |
+
"""Convert newlines in paragraphs into <br>."""
|
| 132 |
+
return self._options["breaks"]
|
| 133 |
+
|
| 134 |
+
@breaks.setter
|
| 135 |
+
def breaks(self, value: bool) -> None:
|
| 136 |
+
self._options["breaks"] = value
|
| 137 |
+
|
| 138 |
+
@property
|
| 139 |
+
def langPrefix(self) -> str:
|
| 140 |
+
"""CSS language prefix for fenced blocks."""
|
| 141 |
+
return self._options["langPrefix"]
|
| 142 |
+
|
| 143 |
+
@langPrefix.setter
|
| 144 |
+
def langPrefix(self, value: str) -> None:
|
| 145 |
+
self._options["langPrefix"] = value
|
| 146 |
+
|
| 147 |
+
@property
|
| 148 |
+
def highlight(self) -> Callable[[str, str, str], str] | None:
|
| 149 |
+
"""Highlighter function: (content, langName, langAttrs) -> escaped HTML."""
|
| 150 |
+
return self._options["highlight"]
|
| 151 |
+
|
| 152 |
+
@highlight.setter
|
| 153 |
+
def highlight(self, value: Callable[[str, str, str], str] | None) -> None:
|
| 154 |
+
self._options["highlight"] = value
|
| 155 |
+
|
| 156 |
+
|
| 157 |
+
def read_fixture_file(path: str | Path) -> list[list[Any]]:
|
| 158 |
+
text = Path(path).read_text(encoding="utf-8")
|
| 159 |
+
tests = []
|
| 160 |
+
section = 0
|
| 161 |
+
last_pos = 0
|
| 162 |
+
lines = text.splitlines(keepends=True)
|
| 163 |
+
for i in range(len(lines)):
|
| 164 |
+
if lines[i].rstrip() == ".":
|
| 165 |
+
if section == 0:
|
| 166 |
+
tests.append([i, lines[i - 1].strip()])
|
| 167 |
+
section = 1
|
| 168 |
+
elif section == 1:
|
| 169 |
+
tests[-1].append("".join(lines[last_pos + 1 : i]))
|
| 170 |
+
section = 2
|
| 171 |
+
elif section == 2:
|
| 172 |
+
tests[-1].append("".join(lines[last_pos + 1 : i]))
|
| 173 |
+
section = 0
|
| 174 |
+
|
| 175 |
+
last_pos = i
|
| 176 |
+
return tests
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/__init__.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is dual licensed under the terms of the Apache License, Version
|
| 2 |
+
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
| 3 |
+
# for complete details.
|
| 4 |
+
|
| 5 |
+
__title__ = "packaging"
|
| 6 |
+
__summary__ = "Core utilities for Python packages"
|
| 7 |
+
__uri__ = "https://github.com/pypa/packaging"
|
| 8 |
+
|
| 9 |
+
__version__ = "23.2"
|
| 10 |
+
|
| 11 |
+
__author__ = "Donald Stufft and individual contributors"
|
| 12 |
+
__email__ = "donald@stufft.io"
|
| 13 |
+
|
| 14 |
+
__license__ = "BSD-2-Clause or Apache-2.0"
|
| 15 |
+
__copyright__ = "2014 %s" % __author__
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_elffile.py
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
ELF file parser.
|
| 3 |
+
|
| 4 |
+
This provides a class ``ELFFile`` that parses an ELF executable in a similar
|
| 5 |
+
interface to ``ZipFile``. Only the read interface is implemented.
|
| 6 |
+
|
| 7 |
+
Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca
|
| 8 |
+
ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
import enum
|
| 12 |
+
import os
|
| 13 |
+
import struct
|
| 14 |
+
from typing import IO, Optional, Tuple
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
class ELFInvalid(ValueError):
|
| 18 |
+
pass
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
class EIClass(enum.IntEnum):
|
| 22 |
+
C32 = 1
|
| 23 |
+
C64 = 2
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
class EIData(enum.IntEnum):
|
| 27 |
+
Lsb = 1
|
| 28 |
+
Msb = 2
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
class EMachine(enum.IntEnum):
|
| 32 |
+
I386 = 3
|
| 33 |
+
S390 = 22
|
| 34 |
+
Arm = 40
|
| 35 |
+
X8664 = 62
|
| 36 |
+
AArc64 = 183
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
class ELFFile:
|
| 40 |
+
"""
|
| 41 |
+
Representation of an ELF executable.
|
| 42 |
+
"""
|
| 43 |
+
|
| 44 |
+
def __init__(self, f: IO[bytes]) -> None:
|
| 45 |
+
self._f = f
|
| 46 |
+
|
| 47 |
+
try:
|
| 48 |
+
ident = self._read("16B")
|
| 49 |
+
except struct.error:
|
| 50 |
+
raise ELFInvalid("unable to parse identification")
|
| 51 |
+
magic = bytes(ident[:4])
|
| 52 |
+
if magic != b"\x7fELF":
|
| 53 |
+
raise ELFInvalid(f"invalid magic: {magic!r}")
|
| 54 |
+
|
| 55 |
+
self.capacity = ident[4] # Format for program header (bitness).
|
| 56 |
+
self.encoding = ident[5] # Data structure encoding (endianness).
|
| 57 |
+
|
| 58 |
+
try:
|
| 59 |
+
# e_fmt: Format for program header.
|
| 60 |
+
# p_fmt: Format for section header.
|
| 61 |
+
# p_idx: Indexes to find p_type, p_offset, and p_filesz.
|
| 62 |
+
e_fmt, self._p_fmt, self._p_idx = {
|
| 63 |
+
(1, 1): ("<HHIIIIIHHH", "<IIIIIIII", (0, 1, 4)), # 32-bit LSB.
|
| 64 |
+
(1, 2): (">HHIIIIIHHH", ">IIIIIIII", (0, 1, 4)), # 32-bit MSB.
|
| 65 |
+
(2, 1): ("<HHIQQQIHHH", "<IIQQQQQQ", (0, 2, 5)), # 64-bit LSB.
|
| 66 |
+
(2, 2): (">HHIQQQIHHH", ">IIQQQQQQ", (0, 2, 5)), # 64-bit MSB.
|
| 67 |
+
}[(self.capacity, self.encoding)]
|
| 68 |
+
except KeyError:
|
| 69 |
+
raise ELFInvalid(
|
| 70 |
+
f"unrecognized capacity ({self.capacity}) or "
|
| 71 |
+
f"encoding ({self.encoding})"
|
| 72 |
+
)
|
| 73 |
+
|
| 74 |
+
try:
|
| 75 |
+
(
|
| 76 |
+
_,
|
| 77 |
+
self.machine, # Architecture type.
|
| 78 |
+
_,
|
| 79 |
+
_,
|
| 80 |
+
self._e_phoff, # Offset of program header.
|
| 81 |
+
_,
|
| 82 |
+
self.flags, # Processor-specific flags.
|
| 83 |
+
_,
|
| 84 |
+
self._e_phentsize, # Size of section.
|
| 85 |
+
self._e_phnum, # Number of sections.
|
| 86 |
+
) = self._read(e_fmt)
|
| 87 |
+
except struct.error as e:
|
| 88 |
+
raise ELFInvalid("unable to parse machine and section information") from e
|
| 89 |
+
|
| 90 |
+
def _read(self, fmt: str) -> Tuple[int, ...]:
|
| 91 |
+
return struct.unpack(fmt, self._f.read(struct.calcsize(fmt)))
|
| 92 |
+
|
| 93 |
+
@property
|
| 94 |
+
def interpreter(self) -> Optional[str]:
|
| 95 |
+
"""
|
| 96 |
+
The path recorded in the ``PT_INTERP`` section header.
|
| 97 |
+
"""
|
| 98 |
+
for index in range(self._e_phnum):
|
| 99 |
+
self._f.seek(self._e_phoff + self._e_phentsize * index)
|
| 100 |
+
try:
|
| 101 |
+
data = self._read(self._p_fmt)
|
| 102 |
+
except struct.error:
|
| 103 |
+
continue
|
| 104 |
+
if data[self._p_idx[0]] != 3: # Not PT_INTERP.
|
| 105 |
+
continue
|
| 106 |
+
self._f.seek(data[self._p_idx[1]])
|
| 107 |
+
return os.fsdecode(self._f.read(data[self._p_idx[2]])).strip("\0")
|
| 108 |
+
return None
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_manylinux.py
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import collections
|
| 2 |
+
import contextlib
|
| 3 |
+
import functools
|
| 4 |
+
import os
|
| 5 |
+
import re
|
| 6 |
+
import sys
|
| 7 |
+
import warnings
|
| 8 |
+
from typing import Dict, Generator, Iterator, NamedTuple, Optional, Sequence, Tuple
|
| 9 |
+
|
| 10 |
+
from ._elffile import EIClass, EIData, ELFFile, EMachine
|
| 11 |
+
|
| 12 |
+
EF_ARM_ABIMASK = 0xFF000000
|
| 13 |
+
EF_ARM_ABI_VER5 = 0x05000000
|
| 14 |
+
EF_ARM_ABI_FLOAT_HARD = 0x00000400
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
# `os.PathLike` not a generic type until Python 3.9, so sticking with `str`
|
| 18 |
+
# as the type for `path` until then.
|
| 19 |
+
@contextlib.contextmanager
|
| 20 |
+
def _parse_elf(path: str) -> Generator[Optional[ELFFile], None, None]:
|
| 21 |
+
try:
|
| 22 |
+
with open(path, "rb") as f:
|
| 23 |
+
yield ELFFile(f)
|
| 24 |
+
except (OSError, TypeError, ValueError):
|
| 25 |
+
yield None
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def _is_linux_armhf(executable: str) -> bool:
|
| 29 |
+
# hard-float ABI can be detected from the ELF header of the running
|
| 30 |
+
# process
|
| 31 |
+
# https://static.docs.arm.com/ihi0044/g/aaelf32.pdf
|
| 32 |
+
with _parse_elf(executable) as f:
|
| 33 |
+
return (
|
| 34 |
+
f is not None
|
| 35 |
+
and f.capacity == EIClass.C32
|
| 36 |
+
and f.encoding == EIData.Lsb
|
| 37 |
+
and f.machine == EMachine.Arm
|
| 38 |
+
and f.flags & EF_ARM_ABIMASK == EF_ARM_ABI_VER5
|
| 39 |
+
and f.flags & EF_ARM_ABI_FLOAT_HARD == EF_ARM_ABI_FLOAT_HARD
|
| 40 |
+
)
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
def _is_linux_i686(executable: str) -> bool:
|
| 44 |
+
with _parse_elf(executable) as f:
|
| 45 |
+
return (
|
| 46 |
+
f is not None
|
| 47 |
+
and f.capacity == EIClass.C32
|
| 48 |
+
and f.encoding == EIData.Lsb
|
| 49 |
+
and f.machine == EMachine.I386
|
| 50 |
+
)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def _have_compatible_abi(executable: str, archs: Sequence[str]) -> bool:
|
| 54 |
+
if "armv7l" in archs:
|
| 55 |
+
return _is_linux_armhf(executable)
|
| 56 |
+
if "i686" in archs:
|
| 57 |
+
return _is_linux_i686(executable)
|
| 58 |
+
allowed_archs = {"x86_64", "aarch64", "ppc64", "ppc64le", "s390x", "loongarch64"}
|
| 59 |
+
return any(arch in allowed_archs for arch in archs)
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
# If glibc ever changes its major version, we need to know what the last
|
| 63 |
+
# minor version was, so we can build the complete list of all versions.
|
| 64 |
+
# For now, guess what the highest minor version might be, assume it will
|
| 65 |
+
# be 50 for testing. Once this actually happens, update the dictionary
|
| 66 |
+
# with the actual value.
|
| 67 |
+
_LAST_GLIBC_MINOR: Dict[int, int] = collections.defaultdict(lambda: 50)
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
class _GLibCVersion(NamedTuple):
|
| 71 |
+
major: int
|
| 72 |
+
minor: int
|
| 73 |
+
|
| 74 |
+
|
| 75 |
+
def _glibc_version_string_confstr() -> Optional[str]:
|
| 76 |
+
"""
|
| 77 |
+
Primary implementation of glibc_version_string using os.confstr.
|
| 78 |
+
"""
|
| 79 |
+
# os.confstr is quite a bit faster than ctypes.DLL. It's also less likely
|
| 80 |
+
# to be broken or missing. This strategy is used in the standard library
|
| 81 |
+
# platform module.
|
| 82 |
+
# https://github.com/python/cpython/blob/fcf1d003bf4f0100c/Lib/platform.py#L175-L183
|
| 83 |
+
try:
|
| 84 |
+
# Should be a string like "glibc 2.17".
|
| 85 |
+
version_string: str = getattr(os, "confstr")("CS_GNU_LIBC_VERSION")
|
| 86 |
+
assert version_string is not None
|
| 87 |
+
_, version = version_string.rsplit()
|
| 88 |
+
except (AssertionError, AttributeError, OSError, ValueError):
|
| 89 |
+
# os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)...
|
| 90 |
+
return None
|
| 91 |
+
return version
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
def _glibc_version_string_ctypes() -> Optional[str]:
|
| 95 |
+
"""
|
| 96 |
+
Fallback implementation of glibc_version_string using ctypes.
|
| 97 |
+
"""
|
| 98 |
+
try:
|
| 99 |
+
import ctypes
|
| 100 |
+
except ImportError:
|
| 101 |
+
return None
|
| 102 |
+
|
| 103 |
+
# ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen
|
| 104 |
+
# manpage says, "If filename is NULL, then the returned handle is for the
|
| 105 |
+
# main program". This way we can let the linker do the work to figure out
|
| 106 |
+
# which libc our process is actually using.
|
| 107 |
+
#
|
| 108 |
+
# We must also handle the special case where the executable is not a
|
| 109 |
+
# dynamically linked executable. This can occur when using musl libc,
|
| 110 |
+
# for example. In this situation, dlopen() will error, leading to an
|
| 111 |
+
# OSError. Interestingly, at least in the case of musl, there is no
|
| 112 |
+
# errno set on the OSError. The single string argument used to construct
|
| 113 |
+
# OSError comes from libc itself and is therefore not portable to
|
| 114 |
+
# hard code here. In any case, failure to call dlopen() means we
|
| 115 |
+
# can proceed, so we bail on our attempt.
|
| 116 |
+
try:
|
| 117 |
+
process_namespace = ctypes.CDLL(None)
|
| 118 |
+
except OSError:
|
| 119 |
+
return None
|
| 120 |
+
|
| 121 |
+
try:
|
| 122 |
+
gnu_get_libc_version = process_namespace.gnu_get_libc_version
|
| 123 |
+
except AttributeError:
|
| 124 |
+
# Symbol doesn't exist -> therefore, we are not linked to
|
| 125 |
+
# glibc.
|
| 126 |
+
return None
|
| 127 |
+
|
| 128 |
+
# Call gnu_get_libc_version, which returns a string like "2.5"
|
| 129 |
+
gnu_get_libc_version.restype = ctypes.c_char_p
|
| 130 |
+
version_str: str = gnu_get_libc_version()
|
| 131 |
+
# py2 / py3 compatibility:
|
| 132 |
+
if not isinstance(version_str, str):
|
| 133 |
+
version_str = version_str.decode("ascii")
|
| 134 |
+
|
| 135 |
+
return version_str
|
| 136 |
+
|
| 137 |
+
|
| 138 |
+
def _glibc_version_string() -> Optional[str]:
|
| 139 |
+
"""Returns glibc version string, or None if not using glibc."""
|
| 140 |
+
return _glibc_version_string_confstr() or _glibc_version_string_ctypes()
|
| 141 |
+
|
| 142 |
+
|
| 143 |
+
def _parse_glibc_version(version_str: str) -> Tuple[int, int]:
|
| 144 |
+
"""Parse glibc version.
|
| 145 |
+
|
| 146 |
+
We use a regexp instead of str.split because we want to discard any
|
| 147 |
+
random junk that might come after the minor version -- this might happen
|
| 148 |
+
in patched/forked versions of glibc (e.g. Linaro's version of glibc
|
| 149 |
+
uses version strings like "2.20-2014.11"). See gh-3588.
|
| 150 |
+
"""
|
| 151 |
+
m = re.match(r"(?P<major>[0-9]+)\.(?P<minor>[0-9]+)", version_str)
|
| 152 |
+
if not m:
|
| 153 |
+
warnings.warn(
|
| 154 |
+
f"Expected glibc version with 2 components major.minor,"
|
| 155 |
+
f" got: {version_str}",
|
| 156 |
+
RuntimeWarning,
|
| 157 |
+
)
|
| 158 |
+
return -1, -1
|
| 159 |
+
return int(m.group("major")), int(m.group("minor"))
|
| 160 |
+
|
| 161 |
+
|
| 162 |
+
@functools.lru_cache()
|
| 163 |
+
def _get_glibc_version() -> Tuple[int, int]:
|
| 164 |
+
version_str = _glibc_version_string()
|
| 165 |
+
if version_str is None:
|
| 166 |
+
return (-1, -1)
|
| 167 |
+
return _parse_glibc_version(version_str)
|
| 168 |
+
|
| 169 |
+
|
| 170 |
+
# From PEP 513, PEP 600
|
| 171 |
+
def _is_compatible(arch: str, version: _GLibCVersion) -> bool:
|
| 172 |
+
sys_glibc = _get_glibc_version()
|
| 173 |
+
if sys_glibc < version:
|
| 174 |
+
return False
|
| 175 |
+
# Check for presence of _manylinux module.
|
| 176 |
+
try:
|
| 177 |
+
import _manylinux # noqa
|
| 178 |
+
except ImportError:
|
| 179 |
+
return True
|
| 180 |
+
if hasattr(_manylinux, "manylinux_compatible"):
|
| 181 |
+
result = _manylinux.manylinux_compatible(version[0], version[1], arch)
|
| 182 |
+
if result is not None:
|
| 183 |
+
return bool(result)
|
| 184 |
+
return True
|
| 185 |
+
if version == _GLibCVersion(2, 5):
|
| 186 |
+
if hasattr(_manylinux, "manylinux1_compatible"):
|
| 187 |
+
return bool(_manylinux.manylinux1_compatible)
|
| 188 |
+
if version == _GLibCVersion(2, 12):
|
| 189 |
+
if hasattr(_manylinux, "manylinux2010_compatible"):
|
| 190 |
+
return bool(_manylinux.manylinux2010_compatible)
|
| 191 |
+
if version == _GLibCVersion(2, 17):
|
| 192 |
+
if hasattr(_manylinux, "manylinux2014_compatible"):
|
| 193 |
+
return bool(_manylinux.manylinux2014_compatible)
|
| 194 |
+
return True
|
| 195 |
+
|
| 196 |
+
|
| 197 |
+
_LEGACY_MANYLINUX_MAP = {
|
| 198 |
+
# CentOS 7 w/ glibc 2.17 (PEP 599)
|
| 199 |
+
(2, 17): "manylinux2014",
|
| 200 |
+
# CentOS 6 w/ glibc 2.12 (PEP 571)
|
| 201 |
+
(2, 12): "manylinux2010",
|
| 202 |
+
# CentOS 5 w/ glibc 2.5 (PEP 513)
|
| 203 |
+
(2, 5): "manylinux1",
|
| 204 |
+
}
|
| 205 |
+
|
| 206 |
+
|
| 207 |
+
def platform_tags(archs: Sequence[str]) -> Iterator[str]:
|
| 208 |
+
"""Generate manylinux tags compatible to the current platform.
|
| 209 |
+
|
| 210 |
+
:param archs: Sequence of compatible architectures.
|
| 211 |
+
The first one shall be the closest to the actual architecture and be the part of
|
| 212 |
+
platform tag after the ``linux_`` prefix, e.g. ``x86_64``.
|
| 213 |
+
The ``linux_`` prefix is assumed as a prerequisite for the current platform to
|
| 214 |
+
be manylinux-compatible.
|
| 215 |
+
|
| 216 |
+
:returns: An iterator of compatible manylinux tags.
|
| 217 |
+
"""
|
| 218 |
+
if not _have_compatible_abi(sys.executable, archs):
|
| 219 |
+
return
|
| 220 |
+
# Oldest glibc to be supported regardless of architecture is (2, 17).
|
| 221 |
+
too_old_glibc2 = _GLibCVersion(2, 16)
|
| 222 |
+
if set(archs) & {"x86_64", "i686"}:
|
| 223 |
+
# On x86/i686 also oldest glibc to be supported is (2, 5).
|
| 224 |
+
too_old_glibc2 = _GLibCVersion(2, 4)
|
| 225 |
+
current_glibc = _GLibCVersion(*_get_glibc_version())
|
| 226 |
+
glibc_max_list = [current_glibc]
|
| 227 |
+
# We can assume compatibility across glibc major versions.
|
| 228 |
+
# https://sourceware.org/bugzilla/show_bug.cgi?id=24636
|
| 229 |
+
#
|
| 230 |
+
# Build a list of maximum glibc versions so that we can
|
| 231 |
+
# output the canonical list of all glibc from current_glibc
|
| 232 |
+
# down to too_old_glibc2, including all intermediary versions.
|
| 233 |
+
for glibc_major in range(current_glibc.major - 1, 1, -1):
|
| 234 |
+
glibc_minor = _LAST_GLIBC_MINOR[glibc_major]
|
| 235 |
+
glibc_max_list.append(_GLibCVersion(glibc_major, glibc_minor))
|
| 236 |
+
for arch in archs:
|
| 237 |
+
for glibc_max in glibc_max_list:
|
| 238 |
+
if glibc_max.major == too_old_glibc2.major:
|
| 239 |
+
min_minor = too_old_glibc2.minor
|
| 240 |
+
else:
|
| 241 |
+
# For other glibc major versions oldest supported is (x, 0).
|
| 242 |
+
min_minor = -1
|
| 243 |
+
for glibc_minor in range(glibc_max.minor, min_minor, -1):
|
| 244 |
+
glibc_version = _GLibCVersion(glibc_max.major, glibc_minor)
|
| 245 |
+
tag = "manylinux_{}_{}".format(*glibc_version)
|
| 246 |
+
if _is_compatible(arch, glibc_version):
|
| 247 |
+
yield f"{tag}_{arch}"
|
| 248 |
+
# Handle the legacy manylinux1, manylinux2010, manylinux2014 tags.
|
| 249 |
+
if glibc_version in _LEGACY_MANYLINUX_MAP:
|
| 250 |
+
legacy_tag = _LEGACY_MANYLINUX_MAP[glibc_version]
|
| 251 |
+
if _is_compatible(arch, glibc_version):
|
| 252 |
+
yield f"{legacy_tag}_{arch}"
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_musllinux.py
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""PEP 656 support.
|
| 2 |
+
|
| 3 |
+
This module implements logic to detect if the currently running Python is
|
| 4 |
+
linked against musl, and what musl version is used.
|
| 5 |
+
"""
|
| 6 |
+
|
| 7 |
+
import functools
|
| 8 |
+
import re
|
| 9 |
+
import subprocess
|
| 10 |
+
import sys
|
| 11 |
+
from typing import Iterator, NamedTuple, Optional, Sequence
|
| 12 |
+
|
| 13 |
+
from ._elffile import ELFFile
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
class _MuslVersion(NamedTuple):
|
| 17 |
+
major: int
|
| 18 |
+
minor: int
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
def _parse_musl_version(output: str) -> Optional[_MuslVersion]:
|
| 22 |
+
lines = [n for n in (n.strip() for n in output.splitlines()) if n]
|
| 23 |
+
if len(lines) < 2 or lines[0][:4] != "musl":
|
| 24 |
+
return None
|
| 25 |
+
m = re.match(r"Version (\d+)\.(\d+)", lines[1])
|
| 26 |
+
if not m:
|
| 27 |
+
return None
|
| 28 |
+
return _MuslVersion(major=int(m.group(1)), minor=int(m.group(2)))
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
@functools.lru_cache()
|
| 32 |
+
def _get_musl_version(executable: str) -> Optional[_MuslVersion]:
|
| 33 |
+
"""Detect currently-running musl runtime version.
|
| 34 |
+
|
| 35 |
+
This is done by checking the specified executable's dynamic linking
|
| 36 |
+
information, and invoking the loader to parse its output for a version
|
| 37 |
+
string. If the loader is musl, the output would be something like::
|
| 38 |
+
|
| 39 |
+
musl libc (x86_64)
|
| 40 |
+
Version 1.2.2
|
| 41 |
+
Dynamic Program Loader
|
| 42 |
+
"""
|
| 43 |
+
try:
|
| 44 |
+
with open(executable, "rb") as f:
|
| 45 |
+
ld = ELFFile(f).interpreter
|
| 46 |
+
except (OSError, TypeError, ValueError):
|
| 47 |
+
return None
|
| 48 |
+
if ld is None or "musl" not in ld:
|
| 49 |
+
return None
|
| 50 |
+
proc = subprocess.run([ld], stderr=subprocess.PIPE, text=True)
|
| 51 |
+
return _parse_musl_version(proc.stderr)
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
def platform_tags(archs: Sequence[str]) -> Iterator[str]:
|
| 55 |
+
"""Generate musllinux tags compatible to the current platform.
|
| 56 |
+
|
| 57 |
+
:param archs: Sequence of compatible architectures.
|
| 58 |
+
The first one shall be the closest to the actual architecture and be the part of
|
| 59 |
+
platform tag after the ``linux_`` prefix, e.g. ``x86_64``.
|
| 60 |
+
The ``linux_`` prefix is assumed as a prerequisite for the current platform to
|
| 61 |
+
be musllinux-compatible.
|
| 62 |
+
|
| 63 |
+
:returns: An iterator of compatible musllinux tags.
|
| 64 |
+
"""
|
| 65 |
+
sys_musl = _get_musl_version(sys.executable)
|
| 66 |
+
if sys_musl is None: # Python not dynamically linked against musl.
|
| 67 |
+
return
|
| 68 |
+
for arch in archs:
|
| 69 |
+
for minor in range(sys_musl.minor, -1, -1):
|
| 70 |
+
yield f"musllinux_{sys_musl.major}_{minor}_{arch}"
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
if __name__ == "__main__": # pragma: no cover
|
| 74 |
+
import sysconfig
|
| 75 |
+
|
| 76 |
+
plat = sysconfig.get_platform()
|
| 77 |
+
assert plat.startswith("linux-"), "not linux"
|
| 78 |
+
|
| 79 |
+
print("plat:", plat)
|
| 80 |
+
print("musl:", _get_musl_version(sys.executable))
|
| 81 |
+
print("tags:", end=" ")
|
| 82 |
+
for t in platform_tags(re.sub(r"[.-]", "_", plat.split("-", 1)[-1])):
|
| 83 |
+
print(t, end="\n ")
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_parser.py
ADDED
|
@@ -0,0 +1,359 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Handwritten parser of dependency specifiers.
|
| 2 |
+
|
| 3 |
+
The docstring for each __parse_* function contains ENBF-inspired grammar representing
|
| 4 |
+
the implementation.
|
| 5 |
+
"""
|
| 6 |
+
|
| 7 |
+
import ast
|
| 8 |
+
from typing import Any, List, NamedTuple, Optional, Tuple, Union
|
| 9 |
+
|
| 10 |
+
from ._tokenizer import DEFAULT_RULES, Tokenizer
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
class Node:
|
| 14 |
+
def __init__(self, value: str) -> None:
|
| 15 |
+
self.value = value
|
| 16 |
+
|
| 17 |
+
def __str__(self) -> str:
|
| 18 |
+
return self.value
|
| 19 |
+
|
| 20 |
+
def __repr__(self) -> str:
|
| 21 |
+
return f"<{self.__class__.__name__}('{self}')>"
|
| 22 |
+
|
| 23 |
+
def serialize(self) -> str:
|
| 24 |
+
raise NotImplementedError
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
class Variable(Node):
|
| 28 |
+
def serialize(self) -> str:
|
| 29 |
+
return str(self)
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
class Value(Node):
|
| 33 |
+
def serialize(self) -> str:
|
| 34 |
+
return f'"{self}"'
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
class Op(Node):
|
| 38 |
+
def serialize(self) -> str:
|
| 39 |
+
return str(self)
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
MarkerVar = Union[Variable, Value]
|
| 43 |
+
MarkerItem = Tuple[MarkerVar, Op, MarkerVar]
|
| 44 |
+
# MarkerAtom = Union[MarkerItem, List["MarkerAtom"]]
|
| 45 |
+
# MarkerList = List[Union["MarkerList", MarkerAtom, str]]
|
| 46 |
+
# mypy does not support recursive type definition
|
| 47 |
+
# https://github.com/python/mypy/issues/731
|
| 48 |
+
MarkerAtom = Any
|
| 49 |
+
MarkerList = List[Any]
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
class ParsedRequirement(NamedTuple):
|
| 53 |
+
name: str
|
| 54 |
+
url: str
|
| 55 |
+
extras: List[str]
|
| 56 |
+
specifier: str
|
| 57 |
+
marker: Optional[MarkerList]
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
# --------------------------------------------------------------------------------------
|
| 61 |
+
# Recursive descent parser for dependency specifier
|
| 62 |
+
# --------------------------------------------------------------------------------------
|
| 63 |
+
def parse_requirement(source: str) -> ParsedRequirement:
|
| 64 |
+
return _parse_requirement(Tokenizer(source, rules=DEFAULT_RULES))
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
def _parse_requirement(tokenizer: Tokenizer) -> ParsedRequirement:
|
| 68 |
+
"""
|
| 69 |
+
requirement = WS? IDENTIFIER WS? extras WS? requirement_details
|
| 70 |
+
"""
|
| 71 |
+
tokenizer.consume("WS")
|
| 72 |
+
|
| 73 |
+
name_token = tokenizer.expect(
|
| 74 |
+
"IDENTIFIER", expected="package name at the start of dependency specifier"
|
| 75 |
+
)
|
| 76 |
+
name = name_token.text
|
| 77 |
+
tokenizer.consume("WS")
|
| 78 |
+
|
| 79 |
+
extras = _parse_extras(tokenizer)
|
| 80 |
+
tokenizer.consume("WS")
|
| 81 |
+
|
| 82 |
+
url, specifier, marker = _parse_requirement_details(tokenizer)
|
| 83 |
+
tokenizer.expect("END", expected="end of dependency specifier")
|
| 84 |
+
|
| 85 |
+
return ParsedRequirement(name, url, extras, specifier, marker)
|
| 86 |
+
|
| 87 |
+
|
| 88 |
+
def _parse_requirement_details(
|
| 89 |
+
tokenizer: Tokenizer,
|
| 90 |
+
) -> Tuple[str, str, Optional[MarkerList]]:
|
| 91 |
+
"""
|
| 92 |
+
requirement_details = AT URL (WS requirement_marker?)?
|
| 93 |
+
| specifier WS? (requirement_marker)?
|
| 94 |
+
"""
|
| 95 |
+
|
| 96 |
+
specifier = ""
|
| 97 |
+
url = ""
|
| 98 |
+
marker = None
|
| 99 |
+
|
| 100 |
+
if tokenizer.check("AT"):
|
| 101 |
+
tokenizer.read()
|
| 102 |
+
tokenizer.consume("WS")
|
| 103 |
+
|
| 104 |
+
url_start = tokenizer.position
|
| 105 |
+
url = tokenizer.expect("URL", expected="URL after @").text
|
| 106 |
+
if tokenizer.check("END", peek=True):
|
| 107 |
+
return (url, specifier, marker)
|
| 108 |
+
|
| 109 |
+
tokenizer.expect("WS", expected="whitespace after URL")
|
| 110 |
+
|
| 111 |
+
# The input might end after whitespace.
|
| 112 |
+
if tokenizer.check("END", peek=True):
|
| 113 |
+
return (url, specifier, marker)
|
| 114 |
+
|
| 115 |
+
marker = _parse_requirement_marker(
|
| 116 |
+
tokenizer, span_start=url_start, after="URL and whitespace"
|
| 117 |
+
)
|
| 118 |
+
else:
|
| 119 |
+
specifier_start = tokenizer.position
|
| 120 |
+
specifier = _parse_specifier(tokenizer)
|
| 121 |
+
tokenizer.consume("WS")
|
| 122 |
+
|
| 123 |
+
if tokenizer.check("END", peek=True):
|
| 124 |
+
return (url, specifier, marker)
|
| 125 |
+
|
| 126 |
+
marker = _parse_requirement_marker(
|
| 127 |
+
tokenizer,
|
| 128 |
+
span_start=specifier_start,
|
| 129 |
+
after=(
|
| 130 |
+
"version specifier"
|
| 131 |
+
if specifier
|
| 132 |
+
else "name and no valid version specifier"
|
| 133 |
+
),
|
| 134 |
+
)
|
| 135 |
+
|
| 136 |
+
return (url, specifier, marker)
|
| 137 |
+
|
| 138 |
+
|
| 139 |
+
def _parse_requirement_marker(
|
| 140 |
+
tokenizer: Tokenizer, *, span_start: int, after: str
|
| 141 |
+
) -> MarkerList:
|
| 142 |
+
"""
|
| 143 |
+
requirement_marker = SEMICOLON marker WS?
|
| 144 |
+
"""
|
| 145 |
+
|
| 146 |
+
if not tokenizer.check("SEMICOLON"):
|
| 147 |
+
tokenizer.raise_syntax_error(
|
| 148 |
+
f"Expected end or semicolon (after {after})",
|
| 149 |
+
span_start=span_start,
|
| 150 |
+
)
|
| 151 |
+
tokenizer.read()
|
| 152 |
+
|
| 153 |
+
marker = _parse_marker(tokenizer)
|
| 154 |
+
tokenizer.consume("WS")
|
| 155 |
+
|
| 156 |
+
return marker
|
| 157 |
+
|
| 158 |
+
|
| 159 |
+
def _parse_extras(tokenizer: Tokenizer) -> List[str]:
|
| 160 |
+
"""
|
| 161 |
+
extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
|
| 162 |
+
"""
|
| 163 |
+
if not tokenizer.check("LEFT_BRACKET", peek=True):
|
| 164 |
+
return []
|
| 165 |
+
|
| 166 |
+
with tokenizer.enclosing_tokens(
|
| 167 |
+
"LEFT_BRACKET",
|
| 168 |
+
"RIGHT_BRACKET",
|
| 169 |
+
around="extras",
|
| 170 |
+
):
|
| 171 |
+
tokenizer.consume("WS")
|
| 172 |
+
extras = _parse_extras_list(tokenizer)
|
| 173 |
+
tokenizer.consume("WS")
|
| 174 |
+
|
| 175 |
+
return extras
|
| 176 |
+
|
| 177 |
+
|
| 178 |
+
def _parse_extras_list(tokenizer: Tokenizer) -> List[str]:
|
| 179 |
+
"""
|
| 180 |
+
extras_list = identifier (wsp* ',' wsp* identifier)*
|
| 181 |
+
"""
|
| 182 |
+
extras: List[str] = []
|
| 183 |
+
|
| 184 |
+
if not tokenizer.check("IDENTIFIER"):
|
| 185 |
+
return extras
|
| 186 |
+
|
| 187 |
+
extras.append(tokenizer.read().text)
|
| 188 |
+
|
| 189 |
+
while True:
|
| 190 |
+
tokenizer.consume("WS")
|
| 191 |
+
if tokenizer.check("IDENTIFIER", peek=True):
|
| 192 |
+
tokenizer.raise_syntax_error("Expected comma between extra names")
|
| 193 |
+
elif not tokenizer.check("COMMA"):
|
| 194 |
+
break
|
| 195 |
+
|
| 196 |
+
tokenizer.read()
|
| 197 |
+
tokenizer.consume("WS")
|
| 198 |
+
|
| 199 |
+
extra_token = tokenizer.expect("IDENTIFIER", expected="extra name after comma")
|
| 200 |
+
extras.append(extra_token.text)
|
| 201 |
+
|
| 202 |
+
return extras
|
| 203 |
+
|
| 204 |
+
|
| 205 |
+
def _parse_specifier(tokenizer: Tokenizer) -> str:
|
| 206 |
+
"""
|
| 207 |
+
specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
|
| 208 |
+
| WS? version_many WS?
|
| 209 |
+
"""
|
| 210 |
+
with tokenizer.enclosing_tokens(
|
| 211 |
+
"LEFT_PARENTHESIS",
|
| 212 |
+
"RIGHT_PARENTHESIS",
|
| 213 |
+
around="version specifier",
|
| 214 |
+
):
|
| 215 |
+
tokenizer.consume("WS")
|
| 216 |
+
parsed_specifiers = _parse_version_many(tokenizer)
|
| 217 |
+
tokenizer.consume("WS")
|
| 218 |
+
|
| 219 |
+
return parsed_specifiers
|
| 220 |
+
|
| 221 |
+
|
| 222 |
+
def _parse_version_many(tokenizer: Tokenizer) -> str:
|
| 223 |
+
"""
|
| 224 |
+
version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
|
| 225 |
+
"""
|
| 226 |
+
parsed_specifiers = ""
|
| 227 |
+
while tokenizer.check("SPECIFIER"):
|
| 228 |
+
span_start = tokenizer.position
|
| 229 |
+
parsed_specifiers += tokenizer.read().text
|
| 230 |
+
if tokenizer.check("VERSION_PREFIX_TRAIL", peek=True):
|
| 231 |
+
tokenizer.raise_syntax_error(
|
| 232 |
+
".* suffix can only be used with `==` or `!=` operators",
|
| 233 |
+
span_start=span_start,
|
| 234 |
+
span_end=tokenizer.position + 1,
|
| 235 |
+
)
|
| 236 |
+
if tokenizer.check("VERSION_LOCAL_LABEL_TRAIL", peek=True):
|
| 237 |
+
tokenizer.raise_syntax_error(
|
| 238 |
+
"Local version label can only be used with `==` or `!=` operators",
|
| 239 |
+
span_start=span_start,
|
| 240 |
+
span_end=tokenizer.position,
|
| 241 |
+
)
|
| 242 |
+
tokenizer.consume("WS")
|
| 243 |
+
if not tokenizer.check("COMMA"):
|
| 244 |
+
break
|
| 245 |
+
parsed_specifiers += tokenizer.read().text
|
| 246 |
+
tokenizer.consume("WS")
|
| 247 |
+
|
| 248 |
+
return parsed_specifiers
|
| 249 |
+
|
| 250 |
+
|
| 251 |
+
# --------------------------------------------------------------------------------------
|
| 252 |
+
# Recursive descent parser for marker expression
|
| 253 |
+
# --------------------------------------------------------------------------------------
|
| 254 |
+
def parse_marker(source: str) -> MarkerList:
|
| 255 |
+
return _parse_full_marker(Tokenizer(source, rules=DEFAULT_RULES))
|
| 256 |
+
|
| 257 |
+
|
| 258 |
+
def _parse_full_marker(tokenizer: Tokenizer) -> MarkerList:
|
| 259 |
+
retval = _parse_marker(tokenizer)
|
| 260 |
+
tokenizer.expect("END", expected="end of marker expression")
|
| 261 |
+
return retval
|
| 262 |
+
|
| 263 |
+
|
| 264 |
+
def _parse_marker(tokenizer: Tokenizer) -> MarkerList:
|
| 265 |
+
"""
|
| 266 |
+
marker = marker_atom (BOOLOP marker_atom)+
|
| 267 |
+
"""
|
| 268 |
+
expression = [_parse_marker_atom(tokenizer)]
|
| 269 |
+
while tokenizer.check("BOOLOP"):
|
| 270 |
+
token = tokenizer.read()
|
| 271 |
+
expr_right = _parse_marker_atom(tokenizer)
|
| 272 |
+
expression.extend((token.text, expr_right))
|
| 273 |
+
return expression
|
| 274 |
+
|
| 275 |
+
|
| 276 |
+
def _parse_marker_atom(tokenizer: Tokenizer) -> MarkerAtom:
|
| 277 |
+
"""
|
| 278 |
+
marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
|
| 279 |
+
| WS? marker_item WS?
|
| 280 |
+
"""
|
| 281 |
+
|
| 282 |
+
tokenizer.consume("WS")
|
| 283 |
+
if tokenizer.check("LEFT_PARENTHESIS", peek=True):
|
| 284 |
+
with tokenizer.enclosing_tokens(
|
| 285 |
+
"LEFT_PARENTHESIS",
|
| 286 |
+
"RIGHT_PARENTHESIS",
|
| 287 |
+
around="marker expression",
|
| 288 |
+
):
|
| 289 |
+
tokenizer.consume("WS")
|
| 290 |
+
marker: MarkerAtom = _parse_marker(tokenizer)
|
| 291 |
+
tokenizer.consume("WS")
|
| 292 |
+
else:
|
| 293 |
+
marker = _parse_marker_item(tokenizer)
|
| 294 |
+
tokenizer.consume("WS")
|
| 295 |
+
return marker
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
def _parse_marker_item(tokenizer: Tokenizer) -> MarkerItem:
|
| 299 |
+
"""
|
| 300 |
+
marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
|
| 301 |
+
"""
|
| 302 |
+
tokenizer.consume("WS")
|
| 303 |
+
marker_var_left = _parse_marker_var(tokenizer)
|
| 304 |
+
tokenizer.consume("WS")
|
| 305 |
+
marker_op = _parse_marker_op(tokenizer)
|
| 306 |
+
tokenizer.consume("WS")
|
| 307 |
+
marker_var_right = _parse_marker_var(tokenizer)
|
| 308 |
+
tokenizer.consume("WS")
|
| 309 |
+
return (marker_var_left, marker_op, marker_var_right)
|
| 310 |
+
|
| 311 |
+
|
| 312 |
+
def _parse_marker_var(tokenizer: Tokenizer) -> MarkerVar:
|
| 313 |
+
"""
|
| 314 |
+
marker_var = VARIABLE | QUOTED_STRING
|
| 315 |
+
"""
|
| 316 |
+
if tokenizer.check("VARIABLE"):
|
| 317 |
+
return process_env_var(tokenizer.read().text.replace(".", "_"))
|
| 318 |
+
elif tokenizer.check("QUOTED_STRING"):
|
| 319 |
+
return process_python_str(tokenizer.read().text)
|
| 320 |
+
else:
|
| 321 |
+
tokenizer.raise_syntax_error(
|
| 322 |
+
message="Expected a marker variable or quoted string"
|
| 323 |
+
)
|
| 324 |
+
|
| 325 |
+
|
| 326 |
+
def process_env_var(env_var: str) -> Variable:
|
| 327 |
+
if (
|
| 328 |
+
env_var == "platform_python_implementation"
|
| 329 |
+
or env_var == "python_implementation"
|
| 330 |
+
):
|
| 331 |
+
return Variable("platform_python_implementation")
|
| 332 |
+
else:
|
| 333 |
+
return Variable(env_var)
|
| 334 |
+
|
| 335 |
+
|
| 336 |
+
def process_python_str(python_str: str) -> Value:
|
| 337 |
+
value = ast.literal_eval(python_str)
|
| 338 |
+
return Value(str(value))
|
| 339 |
+
|
| 340 |
+
|
| 341 |
+
def _parse_marker_op(tokenizer: Tokenizer) -> Op:
|
| 342 |
+
"""
|
| 343 |
+
marker_op = IN | NOT IN | OP
|
| 344 |
+
"""
|
| 345 |
+
if tokenizer.check("IN"):
|
| 346 |
+
tokenizer.read()
|
| 347 |
+
return Op("in")
|
| 348 |
+
elif tokenizer.check("NOT"):
|
| 349 |
+
tokenizer.read()
|
| 350 |
+
tokenizer.expect("WS", expected="whitespace after 'not'")
|
| 351 |
+
tokenizer.expect("IN", expected="'in' after 'not'")
|
| 352 |
+
return Op("not in")
|
| 353 |
+
elif tokenizer.check("OP"):
|
| 354 |
+
return Op(tokenizer.read().text)
|
| 355 |
+
else:
|
| 356 |
+
return tokenizer.raise_syntax_error(
|
| 357 |
+
"Expected marker operator, one of "
|
| 358 |
+
"<=, <, !=, ==, >=, >, ~=, ===, in, not in"
|
| 359 |
+
)
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_structures.py
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is dual licensed under the terms of the Apache License, Version
|
| 2 |
+
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
| 3 |
+
# for complete details.
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
class InfinityType:
|
| 7 |
+
def __repr__(self) -> str:
|
| 8 |
+
return "Infinity"
|
| 9 |
+
|
| 10 |
+
def __hash__(self) -> int:
|
| 11 |
+
return hash(repr(self))
|
| 12 |
+
|
| 13 |
+
def __lt__(self, other: object) -> bool:
|
| 14 |
+
return False
|
| 15 |
+
|
| 16 |
+
def __le__(self, other: object) -> bool:
|
| 17 |
+
return False
|
| 18 |
+
|
| 19 |
+
def __eq__(self, other: object) -> bool:
|
| 20 |
+
return isinstance(other, self.__class__)
|
| 21 |
+
|
| 22 |
+
def __gt__(self, other: object) -> bool:
|
| 23 |
+
return True
|
| 24 |
+
|
| 25 |
+
def __ge__(self, other: object) -> bool:
|
| 26 |
+
return True
|
| 27 |
+
|
| 28 |
+
def __neg__(self: object) -> "NegativeInfinityType":
|
| 29 |
+
return NegativeInfinity
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
Infinity = InfinityType()
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
class NegativeInfinityType:
|
| 36 |
+
def __repr__(self) -> str:
|
| 37 |
+
return "-Infinity"
|
| 38 |
+
|
| 39 |
+
def __hash__(self) -> int:
|
| 40 |
+
return hash(repr(self))
|
| 41 |
+
|
| 42 |
+
def __lt__(self, other: object) -> bool:
|
| 43 |
+
return True
|
| 44 |
+
|
| 45 |
+
def __le__(self, other: object) -> bool:
|
| 46 |
+
return True
|
| 47 |
+
|
| 48 |
+
def __eq__(self, other: object) -> bool:
|
| 49 |
+
return isinstance(other, self.__class__)
|
| 50 |
+
|
| 51 |
+
def __gt__(self, other: object) -> bool:
|
| 52 |
+
return False
|
| 53 |
+
|
| 54 |
+
def __ge__(self, other: object) -> bool:
|
| 55 |
+
return False
|
| 56 |
+
|
| 57 |
+
def __neg__(self: object) -> InfinityType:
|
| 58 |
+
return Infinity
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
NegativeInfinity = NegativeInfinityType()
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/_tokenizer.py
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import contextlib
|
| 2 |
+
import re
|
| 3 |
+
from dataclasses import dataclass
|
| 4 |
+
from typing import Dict, Iterator, NoReturn, Optional, Tuple, Union
|
| 5 |
+
|
| 6 |
+
from .specifiers import Specifier
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
@dataclass
|
| 10 |
+
class Token:
|
| 11 |
+
name: str
|
| 12 |
+
text: str
|
| 13 |
+
position: int
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
class ParserSyntaxError(Exception):
|
| 17 |
+
"""The provided source text could not be parsed correctly."""
|
| 18 |
+
|
| 19 |
+
def __init__(
|
| 20 |
+
self,
|
| 21 |
+
message: str,
|
| 22 |
+
*,
|
| 23 |
+
source: str,
|
| 24 |
+
span: Tuple[int, int],
|
| 25 |
+
) -> None:
|
| 26 |
+
self.span = span
|
| 27 |
+
self.message = message
|
| 28 |
+
self.source = source
|
| 29 |
+
|
| 30 |
+
super().__init__()
|
| 31 |
+
|
| 32 |
+
def __str__(self) -> str:
|
| 33 |
+
marker = " " * self.span[0] + "~" * (self.span[1] - self.span[0]) + "^"
|
| 34 |
+
return "\n ".join([self.message, self.source, marker])
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
DEFAULT_RULES: "Dict[str, Union[str, re.Pattern[str]]]" = {
|
| 38 |
+
"LEFT_PARENTHESIS": r"\(",
|
| 39 |
+
"RIGHT_PARENTHESIS": r"\)",
|
| 40 |
+
"LEFT_BRACKET": r"\[",
|
| 41 |
+
"RIGHT_BRACKET": r"\]",
|
| 42 |
+
"SEMICOLON": r";",
|
| 43 |
+
"COMMA": r",",
|
| 44 |
+
"QUOTED_STRING": re.compile(
|
| 45 |
+
r"""
|
| 46 |
+
(
|
| 47 |
+
('[^']*')
|
| 48 |
+
|
|
| 49 |
+
("[^"]*")
|
| 50 |
+
)
|
| 51 |
+
""",
|
| 52 |
+
re.VERBOSE,
|
| 53 |
+
),
|
| 54 |
+
"OP": r"(===|==|~=|!=|<=|>=|<|>)",
|
| 55 |
+
"BOOLOP": r"\b(or|and)\b",
|
| 56 |
+
"IN": r"\bin\b",
|
| 57 |
+
"NOT": r"\bnot\b",
|
| 58 |
+
"VARIABLE": re.compile(
|
| 59 |
+
r"""
|
| 60 |
+
\b(
|
| 61 |
+
python_version
|
| 62 |
+
|python_full_version
|
| 63 |
+
|os[._]name
|
| 64 |
+
|sys[._]platform
|
| 65 |
+
|platform_(release|system)
|
| 66 |
+
|platform[._](version|machine|python_implementation)
|
| 67 |
+
|python_implementation
|
| 68 |
+
|implementation_(name|version)
|
| 69 |
+
|extra
|
| 70 |
+
)\b
|
| 71 |
+
""",
|
| 72 |
+
re.VERBOSE,
|
| 73 |
+
),
|
| 74 |
+
"SPECIFIER": re.compile(
|
| 75 |
+
Specifier._operator_regex_str + Specifier._version_regex_str,
|
| 76 |
+
re.VERBOSE | re.IGNORECASE,
|
| 77 |
+
),
|
| 78 |
+
"AT": r"\@",
|
| 79 |
+
"URL": r"[^ \t]+",
|
| 80 |
+
"IDENTIFIER": r"\b[a-zA-Z0-9][a-zA-Z0-9._-]*\b",
|
| 81 |
+
"VERSION_PREFIX_TRAIL": r"\.\*",
|
| 82 |
+
"VERSION_LOCAL_LABEL_TRAIL": r"\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*",
|
| 83 |
+
"WS": r"[ \t]+",
|
| 84 |
+
"END": r"$",
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
+
|
| 88 |
+
class Tokenizer:
|
| 89 |
+
"""Context-sensitive token parsing.
|
| 90 |
+
|
| 91 |
+
Provides methods to examine the input stream to check whether the next token
|
| 92 |
+
matches.
|
| 93 |
+
"""
|
| 94 |
+
|
| 95 |
+
def __init__(
|
| 96 |
+
self,
|
| 97 |
+
source: str,
|
| 98 |
+
*,
|
| 99 |
+
rules: "Dict[str, Union[str, re.Pattern[str]]]",
|
| 100 |
+
) -> None:
|
| 101 |
+
self.source = source
|
| 102 |
+
self.rules: Dict[str, re.Pattern[str]] = {
|
| 103 |
+
name: re.compile(pattern) for name, pattern in rules.items()
|
| 104 |
+
}
|
| 105 |
+
self.next_token: Optional[Token] = None
|
| 106 |
+
self.position = 0
|
| 107 |
+
|
| 108 |
+
def consume(self, name: str) -> None:
|
| 109 |
+
"""Move beyond provided token name, if at current position."""
|
| 110 |
+
if self.check(name):
|
| 111 |
+
self.read()
|
| 112 |
+
|
| 113 |
+
def check(self, name: str, *, peek: bool = False) -> bool:
|
| 114 |
+
"""Check whether the next token has the provided name.
|
| 115 |
+
|
| 116 |
+
By default, if the check succeeds, the token *must* be read before
|
| 117 |
+
another check. If `peek` is set to `True`, the token is not loaded and
|
| 118 |
+
would need to be checked again.
|
| 119 |
+
"""
|
| 120 |
+
assert (
|
| 121 |
+
self.next_token is None
|
| 122 |
+
), f"Cannot check for {name!r}, already have {self.next_token!r}"
|
| 123 |
+
assert name in self.rules, f"Unknown token name: {name!r}"
|
| 124 |
+
|
| 125 |
+
expression = self.rules[name]
|
| 126 |
+
|
| 127 |
+
match = expression.match(self.source, self.position)
|
| 128 |
+
if match is None:
|
| 129 |
+
return False
|
| 130 |
+
if not peek:
|
| 131 |
+
self.next_token = Token(name, match[0], self.position)
|
| 132 |
+
return True
|
| 133 |
+
|
| 134 |
+
def expect(self, name: str, *, expected: str) -> Token:
|
| 135 |
+
"""Expect a certain token name next, failing with a syntax error otherwise.
|
| 136 |
+
|
| 137 |
+
The token is *not* read.
|
| 138 |
+
"""
|
| 139 |
+
if not self.check(name):
|
| 140 |
+
raise self.raise_syntax_error(f"Expected {expected}")
|
| 141 |
+
return self.read()
|
| 142 |
+
|
| 143 |
+
def read(self) -> Token:
|
| 144 |
+
"""Consume the next token and return it."""
|
| 145 |
+
token = self.next_token
|
| 146 |
+
assert token is not None
|
| 147 |
+
|
| 148 |
+
self.position += len(token.text)
|
| 149 |
+
self.next_token = None
|
| 150 |
+
|
| 151 |
+
return token
|
| 152 |
+
|
| 153 |
+
def raise_syntax_error(
|
| 154 |
+
self,
|
| 155 |
+
message: str,
|
| 156 |
+
*,
|
| 157 |
+
span_start: Optional[int] = None,
|
| 158 |
+
span_end: Optional[int] = None,
|
| 159 |
+
) -> NoReturn:
|
| 160 |
+
"""Raise ParserSyntaxError at the given position."""
|
| 161 |
+
span = (
|
| 162 |
+
self.position if span_start is None else span_start,
|
| 163 |
+
self.position if span_end is None else span_end,
|
| 164 |
+
)
|
| 165 |
+
raise ParserSyntaxError(
|
| 166 |
+
message,
|
| 167 |
+
source=self.source,
|
| 168 |
+
span=span,
|
| 169 |
+
)
|
| 170 |
+
|
| 171 |
+
@contextlib.contextmanager
|
| 172 |
+
def enclosing_tokens(
|
| 173 |
+
self, open_token: str, close_token: str, *, around: str
|
| 174 |
+
) -> Iterator[None]:
|
| 175 |
+
if self.check(open_token):
|
| 176 |
+
open_position = self.position
|
| 177 |
+
self.read()
|
| 178 |
+
else:
|
| 179 |
+
open_position = None
|
| 180 |
+
|
| 181 |
+
yield
|
| 182 |
+
|
| 183 |
+
if open_position is None:
|
| 184 |
+
return
|
| 185 |
+
|
| 186 |
+
if not self.check(close_token):
|
| 187 |
+
self.raise_syntax_error(
|
| 188 |
+
f"Expected matching {close_token} for {open_token}, after {around}",
|
| 189 |
+
span_start=open_position,
|
| 190 |
+
)
|
| 191 |
+
|
| 192 |
+
self.read()
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/markers.py
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is dual licensed under the terms of the Apache License, Version
|
| 2 |
+
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
| 3 |
+
# for complete details.
|
| 4 |
+
|
| 5 |
+
import operator
|
| 6 |
+
import os
|
| 7 |
+
import platform
|
| 8 |
+
import sys
|
| 9 |
+
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
| 10 |
+
|
| 11 |
+
from ._parser import (
|
| 12 |
+
MarkerAtom,
|
| 13 |
+
MarkerList,
|
| 14 |
+
Op,
|
| 15 |
+
Value,
|
| 16 |
+
Variable,
|
| 17 |
+
parse_marker as _parse_marker,
|
| 18 |
+
)
|
| 19 |
+
from ._tokenizer import ParserSyntaxError
|
| 20 |
+
from .specifiers import InvalidSpecifier, Specifier
|
| 21 |
+
from .utils import canonicalize_name
|
| 22 |
+
|
| 23 |
+
__all__ = [
|
| 24 |
+
"InvalidMarker",
|
| 25 |
+
"UndefinedComparison",
|
| 26 |
+
"UndefinedEnvironmentName",
|
| 27 |
+
"Marker",
|
| 28 |
+
"default_environment",
|
| 29 |
+
]
|
| 30 |
+
|
| 31 |
+
Operator = Callable[[str, str], bool]
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
class InvalidMarker(ValueError):
|
| 35 |
+
"""
|
| 36 |
+
An invalid marker was found, users should refer to PEP 508.
|
| 37 |
+
"""
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
class UndefinedComparison(ValueError):
|
| 41 |
+
"""
|
| 42 |
+
An invalid operation was attempted on a value that doesn't support it.
|
| 43 |
+
"""
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
class UndefinedEnvironmentName(ValueError):
|
| 47 |
+
"""
|
| 48 |
+
A name was attempted to be used that does not exist inside of the
|
| 49 |
+
environment.
|
| 50 |
+
"""
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def _normalize_extra_values(results: Any) -> Any:
|
| 54 |
+
"""
|
| 55 |
+
Normalize extra values.
|
| 56 |
+
"""
|
| 57 |
+
if isinstance(results[0], tuple):
|
| 58 |
+
lhs, op, rhs = results[0]
|
| 59 |
+
if isinstance(lhs, Variable) and lhs.value == "extra":
|
| 60 |
+
normalized_extra = canonicalize_name(rhs.value)
|
| 61 |
+
rhs = Value(normalized_extra)
|
| 62 |
+
elif isinstance(rhs, Variable) and rhs.value == "extra":
|
| 63 |
+
normalized_extra = canonicalize_name(lhs.value)
|
| 64 |
+
lhs = Value(normalized_extra)
|
| 65 |
+
results[0] = lhs, op, rhs
|
| 66 |
+
return results
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
def _format_marker(
|
| 70 |
+
marker: Union[List[str], MarkerAtom, str], first: Optional[bool] = True
|
| 71 |
+
) -> str:
|
| 72 |
+
|
| 73 |
+
assert isinstance(marker, (list, tuple, str))
|
| 74 |
+
|
| 75 |
+
# Sometimes we have a structure like [[...]] which is a single item list
|
| 76 |
+
# where the single item is itself it's own list. In that case we want skip
|
| 77 |
+
# the rest of this function so that we don't get extraneous () on the
|
| 78 |
+
# outside.
|
| 79 |
+
if (
|
| 80 |
+
isinstance(marker, list)
|
| 81 |
+
and len(marker) == 1
|
| 82 |
+
and isinstance(marker[0], (list, tuple))
|
| 83 |
+
):
|
| 84 |
+
return _format_marker(marker[0])
|
| 85 |
+
|
| 86 |
+
if isinstance(marker, list):
|
| 87 |
+
inner = (_format_marker(m, first=False) for m in marker)
|
| 88 |
+
if first:
|
| 89 |
+
return " ".join(inner)
|
| 90 |
+
else:
|
| 91 |
+
return "(" + " ".join(inner) + ")"
|
| 92 |
+
elif isinstance(marker, tuple):
|
| 93 |
+
return " ".join([m.serialize() for m in marker])
|
| 94 |
+
else:
|
| 95 |
+
return marker
|
| 96 |
+
|
| 97 |
+
|
| 98 |
+
_operators: Dict[str, Operator] = {
|
| 99 |
+
"in": lambda lhs, rhs: lhs in rhs,
|
| 100 |
+
"not in": lambda lhs, rhs: lhs not in rhs,
|
| 101 |
+
"<": operator.lt,
|
| 102 |
+
"<=": operator.le,
|
| 103 |
+
"==": operator.eq,
|
| 104 |
+
"!=": operator.ne,
|
| 105 |
+
">=": operator.ge,
|
| 106 |
+
">": operator.gt,
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
|
| 110 |
+
def _eval_op(lhs: str, op: Op, rhs: str) -> bool:
|
| 111 |
+
try:
|
| 112 |
+
spec = Specifier("".join([op.serialize(), rhs]))
|
| 113 |
+
except InvalidSpecifier:
|
| 114 |
+
pass
|
| 115 |
+
else:
|
| 116 |
+
return spec.contains(lhs, prereleases=True)
|
| 117 |
+
|
| 118 |
+
oper: Optional[Operator] = _operators.get(op.serialize())
|
| 119 |
+
if oper is None:
|
| 120 |
+
raise UndefinedComparison(f"Undefined {op!r} on {lhs!r} and {rhs!r}.")
|
| 121 |
+
|
| 122 |
+
return oper(lhs, rhs)
|
| 123 |
+
|
| 124 |
+
|
| 125 |
+
def _normalize(*values: str, key: str) -> Tuple[str, ...]:
|
| 126 |
+
# PEP 685 – Comparison of extra names for optional distribution dependencies
|
| 127 |
+
# https://peps.python.org/pep-0685/
|
| 128 |
+
# > When comparing extra names, tools MUST normalize the names being
|
| 129 |
+
# > compared using the semantics outlined in PEP 503 for names
|
| 130 |
+
if key == "extra":
|
| 131 |
+
return tuple(canonicalize_name(v) for v in values)
|
| 132 |
+
|
| 133 |
+
# other environment markers don't have such standards
|
| 134 |
+
return values
|
| 135 |
+
|
| 136 |
+
|
| 137 |
+
def _evaluate_markers(markers: MarkerList, environment: Dict[str, str]) -> bool:
|
| 138 |
+
groups: List[List[bool]] = [[]]
|
| 139 |
+
|
| 140 |
+
for marker in markers:
|
| 141 |
+
assert isinstance(marker, (list, tuple, str))
|
| 142 |
+
|
| 143 |
+
if isinstance(marker, list):
|
| 144 |
+
groups[-1].append(_evaluate_markers(marker, environment))
|
| 145 |
+
elif isinstance(marker, tuple):
|
| 146 |
+
lhs, op, rhs = marker
|
| 147 |
+
|
| 148 |
+
if isinstance(lhs, Variable):
|
| 149 |
+
environment_key = lhs.value
|
| 150 |
+
lhs_value = environment[environment_key]
|
| 151 |
+
rhs_value = rhs.value
|
| 152 |
+
else:
|
| 153 |
+
lhs_value = lhs.value
|
| 154 |
+
environment_key = rhs.value
|
| 155 |
+
rhs_value = environment[environment_key]
|
| 156 |
+
|
| 157 |
+
lhs_value, rhs_value = _normalize(lhs_value, rhs_value, key=environment_key)
|
| 158 |
+
groups[-1].append(_eval_op(lhs_value, op, rhs_value))
|
| 159 |
+
else:
|
| 160 |
+
assert marker in ["and", "or"]
|
| 161 |
+
if marker == "or":
|
| 162 |
+
groups.append([])
|
| 163 |
+
|
| 164 |
+
return any(all(item) for item in groups)
|
| 165 |
+
|
| 166 |
+
|
| 167 |
+
def format_full_version(info: "sys._version_info") -> str:
|
| 168 |
+
version = "{0.major}.{0.minor}.{0.micro}".format(info)
|
| 169 |
+
kind = info.releaselevel
|
| 170 |
+
if kind != "final":
|
| 171 |
+
version += kind[0] + str(info.serial)
|
| 172 |
+
return version
|
| 173 |
+
|
| 174 |
+
|
| 175 |
+
def default_environment() -> Dict[str, str]:
|
| 176 |
+
iver = format_full_version(sys.implementation.version)
|
| 177 |
+
implementation_name = sys.implementation.name
|
| 178 |
+
return {
|
| 179 |
+
"implementation_name": implementation_name,
|
| 180 |
+
"implementation_version": iver,
|
| 181 |
+
"os_name": os.name,
|
| 182 |
+
"platform_machine": platform.machine(),
|
| 183 |
+
"platform_release": platform.release(),
|
| 184 |
+
"platform_system": platform.system(),
|
| 185 |
+
"platform_version": platform.version(),
|
| 186 |
+
"python_full_version": platform.python_version(),
|
| 187 |
+
"platform_python_implementation": platform.python_implementation(),
|
| 188 |
+
"python_version": ".".join(platform.python_version_tuple()[:2]),
|
| 189 |
+
"sys_platform": sys.platform,
|
| 190 |
+
}
|
| 191 |
+
|
| 192 |
+
|
| 193 |
+
class Marker:
|
| 194 |
+
def __init__(self, marker: str) -> None:
|
| 195 |
+
# Note: We create a Marker object without calling this constructor in
|
| 196 |
+
# packaging.requirements.Requirement. If any additional logic is
|
| 197 |
+
# added here, make sure to mirror/adapt Requirement.
|
| 198 |
+
try:
|
| 199 |
+
self._markers = _normalize_extra_values(_parse_marker(marker))
|
| 200 |
+
# The attribute `_markers` can be described in terms of a recursive type:
|
| 201 |
+
# MarkerList = List[Union[Tuple[Node, ...], str, MarkerList]]
|
| 202 |
+
#
|
| 203 |
+
# For example, the following expression:
|
| 204 |
+
# python_version > "3.6" or (python_version == "3.6" and os_name == "unix")
|
| 205 |
+
#
|
| 206 |
+
# is parsed into:
|
| 207 |
+
# [
|
| 208 |
+
# (<Variable('python_version')>, <Op('>')>, <Value('3.6')>),
|
| 209 |
+
# 'and',
|
| 210 |
+
# [
|
| 211 |
+
# (<Variable('python_version')>, <Op('==')>, <Value('3.6')>),
|
| 212 |
+
# 'or',
|
| 213 |
+
# (<Variable('os_name')>, <Op('==')>, <Value('unix')>)
|
| 214 |
+
# ]
|
| 215 |
+
# ]
|
| 216 |
+
except ParserSyntaxError as e:
|
| 217 |
+
raise InvalidMarker(str(e)) from e
|
| 218 |
+
|
| 219 |
+
def __str__(self) -> str:
|
| 220 |
+
return _format_marker(self._markers)
|
| 221 |
+
|
| 222 |
+
def __repr__(self) -> str:
|
| 223 |
+
return f"<Marker('{self}')>"
|
| 224 |
+
|
| 225 |
+
def __hash__(self) -> int:
|
| 226 |
+
return hash((self.__class__.__name__, str(self)))
|
| 227 |
+
|
| 228 |
+
def __eq__(self, other: Any) -> bool:
|
| 229 |
+
if not isinstance(other, Marker):
|
| 230 |
+
return NotImplemented
|
| 231 |
+
|
| 232 |
+
return str(self) == str(other)
|
| 233 |
+
|
| 234 |
+
def evaluate(self, environment: Optional[Dict[str, str]] = None) -> bool:
|
| 235 |
+
"""Evaluate a marker.
|
| 236 |
+
|
| 237 |
+
Return the boolean from evaluating the given marker against the
|
| 238 |
+
environment. environment is an optional argument to override all or
|
| 239 |
+
part of the determined environment.
|
| 240 |
+
|
| 241 |
+
The environment is determined from the current Python process.
|
| 242 |
+
"""
|
| 243 |
+
current_environment = default_environment()
|
| 244 |
+
current_environment["extra"] = ""
|
| 245 |
+
if environment is not None:
|
| 246 |
+
current_environment.update(environment)
|
| 247 |
+
# The API used to allow setting extra to None. We need to handle this
|
| 248 |
+
# case for backwards compatibility.
|
| 249 |
+
if current_environment["extra"] is None:
|
| 250 |
+
current_environment["extra"] = ""
|
| 251 |
+
|
| 252 |
+
return _evaluate_markers(self._markers, current_environment)
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/metadata.py
ADDED
|
@@ -0,0 +1,822 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import email.feedparser
|
| 2 |
+
import email.header
|
| 3 |
+
import email.message
|
| 4 |
+
import email.parser
|
| 5 |
+
import email.policy
|
| 6 |
+
import sys
|
| 7 |
+
import typing
|
| 8 |
+
from typing import (
|
| 9 |
+
Any,
|
| 10 |
+
Callable,
|
| 11 |
+
Dict,
|
| 12 |
+
Generic,
|
| 13 |
+
List,
|
| 14 |
+
Optional,
|
| 15 |
+
Tuple,
|
| 16 |
+
Type,
|
| 17 |
+
Union,
|
| 18 |
+
cast,
|
| 19 |
+
)
|
| 20 |
+
|
| 21 |
+
from . import requirements, specifiers, utils, version as version_module
|
| 22 |
+
|
| 23 |
+
T = typing.TypeVar("T")
|
| 24 |
+
if sys.version_info[:2] >= (3, 8): # pragma: no cover
|
| 25 |
+
from typing import Literal, TypedDict
|
| 26 |
+
else: # pragma: no cover
|
| 27 |
+
if typing.TYPE_CHECKING:
|
| 28 |
+
from typing_extensions import Literal, TypedDict
|
| 29 |
+
else:
|
| 30 |
+
try:
|
| 31 |
+
from typing_extensions import Literal, TypedDict
|
| 32 |
+
except ImportError:
|
| 33 |
+
|
| 34 |
+
class Literal:
|
| 35 |
+
def __init_subclass__(*_args, **_kwargs):
|
| 36 |
+
pass
|
| 37 |
+
|
| 38 |
+
class TypedDict:
|
| 39 |
+
def __init_subclass__(*_args, **_kwargs):
|
| 40 |
+
pass
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
try:
|
| 44 |
+
ExceptionGroup = __builtins__.ExceptionGroup # type: ignore[attr-defined]
|
| 45 |
+
except AttributeError:
|
| 46 |
+
|
| 47 |
+
class ExceptionGroup(Exception): # type: ignore[no-redef] # noqa: N818
|
| 48 |
+
"""A minimal implementation of :external:exc:`ExceptionGroup` from Python 3.11.
|
| 49 |
+
|
| 50 |
+
If :external:exc:`ExceptionGroup` is already defined by Python itself,
|
| 51 |
+
that version is used instead.
|
| 52 |
+
"""
|
| 53 |
+
|
| 54 |
+
message: str
|
| 55 |
+
exceptions: List[Exception]
|
| 56 |
+
|
| 57 |
+
def __init__(self, message: str, exceptions: List[Exception]) -> None:
|
| 58 |
+
self.message = message
|
| 59 |
+
self.exceptions = exceptions
|
| 60 |
+
|
| 61 |
+
def __repr__(self) -> str:
|
| 62 |
+
return f"{self.__class__.__name__}({self.message!r}, {self.exceptions!r})"
|
| 63 |
+
|
| 64 |
+
|
| 65 |
+
class InvalidMetadata(ValueError):
|
| 66 |
+
"""A metadata field contains invalid data."""
|
| 67 |
+
|
| 68 |
+
field: str
|
| 69 |
+
"""The name of the field that contains invalid data."""
|
| 70 |
+
|
| 71 |
+
def __init__(self, field: str, message: str) -> None:
|
| 72 |
+
self.field = field
|
| 73 |
+
super().__init__(message)
|
| 74 |
+
|
| 75 |
+
|
| 76 |
+
# The RawMetadata class attempts to make as few assumptions about the underlying
|
| 77 |
+
# serialization formats as possible. The idea is that as long as a serialization
|
| 78 |
+
# formats offer some very basic primitives in *some* way then we can support
|
| 79 |
+
# serializing to and from that format.
|
| 80 |
+
class RawMetadata(TypedDict, total=False):
|
| 81 |
+
"""A dictionary of raw core metadata.
|
| 82 |
+
|
| 83 |
+
Each field in core metadata maps to a key of this dictionary (when data is
|
| 84 |
+
provided). The key is lower-case and underscores are used instead of dashes
|
| 85 |
+
compared to the equivalent core metadata field. Any core metadata field that
|
| 86 |
+
can be specified multiple times or can hold multiple values in a single
|
| 87 |
+
field have a key with a plural name. See :class:`Metadata` whose attributes
|
| 88 |
+
match the keys of this dictionary.
|
| 89 |
+
|
| 90 |
+
Core metadata fields that can be specified multiple times are stored as a
|
| 91 |
+
list or dict depending on which is appropriate for the field. Any fields
|
| 92 |
+
which hold multiple values in a single field are stored as a list.
|
| 93 |
+
|
| 94 |
+
"""
|
| 95 |
+
|
| 96 |
+
# Metadata 1.0 - PEP 241
|
| 97 |
+
metadata_version: str
|
| 98 |
+
name: str
|
| 99 |
+
version: str
|
| 100 |
+
platforms: List[str]
|
| 101 |
+
summary: str
|
| 102 |
+
description: str
|
| 103 |
+
keywords: List[str]
|
| 104 |
+
home_page: str
|
| 105 |
+
author: str
|
| 106 |
+
author_email: str
|
| 107 |
+
license: str
|
| 108 |
+
|
| 109 |
+
# Metadata 1.1 - PEP 314
|
| 110 |
+
supported_platforms: List[str]
|
| 111 |
+
download_url: str
|
| 112 |
+
classifiers: List[str]
|
| 113 |
+
requires: List[str]
|
| 114 |
+
provides: List[str]
|
| 115 |
+
obsoletes: List[str]
|
| 116 |
+
|
| 117 |
+
# Metadata 1.2 - PEP 345
|
| 118 |
+
maintainer: str
|
| 119 |
+
maintainer_email: str
|
| 120 |
+
requires_dist: List[str]
|
| 121 |
+
provides_dist: List[str]
|
| 122 |
+
obsoletes_dist: List[str]
|
| 123 |
+
requires_python: str
|
| 124 |
+
requires_external: List[str]
|
| 125 |
+
project_urls: Dict[str, str]
|
| 126 |
+
|
| 127 |
+
# Metadata 2.0
|
| 128 |
+
# PEP 426 attempted to completely revamp the metadata format
|
| 129 |
+
# but got stuck without ever being able to build consensus on
|
| 130 |
+
# it and ultimately ended up withdrawn.
|
| 131 |
+
#
|
| 132 |
+
# However, a number of tools had started emitting METADATA with
|
| 133 |
+
# `2.0` Metadata-Version, so for historical reasons, this version
|
| 134 |
+
# was skipped.
|
| 135 |
+
|
| 136 |
+
# Metadata 2.1 - PEP 566
|
| 137 |
+
description_content_type: str
|
| 138 |
+
provides_extra: List[str]
|
| 139 |
+
|
| 140 |
+
# Metadata 2.2 - PEP 643
|
| 141 |
+
dynamic: List[str]
|
| 142 |
+
|
| 143 |
+
# Metadata 2.3 - PEP 685
|
| 144 |
+
# No new fields were added in PEP 685, just some edge case were
|
| 145 |
+
# tightened up to provide better interoptability.
|
| 146 |
+
|
| 147 |
+
|
| 148 |
+
_STRING_FIELDS = {
|
| 149 |
+
"author",
|
| 150 |
+
"author_email",
|
| 151 |
+
"description",
|
| 152 |
+
"description_content_type",
|
| 153 |
+
"download_url",
|
| 154 |
+
"home_page",
|
| 155 |
+
"license",
|
| 156 |
+
"maintainer",
|
| 157 |
+
"maintainer_email",
|
| 158 |
+
"metadata_version",
|
| 159 |
+
"name",
|
| 160 |
+
"requires_python",
|
| 161 |
+
"summary",
|
| 162 |
+
"version",
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
+
_LIST_FIELDS = {
|
| 166 |
+
"classifiers",
|
| 167 |
+
"dynamic",
|
| 168 |
+
"obsoletes",
|
| 169 |
+
"obsoletes_dist",
|
| 170 |
+
"platforms",
|
| 171 |
+
"provides",
|
| 172 |
+
"provides_dist",
|
| 173 |
+
"provides_extra",
|
| 174 |
+
"requires",
|
| 175 |
+
"requires_dist",
|
| 176 |
+
"requires_external",
|
| 177 |
+
"supported_platforms",
|
| 178 |
+
}
|
| 179 |
+
|
| 180 |
+
_DICT_FIELDS = {
|
| 181 |
+
"project_urls",
|
| 182 |
+
}
|
| 183 |
+
|
| 184 |
+
|
| 185 |
+
def _parse_keywords(data: str) -> List[str]:
|
| 186 |
+
"""Split a string of comma-separate keyboards into a list of keywords."""
|
| 187 |
+
return [k.strip() for k in data.split(",")]
|
| 188 |
+
|
| 189 |
+
|
| 190 |
+
def _parse_project_urls(data: List[str]) -> Dict[str, str]:
|
| 191 |
+
"""Parse a list of label/URL string pairings separated by a comma."""
|
| 192 |
+
urls = {}
|
| 193 |
+
for pair in data:
|
| 194 |
+
# Our logic is slightly tricky here as we want to try and do
|
| 195 |
+
# *something* reasonable with malformed data.
|
| 196 |
+
#
|
| 197 |
+
# The main thing that we have to worry about, is data that does
|
| 198 |
+
# not have a ',' at all to split the label from the Value. There
|
| 199 |
+
# isn't a singular right answer here, and we will fail validation
|
| 200 |
+
# later on (if the caller is validating) so it doesn't *really*
|
| 201 |
+
# matter, but since the missing value has to be an empty str
|
| 202 |
+
# and our return value is dict[str, str], if we let the key
|
| 203 |
+
# be the missing value, then they'd have multiple '' values that
|
| 204 |
+
# overwrite each other in a accumulating dict.
|
| 205 |
+
#
|
| 206 |
+
# The other potentional issue is that it's possible to have the
|
| 207 |
+
# same label multiple times in the metadata, with no solid "right"
|
| 208 |
+
# answer with what to do in that case. As such, we'll do the only
|
| 209 |
+
# thing we can, which is treat the field as unparseable and add it
|
| 210 |
+
# to our list of unparsed fields.
|
| 211 |
+
parts = [p.strip() for p in pair.split(",", 1)]
|
| 212 |
+
parts.extend([""] * (max(0, 2 - len(parts)))) # Ensure 2 items
|
| 213 |
+
|
| 214 |
+
# TODO: The spec doesn't say anything about if the keys should be
|
| 215 |
+
# considered case sensitive or not... logically they should
|
| 216 |
+
# be case-preserving and case-insensitive, but doing that
|
| 217 |
+
# would open up more cases where we might have duplicate
|
| 218 |
+
# entries.
|
| 219 |
+
label, url = parts
|
| 220 |
+
if label in urls:
|
| 221 |
+
# The label already exists in our set of urls, so this field
|
| 222 |
+
# is unparseable, and we can just add the whole thing to our
|
| 223 |
+
# unparseable data and stop processing it.
|
| 224 |
+
raise KeyError("duplicate labels in project urls")
|
| 225 |
+
urls[label] = url
|
| 226 |
+
|
| 227 |
+
return urls
|
| 228 |
+
|
| 229 |
+
|
| 230 |
+
def _get_payload(msg: email.message.Message, source: Union[bytes, str]) -> str:
|
| 231 |
+
"""Get the body of the message."""
|
| 232 |
+
# If our source is a str, then our caller has managed encodings for us,
|
| 233 |
+
# and we don't need to deal with it.
|
| 234 |
+
if isinstance(source, str):
|
| 235 |
+
payload: str = msg.get_payload()
|
| 236 |
+
return payload
|
| 237 |
+
# If our source is a bytes, then we're managing the encoding and we need
|
| 238 |
+
# to deal with it.
|
| 239 |
+
else:
|
| 240 |
+
bpayload: bytes = msg.get_payload(decode=True)
|
| 241 |
+
try:
|
| 242 |
+
return bpayload.decode("utf8", "strict")
|
| 243 |
+
except UnicodeDecodeError:
|
| 244 |
+
raise ValueError("payload in an invalid encoding")
|
| 245 |
+
|
| 246 |
+
|
| 247 |
+
# The various parse_FORMAT functions here are intended to be as lenient as
|
| 248 |
+
# possible in their parsing, while still returning a correctly typed
|
| 249 |
+
# RawMetadata.
|
| 250 |
+
#
|
| 251 |
+
# To aid in this, we also generally want to do as little touching of the
|
| 252 |
+
# data as possible, except where there are possibly some historic holdovers
|
| 253 |
+
# that make valid data awkward to work with.
|
| 254 |
+
#
|
| 255 |
+
# While this is a lower level, intermediate format than our ``Metadata``
|
| 256 |
+
# class, some light touch ups can make a massive difference in usability.
|
| 257 |
+
|
| 258 |
+
# Map METADATA fields to RawMetadata.
|
| 259 |
+
_EMAIL_TO_RAW_MAPPING = {
|
| 260 |
+
"author": "author",
|
| 261 |
+
"author-email": "author_email",
|
| 262 |
+
"classifier": "classifiers",
|
| 263 |
+
"description": "description",
|
| 264 |
+
"description-content-type": "description_content_type",
|
| 265 |
+
"download-url": "download_url",
|
| 266 |
+
"dynamic": "dynamic",
|
| 267 |
+
"home-page": "home_page",
|
| 268 |
+
"keywords": "keywords",
|
| 269 |
+
"license": "license",
|
| 270 |
+
"maintainer": "maintainer",
|
| 271 |
+
"maintainer-email": "maintainer_email",
|
| 272 |
+
"metadata-version": "metadata_version",
|
| 273 |
+
"name": "name",
|
| 274 |
+
"obsoletes": "obsoletes",
|
| 275 |
+
"obsoletes-dist": "obsoletes_dist",
|
| 276 |
+
"platform": "platforms",
|
| 277 |
+
"project-url": "project_urls",
|
| 278 |
+
"provides": "provides",
|
| 279 |
+
"provides-dist": "provides_dist",
|
| 280 |
+
"provides-extra": "provides_extra",
|
| 281 |
+
"requires": "requires",
|
| 282 |
+
"requires-dist": "requires_dist",
|
| 283 |
+
"requires-external": "requires_external",
|
| 284 |
+
"requires-python": "requires_python",
|
| 285 |
+
"summary": "summary",
|
| 286 |
+
"supported-platform": "supported_platforms",
|
| 287 |
+
"version": "version",
|
| 288 |
+
}
|
| 289 |
+
_RAW_TO_EMAIL_MAPPING = {raw: email for email, raw in _EMAIL_TO_RAW_MAPPING.items()}
|
| 290 |
+
|
| 291 |
+
|
| 292 |
+
def parse_email(data: Union[bytes, str]) -> Tuple[RawMetadata, Dict[str, List[str]]]:
|
| 293 |
+
"""Parse a distribution's metadata stored as email headers (e.g. from ``METADATA``).
|
| 294 |
+
|
| 295 |
+
This function returns a two-item tuple of dicts. The first dict is of
|
| 296 |
+
recognized fields from the core metadata specification. Fields that can be
|
| 297 |
+
parsed and translated into Python's built-in types are converted
|
| 298 |
+
appropriately. All other fields are left as-is. Fields that are allowed to
|
| 299 |
+
appear multiple times are stored as lists.
|
| 300 |
+
|
| 301 |
+
The second dict contains all other fields from the metadata. This includes
|
| 302 |
+
any unrecognized fields. It also includes any fields which are expected to
|
| 303 |
+
be parsed into a built-in type but were not formatted appropriately. Finally,
|
| 304 |
+
any fields that are expected to appear only once but are repeated are
|
| 305 |
+
included in this dict.
|
| 306 |
+
|
| 307 |
+
"""
|
| 308 |
+
raw: Dict[str, Union[str, List[str], Dict[str, str]]] = {}
|
| 309 |
+
unparsed: Dict[str, List[str]] = {}
|
| 310 |
+
|
| 311 |
+
if isinstance(data, str):
|
| 312 |
+
parsed = email.parser.Parser(policy=email.policy.compat32).parsestr(data)
|
| 313 |
+
else:
|
| 314 |
+
parsed = email.parser.BytesParser(policy=email.policy.compat32).parsebytes(data)
|
| 315 |
+
|
| 316 |
+
# We have to wrap parsed.keys() in a set, because in the case of multiple
|
| 317 |
+
# values for a key (a list), the key will appear multiple times in the
|
| 318 |
+
# list of keys, but we're avoiding that by using get_all().
|
| 319 |
+
for name in frozenset(parsed.keys()):
|
| 320 |
+
# Header names in RFC are case insensitive, so we'll normalize to all
|
| 321 |
+
# lower case to make comparisons easier.
|
| 322 |
+
name = name.lower()
|
| 323 |
+
|
| 324 |
+
# We use get_all() here, even for fields that aren't multiple use,
|
| 325 |
+
# because otherwise someone could have e.g. two Name fields, and we
|
| 326 |
+
# would just silently ignore it rather than doing something about it.
|
| 327 |
+
headers = parsed.get_all(name) or []
|
| 328 |
+
|
| 329 |
+
# The way the email module works when parsing bytes is that it
|
| 330 |
+
# unconditionally decodes the bytes as ascii using the surrogateescape
|
| 331 |
+
# handler. When you pull that data back out (such as with get_all() ),
|
| 332 |
+
# it looks to see if the str has any surrogate escapes, and if it does
|
| 333 |
+
# it wraps it in a Header object instead of returning the string.
|
| 334 |
+
#
|
| 335 |
+
# As such, we'll look for those Header objects, and fix up the encoding.
|
| 336 |
+
value = []
|
| 337 |
+
# Flag if we have run into any issues processing the headers, thus
|
| 338 |
+
# signalling that the data belongs in 'unparsed'.
|
| 339 |
+
valid_encoding = True
|
| 340 |
+
for h in headers:
|
| 341 |
+
# It's unclear if this can return more types than just a Header or
|
| 342 |
+
# a str, so we'll just assert here to make sure.
|
| 343 |
+
assert isinstance(h, (email.header.Header, str))
|
| 344 |
+
|
| 345 |
+
# If it's a header object, we need to do our little dance to get
|
| 346 |
+
# the real data out of it. In cases where there is invalid data
|
| 347 |
+
# we're going to end up with mojibake, but there's no obvious, good
|
| 348 |
+
# way around that without reimplementing parts of the Header object
|
| 349 |
+
# ourselves.
|
| 350 |
+
#
|
| 351 |
+
# That should be fine since, if mojibacked happens, this key is
|
| 352 |
+
# going into the unparsed dict anyways.
|
| 353 |
+
if isinstance(h, email.header.Header):
|
| 354 |
+
# The Header object stores it's data as chunks, and each chunk
|
| 355 |
+
# can be independently encoded, so we'll need to check each
|
| 356 |
+
# of them.
|
| 357 |
+
chunks: List[Tuple[bytes, Optional[str]]] = []
|
| 358 |
+
for bin, encoding in email.header.decode_header(h):
|
| 359 |
+
try:
|
| 360 |
+
bin.decode("utf8", "strict")
|
| 361 |
+
except UnicodeDecodeError:
|
| 362 |
+
# Enable mojibake.
|
| 363 |
+
encoding = "latin1"
|
| 364 |
+
valid_encoding = False
|
| 365 |
+
else:
|
| 366 |
+
encoding = "utf8"
|
| 367 |
+
chunks.append((bin, encoding))
|
| 368 |
+
|
| 369 |
+
# Turn our chunks back into a Header object, then let that
|
| 370 |
+
# Header object do the right thing to turn them into a
|
| 371 |
+
# string for us.
|
| 372 |
+
value.append(str(email.header.make_header(chunks)))
|
| 373 |
+
# This is already a string, so just add it.
|
| 374 |
+
else:
|
| 375 |
+
value.append(h)
|
| 376 |
+
|
| 377 |
+
# We've processed all of our values to get them into a list of str,
|
| 378 |
+
# but we may have mojibake data, in which case this is an unparsed
|
| 379 |
+
# field.
|
| 380 |
+
if not valid_encoding:
|
| 381 |
+
unparsed[name] = value
|
| 382 |
+
continue
|
| 383 |
+
|
| 384 |
+
raw_name = _EMAIL_TO_RAW_MAPPING.get(name)
|
| 385 |
+
if raw_name is None:
|
| 386 |
+
# This is a bit of a weird situation, we've encountered a key that
|
| 387 |
+
# we don't know what it means, so we don't know whether it's meant
|
| 388 |
+
# to be a list or not.
|
| 389 |
+
#
|
| 390 |
+
# Since we can't really tell one way or another, we'll just leave it
|
| 391 |
+
# as a list, even though it may be a single item list, because that's
|
| 392 |
+
# what makes the most sense for email headers.
|
| 393 |
+
unparsed[name] = value
|
| 394 |
+
continue
|
| 395 |
+
|
| 396 |
+
# If this is one of our string fields, then we'll check to see if our
|
| 397 |
+
# value is a list of a single item. If it is then we'll assume that
|
| 398 |
+
# it was emitted as a single string, and unwrap the str from inside
|
| 399 |
+
# the list.
|
| 400 |
+
#
|
| 401 |
+
# If it's any other kind of data, then we haven't the faintest clue
|
| 402 |
+
# what we should parse it as, and we have to just add it to our list
|
| 403 |
+
# of unparsed stuff.
|
| 404 |
+
if raw_name in _STRING_FIELDS and len(value) == 1:
|
| 405 |
+
raw[raw_name] = value[0]
|
| 406 |
+
# If this is one of our list of string fields, then we can just assign
|
| 407 |
+
# the value, since email *only* has strings, and our get_all() call
|
| 408 |
+
# above ensures that this is a list.
|
| 409 |
+
elif raw_name in _LIST_FIELDS:
|
| 410 |
+
raw[raw_name] = value
|
| 411 |
+
# Special Case: Keywords
|
| 412 |
+
# The keywords field is implemented in the metadata spec as a str,
|
| 413 |
+
# but it conceptually is a list of strings, and is serialized using
|
| 414 |
+
# ", ".join(keywords), so we'll do some light data massaging to turn
|
| 415 |
+
# this into what it logically is.
|
| 416 |
+
elif raw_name == "keywords" and len(value) == 1:
|
| 417 |
+
raw[raw_name] = _parse_keywords(value[0])
|
| 418 |
+
# Special Case: Project-URL
|
| 419 |
+
# The project urls is implemented in the metadata spec as a list of
|
| 420 |
+
# specially-formatted strings that represent a key and a value, which
|
| 421 |
+
# is fundamentally a mapping, however the email format doesn't support
|
| 422 |
+
# mappings in a sane way, so it was crammed into a list of strings
|
| 423 |
+
# instead.
|
| 424 |
+
#
|
| 425 |
+
# We will do a little light data massaging to turn this into a map as
|
| 426 |
+
# it logically should be.
|
| 427 |
+
elif raw_name == "project_urls":
|
| 428 |
+
try:
|
| 429 |
+
raw[raw_name] = _parse_project_urls(value)
|
| 430 |
+
except KeyError:
|
| 431 |
+
unparsed[name] = value
|
| 432 |
+
# Nothing that we've done has managed to parse this, so it'll just
|
| 433 |
+
# throw it in our unparseable data and move on.
|
| 434 |
+
else:
|
| 435 |
+
unparsed[name] = value
|
| 436 |
+
|
| 437 |
+
# We need to support getting the Description from the message payload in
|
| 438 |
+
# addition to getting it from the the headers. This does mean, though, there
|
| 439 |
+
# is the possibility of it being set both ways, in which case we put both
|
| 440 |
+
# in 'unparsed' since we don't know which is right.
|
| 441 |
+
try:
|
| 442 |
+
payload = _get_payload(parsed, data)
|
| 443 |
+
except ValueError:
|
| 444 |
+
unparsed.setdefault("description", []).append(
|
| 445 |
+
parsed.get_payload(decode=isinstance(data, bytes))
|
| 446 |
+
)
|
| 447 |
+
else:
|
| 448 |
+
if payload:
|
| 449 |
+
# Check to see if we've already got a description, if so then both
|
| 450 |
+
# it, and this body move to unparseable.
|
| 451 |
+
if "description" in raw:
|
| 452 |
+
description_header = cast(str, raw.pop("description"))
|
| 453 |
+
unparsed.setdefault("description", []).extend(
|
| 454 |
+
[description_header, payload]
|
| 455 |
+
)
|
| 456 |
+
elif "description" in unparsed:
|
| 457 |
+
unparsed["description"].append(payload)
|
| 458 |
+
else:
|
| 459 |
+
raw["description"] = payload
|
| 460 |
+
|
| 461 |
+
# We need to cast our `raw` to a metadata, because a TypedDict only support
|
| 462 |
+
# literal key names, but we're computing our key names on purpose, but the
|
| 463 |
+
# way this function is implemented, our `TypedDict` can only have valid key
|
| 464 |
+
# names.
|
| 465 |
+
return cast(RawMetadata, raw), unparsed
|
| 466 |
+
|
| 467 |
+
|
| 468 |
+
_NOT_FOUND = object()
|
| 469 |
+
|
| 470 |
+
|
| 471 |
+
# Keep the two values in sync.
|
| 472 |
+
_VALID_METADATA_VERSIONS = ["1.0", "1.1", "1.2", "2.1", "2.2", "2.3"]
|
| 473 |
+
_MetadataVersion = Literal["1.0", "1.1", "1.2", "2.1", "2.2", "2.3"]
|
| 474 |
+
|
| 475 |
+
_REQUIRED_ATTRS = frozenset(["metadata_version", "name", "version"])
|
| 476 |
+
|
| 477 |
+
|
| 478 |
+
class _Validator(Generic[T]):
|
| 479 |
+
"""Validate a metadata field.
|
| 480 |
+
|
| 481 |
+
All _process_*() methods correspond to a core metadata field. The method is
|
| 482 |
+
called with the field's raw value. If the raw value is valid it is returned
|
| 483 |
+
in its "enriched" form (e.g. ``version.Version`` for the ``Version`` field).
|
| 484 |
+
If the raw value is invalid, :exc:`InvalidMetadata` is raised (with a cause
|
| 485 |
+
as appropriate).
|
| 486 |
+
"""
|
| 487 |
+
|
| 488 |
+
name: str
|
| 489 |
+
raw_name: str
|
| 490 |
+
added: _MetadataVersion
|
| 491 |
+
|
| 492 |
+
def __init__(
|
| 493 |
+
self,
|
| 494 |
+
*,
|
| 495 |
+
added: _MetadataVersion = "1.0",
|
| 496 |
+
) -> None:
|
| 497 |
+
self.added = added
|
| 498 |
+
|
| 499 |
+
def __set_name__(self, _owner: "Metadata", name: str) -> None:
|
| 500 |
+
self.name = name
|
| 501 |
+
self.raw_name = _RAW_TO_EMAIL_MAPPING[name]
|
| 502 |
+
|
| 503 |
+
def __get__(self, instance: "Metadata", _owner: Type["Metadata"]) -> T:
|
| 504 |
+
# With Python 3.8, the caching can be replaced with functools.cached_property().
|
| 505 |
+
# No need to check the cache as attribute lookup will resolve into the
|
| 506 |
+
# instance's __dict__ before __get__ is called.
|
| 507 |
+
cache = instance.__dict__
|
| 508 |
+
try:
|
| 509 |
+
value = instance._raw[self.name] # type: ignore[literal-required]
|
| 510 |
+
except KeyError:
|
| 511 |
+
if self.name in _STRING_FIELDS:
|
| 512 |
+
value = ""
|
| 513 |
+
elif self.name in _LIST_FIELDS:
|
| 514 |
+
value = []
|
| 515 |
+
elif self.name in _DICT_FIELDS:
|
| 516 |
+
value = {}
|
| 517 |
+
else: # pragma: no cover
|
| 518 |
+
assert False
|
| 519 |
+
|
| 520 |
+
try:
|
| 521 |
+
converter: Callable[[Any], T] = getattr(self, f"_process_{self.name}")
|
| 522 |
+
except AttributeError:
|
| 523 |
+
pass
|
| 524 |
+
else:
|
| 525 |
+
value = converter(value)
|
| 526 |
+
|
| 527 |
+
cache[self.name] = value
|
| 528 |
+
try:
|
| 529 |
+
del instance._raw[self.name] # type: ignore[misc]
|
| 530 |
+
except KeyError:
|
| 531 |
+
pass
|
| 532 |
+
|
| 533 |
+
return cast(T, value)
|
| 534 |
+
|
| 535 |
+
def _invalid_metadata(
|
| 536 |
+
self, msg: str, cause: Optional[Exception] = None
|
| 537 |
+
) -> InvalidMetadata:
|
| 538 |
+
exc = InvalidMetadata(
|
| 539 |
+
self.raw_name, msg.format_map({"field": repr(self.raw_name)})
|
| 540 |
+
)
|
| 541 |
+
exc.__cause__ = cause
|
| 542 |
+
return exc
|
| 543 |
+
|
| 544 |
+
def _process_metadata_version(self, value: str) -> _MetadataVersion:
|
| 545 |
+
# Implicitly makes Metadata-Version required.
|
| 546 |
+
if value not in _VALID_METADATA_VERSIONS:
|
| 547 |
+
raise self._invalid_metadata(f"{value!r} is not a valid metadata version")
|
| 548 |
+
return cast(_MetadataVersion, value)
|
| 549 |
+
|
| 550 |
+
def _process_name(self, value: str) -> str:
|
| 551 |
+
if not value:
|
| 552 |
+
raise self._invalid_metadata("{field} is a required field")
|
| 553 |
+
# Validate the name as a side-effect.
|
| 554 |
+
try:
|
| 555 |
+
utils.canonicalize_name(value, validate=True)
|
| 556 |
+
except utils.InvalidName as exc:
|
| 557 |
+
raise self._invalid_metadata(
|
| 558 |
+
f"{value!r} is invalid for {{field}}", cause=exc
|
| 559 |
+
)
|
| 560 |
+
else:
|
| 561 |
+
return value
|
| 562 |
+
|
| 563 |
+
def _process_version(self, value: str) -> version_module.Version:
|
| 564 |
+
if not value:
|
| 565 |
+
raise self._invalid_metadata("{field} is a required field")
|
| 566 |
+
try:
|
| 567 |
+
return version_module.parse(value)
|
| 568 |
+
except version_module.InvalidVersion as exc:
|
| 569 |
+
raise self._invalid_metadata(
|
| 570 |
+
f"{value!r} is invalid for {{field}}", cause=exc
|
| 571 |
+
)
|
| 572 |
+
|
| 573 |
+
def _process_summary(self, value: str) -> str:
|
| 574 |
+
"""Check the field contains no newlines."""
|
| 575 |
+
if "\n" in value:
|
| 576 |
+
raise self._invalid_metadata("{field} must be a single line")
|
| 577 |
+
return value
|
| 578 |
+
|
| 579 |
+
def _process_description_content_type(self, value: str) -> str:
|
| 580 |
+
content_types = {"text/plain", "text/x-rst", "text/markdown"}
|
| 581 |
+
message = email.message.EmailMessage()
|
| 582 |
+
message["content-type"] = value
|
| 583 |
+
|
| 584 |
+
content_type, parameters = (
|
| 585 |
+
# Defaults to `text/plain` if parsing failed.
|
| 586 |
+
message.get_content_type().lower(),
|
| 587 |
+
message["content-type"].params,
|
| 588 |
+
)
|
| 589 |
+
# Check if content-type is valid or defaulted to `text/plain` and thus was
|
| 590 |
+
# not parseable.
|
| 591 |
+
if content_type not in content_types or content_type not in value.lower():
|
| 592 |
+
raise self._invalid_metadata(
|
| 593 |
+
f"{{field}} must be one of {list(content_types)}, not {value!r}"
|
| 594 |
+
)
|
| 595 |
+
|
| 596 |
+
charset = parameters.get("charset", "UTF-8")
|
| 597 |
+
if charset != "UTF-8":
|
| 598 |
+
raise self._invalid_metadata(
|
| 599 |
+
f"{{field}} can only specify the UTF-8 charset, not {list(charset)}"
|
| 600 |
+
)
|
| 601 |
+
|
| 602 |
+
markdown_variants = {"GFM", "CommonMark"}
|
| 603 |
+
variant = parameters.get("variant", "GFM") # Use an acceptable default.
|
| 604 |
+
if content_type == "text/markdown" and variant not in markdown_variants:
|
| 605 |
+
raise self._invalid_metadata(
|
| 606 |
+
f"valid Markdown variants for {{field}} are {list(markdown_variants)}, "
|
| 607 |
+
f"not {variant!r}",
|
| 608 |
+
)
|
| 609 |
+
return value
|
| 610 |
+
|
| 611 |
+
def _process_dynamic(self, value: List[str]) -> List[str]:
|
| 612 |
+
for dynamic_field in map(str.lower, value):
|
| 613 |
+
if dynamic_field in {"name", "version", "metadata-version"}:
|
| 614 |
+
raise self._invalid_metadata(
|
| 615 |
+
f"{value!r} is not allowed as a dynamic field"
|
| 616 |
+
)
|
| 617 |
+
elif dynamic_field not in _EMAIL_TO_RAW_MAPPING:
|
| 618 |
+
raise self._invalid_metadata(f"{value!r} is not a valid dynamic field")
|
| 619 |
+
return list(map(str.lower, value))
|
| 620 |
+
|
| 621 |
+
def _process_provides_extra(
|
| 622 |
+
self,
|
| 623 |
+
value: List[str],
|
| 624 |
+
) -> List[utils.NormalizedName]:
|
| 625 |
+
normalized_names = []
|
| 626 |
+
try:
|
| 627 |
+
for name in value:
|
| 628 |
+
normalized_names.append(utils.canonicalize_name(name, validate=True))
|
| 629 |
+
except utils.InvalidName as exc:
|
| 630 |
+
raise self._invalid_metadata(
|
| 631 |
+
f"{name!r} is invalid for {{field}}", cause=exc
|
| 632 |
+
)
|
| 633 |
+
else:
|
| 634 |
+
return normalized_names
|
| 635 |
+
|
| 636 |
+
def _process_requires_python(self, value: str) -> specifiers.SpecifierSet:
|
| 637 |
+
try:
|
| 638 |
+
return specifiers.SpecifierSet(value)
|
| 639 |
+
except specifiers.InvalidSpecifier as exc:
|
| 640 |
+
raise self._invalid_metadata(
|
| 641 |
+
f"{value!r} is invalid for {{field}}", cause=exc
|
| 642 |
+
)
|
| 643 |
+
|
| 644 |
+
def _process_requires_dist(
|
| 645 |
+
self,
|
| 646 |
+
value: List[str],
|
| 647 |
+
) -> List[requirements.Requirement]:
|
| 648 |
+
reqs = []
|
| 649 |
+
try:
|
| 650 |
+
for req in value:
|
| 651 |
+
reqs.append(requirements.Requirement(req))
|
| 652 |
+
except requirements.InvalidRequirement as exc:
|
| 653 |
+
raise self._invalid_metadata(f"{req!r} is invalid for {{field}}", cause=exc)
|
| 654 |
+
else:
|
| 655 |
+
return reqs
|
| 656 |
+
|
| 657 |
+
|
| 658 |
+
class Metadata:
|
| 659 |
+
"""Representation of distribution metadata.
|
| 660 |
+
|
| 661 |
+
Compared to :class:`RawMetadata`, this class provides objects representing
|
| 662 |
+
metadata fields instead of only using built-in types. Any invalid metadata
|
| 663 |
+
will cause :exc:`InvalidMetadata` to be raised (with a
|
| 664 |
+
:py:attr:`~BaseException.__cause__` attribute as appropriate).
|
| 665 |
+
"""
|
| 666 |
+
|
| 667 |
+
_raw: RawMetadata
|
| 668 |
+
|
| 669 |
+
@classmethod
|
| 670 |
+
def from_raw(cls, data: RawMetadata, *, validate: bool = True) -> "Metadata":
|
| 671 |
+
"""Create an instance from :class:`RawMetadata`.
|
| 672 |
+
|
| 673 |
+
If *validate* is true, all metadata will be validated. All exceptions
|
| 674 |
+
related to validation will be gathered and raised as an :class:`ExceptionGroup`.
|
| 675 |
+
"""
|
| 676 |
+
ins = cls()
|
| 677 |
+
ins._raw = data.copy() # Mutations occur due to caching enriched values.
|
| 678 |
+
|
| 679 |
+
if validate:
|
| 680 |
+
exceptions: List[InvalidMetadata] = []
|
| 681 |
+
try:
|
| 682 |
+
metadata_version = ins.metadata_version
|
| 683 |
+
metadata_age = _VALID_METADATA_VERSIONS.index(metadata_version)
|
| 684 |
+
except InvalidMetadata as metadata_version_exc:
|
| 685 |
+
exceptions.append(metadata_version_exc)
|
| 686 |
+
metadata_version = None
|
| 687 |
+
|
| 688 |
+
# Make sure to check for the fields that are present, the required
|
| 689 |
+
# fields (so their absence can be reported).
|
| 690 |
+
fields_to_check = frozenset(ins._raw) | _REQUIRED_ATTRS
|
| 691 |
+
# Remove fields that have already been checked.
|
| 692 |
+
fields_to_check -= {"metadata_version"}
|
| 693 |
+
|
| 694 |
+
for key in fields_to_check:
|
| 695 |
+
try:
|
| 696 |
+
if metadata_version:
|
| 697 |
+
# Can't use getattr() as that triggers descriptor protocol which
|
| 698 |
+
# will fail due to no value for the instance argument.
|
| 699 |
+
try:
|
| 700 |
+
field_metadata_version = cls.__dict__[key].added
|
| 701 |
+
except KeyError:
|
| 702 |
+
exc = InvalidMetadata(key, f"unrecognized field: {key!r}")
|
| 703 |
+
exceptions.append(exc)
|
| 704 |
+
continue
|
| 705 |
+
field_age = _VALID_METADATA_VERSIONS.index(
|
| 706 |
+
field_metadata_version
|
| 707 |
+
)
|
| 708 |
+
if field_age > metadata_age:
|
| 709 |
+
field = _RAW_TO_EMAIL_MAPPING[key]
|
| 710 |
+
exc = InvalidMetadata(
|
| 711 |
+
field,
|
| 712 |
+
"{field} introduced in metadata version "
|
| 713 |
+
"{field_metadata_version}, not {metadata_version}",
|
| 714 |
+
)
|
| 715 |
+
exceptions.append(exc)
|
| 716 |
+
continue
|
| 717 |
+
getattr(ins, key)
|
| 718 |
+
except InvalidMetadata as exc:
|
| 719 |
+
exceptions.append(exc)
|
| 720 |
+
|
| 721 |
+
if exceptions:
|
| 722 |
+
raise ExceptionGroup("invalid metadata", exceptions)
|
| 723 |
+
|
| 724 |
+
return ins
|
| 725 |
+
|
| 726 |
+
@classmethod
|
| 727 |
+
def from_email(
|
| 728 |
+
cls, data: Union[bytes, str], *, validate: bool = True
|
| 729 |
+
) -> "Metadata":
|
| 730 |
+
"""Parse metadata from email headers.
|
| 731 |
+
|
| 732 |
+
If *validate* is true, the metadata will be validated. All exceptions
|
| 733 |
+
related to validation will be gathered and raised as an :class:`ExceptionGroup`.
|
| 734 |
+
"""
|
| 735 |
+
exceptions: list[InvalidMetadata] = []
|
| 736 |
+
raw, unparsed = parse_email(data)
|
| 737 |
+
|
| 738 |
+
if validate:
|
| 739 |
+
for unparsed_key in unparsed:
|
| 740 |
+
if unparsed_key in _EMAIL_TO_RAW_MAPPING:
|
| 741 |
+
message = f"{unparsed_key!r} has invalid data"
|
| 742 |
+
else:
|
| 743 |
+
message = f"unrecognized field: {unparsed_key!r}"
|
| 744 |
+
exceptions.append(InvalidMetadata(unparsed_key, message))
|
| 745 |
+
|
| 746 |
+
if exceptions:
|
| 747 |
+
raise ExceptionGroup("unparsed", exceptions)
|
| 748 |
+
|
| 749 |
+
try:
|
| 750 |
+
return cls.from_raw(raw, validate=validate)
|
| 751 |
+
except ExceptionGroup as exc_group:
|
| 752 |
+
exceptions.extend(exc_group.exceptions)
|
| 753 |
+
raise ExceptionGroup("invalid or unparsed metadata", exceptions) from None
|
| 754 |
+
|
| 755 |
+
metadata_version: _Validator[_MetadataVersion] = _Validator()
|
| 756 |
+
""":external:ref:`core-metadata-metadata-version`
|
| 757 |
+
(required; validated to be a valid metadata version)"""
|
| 758 |
+
name: _Validator[str] = _Validator()
|
| 759 |
+
""":external:ref:`core-metadata-name`
|
| 760 |
+
(required; validated using :func:`~packaging.utils.canonicalize_name` and its
|
| 761 |
+
*validate* parameter)"""
|
| 762 |
+
version: _Validator[version_module.Version] = _Validator()
|
| 763 |
+
""":external:ref:`core-metadata-version` (required)"""
|
| 764 |
+
dynamic: _Validator[List[str]] = _Validator(
|
| 765 |
+
added="2.2",
|
| 766 |
+
)
|
| 767 |
+
""":external:ref:`core-metadata-dynamic`
|
| 768 |
+
(validated against core metadata field names and lowercased)"""
|
| 769 |
+
platforms: _Validator[List[str]] = _Validator()
|
| 770 |
+
""":external:ref:`core-metadata-platform`"""
|
| 771 |
+
supported_platforms: _Validator[List[str]] = _Validator(added="1.1")
|
| 772 |
+
""":external:ref:`core-metadata-supported-platform`"""
|
| 773 |
+
summary: _Validator[str] = _Validator()
|
| 774 |
+
""":external:ref:`core-metadata-summary` (validated to contain no newlines)"""
|
| 775 |
+
description: _Validator[str] = _Validator() # TODO 2.1: can be in body
|
| 776 |
+
""":external:ref:`core-metadata-description`"""
|
| 777 |
+
description_content_type: _Validator[str] = _Validator(added="2.1")
|
| 778 |
+
""":external:ref:`core-metadata-description-content-type` (validated)"""
|
| 779 |
+
keywords: _Validator[List[str]] = _Validator()
|
| 780 |
+
""":external:ref:`core-metadata-keywords`"""
|
| 781 |
+
home_page: _Validator[str] = _Validator()
|
| 782 |
+
""":external:ref:`core-metadata-home-page`"""
|
| 783 |
+
download_url: _Validator[str] = _Validator(added="1.1")
|
| 784 |
+
""":external:ref:`core-metadata-download-url`"""
|
| 785 |
+
author: _Validator[str] = _Validator()
|
| 786 |
+
""":external:ref:`core-metadata-author`"""
|
| 787 |
+
author_email: _Validator[str] = _Validator()
|
| 788 |
+
""":external:ref:`core-metadata-author-email`"""
|
| 789 |
+
maintainer: _Validator[str] = _Validator(added="1.2")
|
| 790 |
+
""":external:ref:`core-metadata-maintainer`"""
|
| 791 |
+
maintainer_email: _Validator[str] = _Validator(added="1.2")
|
| 792 |
+
""":external:ref:`core-metadata-maintainer-email`"""
|
| 793 |
+
license: _Validator[str] = _Validator()
|
| 794 |
+
""":external:ref:`core-metadata-license`"""
|
| 795 |
+
classifiers: _Validator[List[str]] = _Validator(added="1.1")
|
| 796 |
+
""":external:ref:`core-metadata-classifier`"""
|
| 797 |
+
requires_dist: _Validator[List[requirements.Requirement]] = _Validator(added="1.2")
|
| 798 |
+
""":external:ref:`core-metadata-requires-dist`"""
|
| 799 |
+
requires_python: _Validator[specifiers.SpecifierSet] = _Validator(added="1.2")
|
| 800 |
+
""":external:ref:`core-metadata-requires-python`"""
|
| 801 |
+
# Because `Requires-External` allows for non-PEP 440 version specifiers, we
|
| 802 |
+
# don't do any processing on the values.
|
| 803 |
+
requires_external: _Validator[List[str]] = _Validator(added="1.2")
|
| 804 |
+
""":external:ref:`core-metadata-requires-external`"""
|
| 805 |
+
project_urls: _Validator[Dict[str, str]] = _Validator(added="1.2")
|
| 806 |
+
""":external:ref:`core-metadata-project-url`"""
|
| 807 |
+
# PEP 685 lets us raise an error if an extra doesn't pass `Name` validation
|
| 808 |
+
# regardless of metadata version.
|
| 809 |
+
provides_extra: _Validator[List[utils.NormalizedName]] = _Validator(
|
| 810 |
+
added="2.1",
|
| 811 |
+
)
|
| 812 |
+
""":external:ref:`core-metadata-provides-extra`"""
|
| 813 |
+
provides_dist: _Validator[List[str]] = _Validator(added="1.2")
|
| 814 |
+
""":external:ref:`core-metadata-provides-dist`"""
|
| 815 |
+
obsoletes_dist: _Validator[List[str]] = _Validator(added="1.2")
|
| 816 |
+
""":external:ref:`core-metadata-obsoletes-dist`"""
|
| 817 |
+
requires: _Validator[List[str]] = _Validator(added="1.1")
|
| 818 |
+
"""``Requires`` (deprecated)"""
|
| 819 |
+
provides: _Validator[List[str]] = _Validator(added="1.1")
|
| 820 |
+
"""``Provides`` (deprecated)"""
|
| 821 |
+
obsoletes: _Validator[List[str]] = _Validator(added="1.1")
|
| 822 |
+
"""``Obsoletes`` (deprecated)"""
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/py.typed
ADDED
|
File without changes
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/requirements.py
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is dual licensed under the terms of the Apache License, Version
|
| 2 |
+
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
| 3 |
+
# for complete details.
|
| 4 |
+
|
| 5 |
+
from typing import Any, Iterator, Optional, Set
|
| 6 |
+
|
| 7 |
+
from ._parser import parse_requirement as _parse_requirement
|
| 8 |
+
from ._tokenizer import ParserSyntaxError
|
| 9 |
+
from .markers import Marker, _normalize_extra_values
|
| 10 |
+
from .specifiers import SpecifierSet
|
| 11 |
+
from .utils import canonicalize_name
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
class InvalidRequirement(ValueError):
|
| 15 |
+
"""
|
| 16 |
+
An invalid requirement was found, users should refer to PEP 508.
|
| 17 |
+
"""
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
class Requirement:
|
| 21 |
+
"""Parse a requirement.
|
| 22 |
+
|
| 23 |
+
Parse a given requirement string into its parts, such as name, specifier,
|
| 24 |
+
URL, and extras. Raises InvalidRequirement on a badly-formed requirement
|
| 25 |
+
string.
|
| 26 |
+
"""
|
| 27 |
+
|
| 28 |
+
# TODO: Can we test whether something is contained within a requirement?
|
| 29 |
+
# If so how do we do that? Do we need to test against the _name_ of
|
| 30 |
+
# the thing as well as the version? What about the markers?
|
| 31 |
+
# TODO: Can we normalize the name and extra name?
|
| 32 |
+
|
| 33 |
+
def __init__(self, requirement_string: str) -> None:
|
| 34 |
+
try:
|
| 35 |
+
parsed = _parse_requirement(requirement_string)
|
| 36 |
+
except ParserSyntaxError as e:
|
| 37 |
+
raise InvalidRequirement(str(e)) from e
|
| 38 |
+
|
| 39 |
+
self.name: str = parsed.name
|
| 40 |
+
self.url: Optional[str] = parsed.url or None
|
| 41 |
+
self.extras: Set[str] = set(parsed.extras if parsed.extras else [])
|
| 42 |
+
self.specifier: SpecifierSet = SpecifierSet(parsed.specifier)
|
| 43 |
+
self.marker: Optional[Marker] = None
|
| 44 |
+
if parsed.marker is not None:
|
| 45 |
+
self.marker = Marker.__new__(Marker)
|
| 46 |
+
self.marker._markers = _normalize_extra_values(parsed.marker)
|
| 47 |
+
|
| 48 |
+
def _iter_parts(self, name: str) -> Iterator[str]:
|
| 49 |
+
yield name
|
| 50 |
+
|
| 51 |
+
if self.extras:
|
| 52 |
+
formatted_extras = ",".join(sorted(self.extras))
|
| 53 |
+
yield f"[{formatted_extras}]"
|
| 54 |
+
|
| 55 |
+
if self.specifier:
|
| 56 |
+
yield str(self.specifier)
|
| 57 |
+
|
| 58 |
+
if self.url:
|
| 59 |
+
yield f"@ {self.url}"
|
| 60 |
+
if self.marker:
|
| 61 |
+
yield " "
|
| 62 |
+
|
| 63 |
+
if self.marker:
|
| 64 |
+
yield f"; {self.marker}"
|
| 65 |
+
|
| 66 |
+
def __str__(self) -> str:
|
| 67 |
+
return "".join(self._iter_parts(self.name))
|
| 68 |
+
|
| 69 |
+
def __repr__(self) -> str:
|
| 70 |
+
return f"<Requirement('{self}')>"
|
| 71 |
+
|
| 72 |
+
def __hash__(self) -> int:
|
| 73 |
+
return hash(
|
| 74 |
+
(
|
| 75 |
+
self.__class__.__name__,
|
| 76 |
+
*self._iter_parts(canonicalize_name(self.name)),
|
| 77 |
+
)
|
| 78 |
+
)
|
| 79 |
+
|
| 80 |
+
def __eq__(self, other: Any) -> bool:
|
| 81 |
+
if not isinstance(other, Requirement):
|
| 82 |
+
return NotImplemented
|
| 83 |
+
|
| 84 |
+
return (
|
| 85 |
+
canonicalize_name(self.name) == canonicalize_name(other.name)
|
| 86 |
+
and self.extras == other.extras
|
| 87 |
+
and self.specifier == other.specifier
|
| 88 |
+
and self.url == other.url
|
| 89 |
+
and self.marker == other.marker
|
| 90 |
+
)
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/specifiers.py
ADDED
|
@@ -0,0 +1,1008 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is dual licensed under the terms of the Apache License, Version
|
| 2 |
+
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
| 3 |
+
# for complete details.
|
| 4 |
+
"""
|
| 5 |
+
.. testsetup::
|
| 6 |
+
|
| 7 |
+
from packaging.specifiers import Specifier, SpecifierSet, InvalidSpecifier
|
| 8 |
+
from packaging.version import Version
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
import abc
|
| 12 |
+
import itertools
|
| 13 |
+
import re
|
| 14 |
+
from typing import (
|
| 15 |
+
Callable,
|
| 16 |
+
Iterable,
|
| 17 |
+
Iterator,
|
| 18 |
+
List,
|
| 19 |
+
Optional,
|
| 20 |
+
Set,
|
| 21 |
+
Tuple,
|
| 22 |
+
TypeVar,
|
| 23 |
+
Union,
|
| 24 |
+
)
|
| 25 |
+
|
| 26 |
+
from .utils import canonicalize_version
|
| 27 |
+
from .version import Version
|
| 28 |
+
|
| 29 |
+
UnparsedVersion = Union[Version, str]
|
| 30 |
+
UnparsedVersionVar = TypeVar("UnparsedVersionVar", bound=UnparsedVersion)
|
| 31 |
+
CallableOperator = Callable[[Version, str], bool]
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
def _coerce_version(version: UnparsedVersion) -> Version:
|
| 35 |
+
if not isinstance(version, Version):
|
| 36 |
+
version = Version(version)
|
| 37 |
+
return version
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
class InvalidSpecifier(ValueError):
|
| 41 |
+
"""
|
| 42 |
+
Raised when attempting to create a :class:`Specifier` with a specifier
|
| 43 |
+
string that is invalid.
|
| 44 |
+
|
| 45 |
+
>>> Specifier("lolwat")
|
| 46 |
+
Traceback (most recent call last):
|
| 47 |
+
...
|
| 48 |
+
packaging.specifiers.InvalidSpecifier: Invalid specifier: 'lolwat'
|
| 49 |
+
"""
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
class BaseSpecifier(metaclass=abc.ABCMeta):
|
| 53 |
+
@abc.abstractmethod
|
| 54 |
+
def __str__(self) -> str:
|
| 55 |
+
"""
|
| 56 |
+
Returns the str representation of this Specifier-like object. This
|
| 57 |
+
should be representative of the Specifier itself.
|
| 58 |
+
"""
|
| 59 |
+
|
| 60 |
+
@abc.abstractmethod
|
| 61 |
+
def __hash__(self) -> int:
|
| 62 |
+
"""
|
| 63 |
+
Returns a hash value for this Specifier-like object.
|
| 64 |
+
"""
|
| 65 |
+
|
| 66 |
+
@abc.abstractmethod
|
| 67 |
+
def __eq__(self, other: object) -> bool:
|
| 68 |
+
"""
|
| 69 |
+
Returns a boolean representing whether or not the two Specifier-like
|
| 70 |
+
objects are equal.
|
| 71 |
+
|
| 72 |
+
:param other: The other object to check against.
|
| 73 |
+
"""
|
| 74 |
+
|
| 75 |
+
@property
|
| 76 |
+
@abc.abstractmethod
|
| 77 |
+
def prereleases(self) -> Optional[bool]:
|
| 78 |
+
"""Whether or not pre-releases as a whole are allowed.
|
| 79 |
+
|
| 80 |
+
This can be set to either ``True`` or ``False`` to explicitly enable or disable
|
| 81 |
+
prereleases or it can be set to ``None`` (the default) to use default semantics.
|
| 82 |
+
"""
|
| 83 |
+
|
| 84 |
+
@prereleases.setter
|
| 85 |
+
def prereleases(self, value: bool) -> None:
|
| 86 |
+
"""Setter for :attr:`prereleases`.
|
| 87 |
+
|
| 88 |
+
:param value: The value to set.
|
| 89 |
+
"""
|
| 90 |
+
|
| 91 |
+
@abc.abstractmethod
|
| 92 |
+
def contains(self, item: str, prereleases: Optional[bool] = None) -> bool:
|
| 93 |
+
"""
|
| 94 |
+
Determines if the given item is contained within this specifier.
|
| 95 |
+
"""
|
| 96 |
+
|
| 97 |
+
@abc.abstractmethod
|
| 98 |
+
def filter(
|
| 99 |
+
self, iterable: Iterable[UnparsedVersionVar], prereleases: Optional[bool] = None
|
| 100 |
+
) -> Iterator[UnparsedVersionVar]:
|
| 101 |
+
"""
|
| 102 |
+
Takes an iterable of items and filters them so that only items which
|
| 103 |
+
are contained within this specifier are allowed in it.
|
| 104 |
+
"""
|
| 105 |
+
|
| 106 |
+
|
| 107 |
+
class Specifier(BaseSpecifier):
|
| 108 |
+
"""This class abstracts handling of version specifiers.
|
| 109 |
+
|
| 110 |
+
.. tip::
|
| 111 |
+
|
| 112 |
+
It is generally not required to instantiate this manually. You should instead
|
| 113 |
+
prefer to work with :class:`SpecifierSet` instead, which can parse
|
| 114 |
+
comma-separated version specifiers (which is what package metadata contains).
|
| 115 |
+
"""
|
| 116 |
+
|
| 117 |
+
_operator_regex_str = r"""
|
| 118 |
+
(?P<operator>(~=|==|!=|<=|>=|<|>|===))
|
| 119 |
+
"""
|
| 120 |
+
_version_regex_str = r"""
|
| 121 |
+
(?P<version>
|
| 122 |
+
(?:
|
| 123 |
+
# The identity operators allow for an escape hatch that will
|
| 124 |
+
# do an exact string match of the version you wish to install.
|
| 125 |
+
# This will not be parsed by PEP 440 and we cannot determine
|
| 126 |
+
# any semantic meaning from it. This operator is discouraged
|
| 127 |
+
# but included entirely as an escape hatch.
|
| 128 |
+
(?<====) # Only match for the identity operator
|
| 129 |
+
\s*
|
| 130 |
+
[^\s;)]* # The arbitrary version can be just about anything,
|
| 131 |
+
# we match everything except for whitespace, a
|
| 132 |
+
# semi-colon for marker support, and a closing paren
|
| 133 |
+
# since versions can be enclosed in them.
|
| 134 |
+
)
|
| 135 |
+
|
|
| 136 |
+
(?:
|
| 137 |
+
# The (non)equality operators allow for wild card and local
|
| 138 |
+
# versions to be specified so we have to define these two
|
| 139 |
+
# operators separately to enable that.
|
| 140 |
+
(?<===|!=) # Only match for equals and not equals
|
| 141 |
+
|
| 142 |
+
\s*
|
| 143 |
+
v?
|
| 144 |
+
(?:[0-9]+!)? # epoch
|
| 145 |
+
[0-9]+(?:\.[0-9]+)* # release
|
| 146 |
+
|
| 147 |
+
# You cannot use a wild card and a pre-release, post-release, a dev or
|
| 148 |
+
# local version together so group them with a | and make them optional.
|
| 149 |
+
(?:
|
| 150 |
+
\.\* # Wild card syntax of .*
|
| 151 |
+
|
|
| 152 |
+
(?: # pre release
|
| 153 |
+
[-_\.]?
|
| 154 |
+
(alpha|beta|preview|pre|a|b|c|rc)
|
| 155 |
+
[-_\.]?
|
| 156 |
+
[0-9]*
|
| 157 |
+
)?
|
| 158 |
+
(?: # post release
|
| 159 |
+
(?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
|
| 160 |
+
)?
|
| 161 |
+
(?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release
|
| 162 |
+
(?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local
|
| 163 |
+
)?
|
| 164 |
+
)
|
| 165 |
+
|
|
| 166 |
+
(?:
|
| 167 |
+
# The compatible operator requires at least two digits in the
|
| 168 |
+
# release segment.
|
| 169 |
+
(?<=~=) # Only match for the compatible operator
|
| 170 |
+
|
| 171 |
+
\s*
|
| 172 |
+
v?
|
| 173 |
+
(?:[0-9]+!)? # epoch
|
| 174 |
+
[0-9]+(?:\.[0-9]+)+ # release (We have a + instead of a *)
|
| 175 |
+
(?: # pre release
|
| 176 |
+
[-_\.]?
|
| 177 |
+
(alpha|beta|preview|pre|a|b|c|rc)
|
| 178 |
+
[-_\.]?
|
| 179 |
+
[0-9]*
|
| 180 |
+
)?
|
| 181 |
+
(?: # post release
|
| 182 |
+
(?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
|
| 183 |
+
)?
|
| 184 |
+
(?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release
|
| 185 |
+
)
|
| 186 |
+
|
|
| 187 |
+
(?:
|
| 188 |
+
# All other operators only allow a sub set of what the
|
| 189 |
+
# (non)equality operators do. Specifically they do not allow
|
| 190 |
+
# local versions to be specified nor do they allow the prefix
|
| 191 |
+
# matching wild cards.
|
| 192 |
+
(?<!==|!=|~=) # We have special cases for these
|
| 193 |
+
# operators so we want to make sure they
|
| 194 |
+
# don't match here.
|
| 195 |
+
|
| 196 |
+
\s*
|
| 197 |
+
v?
|
| 198 |
+
(?:[0-9]+!)? # epoch
|
| 199 |
+
[0-9]+(?:\.[0-9]+)* # release
|
| 200 |
+
(?: # pre release
|
| 201 |
+
[-_\.]?
|
| 202 |
+
(alpha|beta|preview|pre|a|b|c|rc)
|
| 203 |
+
[-_\.]?
|
| 204 |
+
[0-9]*
|
| 205 |
+
)?
|
| 206 |
+
(?: # post release
|
| 207 |
+
(?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
|
| 208 |
+
)?
|
| 209 |
+
(?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release
|
| 210 |
+
)
|
| 211 |
+
)
|
| 212 |
+
"""
|
| 213 |
+
|
| 214 |
+
_regex = re.compile(
|
| 215 |
+
r"^\s*" + _operator_regex_str + _version_regex_str + r"\s*$",
|
| 216 |
+
re.VERBOSE | re.IGNORECASE,
|
| 217 |
+
)
|
| 218 |
+
|
| 219 |
+
_operators = {
|
| 220 |
+
"~=": "compatible",
|
| 221 |
+
"==": "equal",
|
| 222 |
+
"!=": "not_equal",
|
| 223 |
+
"<=": "less_than_equal",
|
| 224 |
+
">=": "greater_than_equal",
|
| 225 |
+
"<": "less_than",
|
| 226 |
+
">": "greater_than",
|
| 227 |
+
"===": "arbitrary",
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
+
def __init__(self, spec: str = "", prereleases: Optional[bool] = None) -> None:
|
| 231 |
+
"""Initialize a Specifier instance.
|
| 232 |
+
|
| 233 |
+
:param spec:
|
| 234 |
+
The string representation of a specifier which will be parsed and
|
| 235 |
+
normalized before use.
|
| 236 |
+
:param prereleases:
|
| 237 |
+
This tells the specifier if it should accept prerelease versions if
|
| 238 |
+
applicable or not. The default of ``None`` will autodetect it from the
|
| 239 |
+
given specifiers.
|
| 240 |
+
:raises InvalidSpecifier:
|
| 241 |
+
If the given specifier is invalid (i.e. bad syntax).
|
| 242 |
+
"""
|
| 243 |
+
match = self._regex.search(spec)
|
| 244 |
+
if not match:
|
| 245 |
+
raise InvalidSpecifier(f"Invalid specifier: '{spec}'")
|
| 246 |
+
|
| 247 |
+
self._spec: Tuple[str, str] = (
|
| 248 |
+
match.group("operator").strip(),
|
| 249 |
+
match.group("version").strip(),
|
| 250 |
+
)
|
| 251 |
+
|
| 252 |
+
# Store whether or not this Specifier should accept prereleases
|
| 253 |
+
self._prereleases = prereleases
|
| 254 |
+
|
| 255 |
+
# https://github.com/python/mypy/pull/13475#pullrequestreview-1079784515
|
| 256 |
+
@property # type: ignore[override]
|
| 257 |
+
def prereleases(self) -> bool:
|
| 258 |
+
# If there is an explicit prereleases set for this, then we'll just
|
| 259 |
+
# blindly use that.
|
| 260 |
+
if self._prereleases is not None:
|
| 261 |
+
return self._prereleases
|
| 262 |
+
|
| 263 |
+
# Look at all of our specifiers and determine if they are inclusive
|
| 264 |
+
# operators, and if they are if they are including an explicit
|
| 265 |
+
# prerelease.
|
| 266 |
+
operator, version = self._spec
|
| 267 |
+
if operator in ["==", ">=", "<=", "~=", "==="]:
|
| 268 |
+
# The == specifier can include a trailing .*, if it does we
|
| 269 |
+
# want to remove before parsing.
|
| 270 |
+
if operator == "==" and version.endswith(".*"):
|
| 271 |
+
version = version[:-2]
|
| 272 |
+
|
| 273 |
+
# Parse the version, and if it is a pre-release than this
|
| 274 |
+
# specifier allows pre-releases.
|
| 275 |
+
if Version(version).is_prerelease:
|
| 276 |
+
return True
|
| 277 |
+
|
| 278 |
+
return False
|
| 279 |
+
|
| 280 |
+
@prereleases.setter
|
| 281 |
+
def prereleases(self, value: bool) -> None:
|
| 282 |
+
self._prereleases = value
|
| 283 |
+
|
| 284 |
+
@property
|
| 285 |
+
def operator(self) -> str:
|
| 286 |
+
"""The operator of this specifier.
|
| 287 |
+
|
| 288 |
+
>>> Specifier("==1.2.3").operator
|
| 289 |
+
'=='
|
| 290 |
+
"""
|
| 291 |
+
return self._spec[0]
|
| 292 |
+
|
| 293 |
+
@property
|
| 294 |
+
def version(self) -> str:
|
| 295 |
+
"""The version of this specifier.
|
| 296 |
+
|
| 297 |
+
>>> Specifier("==1.2.3").version
|
| 298 |
+
'1.2.3'
|
| 299 |
+
"""
|
| 300 |
+
return self._spec[1]
|
| 301 |
+
|
| 302 |
+
def __repr__(self) -> str:
|
| 303 |
+
"""A representation of the Specifier that shows all internal state.
|
| 304 |
+
|
| 305 |
+
>>> Specifier('>=1.0.0')
|
| 306 |
+
<Specifier('>=1.0.0')>
|
| 307 |
+
>>> Specifier('>=1.0.0', prereleases=False)
|
| 308 |
+
<Specifier('>=1.0.0', prereleases=False)>
|
| 309 |
+
>>> Specifier('>=1.0.0', prereleases=True)
|
| 310 |
+
<Specifier('>=1.0.0', prereleases=True)>
|
| 311 |
+
"""
|
| 312 |
+
pre = (
|
| 313 |
+
f", prereleases={self.prereleases!r}"
|
| 314 |
+
if self._prereleases is not None
|
| 315 |
+
else ""
|
| 316 |
+
)
|
| 317 |
+
|
| 318 |
+
return f"<{self.__class__.__name__}({str(self)!r}{pre})>"
|
| 319 |
+
|
| 320 |
+
def __str__(self) -> str:
|
| 321 |
+
"""A string representation of the Specifier that can be round-tripped.
|
| 322 |
+
|
| 323 |
+
>>> str(Specifier('>=1.0.0'))
|
| 324 |
+
'>=1.0.0'
|
| 325 |
+
>>> str(Specifier('>=1.0.0', prereleases=False))
|
| 326 |
+
'>=1.0.0'
|
| 327 |
+
"""
|
| 328 |
+
return "{}{}".format(*self._spec)
|
| 329 |
+
|
| 330 |
+
@property
|
| 331 |
+
def _canonical_spec(self) -> Tuple[str, str]:
|
| 332 |
+
canonical_version = canonicalize_version(
|
| 333 |
+
self._spec[1],
|
| 334 |
+
strip_trailing_zero=(self._spec[0] != "~="),
|
| 335 |
+
)
|
| 336 |
+
return self._spec[0], canonical_version
|
| 337 |
+
|
| 338 |
+
def __hash__(self) -> int:
|
| 339 |
+
return hash(self._canonical_spec)
|
| 340 |
+
|
| 341 |
+
def __eq__(self, other: object) -> bool:
|
| 342 |
+
"""Whether or not the two Specifier-like objects are equal.
|
| 343 |
+
|
| 344 |
+
:param other: The other object to check against.
|
| 345 |
+
|
| 346 |
+
The value of :attr:`prereleases` is ignored.
|
| 347 |
+
|
| 348 |
+
>>> Specifier("==1.2.3") == Specifier("== 1.2.3.0")
|
| 349 |
+
True
|
| 350 |
+
>>> (Specifier("==1.2.3", prereleases=False) ==
|
| 351 |
+
... Specifier("==1.2.3", prereleases=True))
|
| 352 |
+
True
|
| 353 |
+
>>> Specifier("==1.2.3") == "==1.2.3"
|
| 354 |
+
True
|
| 355 |
+
>>> Specifier("==1.2.3") == Specifier("==1.2.4")
|
| 356 |
+
False
|
| 357 |
+
>>> Specifier("==1.2.3") == Specifier("~=1.2.3")
|
| 358 |
+
False
|
| 359 |
+
"""
|
| 360 |
+
if isinstance(other, str):
|
| 361 |
+
try:
|
| 362 |
+
other = self.__class__(str(other))
|
| 363 |
+
except InvalidSpecifier:
|
| 364 |
+
return NotImplemented
|
| 365 |
+
elif not isinstance(other, self.__class__):
|
| 366 |
+
return NotImplemented
|
| 367 |
+
|
| 368 |
+
return self._canonical_spec == other._canonical_spec
|
| 369 |
+
|
| 370 |
+
def _get_operator(self, op: str) -> CallableOperator:
|
| 371 |
+
operator_callable: CallableOperator = getattr(
|
| 372 |
+
self, f"_compare_{self._operators[op]}"
|
| 373 |
+
)
|
| 374 |
+
return operator_callable
|
| 375 |
+
|
| 376 |
+
def _compare_compatible(self, prospective: Version, spec: str) -> bool:
|
| 377 |
+
|
| 378 |
+
# Compatible releases have an equivalent combination of >= and ==. That
|
| 379 |
+
# is that ~=2.2 is equivalent to >=2.2,==2.*. This allows us to
|
| 380 |
+
# implement this in terms of the other specifiers instead of
|
| 381 |
+
# implementing it ourselves. The only thing we need to do is construct
|
| 382 |
+
# the other specifiers.
|
| 383 |
+
|
| 384 |
+
# We want everything but the last item in the version, but we want to
|
| 385 |
+
# ignore suffix segments.
|
| 386 |
+
prefix = ".".join(
|
| 387 |
+
list(itertools.takewhile(_is_not_suffix, _version_split(spec)))[:-1]
|
| 388 |
+
)
|
| 389 |
+
|
| 390 |
+
# Add the prefix notation to the end of our string
|
| 391 |
+
prefix += ".*"
|
| 392 |
+
|
| 393 |
+
return self._get_operator(">=")(prospective, spec) and self._get_operator("==")(
|
| 394 |
+
prospective, prefix
|
| 395 |
+
)
|
| 396 |
+
|
| 397 |
+
def _compare_equal(self, prospective: Version, spec: str) -> bool:
|
| 398 |
+
|
| 399 |
+
# We need special logic to handle prefix matching
|
| 400 |
+
if spec.endswith(".*"):
|
| 401 |
+
# In the case of prefix matching we want to ignore local segment.
|
| 402 |
+
normalized_prospective = canonicalize_version(
|
| 403 |
+
prospective.public, strip_trailing_zero=False
|
| 404 |
+
)
|
| 405 |
+
# Get the normalized version string ignoring the trailing .*
|
| 406 |
+
normalized_spec = canonicalize_version(spec[:-2], strip_trailing_zero=False)
|
| 407 |
+
# Split the spec out by dots, and pretend that there is an implicit
|
| 408 |
+
# dot in between a release segment and a pre-release segment.
|
| 409 |
+
split_spec = _version_split(normalized_spec)
|
| 410 |
+
|
| 411 |
+
# Split the prospective version out by dots, and pretend that there
|
| 412 |
+
# is an implicit dot in between a release segment and a pre-release
|
| 413 |
+
# segment.
|
| 414 |
+
split_prospective = _version_split(normalized_prospective)
|
| 415 |
+
|
| 416 |
+
# 0-pad the prospective version before shortening it to get the correct
|
| 417 |
+
# shortened version.
|
| 418 |
+
padded_prospective, _ = _pad_version(split_prospective, split_spec)
|
| 419 |
+
|
| 420 |
+
# Shorten the prospective version to be the same length as the spec
|
| 421 |
+
# so that we can determine if the specifier is a prefix of the
|
| 422 |
+
# prospective version or not.
|
| 423 |
+
shortened_prospective = padded_prospective[: len(split_spec)]
|
| 424 |
+
|
| 425 |
+
return shortened_prospective == split_spec
|
| 426 |
+
else:
|
| 427 |
+
# Convert our spec string into a Version
|
| 428 |
+
spec_version = Version(spec)
|
| 429 |
+
|
| 430 |
+
# If the specifier does not have a local segment, then we want to
|
| 431 |
+
# act as if the prospective version also does not have a local
|
| 432 |
+
# segment.
|
| 433 |
+
if not spec_version.local:
|
| 434 |
+
prospective = Version(prospective.public)
|
| 435 |
+
|
| 436 |
+
return prospective == spec_version
|
| 437 |
+
|
| 438 |
+
def _compare_not_equal(self, prospective: Version, spec: str) -> bool:
|
| 439 |
+
return not self._compare_equal(prospective, spec)
|
| 440 |
+
|
| 441 |
+
def _compare_less_than_equal(self, prospective: Version, spec: str) -> bool:
|
| 442 |
+
|
| 443 |
+
# NB: Local version identifiers are NOT permitted in the version
|
| 444 |
+
# specifier, so local version labels can be universally removed from
|
| 445 |
+
# the prospective version.
|
| 446 |
+
return Version(prospective.public) <= Version(spec)
|
| 447 |
+
|
| 448 |
+
def _compare_greater_than_equal(self, prospective: Version, spec: str) -> bool:
|
| 449 |
+
|
| 450 |
+
# NB: Local version identifiers are NOT permitted in the version
|
| 451 |
+
# specifier, so local version labels can be universally removed from
|
| 452 |
+
# the prospective version.
|
| 453 |
+
return Version(prospective.public) >= Version(spec)
|
| 454 |
+
|
| 455 |
+
def _compare_less_than(self, prospective: Version, spec_str: str) -> bool:
|
| 456 |
+
|
| 457 |
+
# Convert our spec to a Version instance, since we'll want to work with
|
| 458 |
+
# it as a version.
|
| 459 |
+
spec = Version(spec_str)
|
| 460 |
+
|
| 461 |
+
# Check to see if the prospective version is less than the spec
|
| 462 |
+
# version. If it's not we can short circuit and just return False now
|
| 463 |
+
# instead of doing extra unneeded work.
|
| 464 |
+
if not prospective < spec:
|
| 465 |
+
return False
|
| 466 |
+
|
| 467 |
+
# This special case is here so that, unless the specifier itself
|
| 468 |
+
# includes is a pre-release version, that we do not accept pre-release
|
| 469 |
+
# versions for the version mentioned in the specifier (e.g. <3.1 should
|
| 470 |
+
# not match 3.1.dev0, but should match 3.0.dev0).
|
| 471 |
+
if not spec.is_prerelease and prospective.is_prerelease:
|
| 472 |
+
if Version(prospective.base_version) == Version(spec.base_version):
|
| 473 |
+
return False
|
| 474 |
+
|
| 475 |
+
# If we've gotten to here, it means that prospective version is both
|
| 476 |
+
# less than the spec version *and* it's not a pre-release of the same
|
| 477 |
+
# version in the spec.
|
| 478 |
+
return True
|
| 479 |
+
|
| 480 |
+
def _compare_greater_than(self, prospective: Version, spec_str: str) -> bool:
|
| 481 |
+
|
| 482 |
+
# Convert our spec to a Version instance, since we'll want to work with
|
| 483 |
+
# it as a version.
|
| 484 |
+
spec = Version(spec_str)
|
| 485 |
+
|
| 486 |
+
# Check to see if the prospective version is greater than the spec
|
| 487 |
+
# version. If it's not we can short circuit and just return False now
|
| 488 |
+
# instead of doing extra unneeded work.
|
| 489 |
+
if not prospective > spec:
|
| 490 |
+
return False
|
| 491 |
+
|
| 492 |
+
# This special case is here so that, unless the specifier itself
|
| 493 |
+
# includes is a post-release version, that we do not accept
|
| 494 |
+
# post-release versions for the version mentioned in the specifier
|
| 495 |
+
# (e.g. >3.1 should not match 3.0.post0, but should match 3.2.post0).
|
| 496 |
+
if not spec.is_postrelease and prospective.is_postrelease:
|
| 497 |
+
if Version(prospective.base_version) == Version(spec.base_version):
|
| 498 |
+
return False
|
| 499 |
+
|
| 500 |
+
# Ensure that we do not allow a local version of the version mentioned
|
| 501 |
+
# in the specifier, which is technically greater than, to match.
|
| 502 |
+
if prospective.local is not None:
|
| 503 |
+
if Version(prospective.base_version) == Version(spec.base_version):
|
| 504 |
+
return False
|
| 505 |
+
|
| 506 |
+
# If we've gotten to here, it means that prospective version is both
|
| 507 |
+
# greater than the spec version *and* it's not a pre-release of the
|
| 508 |
+
# same version in the spec.
|
| 509 |
+
return True
|
| 510 |
+
|
| 511 |
+
def _compare_arbitrary(self, prospective: Version, spec: str) -> bool:
|
| 512 |
+
return str(prospective).lower() == str(spec).lower()
|
| 513 |
+
|
| 514 |
+
def __contains__(self, item: Union[str, Version]) -> bool:
|
| 515 |
+
"""Return whether or not the item is contained in this specifier.
|
| 516 |
+
|
| 517 |
+
:param item: The item to check for.
|
| 518 |
+
|
| 519 |
+
This is used for the ``in`` operator and behaves the same as
|
| 520 |
+
:meth:`contains` with no ``prereleases`` argument passed.
|
| 521 |
+
|
| 522 |
+
>>> "1.2.3" in Specifier(">=1.2.3")
|
| 523 |
+
True
|
| 524 |
+
>>> Version("1.2.3") in Specifier(">=1.2.3")
|
| 525 |
+
True
|
| 526 |
+
>>> "1.0.0" in Specifier(">=1.2.3")
|
| 527 |
+
False
|
| 528 |
+
>>> "1.3.0a1" in Specifier(">=1.2.3")
|
| 529 |
+
False
|
| 530 |
+
>>> "1.3.0a1" in Specifier(">=1.2.3", prereleases=True)
|
| 531 |
+
True
|
| 532 |
+
"""
|
| 533 |
+
return self.contains(item)
|
| 534 |
+
|
| 535 |
+
def contains(
|
| 536 |
+
self, item: UnparsedVersion, prereleases: Optional[bool] = None
|
| 537 |
+
) -> bool:
|
| 538 |
+
"""Return whether or not the item is contained in this specifier.
|
| 539 |
+
|
| 540 |
+
:param item:
|
| 541 |
+
The item to check for, which can be a version string or a
|
| 542 |
+
:class:`Version` instance.
|
| 543 |
+
:param prereleases:
|
| 544 |
+
Whether or not to match prereleases with this Specifier. If set to
|
| 545 |
+
``None`` (the default), it uses :attr:`prereleases` to determine
|
| 546 |
+
whether or not prereleases are allowed.
|
| 547 |
+
|
| 548 |
+
>>> Specifier(">=1.2.3").contains("1.2.3")
|
| 549 |
+
True
|
| 550 |
+
>>> Specifier(">=1.2.3").contains(Version("1.2.3"))
|
| 551 |
+
True
|
| 552 |
+
>>> Specifier(">=1.2.3").contains("1.0.0")
|
| 553 |
+
False
|
| 554 |
+
>>> Specifier(">=1.2.3").contains("1.3.0a1")
|
| 555 |
+
False
|
| 556 |
+
>>> Specifier(">=1.2.3", prereleases=True).contains("1.3.0a1")
|
| 557 |
+
True
|
| 558 |
+
>>> Specifier(">=1.2.3").contains("1.3.0a1", prereleases=True)
|
| 559 |
+
True
|
| 560 |
+
"""
|
| 561 |
+
|
| 562 |
+
# Determine if prereleases are to be allowed or not.
|
| 563 |
+
if prereleases is None:
|
| 564 |
+
prereleases = self.prereleases
|
| 565 |
+
|
| 566 |
+
# Normalize item to a Version, this allows us to have a shortcut for
|
| 567 |
+
# "2.0" in Specifier(">=2")
|
| 568 |
+
normalized_item = _coerce_version(item)
|
| 569 |
+
|
| 570 |
+
# Determine if we should be supporting prereleases in this specifier
|
| 571 |
+
# or not, if we do not support prereleases than we can short circuit
|
| 572 |
+
# logic if this version is a prereleases.
|
| 573 |
+
if normalized_item.is_prerelease and not prereleases:
|
| 574 |
+
return False
|
| 575 |
+
|
| 576 |
+
# Actually do the comparison to determine if this item is contained
|
| 577 |
+
# within this Specifier or not.
|
| 578 |
+
operator_callable: CallableOperator = self._get_operator(self.operator)
|
| 579 |
+
return operator_callable(normalized_item, self.version)
|
| 580 |
+
|
| 581 |
+
def filter(
|
| 582 |
+
self, iterable: Iterable[UnparsedVersionVar], prereleases: Optional[bool] = None
|
| 583 |
+
) -> Iterator[UnparsedVersionVar]:
|
| 584 |
+
"""Filter items in the given iterable, that match the specifier.
|
| 585 |
+
|
| 586 |
+
:param iterable:
|
| 587 |
+
An iterable that can contain version strings and :class:`Version` instances.
|
| 588 |
+
The items in the iterable will be filtered according to the specifier.
|
| 589 |
+
:param prereleases:
|
| 590 |
+
Whether or not to allow prereleases in the returned iterator. If set to
|
| 591 |
+
``None`` (the default), it will be intelligently decide whether to allow
|
| 592 |
+
prereleases or not (based on the :attr:`prereleases` attribute, and
|
| 593 |
+
whether the only versions matching are prereleases).
|
| 594 |
+
|
| 595 |
+
This method is smarter than just ``filter(Specifier().contains, [...])``
|
| 596 |
+
because it implements the rule from :pep:`440` that a prerelease item
|
| 597 |
+
SHOULD be accepted if no other versions match the given specifier.
|
| 598 |
+
|
| 599 |
+
>>> list(Specifier(">=1.2.3").filter(["1.2", "1.3", "1.5a1"]))
|
| 600 |
+
['1.3']
|
| 601 |
+
>>> list(Specifier(">=1.2.3").filter(["1.2", "1.2.3", "1.3", Version("1.4")]))
|
| 602 |
+
['1.2.3', '1.3', <Version('1.4')>]
|
| 603 |
+
>>> list(Specifier(">=1.2.3").filter(["1.2", "1.5a1"]))
|
| 604 |
+
['1.5a1']
|
| 605 |
+
>>> list(Specifier(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True))
|
| 606 |
+
['1.3', '1.5a1']
|
| 607 |
+
>>> list(Specifier(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"]))
|
| 608 |
+
['1.3', '1.5a1']
|
| 609 |
+
"""
|
| 610 |
+
|
| 611 |
+
yielded = False
|
| 612 |
+
found_prereleases = []
|
| 613 |
+
|
| 614 |
+
kw = {"prereleases": prereleases if prereleases is not None else True}
|
| 615 |
+
|
| 616 |
+
# Attempt to iterate over all the values in the iterable and if any of
|
| 617 |
+
# them match, yield them.
|
| 618 |
+
for version in iterable:
|
| 619 |
+
parsed_version = _coerce_version(version)
|
| 620 |
+
|
| 621 |
+
if self.contains(parsed_version, **kw):
|
| 622 |
+
# If our version is a prerelease, and we were not set to allow
|
| 623 |
+
# prereleases, then we'll store it for later in case nothing
|
| 624 |
+
# else matches this specifier.
|
| 625 |
+
if parsed_version.is_prerelease and not (
|
| 626 |
+
prereleases or self.prereleases
|
| 627 |
+
):
|
| 628 |
+
found_prereleases.append(version)
|
| 629 |
+
# Either this is not a prerelease, or we should have been
|
| 630 |
+
# accepting prereleases from the beginning.
|
| 631 |
+
else:
|
| 632 |
+
yielded = True
|
| 633 |
+
yield version
|
| 634 |
+
|
| 635 |
+
# Now that we've iterated over everything, determine if we've yielded
|
| 636 |
+
# any values, and if we have not and we have any prereleases stored up
|
| 637 |
+
# then we will go ahead and yield the prereleases.
|
| 638 |
+
if not yielded and found_prereleases:
|
| 639 |
+
for version in found_prereleases:
|
| 640 |
+
yield version
|
| 641 |
+
|
| 642 |
+
|
| 643 |
+
_prefix_regex = re.compile(r"^([0-9]+)((?:a|b|c|rc)[0-9]+)$")
|
| 644 |
+
|
| 645 |
+
|
| 646 |
+
def _version_split(version: str) -> List[str]:
|
| 647 |
+
result: List[str] = []
|
| 648 |
+
for item in version.split("."):
|
| 649 |
+
match = _prefix_regex.search(item)
|
| 650 |
+
if match:
|
| 651 |
+
result.extend(match.groups())
|
| 652 |
+
else:
|
| 653 |
+
result.append(item)
|
| 654 |
+
return result
|
| 655 |
+
|
| 656 |
+
|
| 657 |
+
def _is_not_suffix(segment: str) -> bool:
|
| 658 |
+
return not any(
|
| 659 |
+
segment.startswith(prefix) for prefix in ("dev", "a", "b", "rc", "post")
|
| 660 |
+
)
|
| 661 |
+
|
| 662 |
+
|
| 663 |
+
def _pad_version(left: List[str], right: List[str]) -> Tuple[List[str], List[str]]:
|
| 664 |
+
left_split, right_split = [], []
|
| 665 |
+
|
| 666 |
+
# Get the release segment of our versions
|
| 667 |
+
left_split.append(list(itertools.takewhile(lambda x: x.isdigit(), left)))
|
| 668 |
+
right_split.append(list(itertools.takewhile(lambda x: x.isdigit(), right)))
|
| 669 |
+
|
| 670 |
+
# Get the rest of our versions
|
| 671 |
+
left_split.append(left[len(left_split[0]) :])
|
| 672 |
+
right_split.append(right[len(right_split[0]) :])
|
| 673 |
+
|
| 674 |
+
# Insert our padding
|
| 675 |
+
left_split.insert(1, ["0"] * max(0, len(right_split[0]) - len(left_split[0])))
|
| 676 |
+
right_split.insert(1, ["0"] * max(0, len(left_split[0]) - len(right_split[0])))
|
| 677 |
+
|
| 678 |
+
return (list(itertools.chain(*left_split)), list(itertools.chain(*right_split)))
|
| 679 |
+
|
| 680 |
+
|
| 681 |
+
class SpecifierSet(BaseSpecifier):
|
| 682 |
+
"""This class abstracts handling of a set of version specifiers.
|
| 683 |
+
|
| 684 |
+
It can be passed a single specifier (``>=3.0``), a comma-separated list of
|
| 685 |
+
specifiers (``>=3.0,!=3.1``), or no specifier at all.
|
| 686 |
+
"""
|
| 687 |
+
|
| 688 |
+
def __init__(
|
| 689 |
+
self, specifiers: str = "", prereleases: Optional[bool] = None
|
| 690 |
+
) -> None:
|
| 691 |
+
"""Initialize a SpecifierSet instance.
|
| 692 |
+
|
| 693 |
+
:param specifiers:
|
| 694 |
+
The string representation of a specifier or a comma-separated list of
|
| 695 |
+
specifiers which will be parsed and normalized before use.
|
| 696 |
+
:param prereleases:
|
| 697 |
+
This tells the SpecifierSet if it should accept prerelease versions if
|
| 698 |
+
applicable or not. The default of ``None`` will autodetect it from the
|
| 699 |
+
given specifiers.
|
| 700 |
+
|
| 701 |
+
:raises InvalidSpecifier:
|
| 702 |
+
If the given ``specifiers`` are not parseable than this exception will be
|
| 703 |
+
raised.
|
| 704 |
+
"""
|
| 705 |
+
|
| 706 |
+
# Split on `,` to break each individual specifier into it's own item, and
|
| 707 |
+
# strip each item to remove leading/trailing whitespace.
|
| 708 |
+
split_specifiers = [s.strip() for s in specifiers.split(",") if s.strip()]
|
| 709 |
+
|
| 710 |
+
# Parsed each individual specifier, attempting first to make it a
|
| 711 |
+
# Specifier.
|
| 712 |
+
parsed: Set[Specifier] = set()
|
| 713 |
+
for specifier in split_specifiers:
|
| 714 |
+
parsed.add(Specifier(specifier))
|
| 715 |
+
|
| 716 |
+
# Turn our parsed specifiers into a frozen set and save them for later.
|
| 717 |
+
self._specs = frozenset(parsed)
|
| 718 |
+
|
| 719 |
+
# Store our prereleases value so we can use it later to determine if
|
| 720 |
+
# we accept prereleases or not.
|
| 721 |
+
self._prereleases = prereleases
|
| 722 |
+
|
| 723 |
+
@property
|
| 724 |
+
def prereleases(self) -> Optional[bool]:
|
| 725 |
+
# If we have been given an explicit prerelease modifier, then we'll
|
| 726 |
+
# pass that through here.
|
| 727 |
+
if self._prereleases is not None:
|
| 728 |
+
return self._prereleases
|
| 729 |
+
|
| 730 |
+
# If we don't have any specifiers, and we don't have a forced value,
|
| 731 |
+
# then we'll just return None since we don't know if this should have
|
| 732 |
+
# pre-releases or not.
|
| 733 |
+
if not self._specs:
|
| 734 |
+
return None
|
| 735 |
+
|
| 736 |
+
# Otherwise we'll see if any of the given specifiers accept
|
| 737 |
+
# prereleases, if any of them do we'll return True, otherwise False.
|
| 738 |
+
return any(s.prereleases for s in self._specs)
|
| 739 |
+
|
| 740 |
+
@prereleases.setter
|
| 741 |
+
def prereleases(self, value: bool) -> None:
|
| 742 |
+
self._prereleases = value
|
| 743 |
+
|
| 744 |
+
def __repr__(self) -> str:
|
| 745 |
+
"""A representation of the specifier set that shows all internal state.
|
| 746 |
+
|
| 747 |
+
Note that the ordering of the individual specifiers within the set may not
|
| 748 |
+
match the input string.
|
| 749 |
+
|
| 750 |
+
>>> SpecifierSet('>=1.0.0,!=2.0.0')
|
| 751 |
+
<SpecifierSet('!=2.0.0,>=1.0.0')>
|
| 752 |
+
>>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=False)
|
| 753 |
+
<SpecifierSet('!=2.0.0,>=1.0.0', prereleases=False)>
|
| 754 |
+
>>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=True)
|
| 755 |
+
<SpecifierSet('!=2.0.0,>=1.0.0', prereleases=True)>
|
| 756 |
+
"""
|
| 757 |
+
pre = (
|
| 758 |
+
f", prereleases={self.prereleases!r}"
|
| 759 |
+
if self._prereleases is not None
|
| 760 |
+
else ""
|
| 761 |
+
)
|
| 762 |
+
|
| 763 |
+
return f"<SpecifierSet({str(self)!r}{pre})>"
|
| 764 |
+
|
| 765 |
+
def __str__(self) -> str:
|
| 766 |
+
"""A string representation of the specifier set that can be round-tripped.
|
| 767 |
+
|
| 768 |
+
Note that the ordering of the individual specifiers within the set may not
|
| 769 |
+
match the input string.
|
| 770 |
+
|
| 771 |
+
>>> str(SpecifierSet(">=1.0.0,!=1.0.1"))
|
| 772 |
+
'!=1.0.1,>=1.0.0'
|
| 773 |
+
>>> str(SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False))
|
| 774 |
+
'!=1.0.1,>=1.0.0'
|
| 775 |
+
"""
|
| 776 |
+
return ",".join(sorted(str(s) for s in self._specs))
|
| 777 |
+
|
| 778 |
+
def __hash__(self) -> int:
|
| 779 |
+
return hash(self._specs)
|
| 780 |
+
|
| 781 |
+
def __and__(self, other: Union["SpecifierSet", str]) -> "SpecifierSet":
|
| 782 |
+
"""Return a SpecifierSet which is a combination of the two sets.
|
| 783 |
+
|
| 784 |
+
:param other: The other object to combine with.
|
| 785 |
+
|
| 786 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1") & '<=2.0.0,!=2.0.1'
|
| 787 |
+
<SpecifierSet('!=1.0.1,!=2.0.1,<=2.0.0,>=1.0.0')>
|
| 788 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1") & SpecifierSet('<=2.0.0,!=2.0.1')
|
| 789 |
+
<SpecifierSet('!=1.0.1,!=2.0.1,<=2.0.0,>=1.0.0')>
|
| 790 |
+
"""
|
| 791 |
+
if isinstance(other, str):
|
| 792 |
+
other = SpecifierSet(other)
|
| 793 |
+
elif not isinstance(other, SpecifierSet):
|
| 794 |
+
return NotImplemented
|
| 795 |
+
|
| 796 |
+
specifier = SpecifierSet()
|
| 797 |
+
specifier._specs = frozenset(self._specs | other._specs)
|
| 798 |
+
|
| 799 |
+
if self._prereleases is None and other._prereleases is not None:
|
| 800 |
+
specifier._prereleases = other._prereleases
|
| 801 |
+
elif self._prereleases is not None and other._prereleases is None:
|
| 802 |
+
specifier._prereleases = self._prereleases
|
| 803 |
+
elif self._prereleases == other._prereleases:
|
| 804 |
+
specifier._prereleases = self._prereleases
|
| 805 |
+
else:
|
| 806 |
+
raise ValueError(
|
| 807 |
+
"Cannot combine SpecifierSets with True and False prerelease "
|
| 808 |
+
"overrides."
|
| 809 |
+
)
|
| 810 |
+
|
| 811 |
+
return specifier
|
| 812 |
+
|
| 813 |
+
def __eq__(self, other: object) -> bool:
|
| 814 |
+
"""Whether or not the two SpecifierSet-like objects are equal.
|
| 815 |
+
|
| 816 |
+
:param other: The other object to check against.
|
| 817 |
+
|
| 818 |
+
The value of :attr:`prereleases` is ignored.
|
| 819 |
+
|
| 820 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.1")
|
| 821 |
+
True
|
| 822 |
+
>>> (SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False) ==
|
| 823 |
+
... SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True))
|
| 824 |
+
True
|
| 825 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1") == ">=1.0.0,!=1.0.1"
|
| 826 |
+
True
|
| 827 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0")
|
| 828 |
+
False
|
| 829 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.2")
|
| 830 |
+
False
|
| 831 |
+
"""
|
| 832 |
+
if isinstance(other, (str, Specifier)):
|
| 833 |
+
other = SpecifierSet(str(other))
|
| 834 |
+
elif not isinstance(other, SpecifierSet):
|
| 835 |
+
return NotImplemented
|
| 836 |
+
|
| 837 |
+
return self._specs == other._specs
|
| 838 |
+
|
| 839 |
+
def __len__(self) -> int:
|
| 840 |
+
"""Returns the number of specifiers in this specifier set."""
|
| 841 |
+
return len(self._specs)
|
| 842 |
+
|
| 843 |
+
def __iter__(self) -> Iterator[Specifier]:
|
| 844 |
+
"""
|
| 845 |
+
Returns an iterator over all the underlying :class:`Specifier` instances
|
| 846 |
+
in this specifier set.
|
| 847 |
+
|
| 848 |
+
>>> sorted(SpecifierSet(">=1.0.0,!=1.0.1"), key=str)
|
| 849 |
+
[<Specifier('!=1.0.1')>, <Specifier('>=1.0.0')>]
|
| 850 |
+
"""
|
| 851 |
+
return iter(self._specs)
|
| 852 |
+
|
| 853 |
+
def __contains__(self, item: UnparsedVersion) -> bool:
|
| 854 |
+
"""Return whether or not the item is contained in this specifier.
|
| 855 |
+
|
| 856 |
+
:param item: The item to check for.
|
| 857 |
+
|
| 858 |
+
This is used for the ``in`` operator and behaves the same as
|
| 859 |
+
:meth:`contains` with no ``prereleases`` argument passed.
|
| 860 |
+
|
| 861 |
+
>>> "1.2.3" in SpecifierSet(">=1.0.0,!=1.0.1")
|
| 862 |
+
True
|
| 863 |
+
>>> Version("1.2.3") in SpecifierSet(">=1.0.0,!=1.0.1")
|
| 864 |
+
True
|
| 865 |
+
>>> "1.0.1" in SpecifierSet(">=1.0.0,!=1.0.1")
|
| 866 |
+
False
|
| 867 |
+
>>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1")
|
| 868 |
+
False
|
| 869 |
+
>>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True)
|
| 870 |
+
True
|
| 871 |
+
"""
|
| 872 |
+
return self.contains(item)
|
| 873 |
+
|
| 874 |
+
def contains(
|
| 875 |
+
self,
|
| 876 |
+
item: UnparsedVersion,
|
| 877 |
+
prereleases: Optional[bool] = None,
|
| 878 |
+
installed: Optional[bool] = None,
|
| 879 |
+
) -> bool:
|
| 880 |
+
"""Return whether or not the item is contained in this SpecifierSet.
|
| 881 |
+
|
| 882 |
+
:param item:
|
| 883 |
+
The item to check for, which can be a version string or a
|
| 884 |
+
:class:`Version` instance.
|
| 885 |
+
:param prereleases:
|
| 886 |
+
Whether or not to match prereleases with this SpecifierSet. If set to
|
| 887 |
+
``None`` (the default), it uses :attr:`prereleases` to determine
|
| 888 |
+
whether or not prereleases are allowed.
|
| 889 |
+
|
| 890 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.2.3")
|
| 891 |
+
True
|
| 892 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains(Version("1.2.3"))
|
| 893 |
+
True
|
| 894 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.0.1")
|
| 895 |
+
False
|
| 896 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1")
|
| 897 |
+
False
|
| 898 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True).contains("1.3.0a1")
|
| 899 |
+
True
|
| 900 |
+
>>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1", prereleases=True)
|
| 901 |
+
True
|
| 902 |
+
"""
|
| 903 |
+
# Ensure that our item is a Version instance.
|
| 904 |
+
if not isinstance(item, Version):
|
| 905 |
+
item = Version(item)
|
| 906 |
+
|
| 907 |
+
# Determine if we're forcing a prerelease or not, if we're not forcing
|
| 908 |
+
# one for this particular filter call, then we'll use whatever the
|
| 909 |
+
# SpecifierSet thinks for whether or not we should support prereleases.
|
| 910 |
+
if prereleases is None:
|
| 911 |
+
prereleases = self.prereleases
|
| 912 |
+
|
| 913 |
+
# We can determine if we're going to allow pre-releases by looking to
|
| 914 |
+
# see if any of the underlying items supports them. If none of them do
|
| 915 |
+
# and this item is a pre-release then we do not allow it and we can
|
| 916 |
+
# short circuit that here.
|
| 917 |
+
# Note: This means that 1.0.dev1 would not be contained in something
|
| 918 |
+
# like >=1.0.devabc however it would be in >=1.0.debabc,>0.0.dev0
|
| 919 |
+
if not prereleases and item.is_prerelease:
|
| 920 |
+
return False
|
| 921 |
+
|
| 922 |
+
if installed and item.is_prerelease:
|
| 923 |
+
item = Version(item.base_version)
|
| 924 |
+
|
| 925 |
+
# We simply dispatch to the underlying specs here to make sure that the
|
| 926 |
+
# given version is contained within all of them.
|
| 927 |
+
# Note: This use of all() here means that an empty set of specifiers
|
| 928 |
+
# will always return True, this is an explicit design decision.
|
| 929 |
+
return all(s.contains(item, prereleases=prereleases) for s in self._specs)
|
| 930 |
+
|
| 931 |
+
def filter(
|
| 932 |
+
self, iterable: Iterable[UnparsedVersionVar], prereleases: Optional[bool] = None
|
| 933 |
+
) -> Iterator[UnparsedVersionVar]:
|
| 934 |
+
"""Filter items in the given iterable, that match the specifiers in this set.
|
| 935 |
+
|
| 936 |
+
:param iterable:
|
| 937 |
+
An iterable that can contain version strings and :class:`Version` instances.
|
| 938 |
+
The items in the iterable will be filtered according to the specifier.
|
| 939 |
+
:param prereleases:
|
| 940 |
+
Whether or not to allow prereleases in the returned iterator. If set to
|
| 941 |
+
``None`` (the default), it will be intelligently decide whether to allow
|
| 942 |
+
prereleases or not (based on the :attr:`prereleases` attribute, and
|
| 943 |
+
whether the only versions matching are prereleases).
|
| 944 |
+
|
| 945 |
+
This method is smarter than just ``filter(SpecifierSet(...).contains, [...])``
|
| 946 |
+
because it implements the rule from :pep:`440` that a prerelease item
|
| 947 |
+
SHOULD be accepted if no other versions match the given specifier.
|
| 948 |
+
|
| 949 |
+
>>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", "1.5a1"]))
|
| 950 |
+
['1.3']
|
| 951 |
+
>>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", Version("1.4")]))
|
| 952 |
+
['1.3', <Version('1.4')>]
|
| 953 |
+
>>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.5a1"]))
|
| 954 |
+
[]
|
| 955 |
+
>>> list(SpecifierSet(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True))
|
| 956 |
+
['1.3', '1.5a1']
|
| 957 |
+
>>> list(SpecifierSet(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"]))
|
| 958 |
+
['1.3', '1.5a1']
|
| 959 |
+
|
| 960 |
+
An "empty" SpecifierSet will filter items based on the presence of prerelease
|
| 961 |
+
versions in the set.
|
| 962 |
+
|
| 963 |
+
>>> list(SpecifierSet("").filter(["1.3", "1.5a1"]))
|
| 964 |
+
['1.3']
|
| 965 |
+
>>> list(SpecifierSet("").filter(["1.5a1"]))
|
| 966 |
+
['1.5a1']
|
| 967 |
+
>>> list(SpecifierSet("", prereleases=True).filter(["1.3", "1.5a1"]))
|
| 968 |
+
['1.3', '1.5a1']
|
| 969 |
+
>>> list(SpecifierSet("").filter(["1.3", "1.5a1"], prereleases=True))
|
| 970 |
+
['1.3', '1.5a1']
|
| 971 |
+
"""
|
| 972 |
+
# Determine if we're forcing a prerelease or not, if we're not forcing
|
| 973 |
+
# one for this particular filter call, then we'll use whatever the
|
| 974 |
+
# SpecifierSet thinks for whether or not we should support prereleases.
|
| 975 |
+
if prereleases is None:
|
| 976 |
+
prereleases = self.prereleases
|
| 977 |
+
|
| 978 |
+
# If we have any specifiers, then we want to wrap our iterable in the
|
| 979 |
+
# filter method for each one, this will act as a logical AND amongst
|
| 980 |
+
# each specifier.
|
| 981 |
+
if self._specs:
|
| 982 |
+
for spec in self._specs:
|
| 983 |
+
iterable = spec.filter(iterable, prereleases=bool(prereleases))
|
| 984 |
+
return iter(iterable)
|
| 985 |
+
# If we do not have any specifiers, then we need to have a rough filter
|
| 986 |
+
# which will filter out any pre-releases, unless there are no final
|
| 987 |
+
# releases.
|
| 988 |
+
else:
|
| 989 |
+
filtered: List[UnparsedVersionVar] = []
|
| 990 |
+
found_prereleases: List[UnparsedVersionVar] = []
|
| 991 |
+
|
| 992 |
+
for item in iterable:
|
| 993 |
+
parsed_version = _coerce_version(item)
|
| 994 |
+
|
| 995 |
+
# Store any item which is a pre-release for later unless we've
|
| 996 |
+
# already found a final version or we are accepting prereleases
|
| 997 |
+
if parsed_version.is_prerelease and not prereleases:
|
| 998 |
+
if not filtered:
|
| 999 |
+
found_prereleases.append(item)
|
| 1000 |
+
else:
|
| 1001 |
+
filtered.append(item)
|
| 1002 |
+
|
| 1003 |
+
# If we've found no items except for pre-releases, then we'll go
|
| 1004 |
+
# ahead and use the pre-releases
|
| 1005 |
+
if not filtered and found_prereleases and prereleases is None:
|
| 1006 |
+
return iter(found_prereleases)
|
| 1007 |
+
|
| 1008 |
+
return iter(filtered)
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/tags.py
ADDED
|
@@ -0,0 +1,553 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is dual licensed under the terms of the Apache License, Version
|
| 2 |
+
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
| 3 |
+
# for complete details.
|
| 4 |
+
|
| 5 |
+
import logging
|
| 6 |
+
import platform
|
| 7 |
+
import struct
|
| 8 |
+
import subprocess
|
| 9 |
+
import sys
|
| 10 |
+
import sysconfig
|
| 11 |
+
from importlib.machinery import EXTENSION_SUFFIXES
|
| 12 |
+
from typing import (
|
| 13 |
+
Dict,
|
| 14 |
+
FrozenSet,
|
| 15 |
+
Iterable,
|
| 16 |
+
Iterator,
|
| 17 |
+
List,
|
| 18 |
+
Optional,
|
| 19 |
+
Sequence,
|
| 20 |
+
Tuple,
|
| 21 |
+
Union,
|
| 22 |
+
cast,
|
| 23 |
+
)
|
| 24 |
+
|
| 25 |
+
from . import _manylinux, _musllinux
|
| 26 |
+
|
| 27 |
+
logger = logging.getLogger(__name__)
|
| 28 |
+
|
| 29 |
+
PythonVersion = Sequence[int]
|
| 30 |
+
MacVersion = Tuple[int, int]
|
| 31 |
+
|
| 32 |
+
INTERPRETER_SHORT_NAMES: Dict[str, str] = {
|
| 33 |
+
"python": "py", # Generic.
|
| 34 |
+
"cpython": "cp",
|
| 35 |
+
"pypy": "pp",
|
| 36 |
+
"ironpython": "ip",
|
| 37 |
+
"jython": "jy",
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
_32_BIT_INTERPRETER = struct.calcsize("P") == 4
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
class Tag:
|
| 45 |
+
"""
|
| 46 |
+
A representation of the tag triple for a wheel.
|
| 47 |
+
|
| 48 |
+
Instances are considered immutable and thus are hashable. Equality checking
|
| 49 |
+
is also supported.
|
| 50 |
+
"""
|
| 51 |
+
|
| 52 |
+
__slots__ = ["_interpreter", "_abi", "_platform", "_hash"]
|
| 53 |
+
|
| 54 |
+
def __init__(self, interpreter: str, abi: str, platform: str) -> None:
|
| 55 |
+
self._interpreter = interpreter.lower()
|
| 56 |
+
self._abi = abi.lower()
|
| 57 |
+
self._platform = platform.lower()
|
| 58 |
+
# The __hash__ of every single element in a Set[Tag] will be evaluated each time
|
| 59 |
+
# that a set calls its `.disjoint()` method, which may be called hundreds of
|
| 60 |
+
# times when scanning a page of links for packages with tags matching that
|
| 61 |
+
# Set[Tag]. Pre-computing the value here produces significant speedups for
|
| 62 |
+
# downstream consumers.
|
| 63 |
+
self._hash = hash((self._interpreter, self._abi, self._platform))
|
| 64 |
+
|
| 65 |
+
@property
|
| 66 |
+
def interpreter(self) -> str:
|
| 67 |
+
return self._interpreter
|
| 68 |
+
|
| 69 |
+
@property
|
| 70 |
+
def abi(self) -> str:
|
| 71 |
+
return self._abi
|
| 72 |
+
|
| 73 |
+
@property
|
| 74 |
+
def platform(self) -> str:
|
| 75 |
+
return self._platform
|
| 76 |
+
|
| 77 |
+
def __eq__(self, other: object) -> bool:
|
| 78 |
+
if not isinstance(other, Tag):
|
| 79 |
+
return NotImplemented
|
| 80 |
+
|
| 81 |
+
return (
|
| 82 |
+
(self._hash == other._hash) # Short-circuit ASAP for perf reasons.
|
| 83 |
+
and (self._platform == other._platform)
|
| 84 |
+
and (self._abi == other._abi)
|
| 85 |
+
and (self._interpreter == other._interpreter)
|
| 86 |
+
)
|
| 87 |
+
|
| 88 |
+
def __hash__(self) -> int:
|
| 89 |
+
return self._hash
|
| 90 |
+
|
| 91 |
+
def __str__(self) -> str:
|
| 92 |
+
return f"{self._interpreter}-{self._abi}-{self._platform}"
|
| 93 |
+
|
| 94 |
+
def __repr__(self) -> str:
|
| 95 |
+
return f"<{self} @ {id(self)}>"
|
| 96 |
+
|
| 97 |
+
|
| 98 |
+
def parse_tag(tag: str) -> FrozenSet[Tag]:
|
| 99 |
+
"""
|
| 100 |
+
Parses the provided tag (e.g. `py3-none-any`) into a frozenset of Tag instances.
|
| 101 |
+
|
| 102 |
+
Returning a set is required due to the possibility that the tag is a
|
| 103 |
+
compressed tag set.
|
| 104 |
+
"""
|
| 105 |
+
tags = set()
|
| 106 |
+
interpreters, abis, platforms = tag.split("-")
|
| 107 |
+
for interpreter in interpreters.split("."):
|
| 108 |
+
for abi in abis.split("."):
|
| 109 |
+
for platform_ in platforms.split("."):
|
| 110 |
+
tags.add(Tag(interpreter, abi, platform_))
|
| 111 |
+
return frozenset(tags)
|
| 112 |
+
|
| 113 |
+
|
| 114 |
+
def _get_config_var(name: str, warn: bool = False) -> Union[int, str, None]:
|
| 115 |
+
value: Union[int, str, None] = sysconfig.get_config_var(name)
|
| 116 |
+
if value is None and warn:
|
| 117 |
+
logger.debug(
|
| 118 |
+
"Config variable '%s' is unset, Python ABI tag may be incorrect", name
|
| 119 |
+
)
|
| 120 |
+
return value
|
| 121 |
+
|
| 122 |
+
|
| 123 |
+
def _normalize_string(string: str) -> str:
|
| 124 |
+
return string.replace(".", "_").replace("-", "_").replace(" ", "_")
|
| 125 |
+
|
| 126 |
+
|
| 127 |
+
def _abi3_applies(python_version: PythonVersion) -> bool:
|
| 128 |
+
"""
|
| 129 |
+
Determine if the Python version supports abi3.
|
| 130 |
+
|
| 131 |
+
PEP 384 was first implemented in Python 3.2.
|
| 132 |
+
"""
|
| 133 |
+
return len(python_version) > 1 and tuple(python_version) >= (3, 2)
|
| 134 |
+
|
| 135 |
+
|
| 136 |
+
def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]:
|
| 137 |
+
py_version = tuple(py_version) # To allow for version comparison.
|
| 138 |
+
abis = []
|
| 139 |
+
version = _version_nodot(py_version[:2])
|
| 140 |
+
debug = pymalloc = ucs4 = ""
|
| 141 |
+
with_debug = _get_config_var("Py_DEBUG", warn)
|
| 142 |
+
has_refcount = hasattr(sys, "gettotalrefcount")
|
| 143 |
+
# Windows doesn't set Py_DEBUG, so checking for support of debug-compiled
|
| 144 |
+
# extension modules is the best option.
|
| 145 |
+
# https://github.com/pypa/pip/issues/3383#issuecomment-173267692
|
| 146 |
+
has_ext = "_d.pyd" in EXTENSION_SUFFIXES
|
| 147 |
+
if with_debug or (with_debug is None and (has_refcount or has_ext)):
|
| 148 |
+
debug = "d"
|
| 149 |
+
if py_version < (3, 8):
|
| 150 |
+
with_pymalloc = _get_config_var("WITH_PYMALLOC", warn)
|
| 151 |
+
if with_pymalloc or with_pymalloc is None:
|
| 152 |
+
pymalloc = "m"
|
| 153 |
+
if py_version < (3, 3):
|
| 154 |
+
unicode_size = _get_config_var("Py_UNICODE_SIZE", warn)
|
| 155 |
+
if unicode_size == 4 or (
|
| 156 |
+
unicode_size is None and sys.maxunicode == 0x10FFFF
|
| 157 |
+
):
|
| 158 |
+
ucs4 = "u"
|
| 159 |
+
elif debug:
|
| 160 |
+
# Debug builds can also load "normal" extension modules.
|
| 161 |
+
# We can also assume no UCS-4 or pymalloc requirement.
|
| 162 |
+
abis.append(f"cp{version}")
|
| 163 |
+
abis.insert(
|
| 164 |
+
0,
|
| 165 |
+
"cp{version}{debug}{pymalloc}{ucs4}".format(
|
| 166 |
+
version=version, debug=debug, pymalloc=pymalloc, ucs4=ucs4
|
| 167 |
+
),
|
| 168 |
+
)
|
| 169 |
+
return abis
|
| 170 |
+
|
| 171 |
+
|
| 172 |
+
def cpython_tags(
|
| 173 |
+
python_version: Optional[PythonVersion] = None,
|
| 174 |
+
abis: Optional[Iterable[str]] = None,
|
| 175 |
+
platforms: Optional[Iterable[str]] = None,
|
| 176 |
+
*,
|
| 177 |
+
warn: bool = False,
|
| 178 |
+
) -> Iterator[Tag]:
|
| 179 |
+
"""
|
| 180 |
+
Yields the tags for a CPython interpreter.
|
| 181 |
+
|
| 182 |
+
The tags consist of:
|
| 183 |
+
- cp<python_version>-<abi>-<platform>
|
| 184 |
+
- cp<python_version>-abi3-<platform>
|
| 185 |
+
- cp<python_version>-none-<platform>
|
| 186 |
+
- cp<less than python_version>-abi3-<platform> # Older Python versions down to 3.2.
|
| 187 |
+
|
| 188 |
+
If python_version only specifies a major version then user-provided ABIs and
|
| 189 |
+
the 'none' ABItag will be used.
|
| 190 |
+
|
| 191 |
+
If 'abi3' or 'none' are specified in 'abis' then they will be yielded at
|
| 192 |
+
their normal position and not at the beginning.
|
| 193 |
+
"""
|
| 194 |
+
if not python_version:
|
| 195 |
+
python_version = sys.version_info[:2]
|
| 196 |
+
|
| 197 |
+
interpreter = f"cp{_version_nodot(python_version[:2])}"
|
| 198 |
+
|
| 199 |
+
if abis is None:
|
| 200 |
+
if len(python_version) > 1:
|
| 201 |
+
abis = _cpython_abis(python_version, warn)
|
| 202 |
+
else:
|
| 203 |
+
abis = []
|
| 204 |
+
abis = list(abis)
|
| 205 |
+
# 'abi3' and 'none' are explicitly handled later.
|
| 206 |
+
for explicit_abi in ("abi3", "none"):
|
| 207 |
+
try:
|
| 208 |
+
abis.remove(explicit_abi)
|
| 209 |
+
except ValueError:
|
| 210 |
+
pass
|
| 211 |
+
|
| 212 |
+
platforms = list(platforms or platform_tags())
|
| 213 |
+
for abi in abis:
|
| 214 |
+
for platform_ in platforms:
|
| 215 |
+
yield Tag(interpreter, abi, platform_)
|
| 216 |
+
if _abi3_applies(python_version):
|
| 217 |
+
yield from (Tag(interpreter, "abi3", platform_) for platform_ in platforms)
|
| 218 |
+
yield from (Tag(interpreter, "none", platform_) for platform_ in platforms)
|
| 219 |
+
|
| 220 |
+
if _abi3_applies(python_version):
|
| 221 |
+
for minor_version in range(python_version[1] - 1, 1, -1):
|
| 222 |
+
for platform_ in platforms:
|
| 223 |
+
interpreter = "cp{version}".format(
|
| 224 |
+
version=_version_nodot((python_version[0], minor_version))
|
| 225 |
+
)
|
| 226 |
+
yield Tag(interpreter, "abi3", platform_)
|
| 227 |
+
|
| 228 |
+
|
| 229 |
+
def _generic_abi() -> List[str]:
|
| 230 |
+
"""
|
| 231 |
+
Return the ABI tag based on EXT_SUFFIX.
|
| 232 |
+
"""
|
| 233 |
+
# The following are examples of `EXT_SUFFIX`.
|
| 234 |
+
# We want to keep the parts which are related to the ABI and remove the
|
| 235 |
+
# parts which are related to the platform:
|
| 236 |
+
# - linux: '.cpython-310-x86_64-linux-gnu.so' => cp310
|
| 237 |
+
# - mac: '.cpython-310-darwin.so' => cp310
|
| 238 |
+
# - win: '.cp310-win_amd64.pyd' => cp310
|
| 239 |
+
# - win: '.pyd' => cp37 (uses _cpython_abis())
|
| 240 |
+
# - pypy: '.pypy38-pp73-x86_64-linux-gnu.so' => pypy38_pp73
|
| 241 |
+
# - graalpy: '.graalpy-38-native-x86_64-darwin.dylib'
|
| 242 |
+
# => graalpy_38_native
|
| 243 |
+
|
| 244 |
+
ext_suffix = _get_config_var("EXT_SUFFIX", warn=True)
|
| 245 |
+
if not isinstance(ext_suffix, str) or ext_suffix[0] != ".":
|
| 246 |
+
raise SystemError("invalid sysconfig.get_config_var('EXT_SUFFIX')")
|
| 247 |
+
parts = ext_suffix.split(".")
|
| 248 |
+
if len(parts) < 3:
|
| 249 |
+
# CPython3.7 and earlier uses ".pyd" on Windows.
|
| 250 |
+
return _cpython_abis(sys.version_info[:2])
|
| 251 |
+
soabi = parts[1]
|
| 252 |
+
if soabi.startswith("cpython"):
|
| 253 |
+
# non-windows
|
| 254 |
+
abi = "cp" + soabi.split("-")[1]
|
| 255 |
+
elif soabi.startswith("cp"):
|
| 256 |
+
# windows
|
| 257 |
+
abi = soabi.split("-")[0]
|
| 258 |
+
elif soabi.startswith("pypy"):
|
| 259 |
+
abi = "-".join(soabi.split("-")[:2])
|
| 260 |
+
elif soabi.startswith("graalpy"):
|
| 261 |
+
abi = "-".join(soabi.split("-")[:3])
|
| 262 |
+
elif soabi:
|
| 263 |
+
# pyston, ironpython, others?
|
| 264 |
+
abi = soabi
|
| 265 |
+
else:
|
| 266 |
+
return []
|
| 267 |
+
return [_normalize_string(abi)]
|
| 268 |
+
|
| 269 |
+
|
| 270 |
+
def generic_tags(
|
| 271 |
+
interpreter: Optional[str] = None,
|
| 272 |
+
abis: Optional[Iterable[str]] = None,
|
| 273 |
+
platforms: Optional[Iterable[str]] = None,
|
| 274 |
+
*,
|
| 275 |
+
warn: bool = False,
|
| 276 |
+
) -> Iterator[Tag]:
|
| 277 |
+
"""
|
| 278 |
+
Yields the tags for a generic interpreter.
|
| 279 |
+
|
| 280 |
+
The tags consist of:
|
| 281 |
+
- <interpreter>-<abi>-<platform>
|
| 282 |
+
|
| 283 |
+
The "none" ABI will be added if it was not explicitly provided.
|
| 284 |
+
"""
|
| 285 |
+
if not interpreter:
|
| 286 |
+
interp_name = interpreter_name()
|
| 287 |
+
interp_version = interpreter_version(warn=warn)
|
| 288 |
+
interpreter = "".join([interp_name, interp_version])
|
| 289 |
+
if abis is None:
|
| 290 |
+
abis = _generic_abi()
|
| 291 |
+
else:
|
| 292 |
+
abis = list(abis)
|
| 293 |
+
platforms = list(platforms or platform_tags())
|
| 294 |
+
if "none" not in abis:
|
| 295 |
+
abis.append("none")
|
| 296 |
+
for abi in abis:
|
| 297 |
+
for platform_ in platforms:
|
| 298 |
+
yield Tag(interpreter, abi, platform_)
|
| 299 |
+
|
| 300 |
+
|
| 301 |
+
def _py_interpreter_range(py_version: PythonVersion) -> Iterator[str]:
|
| 302 |
+
"""
|
| 303 |
+
Yields Python versions in descending order.
|
| 304 |
+
|
| 305 |
+
After the latest version, the major-only version will be yielded, and then
|
| 306 |
+
all previous versions of that major version.
|
| 307 |
+
"""
|
| 308 |
+
if len(py_version) > 1:
|
| 309 |
+
yield f"py{_version_nodot(py_version[:2])}"
|
| 310 |
+
yield f"py{py_version[0]}"
|
| 311 |
+
if len(py_version) > 1:
|
| 312 |
+
for minor in range(py_version[1] - 1, -1, -1):
|
| 313 |
+
yield f"py{_version_nodot((py_version[0], minor))}"
|
| 314 |
+
|
| 315 |
+
|
| 316 |
+
def compatible_tags(
|
| 317 |
+
python_version: Optional[PythonVersion] = None,
|
| 318 |
+
interpreter: Optional[str] = None,
|
| 319 |
+
platforms: Optional[Iterable[str]] = None,
|
| 320 |
+
) -> Iterator[Tag]:
|
| 321 |
+
"""
|
| 322 |
+
Yields the sequence of tags that are compatible with a specific version of Python.
|
| 323 |
+
|
| 324 |
+
The tags consist of:
|
| 325 |
+
- py*-none-<platform>
|
| 326 |
+
- <interpreter>-none-any # ... if `interpreter` is provided.
|
| 327 |
+
- py*-none-any
|
| 328 |
+
"""
|
| 329 |
+
if not python_version:
|
| 330 |
+
python_version = sys.version_info[:2]
|
| 331 |
+
platforms = list(platforms or platform_tags())
|
| 332 |
+
for version in _py_interpreter_range(python_version):
|
| 333 |
+
for platform_ in platforms:
|
| 334 |
+
yield Tag(version, "none", platform_)
|
| 335 |
+
if interpreter:
|
| 336 |
+
yield Tag(interpreter, "none", "any")
|
| 337 |
+
for version in _py_interpreter_range(python_version):
|
| 338 |
+
yield Tag(version, "none", "any")
|
| 339 |
+
|
| 340 |
+
|
| 341 |
+
def _mac_arch(arch: str, is_32bit: bool = _32_BIT_INTERPRETER) -> str:
|
| 342 |
+
if not is_32bit:
|
| 343 |
+
return arch
|
| 344 |
+
|
| 345 |
+
if arch.startswith("ppc"):
|
| 346 |
+
return "ppc"
|
| 347 |
+
|
| 348 |
+
return "i386"
|
| 349 |
+
|
| 350 |
+
|
| 351 |
+
def _mac_binary_formats(version: MacVersion, cpu_arch: str) -> List[str]:
|
| 352 |
+
formats = [cpu_arch]
|
| 353 |
+
if cpu_arch == "x86_64":
|
| 354 |
+
if version < (10, 4):
|
| 355 |
+
return []
|
| 356 |
+
formats.extend(["intel", "fat64", "fat32"])
|
| 357 |
+
|
| 358 |
+
elif cpu_arch == "i386":
|
| 359 |
+
if version < (10, 4):
|
| 360 |
+
return []
|
| 361 |
+
formats.extend(["intel", "fat32", "fat"])
|
| 362 |
+
|
| 363 |
+
elif cpu_arch == "ppc64":
|
| 364 |
+
# TODO: Need to care about 32-bit PPC for ppc64 through 10.2?
|
| 365 |
+
if version > (10, 5) or version < (10, 4):
|
| 366 |
+
return []
|
| 367 |
+
formats.append("fat64")
|
| 368 |
+
|
| 369 |
+
elif cpu_arch == "ppc":
|
| 370 |
+
if version > (10, 6):
|
| 371 |
+
return []
|
| 372 |
+
formats.extend(["fat32", "fat"])
|
| 373 |
+
|
| 374 |
+
if cpu_arch in {"arm64", "x86_64"}:
|
| 375 |
+
formats.append("universal2")
|
| 376 |
+
|
| 377 |
+
if cpu_arch in {"x86_64", "i386", "ppc64", "ppc", "intel"}:
|
| 378 |
+
formats.append("universal")
|
| 379 |
+
|
| 380 |
+
return formats
|
| 381 |
+
|
| 382 |
+
|
| 383 |
+
def mac_platforms(
|
| 384 |
+
version: Optional[MacVersion] = None, arch: Optional[str] = None
|
| 385 |
+
) -> Iterator[str]:
|
| 386 |
+
"""
|
| 387 |
+
Yields the platform tags for a macOS system.
|
| 388 |
+
|
| 389 |
+
The `version` parameter is a two-item tuple specifying the macOS version to
|
| 390 |
+
generate platform tags for. The `arch` parameter is the CPU architecture to
|
| 391 |
+
generate platform tags for. Both parameters default to the appropriate value
|
| 392 |
+
for the current system.
|
| 393 |
+
"""
|
| 394 |
+
version_str, _, cpu_arch = platform.mac_ver()
|
| 395 |
+
if version is None:
|
| 396 |
+
version = cast("MacVersion", tuple(map(int, version_str.split(".")[:2])))
|
| 397 |
+
if version == (10, 16):
|
| 398 |
+
# When built against an older macOS SDK, Python will report macOS 10.16
|
| 399 |
+
# instead of the real version.
|
| 400 |
+
version_str = subprocess.run(
|
| 401 |
+
[
|
| 402 |
+
sys.executable,
|
| 403 |
+
"-sS",
|
| 404 |
+
"-c",
|
| 405 |
+
"import platform; print(platform.mac_ver()[0])",
|
| 406 |
+
],
|
| 407 |
+
check=True,
|
| 408 |
+
env={"SYSTEM_VERSION_COMPAT": "0"},
|
| 409 |
+
stdout=subprocess.PIPE,
|
| 410 |
+
text=True,
|
| 411 |
+
).stdout
|
| 412 |
+
version = cast("MacVersion", tuple(map(int, version_str.split(".")[:2])))
|
| 413 |
+
else:
|
| 414 |
+
version = version
|
| 415 |
+
if arch is None:
|
| 416 |
+
arch = _mac_arch(cpu_arch)
|
| 417 |
+
else:
|
| 418 |
+
arch = arch
|
| 419 |
+
|
| 420 |
+
if (10, 0) <= version and version < (11, 0):
|
| 421 |
+
# Prior to Mac OS 11, each yearly release of Mac OS bumped the
|
| 422 |
+
# "minor" version number. The major version was always 10.
|
| 423 |
+
for minor_version in range(version[1], -1, -1):
|
| 424 |
+
compat_version = 10, minor_version
|
| 425 |
+
binary_formats = _mac_binary_formats(compat_version, arch)
|
| 426 |
+
for binary_format in binary_formats:
|
| 427 |
+
yield "macosx_{major}_{minor}_{binary_format}".format(
|
| 428 |
+
major=10, minor=minor_version, binary_format=binary_format
|
| 429 |
+
)
|
| 430 |
+
|
| 431 |
+
if version >= (11, 0):
|
| 432 |
+
# Starting with Mac OS 11, each yearly release bumps the major version
|
| 433 |
+
# number. The minor versions are now the midyear updates.
|
| 434 |
+
for major_version in range(version[0], 10, -1):
|
| 435 |
+
compat_version = major_version, 0
|
| 436 |
+
binary_formats = _mac_binary_formats(compat_version, arch)
|
| 437 |
+
for binary_format in binary_formats:
|
| 438 |
+
yield "macosx_{major}_{minor}_{binary_format}".format(
|
| 439 |
+
major=major_version, minor=0, binary_format=binary_format
|
| 440 |
+
)
|
| 441 |
+
|
| 442 |
+
if version >= (11, 0):
|
| 443 |
+
# Mac OS 11 on x86_64 is compatible with binaries from previous releases.
|
| 444 |
+
# Arm64 support was introduced in 11.0, so no Arm binaries from previous
|
| 445 |
+
# releases exist.
|
| 446 |
+
#
|
| 447 |
+
# However, the "universal2" binary format can have a
|
| 448 |
+
# macOS version earlier than 11.0 when the x86_64 part of the binary supports
|
| 449 |
+
# that version of macOS.
|
| 450 |
+
if arch == "x86_64":
|
| 451 |
+
for minor_version in range(16, 3, -1):
|
| 452 |
+
compat_version = 10, minor_version
|
| 453 |
+
binary_formats = _mac_binary_formats(compat_version, arch)
|
| 454 |
+
for binary_format in binary_formats:
|
| 455 |
+
yield "macosx_{major}_{minor}_{binary_format}".format(
|
| 456 |
+
major=compat_version[0],
|
| 457 |
+
minor=compat_version[1],
|
| 458 |
+
binary_format=binary_format,
|
| 459 |
+
)
|
| 460 |
+
else:
|
| 461 |
+
for minor_version in range(16, 3, -1):
|
| 462 |
+
compat_version = 10, minor_version
|
| 463 |
+
binary_format = "universal2"
|
| 464 |
+
yield "macosx_{major}_{minor}_{binary_format}".format(
|
| 465 |
+
major=compat_version[0],
|
| 466 |
+
minor=compat_version[1],
|
| 467 |
+
binary_format=binary_format,
|
| 468 |
+
)
|
| 469 |
+
|
| 470 |
+
|
| 471 |
+
def _linux_platforms(is_32bit: bool = _32_BIT_INTERPRETER) -> Iterator[str]:
|
| 472 |
+
linux = _normalize_string(sysconfig.get_platform())
|
| 473 |
+
if not linux.startswith("linux_"):
|
| 474 |
+
# we should never be here, just yield the sysconfig one and return
|
| 475 |
+
yield linux
|
| 476 |
+
return
|
| 477 |
+
if is_32bit:
|
| 478 |
+
if linux == "linux_x86_64":
|
| 479 |
+
linux = "linux_i686"
|
| 480 |
+
elif linux == "linux_aarch64":
|
| 481 |
+
linux = "linux_armv8l"
|
| 482 |
+
_, arch = linux.split("_", 1)
|
| 483 |
+
archs = {"armv8l": ["armv8l", "armv7l"]}.get(arch, [arch])
|
| 484 |
+
yield from _manylinux.platform_tags(archs)
|
| 485 |
+
yield from _musllinux.platform_tags(archs)
|
| 486 |
+
for arch in archs:
|
| 487 |
+
yield f"linux_{arch}"
|
| 488 |
+
|
| 489 |
+
|
| 490 |
+
def _generic_platforms() -> Iterator[str]:
|
| 491 |
+
yield _normalize_string(sysconfig.get_platform())
|
| 492 |
+
|
| 493 |
+
|
| 494 |
+
def platform_tags() -> Iterator[str]:
|
| 495 |
+
"""
|
| 496 |
+
Provides the platform tags for this installation.
|
| 497 |
+
"""
|
| 498 |
+
if platform.system() == "Darwin":
|
| 499 |
+
return mac_platforms()
|
| 500 |
+
elif platform.system() == "Linux":
|
| 501 |
+
return _linux_platforms()
|
| 502 |
+
else:
|
| 503 |
+
return _generic_platforms()
|
| 504 |
+
|
| 505 |
+
|
| 506 |
+
def interpreter_name() -> str:
|
| 507 |
+
"""
|
| 508 |
+
Returns the name of the running interpreter.
|
| 509 |
+
|
| 510 |
+
Some implementations have a reserved, two-letter abbreviation which will
|
| 511 |
+
be returned when appropriate.
|
| 512 |
+
"""
|
| 513 |
+
name = sys.implementation.name
|
| 514 |
+
return INTERPRETER_SHORT_NAMES.get(name) or name
|
| 515 |
+
|
| 516 |
+
|
| 517 |
+
def interpreter_version(*, warn: bool = False) -> str:
|
| 518 |
+
"""
|
| 519 |
+
Returns the version of the running interpreter.
|
| 520 |
+
"""
|
| 521 |
+
version = _get_config_var("py_version_nodot", warn=warn)
|
| 522 |
+
if version:
|
| 523 |
+
version = str(version)
|
| 524 |
+
else:
|
| 525 |
+
version = _version_nodot(sys.version_info[:2])
|
| 526 |
+
return version
|
| 527 |
+
|
| 528 |
+
|
| 529 |
+
def _version_nodot(version: PythonVersion) -> str:
|
| 530 |
+
return "".join(map(str, version))
|
| 531 |
+
|
| 532 |
+
|
| 533 |
+
def sys_tags(*, warn: bool = False) -> Iterator[Tag]:
|
| 534 |
+
"""
|
| 535 |
+
Returns the sequence of tag triples for the running interpreter.
|
| 536 |
+
|
| 537 |
+
The order of the sequence corresponds to priority order for the
|
| 538 |
+
interpreter, from most to least important.
|
| 539 |
+
"""
|
| 540 |
+
|
| 541 |
+
interp_name = interpreter_name()
|
| 542 |
+
if interp_name == "cp":
|
| 543 |
+
yield from cpython_tags(warn=warn)
|
| 544 |
+
else:
|
| 545 |
+
yield from generic_tags()
|
| 546 |
+
|
| 547 |
+
if interp_name == "pp":
|
| 548 |
+
interp = "pp3"
|
| 549 |
+
elif interp_name == "cp":
|
| 550 |
+
interp = "cp" + interpreter_version(warn=warn)
|
| 551 |
+
else:
|
| 552 |
+
interp = None
|
| 553 |
+
yield from compatible_tags(interpreter=interp)
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/utils.py
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is dual licensed under the terms of the Apache License, Version
|
| 2 |
+
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
| 3 |
+
# for complete details.
|
| 4 |
+
|
| 5 |
+
import re
|
| 6 |
+
from typing import FrozenSet, NewType, Tuple, Union, cast
|
| 7 |
+
|
| 8 |
+
from .tags import Tag, parse_tag
|
| 9 |
+
from .version import InvalidVersion, Version
|
| 10 |
+
|
| 11 |
+
BuildTag = Union[Tuple[()], Tuple[int, str]]
|
| 12 |
+
NormalizedName = NewType("NormalizedName", str)
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
class InvalidName(ValueError):
|
| 16 |
+
"""
|
| 17 |
+
An invalid distribution name; users should refer to the packaging user guide.
|
| 18 |
+
"""
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
class InvalidWheelFilename(ValueError):
|
| 22 |
+
"""
|
| 23 |
+
An invalid wheel filename was found, users should refer to PEP 427.
|
| 24 |
+
"""
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
class InvalidSdistFilename(ValueError):
|
| 28 |
+
"""
|
| 29 |
+
An invalid sdist filename was found, users should refer to the packaging user guide.
|
| 30 |
+
"""
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
# Core metadata spec for `Name`
|
| 34 |
+
_validate_regex = re.compile(
|
| 35 |
+
r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", re.IGNORECASE
|
| 36 |
+
)
|
| 37 |
+
_canonicalize_regex = re.compile(r"[-_.]+")
|
| 38 |
+
_normalized_regex = re.compile(r"^([a-z0-9]|[a-z0-9]([a-z0-9-](?!--))*[a-z0-9])$")
|
| 39 |
+
# PEP 427: The build number must start with a digit.
|
| 40 |
+
_build_tag_regex = re.compile(r"(\d+)(.*)")
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
def canonicalize_name(name: str, *, validate: bool = False) -> NormalizedName:
|
| 44 |
+
if validate and not _validate_regex.match(name):
|
| 45 |
+
raise InvalidName(f"name is invalid: {name!r}")
|
| 46 |
+
# This is taken from PEP 503.
|
| 47 |
+
value = _canonicalize_regex.sub("-", name).lower()
|
| 48 |
+
return cast(NormalizedName, value)
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
def is_normalized_name(name: str) -> bool:
|
| 52 |
+
return _normalized_regex.match(name) is not None
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
def canonicalize_version(
|
| 56 |
+
version: Union[Version, str], *, strip_trailing_zero: bool = True
|
| 57 |
+
) -> str:
|
| 58 |
+
"""
|
| 59 |
+
This is very similar to Version.__str__, but has one subtle difference
|
| 60 |
+
with the way it handles the release segment.
|
| 61 |
+
"""
|
| 62 |
+
if isinstance(version, str):
|
| 63 |
+
try:
|
| 64 |
+
parsed = Version(version)
|
| 65 |
+
except InvalidVersion:
|
| 66 |
+
# Legacy versions cannot be normalized
|
| 67 |
+
return version
|
| 68 |
+
else:
|
| 69 |
+
parsed = version
|
| 70 |
+
|
| 71 |
+
parts = []
|
| 72 |
+
|
| 73 |
+
# Epoch
|
| 74 |
+
if parsed.epoch != 0:
|
| 75 |
+
parts.append(f"{parsed.epoch}!")
|
| 76 |
+
|
| 77 |
+
# Release segment
|
| 78 |
+
release_segment = ".".join(str(x) for x in parsed.release)
|
| 79 |
+
if strip_trailing_zero:
|
| 80 |
+
# NB: This strips trailing '.0's to normalize
|
| 81 |
+
release_segment = re.sub(r"(\.0)+$", "", release_segment)
|
| 82 |
+
parts.append(release_segment)
|
| 83 |
+
|
| 84 |
+
# Pre-release
|
| 85 |
+
if parsed.pre is not None:
|
| 86 |
+
parts.append("".join(str(x) for x in parsed.pre))
|
| 87 |
+
|
| 88 |
+
# Post-release
|
| 89 |
+
if parsed.post is not None:
|
| 90 |
+
parts.append(f".post{parsed.post}")
|
| 91 |
+
|
| 92 |
+
# Development release
|
| 93 |
+
if parsed.dev is not None:
|
| 94 |
+
parts.append(f".dev{parsed.dev}")
|
| 95 |
+
|
| 96 |
+
# Local version segment
|
| 97 |
+
if parsed.local is not None:
|
| 98 |
+
parts.append(f"+{parsed.local}")
|
| 99 |
+
|
| 100 |
+
return "".join(parts)
|
| 101 |
+
|
| 102 |
+
|
| 103 |
+
def parse_wheel_filename(
|
| 104 |
+
filename: str,
|
| 105 |
+
) -> Tuple[NormalizedName, Version, BuildTag, FrozenSet[Tag]]:
|
| 106 |
+
if not filename.endswith(".whl"):
|
| 107 |
+
raise InvalidWheelFilename(
|
| 108 |
+
f"Invalid wheel filename (extension must be '.whl'): {filename}"
|
| 109 |
+
)
|
| 110 |
+
|
| 111 |
+
filename = filename[:-4]
|
| 112 |
+
dashes = filename.count("-")
|
| 113 |
+
if dashes not in (4, 5):
|
| 114 |
+
raise InvalidWheelFilename(
|
| 115 |
+
f"Invalid wheel filename (wrong number of parts): {filename}"
|
| 116 |
+
)
|
| 117 |
+
|
| 118 |
+
parts = filename.split("-", dashes - 2)
|
| 119 |
+
name_part = parts[0]
|
| 120 |
+
# See PEP 427 for the rules on escaping the project name.
|
| 121 |
+
if "__" in name_part or re.match(r"^[\w\d._]*$", name_part, re.UNICODE) is None:
|
| 122 |
+
raise InvalidWheelFilename(f"Invalid project name: {filename}")
|
| 123 |
+
name = canonicalize_name(name_part)
|
| 124 |
+
|
| 125 |
+
try:
|
| 126 |
+
version = Version(parts[1])
|
| 127 |
+
except InvalidVersion as e:
|
| 128 |
+
raise InvalidWheelFilename(
|
| 129 |
+
f"Invalid wheel filename (invalid version): {filename}"
|
| 130 |
+
) from e
|
| 131 |
+
|
| 132 |
+
if dashes == 5:
|
| 133 |
+
build_part = parts[2]
|
| 134 |
+
build_match = _build_tag_regex.match(build_part)
|
| 135 |
+
if build_match is None:
|
| 136 |
+
raise InvalidWheelFilename(
|
| 137 |
+
f"Invalid build number: {build_part} in '{filename}'"
|
| 138 |
+
)
|
| 139 |
+
build = cast(BuildTag, (int(build_match.group(1)), build_match.group(2)))
|
| 140 |
+
else:
|
| 141 |
+
build = ()
|
| 142 |
+
tags = parse_tag(parts[-1])
|
| 143 |
+
return (name, version, build, tags)
|
| 144 |
+
|
| 145 |
+
|
| 146 |
+
def parse_sdist_filename(filename: str) -> Tuple[NormalizedName, Version]:
|
| 147 |
+
if filename.endswith(".tar.gz"):
|
| 148 |
+
file_stem = filename[: -len(".tar.gz")]
|
| 149 |
+
elif filename.endswith(".zip"):
|
| 150 |
+
file_stem = filename[: -len(".zip")]
|
| 151 |
+
else:
|
| 152 |
+
raise InvalidSdistFilename(
|
| 153 |
+
f"Invalid sdist filename (extension must be '.tar.gz' or '.zip'):"
|
| 154 |
+
f" {filename}"
|
| 155 |
+
)
|
| 156 |
+
|
| 157 |
+
# We are requiring a PEP 440 version, which cannot contain dashes,
|
| 158 |
+
# so we split on the last dash.
|
| 159 |
+
name_part, sep, version_part = file_stem.rpartition("-")
|
| 160 |
+
if not sep:
|
| 161 |
+
raise InvalidSdistFilename(f"Invalid sdist filename: {filename}")
|
| 162 |
+
|
| 163 |
+
name = canonicalize_name(name_part)
|
| 164 |
+
|
| 165 |
+
try:
|
| 166 |
+
version = Version(version_part)
|
| 167 |
+
except InvalidVersion as e:
|
| 168 |
+
raise InvalidSdistFilename(
|
| 169 |
+
f"Invalid sdist filename (invalid version): {filename}"
|
| 170 |
+
) from e
|
| 171 |
+
|
| 172 |
+
return (name, version)
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/packaging/version.py
ADDED
|
@@ -0,0 +1,563 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is dual licensed under the terms of the Apache License, Version
|
| 2 |
+
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
| 3 |
+
# for complete details.
|
| 4 |
+
"""
|
| 5 |
+
.. testsetup::
|
| 6 |
+
|
| 7 |
+
from packaging.version import parse, Version
|
| 8 |
+
"""
|
| 9 |
+
|
| 10 |
+
import itertools
|
| 11 |
+
import re
|
| 12 |
+
from typing import Any, Callable, NamedTuple, Optional, SupportsInt, Tuple, Union
|
| 13 |
+
|
| 14 |
+
from ._structures import Infinity, InfinityType, NegativeInfinity, NegativeInfinityType
|
| 15 |
+
|
| 16 |
+
__all__ = ["VERSION_PATTERN", "parse", "Version", "InvalidVersion"]
|
| 17 |
+
|
| 18 |
+
LocalType = Tuple[Union[int, str], ...]
|
| 19 |
+
|
| 20 |
+
CmpPrePostDevType = Union[InfinityType, NegativeInfinityType, Tuple[str, int]]
|
| 21 |
+
CmpLocalType = Union[
|
| 22 |
+
NegativeInfinityType,
|
| 23 |
+
Tuple[Union[Tuple[int, str], Tuple[NegativeInfinityType, Union[int, str]]], ...],
|
| 24 |
+
]
|
| 25 |
+
CmpKey = Tuple[
|
| 26 |
+
int,
|
| 27 |
+
Tuple[int, ...],
|
| 28 |
+
CmpPrePostDevType,
|
| 29 |
+
CmpPrePostDevType,
|
| 30 |
+
CmpPrePostDevType,
|
| 31 |
+
CmpLocalType,
|
| 32 |
+
]
|
| 33 |
+
VersionComparisonMethod = Callable[[CmpKey, CmpKey], bool]
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
class _Version(NamedTuple):
|
| 37 |
+
epoch: int
|
| 38 |
+
release: Tuple[int, ...]
|
| 39 |
+
dev: Optional[Tuple[str, int]]
|
| 40 |
+
pre: Optional[Tuple[str, int]]
|
| 41 |
+
post: Optional[Tuple[str, int]]
|
| 42 |
+
local: Optional[LocalType]
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
def parse(version: str) -> "Version":
|
| 46 |
+
"""Parse the given version string.
|
| 47 |
+
|
| 48 |
+
>>> parse('1.0.dev1')
|
| 49 |
+
<Version('1.0.dev1')>
|
| 50 |
+
|
| 51 |
+
:param version: The version string to parse.
|
| 52 |
+
:raises InvalidVersion: When the version string is not a valid version.
|
| 53 |
+
"""
|
| 54 |
+
return Version(version)
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
class InvalidVersion(ValueError):
|
| 58 |
+
"""Raised when a version string is not a valid version.
|
| 59 |
+
|
| 60 |
+
>>> Version("invalid")
|
| 61 |
+
Traceback (most recent call last):
|
| 62 |
+
...
|
| 63 |
+
packaging.version.InvalidVersion: Invalid version: 'invalid'
|
| 64 |
+
"""
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
class _BaseVersion:
|
| 68 |
+
_key: Tuple[Any, ...]
|
| 69 |
+
|
| 70 |
+
def __hash__(self) -> int:
|
| 71 |
+
return hash(self._key)
|
| 72 |
+
|
| 73 |
+
# Please keep the duplicated `isinstance` check
|
| 74 |
+
# in the six comparisons hereunder
|
| 75 |
+
# unless you find a way to avoid adding overhead function calls.
|
| 76 |
+
def __lt__(self, other: "_BaseVersion") -> bool:
|
| 77 |
+
if not isinstance(other, _BaseVersion):
|
| 78 |
+
return NotImplemented
|
| 79 |
+
|
| 80 |
+
return self._key < other._key
|
| 81 |
+
|
| 82 |
+
def __le__(self, other: "_BaseVersion") -> bool:
|
| 83 |
+
if not isinstance(other, _BaseVersion):
|
| 84 |
+
return NotImplemented
|
| 85 |
+
|
| 86 |
+
return self._key <= other._key
|
| 87 |
+
|
| 88 |
+
def __eq__(self, other: object) -> bool:
|
| 89 |
+
if not isinstance(other, _BaseVersion):
|
| 90 |
+
return NotImplemented
|
| 91 |
+
|
| 92 |
+
return self._key == other._key
|
| 93 |
+
|
| 94 |
+
def __ge__(self, other: "_BaseVersion") -> bool:
|
| 95 |
+
if not isinstance(other, _BaseVersion):
|
| 96 |
+
return NotImplemented
|
| 97 |
+
|
| 98 |
+
return self._key >= other._key
|
| 99 |
+
|
| 100 |
+
def __gt__(self, other: "_BaseVersion") -> bool:
|
| 101 |
+
if not isinstance(other, _BaseVersion):
|
| 102 |
+
return NotImplemented
|
| 103 |
+
|
| 104 |
+
return self._key > other._key
|
| 105 |
+
|
| 106 |
+
def __ne__(self, other: object) -> bool:
|
| 107 |
+
if not isinstance(other, _BaseVersion):
|
| 108 |
+
return NotImplemented
|
| 109 |
+
|
| 110 |
+
return self._key != other._key
|
| 111 |
+
|
| 112 |
+
|
| 113 |
+
# Deliberately not anchored to the start and end of the string, to make it
|
| 114 |
+
# easier for 3rd party code to reuse
|
| 115 |
+
_VERSION_PATTERN = r"""
|
| 116 |
+
v?
|
| 117 |
+
(?:
|
| 118 |
+
(?:(?P<epoch>[0-9]+)!)? # epoch
|
| 119 |
+
(?P<release>[0-9]+(?:\.[0-9]+)*) # release segment
|
| 120 |
+
(?P<pre> # pre-release
|
| 121 |
+
[-_\.]?
|
| 122 |
+
(?P<pre_l>alpha|a|beta|b|preview|pre|c|rc)
|
| 123 |
+
[-_\.]?
|
| 124 |
+
(?P<pre_n>[0-9]+)?
|
| 125 |
+
)?
|
| 126 |
+
(?P<post> # post release
|
| 127 |
+
(?:-(?P<post_n1>[0-9]+))
|
| 128 |
+
|
|
| 129 |
+
(?:
|
| 130 |
+
[-_\.]?
|
| 131 |
+
(?P<post_l>post|rev|r)
|
| 132 |
+
[-_\.]?
|
| 133 |
+
(?P<post_n2>[0-9]+)?
|
| 134 |
+
)
|
| 135 |
+
)?
|
| 136 |
+
(?P<dev> # dev release
|
| 137 |
+
[-_\.]?
|
| 138 |
+
(?P<dev_l>dev)
|
| 139 |
+
[-_\.]?
|
| 140 |
+
(?P<dev_n>[0-9]+)?
|
| 141 |
+
)?
|
| 142 |
+
)
|
| 143 |
+
(?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))? # local version
|
| 144 |
+
"""
|
| 145 |
+
|
| 146 |
+
VERSION_PATTERN = _VERSION_PATTERN
|
| 147 |
+
"""
|
| 148 |
+
A string containing the regular expression used to match a valid version.
|
| 149 |
+
|
| 150 |
+
The pattern is not anchored at either end, and is intended for embedding in larger
|
| 151 |
+
expressions (for example, matching a version number as part of a file name). The
|
| 152 |
+
regular expression should be compiled with the ``re.VERBOSE`` and ``re.IGNORECASE``
|
| 153 |
+
flags set.
|
| 154 |
+
|
| 155 |
+
:meta hide-value:
|
| 156 |
+
"""
|
| 157 |
+
|
| 158 |
+
|
| 159 |
+
class Version(_BaseVersion):
|
| 160 |
+
"""This class abstracts handling of a project's versions.
|
| 161 |
+
|
| 162 |
+
A :class:`Version` instance is comparison aware and can be compared and
|
| 163 |
+
sorted using the standard Python interfaces.
|
| 164 |
+
|
| 165 |
+
>>> v1 = Version("1.0a5")
|
| 166 |
+
>>> v2 = Version("1.0")
|
| 167 |
+
>>> v1
|
| 168 |
+
<Version('1.0a5')>
|
| 169 |
+
>>> v2
|
| 170 |
+
<Version('1.0')>
|
| 171 |
+
>>> v1 < v2
|
| 172 |
+
True
|
| 173 |
+
>>> v1 == v2
|
| 174 |
+
False
|
| 175 |
+
>>> v1 > v2
|
| 176 |
+
False
|
| 177 |
+
>>> v1 >= v2
|
| 178 |
+
False
|
| 179 |
+
>>> v1 <= v2
|
| 180 |
+
True
|
| 181 |
+
"""
|
| 182 |
+
|
| 183 |
+
_regex = re.compile(r"^\s*" + VERSION_PATTERN + r"\s*$", re.VERBOSE | re.IGNORECASE)
|
| 184 |
+
_key: CmpKey
|
| 185 |
+
|
| 186 |
+
def __init__(self, version: str) -> None:
|
| 187 |
+
"""Initialize a Version object.
|
| 188 |
+
|
| 189 |
+
:param version:
|
| 190 |
+
The string representation of a version which will be parsed and normalized
|
| 191 |
+
before use.
|
| 192 |
+
:raises InvalidVersion:
|
| 193 |
+
If the ``version`` does not conform to PEP 440 in any way then this
|
| 194 |
+
exception will be raised.
|
| 195 |
+
"""
|
| 196 |
+
|
| 197 |
+
# Validate the version and parse it into pieces
|
| 198 |
+
match = self._regex.search(version)
|
| 199 |
+
if not match:
|
| 200 |
+
raise InvalidVersion(f"Invalid version: '{version}'")
|
| 201 |
+
|
| 202 |
+
# Store the parsed out pieces of the version
|
| 203 |
+
self._version = _Version(
|
| 204 |
+
epoch=int(match.group("epoch")) if match.group("epoch") else 0,
|
| 205 |
+
release=tuple(int(i) for i in match.group("release").split(".")),
|
| 206 |
+
pre=_parse_letter_version(match.group("pre_l"), match.group("pre_n")),
|
| 207 |
+
post=_parse_letter_version(
|
| 208 |
+
match.group("post_l"), match.group("post_n1") or match.group("post_n2")
|
| 209 |
+
),
|
| 210 |
+
dev=_parse_letter_version(match.group("dev_l"), match.group("dev_n")),
|
| 211 |
+
local=_parse_local_version(match.group("local")),
|
| 212 |
+
)
|
| 213 |
+
|
| 214 |
+
# Generate a key which will be used for sorting
|
| 215 |
+
self._key = _cmpkey(
|
| 216 |
+
self._version.epoch,
|
| 217 |
+
self._version.release,
|
| 218 |
+
self._version.pre,
|
| 219 |
+
self._version.post,
|
| 220 |
+
self._version.dev,
|
| 221 |
+
self._version.local,
|
| 222 |
+
)
|
| 223 |
+
|
| 224 |
+
def __repr__(self) -> str:
|
| 225 |
+
"""A representation of the Version that shows all internal state.
|
| 226 |
+
|
| 227 |
+
>>> Version('1.0.0')
|
| 228 |
+
<Version('1.0.0')>
|
| 229 |
+
"""
|
| 230 |
+
return f"<Version('{self}')>"
|
| 231 |
+
|
| 232 |
+
def __str__(self) -> str:
|
| 233 |
+
"""A string representation of the version that can be rounded-tripped.
|
| 234 |
+
|
| 235 |
+
>>> str(Version("1.0a5"))
|
| 236 |
+
'1.0a5'
|
| 237 |
+
"""
|
| 238 |
+
parts = []
|
| 239 |
+
|
| 240 |
+
# Epoch
|
| 241 |
+
if self.epoch != 0:
|
| 242 |
+
parts.append(f"{self.epoch}!")
|
| 243 |
+
|
| 244 |
+
# Release segment
|
| 245 |
+
parts.append(".".join(str(x) for x in self.release))
|
| 246 |
+
|
| 247 |
+
# Pre-release
|
| 248 |
+
if self.pre is not None:
|
| 249 |
+
parts.append("".join(str(x) for x in self.pre))
|
| 250 |
+
|
| 251 |
+
# Post-release
|
| 252 |
+
if self.post is not None:
|
| 253 |
+
parts.append(f".post{self.post}")
|
| 254 |
+
|
| 255 |
+
# Development release
|
| 256 |
+
if self.dev is not None:
|
| 257 |
+
parts.append(f".dev{self.dev}")
|
| 258 |
+
|
| 259 |
+
# Local version segment
|
| 260 |
+
if self.local is not None:
|
| 261 |
+
parts.append(f"+{self.local}")
|
| 262 |
+
|
| 263 |
+
return "".join(parts)
|
| 264 |
+
|
| 265 |
+
@property
|
| 266 |
+
def epoch(self) -> int:
|
| 267 |
+
"""The epoch of the version.
|
| 268 |
+
|
| 269 |
+
>>> Version("2.0.0").epoch
|
| 270 |
+
0
|
| 271 |
+
>>> Version("1!2.0.0").epoch
|
| 272 |
+
1
|
| 273 |
+
"""
|
| 274 |
+
return self._version.epoch
|
| 275 |
+
|
| 276 |
+
@property
|
| 277 |
+
def release(self) -> Tuple[int, ...]:
|
| 278 |
+
"""The components of the "release" segment of the version.
|
| 279 |
+
|
| 280 |
+
>>> Version("1.2.3").release
|
| 281 |
+
(1, 2, 3)
|
| 282 |
+
>>> Version("2.0.0").release
|
| 283 |
+
(2, 0, 0)
|
| 284 |
+
>>> Version("1!2.0.0.post0").release
|
| 285 |
+
(2, 0, 0)
|
| 286 |
+
|
| 287 |
+
Includes trailing zeroes but not the epoch or any pre-release / development /
|
| 288 |
+
post-release suffixes.
|
| 289 |
+
"""
|
| 290 |
+
return self._version.release
|
| 291 |
+
|
| 292 |
+
@property
|
| 293 |
+
def pre(self) -> Optional[Tuple[str, int]]:
|
| 294 |
+
"""The pre-release segment of the version.
|
| 295 |
+
|
| 296 |
+
>>> print(Version("1.2.3").pre)
|
| 297 |
+
None
|
| 298 |
+
>>> Version("1.2.3a1").pre
|
| 299 |
+
('a', 1)
|
| 300 |
+
>>> Version("1.2.3b1").pre
|
| 301 |
+
('b', 1)
|
| 302 |
+
>>> Version("1.2.3rc1").pre
|
| 303 |
+
('rc', 1)
|
| 304 |
+
"""
|
| 305 |
+
return self._version.pre
|
| 306 |
+
|
| 307 |
+
@property
|
| 308 |
+
def post(self) -> Optional[int]:
|
| 309 |
+
"""The post-release number of the version.
|
| 310 |
+
|
| 311 |
+
>>> print(Version("1.2.3").post)
|
| 312 |
+
None
|
| 313 |
+
>>> Version("1.2.3.post1").post
|
| 314 |
+
1
|
| 315 |
+
"""
|
| 316 |
+
return self._version.post[1] if self._version.post else None
|
| 317 |
+
|
| 318 |
+
@property
|
| 319 |
+
def dev(self) -> Optional[int]:
|
| 320 |
+
"""The development number of the version.
|
| 321 |
+
|
| 322 |
+
>>> print(Version("1.2.3").dev)
|
| 323 |
+
None
|
| 324 |
+
>>> Version("1.2.3.dev1").dev
|
| 325 |
+
1
|
| 326 |
+
"""
|
| 327 |
+
return self._version.dev[1] if self._version.dev else None
|
| 328 |
+
|
| 329 |
+
@property
|
| 330 |
+
def local(self) -> Optional[str]:
|
| 331 |
+
"""The local version segment of the version.
|
| 332 |
+
|
| 333 |
+
>>> print(Version("1.2.3").local)
|
| 334 |
+
None
|
| 335 |
+
>>> Version("1.2.3+abc").local
|
| 336 |
+
'abc'
|
| 337 |
+
"""
|
| 338 |
+
if self._version.local:
|
| 339 |
+
return ".".join(str(x) for x in self._version.local)
|
| 340 |
+
else:
|
| 341 |
+
return None
|
| 342 |
+
|
| 343 |
+
@property
|
| 344 |
+
def public(self) -> str:
|
| 345 |
+
"""The public portion of the version.
|
| 346 |
+
|
| 347 |
+
>>> Version("1.2.3").public
|
| 348 |
+
'1.2.3'
|
| 349 |
+
>>> Version("1.2.3+abc").public
|
| 350 |
+
'1.2.3'
|
| 351 |
+
>>> Version("1.2.3+abc.dev1").public
|
| 352 |
+
'1.2.3'
|
| 353 |
+
"""
|
| 354 |
+
return str(self).split("+", 1)[0]
|
| 355 |
+
|
| 356 |
+
@property
|
| 357 |
+
def base_version(self) -> str:
|
| 358 |
+
"""The "base version" of the version.
|
| 359 |
+
|
| 360 |
+
>>> Version("1.2.3").base_version
|
| 361 |
+
'1.2.3'
|
| 362 |
+
>>> Version("1.2.3+abc").base_version
|
| 363 |
+
'1.2.3'
|
| 364 |
+
>>> Version("1!1.2.3+abc.dev1").base_version
|
| 365 |
+
'1!1.2.3'
|
| 366 |
+
|
| 367 |
+
The "base version" is the public version of the project without any pre or post
|
| 368 |
+
release markers.
|
| 369 |
+
"""
|
| 370 |
+
parts = []
|
| 371 |
+
|
| 372 |
+
# Epoch
|
| 373 |
+
if self.epoch != 0:
|
| 374 |
+
parts.append(f"{self.epoch}!")
|
| 375 |
+
|
| 376 |
+
# Release segment
|
| 377 |
+
parts.append(".".join(str(x) for x in self.release))
|
| 378 |
+
|
| 379 |
+
return "".join(parts)
|
| 380 |
+
|
| 381 |
+
@property
|
| 382 |
+
def is_prerelease(self) -> bool:
|
| 383 |
+
"""Whether this version is a pre-release.
|
| 384 |
+
|
| 385 |
+
>>> Version("1.2.3").is_prerelease
|
| 386 |
+
False
|
| 387 |
+
>>> Version("1.2.3a1").is_prerelease
|
| 388 |
+
True
|
| 389 |
+
>>> Version("1.2.3b1").is_prerelease
|
| 390 |
+
True
|
| 391 |
+
>>> Version("1.2.3rc1").is_prerelease
|
| 392 |
+
True
|
| 393 |
+
>>> Version("1.2.3dev1").is_prerelease
|
| 394 |
+
True
|
| 395 |
+
"""
|
| 396 |
+
return self.dev is not None or self.pre is not None
|
| 397 |
+
|
| 398 |
+
@property
|
| 399 |
+
def is_postrelease(self) -> bool:
|
| 400 |
+
"""Whether this version is a post-release.
|
| 401 |
+
|
| 402 |
+
>>> Version("1.2.3").is_postrelease
|
| 403 |
+
False
|
| 404 |
+
>>> Version("1.2.3.post1").is_postrelease
|
| 405 |
+
True
|
| 406 |
+
"""
|
| 407 |
+
return self.post is not None
|
| 408 |
+
|
| 409 |
+
@property
|
| 410 |
+
def is_devrelease(self) -> bool:
|
| 411 |
+
"""Whether this version is a development release.
|
| 412 |
+
|
| 413 |
+
>>> Version("1.2.3").is_devrelease
|
| 414 |
+
False
|
| 415 |
+
>>> Version("1.2.3.dev1").is_devrelease
|
| 416 |
+
True
|
| 417 |
+
"""
|
| 418 |
+
return self.dev is not None
|
| 419 |
+
|
| 420 |
+
@property
|
| 421 |
+
def major(self) -> int:
|
| 422 |
+
"""The first item of :attr:`release` or ``0`` if unavailable.
|
| 423 |
+
|
| 424 |
+
>>> Version("1.2.3").major
|
| 425 |
+
1
|
| 426 |
+
"""
|
| 427 |
+
return self.release[0] if len(self.release) >= 1 else 0
|
| 428 |
+
|
| 429 |
+
@property
|
| 430 |
+
def minor(self) -> int:
|
| 431 |
+
"""The second item of :attr:`release` or ``0`` if unavailable.
|
| 432 |
+
|
| 433 |
+
>>> Version("1.2.3").minor
|
| 434 |
+
2
|
| 435 |
+
>>> Version("1").minor
|
| 436 |
+
0
|
| 437 |
+
"""
|
| 438 |
+
return self.release[1] if len(self.release) >= 2 else 0
|
| 439 |
+
|
| 440 |
+
@property
|
| 441 |
+
def micro(self) -> int:
|
| 442 |
+
"""The third item of :attr:`release` or ``0`` if unavailable.
|
| 443 |
+
|
| 444 |
+
>>> Version("1.2.3").micro
|
| 445 |
+
3
|
| 446 |
+
>>> Version("1").micro
|
| 447 |
+
0
|
| 448 |
+
"""
|
| 449 |
+
return self.release[2] if len(self.release) >= 3 else 0
|
| 450 |
+
|
| 451 |
+
|
| 452 |
+
def _parse_letter_version(
|
| 453 |
+
letter: Optional[str], number: Union[str, bytes, SupportsInt, None]
|
| 454 |
+
) -> Optional[Tuple[str, int]]:
|
| 455 |
+
|
| 456 |
+
if letter:
|
| 457 |
+
# We consider there to be an implicit 0 in a pre-release if there is
|
| 458 |
+
# not a numeral associated with it.
|
| 459 |
+
if number is None:
|
| 460 |
+
number = 0
|
| 461 |
+
|
| 462 |
+
# We normalize any letters to their lower case form
|
| 463 |
+
letter = letter.lower()
|
| 464 |
+
|
| 465 |
+
# We consider some words to be alternate spellings of other words and
|
| 466 |
+
# in those cases we want to normalize the spellings to our preferred
|
| 467 |
+
# spelling.
|
| 468 |
+
if letter == "alpha":
|
| 469 |
+
letter = "a"
|
| 470 |
+
elif letter == "beta":
|
| 471 |
+
letter = "b"
|
| 472 |
+
elif letter in ["c", "pre", "preview"]:
|
| 473 |
+
letter = "rc"
|
| 474 |
+
elif letter in ["rev", "r"]:
|
| 475 |
+
letter = "post"
|
| 476 |
+
|
| 477 |
+
return letter, int(number)
|
| 478 |
+
if not letter and number:
|
| 479 |
+
# We assume if we are given a number, but we are not given a letter
|
| 480 |
+
# then this is using the implicit post release syntax (e.g. 1.0-1)
|
| 481 |
+
letter = "post"
|
| 482 |
+
|
| 483 |
+
return letter, int(number)
|
| 484 |
+
|
| 485 |
+
return None
|
| 486 |
+
|
| 487 |
+
|
| 488 |
+
_local_version_separators = re.compile(r"[\._-]")
|
| 489 |
+
|
| 490 |
+
|
| 491 |
+
def _parse_local_version(local: Optional[str]) -> Optional[LocalType]:
|
| 492 |
+
"""
|
| 493 |
+
Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
|
| 494 |
+
"""
|
| 495 |
+
if local is not None:
|
| 496 |
+
return tuple(
|
| 497 |
+
part.lower() if not part.isdigit() else int(part)
|
| 498 |
+
for part in _local_version_separators.split(local)
|
| 499 |
+
)
|
| 500 |
+
return None
|
| 501 |
+
|
| 502 |
+
|
| 503 |
+
def _cmpkey(
|
| 504 |
+
epoch: int,
|
| 505 |
+
release: Tuple[int, ...],
|
| 506 |
+
pre: Optional[Tuple[str, int]],
|
| 507 |
+
post: Optional[Tuple[str, int]],
|
| 508 |
+
dev: Optional[Tuple[str, int]],
|
| 509 |
+
local: Optional[LocalType],
|
| 510 |
+
) -> CmpKey:
|
| 511 |
+
|
| 512 |
+
# When we compare a release version, we want to compare it with all of the
|
| 513 |
+
# trailing zeros removed. So we'll use a reverse the list, drop all the now
|
| 514 |
+
# leading zeros until we come to something non zero, then take the rest
|
| 515 |
+
# re-reverse it back into the correct order and make it a tuple and use
|
| 516 |
+
# that for our sorting key.
|
| 517 |
+
_release = tuple(
|
| 518 |
+
reversed(list(itertools.dropwhile(lambda x: x == 0, reversed(release))))
|
| 519 |
+
)
|
| 520 |
+
|
| 521 |
+
# We need to "trick" the sorting algorithm to put 1.0.dev0 before 1.0a0.
|
| 522 |
+
# We'll do this by abusing the pre segment, but we _only_ want to do this
|
| 523 |
+
# if there is not a pre or a post segment. If we have one of those then
|
| 524 |
+
# the normal sorting rules will handle this case correctly.
|
| 525 |
+
if pre is None and post is None and dev is not None:
|
| 526 |
+
_pre: CmpPrePostDevType = NegativeInfinity
|
| 527 |
+
# Versions without a pre-release (except as noted above) should sort after
|
| 528 |
+
# those with one.
|
| 529 |
+
elif pre is None:
|
| 530 |
+
_pre = Infinity
|
| 531 |
+
else:
|
| 532 |
+
_pre = pre
|
| 533 |
+
|
| 534 |
+
# Versions without a post segment should sort before those with one.
|
| 535 |
+
if post is None:
|
| 536 |
+
_post: CmpPrePostDevType = NegativeInfinity
|
| 537 |
+
|
| 538 |
+
else:
|
| 539 |
+
_post = post
|
| 540 |
+
|
| 541 |
+
# Versions without a development segment should sort after those with one.
|
| 542 |
+
if dev is None:
|
| 543 |
+
_dev: CmpPrePostDevType = Infinity
|
| 544 |
+
|
| 545 |
+
else:
|
| 546 |
+
_dev = dev
|
| 547 |
+
|
| 548 |
+
if local is None:
|
| 549 |
+
# Versions without a local segment should sort before those with one.
|
| 550 |
+
_local: CmpLocalType = NegativeInfinity
|
| 551 |
+
else:
|
| 552 |
+
# Versions with a local segment need that segment parsed to implement
|
| 553 |
+
# the sorting rules in PEP440.
|
| 554 |
+
# - Alpha numeric segments sort before numeric segments
|
| 555 |
+
# - Alpha numeric segments sort lexicographically
|
| 556 |
+
# - Numeric segments sort numerically
|
| 557 |
+
# - Shorter versions sort before longer versions when the prefixes
|
| 558 |
+
# match exactly
|
| 559 |
+
_local = tuple(
|
| 560 |
+
(i, "") if isinstance(i, int) else (NegativeInfinity, i) for i in local
|
| 561 |
+
)
|
| 562 |
+
|
| 563 |
+
return epoch, _release, _pre, _post, _dev, _local
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/AUTHORS.txt
ADDED
|
@@ -0,0 +1,806 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@Switch01
|
| 2 |
+
A_Rog
|
| 3 |
+
Aakanksha Agrawal
|
| 4 |
+
Abhinav Sagar
|
| 5 |
+
ABHYUDAY PRATAP SINGH
|
| 6 |
+
abs51295
|
| 7 |
+
AceGentile
|
| 8 |
+
Adam Chainz
|
| 9 |
+
Adam Tse
|
| 10 |
+
Adam Wentz
|
| 11 |
+
admin
|
| 12 |
+
Adolfo Ochagavía
|
| 13 |
+
Adrien Morison
|
| 14 |
+
Agus
|
| 15 |
+
ahayrapetyan
|
| 16 |
+
Ahilya
|
| 17 |
+
AinsworthK
|
| 18 |
+
Akash Srivastava
|
| 19 |
+
Alan Yee
|
| 20 |
+
Albert Tugushev
|
| 21 |
+
Albert-Guan
|
| 22 |
+
albertg
|
| 23 |
+
Alberto Sottile
|
| 24 |
+
Aleks Bunin
|
| 25 |
+
Ales Erjavec
|
| 26 |
+
Alethea Flowers
|
| 27 |
+
Alex Gaynor
|
| 28 |
+
Alex Grönholm
|
| 29 |
+
Alex Hedges
|
| 30 |
+
Alex Loosley
|
| 31 |
+
Alex Morega
|
| 32 |
+
Alex Stachowiak
|
| 33 |
+
Alexander Shtyrov
|
| 34 |
+
Alexandre Conrad
|
| 35 |
+
Alexey Popravka
|
| 36 |
+
Aleš Erjavec
|
| 37 |
+
Alli
|
| 38 |
+
Ami Fischman
|
| 39 |
+
Ananya Maiti
|
| 40 |
+
Anatoly Techtonik
|
| 41 |
+
Anders Kaseorg
|
| 42 |
+
Andre Aguiar
|
| 43 |
+
Andreas Lutro
|
| 44 |
+
Andrei Geacar
|
| 45 |
+
Andrew Gaul
|
| 46 |
+
Andrew Shymanel
|
| 47 |
+
Andrey Bienkowski
|
| 48 |
+
Andrey Bulgakov
|
| 49 |
+
Andrés Delfino
|
| 50 |
+
Andy Freeland
|
| 51 |
+
Andy Kluger
|
| 52 |
+
Ani Hayrapetyan
|
| 53 |
+
Aniruddha Basak
|
| 54 |
+
Anish Tambe
|
| 55 |
+
Anrs Hu
|
| 56 |
+
Anthony Sottile
|
| 57 |
+
Antoine Musso
|
| 58 |
+
Anton Ovchinnikov
|
| 59 |
+
Anton Patrushev
|
| 60 |
+
Anton Zelenov
|
| 61 |
+
Antonio Alvarado Hernandez
|
| 62 |
+
Antony Lee
|
| 63 |
+
Antti Kaihola
|
| 64 |
+
Anubhav Patel
|
| 65 |
+
Anudit Nagar
|
| 66 |
+
Anuj Godase
|
| 67 |
+
AQNOUCH Mohammed
|
| 68 |
+
AraHaan
|
| 69 |
+
arena
|
| 70 |
+
arenasys
|
| 71 |
+
Arindam Choudhury
|
| 72 |
+
Armin Ronacher
|
| 73 |
+
Arnon Yaari
|
| 74 |
+
Artem
|
| 75 |
+
Arun Babu Neelicattu
|
| 76 |
+
Ashley Manton
|
| 77 |
+
Ashwin Ramaswami
|
| 78 |
+
atse
|
| 79 |
+
Atsushi Odagiri
|
| 80 |
+
Avinash Karhana
|
| 81 |
+
Avner Cohen
|
| 82 |
+
Awit (Ah-Wit) Ghirmai
|
| 83 |
+
Baptiste Mispelon
|
| 84 |
+
Barney Gale
|
| 85 |
+
barneygale
|
| 86 |
+
Bartek Ogryczak
|
| 87 |
+
Bastian Venthur
|
| 88 |
+
Ben Bodenmiller
|
| 89 |
+
Ben Darnell
|
| 90 |
+
Ben Hoyt
|
| 91 |
+
Ben Mares
|
| 92 |
+
Ben Rosser
|
| 93 |
+
Bence Nagy
|
| 94 |
+
Benjamin Peterson
|
| 95 |
+
Benjamin VanEvery
|
| 96 |
+
Benoit Pierre
|
| 97 |
+
Berker Peksag
|
| 98 |
+
Bernard
|
| 99 |
+
Bernard Tyers
|
| 100 |
+
Bernardo B. Marques
|
| 101 |
+
Bernhard M. Wiedemann
|
| 102 |
+
Bertil Hatt
|
| 103 |
+
Bhavam Vidyarthi
|
| 104 |
+
Blazej Michalik
|
| 105 |
+
Bogdan Opanchuk
|
| 106 |
+
BorisZZZ
|
| 107 |
+
Brad Erickson
|
| 108 |
+
Bradley Ayers
|
| 109 |
+
Branch Vincent
|
| 110 |
+
Brandon L. Reiss
|
| 111 |
+
Brandt Bucher
|
| 112 |
+
Brannon Dorsey
|
| 113 |
+
Brett Randall
|
| 114 |
+
Brett Rosen
|
| 115 |
+
Brian Cristante
|
| 116 |
+
Brian Rosner
|
| 117 |
+
briantracy
|
| 118 |
+
BrownTruck
|
| 119 |
+
Bruno Oliveira
|
| 120 |
+
Bruno Renié
|
| 121 |
+
Bruno S
|
| 122 |
+
Bstrdsmkr
|
| 123 |
+
Buck Golemon
|
| 124 |
+
burrows
|
| 125 |
+
Bussonnier Matthias
|
| 126 |
+
bwoodsend
|
| 127 |
+
c22
|
| 128 |
+
Caleb Brown
|
| 129 |
+
Caleb Martinez
|
| 130 |
+
Calvin Smith
|
| 131 |
+
Carl Meyer
|
| 132 |
+
Carlos Liam
|
| 133 |
+
Carol Willing
|
| 134 |
+
Carter Thayer
|
| 135 |
+
Cass
|
| 136 |
+
Chandrasekhar Atina
|
| 137 |
+
Charlie Marsh
|
| 138 |
+
charwick
|
| 139 |
+
Chih-Hsuan Yen
|
| 140 |
+
Chris Brinker
|
| 141 |
+
Chris Hunt
|
| 142 |
+
Chris Jerdonek
|
| 143 |
+
Chris Kuehl
|
| 144 |
+
Chris Markiewicz
|
| 145 |
+
Chris McDonough
|
| 146 |
+
Chris Pawley
|
| 147 |
+
Chris Pryer
|
| 148 |
+
Chris Wolfe
|
| 149 |
+
Christian Clauss
|
| 150 |
+
Christian Heimes
|
| 151 |
+
Christian Oudard
|
| 152 |
+
Christoph Reiter
|
| 153 |
+
Christopher Hunt
|
| 154 |
+
Christopher Snyder
|
| 155 |
+
chrysle
|
| 156 |
+
cjc7373
|
| 157 |
+
Clark Boylan
|
| 158 |
+
Claudio Jolowicz
|
| 159 |
+
Clay McClure
|
| 160 |
+
Cody
|
| 161 |
+
Cody Soyland
|
| 162 |
+
Colin Watson
|
| 163 |
+
Collin Anderson
|
| 164 |
+
Connor Osborn
|
| 165 |
+
Cooper Lees
|
| 166 |
+
Cooper Ry Lees
|
| 167 |
+
Cory Benfield
|
| 168 |
+
Cory Wright
|
| 169 |
+
Craig Kerstiens
|
| 170 |
+
Cristian Sorinel
|
| 171 |
+
Cristina
|
| 172 |
+
Cristina Muñoz
|
| 173 |
+
ctg123
|
| 174 |
+
Curtis Doty
|
| 175 |
+
cytolentino
|
| 176 |
+
Daan De Meyer
|
| 177 |
+
Dale
|
| 178 |
+
Damian
|
| 179 |
+
Damian Quiroga
|
| 180 |
+
Damian Shaw
|
| 181 |
+
Dan Black
|
| 182 |
+
Dan Savilonis
|
| 183 |
+
Dan Sully
|
| 184 |
+
Dane Hillard
|
| 185 |
+
daniel
|
| 186 |
+
Daniel Collins
|
| 187 |
+
Daniel Hahler
|
| 188 |
+
Daniel Holth
|
| 189 |
+
Daniel Jost
|
| 190 |
+
Daniel Katz
|
| 191 |
+
Daniel Shaulov
|
| 192 |
+
Daniele Esposti
|
| 193 |
+
Daniele Nicolodi
|
| 194 |
+
Daniele Procida
|
| 195 |
+
Daniil Konovalenko
|
| 196 |
+
Danny Hermes
|
| 197 |
+
Danny McClanahan
|
| 198 |
+
Darren Kavanagh
|
| 199 |
+
Dav Clark
|
| 200 |
+
Dave Abrahams
|
| 201 |
+
Dave Jones
|
| 202 |
+
David Aguilar
|
| 203 |
+
David Black
|
| 204 |
+
David Bordeynik
|
| 205 |
+
David Caro
|
| 206 |
+
David D Lowe
|
| 207 |
+
David Evans
|
| 208 |
+
David Hewitt
|
| 209 |
+
David Linke
|
| 210 |
+
David Poggi
|
| 211 |
+
David Poznik
|
| 212 |
+
David Pursehouse
|
| 213 |
+
David Runge
|
| 214 |
+
David Tucker
|
| 215 |
+
David Wales
|
| 216 |
+
Davidovich
|
| 217 |
+
ddelange
|
| 218 |
+
Deepak Sharma
|
| 219 |
+
Deepyaman Datta
|
| 220 |
+
Denise Yu
|
| 221 |
+
dependabot[bot]
|
| 222 |
+
derwolfe
|
| 223 |
+
Desetude
|
| 224 |
+
Devesh Kumar Singh
|
| 225 |
+
devsagul
|
| 226 |
+
Diego Caraballo
|
| 227 |
+
Diego Ramirez
|
| 228 |
+
DiegoCaraballo
|
| 229 |
+
Dimitri Merejkowsky
|
| 230 |
+
Dimitri Papadopoulos
|
| 231 |
+
Dimitri Papadopoulos Orfanos
|
| 232 |
+
Dirk Stolle
|
| 233 |
+
Dmitry Gladkov
|
| 234 |
+
Dmitry Volodin
|
| 235 |
+
Domen Kožar
|
| 236 |
+
Dominic Davis-Foster
|
| 237 |
+
Donald Stufft
|
| 238 |
+
Dongweiming
|
| 239 |
+
doron zarhi
|
| 240 |
+
Dos Moonen
|
| 241 |
+
Douglas Thor
|
| 242 |
+
DrFeathers
|
| 243 |
+
Dustin Ingram
|
| 244 |
+
Dustin Rodrigues
|
| 245 |
+
Dwayne Bailey
|
| 246 |
+
Ed Morley
|
| 247 |
+
Edgar Ramírez
|
| 248 |
+
Edgar Ramírez Mondragón
|
| 249 |
+
Ee Durbin
|
| 250 |
+
Efflam Lemaillet
|
| 251 |
+
efflamlemaillet
|
| 252 |
+
Eitan Adler
|
| 253 |
+
ekristina
|
| 254 |
+
elainechan
|
| 255 |
+
Eli Schwartz
|
| 256 |
+
Elisha Hollander
|
| 257 |
+
Ellen Marie Dash
|
| 258 |
+
Emil Burzo
|
| 259 |
+
Emil Styrke
|
| 260 |
+
Emmanuel Arias
|
| 261 |
+
Endoh Takanao
|
| 262 |
+
enoch
|
| 263 |
+
Erdinc Mutlu
|
| 264 |
+
Eric Cousineau
|
| 265 |
+
Eric Gillingham
|
| 266 |
+
Eric Hanchrow
|
| 267 |
+
Eric Hopper
|
| 268 |
+
Erik M. Bray
|
| 269 |
+
Erik Rose
|
| 270 |
+
Erwin Janssen
|
| 271 |
+
Eugene Vereshchagin
|
| 272 |
+
everdimension
|
| 273 |
+
Federico
|
| 274 |
+
Felipe Peter
|
| 275 |
+
Felix Yan
|
| 276 |
+
fiber-space
|
| 277 |
+
Filip Kokosiński
|
| 278 |
+
Filipe Laíns
|
| 279 |
+
Finn Womack
|
| 280 |
+
finnagin
|
| 281 |
+
Flavio Amurrio
|
| 282 |
+
Florian Briand
|
| 283 |
+
Florian Rathgeber
|
| 284 |
+
Francesco
|
| 285 |
+
Francesco Montesano
|
| 286 |
+
Fredrik Orderud
|
| 287 |
+
Frost Ming
|
| 288 |
+
Gabriel Curio
|
| 289 |
+
Gabriel de Perthuis
|
| 290 |
+
Garry Polley
|
| 291 |
+
gavin
|
| 292 |
+
gdanielson
|
| 293 |
+
Geoffrey Sneddon
|
| 294 |
+
George Song
|
| 295 |
+
Georgi Valkov
|
| 296 |
+
Georgy Pchelkin
|
| 297 |
+
ghost
|
| 298 |
+
Giftlin Rajaiah
|
| 299 |
+
gizmoguy1
|
| 300 |
+
gkdoc
|
| 301 |
+
Godefroid Chapelle
|
| 302 |
+
Gopinath M
|
| 303 |
+
GOTO Hayato
|
| 304 |
+
gousaiyang
|
| 305 |
+
gpiks
|
| 306 |
+
Greg Roodt
|
| 307 |
+
Greg Ward
|
| 308 |
+
Guilherme Espada
|
| 309 |
+
Guillaume Seguin
|
| 310 |
+
gutsytechster
|
| 311 |
+
Guy Rozendorn
|
| 312 |
+
Guy Tuval
|
| 313 |
+
gzpan123
|
| 314 |
+
Hanjun Kim
|
| 315 |
+
Hari Charan
|
| 316 |
+
Harsh Vardhan
|
| 317 |
+
harupy
|
| 318 |
+
Harutaka Kawamura
|
| 319 |
+
hauntsaninja
|
| 320 |
+
Henrich Hartzer
|
| 321 |
+
Henry Schreiner
|
| 322 |
+
Herbert Pfennig
|
| 323 |
+
Holly Stotelmyer
|
| 324 |
+
Honnix
|
| 325 |
+
Hsiaoming Yang
|
| 326 |
+
Hugo Lopes Tavares
|
| 327 |
+
Hugo van Kemenade
|
| 328 |
+
Hugues Bruant
|
| 329 |
+
Hynek Schlawack
|
| 330 |
+
Ian Bicking
|
| 331 |
+
Ian Cordasco
|
| 332 |
+
Ian Lee
|
| 333 |
+
Ian Stapleton Cordasco
|
| 334 |
+
Ian Wienand
|
| 335 |
+
Igor Kuzmitshov
|
| 336 |
+
Igor Sobreira
|
| 337 |
+
Ikko Ashimine
|
| 338 |
+
Ilan Schnell
|
| 339 |
+
Illia Volochii
|
| 340 |
+
Ilya Baryshev
|
| 341 |
+
Inada Naoki
|
| 342 |
+
Ionel Cristian Mărieș
|
| 343 |
+
Ionel Maries Cristian
|
| 344 |
+
Itamar Turner-Trauring
|
| 345 |
+
Ivan Pozdeev
|
| 346 |
+
J. Nick Koston
|
| 347 |
+
Jacob Kim
|
| 348 |
+
Jacob Walls
|
| 349 |
+
Jaime Sanz
|
| 350 |
+
jakirkham
|
| 351 |
+
Jakub Kuczys
|
| 352 |
+
Jakub Stasiak
|
| 353 |
+
Jakub Vysoky
|
| 354 |
+
Jakub Wilk
|
| 355 |
+
James Cleveland
|
| 356 |
+
James Curtin
|
| 357 |
+
James Firth
|
| 358 |
+
James Gerity
|
| 359 |
+
James Polley
|
| 360 |
+
Jan Pokorný
|
| 361 |
+
Jannis Leidel
|
| 362 |
+
Jarek Potiuk
|
| 363 |
+
jarondl
|
| 364 |
+
Jason Curtis
|
| 365 |
+
Jason R. Coombs
|
| 366 |
+
JasonMo
|
| 367 |
+
JasonMo1
|
| 368 |
+
Jay Graves
|
| 369 |
+
Jean Abou Samra
|
| 370 |
+
Jean-Christophe Fillion-Robin
|
| 371 |
+
Jeff Barber
|
| 372 |
+
Jeff Dairiki
|
| 373 |
+
Jeff Widman
|
| 374 |
+
Jelmer Vernooij
|
| 375 |
+
jenix21
|
| 376 |
+
Jeremy Fleischman
|
| 377 |
+
Jeremy Stanley
|
| 378 |
+
Jeremy Zafran
|
| 379 |
+
Jesse Rittner
|
| 380 |
+
Jiashuo Li
|
| 381 |
+
Jim Fisher
|
| 382 |
+
Jim Garrison
|
| 383 |
+
Jinzhe Zeng
|
| 384 |
+
Jiun Bae
|
| 385 |
+
Jivan Amara
|
| 386 |
+
Joe Bylund
|
| 387 |
+
Joe Michelini
|
| 388 |
+
John Paton
|
| 389 |
+
John Sirois
|
| 390 |
+
John T. Wodder II
|
| 391 |
+
John-Scott Atlakson
|
| 392 |
+
johnthagen
|
| 393 |
+
Jon Banafato
|
| 394 |
+
Jon Dufresne
|
| 395 |
+
Jon Parise
|
| 396 |
+
Jonas Nockert
|
| 397 |
+
Jonathan Herbert
|
| 398 |
+
Joonatan Partanen
|
| 399 |
+
Joost Molenaar
|
| 400 |
+
Jorge Niedbalski
|
| 401 |
+
Joseph Bylund
|
| 402 |
+
Joseph Long
|
| 403 |
+
Josh Bronson
|
| 404 |
+
Josh Cannon
|
| 405 |
+
Josh Hansen
|
| 406 |
+
Josh Schneier
|
| 407 |
+
Joshua
|
| 408 |
+
JoshuaPerdue
|
| 409 |
+
Juan Luis Cano Rodríguez
|
| 410 |
+
Juanjo Bazán
|
| 411 |
+
Judah Rand
|
| 412 |
+
Julian Berman
|
| 413 |
+
Julian Gethmann
|
| 414 |
+
Julien Demoor
|
| 415 |
+
July Tikhonov
|
| 416 |
+
Jussi Kukkonen
|
| 417 |
+
Justin van Heek
|
| 418 |
+
jwg4
|
| 419 |
+
Jyrki Pulliainen
|
| 420 |
+
Kai Chen
|
| 421 |
+
Kai Mueller
|
| 422 |
+
Kamal Bin Mustafa
|
| 423 |
+
Karolina Surma
|
| 424 |
+
kasium
|
| 425 |
+
kaustav haldar
|
| 426 |
+
keanemind
|
| 427 |
+
Keith Maxwell
|
| 428 |
+
Kelsey Hightower
|
| 429 |
+
Kenneth Belitzky
|
| 430 |
+
Kenneth Reitz
|
| 431 |
+
Kevin Burke
|
| 432 |
+
Kevin Carter
|
| 433 |
+
Kevin Frommelt
|
| 434 |
+
Kevin R Patterson
|
| 435 |
+
Kexuan Sun
|
| 436 |
+
Kit Randel
|
| 437 |
+
Klaas van Schelven
|
| 438 |
+
KOLANICH
|
| 439 |
+
konstin
|
| 440 |
+
kpinc
|
| 441 |
+
Krishna Oza
|
| 442 |
+
Kumar McMillan
|
| 443 |
+
Kuntal Majumder
|
| 444 |
+
Kurt McKee
|
| 445 |
+
Kyle Persohn
|
| 446 |
+
lakshmanaram
|
| 447 |
+
Laszlo Kiss-Kollar
|
| 448 |
+
Laurent Bristiel
|
| 449 |
+
Laurent LAPORTE
|
| 450 |
+
Laurie O
|
| 451 |
+
Laurie Opperman
|
| 452 |
+
layday
|
| 453 |
+
Leon Sasson
|
| 454 |
+
Lev Givon
|
| 455 |
+
Lincoln de Sousa
|
| 456 |
+
Lipis
|
| 457 |
+
lorddavidiii
|
| 458 |
+
Loren Carvalho
|
| 459 |
+
Lucas Cimon
|
| 460 |
+
Ludovic Gasc
|
| 461 |
+
Luis Medel
|
| 462 |
+
Lukas Geiger
|
| 463 |
+
Lukas Juhrich
|
| 464 |
+
Luke Macken
|
| 465 |
+
Luo Jiebin
|
| 466 |
+
luojiebin
|
| 467 |
+
luz.paz
|
| 468 |
+
László Kiss Kollár
|
| 469 |
+
M00nL1ght
|
| 470 |
+
Marc Abramowitz
|
| 471 |
+
Marc Tamlyn
|
| 472 |
+
Marcus Smith
|
| 473 |
+
Mariatta
|
| 474 |
+
Mark Kohler
|
| 475 |
+
Mark McLoughlin
|
| 476 |
+
Mark Williams
|
| 477 |
+
Markus Hametner
|
| 478 |
+
Martey Dodoo
|
| 479 |
+
Martin Fischer
|
| 480 |
+
Martin Häcker
|
| 481 |
+
Martin Pavlasek
|
| 482 |
+
Masaki
|
| 483 |
+
Masklinn
|
| 484 |
+
Matej Stuchlik
|
| 485 |
+
Mathew Jennings
|
| 486 |
+
Mathieu Bridon
|
| 487 |
+
Mathieu Kniewallner
|
| 488 |
+
Matt Bacchi
|
| 489 |
+
Matt Good
|
| 490 |
+
Matt Maker
|
| 491 |
+
Matt Robenolt
|
| 492 |
+
Matt Wozniski
|
| 493 |
+
matthew
|
| 494 |
+
Matthew Einhorn
|
| 495 |
+
Matthew Feickert
|
| 496 |
+
Matthew Gilliard
|
| 497 |
+
Matthew Hughes
|
| 498 |
+
Matthew Iversen
|
| 499 |
+
Matthew Treinish
|
| 500 |
+
Matthew Trumbell
|
| 501 |
+
Matthew Willson
|
| 502 |
+
Matthias Bussonnier
|
| 503 |
+
mattip
|
| 504 |
+
Maurits van Rees
|
| 505 |
+
Max W Chase
|
| 506 |
+
Maxim Kurnikov
|
| 507 |
+
Maxime Rouyrre
|
| 508 |
+
mayeut
|
| 509 |
+
mbaluna
|
| 510 |
+
mdebi
|
| 511 |
+
memoselyk
|
| 512 |
+
meowmeowcat
|
| 513 |
+
Michael
|
| 514 |
+
Michael Aquilina
|
| 515 |
+
Michael E. Karpeles
|
| 516 |
+
Michael Klich
|
| 517 |
+
Michael Mintz
|
| 518 |
+
Michael Williamson
|
| 519 |
+
michaelpacer
|
| 520 |
+
Michał Górny
|
| 521 |
+
Mickaël Schoentgen
|
| 522 |
+
Miguel Araujo Perez
|
| 523 |
+
Mihir Singh
|
| 524 |
+
Mike
|
| 525 |
+
Mike Hendricks
|
| 526 |
+
Min RK
|
| 527 |
+
MinRK
|
| 528 |
+
Miro Hrončok
|
| 529 |
+
Monica Baluna
|
| 530 |
+
montefra
|
| 531 |
+
Monty Taylor
|
| 532 |
+
morotti
|
| 533 |
+
mrKazzila
|
| 534 |
+
Muha Ajjan
|
| 535 |
+
Nadav Wexler
|
| 536 |
+
Nahuel Ambrosini
|
| 537 |
+
Nate Coraor
|
| 538 |
+
Nate Prewitt
|
| 539 |
+
Nathan Houghton
|
| 540 |
+
Nathaniel J. Smith
|
| 541 |
+
Nehal J Wani
|
| 542 |
+
Neil Botelho
|
| 543 |
+
Nguyễn Gia Phong
|
| 544 |
+
Nicholas Serra
|
| 545 |
+
Nick Coghlan
|
| 546 |
+
Nick Stenning
|
| 547 |
+
Nick Timkovich
|
| 548 |
+
Nicolas Bock
|
| 549 |
+
Nicole Harris
|
| 550 |
+
Nikhil Benesch
|
| 551 |
+
Nikhil Ladha
|
| 552 |
+
Nikita Chepanov
|
| 553 |
+
Nikolay Korolev
|
| 554 |
+
Nipunn Koorapati
|
| 555 |
+
Nitesh Sharma
|
| 556 |
+
Niyas Sait
|
| 557 |
+
Noah
|
| 558 |
+
Noah Gorny
|
| 559 |
+
Nowell Strite
|
| 560 |
+
NtaleGrey
|
| 561 |
+
nvdv
|
| 562 |
+
OBITORASU
|
| 563 |
+
Ofek Lev
|
| 564 |
+
ofrinevo
|
| 565 |
+
Oliver Freund
|
| 566 |
+
Oliver Jeeves
|
| 567 |
+
Oliver Mannion
|
| 568 |
+
Oliver Tonnhofer
|
| 569 |
+
Olivier Girardot
|
| 570 |
+
Olivier Grisel
|
| 571 |
+
Ollie Rutherfurd
|
| 572 |
+
OMOTO Kenji
|
| 573 |
+
Omry Yadan
|
| 574 |
+
onlinejudge95
|
| 575 |
+
Oren Held
|
| 576 |
+
Oscar Benjamin
|
| 577 |
+
Oz N Tiram
|
| 578 |
+
Pachwenko
|
| 579 |
+
Patrick Dubroy
|
| 580 |
+
Patrick Jenkins
|
| 581 |
+
Patrick Lawson
|
| 582 |
+
patricktokeeffe
|
| 583 |
+
Patrik Kopkan
|
| 584 |
+
Paul Ganssle
|
| 585 |
+
Paul Kehrer
|
| 586 |
+
Paul Moore
|
| 587 |
+
Paul Nasrat
|
| 588 |
+
Paul Oswald
|
| 589 |
+
Paul van der Linden
|
| 590 |
+
Paulus Schoutsen
|
| 591 |
+
Pavel Safronov
|
| 592 |
+
Pavithra Eswaramoorthy
|
| 593 |
+
Pawel Jasinski
|
| 594 |
+
Paweł Szramowski
|
| 595 |
+
Pekka Klärck
|
| 596 |
+
Peter Gessler
|
| 597 |
+
Peter Lisák
|
| 598 |
+
Peter Shen
|
| 599 |
+
Peter Waller
|
| 600 |
+
Petr Viktorin
|
| 601 |
+
petr-tik
|
| 602 |
+
Phaneendra Chiruvella
|
| 603 |
+
Phil Elson
|
| 604 |
+
Phil Freo
|
| 605 |
+
Phil Pennock
|
| 606 |
+
Phil Whelan
|
| 607 |
+
Philip Jägenstedt
|
| 608 |
+
Philip Molloy
|
| 609 |
+
Philippe Ombredanne
|
| 610 |
+
Pi Delport
|
| 611 |
+
Pierre-Yves Rofes
|
| 612 |
+
Pieter Degroote
|
| 613 |
+
pip
|
| 614 |
+
Prabakaran Kumaresshan
|
| 615 |
+
Prabhjyotsing Surjit Singh Sodhi
|
| 616 |
+
Prabhu Marappan
|
| 617 |
+
Pradyun Gedam
|
| 618 |
+
Prashant Sharma
|
| 619 |
+
Pratik Mallya
|
| 620 |
+
pre-commit-ci[bot]
|
| 621 |
+
Preet Thakkar
|
| 622 |
+
Preston Holmes
|
| 623 |
+
Przemek Wrzos
|
| 624 |
+
Pulkit Goyal
|
| 625 |
+
q0w
|
| 626 |
+
Qiangning Hong
|
| 627 |
+
Qiming Xu
|
| 628 |
+
Quentin Lee
|
| 629 |
+
Quentin Pradet
|
| 630 |
+
R. David Murray
|
| 631 |
+
Rafael Caricio
|
| 632 |
+
Ralf Schmitt
|
| 633 |
+
Ran Benita
|
| 634 |
+
Randy Döring
|
| 635 |
+
Razzi Abuissa
|
| 636 |
+
rdb
|
| 637 |
+
Reece Dunham
|
| 638 |
+
Remi Rampin
|
| 639 |
+
Rene Dudfield
|
| 640 |
+
Riccardo Magliocchetti
|
| 641 |
+
Riccardo Schirone
|
| 642 |
+
Richard Jones
|
| 643 |
+
Richard Si
|
| 644 |
+
Ricky Ng-Adam
|
| 645 |
+
Rishi
|
| 646 |
+
rmorotti
|
| 647 |
+
RobberPhex
|
| 648 |
+
Robert Collins
|
| 649 |
+
Robert McGibbon
|
| 650 |
+
Robert Pollak
|
| 651 |
+
Robert T. McGibbon
|
| 652 |
+
robin elisha robinson
|
| 653 |
+
Roey Berman
|
| 654 |
+
Rohan Jain
|
| 655 |
+
Roman Bogorodskiy
|
| 656 |
+
Roman Donchenko
|
| 657 |
+
Romuald Brunet
|
| 658 |
+
ronaudinho
|
| 659 |
+
Ronny Pfannschmidt
|
| 660 |
+
Rory McCann
|
| 661 |
+
Ross Brattain
|
| 662 |
+
Roy Wellington Ⅳ
|
| 663 |
+
Ruairidh MacLeod
|
| 664 |
+
Russell Keith-Magee
|
| 665 |
+
Ryan Shepherd
|
| 666 |
+
Ryan Wooden
|
| 667 |
+
ryneeverett
|
| 668 |
+
S. Guliaev
|
| 669 |
+
Sachi King
|
| 670 |
+
Salvatore Rinchiera
|
| 671 |
+
sandeepkiran-js
|
| 672 |
+
Sander Van Balen
|
| 673 |
+
Savio Jomton
|
| 674 |
+
schlamar
|
| 675 |
+
Scott Kitterman
|
| 676 |
+
Sean
|
| 677 |
+
seanj
|
| 678 |
+
Sebastian Jordan
|
| 679 |
+
Sebastian Schaetz
|
| 680 |
+
Segev Finer
|
| 681 |
+
SeongSoo Cho
|
| 682 |
+
Sergey Vasilyev
|
| 683 |
+
Seth Michael Larson
|
| 684 |
+
Seth Woodworth
|
| 685 |
+
Shahar Epstein
|
| 686 |
+
Shantanu
|
| 687 |
+
shenxianpeng
|
| 688 |
+
shireenrao
|
| 689 |
+
Shivansh-007
|
| 690 |
+
Shixian Sheng
|
| 691 |
+
Shlomi Fish
|
| 692 |
+
Shovan Maity
|
| 693 |
+
Simeon Visser
|
| 694 |
+
Simon Cross
|
| 695 |
+
Simon Pichugin
|
| 696 |
+
sinoroc
|
| 697 |
+
sinscary
|
| 698 |
+
snook92
|
| 699 |
+
socketubs
|
| 700 |
+
Sorin Sbarnea
|
| 701 |
+
Srinivas Nyayapati
|
| 702 |
+
Srishti Hegde
|
| 703 |
+
Stavros Korokithakis
|
| 704 |
+
Stefan Scherfke
|
| 705 |
+
Stefano Rivera
|
| 706 |
+
Stephan Erb
|
| 707 |
+
Stephen Rosen
|
| 708 |
+
stepshal
|
| 709 |
+
Steve (Gadget) Barnes
|
| 710 |
+
Steve Barnes
|
| 711 |
+
Steve Dower
|
| 712 |
+
Steve Kowalik
|
| 713 |
+
Steven Myint
|
| 714 |
+
Steven Silvester
|
| 715 |
+
stonebig
|
| 716 |
+
studioj
|
| 717 |
+
Stéphane Bidoul
|
| 718 |
+
Stéphane Bidoul (ACSONE)
|
| 719 |
+
Stéphane Klein
|
| 720 |
+
Sumana Harihareswara
|
| 721 |
+
Surbhi Sharma
|
| 722 |
+
Sviatoslav Sydorenko
|
| 723 |
+
Sviatoslav Sydorenko (Святослав Сидоренко)
|
| 724 |
+
Swat009
|
| 725 |
+
Sylvain
|
| 726 |
+
Takayuki SHIMIZUKAWA
|
| 727 |
+
Taneli Hukkinen
|
| 728 |
+
tbeswick
|
| 729 |
+
Thiago
|
| 730 |
+
Thijs Triemstra
|
| 731 |
+
Thomas Fenzl
|
| 732 |
+
Thomas Grainger
|
| 733 |
+
Thomas Guettler
|
| 734 |
+
Thomas Johansson
|
| 735 |
+
Thomas Kluyver
|
| 736 |
+
Thomas Smith
|
| 737 |
+
Thomas VINCENT
|
| 738 |
+
Tim D. Smith
|
| 739 |
+
Tim Gates
|
| 740 |
+
Tim Harder
|
| 741 |
+
Tim Heap
|
| 742 |
+
tim smith
|
| 743 |
+
tinruufu
|
| 744 |
+
Tobias Hermann
|
| 745 |
+
Tom Forbes
|
| 746 |
+
Tom Freudenheim
|
| 747 |
+
Tom V
|
| 748 |
+
Tomas Hrnciar
|
| 749 |
+
Tomas Orsava
|
| 750 |
+
Tomer Chachamu
|
| 751 |
+
Tommi Enenkel | AnB
|
| 752 |
+
Tomáš Hrnčiar
|
| 753 |
+
Tony Beswick
|
| 754 |
+
Tony Narlock
|
| 755 |
+
Tony Zhaocheng Tan
|
| 756 |
+
TonyBeswick
|
| 757 |
+
toonarmycaptain
|
| 758 |
+
Toshio Kuratomi
|
| 759 |
+
toxinu
|
| 760 |
+
Travis Swicegood
|
| 761 |
+
Tushar Sadhwani
|
| 762 |
+
Tzu-ping Chung
|
| 763 |
+
Valentin Haenel
|
| 764 |
+
Victor Stinner
|
| 765 |
+
victorvpaulo
|
| 766 |
+
Vikram - Google
|
| 767 |
+
Viktor Szépe
|
| 768 |
+
Ville Skyttä
|
| 769 |
+
Vinay Sajip
|
| 770 |
+
Vincent Philippon
|
| 771 |
+
Vinicyus Macedo
|
| 772 |
+
Vipul Kumar
|
| 773 |
+
Vitaly Babiy
|
| 774 |
+
Vladimir Fokow
|
| 775 |
+
Vladimir Rutsky
|
| 776 |
+
W. Trevor King
|
| 777 |
+
Wil Tan
|
| 778 |
+
Wilfred Hughes
|
| 779 |
+
William Edwards
|
| 780 |
+
William ML Leslie
|
| 781 |
+
William T Olson
|
| 782 |
+
William Woodruff
|
| 783 |
+
Wilson Mo
|
| 784 |
+
wim glenn
|
| 785 |
+
Winson Luk
|
| 786 |
+
Wolfgang Maier
|
| 787 |
+
Wu Zhenyu
|
| 788 |
+
XAMES3
|
| 789 |
+
Xavier Fernandez
|
| 790 |
+
Xianpeng Shen
|
| 791 |
+
xoviat
|
| 792 |
+
xtreak
|
| 793 |
+
YAMAMOTO Takashi
|
| 794 |
+
Yen Chi Hsuan
|
| 795 |
+
Yeray Diaz Diaz
|
| 796 |
+
Yoval P
|
| 797 |
+
Yu Jian
|
| 798 |
+
Yuan Jing Vincent Yan
|
| 799 |
+
Yusuke Hayashi
|
| 800 |
+
Zearin
|
| 801 |
+
Zhiping Deng
|
| 802 |
+
ziebam
|
| 803 |
+
Zvezdan Petkovic
|
| 804 |
+
Łukasz Langa
|
| 805 |
+
Роман Донченко
|
| 806 |
+
Семён Марьясин
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/INSTALLER
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/LICENSE.txt
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Copyright (c) 2008-present The pip developers (see AUTHORS.txt file)
|
| 2 |
+
|
| 3 |
+
Permission is hereby granted, free of charge, to any person obtaining
|
| 4 |
+
a copy of this software and associated documentation files (the
|
| 5 |
+
"Software"), to deal in the Software without restriction, including
|
| 6 |
+
without limitation the rights to use, copy, modify, merge, publish,
|
| 7 |
+
distribute, sublicense, and/or sell copies of the Software, and to
|
| 8 |
+
permit persons to whom the Software is furnished to do so, subject to
|
| 9 |
+
the following conditions:
|
| 10 |
+
|
| 11 |
+
The above copyright notice and this permission notice shall be
|
| 12 |
+
included in all copies or substantial portions of the Software.
|
| 13 |
+
|
| 14 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 15 |
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 16 |
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
| 17 |
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
| 18 |
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
| 19 |
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
| 20 |
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/RECORD
ADDED
|
@@ -0,0 +1,854 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
../../../bin/pip,sha256=mLo0k16EHS7nB57szaQaugYC11vI_xoLGTUArZuUaz0,283
|
| 2 |
+
../../../bin/pip3,sha256=mLo0k16EHS7nB57szaQaugYC11vI_xoLGTUArZuUaz0,283
|
| 3 |
+
../../../bin/pip3.12,sha256=mLo0k16EHS7nB57szaQaugYC11vI_xoLGTUArZuUaz0,283
|
| 4 |
+
pip-25.0.1.dist-info/AUTHORS.txt,sha256=HqzpBVLfT1lBthqQfiDlVeFkg65hJ7ZQvvWhoq-BAsA,11018
|
| 5 |
+
pip-25.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
| 6 |
+
pip-25.0.1.dist-info/LICENSE.txt,sha256=Y0MApmnUmurmWxLGxIySTFGkzfPR_whtw0VtyLyqIQQ,1093
|
| 7 |
+
pip-25.0.1.dist-info/METADATA,sha256=T6cxjPMPl523zsRcEsu8K0-IoV8S7vv1mmKR0KA6-SY,3677
|
| 8 |
+
pip-25.0.1.dist-info/RECORD,,
|
| 9 |
+
pip-25.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 10 |
+
pip-25.0.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
| 11 |
+
pip-25.0.1.dist-info/entry_points.txt,sha256=eeIjuzfnfR2PrhbjnbzFU6MnSS70kZLxwaHHq6M-bD0,87
|
| 12 |
+
pip-25.0.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
| 13 |
+
pip/__init__.py,sha256=aKiv_sTe7UbE7qmtCinJutFjqN0MndZQZ1fKLNwFFLE,357
|
| 14 |
+
pip/__main__.py,sha256=WzbhHXTbSE6gBY19mNN9m4s5o_365LOvTYSgqgbdBhE,854
|
| 15 |
+
pip/__pip-runner__.py,sha256=cPPWuJ6NK_k-GzfvlejLFgwzmYUROmpAR6QC3Q-vkXQ,1450
|
| 16 |
+
pip/__pycache__/__init__.cpython-312.pyc,,
|
| 17 |
+
pip/__pycache__/__main__.cpython-312.pyc,,
|
| 18 |
+
pip/__pycache__/__pip-runner__.cpython-312.pyc,,
|
| 19 |
+
pip/_internal/__init__.py,sha256=MfcoOluDZ8QMCFYal04IqOJ9q6m2V7a0aOsnI-WOxUo,513
|
| 20 |
+
pip/_internal/__pycache__/__init__.cpython-312.pyc,,
|
| 21 |
+
pip/_internal/__pycache__/build_env.cpython-312.pyc,,
|
| 22 |
+
pip/_internal/__pycache__/cache.cpython-312.pyc,,
|
| 23 |
+
pip/_internal/__pycache__/configuration.cpython-312.pyc,,
|
| 24 |
+
pip/_internal/__pycache__/exceptions.cpython-312.pyc,,
|
| 25 |
+
pip/_internal/__pycache__/main.cpython-312.pyc,,
|
| 26 |
+
pip/_internal/__pycache__/pyproject.cpython-312.pyc,,
|
| 27 |
+
pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc,,
|
| 28 |
+
pip/_internal/__pycache__/wheel_builder.cpython-312.pyc,,
|
| 29 |
+
pip/_internal/build_env.py,sha256=Dv4UCClSg4uNaal_hL-trg5-zl3Is9CuIDxkChCkXF4,10700
|
| 30 |
+
pip/_internal/cache.py,sha256=Jb698p5PNigRtpW5o26wQNkkUv4MnQ94mc471wL63A0,10369
|
| 31 |
+
pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132
|
| 32 |
+
pip/_internal/cli/__pycache__/__init__.cpython-312.pyc,,
|
| 33 |
+
pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc,,
|
| 34 |
+
pip/_internal/cli/__pycache__/base_command.cpython-312.pyc,,
|
| 35 |
+
pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc,,
|
| 36 |
+
pip/_internal/cli/__pycache__/command_context.cpython-312.pyc,,
|
| 37 |
+
pip/_internal/cli/__pycache__/index_command.cpython-312.pyc,,
|
| 38 |
+
pip/_internal/cli/__pycache__/main.cpython-312.pyc,,
|
| 39 |
+
pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc,,
|
| 40 |
+
pip/_internal/cli/__pycache__/parser.cpython-312.pyc,,
|
| 41 |
+
pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc,,
|
| 42 |
+
pip/_internal/cli/__pycache__/req_command.cpython-312.pyc,,
|
| 43 |
+
pip/_internal/cli/__pycache__/spinners.cpython-312.pyc,,
|
| 44 |
+
pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc,,
|
| 45 |
+
pip/_internal/cli/autocompletion.py,sha256=Lli3Mr6aDNu7ZkJJFFvwD2-hFxNI6Avz8OwMyS5TVrs,6865
|
| 46 |
+
pip/_internal/cli/base_command.py,sha256=NZin6KMzW9NSYzKk4Tc8isb_TQYKR4CKd5j9mSm46PI,8625
|
| 47 |
+
pip/_internal/cli/cmdoptions.py,sha256=V3BB22F4_v_RkHaZ5onWnszhbBtjYZvNhbn9M0NO0HI,30116
|
| 48 |
+
pip/_internal/cli/command_context.py,sha256=RHgIPwtObh5KhMrd3YZTkl8zbVG-6Okml7YbFX4Ehg0,774
|
| 49 |
+
pip/_internal/cli/index_command.py,sha256=i_sgNlPmXC5iHUaY-dmmrHKKTgc5O4hWzisr5Al1rr0,5677
|
| 50 |
+
pip/_internal/cli/main.py,sha256=BDZef-bWe9g9Jpr4OVs4dDf-845HJsKw835T7AqEnAc,2817
|
| 51 |
+
pip/_internal/cli/main_parser.py,sha256=laDpsuBDl6kyfywp9eMMA9s84jfH2TJJn-vmL0GG90w,4338
|
| 52 |
+
pip/_internal/cli/parser.py,sha256=VCMtduzECUV87KaHNu-xJ-wLNL82yT3x16V4XBxOAqI,10825
|
| 53 |
+
pip/_internal/cli/progress_bars.py,sha256=9GcgusWtwfqou2zhAQp1XNbQHIDslqyyz9UwLzw7Jgc,2717
|
| 54 |
+
pip/_internal/cli/req_command.py,sha256=DqeFhmUMs6o6Ev8qawAcOoYNdAZsfyKS0MZI5jsJYwQ,12250
|
| 55 |
+
pip/_internal/cli/spinners.py,sha256=hIJ83GerdFgFCdobIA23Jggetegl_uC4Sp586nzFbPE,5118
|
| 56 |
+
pip/_internal/cli/status_codes.py,sha256=sEFHUaUJbqv8iArL3HAtcztWZmGOFX01hTesSytDEh0,116
|
| 57 |
+
pip/_internal/commands/__init__.py,sha256=5oRO9O3dM2vGuh0bFw4HOVletryrz5HHMmmPWwJrH9U,3882
|
| 58 |
+
pip/_internal/commands/__pycache__/__init__.cpython-312.pyc,,
|
| 59 |
+
pip/_internal/commands/__pycache__/cache.cpython-312.pyc,,
|
| 60 |
+
pip/_internal/commands/__pycache__/check.cpython-312.pyc,,
|
| 61 |
+
pip/_internal/commands/__pycache__/completion.cpython-312.pyc,,
|
| 62 |
+
pip/_internal/commands/__pycache__/configuration.cpython-312.pyc,,
|
| 63 |
+
pip/_internal/commands/__pycache__/debug.cpython-312.pyc,,
|
| 64 |
+
pip/_internal/commands/__pycache__/download.cpython-312.pyc,,
|
| 65 |
+
pip/_internal/commands/__pycache__/freeze.cpython-312.pyc,,
|
| 66 |
+
pip/_internal/commands/__pycache__/hash.cpython-312.pyc,,
|
| 67 |
+
pip/_internal/commands/__pycache__/help.cpython-312.pyc,,
|
| 68 |
+
pip/_internal/commands/__pycache__/index.cpython-312.pyc,,
|
| 69 |
+
pip/_internal/commands/__pycache__/inspect.cpython-312.pyc,,
|
| 70 |
+
pip/_internal/commands/__pycache__/install.cpython-312.pyc,,
|
| 71 |
+
pip/_internal/commands/__pycache__/list.cpython-312.pyc,,
|
| 72 |
+
pip/_internal/commands/__pycache__/search.cpython-312.pyc,,
|
| 73 |
+
pip/_internal/commands/__pycache__/show.cpython-312.pyc,,
|
| 74 |
+
pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc,,
|
| 75 |
+
pip/_internal/commands/__pycache__/wheel.cpython-312.pyc,,
|
| 76 |
+
pip/_internal/commands/cache.py,sha256=IOezTicHjGE5sWdBx2nwPVgbjuJHM3s-BZEkpZLemuY,8107
|
| 77 |
+
pip/_internal/commands/check.py,sha256=Hr_4eiMd9cgVDgEvjtIdw915NmL7ROIWW8enkr8slPQ,2268
|
| 78 |
+
pip/_internal/commands/completion.py,sha256=HT4lD0bgsflHq2IDgYfiEdp7IGGtE7s6MgI3xn0VQEw,4287
|
| 79 |
+
pip/_internal/commands/configuration.py,sha256=n98enwp6y0b5G6fiRQjaZo43FlJKYve_daMhN-4BRNc,9766
|
| 80 |
+
pip/_internal/commands/debug.py,sha256=DNDRgE9YsKrbYzU0s3VKi8rHtKF4X13CJ_br_8PUXO0,6797
|
| 81 |
+
pip/_internal/commands/download.py,sha256=0qB0nys6ZEPsog451lDsjL5Bx7Z97t-B80oFZKhpzKM,5273
|
| 82 |
+
pip/_internal/commands/freeze.py,sha256=2Vt72BYTSm9rzue6d8dNzt8idxWK4Db6Hd-anq7GQ80,3203
|
| 83 |
+
pip/_internal/commands/hash.py,sha256=EVVOuvGtoPEdFi8SNnmdqlCQrhCxV-kJsdwtdcCnXGQ,1703
|
| 84 |
+
pip/_internal/commands/help.py,sha256=gcc6QDkcgHMOuAn5UxaZwAStsRBrnGSn_yxjS57JIoM,1132
|
| 85 |
+
pip/_internal/commands/index.py,sha256=RAXxmJwFhVb5S1BYzb5ifX3sn9Na8v2CCVYwSMP8pao,4731
|
| 86 |
+
pip/_internal/commands/inspect.py,sha256=PGrY9TRTRCM3y5Ml8Bdk8DEOXquWRfscr4DRo1LOTPc,3189
|
| 87 |
+
pip/_internal/commands/install.py,sha256=r3yHQUxvxt7gD5j9n6zRDslAvtx9CT_whLuQJcktp6M,29390
|
| 88 |
+
pip/_internal/commands/list.py,sha256=oiIzSjLP6__d7dIS3q0Xb5ywsaOThBWRqMyjjKzkPdM,12769
|
| 89 |
+
pip/_internal/commands/search.py,sha256=fWkUQVx_gm8ebbFAlCgqtxKXT9rNahpJ-BI__3HNZpg,5626
|
| 90 |
+
pip/_internal/commands/show.py,sha256=0YBhCga3PAd81vT3l7UWflktSpB5-aYqQcJxBVPazVM,7857
|
| 91 |
+
pip/_internal/commands/uninstall.py,sha256=7pOR7enK76gimyxQbzxcG1OsyLXL3DvX939xmM8Fvtg,3892
|
| 92 |
+
pip/_internal/commands/wheel.py,sha256=eJRhr_qoNNxWAkkdJCNiQM7CXd4E1_YyQhsqJnBPGGg,6414
|
| 93 |
+
pip/_internal/configuration.py,sha256=-KOok6jh3hFzXMPQFPJ1_EFjBpAsge-RSreQuLHLmzo,14005
|
| 94 |
+
pip/_internal/distributions/__init__.py,sha256=Hq6kt6gXBgjNit5hTTWLAzeCNOKoB-N0pGYSqehrli8,858
|
| 95 |
+
pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc,,
|
| 96 |
+
pip/_internal/distributions/__pycache__/base.cpython-312.pyc,,
|
| 97 |
+
pip/_internal/distributions/__pycache__/installed.cpython-312.pyc,,
|
| 98 |
+
pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc,,
|
| 99 |
+
pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc,,
|
| 100 |
+
pip/_internal/distributions/base.py,sha256=QeB9qvKXDIjLdPBDE5fMgpfGqMMCr-govnuoQnGuiF8,1783
|
| 101 |
+
pip/_internal/distributions/installed.py,sha256=QinHFbWAQ8oE0pbD8MFZWkwlnfU1QYTccA1vnhrlYOU,842
|
| 102 |
+
pip/_internal/distributions/sdist.py,sha256=PlcP4a6-R6c98XnOM-b6Lkb3rsvh9iG4ok8shaanrzs,6751
|
| 103 |
+
pip/_internal/distributions/wheel.py,sha256=THBYfnv7VVt8mYhMYUtH13S1E7FDwtDyDfmUcl8ai0E,1317
|
| 104 |
+
pip/_internal/exceptions.py,sha256=2_byISIv3kSnI_9T-Esfxrt0LnTRgcUHyxu0twsHjQY,26481
|
| 105 |
+
pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30
|
| 106 |
+
pip/_internal/index/__pycache__/__init__.cpython-312.pyc,,
|
| 107 |
+
pip/_internal/index/__pycache__/collector.cpython-312.pyc,,
|
| 108 |
+
pip/_internal/index/__pycache__/package_finder.cpython-312.pyc,,
|
| 109 |
+
pip/_internal/index/__pycache__/sources.cpython-312.pyc,,
|
| 110 |
+
pip/_internal/index/collector.py,sha256=RdPO0JLAlmyBWPAWYHPyRoGjz3GNAeTngCNkbGey_mE,16265
|
| 111 |
+
pip/_internal/index/package_finder.py,sha256=mJHAljlHeHuclyuxtjvBZO6DtovKjsZjF_tCh_wux5E,38076
|
| 112 |
+
pip/_internal/index/sources.py,sha256=lPBLK5Xiy8Q6IQMio26Wl7ocfZOKkgGklIBNyUJ23fI,8632
|
| 113 |
+
pip/_internal/locations/__init__.py,sha256=UaAxeZ_f93FyouuFf4p7SXYF-4WstXuEvd3LbmPCAno,14925
|
| 114 |
+
pip/_internal/locations/__pycache__/__init__.cpython-312.pyc,,
|
| 115 |
+
pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc,,
|
| 116 |
+
pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc,,
|
| 117 |
+
pip/_internal/locations/__pycache__/base.cpython-312.pyc,,
|
| 118 |
+
pip/_internal/locations/_distutils.py,sha256=x6nyVLj7X11Y4khIdf-mFlxMl2FWadtVEgeb8upc_WI,6013
|
| 119 |
+
pip/_internal/locations/_sysconfig.py,sha256=IGzds60qsFneRogC-oeBaY7bEh3lPt_v47kMJChQXsU,7724
|
| 120 |
+
pip/_internal/locations/base.py,sha256=RQiPi1d4FVM2Bxk04dQhXZ2PqkeljEL2fZZ9SYqIQ78,2556
|
| 121 |
+
pip/_internal/main.py,sha256=r-UnUe8HLo5XFJz8inTcOOTiu_sxNhgHb6VwlGUllOI,340
|
| 122 |
+
pip/_internal/metadata/__init__.py,sha256=CU8jK1TZso7jOLdr0sX9xDjrcs5iy8d7IRK-hvaIO5Y,4337
|
| 123 |
+
pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc,,
|
| 124 |
+
pip/_internal/metadata/__pycache__/_json.cpython-312.pyc,,
|
| 125 |
+
pip/_internal/metadata/__pycache__/base.cpython-312.pyc,,
|
| 126 |
+
pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc,,
|
| 127 |
+
pip/_internal/metadata/_json.py,sha256=ezrIYazHCINM2QUk1eA9wEAMj3aeGWeDVgGalgUzKpc,2707
|
| 128 |
+
pip/_internal/metadata/base.py,sha256=ft0K5XNgI4ETqZnRv2-CtvgYiMOMAeGMAzxT-f6VLJA,25298
|
| 129 |
+
pip/_internal/metadata/importlib/__init__.py,sha256=jUUidoxnHcfITHHaAWG1G2i5fdBYklv_uJcjo2x7VYE,135
|
| 130 |
+
pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc,,
|
| 131 |
+
pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc,,
|
| 132 |
+
pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc,,
|
| 133 |
+
pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc,,
|
| 134 |
+
pip/_internal/metadata/importlib/_compat.py,sha256=c6av8sP8BBjAZuFSJow1iWfygUXNM3xRTCn5nqw6B9M,2796
|
| 135 |
+
pip/_internal/metadata/importlib/_dists.py,sha256=ftmYiyfUGUIjnVwt6W-Ijsimy5c28KgmXly5Q5IQ2P4,8279
|
| 136 |
+
pip/_internal/metadata/importlib/_envs.py,sha256=UUB980XSrDWrMpQ1_G45i0r8Hqlg_tg3IPQ63mEqbNc,7431
|
| 137 |
+
pip/_internal/metadata/pkg_resources.py,sha256=U07ETAINSGeSRBfWUG93E4tZZbaW_f7PGzEqZN0hulc,10542
|
| 138 |
+
pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63
|
| 139 |
+
pip/_internal/models/__pycache__/__init__.cpython-312.pyc,,
|
| 140 |
+
pip/_internal/models/__pycache__/candidate.cpython-312.pyc,,
|
| 141 |
+
pip/_internal/models/__pycache__/direct_url.cpython-312.pyc,,
|
| 142 |
+
pip/_internal/models/__pycache__/format_control.cpython-312.pyc,,
|
| 143 |
+
pip/_internal/models/__pycache__/index.cpython-312.pyc,,
|
| 144 |
+
pip/_internal/models/__pycache__/installation_report.cpython-312.pyc,,
|
| 145 |
+
pip/_internal/models/__pycache__/link.cpython-312.pyc,,
|
| 146 |
+
pip/_internal/models/__pycache__/scheme.cpython-312.pyc,,
|
| 147 |
+
pip/_internal/models/__pycache__/search_scope.cpython-312.pyc,,
|
| 148 |
+
pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc,,
|
| 149 |
+
pip/_internal/models/__pycache__/target_python.cpython-312.pyc,,
|
| 150 |
+
pip/_internal/models/__pycache__/wheel.cpython-312.pyc,,
|
| 151 |
+
pip/_internal/models/candidate.py,sha256=zzgFRuw_kWPjKpGw7LC0ZUMD2CQ2EberUIYs8izjdCA,753
|
| 152 |
+
pip/_internal/models/direct_url.py,sha256=uBtY2HHd3TO9cKQJWh0ThvE5FRr-MWRYChRU4IG9HZE,6578
|
| 153 |
+
pip/_internal/models/format_control.py,sha256=wtsQqSK9HaUiNxQEuB-C62eVimw6G4_VQFxV9-_KDBE,2486
|
| 154 |
+
pip/_internal/models/index.py,sha256=tYnL8oxGi4aSNWur0mG8DAP7rC6yuha_MwJO8xw0crI,1030
|
| 155 |
+
pip/_internal/models/installation_report.py,sha256=zRVZoaz-2vsrezj_H3hLOhMZCK9c7TbzWgC-jOalD00,2818
|
| 156 |
+
pip/_internal/models/link.py,sha256=GQ8hq7x-FDFPv25Nbn2veIM-MlBrGZDGLd7aZeF4Xrg,21448
|
| 157 |
+
pip/_internal/models/scheme.py,sha256=PakmHJM3e8OOWSZFtfz1Az7f1meONJnkGuQxFlt3wBE,575
|
| 158 |
+
pip/_internal/models/search_scope.py,sha256=67NEnsYY84784S-MM7ekQuo9KXLH-7MzFntXjapvAo0,4531
|
| 159 |
+
pip/_internal/models/selection_prefs.py,sha256=qaFfDs3ciqoXPg6xx45N1jPLqccLJw4N0s4P0PyHTQ8,2015
|
| 160 |
+
pip/_internal/models/target_python.py,sha256=2XaH2rZ5ZF-K5wcJbEMGEl7SqrTToDDNkrtQ2v_v_-Q,4271
|
| 161 |
+
pip/_internal/models/wheel.py,sha256=G7dND_s4ebPkEL7RJ1qCY0QhUUWIIK6AnjWgRATF5no,4539
|
| 162 |
+
pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50
|
| 163 |
+
pip/_internal/network/__pycache__/__init__.cpython-312.pyc,,
|
| 164 |
+
pip/_internal/network/__pycache__/auth.cpython-312.pyc,,
|
| 165 |
+
pip/_internal/network/__pycache__/cache.cpython-312.pyc,,
|
| 166 |
+
pip/_internal/network/__pycache__/download.cpython-312.pyc,,
|
| 167 |
+
pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc,,
|
| 168 |
+
pip/_internal/network/__pycache__/session.cpython-312.pyc,,
|
| 169 |
+
pip/_internal/network/__pycache__/utils.cpython-312.pyc,,
|
| 170 |
+
pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc,,
|
| 171 |
+
pip/_internal/network/auth.py,sha256=D4gASjUrqoDFlSt6gQ767KAAjv6PUyJU0puDlhXNVRE,20809
|
| 172 |
+
pip/_internal/network/cache.py,sha256=0yGMA3Eet59xBSLtbPAenvI53dl29oUOeqZ2c0QL2Ss,4614
|
| 173 |
+
pip/_internal/network/download.py,sha256=FLOP29dPYECBiAi7eEjvAbNkyzaKNqbyjOT2m8HPW8U,6048
|
| 174 |
+
pip/_internal/network/lazy_wheel.py,sha256=PBdoMoNQQIA84Fhgne38jWF52W4x_KtsHjxgv4dkRKA,7622
|
| 175 |
+
pip/_internal/network/session.py,sha256=msM4es16LmmNEYNkrYyg8fTc7gAHbKFltawfKP27LOI,18771
|
| 176 |
+
pip/_internal/network/utils.py,sha256=Inaxel-NxBu4PQWkjyErdnfewsFCcgHph7dzR1-FboY,4088
|
| 177 |
+
pip/_internal/network/xmlrpc.py,sha256=sAxzOacJ-N1NXGPvap9jC3zuYWSnnv3GXtgR2-E2APA,1838
|
| 178 |
+
pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 179 |
+
pip/_internal/operations/__pycache__/__init__.cpython-312.pyc,,
|
| 180 |
+
pip/_internal/operations/__pycache__/check.cpython-312.pyc,,
|
| 181 |
+
pip/_internal/operations/__pycache__/freeze.cpython-312.pyc,,
|
| 182 |
+
pip/_internal/operations/__pycache__/prepare.cpython-312.pyc,,
|
| 183 |
+
pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 184 |
+
pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc,,
|
| 185 |
+
pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc,,
|
| 186 |
+
pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc,,
|
| 187 |
+
pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc,,
|
| 188 |
+
pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc,,
|
| 189 |
+
pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc,,
|
| 190 |
+
pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc,,
|
| 191 |
+
pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc,,
|
| 192 |
+
pip/_internal/operations/build/build_tracker.py,sha256=-ARW_TcjHCOX7D2NUOGntB4Fgc6b4aolsXkAK6BWL7w,4774
|
| 193 |
+
pip/_internal/operations/build/metadata.py,sha256=9S0CUD8U3QqZeXp-Zyt8HxwU90lE4QrnYDgrqZDzBnc,1422
|
| 194 |
+
pip/_internal/operations/build/metadata_editable.py,sha256=xlAwcP9q_8_fmv_3I39w9EZ7SQV9hnJZr9VuTsq2Y68,1510
|
| 195 |
+
pip/_internal/operations/build/metadata_legacy.py,sha256=8i6i1QZX9m_lKPStEFsHKM0MT4a-CD408JOw99daLmo,2190
|
| 196 |
+
pip/_internal/operations/build/wheel.py,sha256=sT12FBLAxDC6wyrDorh8kvcZ1jG5qInCRWzzP-UkJiQ,1075
|
| 197 |
+
pip/_internal/operations/build/wheel_editable.py,sha256=yOtoH6zpAkoKYEUtr8FhzrYnkNHQaQBjWQ2HYae1MQg,1417
|
| 198 |
+
pip/_internal/operations/build/wheel_legacy.py,sha256=K-6kNhmj-1xDF45ny1yheMerF0ui4EoQCLzEoHh6-tc,3045
|
| 199 |
+
pip/_internal/operations/check.py,sha256=L24vRL8VWbyywdoeAhM89WCd8zLTnjIbULlKelUgIec,5912
|
| 200 |
+
pip/_internal/operations/freeze.py,sha256=1_M79jAQKnCxWr-KCCmHuVXOVFGaUJHmoWLfFzgh7K4,9843
|
| 201 |
+
pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51
|
| 202 |
+
pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc,,
|
| 203 |
+
pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc,,
|
| 204 |
+
pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc,,
|
| 205 |
+
pip/_internal/operations/install/editable_legacy.py,sha256=PoEsNEPGbIZ2yQphPsmYTKLOCMs4gv5OcCdzW124NcA,1283
|
| 206 |
+
pip/_internal/operations/install/wheel.py,sha256=X5Iz9yUg5LlK5VNQ9g2ikc6dcRu8EPi_SUi5iuEDRgo,27615
|
| 207 |
+
pip/_internal/operations/prepare.py,sha256=joWJwPkuqGscQgVNImLK71e9hRapwKvRCM8HclysmvU,28118
|
| 208 |
+
pip/_internal/pyproject.py,sha256=GLJ6rWRS5_2noKdajohoLyDty57Z7QXhcUAYghmTnWc,7286
|
| 209 |
+
pip/_internal/req/__init__.py,sha256=HxBFtZy_BbCclLgr26waMtpzYdO5T3vxePvpGAXSt5s,2653
|
| 210 |
+
pip/_internal/req/__pycache__/__init__.cpython-312.pyc,,
|
| 211 |
+
pip/_internal/req/__pycache__/constructors.cpython-312.pyc,,
|
| 212 |
+
pip/_internal/req/__pycache__/req_file.cpython-312.pyc,,
|
| 213 |
+
pip/_internal/req/__pycache__/req_install.cpython-312.pyc,,
|
| 214 |
+
pip/_internal/req/__pycache__/req_set.cpython-312.pyc,,
|
| 215 |
+
pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc,,
|
| 216 |
+
pip/_internal/req/constructors.py,sha256=v1qzCN1mIldwx-nCrPc8JO4lxkm3Fv8M5RWvt8LISjc,18430
|
| 217 |
+
pip/_internal/req/req_file.py,sha256=eys82McgaICOGic2UZRHjD720piKJPwmeSYdXlWwl6w,20234
|
| 218 |
+
pip/_internal/req/req_install.py,sha256=BMptxHYg2uG_b-7HFEULPb3nuw0FMAbuea8zTq2rE7w,35786
|
| 219 |
+
pip/_internal/req/req_set.py,sha256=j3esG0s6SzoVReX9rWn4rpYNtyET_fwxbwJPRimvRxo,2858
|
| 220 |
+
pip/_internal/req/req_uninstall.py,sha256=qzDIxJo-OETWqGais7tSMCDcWbATYABT-Tid3ityF0s,23853
|
| 221 |
+
pip/_internal/resolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 222 |
+
pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc,,
|
| 223 |
+
pip/_internal/resolution/__pycache__/base.cpython-312.pyc,,
|
| 224 |
+
pip/_internal/resolution/base.py,sha256=qlmh325SBVfvG6Me9gc5Nsh5sdwHBwzHBq6aEXtKsLA,583
|
| 225 |
+
pip/_internal/resolution/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 226 |
+
pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc,,
|
| 227 |
+
pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc,,
|
| 228 |
+
pip/_internal/resolution/legacy/resolver.py,sha256=3HZiJBRd1FTN6jQpI4qRO8-TbLYeIbUTS6PFvXnXs2w,24068
|
| 229 |
+
pip/_internal/resolution/resolvelib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 230 |
+
pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc,,
|
| 231 |
+
pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc,,
|
| 232 |
+
pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc,,
|
| 233 |
+
pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc,,
|
| 234 |
+
pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc,,
|
| 235 |
+
pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc,,
|
| 236 |
+
pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc,,
|
| 237 |
+
pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc,,
|
| 238 |
+
pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc,,
|
| 239 |
+
pip/_internal/resolution/resolvelib/base.py,sha256=DCf669FsqyQY5uqXeePDHQY1e4QO-pBzWH8O0s9-K94,5023
|
| 240 |
+
pip/_internal/resolution/resolvelib/candidates.py,sha256=5UZ1upNnmqsP-nmEZaDYxaBgCoejw_e2WVGmmAvBxXc,20001
|
| 241 |
+
pip/_internal/resolution/resolvelib/factory.py,sha256=MJOLSZJY8_28PPdcutoQ6gjJ_1eBDt6Z1edtfTJyR4E,32659
|
| 242 |
+
pip/_internal/resolution/resolvelib/found_candidates.py,sha256=9hrTyQqFvl9I7Tji79F1AxHv39Qh1rkJ_7deSHSMfQc,6383
|
| 243 |
+
pip/_internal/resolution/resolvelib/provider.py,sha256=bcsFnYvlmtB80cwVdW1fIwgol8ZNr1f1VHyRTkz47SM,9935
|
| 244 |
+
pip/_internal/resolution/resolvelib/reporter.py,sha256=00JtoXEkTlw0-rl_sl54d71avwOsJHt9GGHcrj5Sza0,3168
|
| 245 |
+
pip/_internal/resolution/resolvelib/requirements.py,sha256=7JG4Z72e5Yk4vU0S5ulGvbqTy4FMQGYhY5zQhX9zTtY,8065
|
| 246 |
+
pip/_internal/resolution/resolvelib/resolver.py,sha256=nLJOsVMEVi2gQUVJoUFKMZAeu2f7GRMjGMvNSWyz0Bc,12592
|
| 247 |
+
pip/_internal/self_outdated_check.py,sha256=1PFtttvLAeyCVR3tPoBq2sOlPD0IJ-KSqU6bc1HUk9c,8318
|
| 248 |
+
pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 249 |
+
pip/_internal/utils/__pycache__/__init__.cpython-312.pyc,,
|
| 250 |
+
pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc,,
|
| 251 |
+
pip/_internal/utils/__pycache__/_log.cpython-312.pyc,,
|
| 252 |
+
pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc,,
|
| 253 |
+
pip/_internal/utils/__pycache__/compat.cpython-312.pyc,,
|
| 254 |
+
pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc,,
|
| 255 |
+
pip/_internal/utils/__pycache__/datetime.cpython-312.pyc,,
|
| 256 |
+
pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc,,
|
| 257 |
+
pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc,,
|
| 258 |
+
pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc,,
|
| 259 |
+
pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc,,
|
| 260 |
+
pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc,,
|
| 261 |
+
pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc,,
|
| 262 |
+
pip/_internal/utils/__pycache__/glibc.cpython-312.pyc,,
|
| 263 |
+
pip/_internal/utils/__pycache__/hashes.cpython-312.pyc,,
|
| 264 |
+
pip/_internal/utils/__pycache__/logging.cpython-312.pyc,,
|
| 265 |
+
pip/_internal/utils/__pycache__/misc.cpython-312.pyc,,
|
| 266 |
+
pip/_internal/utils/__pycache__/packaging.cpython-312.pyc,,
|
| 267 |
+
pip/_internal/utils/__pycache__/retry.cpython-312.pyc,,
|
| 268 |
+
pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc,,
|
| 269 |
+
pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc,,
|
| 270 |
+
pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc,,
|
| 271 |
+
pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc,,
|
| 272 |
+
pip/_internal/utils/__pycache__/urls.cpython-312.pyc,,
|
| 273 |
+
pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc,,
|
| 274 |
+
pip/_internal/utils/__pycache__/wheel.cpython-312.pyc,,
|
| 275 |
+
pip/_internal/utils/_jaraco_text.py,sha256=M15uUPIh5NpP1tdUGBxRau6q1ZAEtI8-XyLEETscFfE,3350
|
| 276 |
+
pip/_internal/utils/_log.py,sha256=-jHLOE_THaZz5BFcCnoSL9EYAtJ0nXem49s9of4jvKw,1015
|
| 277 |
+
pip/_internal/utils/appdirs.py,sha256=swgcTKOm3daLeXTW6v5BUS2Ti2RvEnGRQYH_yDXklAo,1665
|
| 278 |
+
pip/_internal/utils/compat.py,sha256=ckkFveBiYQjRWjkNsajt_oWPS57tJvE8XxoC4OIYgCY,2399
|
| 279 |
+
pip/_internal/utils/compatibility_tags.py,sha256=OWq5axHpW-MEEPztGdvgADrgJPAcV9a88Rxm4Z8VBs8,6272
|
| 280 |
+
pip/_internal/utils/datetime.py,sha256=m21Y3wAtQc-ji6Veb6k_M5g6A0ZyFI4egchTdnwh-pQ,242
|
| 281 |
+
pip/_internal/utils/deprecation.py,sha256=k7Qg_UBAaaTdyq82YVARA6D7RmcGTXGv7fnfcgigj4Q,3707
|
| 282 |
+
pip/_internal/utils/direct_url_helpers.py,sha256=r2MRtkVDACv9AGqYODBUC9CjwgtsUU1s68hmgfCJMtA,3196
|
| 283 |
+
pip/_internal/utils/egg_link.py,sha256=0FePZoUYKv4RGQ2t6x7w5Z427wbA_Uo3WZnAkrgsuqo,2463
|
| 284 |
+
pip/_internal/utils/entrypoints.py,sha256=YlhLTRl2oHBAuqhc-zmL7USS67TPWVHImjeAQHreZTQ,3064
|
| 285 |
+
pip/_internal/utils/filesystem.py,sha256=ajvA-q4ocliW9kPp8Yquh-4vssXbu-UKbo5FV9V4X64,4950
|
| 286 |
+
pip/_internal/utils/filetypes.py,sha256=i8XAQ0eFCog26Fw9yV0Yb1ygAqKYB1w9Cz9n0fj8gZU,716
|
| 287 |
+
pip/_internal/utils/glibc.py,sha256=vUkWq_1pJuzcYNcGKLlQmABoUiisK8noYY1yc8Wq4w4,3734
|
| 288 |
+
pip/_internal/utils/hashes.py,sha256=XGGLL0AG8-RhWnyz87xF6MFZ--BKadHU35D47eApCKI,4972
|
| 289 |
+
pip/_internal/utils/logging.py,sha256=ONfbrhaD248akkosK79if97n20EABxwjOxp5dE5RCRY,11845
|
| 290 |
+
pip/_internal/utils/misc.py,sha256=DWnYxBUItjRp7hhxEg4ih6P6YpKrykM86dbi_EcU8SQ,23450
|
| 291 |
+
pip/_internal/utils/packaging.py,sha256=cm-X_0HVHV_jRwUVZh6AuEWqSitzf8EpaJ7Uv2UGu6A,2142
|
| 292 |
+
pip/_internal/utils/retry.py,sha256=mhFbykXjhTnZfgzeuy-vl9c8nECnYn_CMtwNJX2tYzQ,1392
|
| 293 |
+
pip/_internal/utils/setuptools_build.py,sha256=ouXpud-jeS8xPyTPsXJ-m34NPvK5os45otAzdSV_IJE,4435
|
| 294 |
+
pip/_internal/utils/subprocess.py,sha256=EsvqSRiSMHF98T8Txmu6NLU3U--MpTTQjtNgKP0P--M,8988
|
| 295 |
+
pip/_internal/utils/temp_dir.py,sha256=5qOXe8M4JeY6vaFQM867d5zkp1bSwMZ-KT5jymmP0Zg,9310
|
| 296 |
+
pip/_internal/utils/unpacking.py,sha256=_gVdyzTRDMYktpnYljn4OoxrZTtMCf4xknSm4rK0WaA,11967
|
| 297 |
+
pip/_internal/utils/urls.py,sha256=qceSOZb5lbNDrHNsv7_S4L4Ytszja5NwPKUMnZHbYnM,1599
|
| 298 |
+
pip/_internal/utils/virtualenv.py,sha256=S6f7csYorRpiD6cvn3jISZYc3I8PJC43H5iMFpRAEDU,3456
|
| 299 |
+
pip/_internal/utils/wheel.py,sha256=b442jkydFHjXzDy6cMR7MpzWBJ1Q82hR5F33cmcHV3g,4494
|
| 300 |
+
pip/_internal/vcs/__init__.py,sha256=UAqvzpbi0VbZo3Ub6skEeZAw-ooIZR-zX_WpCbxyCoU,596
|
| 301 |
+
pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc,,
|
| 302 |
+
pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc,,
|
| 303 |
+
pip/_internal/vcs/__pycache__/git.cpython-312.pyc,,
|
| 304 |
+
pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc,,
|
| 305 |
+
pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc,,
|
| 306 |
+
pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc,,
|
| 307 |
+
pip/_internal/vcs/bazaar.py,sha256=EKStcQaKpNu0NK4p5Q10Oc4xb3DUxFw024XrJy40bFQ,3528
|
| 308 |
+
pip/_internal/vcs/git.py,sha256=3tpc9LQA_J4IVW5r5NvWaaSeDzcmJOrSFZN0J8vIKfU,18177
|
| 309 |
+
pip/_internal/vcs/mercurial.py,sha256=oULOhzJ2Uie-06d1omkL-_Gc6meGaUkyogvqG9ZCyPs,5249
|
| 310 |
+
pip/_internal/vcs/subversion.py,sha256=ddTugHBqHzV3ebKlU5QXHPN4gUqlyXbOx8q8NgXKvs8,11735
|
| 311 |
+
pip/_internal/vcs/versioncontrol.py,sha256=cvf_-hnTAjQLXJ3d17FMNhQfcO1AcKWUF10tfrYyP-c,22440
|
| 312 |
+
pip/_internal/wheel_builder.py,sha256=DL3A8LKeRj_ACp11WS5wSgASgPFqeyAeXJKdXfmaWXU,11799
|
| 313 |
+
pip/_vendor/__init__.py,sha256=JYuAXvClhInxIrA2FTp5p-uuWVL7WV6-vEpTs46-Qh4,4873
|
| 314 |
+
pip/_vendor/__pycache__/__init__.cpython-312.pyc,,
|
| 315 |
+
pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc,,
|
| 316 |
+
pip/_vendor/cachecontrol/__init__.py,sha256=LMC5CBe94ZRL5xhlzwyPDmHXvBD0p7lT4R3Z73D6a_I,677
|
| 317 |
+
pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc,,
|
| 318 |
+
pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc,,
|
| 319 |
+
pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc,,
|
| 320 |
+
pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc,,
|
| 321 |
+
pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc,,
|
| 322 |
+
pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc,,
|
| 323 |
+
pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc,,
|
| 324 |
+
pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc,,
|
| 325 |
+
pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc,,
|
| 326 |
+
pip/_vendor/cachecontrol/_cmd.py,sha256=iist2EpzJvDVIhMAxXq8iFnTBsiZAd6iplxfmNboNyk,1737
|
| 327 |
+
pip/_vendor/cachecontrol/adapter.py,sha256=febjY4LV87iiCIK3jcl8iH58iaSA7b9WkovsByIDK0Y,6348
|
| 328 |
+
pip/_vendor/cachecontrol/cache.py,sha256=OXwv7Fn2AwnKNiahJHnjtvaKLndvVLv_-zO-ltlV9qI,1953
|
| 329 |
+
pip/_vendor/cachecontrol/caches/__init__.py,sha256=dtrrroK5BnADR1GWjCZ19aZ0tFsMfvFBtLQQU1sp_ag,303
|
| 330 |
+
pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc,,
|
| 331 |
+
pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc,,
|
| 332 |
+
pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc,,
|
| 333 |
+
pip/_vendor/cachecontrol/caches/file_cache.py,sha256=b7oMgsRSqPmEsonVJw6uFEYUlFgD6GF8TyacOGG1x3M,5399
|
| 334 |
+
pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=9rmqwtYu_ljVkW6_oLqbC7EaX_a8YT_yLuna-eS0dgo,1386
|
| 335 |
+
pip/_vendor/cachecontrol/controller.py,sha256=glbPj2iZlGqdBg8z09D2DtQOzoOGXnWvy7K2LEyBsEQ,18576
|
| 336 |
+
pip/_vendor/cachecontrol/filewrapper.py,sha256=2ktXNPE0KqnyzF24aOsKCA58HQq1xeC6l2g6_zwjghc,4291
|
| 337 |
+
pip/_vendor/cachecontrol/heuristics.py,sha256=gqMXU8w0gQuEQiSdu3Yg-0vd9kW7nrWKbLca75rheGE,4881
|
| 338 |
+
pip/_vendor/cachecontrol/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 339 |
+
pip/_vendor/cachecontrol/serialize.py,sha256=HQd2IllQ05HzPkVLMXTF2uX5mjEQjDBkxCqUJUODpZk,5163
|
| 340 |
+
pip/_vendor/cachecontrol/wrapper.py,sha256=hsGc7g8QGQTT-4f8tgz3AM5qwScg6FO0BSdLSRdEvpU,1417
|
| 341 |
+
pip/_vendor/certifi/__init__.py,sha256=p_GYZrjUwPBUhpLlCZoGb0miKBKSqDAyZC5DvIuqbHQ,94
|
| 342 |
+
pip/_vendor/certifi/__main__.py,sha256=1k3Cr95vCxxGRGDljrW3wMdpZdL3Nhf0u1n-k2qdsCY,255
|
| 343 |
+
pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc,,
|
| 344 |
+
pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc,,
|
| 345 |
+
pip/_vendor/certifi/__pycache__/core.cpython-312.pyc,,
|
| 346 |
+
pip/_vendor/certifi/cacert.pem,sha256=lO3rZukXdPyuk6BWUJFOKQliWaXH6HGh9l1GGrUgG0c,299427
|
| 347 |
+
pip/_vendor/certifi/core.py,sha256=2SRT5rIcQChFDbe37BQa-kULxAgJ8qN6l1jfqTp4HIs,4486
|
| 348 |
+
pip/_vendor/certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 349 |
+
pip/_vendor/distlib/__init__.py,sha256=dcwgYGYGQqAEawBXPDtIx80DO_3cOmFv8HTc8JMzknQ,625
|
| 350 |
+
pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc,,
|
| 351 |
+
pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc,,
|
| 352 |
+
pip/_vendor/distlib/__pycache__/database.cpython-312.pyc,,
|
| 353 |
+
pip/_vendor/distlib/__pycache__/index.cpython-312.pyc,,
|
| 354 |
+
pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc,,
|
| 355 |
+
pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc,,
|
| 356 |
+
pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc,,
|
| 357 |
+
pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc,,
|
| 358 |
+
pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc,,
|
| 359 |
+
pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc,,
|
| 360 |
+
pip/_vendor/distlib/__pycache__/util.cpython-312.pyc,,
|
| 361 |
+
pip/_vendor/distlib/__pycache__/version.cpython-312.pyc,,
|
| 362 |
+
pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc,,
|
| 363 |
+
pip/_vendor/distlib/compat.py,sha256=2jRSjRI4o-vlXeTK2BCGIUhkc6e9ZGhSsacRM5oseTw,41467
|
| 364 |
+
pip/_vendor/distlib/database.py,sha256=mHy_LxiXIsIVRb-T0-idBrVLw3Ffij5teHCpbjmJ9YU,51160
|
| 365 |
+
pip/_vendor/distlib/index.py,sha256=lTbw268rRhj8dw1sib3VZ_0EhSGgoJO3FKJzSFMOaeA,20797
|
| 366 |
+
pip/_vendor/distlib/locators.py,sha256=oBeAZpFuPQSY09MgNnLfQGGAXXvVO96BFpZyKMuK4tM,51026
|
| 367 |
+
pip/_vendor/distlib/manifest.py,sha256=3qfmAmVwxRqU1o23AlfXrQGZzh6g_GGzTAP_Hb9C5zQ,14168
|
| 368 |
+
pip/_vendor/distlib/markers.py,sha256=X6sDvkFGcYS8gUW8hfsWuKEKAqhQZAJ7iXOMLxRYjYk,5164
|
| 369 |
+
pip/_vendor/distlib/metadata.py,sha256=zil3sg2EUfLXVigljY2d_03IJt-JSs7nX-73fECMX2s,38724
|
| 370 |
+
pip/_vendor/distlib/resources.py,sha256=LwbPksc0A1JMbi6XnuPdMBUn83X7BPuFNWqPGEKI698,10820
|
| 371 |
+
pip/_vendor/distlib/scripts.py,sha256=BJliaDAZaVB7WAkwokgC3HXwLD2iWiHaVI50H7C6eG8,18608
|
| 372 |
+
pip/_vendor/distlib/t32.exe,sha256=a0GV5kCoWsMutvliiCKmIgV98eRZ33wXoS-XrqvJQVs,97792
|
| 373 |
+
pip/_vendor/distlib/t64-arm.exe,sha256=68TAa32V504xVBnufojh0PcenpR3U4wAqTqf-MZqbPw,182784
|
| 374 |
+
pip/_vendor/distlib/t64.exe,sha256=gaYY8hy4fbkHYTTnA4i26ct8IQZzkBG2pRdy0iyuBrc,108032
|
| 375 |
+
pip/_vendor/distlib/util.py,sha256=vMPGvsS4j9hF6Y9k3Tyom1aaHLb0rFmZAEyzeAdel9w,66682
|
| 376 |
+
pip/_vendor/distlib/version.py,sha256=s5VIs8wBn0fxzGxWM_aA2ZZyx525HcZbMvcTlTyZ3Rg,23727
|
| 377 |
+
pip/_vendor/distlib/w32.exe,sha256=R4csx3-OGM9kL4aPIzQKRo5TfmRSHZo6QWyLhDhNBks,91648
|
| 378 |
+
pip/_vendor/distlib/w64-arm.exe,sha256=xdyYhKj0WDcVUOCb05blQYvzdYIKMbmJn2SZvzkcey4,168448
|
| 379 |
+
pip/_vendor/distlib/w64.exe,sha256=ejGf-rojoBfXseGLpya6bFTFPWRG21X5KvU8J5iU-K0,101888
|
| 380 |
+
pip/_vendor/distlib/wheel.py,sha256=DFIVguEQHCdxnSdAO0dfFsgMcvVZitg7bCOuLwZ7A_s,43979
|
| 381 |
+
pip/_vendor/distro/__init__.py,sha256=2fHjF-SfgPvjyNZ1iHh_wjqWdR_Yo5ODHwZC0jLBPhc,981
|
| 382 |
+
pip/_vendor/distro/__main__.py,sha256=bu9d3TifoKciZFcqRBuygV3GSuThnVD_m2IK4cz96Vs,64
|
| 383 |
+
pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc,,
|
| 384 |
+
pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc,,
|
| 385 |
+
pip/_vendor/distro/__pycache__/distro.cpython-312.pyc,,
|
| 386 |
+
pip/_vendor/distro/distro.py,sha256=XqbefacAhDT4zr_trnbA15eY8vdK4GTghgmvUGrEM_4,49430
|
| 387 |
+
pip/_vendor/distro/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 388 |
+
pip/_vendor/idna/__init__.py,sha256=MPqNDLZbXqGaNdXxAFhiqFPKEQXju2jNQhCey6-5eJM,868
|
| 389 |
+
pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc,,
|
| 390 |
+
pip/_vendor/idna/__pycache__/codec.cpython-312.pyc,,
|
| 391 |
+
pip/_vendor/idna/__pycache__/compat.cpython-312.pyc,,
|
| 392 |
+
pip/_vendor/idna/__pycache__/core.cpython-312.pyc,,
|
| 393 |
+
pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc,,
|
| 394 |
+
pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc,,
|
| 395 |
+
pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc,,
|
| 396 |
+
pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc,,
|
| 397 |
+
pip/_vendor/idna/codec.py,sha256=PEew3ItwzjW4hymbasnty2N2OXvNcgHB-JjrBuxHPYY,3422
|
| 398 |
+
pip/_vendor/idna/compat.py,sha256=RzLy6QQCdl9784aFhb2EX9EKGCJjg0P3PilGdeXXcx8,316
|
| 399 |
+
pip/_vendor/idna/core.py,sha256=YJYyAMnwiQEPjVC4-Fqu_p4CJ6yKKuDGmppBNQNQpFs,13239
|
| 400 |
+
pip/_vendor/idna/idnadata.py,sha256=W30GcIGvtOWYwAjZj4ZjuouUutC6ffgNuyjJy7fZ-lo,78306
|
| 401 |
+
pip/_vendor/idna/intranges.py,sha256=amUtkdhYcQG8Zr-CoMM_kVRacxkivC1WgxN1b63KKdU,1898
|
| 402 |
+
pip/_vendor/idna/package_data.py,sha256=q59S3OXsc5VI8j6vSD0sGBMyk6zZ4vWFREE88yCJYKs,21
|
| 403 |
+
pip/_vendor/idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 404 |
+
pip/_vendor/idna/uts46data.py,sha256=rt90K9J40gUSwppDPCrhjgi5AA6pWM65dEGRSf6rIhM,239289
|
| 405 |
+
pip/_vendor/msgpack/__init__.py,sha256=reRaiOtEzSjPnr7TpxjgIvbfln5pV66FhricAs2eC-g,1109
|
| 406 |
+
pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc,,
|
| 407 |
+
pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc,,
|
| 408 |
+
pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc,,
|
| 409 |
+
pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc,,
|
| 410 |
+
pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081
|
| 411 |
+
pip/_vendor/msgpack/ext.py,sha256=kteJv03n9tYzd5oo3xYopVTo4vRaAxonBQQJhXohZZo,5726
|
| 412 |
+
pip/_vendor/msgpack/fallback.py,sha256=0g1Pzp0vtmBEmJ5w9F3s_-JMVURP8RS4G1cc5TRaAsI,32390
|
| 413 |
+
pip/_vendor/packaging/__init__.py,sha256=dk4Ta_vmdVJxYHDcfyhvQNw8V3PgSBomKNXqg-D2JDY,494
|
| 414 |
+
pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc,,
|
| 415 |
+
pip/_vendor/packaging/__pycache__/_elffile.cpython-312.pyc,,
|
| 416 |
+
pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc,,
|
| 417 |
+
pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc,,
|
| 418 |
+
pip/_vendor/packaging/__pycache__/_parser.cpython-312.pyc,,
|
| 419 |
+
pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc,,
|
| 420 |
+
pip/_vendor/packaging/__pycache__/_tokenizer.cpython-312.pyc,,
|
| 421 |
+
pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc,,
|
| 422 |
+
pip/_vendor/packaging/__pycache__/metadata.cpython-312.pyc,,
|
| 423 |
+
pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc,,
|
| 424 |
+
pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc,,
|
| 425 |
+
pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc,,
|
| 426 |
+
pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc,,
|
| 427 |
+
pip/_vendor/packaging/__pycache__/version.cpython-312.pyc,,
|
| 428 |
+
pip/_vendor/packaging/_elffile.py,sha256=cflAQAkE25tzhYmq_aCi72QfbT_tn891tPzfpbeHOwE,3306
|
| 429 |
+
pip/_vendor/packaging/_manylinux.py,sha256=vl5OCoz4kx80H5rwXKeXWjl9WNISGmr4ZgTpTP9lU9c,9612
|
| 430 |
+
pip/_vendor/packaging/_musllinux.py,sha256=p9ZqNYiOItGee8KcZFeHF_YcdhVwGHdK6r-8lgixvGQ,2694
|
| 431 |
+
pip/_vendor/packaging/_parser.py,sha256=s_TvTvDNK0NrM2QB3VKThdWFM4Nc0P6JnkObkl3MjpM,10236
|
| 432 |
+
pip/_vendor/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431
|
| 433 |
+
pip/_vendor/packaging/_tokenizer.py,sha256=J6v5H7Jzvb-g81xp_2QACKwO7LxHQA6ikryMU7zXwN8,5273
|
| 434 |
+
pip/_vendor/packaging/licenses/__init__.py,sha256=A116-FU49_Dz4162M4y1uAiZN4Rgdc83FxNd8EjlfqI,5727
|
| 435 |
+
pip/_vendor/packaging/licenses/__pycache__/__init__.cpython-312.pyc,,
|
| 436 |
+
pip/_vendor/packaging/licenses/__pycache__/_spdx.cpython-312.pyc,,
|
| 437 |
+
pip/_vendor/packaging/licenses/_spdx.py,sha256=oAm1ztPFwlsmCKe7lAAsv_OIOfS1cWDu9bNBkeu-2ns,48398
|
| 438 |
+
pip/_vendor/packaging/markers.py,sha256=c89TNzB7ZdGYhkovm6PYmqGyHxXlYVaLW591PHUNKD8,10561
|
| 439 |
+
pip/_vendor/packaging/metadata.py,sha256=YJibM7GYe4re8-0a3OlXmGS-XDgTEoO4tlBt2q25Bng,34762
|
| 440 |
+
pip/_vendor/packaging/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 441 |
+
pip/_vendor/packaging/requirements.py,sha256=gYyRSAdbrIyKDY66ugIDUQjRMvxkH2ALioTmX3tnL6o,2947
|
| 442 |
+
pip/_vendor/packaging/specifiers.py,sha256=hGU6kuCd77bL-msIL6yLCp6MNT75RSMUKZDuju26c8U,40098
|
| 443 |
+
pip/_vendor/packaging/tags.py,sha256=CFqrJzAzc2XNGexerH__T-Y5Iwq7WbsYXsiLERLWxY0,21014
|
| 444 |
+
pip/_vendor/packaging/utils.py,sha256=0F3Hh9OFuRgrhTgGZUl5K22Fv1YP2tZl1z_2gO6kJiA,5050
|
| 445 |
+
pip/_vendor/packaging/version.py,sha256=oiHqzTUv_p12hpjgsLDVcaF5hT7pDaSOViUNMD4GTW0,16688
|
| 446 |
+
pip/_vendor/pkg_resources/__init__.py,sha256=jrhDRbOubP74QuPXxd7U7Po42PH2l-LZ2XfcO7llpZ4,124463
|
| 447 |
+
pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc,,
|
| 448 |
+
pip/_vendor/platformdirs/__init__.py,sha256=JueR2cRLkxY7iwik-qNWJCwKOrAlBgVgcZ_IHQzqGLE,22344
|
| 449 |
+
pip/_vendor/platformdirs/__main__.py,sha256=jBJ8zb7Mpx5ebcqF83xrpO94MaeCpNGHVf9cvDN2JLg,1505
|
| 450 |
+
pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc,,
|
| 451 |
+
pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc,,
|
| 452 |
+
pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc,,
|
| 453 |
+
pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc,,
|
| 454 |
+
pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc,,
|
| 455 |
+
pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc,,
|
| 456 |
+
pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc,,
|
| 457 |
+
pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc,,
|
| 458 |
+
pip/_vendor/platformdirs/android.py,sha256=kV5oL3V3DZ6WZKu9yFiQupv18yp_jlSV2ChH1TmPcds,9007
|
| 459 |
+
pip/_vendor/platformdirs/api.py,sha256=2dfUDNbEXeDhDKarqtR5NY7oUikUZ4RZhs3ozstmhBQ,9246
|
| 460 |
+
pip/_vendor/platformdirs/macos.py,sha256=UlbyFZ8Rzu3xndCqQEHrfsYTeHwYdFap1Ioz-yxveT4,6154
|
| 461 |
+
pip/_vendor/platformdirs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 462 |
+
pip/_vendor/platformdirs/unix.py,sha256=uRPJWRyQEtv7yOSvU94rUmsblo5XKDLA1SzFg55kbK0,10393
|
| 463 |
+
pip/_vendor/platformdirs/version.py,sha256=oH4KgTfK4AklbTYVcV_yynvJ9JLI3pyvDVay0hRsLCs,411
|
| 464 |
+
pip/_vendor/platformdirs/windows.py,sha256=IFpiohUBwxPtCzlyKwNtxyW4Jk8haa6W8o59mfrDXVo,10125
|
| 465 |
+
pip/_vendor/pygments/__init__.py,sha256=7N1oiaWulw_nCsTY4EEixYLz15pWY5u4uPAFFi-ielU,2983
|
| 466 |
+
pip/_vendor/pygments/__main__.py,sha256=isIhBxLg65nLlXukG4VkMuPfNdd7gFzTZ_R_z3Q8diY,353
|
| 467 |
+
pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc,,
|
| 468 |
+
pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc,,
|
| 469 |
+
pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc,,
|
| 470 |
+
pip/_vendor/pygments/__pycache__/console.cpython-312.pyc,,
|
| 471 |
+
pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc,,
|
| 472 |
+
pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc,,
|
| 473 |
+
pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc,,
|
| 474 |
+
pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc,,
|
| 475 |
+
pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc,,
|
| 476 |
+
pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc,,
|
| 477 |
+
pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc,,
|
| 478 |
+
pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc,,
|
| 479 |
+
pip/_vendor/pygments/__pycache__/style.cpython-312.pyc,,
|
| 480 |
+
pip/_vendor/pygments/__pycache__/token.cpython-312.pyc,,
|
| 481 |
+
pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc,,
|
| 482 |
+
pip/_vendor/pygments/__pycache__/util.cpython-312.pyc,,
|
| 483 |
+
pip/_vendor/pygments/cmdline.py,sha256=LIVzmAunlk9sRJJp54O4KRy9GDIN4Wu13v9p9QzfGPM,23656
|
| 484 |
+
pip/_vendor/pygments/console.py,sha256=yhP9UsLAVmWKVQf2446JJewkA7AiXeeTf4Ieg3Oi2fU,1718
|
| 485 |
+
pip/_vendor/pygments/filter.py,sha256=_ADNPCskD8_GmodHi6_LoVgPU3Zh336aBCT5cOeTMs0,1910
|
| 486 |
+
pip/_vendor/pygments/filters/__init__.py,sha256=RdedK2KWKXlKwR7cvkfr3NUj9YiZQgMgilRMFUg2jPA,40392
|
| 487 |
+
pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc,,
|
| 488 |
+
pip/_vendor/pygments/formatter.py,sha256=jDWBTndlBH2Z5IYZFVDnP0qn1CaTQjTWt7iAGtCnJEg,4390
|
| 489 |
+
pip/_vendor/pygments/formatters/__init__.py,sha256=8No-NUs8rBTSSBJIv4hSEQt2M0cFB4hwAT0snVc2QGE,5385
|
| 490 |
+
pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc,,
|
| 491 |
+
pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc,,
|
| 492 |
+
pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc,,
|
| 493 |
+
pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc,,
|
| 494 |
+
pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc,,
|
| 495 |
+
pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc,,
|
| 496 |
+
pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc,,
|
| 497 |
+
pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc,,
|
| 498 |
+
pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc,,
|
| 499 |
+
pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc,,
|
| 500 |
+
pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc,,
|
| 501 |
+
pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc,,
|
| 502 |
+
pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc,,
|
| 503 |
+
pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc,,
|
| 504 |
+
pip/_vendor/pygments/formatters/_mapping.py,sha256=1Cw37FuQlNacnxRKmtlPX4nyLoX9_ttko5ZwscNUZZ4,4176
|
| 505 |
+
pip/_vendor/pygments/formatters/bbcode.py,sha256=3JQLI45tcrQ_kRUMjuab6C7Hb0XUsbVWqqbSn9cMjkI,3320
|
| 506 |
+
pip/_vendor/pygments/formatters/groff.py,sha256=M39k0PaSSZRnxWjqBSVPkF0mu1-Vr7bm6RsFvs-CNN4,5106
|
| 507 |
+
pip/_vendor/pygments/formatters/html.py,sha256=SE2jc3YCqbMS3rZW9EAmDlAUhdVxJ52gA4dileEvCGU,35669
|
| 508 |
+
pip/_vendor/pygments/formatters/img.py,sha256=MwA4xWPLOwh6j7Yc6oHzjuqSPt0M1fh5r-5BTIIUfsU,23287
|
| 509 |
+
pip/_vendor/pygments/formatters/irc.py,sha256=dp1Z0l_ObJ5NFh9MhqLGg5ptG5hgJqedT2Vkutt9v0M,4981
|
| 510 |
+
pip/_vendor/pygments/formatters/latex.py,sha256=XMmhOCqUKDBQtG5mGJNAFYxApqaC5puo5cMmPfK3944,19306
|
| 511 |
+
pip/_vendor/pygments/formatters/other.py,sha256=56PMJOliin-rAUdnRM0i1wsV1GdUPd_dvQq0_UPfF9c,5034
|
| 512 |
+
pip/_vendor/pygments/formatters/pangomarkup.py,sha256=y16U00aVYYEFpeCfGXlYBSMacG425CbfoG8oKbKegIg,2218
|
| 513 |
+
pip/_vendor/pygments/formatters/rtf.py,sha256=ZT90dmcKyJboIB0mArhL7IhE467GXRN0G7QAUgG03To,11957
|
| 514 |
+
pip/_vendor/pygments/formatters/svg.py,sha256=KKsiophPupHuxm0So-MsbQEWOT54IAiSF7hZPmxtKXE,7174
|
| 515 |
+
pip/_vendor/pygments/formatters/terminal.py,sha256=AojNG4MlKq2L6IsC_VnXHu4AbHCBn9Otog6u45XvxeI,4674
|
| 516 |
+
pip/_vendor/pygments/formatters/terminal256.py,sha256=kGkNUVo3FpwjytIDS0if79EuUoroAprcWt3igrcIqT0,11753
|
| 517 |
+
pip/_vendor/pygments/lexer.py,sha256=TYHDt___gNW4axTl2zvPZff-VQi8fPaIh5OKRcVSjUM,35349
|
| 518 |
+
pip/_vendor/pygments/lexers/__init__.py,sha256=pIlxyQJuu_syh9lE080cq8ceVbEVcKp0osAFU5fawJU,12115
|
| 519 |
+
pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc,,
|
| 520 |
+
pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc,,
|
| 521 |
+
pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc,,
|
| 522 |
+
pip/_vendor/pygments/lexers/_mapping.py,sha256=61-h3zr103m01OS5BUq_AfUiL9YI06Ves9ipQ7k4vr4,76097
|
| 523 |
+
pip/_vendor/pygments/lexers/python.py,sha256=2J_YJrPTr_A6fJY_qKiKv0GpgPwHMrlMSeo59qN3fe4,53687
|
| 524 |
+
pip/_vendor/pygments/modeline.py,sha256=gtRYZBS-CKOCDXHhGZqApboHBaZwGH8gznN3O6nuxj4,1005
|
| 525 |
+
pip/_vendor/pygments/plugin.py,sha256=ioeJ3QeoJ-UQhZpY9JL7vbxsTVuwwM7BCu-Jb8nN0AU,1891
|
| 526 |
+
pip/_vendor/pygments/regexopt.py,sha256=Hky4EB13rIXEHQUNkwmCrYqtIlnXDehNR3MztafZ43w,3072
|
| 527 |
+
pip/_vendor/pygments/scanner.py,sha256=NDy3ofK_fHRFK4hIDvxpamG871aewqcsIb6sgTi7Fhk,3092
|
| 528 |
+
pip/_vendor/pygments/sphinxext.py,sha256=iOptJBcqOGPwMEJ2p70PvwpZPIGdvdZ8dxvq6kzxDgA,7981
|
| 529 |
+
pip/_vendor/pygments/style.py,sha256=rSCZWFpg1_DwFMXDU0nEVmAcBHpuQGf9RxvOPPQvKLQ,6420
|
| 530 |
+
pip/_vendor/pygments/styles/__init__.py,sha256=qUk6_1z5KmT8EdJFZYgESmG6P_HJF_2vVrDD7HSCGYY,2042
|
| 531 |
+
pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc,,
|
| 532 |
+
pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-312.pyc,,
|
| 533 |
+
pip/_vendor/pygments/styles/_mapping.py,sha256=6lovFUE29tz6EsV3XYY4hgozJ7q1JL7cfO3UOlgnS8w,3312
|
| 534 |
+
pip/_vendor/pygments/token.py,sha256=qZwT7LSPy5YBY3JgDjut642CCy7JdQzAfmqD9NmT5j0,6226
|
| 535 |
+
pip/_vendor/pygments/unistring.py,sha256=p5c1i-HhoIhWemy9CUsaN9o39oomYHNxXll0Xfw6tEA,63208
|
| 536 |
+
pip/_vendor/pygments/util.py,sha256=2tj2nS1X9_OpcuSjf8dOET2bDVZhs8cEKd_uT6-Fgg8,10031
|
| 537 |
+
pip/_vendor/pyproject_hooks/__init__.py,sha256=cPB_a9LXz5xvsRbX1o2qyAdjLatZJdQ_Lc5McNX-X7Y,691
|
| 538 |
+
pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc,,
|
| 539 |
+
pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc,,
|
| 540 |
+
pip/_vendor/pyproject_hooks/_impl.py,sha256=jY-raxnmyRyB57ruAitrJRUzEexuAhGTpgMygqx67Z4,14936
|
| 541 |
+
pip/_vendor/pyproject_hooks/_in_process/__init__.py,sha256=MJNPpfIxcO-FghxpBbxkG1rFiQf6HOUbV4U5mq0HFns,557
|
| 542 |
+
pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc,,
|
| 543 |
+
pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc,,
|
| 544 |
+
pip/_vendor/pyproject_hooks/_in_process/_in_process.py,sha256=qcXMhmx__MIJq10gGHW3mA4Tl8dy8YzHMccwnNoKlw0,12216
|
| 545 |
+
pip/_vendor/pyproject_hooks/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 546 |
+
pip/_vendor/requests/__init__.py,sha256=HlB_HzhrzGtfD_aaYUwUh1zWXLZ75_YCLyit75d0Vz8,5057
|
| 547 |
+
pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc,,
|
| 548 |
+
pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc,,
|
| 549 |
+
pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc,,
|
| 550 |
+
pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc,,
|
| 551 |
+
pip/_vendor/requests/__pycache__/api.cpython-312.pyc,,
|
| 552 |
+
pip/_vendor/requests/__pycache__/auth.cpython-312.pyc,,
|
| 553 |
+
pip/_vendor/requests/__pycache__/certs.cpython-312.pyc,,
|
| 554 |
+
pip/_vendor/requests/__pycache__/compat.cpython-312.pyc,,
|
| 555 |
+
pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc,,
|
| 556 |
+
pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc,,
|
| 557 |
+
pip/_vendor/requests/__pycache__/help.cpython-312.pyc,,
|
| 558 |
+
pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc,,
|
| 559 |
+
pip/_vendor/requests/__pycache__/models.cpython-312.pyc,,
|
| 560 |
+
pip/_vendor/requests/__pycache__/packages.cpython-312.pyc,,
|
| 561 |
+
pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc,,
|
| 562 |
+
pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc,,
|
| 563 |
+
pip/_vendor/requests/__pycache__/structures.cpython-312.pyc,,
|
| 564 |
+
pip/_vendor/requests/__pycache__/utils.cpython-312.pyc,,
|
| 565 |
+
pip/_vendor/requests/__version__.py,sha256=FVfglgZmNQnmYPXpOohDU58F5EUb_-VnSTaAesS187g,435
|
| 566 |
+
pip/_vendor/requests/_internal_utils.py,sha256=nMQymr4hs32TqVo5AbCrmcJEhvPUh7xXlluyqwslLiQ,1495
|
| 567 |
+
pip/_vendor/requests/adapters.py,sha256=J7VeVxKBvawbtlX2DERVo05J9BXTcWYLMHNd1Baa-bk,27607
|
| 568 |
+
pip/_vendor/requests/api.py,sha256=_Zb9Oa7tzVIizTKwFrPjDEY9ejtm_OnSRERnADxGsQs,6449
|
| 569 |
+
pip/_vendor/requests/auth.py,sha256=kF75tqnLctZ9Mf_hm9TZIj4cQWnN5uxRz8oWsx5wmR0,10186
|
| 570 |
+
pip/_vendor/requests/certs.py,sha256=kHDlkK_beuHXeMPc5jta2wgl8gdKeUWt5f2nTDVrvt8,441
|
| 571 |
+
pip/_vendor/requests/compat.py,sha256=Mo9f9xZpefod8Zm-n9_StJcVTmwSukXR2p3IQyyVXvU,1485
|
| 572 |
+
pip/_vendor/requests/cookies.py,sha256=bNi-iqEj4NPZ00-ob-rHvzkvObzN3lEpgw3g6paS3Xw,18590
|
| 573 |
+
pip/_vendor/requests/exceptions.py,sha256=D1wqzYWne1mS2rU43tP9CeN1G7QAy7eqL9o1god6Ejw,4272
|
| 574 |
+
pip/_vendor/requests/help.py,sha256=hRKaf9u0G7fdwrqMHtF3oG16RKktRf6KiwtSq2Fo1_0,3813
|
| 575 |
+
pip/_vendor/requests/hooks.py,sha256=CiuysiHA39V5UfcCBXFIx83IrDpuwfN9RcTUgv28ftQ,733
|
| 576 |
+
pip/_vendor/requests/models.py,sha256=x4K4CmH-lC0l2Kb-iPfMN4dRXxHEcbOaEWBL_i09AwI,35483
|
| 577 |
+
pip/_vendor/requests/packages.py,sha256=_ZQDCJTJ8SP3kVWunSqBsRZNPzj2c1WFVqbdr08pz3U,1057
|
| 578 |
+
pip/_vendor/requests/sessions.py,sha256=ykTI8UWGSltOfH07HKollH7kTBGw4WhiBVaQGmckTw4,30495
|
| 579 |
+
pip/_vendor/requests/status_codes.py,sha256=iJUAeA25baTdw-6PfD0eF4qhpINDJRJI-yaMqxs4LEI,4322
|
| 580 |
+
pip/_vendor/requests/structures.py,sha256=-IbmhVz06S-5aPSZuUthZ6-6D9XOjRuTXHOabY041XM,2912
|
| 581 |
+
pip/_vendor/requests/utils.py,sha256=L79vnFbzJ3SFLKtJwpoWe41Tozi3RlZv94pY1TFIyow,33631
|
| 582 |
+
pip/_vendor/resolvelib/__init__.py,sha256=h509TdEcpb5-44JonaU3ex2TM15GVBLjM9CNCPwnTTs,537
|
| 583 |
+
pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc,,
|
| 584 |
+
pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc,,
|
| 585 |
+
pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc,,
|
| 586 |
+
pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc,,
|
| 587 |
+
pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc,,
|
| 588 |
+
pip/_vendor/resolvelib/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 589 |
+
pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc,,
|
| 590 |
+
pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc,,
|
| 591 |
+
pip/_vendor/resolvelib/compat/collections_abc.py,sha256=uy8xUZ-NDEw916tugUXm8HgwCGiMO0f-RcdnpkfXfOs,156
|
| 592 |
+
pip/_vendor/resolvelib/providers.py,sha256=fuuvVrCetu5gsxPB43ERyjfO8aReS3rFQHpDgiItbs4,5871
|
| 593 |
+
pip/_vendor/resolvelib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 594 |
+
pip/_vendor/resolvelib/reporters.py,sha256=TSbRmWzTc26w0ggsV1bxVpeWDB8QNIre6twYl7GIZBE,1601
|
| 595 |
+
pip/_vendor/resolvelib/resolvers.py,sha256=G8rsLZSq64g5VmIq-lB7UcIJ1gjAxIQJmTF4REZleQ0,20511
|
| 596 |
+
pip/_vendor/resolvelib/structs.py,sha256=0_1_XO8z_CLhegP3Vpf9VJ3zJcfLm0NOHRM-i0Ykz3o,4963
|
| 597 |
+
pip/_vendor/rich/__init__.py,sha256=dRxjIL-SbFVY0q3IjSMrfgBTHrm1LZDgLOygVBwiYZc,6090
|
| 598 |
+
pip/_vendor/rich/__main__.py,sha256=eO7Cq8JnrgG8zVoeImiAs92q3hXNMIfp0w5lMsO7Q2Y,8477
|
| 599 |
+
pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc,,
|
| 600 |
+
pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc,,
|
| 601 |
+
pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc,,
|
| 602 |
+
pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc,,
|
| 603 |
+
pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc,,
|
| 604 |
+
pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc,,
|
| 605 |
+
pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc,,
|
| 606 |
+
pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc,,
|
| 607 |
+
pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc,,
|
| 608 |
+
pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc,,
|
| 609 |
+
pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc,,
|
| 610 |
+
pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc,,
|
| 611 |
+
pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc,,
|
| 612 |
+
pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc,,
|
| 613 |
+
pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc,,
|
| 614 |
+
pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc,,
|
| 615 |
+
pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc,,
|
| 616 |
+
pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc,,
|
| 617 |
+
pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc,,
|
| 618 |
+
pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc,,
|
| 619 |
+
pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc,,
|
| 620 |
+
pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc,,
|
| 621 |
+
pip/_vendor/rich/__pycache__/abc.cpython-312.pyc,,
|
| 622 |
+
pip/_vendor/rich/__pycache__/align.cpython-312.pyc,,
|
| 623 |
+
pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc,,
|
| 624 |
+
pip/_vendor/rich/__pycache__/bar.cpython-312.pyc,,
|
| 625 |
+
pip/_vendor/rich/__pycache__/box.cpython-312.pyc,,
|
| 626 |
+
pip/_vendor/rich/__pycache__/cells.cpython-312.pyc,,
|
| 627 |
+
pip/_vendor/rich/__pycache__/color.cpython-312.pyc,,
|
| 628 |
+
pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc,,
|
| 629 |
+
pip/_vendor/rich/__pycache__/columns.cpython-312.pyc,,
|
| 630 |
+
pip/_vendor/rich/__pycache__/console.cpython-312.pyc,,
|
| 631 |
+
pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc,,
|
| 632 |
+
pip/_vendor/rich/__pycache__/containers.cpython-312.pyc,,
|
| 633 |
+
pip/_vendor/rich/__pycache__/control.cpython-312.pyc,,
|
| 634 |
+
pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc,,
|
| 635 |
+
pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc,,
|
| 636 |
+
pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc,,
|
| 637 |
+
pip/_vendor/rich/__pycache__/errors.cpython-312.pyc,,
|
| 638 |
+
pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc,,
|
| 639 |
+
pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc,,
|
| 640 |
+
pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc,,
|
| 641 |
+
pip/_vendor/rich/__pycache__/json.cpython-312.pyc,,
|
| 642 |
+
pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc,,
|
| 643 |
+
pip/_vendor/rich/__pycache__/layout.cpython-312.pyc,,
|
| 644 |
+
pip/_vendor/rich/__pycache__/live.cpython-312.pyc,,
|
| 645 |
+
pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc,,
|
| 646 |
+
pip/_vendor/rich/__pycache__/logging.cpython-312.pyc,,
|
| 647 |
+
pip/_vendor/rich/__pycache__/markup.cpython-312.pyc,,
|
| 648 |
+
pip/_vendor/rich/__pycache__/measure.cpython-312.pyc,,
|
| 649 |
+
pip/_vendor/rich/__pycache__/padding.cpython-312.pyc,,
|
| 650 |
+
pip/_vendor/rich/__pycache__/pager.cpython-312.pyc,,
|
| 651 |
+
pip/_vendor/rich/__pycache__/palette.cpython-312.pyc,,
|
| 652 |
+
pip/_vendor/rich/__pycache__/panel.cpython-312.pyc,,
|
| 653 |
+
pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc,,
|
| 654 |
+
pip/_vendor/rich/__pycache__/progress.cpython-312.pyc,,
|
| 655 |
+
pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc,,
|
| 656 |
+
pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc,,
|
| 657 |
+
pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc,,
|
| 658 |
+
pip/_vendor/rich/__pycache__/region.cpython-312.pyc,,
|
| 659 |
+
pip/_vendor/rich/__pycache__/repr.cpython-312.pyc,,
|
| 660 |
+
pip/_vendor/rich/__pycache__/rule.cpython-312.pyc,,
|
| 661 |
+
pip/_vendor/rich/__pycache__/scope.cpython-312.pyc,,
|
| 662 |
+
pip/_vendor/rich/__pycache__/screen.cpython-312.pyc,,
|
| 663 |
+
pip/_vendor/rich/__pycache__/segment.cpython-312.pyc,,
|
| 664 |
+
pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc,,
|
| 665 |
+
pip/_vendor/rich/__pycache__/status.cpython-312.pyc,,
|
| 666 |
+
pip/_vendor/rich/__pycache__/style.cpython-312.pyc,,
|
| 667 |
+
pip/_vendor/rich/__pycache__/styled.cpython-312.pyc,,
|
| 668 |
+
pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc,,
|
| 669 |
+
pip/_vendor/rich/__pycache__/table.cpython-312.pyc,,
|
| 670 |
+
pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc,,
|
| 671 |
+
pip/_vendor/rich/__pycache__/text.cpython-312.pyc,,
|
| 672 |
+
pip/_vendor/rich/__pycache__/theme.cpython-312.pyc,,
|
| 673 |
+
pip/_vendor/rich/__pycache__/themes.cpython-312.pyc,,
|
| 674 |
+
pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc,,
|
| 675 |
+
pip/_vendor/rich/__pycache__/tree.cpython-312.pyc,,
|
| 676 |
+
pip/_vendor/rich/_cell_widths.py,sha256=fbmeyetEdHjzE_Vx2l1uK7tnPOhMs2X1lJfO3vsKDpA,10209
|
| 677 |
+
pip/_vendor/rich/_emoji_codes.py,sha256=hu1VL9nbVdppJrVoijVshRlcRRe_v3dju3Mmd2sKZdY,140235
|
| 678 |
+
pip/_vendor/rich/_emoji_replace.py,sha256=n-kcetsEUx2ZUmhQrfeMNc-teeGhpuSQ5F8VPBsyvDo,1064
|
| 679 |
+
pip/_vendor/rich/_export_format.py,sha256=RI08pSrm5tBSzPMvnbTqbD9WIalaOoN5d4M1RTmLq1Y,2128
|
| 680 |
+
pip/_vendor/rich/_extension.py,sha256=Xt47QacCKwYruzjDi-gOBq724JReDj9Cm9xUi5fr-34,265
|
| 681 |
+
pip/_vendor/rich/_fileno.py,sha256=HWZxP5C2ajMbHryvAQZseflVfQoGzsKOHzKGsLD8ynQ,799
|
| 682 |
+
pip/_vendor/rich/_inspect.py,sha256=QM05lEFnFoTaFqpnbx-zBEI6k8oIKrD3cvjEOQNhKig,9655
|
| 683 |
+
pip/_vendor/rich/_log_render.py,sha256=1ByI0PA1ZpxZY3CGJOK54hjlq4X-Bz_boIjIqCd8Kns,3225
|
| 684 |
+
pip/_vendor/rich/_loop.py,sha256=hV_6CLdoPm0va22Wpw4zKqM0RYsz3TZxXj0PoS-9eDQ,1236
|
| 685 |
+
pip/_vendor/rich/_null_file.py,sha256=ADGKp1yt-k70FMKV6tnqCqecB-rSJzp-WQsD7LPL-kg,1394
|
| 686 |
+
pip/_vendor/rich/_palettes.py,sha256=cdev1JQKZ0JvlguV9ipHgznTdnvlIzUFDBb0It2PzjI,7063
|
| 687 |
+
pip/_vendor/rich/_pick.py,sha256=evDt8QN4lF5CiwrUIXlOJCntitBCOsI3ZLPEIAVRLJU,423
|
| 688 |
+
pip/_vendor/rich/_ratio.py,sha256=Zt58apszI6hAAcXPpgdWKpu3c31UBWebOeR4mbyptvU,5471
|
| 689 |
+
pip/_vendor/rich/_spinners.py,sha256=U2r1_g_1zSjsjiUdAESc2iAMc3i4ri_S8PYP6kQ5z1I,19919
|
| 690 |
+
pip/_vendor/rich/_stack.py,sha256=-C8OK7rxn3sIUdVwxZBBpeHhIzX0eI-VM3MemYfaXm0,351
|
| 691 |
+
pip/_vendor/rich/_timer.py,sha256=zelxbT6oPFZnNrwWPpc1ktUeAT-Vc4fuFcRZLQGLtMI,417
|
| 692 |
+
pip/_vendor/rich/_win32_console.py,sha256=BSaDRIMwBLITn_m0mTRLPqME5q-quGdSMuYMpYeYJwc,22755
|
| 693 |
+
pip/_vendor/rich/_windows.py,sha256=aBwaD_S56SbgopIvayVmpk0Y28uwY2C5Bab1wl3Bp-I,1925
|
| 694 |
+
pip/_vendor/rich/_windows_renderer.py,sha256=t74ZL3xuDCP3nmTp9pH1L5LiI2cakJuQRQleHCJerlk,2783
|
| 695 |
+
pip/_vendor/rich/_wrap.py,sha256=FlSsom5EX0LVkA3KWy34yHnCfLtqX-ZIepXKh-70rpc,3404
|
| 696 |
+
pip/_vendor/rich/abc.py,sha256=ON-E-ZqSSheZ88VrKX2M3PXpFbGEUUZPMa_Af0l-4f0,890
|
| 697 |
+
pip/_vendor/rich/align.py,sha256=Rh-3adnDaN1Ao07EjR2PhgE62PGLPgO8SMwJBku1urQ,10469
|
| 698 |
+
pip/_vendor/rich/ansi.py,sha256=Avs1LHbSdcyOvDOdpELZUoULcBiYewY76eNBp6uFBhs,6921
|
| 699 |
+
pip/_vendor/rich/bar.py,sha256=ldbVHOzKJOnflVNuv1xS7g6dLX2E3wMnXkdPbpzJTcs,3263
|
| 700 |
+
pip/_vendor/rich/box.py,sha256=nr5fYIUghB_iUCEq6y0Z3LlCT8gFPDrzN9u2kn7tJl4,10831
|
| 701 |
+
pip/_vendor/rich/cells.py,sha256=KrQkj5-LghCCpJLSNQIyAZjndc4bnEqOEmi5YuZ9UCY,5130
|
| 702 |
+
pip/_vendor/rich/color.py,sha256=3HSULVDj7qQkXUdFWv78JOiSZzfy5y1nkcYhna296V0,18211
|
| 703 |
+
pip/_vendor/rich/color_triplet.py,sha256=3lhQkdJbvWPoLDO-AnYImAWmJvV5dlgYNCVZ97ORaN4,1054
|
| 704 |
+
pip/_vendor/rich/columns.py,sha256=HUX0KcMm9dsKNi11fTbiM_h2iDtl8ySCaVcxlalEzq8,7131
|
| 705 |
+
pip/_vendor/rich/console.py,sha256=nKjrEx_7xy8KGmDVT-BgNII0R5hm1cexhAHDwdwNVqg,100156
|
| 706 |
+
pip/_vendor/rich/constrain.py,sha256=1VIPuC8AgtKWrcncQrjBdYqA3JVWysu6jZo1rrh7c7Q,1288
|
| 707 |
+
pip/_vendor/rich/containers.py,sha256=c_56TxcedGYqDepHBMTuZdUIijitAQgnox-Qde0Z1qo,5502
|
| 708 |
+
pip/_vendor/rich/control.py,sha256=DSkHTUQLorfSERAKE_oTAEUFefZnZp4bQb4q8rHbKws,6630
|
| 709 |
+
pip/_vendor/rich/default_styles.py,sha256=dZxgaSD9VUy7SXQShO33aLYiAWspCr2sCQZFX_JK1j4,8159
|
| 710 |
+
pip/_vendor/rich/diagnose.py,sha256=an6uouwhKPAlvQhYpNNpGq9EJysfMIOvvCbO3oSoR24,972
|
| 711 |
+
pip/_vendor/rich/emoji.py,sha256=omTF9asaAnsM4yLY94eR_9dgRRSm1lHUszX20D1yYCQ,2501
|
| 712 |
+
pip/_vendor/rich/errors.py,sha256=5pP3Kc5d4QJ_c0KFsxrfyhjiPVe7J1zOqSFbFAzcV-Y,642
|
| 713 |
+
pip/_vendor/rich/file_proxy.py,sha256=Tl9THMDZ-Pk5Wm8sI1gGg_U5DhusmxD-FZ0fUbcU0W0,1683
|
| 714 |
+
pip/_vendor/rich/filesize.py,sha256=_iz9lIpRgvW7MNSeCZnLg-HwzbP4GETg543WqD8SFs0,2484
|
| 715 |
+
pip/_vendor/rich/highlighter.py,sha256=G_sn-8DKjM1sEjLG_oc4ovkWmiUpWvj8bXi0yed2LnY,9586
|
| 716 |
+
pip/_vendor/rich/json.py,sha256=vVEoKdawoJRjAFayPwXkMBPLy7RSTs-f44wSQDR2nJ0,5031
|
| 717 |
+
pip/_vendor/rich/jupyter.py,sha256=QyoKoE_8IdCbrtiSHp9TsTSNyTHY0FO5whE7jOTd9UE,3252
|
| 718 |
+
pip/_vendor/rich/layout.py,sha256=ajkSFAtEVv9EFTcFs-w4uZfft7nEXhNzL7ZVdgrT5rI,14004
|
| 719 |
+
pip/_vendor/rich/live.py,sha256=DhzAPEnjTxQuq9_0Y2xh2MUwQcP_aGPkenLfKETslwM,14270
|
| 720 |
+
pip/_vendor/rich/live_render.py,sha256=zJtB471jGziBtEwxc54x12wEQtH4BuQr1SA8v9kU82w,3666
|
| 721 |
+
pip/_vendor/rich/logging.py,sha256=ZgpKMMBY_BuMAI_BYzo-UtXak6t5oH9VK8m9Q2Lm0f4,12458
|
| 722 |
+
pip/_vendor/rich/markup.py,sha256=3euGKP5s41NCQwaSjTnJxus5iZMHjxpIM0W6fCxra38,8451
|
| 723 |
+
pip/_vendor/rich/measure.py,sha256=HmrIJX8sWRTHbgh8MxEay_83VkqNW_70s8aKP5ZcYI8,5305
|
| 724 |
+
pip/_vendor/rich/padding.py,sha256=KVEI3tOwo9sgK1YNSuH__M1_jUWmLZwRVV_KmOtVzyM,4908
|
| 725 |
+
pip/_vendor/rich/pager.py,sha256=SO_ETBFKbg3n_AgOzXm41Sv36YxXAyI3_R-KOY2_uSc,828
|
| 726 |
+
pip/_vendor/rich/palette.py,sha256=lInvR1ODDT2f3UZMfL1grq7dY_pDdKHw4bdUgOGaM4Y,3396
|
| 727 |
+
pip/_vendor/rich/panel.py,sha256=fFRHcviXvWhk3V3zx5Zwmsb_RL9KJ3esD-sU0NYEVyw,11235
|
| 728 |
+
pip/_vendor/rich/pretty.py,sha256=gy3S72u4FRg2ytoo7N1ZDWDIvB4unbzd5iUGdgm-8fc,36391
|
| 729 |
+
pip/_vendor/rich/progress.py,sha256=MtmCjTk5zYU_XtRHxRHTAEHG6hF9PeF7EMWbEPleIC0,60357
|
| 730 |
+
pip/_vendor/rich/progress_bar.py,sha256=mZTPpJUwcfcdgQCTTz3kyY-fc79ddLwtx6Ghhxfo064,8162
|
| 731 |
+
pip/_vendor/rich/prompt.py,sha256=l0RhQU-0UVTV9e08xW1BbIj0Jq2IXyChX4lC0lFNzt4,12447
|
| 732 |
+
pip/_vendor/rich/protocol.py,sha256=5hHHDDNHckdk8iWH5zEbi-zuIVSF5hbU2jIo47R7lTE,1391
|
| 733 |
+
pip/_vendor/rich/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 734 |
+
pip/_vendor/rich/region.py,sha256=rNT9xZrVZTYIXZC0NYn41CJQwYNbR-KecPOxTgQvB8Y,166
|
| 735 |
+
pip/_vendor/rich/repr.py,sha256=5MZJZmONgC6kud-QW-_m1okXwL2aR6u6y-pUcUCJz28,4431
|
| 736 |
+
pip/_vendor/rich/rule.py,sha256=0fNaS_aERa3UMRc3T5WMpN_sumtDxfaor2y3of1ftBk,4602
|
| 737 |
+
pip/_vendor/rich/scope.py,sha256=TMUU8qo17thyqQCPqjDLYpg_UU1k5qVd-WwiJvnJVas,2843
|
| 738 |
+
pip/_vendor/rich/screen.py,sha256=YoeReESUhx74grqb0mSSb9lghhysWmFHYhsbMVQjXO8,1591
|
| 739 |
+
pip/_vendor/rich/segment.py,sha256=otnKeKGEV-WRlQVosfJVeFDcDxAKHpvJ_hLzSu5lumM,24743
|
| 740 |
+
pip/_vendor/rich/spinner.py,sha256=PT5qgXPG3ZpqRj7n3EZQ6NW56mx3ldZqZCU7gEMyZk4,4364
|
| 741 |
+
pip/_vendor/rich/status.py,sha256=kkPph3YeAZBo-X-4wPp8gTqZyU466NLwZBA4PZTTewo,4424
|
| 742 |
+
pip/_vendor/rich/style.py,sha256=aSoUNbVgfP1PAnduAqgbbl4AMQy668qs2S1FEwr3Oqs,27067
|
| 743 |
+
pip/_vendor/rich/styled.py,sha256=eZNnzGrI4ki_54pgY3Oj0T-x3lxdXTYh4_ryDB24wBU,1258
|
| 744 |
+
pip/_vendor/rich/syntax.py,sha256=qqAnEUZ4K57Po81_5RBxnsuU4KRzSdvDPAhKw8ma_3E,35763
|
| 745 |
+
pip/_vendor/rich/table.py,sha256=yXYUr0YsPpG466N50HCAw2bpb5ZUuuzdc-G66Zk-oTc,40103
|
| 746 |
+
pip/_vendor/rich/terminal_theme.py,sha256=1j5-ufJfnvlAo5Qsi_ACZiXDmwMXzqgmFByObT9-yJY,3370
|
| 747 |
+
pip/_vendor/rich/text.py,sha256=AO7JPCz6-gaN1thVLXMBntEmDPVYFgFNG1oM61_sanU,47552
|
| 748 |
+
pip/_vendor/rich/theme.py,sha256=oNyhXhGagtDlbDye3tVu3esWOWk0vNkuxFw-_unlaK0,3771
|
| 749 |
+
pip/_vendor/rich/themes.py,sha256=0xgTLozfabebYtcJtDdC5QkX5IVUEaviqDUJJh4YVFk,102
|
| 750 |
+
pip/_vendor/rich/traceback.py,sha256=z8UoN7NbTQKW6YDDUVwOh7F8snZf6gYnUWtOrKsLE1w,31797
|
| 751 |
+
pip/_vendor/rich/tree.py,sha256=yWnQ6rAvRGJ3qZGqBrxS2SW2TKBTNrP0SdY8QxOFPuw,9451
|
| 752 |
+
pip/_vendor/tomli/__init__.py,sha256=PhNw_eyLgdn7McJ6nrAN8yIm3dXC75vr1sVGVVwDSpA,314
|
| 753 |
+
pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc,,
|
| 754 |
+
pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc,,
|
| 755 |
+
pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc,,
|
| 756 |
+
pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc,,
|
| 757 |
+
pip/_vendor/tomli/_parser.py,sha256=9w8LG0jB7fwmZZWB0vVXbeejDHcl4ANIJxB2scEnDlA,25591
|
| 758 |
+
pip/_vendor/tomli/_re.py,sha256=sh4sBDRgO94KJZwNIrgdcyV_qQast50YvzOAUGpRDKA,3171
|
| 759 |
+
pip/_vendor/tomli/_types.py,sha256=-GTG2VUqkpxwMqzmVO4F7ybKddIbAnuAHXfmWQcTi3Q,254
|
| 760 |
+
pip/_vendor/tomli/py.typed,sha256=8PjyZ1aVoQpRVvt71muvuq5qE-jTFZkK-GLHkhdebmc,26
|
| 761 |
+
pip/_vendor/truststore/__init__.py,sha256=WIDeyzWm7EVX44g354M25vpRXbeY1lsPH6EmUJUcq4o,1264
|
| 762 |
+
pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc,,
|
| 763 |
+
pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc,,
|
| 764 |
+
pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc,,
|
| 765 |
+
pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc,,
|
| 766 |
+
pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc,,
|
| 767 |
+
pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc,,
|
| 768 |
+
pip/_vendor/truststore/_api.py,sha256=GeXRNTlxPZ3kif4kNoh6JY0oE4QRzTGcgXr6l_X_Gk0,10555
|
| 769 |
+
pip/_vendor/truststore/_macos.py,sha256=nZlLkOmszUE0g6ryRwBVGY5COzPyudcsiJtDWarM5LQ,20503
|
| 770 |
+
pip/_vendor/truststore/_openssl.py,sha256=LLUZ7ZGaio-i5dpKKjKCSeSufmn6T8pi9lDcFnvSyq0,2324
|
| 771 |
+
pip/_vendor/truststore/_ssl_constants.py,sha256=NUD4fVKdSD02ri7-db0tnO0VqLP9aHuzmStcW7tAl08,1130
|
| 772 |
+
pip/_vendor/truststore/_windows.py,sha256=rAHyKYD8M7t-bXfG8VgOVa3TpfhVhbt4rZQlO45YuP8,17993
|
| 773 |
+
pip/_vendor/truststore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 774 |
+
pip/_vendor/typing_extensions.py,sha256=78hFl0HpDY-ylHUVCnWdU5nTHxUP2-S-3wEZk6CQmLk,134499
|
| 775 |
+
pip/_vendor/urllib3/__init__.py,sha256=iXLcYiJySn0GNbWOOZDDApgBL1JgP44EZ8i1760S8Mc,3333
|
| 776 |
+
pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc,,
|
| 777 |
+
pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc,,
|
| 778 |
+
pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc,,
|
| 779 |
+
pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc,,
|
| 780 |
+
pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc,,
|
| 781 |
+
pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc,,
|
| 782 |
+
pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc,,
|
| 783 |
+
pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc,,
|
| 784 |
+
pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc,,
|
| 785 |
+
pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc,,
|
| 786 |
+
pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc,,
|
| 787 |
+
pip/_vendor/urllib3/_collections.py,sha256=pyASJJhW7wdOpqJj9QJA8FyGRfr8E8uUUhqUvhF0728,11372
|
| 788 |
+
pip/_vendor/urllib3/_version.py,sha256=t9wGB6ooOTXXgiY66K1m6BZS1CJyXHAU8EoWDTe6Shk,64
|
| 789 |
+
pip/_vendor/urllib3/connection.py,sha256=ttIA909BrbTUzwkqEe_TzZVh4JOOj7g61Ysei2mrwGg,20314
|
| 790 |
+
pip/_vendor/urllib3/connectionpool.py,sha256=e2eiAwNbFNCKxj4bwDKNK-w7HIdSz3OmMxU_TIt-evQ,40408
|
| 791 |
+
pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 792 |
+
pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc,,
|
| 793 |
+
pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc,,
|
| 794 |
+
pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc,,
|
| 795 |
+
pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc,,
|
| 796 |
+
pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc,,
|
| 797 |
+
pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc,,
|
| 798 |
+
pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc,,
|
| 799 |
+
pip/_vendor/urllib3/contrib/_appengine_environ.py,sha256=bDbyOEhW2CKLJcQqAKAyrEHN-aklsyHFKq6vF8ZFsmk,957
|
| 800 |
+
pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 801 |
+
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc,,
|
| 802 |
+
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc,,
|
| 803 |
+
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc,,
|
| 804 |
+
pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=4Xk64qIkPBt09A5q-RIFUuDhNc9mXilVapm7WnYnzRw,17632
|
| 805 |
+
pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=B2JBB2_NRP02xK6DCa1Pa9IuxrPwxzDzZbixQkb7U9M,13922
|
| 806 |
+
pip/_vendor/urllib3/contrib/appengine.py,sha256=VR68eAVE137lxTgjBDwCna5UiBZTOKa01Aj_-5BaCz4,11036
|
| 807 |
+
pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=NlfkW7WMdW8ziqudopjHoW299og1BTWi0IeIibquFwk,4528
|
| 808 |
+
pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=hDJh4MhyY_p-oKlFcYcQaVQRDv6GMmBGuW9yjxyeejM,17081
|
| 809 |
+
pip/_vendor/urllib3/contrib/securetransport.py,sha256=Fef1IIUUFHqpevzXiDPbIGkDKchY2FVKeVeLGR1Qq3g,34446
|
| 810 |
+
pip/_vendor/urllib3/contrib/socks.py,sha256=aRi9eWXo9ZEb95XUxef4Z21CFlnnjbEiAo9HOseoMt4,7097
|
| 811 |
+
pip/_vendor/urllib3/exceptions.py,sha256=0Mnno3KHTNfXRfY7638NufOPkUb6mXOm-Lqj-4x2w8A,8217
|
| 812 |
+
pip/_vendor/urllib3/fields.py,sha256=kvLDCg_JmH1lLjUUEY_FLS8UhY7hBvDPuVETbY8mdrM,8579
|
| 813 |
+
pip/_vendor/urllib3/filepost.py,sha256=5b_qqgRHVlL7uLtdAYBzBh-GHmU5AfJVt_2N0XS3PeY,2440
|
| 814 |
+
pip/_vendor/urllib3/packages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 815 |
+
pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc,,
|
| 816 |
+
pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc,,
|
| 817 |
+
pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 818 |
+
pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc,,
|
| 819 |
+
pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc,,
|
| 820 |
+
pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc,,
|
| 821 |
+
pip/_vendor/urllib3/packages/backports/makefile.py,sha256=nbzt3i0agPVP07jqqgjhaYjMmuAi_W5E0EywZivVO8E,1417
|
| 822 |
+
pip/_vendor/urllib3/packages/backports/weakref_finalize.py,sha256=tRCal5OAhNSRyb0DhHp-38AtIlCsRP8BxF3NX-6rqIA,5343
|
| 823 |
+
pip/_vendor/urllib3/packages/six.py,sha256=b9LM0wBXv7E7SrbCjAm4wwN-hrH-iNxv18LgWNMMKPo,34665
|
| 824 |
+
pip/_vendor/urllib3/poolmanager.py,sha256=aWyhXRtNO4JUnCSVVqKTKQd8EXTvUm1VN9pgs2bcONo,19990
|
| 825 |
+
pip/_vendor/urllib3/request.py,sha256=YTWFNr7QIwh7E1W9dde9LM77v2VWTJ5V78XuTTw7D1A,6691
|
| 826 |
+
pip/_vendor/urllib3/response.py,sha256=fmDJAFkG71uFTn-sVSTh2Iw0WmcXQYqkbRjihvwBjU8,30641
|
| 827 |
+
pip/_vendor/urllib3/util/__init__.py,sha256=JEmSmmqqLyaw8P51gUImZh8Gwg9i1zSe-DoqAitn2nc,1155
|
| 828 |
+
pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc,,
|
| 829 |
+
pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc,,
|
| 830 |
+
pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc,,
|
| 831 |
+
pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc,,
|
| 832 |
+
pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc,,
|
| 833 |
+
pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc,,
|
| 834 |
+
pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc,,
|
| 835 |
+
pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc,,
|
| 836 |
+
pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc,,
|
| 837 |
+
pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc,,
|
| 838 |
+
pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc,,
|
| 839 |
+
pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc,,
|
| 840 |
+
pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc,,
|
| 841 |
+
pip/_vendor/urllib3/util/connection.py,sha256=5Lx2B1PW29KxBn2T0xkN1CBgRBa3gGVJBKoQoRogEVk,4901
|
| 842 |
+
pip/_vendor/urllib3/util/proxy.py,sha256=zUvPPCJrp6dOF0N4GAVbOcl6o-4uXKSrGiTkkr5vUS4,1605
|
| 843 |
+
pip/_vendor/urllib3/util/queue.py,sha256=nRgX8_eX-_VkvxoX096QWoz8Ps0QHUAExILCY_7PncM,498
|
| 844 |
+
pip/_vendor/urllib3/util/request.py,sha256=C0OUt2tcU6LRiQJ7YYNP9GvPrSvl7ziIBekQ-5nlBZk,3997
|
| 845 |
+
pip/_vendor/urllib3/util/response.py,sha256=GJpg3Egi9qaJXRwBh5wv-MNuRWan5BIu40oReoxWP28,3510
|
| 846 |
+
pip/_vendor/urllib3/util/retry.py,sha256=6ENvOZ8PBDzh8kgixpql9lIrb2dxH-k7ZmBanJF2Ng4,22050
|
| 847 |
+
pip/_vendor/urllib3/util/ssl_.py,sha256=QDuuTxPSCj1rYtZ4xpD7Ux-r20TD50aHyqKyhQ7Bq4A,17460
|
| 848 |
+
pip/_vendor/urllib3/util/ssl_match_hostname.py,sha256=Ir4cZVEjmAk8gUAIHWSi7wtOO83UCYABY2xFD1Ql_WA,5758
|
| 849 |
+
pip/_vendor/urllib3/util/ssltransport.py,sha256=NA-u5rMTrDFDFC8QzRKUEKMG0561hOD4qBTr3Z4pv6E,6895
|
| 850 |
+
pip/_vendor/urllib3/util/timeout.py,sha256=cwq4dMk87mJHSBktK1miYJ-85G-3T3RmT20v7SFCpno,10168
|
| 851 |
+
pip/_vendor/urllib3/util/url.py,sha256=lCAE7M5myA8EDdW0sJuyyZhVB9K_j38ljWhHAnFaWoE,14296
|
| 852 |
+
pip/_vendor/urllib3/util/wait.py,sha256=fOX0_faozG2P7iVojQoE1mbydweNyTcm-hXEfFrTtLI,5403
|
| 853 |
+
pip/_vendor/vendor.txt,sha256=EW-E3cE5XEAtVFzGInikArOMDxGP0DLUWzXpY4RZfFY,333
|
| 854 |
+
pip/py.typed,sha256=EBVvvPRTn_eIpz5e5QztSCdrMX7Qwd7VP93RSoIlZ2I,286
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/REQUESTED
ADDED
|
File without changes
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/WHEEL
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Wheel-Version: 1.0
|
| 2 |
+
Generator: setuptools (75.8.0)
|
| 3 |
+
Root-Is-Purelib: true
|
| 4 |
+
Tag: py3-none-any
|
| 5 |
+
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/entry_points.txt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[console_scripts]
|
| 2 |
+
pip = pip._internal.cli.main:main
|
| 3 |
+
pip3 = pip._internal.cli.main:main
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pip-25.0.1.dist-info/top_level.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/__init__.py
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""propcache: An accelerated property cache for Python classes."""
|
| 2 |
+
|
| 3 |
+
from typing import TYPE_CHECKING
|
| 4 |
+
|
| 5 |
+
_PUBLIC_API = ("cached_property", "under_cached_property")
|
| 6 |
+
|
| 7 |
+
__version__ = "0.3.0"
|
| 8 |
+
__all__ = ()
|
| 9 |
+
|
| 10 |
+
# Imports have moved to `propcache.api` in 0.2.0+.
|
| 11 |
+
# This module is now a facade for the API.
|
| 12 |
+
if TYPE_CHECKING:
|
| 13 |
+
from .api import cached_property as cached_property # noqa: F401
|
| 14 |
+
from .api import under_cached_property as under_cached_property # noqa: F401
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
def _import_facade(attr: str) -> object:
|
| 18 |
+
"""Import the public API from the `api` module."""
|
| 19 |
+
if attr in _PUBLIC_API:
|
| 20 |
+
from . import api # pylint: disable=import-outside-toplevel
|
| 21 |
+
|
| 22 |
+
return getattr(api, attr)
|
| 23 |
+
raise AttributeError(f"module '{__package__}' has no attribute '{attr}'")
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
def _dir_facade() -> list[str]:
|
| 27 |
+
"""Include the public API in the module's dir() output."""
|
| 28 |
+
return [*_PUBLIC_API, *globals().keys()]
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
__getattr__ = _import_facade
|
| 32 |
+
__dir__ = _dir_facade
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/_helpers.py
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import sys
|
| 3 |
+
from typing import TYPE_CHECKING
|
| 4 |
+
|
| 5 |
+
__all__ = ("cached_property", "under_cached_property")
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
NO_EXTENSIONS = bool(os.environ.get("PROPCACHE_NO_EXTENSIONS")) # type: bool
|
| 9 |
+
if sys.implementation.name != "cpython":
|
| 10 |
+
NO_EXTENSIONS = True
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
# isort: off
|
| 14 |
+
if TYPE_CHECKING:
|
| 15 |
+
from ._helpers_py import cached_property as cached_property_py
|
| 16 |
+
from ._helpers_py import under_cached_property as under_cached_property_py
|
| 17 |
+
|
| 18 |
+
cached_property = cached_property_py
|
| 19 |
+
under_cached_property = under_cached_property_py
|
| 20 |
+
elif not NO_EXTENSIONS: # pragma: no branch
|
| 21 |
+
try:
|
| 22 |
+
from ._helpers_c import cached_property as cached_property_c # type: ignore[attr-defined, unused-ignore] # noqa: E501
|
| 23 |
+
from ._helpers_c import under_cached_property as under_cached_property_c # type: ignore[attr-defined, unused-ignore] # noqa: E501
|
| 24 |
+
|
| 25 |
+
cached_property = cached_property_c
|
| 26 |
+
under_cached_property = under_cached_property_c
|
| 27 |
+
except ImportError: # pragma: no cover
|
| 28 |
+
from ._helpers_py import cached_property as cached_property_py
|
| 29 |
+
from ._helpers_py import under_cached_property as under_cached_property_py
|
| 30 |
+
|
| 31 |
+
cached_property = cached_property_py # type: ignore[assignment, misc]
|
| 32 |
+
under_cached_property = under_cached_property_py
|
| 33 |
+
else:
|
| 34 |
+
from ._helpers_py import cached_property as cached_property_py
|
| 35 |
+
from ._helpers_py import under_cached_property as under_cached_property_py
|
| 36 |
+
|
| 37 |
+
cached_property = cached_property_py # type: ignore[assignment, misc]
|
| 38 |
+
under_cached_property = under_cached_property_py
|
| 39 |
+
# isort: on
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/_helpers_c.pyx
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# cython: language_level=3, freethreading_compatible=True
|
| 2 |
+
from types import GenericAlias
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
cdef _sentinel = object()
|
| 6 |
+
|
| 7 |
+
cdef class under_cached_property:
|
| 8 |
+
"""Use as a class method decorator. It operates almost exactly like
|
| 9 |
+
the Python `@property` decorator, but it puts the result of the
|
| 10 |
+
method it decorates into the instance dict after the first call,
|
| 11 |
+
effectively replacing the function it decorates with an instance
|
| 12 |
+
variable. It is, in Python parlance, a data descriptor.
|
| 13 |
+
|
| 14 |
+
"""
|
| 15 |
+
|
| 16 |
+
cdef readonly object wrapped
|
| 17 |
+
cdef object name
|
| 18 |
+
|
| 19 |
+
def __init__(self, wrapped):
|
| 20 |
+
self.wrapped = wrapped
|
| 21 |
+
self.name = wrapped.__name__
|
| 22 |
+
|
| 23 |
+
@property
|
| 24 |
+
def __doc__(self):
|
| 25 |
+
return self.wrapped.__doc__
|
| 26 |
+
|
| 27 |
+
def __get__(self, inst, owner):
|
| 28 |
+
if inst is None:
|
| 29 |
+
return self
|
| 30 |
+
cdef dict cache = inst._cache
|
| 31 |
+
val = cache.get(self.name, _sentinel)
|
| 32 |
+
if val is _sentinel:
|
| 33 |
+
val = self.wrapped(inst)
|
| 34 |
+
cache[self.name] = val
|
| 35 |
+
return val
|
| 36 |
+
|
| 37 |
+
def __set__(self, inst, value):
|
| 38 |
+
raise AttributeError("cached property is read-only")
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
cdef class cached_property:
|
| 42 |
+
"""Use as a class method decorator. It operates almost exactly like
|
| 43 |
+
the Python `@property` decorator, but it puts the result of the
|
| 44 |
+
method it decorates into the instance dict after the first call,
|
| 45 |
+
effectively replacing the function it decorates with an instance
|
| 46 |
+
variable. It is, in Python parlance, a data descriptor.
|
| 47 |
+
|
| 48 |
+
"""
|
| 49 |
+
|
| 50 |
+
cdef readonly object func
|
| 51 |
+
cdef object name
|
| 52 |
+
|
| 53 |
+
def __init__(self, func):
|
| 54 |
+
self.func = func
|
| 55 |
+
self.name = None
|
| 56 |
+
|
| 57 |
+
@property
|
| 58 |
+
def __doc__(self):
|
| 59 |
+
return self.func.__doc__
|
| 60 |
+
|
| 61 |
+
def __set_name__(self, owner, name):
|
| 62 |
+
if self.name is None:
|
| 63 |
+
self.name = name
|
| 64 |
+
elif name != self.name:
|
| 65 |
+
raise TypeError(
|
| 66 |
+
"Cannot assign the same cached_property to two different names "
|
| 67 |
+
f"({self.name!r} and {name!r})."
|
| 68 |
+
)
|
| 69 |
+
|
| 70 |
+
def __get__(self, inst, owner):
|
| 71 |
+
if inst is None:
|
| 72 |
+
return self
|
| 73 |
+
if self.name is None:
|
| 74 |
+
raise TypeError(
|
| 75 |
+
"Cannot use cached_property instance"
|
| 76 |
+
" without calling __set_name__ on it.")
|
| 77 |
+
cdef dict cache = inst.__dict__
|
| 78 |
+
val = cache.get(self.name, _sentinel)
|
| 79 |
+
if val is _sentinel:
|
| 80 |
+
val = self.func(inst)
|
| 81 |
+
cache[self.name] = val
|
| 82 |
+
return val
|
| 83 |
+
|
| 84 |
+
__class_getitem__ = classmethod(GenericAlias)
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/_helpers_py.py
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Various helper functions."""
|
| 2 |
+
|
| 3 |
+
import sys
|
| 4 |
+
from functools import cached_property
|
| 5 |
+
from typing import Any, Callable, Generic, Optional, Protocol, TypeVar, Union, overload
|
| 6 |
+
|
| 7 |
+
__all__ = ("under_cached_property", "cached_property")
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
if sys.version_info >= (3, 11):
|
| 11 |
+
from typing import Self
|
| 12 |
+
else:
|
| 13 |
+
Self = Any
|
| 14 |
+
|
| 15 |
+
_T = TypeVar("_T")
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
class _TSelf(Protocol, Generic[_T]):
|
| 19 |
+
_cache: dict[str, _T]
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
class under_cached_property(Generic[_T]):
|
| 23 |
+
"""Use as a class method decorator.
|
| 24 |
+
|
| 25 |
+
It operates almost exactly like
|
| 26 |
+
the Python `@property` decorator, but it puts the result of the
|
| 27 |
+
method it decorates into the instance dict after the first call,
|
| 28 |
+
effectively replacing the function it decorates with an instance
|
| 29 |
+
variable. It is, in Python parlance, a data descriptor.
|
| 30 |
+
"""
|
| 31 |
+
|
| 32 |
+
def __init__(self, wrapped: Callable[..., _T]) -> None:
|
| 33 |
+
self.wrapped = wrapped
|
| 34 |
+
self.__doc__ = wrapped.__doc__
|
| 35 |
+
self.name = wrapped.__name__
|
| 36 |
+
|
| 37 |
+
@overload
|
| 38 |
+
def __get__(self, inst: None, owner: Optional[type[object]] = None) -> Self: ...
|
| 39 |
+
|
| 40 |
+
@overload
|
| 41 |
+
def __get__(self, inst: _TSelf[_T], owner: Optional[type[object]] = None) -> _T: ...
|
| 42 |
+
|
| 43 |
+
def __get__(
|
| 44 |
+
self, inst: Optional[_TSelf[_T]], owner: Optional[type[object]] = None
|
| 45 |
+
) -> Union[_T, Self]:
|
| 46 |
+
if inst is None:
|
| 47 |
+
return self
|
| 48 |
+
try:
|
| 49 |
+
return inst._cache[self.name]
|
| 50 |
+
except KeyError:
|
| 51 |
+
val = self.wrapped(inst)
|
| 52 |
+
inst._cache[self.name] = val
|
| 53 |
+
return val
|
| 54 |
+
|
| 55 |
+
def __set__(self, inst: _TSelf[_T], value: _T) -> None:
|
| 56 |
+
raise AttributeError("cached property is read-only")
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/api.py
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Public API of the property caching library."""
|
| 2 |
+
|
| 3 |
+
from ._helpers import cached_property, under_cached_property
|
| 4 |
+
|
| 5 |
+
__all__ = (
|
| 6 |
+
"cached_property",
|
| 7 |
+
"under_cached_property",
|
| 8 |
+
)
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/propcache/py.typed
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
# Placeholder
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/INSTALLER
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/LICENSE.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/METADATA
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Metadata-Version: 2.1
|
| 2 |
+
Name: pyarrow
|
| 3 |
+
Version: 19.0.1
|
| 4 |
+
Summary: Python library for Apache Arrow
|
| 5 |
+
Maintainer-email: Apache Arrow Developers <dev@arrow.apache.org>
|
| 6 |
+
License: Apache Software License
|
| 7 |
+
Project-URL: Homepage, https://arrow.apache.org/
|
| 8 |
+
Project-URL: Documentation, https://arrow.apache.org/docs/python
|
| 9 |
+
Project-URL: Repository, https://github.com/apache/arrow
|
| 10 |
+
Project-URL: Issues, https://github.com/apache/arrow/issues
|
| 11 |
+
Classifier: License :: OSI Approved :: Apache Software License
|
| 12 |
+
Classifier: Programming Language :: Python :: 3.9
|
| 13 |
+
Classifier: Programming Language :: Python :: 3.10
|
| 14 |
+
Classifier: Programming Language :: Python :: 3.11
|
| 15 |
+
Classifier: Programming Language :: Python :: 3.12
|
| 16 |
+
Classifier: Programming Language :: Python :: 3.13
|
| 17 |
+
Requires-Python: >=3.9
|
| 18 |
+
Description-Content-Type: text/markdown
|
| 19 |
+
License-File: ../LICENSE.txt
|
| 20 |
+
License-File: ../NOTICE.txt
|
| 21 |
+
Provides-Extra: test
|
| 22 |
+
Requires-Dist: pytest ; extra == 'test'
|
| 23 |
+
Requires-Dist: hypothesis ; extra == 'test'
|
| 24 |
+
Requires-Dist: cffi ; extra == 'test'
|
| 25 |
+
Requires-Dist: pytz ; extra == 'test'
|
| 26 |
+
Requires-Dist: pandas ; extra == 'test'
|
| 27 |
+
|
| 28 |
+
<!---
|
| 29 |
+
Licensed to the Apache Software Foundation (ASF) under one
|
| 30 |
+
or more contributor license agreements. See the NOTICE file
|
| 31 |
+
distributed with this work for additional information
|
| 32 |
+
regarding copyright ownership. The ASF licenses this file
|
| 33 |
+
to you under the Apache License, Version 2.0 (the
|
| 34 |
+
"License"); you may not use this file except in compliance
|
| 35 |
+
with the License. You may obtain a copy of the License at
|
| 36 |
+
|
| 37 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
| 38 |
+
|
| 39 |
+
Unless required by applicable law or agreed to in writing,
|
| 40 |
+
software distributed under the License is distributed on an
|
| 41 |
+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
| 42 |
+
KIND, either express or implied. See the License for the
|
| 43 |
+
specific language governing permissions and limitations
|
| 44 |
+
under the License.
|
| 45 |
+
-->
|
| 46 |
+
|
| 47 |
+
## Python library for Apache Arrow
|
| 48 |
+
|
| 49 |
+
[](https://pypi.org/project/pyarrow/) [](https://anaconda.org/conda-forge/pyarrow)
|
| 50 |
+
|
| 51 |
+
This library provides a Python API for functionality provided by the Arrow C++
|
| 52 |
+
libraries, along with tools for Arrow integration and interoperability with
|
| 53 |
+
pandas, NumPy, and other software in the Python ecosystem.
|
| 54 |
+
|
| 55 |
+
## Installing
|
| 56 |
+
|
| 57 |
+
Across platforms, you can install a recent version of pyarrow with the conda
|
| 58 |
+
package manager:
|
| 59 |
+
|
| 60 |
+
```shell
|
| 61 |
+
conda install pyarrow -c conda-forge
|
| 62 |
+
```
|
| 63 |
+
|
| 64 |
+
On Linux, macOS, and Windows, you can also install binary wheels from PyPI with
|
| 65 |
+
pip:
|
| 66 |
+
|
| 67 |
+
```shell
|
| 68 |
+
pip install pyarrow
|
| 69 |
+
```
|
| 70 |
+
|
| 71 |
+
If you encounter any issues importing the pip wheels on Windows, you may need
|
| 72 |
+
to install the [Visual C++ Redistributable for Visual Studio 2015][6].
|
| 73 |
+
|
| 74 |
+
## Development
|
| 75 |
+
|
| 76 |
+
See [Python Development][2] in the documentation subproject.
|
| 77 |
+
|
| 78 |
+
### Building the documentation
|
| 79 |
+
|
| 80 |
+
See [documentation build instructions][1] in the documentation subproject.
|
| 81 |
+
|
| 82 |
+
[1]: https://github.com/apache/arrow/blob/main/docs/source/developers/documentation.rst
|
| 83 |
+
[2]: https://github.com/apache/arrow/blob/main/docs/source/developers/python.rst
|
| 84 |
+
[3]: https://github.com/pandas-dev/pandas
|
| 85 |
+
[5]: https://arrow.apache.org/docs/latest/python/benchmarks.html
|
| 86 |
+
[6]: https://www.microsoft.com/en-us/download/details.aspx?id=48145
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/NOTICE.txt
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Apache Arrow
|
| 2 |
+
Copyright 2016-2024 The Apache Software Foundation
|
| 3 |
+
|
| 4 |
+
This product includes software developed at
|
| 5 |
+
The Apache Software Foundation (http://www.apache.org/).
|
| 6 |
+
|
| 7 |
+
This product includes software from the SFrame project (BSD, 3-clause).
|
| 8 |
+
* Copyright (C) 2015 Dato, Inc.
|
| 9 |
+
* Copyright (c) 2009 Carnegie Mellon University.
|
| 10 |
+
|
| 11 |
+
This product includes software from the Feather project (Apache 2.0)
|
| 12 |
+
https://github.com/wesm/feather
|
| 13 |
+
|
| 14 |
+
This product includes software from the DyND project (BSD 2-clause)
|
| 15 |
+
https://github.com/libdynd
|
| 16 |
+
|
| 17 |
+
This product includes software from the LLVM project
|
| 18 |
+
* distributed under the University of Illinois Open Source
|
| 19 |
+
|
| 20 |
+
This product includes software from the google-lint project
|
| 21 |
+
* Copyright (c) 2009 Google Inc. All rights reserved.
|
| 22 |
+
|
| 23 |
+
This product includes software from the mman-win32 project
|
| 24 |
+
* Copyright https://code.google.com/p/mman-win32/
|
| 25 |
+
* Licensed under the MIT License;
|
| 26 |
+
|
| 27 |
+
This product includes software from the LevelDB project
|
| 28 |
+
* Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
| 29 |
+
* Use of this source code is governed by a BSD-style license that can be
|
| 30 |
+
* Moved from Kudu http://github.com/cloudera/kudu
|
| 31 |
+
|
| 32 |
+
This product includes software from the CMake project
|
| 33 |
+
* Copyright 2001-2009 Kitware, Inc.
|
| 34 |
+
* Copyright 2012-2014 Continuum Analytics, Inc.
|
| 35 |
+
* All rights reserved.
|
| 36 |
+
|
| 37 |
+
This product includes software from https://github.com/matthew-brett/multibuild (BSD 2-clause)
|
| 38 |
+
* Copyright (c) 2013-2016, Matt Terry and Matthew Brett; all rights reserved.
|
| 39 |
+
|
| 40 |
+
This product includes software from the Ibis project (Apache 2.0)
|
| 41 |
+
* Copyright (c) 2015 Cloudera, Inc.
|
| 42 |
+
* https://github.com/cloudera/ibis
|
| 43 |
+
|
| 44 |
+
This product includes software from Dremio (Apache 2.0)
|
| 45 |
+
* Copyright (C) 2017-2018 Dremio Corporation
|
| 46 |
+
* https://github.com/dremio/dremio-oss
|
| 47 |
+
|
| 48 |
+
This product includes software from Google Guava (Apache 2.0)
|
| 49 |
+
* Copyright (C) 2007 The Guava Authors
|
| 50 |
+
* https://github.com/google/guava
|
| 51 |
+
|
| 52 |
+
This product include software from CMake (BSD 3-Clause)
|
| 53 |
+
* CMake - Cross Platform Makefile Generator
|
| 54 |
+
* Copyright 2000-2019 Kitware, Inc. and Contributors
|
| 55 |
+
|
| 56 |
+
The web site includes files generated by Jekyll.
|
| 57 |
+
|
| 58 |
+
--------------------------------------------------------------------------------
|
| 59 |
+
|
| 60 |
+
This product includes code from Apache Kudu, which includes the following in
|
| 61 |
+
its NOTICE file:
|
| 62 |
+
|
| 63 |
+
Apache Kudu
|
| 64 |
+
Copyright 2016 The Apache Software Foundation
|
| 65 |
+
|
| 66 |
+
This product includes software developed at
|
| 67 |
+
The Apache Software Foundation (http://www.apache.org/).
|
| 68 |
+
|
| 69 |
+
Portions of this software were developed at
|
| 70 |
+
Cloudera, Inc (http://www.cloudera.com/).
|
| 71 |
+
|
| 72 |
+
--------------------------------------------------------------------------------
|
| 73 |
+
|
| 74 |
+
This product includes code from Apache ORC, which includes the following in
|
| 75 |
+
its NOTICE file:
|
| 76 |
+
|
| 77 |
+
Apache ORC
|
| 78 |
+
Copyright 2013-2019 The Apache Software Foundation
|
| 79 |
+
|
| 80 |
+
This product includes software developed by The Apache Software
|
| 81 |
+
Foundation (http://www.apache.org/).
|
| 82 |
+
|
| 83 |
+
This product includes software developed by Hewlett-Packard:
|
| 84 |
+
(c) Copyright [2014-2015] Hewlett-Packard Development Company, L.P
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/RECORD
ADDED
|
@@ -0,0 +1,876 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pyarrow-19.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
| 2 |
+
pyarrow-19.0.1.dist-info/LICENSE.txt,sha256=Ip2-KeThNE6VFy9vOkJ37A2lx4UMsDiXxH86JLevzgg,110423
|
| 3 |
+
pyarrow-19.0.1.dist-info/METADATA,sha256=EgoXyOAG0uHz9AcThf0LXwm5wXtgAEPdKLAGB_sCJlw,3292
|
| 4 |
+
pyarrow-19.0.1.dist-info/NOTICE.txt,sha256=ti6iQmQtOhjx4psMH-CCQVppQ_4VjuIrSM_zdi81QAk,3032
|
| 5 |
+
pyarrow-19.0.1.dist-info/RECORD,,
|
| 6 |
+
pyarrow-19.0.1.dist-info/WHEEL,sha256=GAEhkxm77H2WVEyE70oaJna7cr1z-ZyZC29APwfwcpg,113
|
| 7 |
+
pyarrow-19.0.1.dist-info/top_level.txt,sha256=Zuk_c1WeinXdMz20fXlEtGC67zfKOWuwU8adpEEU_nI,18
|
| 8 |
+
pyarrow/__init__.pxd,sha256=Wnar1phFqM_ZHnZmtbuqm6wJHsXlBoYKhV7Qmo2jUHA,2195
|
| 9 |
+
pyarrow/__init__.py,sha256=8eizEp9avDHVfocI_YGNiI0uHpD2trTr-HnGzQYPP0I,18343
|
| 10 |
+
pyarrow/__pycache__/__init__.cpython-312.pyc,,
|
| 11 |
+
pyarrow/__pycache__/_compute_docstrings.cpython-312.pyc,,
|
| 12 |
+
pyarrow/__pycache__/_generated_version.cpython-312.pyc,,
|
| 13 |
+
pyarrow/__pycache__/acero.cpython-312.pyc,,
|
| 14 |
+
pyarrow/__pycache__/benchmark.cpython-312.pyc,,
|
| 15 |
+
pyarrow/__pycache__/cffi.cpython-312.pyc,,
|
| 16 |
+
pyarrow/__pycache__/compute.cpython-312.pyc,,
|
| 17 |
+
pyarrow/__pycache__/conftest.cpython-312.pyc,,
|
| 18 |
+
pyarrow/__pycache__/csv.cpython-312.pyc,,
|
| 19 |
+
pyarrow/__pycache__/cuda.cpython-312.pyc,,
|
| 20 |
+
pyarrow/__pycache__/dataset.cpython-312.pyc,,
|
| 21 |
+
pyarrow/__pycache__/feather.cpython-312.pyc,,
|
| 22 |
+
pyarrow/__pycache__/flight.cpython-312.pyc,,
|
| 23 |
+
pyarrow/__pycache__/fs.cpython-312.pyc,,
|
| 24 |
+
pyarrow/__pycache__/ipc.cpython-312.pyc,,
|
| 25 |
+
pyarrow/__pycache__/json.cpython-312.pyc,,
|
| 26 |
+
pyarrow/__pycache__/jvm.cpython-312.pyc,,
|
| 27 |
+
pyarrow/__pycache__/orc.cpython-312.pyc,,
|
| 28 |
+
pyarrow/__pycache__/pandas_compat.cpython-312.pyc,,
|
| 29 |
+
pyarrow/__pycache__/substrait.cpython-312.pyc,,
|
| 30 |
+
pyarrow/__pycache__/types.cpython-312.pyc,,
|
| 31 |
+
pyarrow/__pycache__/util.cpython-312.pyc,,
|
| 32 |
+
pyarrow/_acero.cpython-312-x86_64-linux-gnu.so,sha256=dgUvqcZcc4dZZwgDf1S9bLBDH6JF5FgsASKD12vCJrM,327040
|
| 33 |
+
pyarrow/_acero.pxd,sha256=5ish_GgGWvit4ebhzoZil7b-m0r2RuG5JwYoxsH34FI,1440
|
| 34 |
+
pyarrow/_acero.pyx,sha256=56orFsG2ksoP4C0DPIa-ruQxQRCC489lYlHkGJIh1zY,21301
|
| 35 |
+
pyarrow/_azurefs.cpython-312-x86_64-linux-gnu.so,sha256=B7UYYtwkbt8ImgAVp3VMLFYhSQThvtK3cam4TWoykxw,102248
|
| 36 |
+
pyarrow/_azurefs.pyx,sha256=ezGU_z3kIw2r14YAB4yogaxMssJXikcxajz4dZSez1k,5909
|
| 37 |
+
pyarrow/_compute.cpython-312-x86_64-linux-gnu.so,sha256=qNU6IKyxdgbgMCR8FpCSDZyaW49uGSQTtYSbA7V4TRg,1372464
|
| 38 |
+
pyarrow/_compute.pxd,sha256=nmjgwV2KCGFfxZj5ruDwM4oH1ITqF0rDQS0yDvcaXBA,1949
|
| 39 |
+
pyarrow/_compute.pyx,sha256=x02Wd7ZJE91I2O3bT--t0eITZkLZLrr9hIkHSiCD6do,107266
|
| 40 |
+
pyarrow/_compute_docstrings.py,sha256=7Vg8jt1aCsWrpTxsdqR7gY6M0faxXNX31c1RZdq9CFw,1707
|
| 41 |
+
pyarrow/_csv.cpython-312-x86_64-linux-gnu.so,sha256=lrrJ8cJY1AqIka-yOjWqiiCd93J1bxhavNPK4hpywVU,371368
|
| 42 |
+
pyarrow/_csv.pxd,sha256=1Zk3Zpvvhy-Tb7c79Aqd4e7bBM21kc1JxWJkl02Y4DE,1638
|
| 43 |
+
pyarrow/_csv.pyx,sha256=aqWLHgfZ-nrqKHfVVVXeGbtY2ZChE6Oi9qIa5jP4m1M,54705
|
| 44 |
+
pyarrow/_cuda.pxd,sha256=VzhM6j9dpNgrABlvFJKoMpRC0As55im-M3tgPTOuwEk,1922
|
| 45 |
+
pyarrow/_cuda.pyx,sha256=YSlswn4Tj1H24SL_iPIGqT3v3JmofE7NwCunuOLMNwY,35136
|
| 46 |
+
pyarrow/_dataset.cpython-312-x86_64-linux-gnu.so,sha256=8ZWCVZBDBqbrRs-nyYonrW9793jg9GBLo5ih8o7L2Pk,1066128
|
| 47 |
+
pyarrow/_dataset.pxd,sha256=Ag9rUhoBySU6ba3wFLeuZyWMJnz9VkAf9TQEzWG4hUU,4944
|
| 48 |
+
pyarrow/_dataset.pyx,sha256=0s49JhLHOgYYc5z8cXdwcMrJpOPclfcd4dh9DgbRYpc,158842
|
| 49 |
+
pyarrow/_dataset_orc.cpython-312-x86_64-linux-gnu.so,sha256=dZOjZfAGiA8mQ2HdP0XRFr6L0xzfZMHKqYb8RGjNTdE,80032
|
| 50 |
+
pyarrow/_dataset_orc.pyx,sha256=JSFoRI0pfHtL2jeIuPg5TJHodcfuCNYmj_iEZ4xY87w,1499
|
| 51 |
+
pyarrow/_dataset_parquet.cpython-312-x86_64-linux-gnu.so,sha256=pkYuPRuKd0FYRKNvZtZ8YIokfhkdGFqzWbHh9xxNKt4,368456
|
| 52 |
+
pyarrow/_dataset_parquet.pxd,sha256=y-3iKehyB_eB_oeqjtt4aQRbUpVGVN1oUMFGIY13brE,1572
|
| 53 |
+
pyarrow/_dataset_parquet.pyx,sha256=x_VvTpuF9vxfAAUGkLZrr0N_TCxYWlqMahlkg0201gQ,38916
|
| 54 |
+
pyarrow/_dataset_parquet_encryption.cpython-312-x86_64-linux-gnu.so,sha256=_4l4x5WoYObyPieO6xFMdiNp2PewcbmtcTQsJadqQ30,122296
|
| 55 |
+
pyarrow/_dataset_parquet_encryption.pyx,sha256=p7LDNUsp3jMVcWDcbOFp8a3CYJjASVPI_tfATpY-ePg,7229
|
| 56 |
+
pyarrow/_dlpack.pxi,sha256=clw0FkGoyZMEtUU8zPpO_DMtl2X-27kb2UtyhQuIc1s,1832
|
| 57 |
+
pyarrow/_feather.cpython-312-x86_64-linux-gnu.so,sha256=_DJC6Lce6jucqLI1VgHDFgjLTCftTNSeZN3eLg9wOv4,115504
|
| 58 |
+
pyarrow/_feather.pyx,sha256=DWQI4U0uAWE1ZYUwPreBPJg1TGLEGmF3wPEIRL-PhPw,3773
|
| 59 |
+
pyarrow/_flight.cpython-312-x86_64-linux-gnu.so,sha256=8meNM2y5-TKYooEi_P13xc4ey3BzEimTGxJJ2LT6kNg,1315616
|
| 60 |
+
pyarrow/_flight.pyx,sha256=YEHQPtbvYUlq1gWbpq9ijd-j5DHjWFJ3GFnacmdFyNM,114136
|
| 61 |
+
pyarrow/_fs.cpython-312-x86_64-linux-gnu.so,sha256=ssmiLDNUys1ps0T9CP2rpwFYFSrf4uIsZUNqGogMPq0,499088
|
| 62 |
+
pyarrow/_fs.pxd,sha256=SmHS31eyYU7VUZlVuP613HKgpd7bENnQGApvX_g2Lfw,2439
|
| 63 |
+
pyarrow/_fs.pyx,sha256=MjDANZDAaHHz1nryL-rxSaKtuPoe_qRWEfbaAlOE0PY,52479
|
| 64 |
+
pyarrow/_gcsfs.cpython-312-x86_64-linux-gnu.so,sha256=1H1VVyK727uc4azeppppp0T3b1qEmhvxGZig8KkMjAE,135344
|
| 65 |
+
pyarrow/_gcsfs.pyx,sha256=fa1QmTQII9sFKtjtfeZPQfTEntAh3IGyJJ1w116OCA4,9121
|
| 66 |
+
pyarrow/_generated_version.py,sha256=DaPWDx9zwJv8Im89QSff5-giHF9ZO7FOjjkbN73ULwI,413
|
| 67 |
+
pyarrow/_hdfs.cpython-312-x86_64-linux-gnu.so,sha256=ezwOQz9zqfO_C4j7xBzaw8DpzUen6wJc0KCuV8AIXuo,131976
|
| 68 |
+
pyarrow/_hdfs.pyx,sha256=HA0KkZa6aVRmwg3ku3U7lZo_8COn1cLwylfc6nEJUlg,5885
|
| 69 |
+
pyarrow/_json.cpython-312-x86_64-linux-gnu.so,sha256=cmZGZxeifXM3jSnz_s9qfKlEr0XBTKzvasbgTb942OI,117792
|
| 70 |
+
pyarrow/_json.pxd,sha256=tECTP14M12-b_ja5QI3snQbd0uWPWmmC9FwkWq23Vg0,1206
|
| 71 |
+
pyarrow/_json.pyx,sha256=RmaWaSTG61u2Qcmc_fLsTns_awLJDls3_SdlaCAg53Y,9860
|
| 72 |
+
pyarrow/_orc.cpython-312-x86_64-linux-gnu.so,sha256=rKNCNNydQuPzR9mMx_8k8rVxMEh9eGgKGx18YPByyvI,211016
|
| 73 |
+
pyarrow/_orc.pxd,sha256=6hL0cq1RufqQD-B_bV3ne1rhu2g-h4rDOFNQsSb6qps,5689
|
| 74 |
+
pyarrow/_orc.pyx,sha256=Pn7r4dzagWaqMf8rymbXBIWisxonBaStZgXCi7pfrZI,15556
|
| 75 |
+
pyarrow/_parquet.cpython-312-x86_64-linux-gnu.so,sha256=W_tWczWNY_q9Yj0bxN1Zkqy6TDraDjWy7IO4_zP8zt8,613776
|
| 76 |
+
pyarrow/_parquet.pxd,sha256=bLdSgSZg1bn-ZsQbAKOWH44esooFHQOiO9wqmrQuvn4,26805
|
| 77 |
+
pyarrow/_parquet.pyx,sha256=2nis3nkR7N-t-sTR7LaQrKo20EmRJzDDO8yZ9TUFXOA,74392
|
| 78 |
+
pyarrow/_parquet_encryption.cpython-312-x86_64-linux-gnu.so,sha256=OxgxV_dLe7bx1d6_gw0pcHl_bkh_5PmuEIfrGIiXLWI,280040
|
| 79 |
+
pyarrow/_parquet_encryption.pxd,sha256=1vQnkyS1rLrSNMlmuW62PxkOmCsYpzC60L9mqD0_LYc,2586
|
| 80 |
+
pyarrow/_parquet_encryption.pyx,sha256=CaTiq5EjTVGYQnxDEmpYcItSBiEencV-pNEu-lBAiOk,18625
|
| 81 |
+
pyarrow/_pyarrow_cpp_tests.cpython-312-x86_64-linux-gnu.so,sha256=hlhN_T_6R4qu81fCTnYhwm4aKmEwcO0h3PHjx5p6eCE,89520
|
| 82 |
+
pyarrow/_pyarrow_cpp_tests.pxd,sha256=nPyRmNtFbOUvSXCwegAApQFfh8UI_K9Hq5dN4oPAxdo,1199
|
| 83 |
+
pyarrow/_pyarrow_cpp_tests.pyx,sha256=gLeMzB9RWodZgXEpipX65_0aqWu12SjMld0JZmZVRP0,1753
|
| 84 |
+
pyarrow/_s3fs.cpython-312-x86_64-linux-gnu.so,sha256=Re4zS-ZthYFgFZRf7I0kfoehvF-ylQgIPjJzQBps7gM,224712
|
| 85 |
+
pyarrow/_s3fs.pyx,sha256=5FysopSDVe8OmTObvTtSm8AVcGOB7zFE0LRKreHoDoE,19706
|
| 86 |
+
pyarrow/_substrait.cpython-312-x86_64-linux-gnu.so,sha256=dmaH8Zu6sWsIfVi7KZW62mJpRcZdZTdkJzvyoFbxgNw,219056
|
| 87 |
+
pyarrow/_substrait.pyx,sha256=fZT496mzp1ssSKIzqtmPeGBKeYq5f0vm8cWlWqaC408,15666
|
| 88 |
+
pyarrow/acero.py,sha256=dUbxRMvwscdyGJqK_RNDRwcEndgn_RjvsI4hyC5Hvzs,15332
|
| 89 |
+
pyarrow/array.pxi,sha256=haWfEg86jGKrbZEPiK0dDTKcYBqnI7SHFDYudsMgiRg,152394
|
| 90 |
+
pyarrow/benchmark.pxi,sha256=DYXdu-jMSH7XcTohbc8x8NiKRLtpX9IULfY20ohkffA,869
|
| 91 |
+
pyarrow/benchmark.py,sha256=k9Z3yQyoojpYz4lTA6DkCfqT6fPG3N2fJtsHKjpbYFo,856
|
| 92 |
+
pyarrow/builder.pxi,sha256=9QE4KAiA4JpA7-2JLgX3xo32jRtuWZ3YqC-T9GzUVDc,4634
|
| 93 |
+
pyarrow/cffi.py,sha256=hEcrPH9KeG6NES3ZCpSbOVYhOgDOuBB_2LgMMucgw-8,2396
|
| 94 |
+
pyarrow/compat.pxi,sha256=Sq5c3CKq0uj5aDyOoHHkPEO_VsSpZ90JRaL2rAKHk5I,1920
|
| 95 |
+
pyarrow/compute.py,sha256=53CkbhbAbZhM4NgxitaXjkY8O8idNMclhhmbUbAxgus,23540
|
| 96 |
+
pyarrow/config.pxi,sha256=E6QOFjdlw3H1a5BOAevYNJJEmmm6FblfaaeyspnWBWw,3092
|
| 97 |
+
pyarrow/conftest.py,sha256=afosSyVsVRsJdDXRXOFQEyj4qVO39OtZYVb_wbvvadU,9811
|
| 98 |
+
pyarrow/csv.py,sha256=S6tm31Bra9HPf9IsYwBLltZBLMvNzypWfeCLySsjmds,974
|
| 99 |
+
pyarrow/cuda.py,sha256=j--8HcBAm5Ib-kbhK4d2M6SVQmDWkr7Mt5fnwU2LzdQ,1087
|
| 100 |
+
pyarrow/dataset.py,sha256=q5wx2c8CJYaAvdJyfSO2h2SzfALqN4XMz-4uGoV31qk,40303
|
| 101 |
+
pyarrow/device.pxi,sha256=CtVBXp68zNXrrPwehh56igfLsMSlYRo5rWFcKkEP_gY,5569
|
| 102 |
+
pyarrow/error.pxi,sha256=Wj7-NGUfdvlEwAwd8Ta_JqRC8IUOUpm_PmpvizCFvfY,8909
|
| 103 |
+
pyarrow/feather.py,sha256=9rWL-TYK_qc0FW3vIyYyd6Xt86ApJWLqo-2cK3F5vGQ,9959
|
| 104 |
+
pyarrow/flight.py,sha256=HLB04A0SZ35MZJumPIuBu5I2dpetjEc-CGMEdjQeQRQ,2177
|
| 105 |
+
pyarrow/fs.py,sha256=M-cSbS2bBR4MwbJqpz9Q7VxHY8fa89StEw2J0XMMF7E,14899
|
| 106 |
+
pyarrow/gandiva.pyx,sha256=bF23rkq6e45i-CePDZeTy9iFwoeg8ElrNjz9VK97QRs,24503
|
| 107 |
+
pyarrow/include/arrow/acero/accumulation_queue.h,sha256=SolyqgTMANZ87SSNpgGFnnsj5raGjay0wjRcwbnCbB0,5892
|
| 108 |
+
pyarrow/include/arrow/acero/aggregate_node.h,sha256=9HdFxR6tzSfx_UaUHZtS1I2FCbm3PvfF8FdekVpBO34,2155
|
| 109 |
+
pyarrow/include/arrow/acero/api.h,sha256=fRuKEHbKDYWRCwSHLc7vSD-6mQavyOsztluCR7evFCk,1151
|
| 110 |
+
pyarrow/include/arrow/acero/asof_join_node.h,sha256=Ko6r1wDjxg01FE9-xKkttx7WzCAzf43GxbpvGHgKZp8,1490
|
| 111 |
+
pyarrow/include/arrow/acero/backpressure_handler.h,sha256=CsSWRenrtbZYiNnf-cdYCgMLmu5KUAPUKNKMDWttoD4,2810
|
| 112 |
+
pyarrow/include/arrow/acero/benchmark_util.h,sha256=T5bNabF1TDAp28S7V_vt_VIDn6l5Be0zOVCHhcTcFf8,1943
|
| 113 |
+
pyarrow/include/arrow/acero/bloom_filter.h,sha256=bFzzAzQrs9ePp2tCPQIuk1Oa9gG_Nyp72M_HM0dhakM,11978
|
| 114 |
+
pyarrow/include/arrow/acero/exec_plan.h,sha256=U0KA3tnNvVb75G0XQFLVbGzXCGdddGyRhW3zMa8oWJc,35909
|
| 115 |
+
pyarrow/include/arrow/acero/hash_join.h,sha256=Ji0k5z778QtNQ0MwU6xBP6z7ajLk79Va-vgCqrlApso,3003
|
| 116 |
+
pyarrow/include/arrow/acero/hash_join_dict.h,sha256=_BKJmK3Z_KdJuYHh4KQCuT_1rXlUohrtEgGLtEJ4fgQ,15360
|
| 117 |
+
pyarrow/include/arrow/acero/hash_join_node.h,sha256=FXT-aeXL7nNTuV75f9oXgdGyqMK_72GnqGUm9cmBnko,4378
|
| 118 |
+
pyarrow/include/arrow/acero/map_node.h,sha256=Bd1HcW0N5azoIVth2ATeHxgTKd9XmmEkz42YBNw5eK0,2628
|
| 119 |
+
pyarrow/include/arrow/acero/options.h,sha256=w1cAGvRtp1qrK_9g9NbvzQLC26MAg_uFgakvl5d6LWU,37418
|
| 120 |
+
pyarrow/include/arrow/acero/order_by_impl.h,sha256=dQqplP-AZWPZRKio8LmTjYWlCYz9VmW-usUrtaLpd_w,1691
|
| 121 |
+
pyarrow/include/arrow/acero/partition_util.h,sha256=Q-YoDSOt5iDoRxg7ZQ81d44RBYfbNgO1kIg6CsE0tAc,7438
|
| 122 |
+
pyarrow/include/arrow/acero/pch.h,sha256=8VXXI10rUHzlQiAthx-yjHMQCpGL3dgAiVaGzTubPPE,1094
|
| 123 |
+
pyarrow/include/arrow/acero/query_context.h,sha256=D364aGRS3uWe8lgYqCNRjVvs5sKetLOOXzACdp5GZeg,6212
|
| 124 |
+
pyarrow/include/arrow/acero/schema_util.h,sha256=KA_hV2xy2TRccMyksSzQrdH9_rdGo3tQyHOIvrWWYBQ,7961
|
| 125 |
+
pyarrow/include/arrow/acero/task_util.h,sha256=6pqILuYfcVwt9HqVhRfXFVJoOC-Q_dtk8mQ5SxjgwbY,3706
|
| 126 |
+
pyarrow/include/arrow/acero/test_nodes.h,sha256=xKeLWZZC8iokveVXPjseO1MOvWMcby-0xiMISy0qw8E,2877
|
| 127 |
+
pyarrow/include/arrow/acero/time_series_util.h,sha256=W9yzoaTGkB2jtYm8w2CYknSw1EjMbsdTfmEuuL2zMtk,1210
|
| 128 |
+
pyarrow/include/arrow/acero/tpch_node.h,sha256=l3zocxHTfGmXTjywJxwoXCIk9tjzURgWdYKSgSk8DAQ,2671
|
| 129 |
+
pyarrow/include/arrow/acero/type_fwd.h,sha256=4zLhtLJf_7MSXgrhQIZVGeLxjT7JrEDAn9yW75DTFlc,1103
|
| 130 |
+
pyarrow/include/arrow/acero/util.h,sha256=byhMEj5XoAUy-93AjLrx_p9_iUZdYn5uJ_cDkCJQt5Q,6121
|
| 131 |
+
pyarrow/include/arrow/acero/visibility.h,sha256=E-4G2O4F2YabXnFNJYnsI2VbVoKBtO7AXqh_SPuJi6k,1616
|
| 132 |
+
pyarrow/include/arrow/adapters/orc/adapter.h,sha256=G5SSGGYMSREILC43kqL5fqo94c4tKgukitO15m217tY,11031
|
| 133 |
+
pyarrow/include/arrow/adapters/orc/options.h,sha256=FMxda5YSskRrB6h9FvcAuMxl5qdavWrNYHPlanjtk48,3696
|
| 134 |
+
pyarrow/include/arrow/adapters/tensorflow/convert.h,sha256=ZGFAodnwTJK0ZoXfgYJdjgi_F4vfEhI9E87zejxVb6E,3465
|
| 135 |
+
pyarrow/include/arrow/api.h,sha256=Gs6HiRBYU5N7-a79hjTl9WMSda551XdUKpWthFY2v1s,2491
|
| 136 |
+
pyarrow/include/arrow/array.h,sha256=P5oW6hvD2j97bLaSTE4_UHuV6Y38DTwJVww3Eb3xdTQ,1981
|
| 137 |
+
pyarrow/include/arrow/array/array_base.h,sha256=czxtw9UEgH8UldkhezR2am9K7GRZjWTrXMkX8TL5dwU,12147
|
| 138 |
+
pyarrow/include/arrow/array/array_binary.h,sha256=JvtB8DoR0_tqfSFS_9nMRrJ39lt1cTm5yXh-DLkhqjU,11247
|
| 139 |
+
pyarrow/include/arrow/array/array_decimal.h,sha256=xRfrZ1IFO09EmkHEolCwrJ4lsXjLo5DXdfH5_v2gSyw,3105
|
| 140 |
+
pyarrow/include/arrow/array/array_dict.h,sha256=6AMbSnZoMj-nhQhZhG4RNnxy9VVPk2DvZjVblwIUhgY,7611
|
| 141 |
+
pyarrow/include/arrow/array/array_nested.h,sha256=xySiF5b1ab97GifKMx6FuYZWb2_6e3YvSMfOORGe3J4,37605
|
| 142 |
+
pyarrow/include/arrow/array/array_primitive.h,sha256=_U8_pTHg-aHY5jaSFjHZ4hqRPXdYiyKTpr2y3OcJcdg,8184
|
| 143 |
+
pyarrow/include/arrow/array/array_run_end.h,sha256=4zs3tcUrIgDOhSEOywJ1vGY2lsH-5QuEBn87mxnDbi8,5101
|
| 144 |
+
pyarrow/include/arrow/array/builder_adaptive.h,sha256=92DpiIZDXSI_yOrMftj7P60zlCLjNmwfGM5ubdbXWM4,6861
|
| 145 |
+
pyarrow/include/arrow/array/builder_base.h,sha256=CP9kS8pDFd4XyJQdgIlBp3pTIX9mND1Lvh85re4IC8w,13723
|
| 146 |
+
pyarrow/include/arrow/array/builder_binary.h,sha256=01BrSwkFQNAEy4FVYi8Esbd2CaeyxN04GDUoXsQUFhU,32718
|
| 147 |
+
pyarrow/include/arrow/array/builder_decimal.h,sha256=DFxyFlpzWRZS9zdBhsjII5fFUOMY9bXHn3EIrIvmOMo,5051
|
| 148 |
+
pyarrow/include/arrow/array/builder_dict.h,sha256=FZjvCRIDmVuwmzx_HCcDK6ZjNoZKCEsSV-fGI0K974Y,27899
|
| 149 |
+
pyarrow/include/arrow/array/builder_nested.h,sha256=1In_M8pjkaqTuvNZlbGXWGID33CW2eBhy4in0oZsavA,31231
|
| 150 |
+
pyarrow/include/arrow/array/builder_primitive.h,sha256=2cXeRS4yY04CzAPCNobFYIrkQErlKy6v01v6VepHNsk,20926
|
| 151 |
+
pyarrow/include/arrow/array/builder_run_end.h,sha256=SZIdsUKK1qAc9pdonPGf0A_aikZHcxxzicezRGR5hLs,11416
|
| 152 |
+
pyarrow/include/arrow/array/builder_time.h,sha256=8M2ifZnDgujSItXKsevyBdtM6Iky3ImyeIdAqZV3fec,2548
|
| 153 |
+
pyarrow/include/arrow/array/builder_union.h,sha256=8BF532sAMc7JxWIbSN-yX6Z9fqY9jmmsIa054DPvbWE,10144
|
| 154 |
+
pyarrow/include/arrow/array/concatenate.h,sha256=wBy-CBTz9MeRCmcnfXGvkXnvSRApvPOcfCf64A42ys8,2059
|
| 155 |
+
pyarrow/include/arrow/array/data.h,sha256=lAkZych3ue1xy542ZWSGP6ZS_iB6z8W4qBw-IzrPJ6E,25160
|
| 156 |
+
pyarrow/include/arrow/array/diff.h,sha256=bYNKy2oLAxtt6VYDWvCfq2bnJTVNjG5KMTsGl-gT_kM,3344
|
| 157 |
+
pyarrow/include/arrow/array/statistics.h,sha256=7iNUdm9vOdoN2gDor-AUdAwYcAzTuhZjs-fOpBnaTIQ,5325
|
| 158 |
+
pyarrow/include/arrow/array/util.h,sha256=qVHvCaVlALz8WJwAjyMwsBm5J2iN89CSgj7NpmmqlkI,3652
|
| 159 |
+
pyarrow/include/arrow/array/validate.h,sha256=JdDb3XJg4TmAfpv_zgu2ITfL2H9no10TQit-HPj9Myw,1710
|
| 160 |
+
pyarrow/include/arrow/buffer.h,sha256=EfXDyFegRdva4rv4nf0jtErnIrt9_FWoXSHk6OPk_G8,23092
|
| 161 |
+
pyarrow/include/arrow/buffer_builder.h,sha256=tXWILwHW0MKpve7NIU2ElElPY0y0ooISa82Dq6UdhVU,17371
|
| 162 |
+
pyarrow/include/arrow/builder.h,sha256=mBxMko271lJ7Xbku0hCixj943Yx-d2i4Q5Hm2WfwiGM,1546
|
| 163 |
+
pyarrow/include/arrow/c/abi.h,sha256=GCjxzmA2jNWQ0ZWVkQ-hnbCbMHKPikO1-JkzYj96cnY,20318
|
| 164 |
+
pyarrow/include/arrow/c/bridge.h,sha256=6e6ZoIsG-pE8FQ5aU4nRJ71vVL3U9k697g7PYKDsVz4,21789
|
| 165 |
+
pyarrow/include/arrow/c/dlpack.h,sha256=_HIa9AKR2mwbhf1aChIpMF_XDpFrPaf58Lt3fVxWRWc,1817
|
| 166 |
+
pyarrow/include/arrow/c/dlpack_abi.h,sha256=mjp9WWq8qv6gkGirT4y0o3BL_ZI9VyHQpJ5aEpPFetI,9920
|
| 167 |
+
pyarrow/include/arrow/c/helpers.h,sha256=f0Q519PwoliFHpxsHp-QvbP6fpVMN2Ha35Tk-RBK6Ws,6279
|
| 168 |
+
pyarrow/include/arrow/chunk_resolver.h,sha256=oVm7DpbWRmjJhexj_h6BtispCBxFZPIHK1kl9goBGG8,12841
|
| 169 |
+
pyarrow/include/arrow/chunked_array.h,sha256=z6LA9OB3uhtmn7ZZe5wfi3Am3icVQ-L_e8s3KEMuq18,10647
|
| 170 |
+
pyarrow/include/arrow/compare.h,sha256=U5craXnXACCUzQ8HmGYyhTehNrOezcVUP1ABAlxI62E,5555
|
| 171 |
+
pyarrow/include/arrow/compute/api.h,sha256=IQKXz_6YBBfHKOkuqkXIh9ZTZYyVgq7aEBTIzMkZEiI,2071
|
| 172 |
+
pyarrow/include/arrow/compute/api_aggregate.h,sha256=cgXomjDDHoAK_ddzyH1NSqWAewzEYPD7qJBj4x5Rkhk,17173
|
| 173 |
+
pyarrow/include/arrow/compute/api_scalar.h,sha256=18S7h2X0e1UasI3Z0E6IXd91jghwassd_QNXKubkmFY,69411
|
| 174 |
+
pyarrow/include/arrow/compute/api_vector.h,sha256=6jxDvg_Zz14_63SfVlWnfUff135kls1aGGK_d9h3bj8,29122
|
| 175 |
+
pyarrow/include/arrow/compute/cast.h,sha256=Xw9j03AIAMU_hZiqk9d2ZD4xTmESkfXaDsuZkiTypLs,4245
|
| 176 |
+
pyarrow/include/arrow/compute/exec.h,sha256=0ZAA9_tzcQEr364sjJ3SwgTtURTwtCjRLzo_LOdn960,17969
|
| 177 |
+
pyarrow/include/arrow/compute/expression.h,sha256=llX_81uUIyJ8vPmP8-2mAippyw4cVNhCGfqHRY37FOM,11184
|
| 178 |
+
pyarrow/include/arrow/compute/function.h,sha256=krTXaLowvT1cKhecs70urPQcx74vQCJ4jswtBE4Xs5A,16345
|
| 179 |
+
pyarrow/include/arrow/compute/function_options.h,sha256=Q9rjkXPrU9-Xi64_fMLPbBbW_byhjJFsvHppP1CumdA,3088
|
| 180 |
+
pyarrow/include/arrow/compute/kernel.h,sha256=ywsxF87w2eI4li8be7Wiua5bXp0NYhMb7LS8IzPFO3U,31406
|
| 181 |
+
pyarrow/include/arrow/compute/ordering.h,sha256=8Vw3VzDi1mGgVwKGQZakz9TVj0A40wxcL13EvuqNVjU,4129
|
| 182 |
+
pyarrow/include/arrow/compute/registry.h,sha256=x7LHiaNEVvZ0VUssZFsasB52Z1AxRflkdI5tR1hhzqc,4837
|
| 183 |
+
pyarrow/include/arrow/compute/row/grouper.h,sha256=m-XUADUbpC2wSYmea8rFMbooh0gJQtdTBoF81ywhhjY,7319
|
| 184 |
+
pyarrow/include/arrow/compute/type_fwd.h,sha256=-O63QUbsxWws8TBi55x6u9FweUSSOOfizhE4pTczLd4,1537
|
| 185 |
+
pyarrow/include/arrow/compute/util.h,sha256=eF_BX2aftTa3qUJwaZA3QGTajrDv4nf6HKXs6dOmjug,8863
|
| 186 |
+
pyarrow/include/arrow/config.h,sha256=8liyKI0CJO0G-Fz5I--QjIAwh0m4hosfyAOwvVVs0sU,3044
|
| 187 |
+
pyarrow/include/arrow/csv/api.h,sha256=LbwWhPyIsi_73hvsSr77RNR9uUxrVyXM__hp7QcSom0,907
|
| 188 |
+
pyarrow/include/arrow/csv/chunker.h,sha256=nTs8hdy4D3Nz3oZWm2JMuA02noY_0pWRYWq_RptqzHY,1171
|
| 189 |
+
pyarrow/include/arrow/csv/column_builder.h,sha256=7oa9YCg2Uc2mB7ExHIyYIvbdt555qLXiU0y4FepkISU,2890
|
| 190 |
+
pyarrow/include/arrow/csv/column_decoder.h,sha256=10idcPJE2V_TbvgjzPqmFy1dd_qSGWvu9eDkenTuCz0,2358
|
| 191 |
+
pyarrow/include/arrow/csv/converter.h,sha256=cjtnz_hZFxm_dWjAMjr1iqqk1egXI2Yb8Bd0xC8md5E,2789
|
| 192 |
+
pyarrow/include/arrow/csv/invalid_row.h,sha256=gTHjEbjkpee6syLGA8hFY7spx1ROMJmtMcwhXv21x5Q,1889
|
| 193 |
+
pyarrow/include/arrow/csv/options.h,sha256=_HkjSoiAPW77z5AHVVnTa452y1KfJgnXWXz2NoPPAYw,7980
|
| 194 |
+
pyarrow/include/arrow/csv/parser.h,sha256=8PplRh3Qxckk8VPyM70P_f1MBb4WMGnNVpoeJ9kOdHU,8616
|
| 195 |
+
pyarrow/include/arrow/csv/reader.h,sha256=416pt3yNQsgn4RhIyRMsmSJmvv1sw3ouQotubXG91gQ,4606
|
| 196 |
+
pyarrow/include/arrow/csv/test_common.h,sha256=uEYzw8EROvd1QMBQ98d4MaZ7BqMlw2e0flAyz-du0Z4,1972
|
| 197 |
+
pyarrow/include/arrow/csv/type_fwd.h,sha256=ptVbengmY_a7Yz1w0SKmKL16yyw9yEeym0Q0cnRCSV4,984
|
| 198 |
+
pyarrow/include/arrow/csv/writer.h,sha256=Y1zErZ5H1r2QzjAta3TXpFrdl2btoardCF8USCAGtGg,3549
|
| 199 |
+
pyarrow/include/arrow/dataset/api.h,sha256=p7i-bncJLhmfBkfjJWS7684vD9Lke1m6tb7HQq7Tpn4,1322
|
| 200 |
+
pyarrow/include/arrow/dataset/dataset.h,sha256=sDkJg42vSE05FwRmYi9pes3jD9932X3J8cyYZ3SY2jI,19830
|
| 201 |
+
pyarrow/include/arrow/dataset/dataset_writer.h,sha256=TQV75b_UigfGjIpBnPk8teOncM5WroKfKV15oicBRRY,4589
|
| 202 |
+
pyarrow/include/arrow/dataset/discovery.h,sha256=x7-5NBAyEeQWGlWanJDLZAoWksKiMwM96tlDx_M6n5c,11236
|
| 203 |
+
pyarrow/include/arrow/dataset/file_base.h,sha256=2oe5v8Qy6v_UthJavg9rjU_WuQvwXcJengWwc3sWLqk,20203
|
| 204 |
+
pyarrow/include/arrow/dataset/file_csv.h,sha256=7PlvQW_2FJ5RRN-VH4-OBw5cZ6nkd0KE0sj1TQvCZeo,5016
|
| 205 |
+
pyarrow/include/arrow/dataset/file_ipc.h,sha256=6-btvXhflZsAH90T3wMkwzZkte6T4ixzeCEUn_5uYW8,4083
|
| 206 |
+
pyarrow/include/arrow/dataset/file_json.h,sha256=sPjOeMOtbZZbvOivnOdb4MvYKHltpTnY8fONkhB9PZs,3523
|
| 207 |
+
pyarrow/include/arrow/dataset/file_orc.h,sha256=P7nAD9nacVngDEjH8ChQRt0AQmDg4Z1wBx360LDOoSg,2452
|
| 208 |
+
pyarrow/include/arrow/dataset/file_parquet.h,sha256=bzArl0XrmtTNvWhs6YTkLFxtD8TLbTIJwYmWz3YRm38,16708
|
| 209 |
+
pyarrow/include/arrow/dataset/parquet_encryption_config.h,sha256=Upo0k5MijZaMaRZjPp5Xg8TRt1p8Zwh2c2tdimjVe1A,3425
|
| 210 |
+
pyarrow/include/arrow/dataset/partition.h,sha256=3wrNekD_-fPO1YW91Za-T4muCfQeAX7SZRIcsCN_czI,16815
|
| 211 |
+
pyarrow/include/arrow/dataset/pch.h,sha256=iAE_PbVtKHfhygz7Ox9Z2nlhsIrfageGixGKjlzNRvg,1194
|
| 212 |
+
pyarrow/include/arrow/dataset/plan.h,sha256=IjuR9K2sWD85_2HpVVoJ-3YUCq--UPblHU46exX5qRg,1181
|
| 213 |
+
pyarrow/include/arrow/dataset/projector.h,sha256=KfZijq09Ht0Z2cJHsrjg-sE3SiZ4TKainflReK-39cg,1135
|
| 214 |
+
pyarrow/include/arrow/dataset/scanner.h,sha256=9Ats-ejc6exp3alGUhq0Sw8fww3kJj4ssi8FOKK7SDk,24598
|
| 215 |
+
pyarrow/include/arrow/dataset/type_fwd.h,sha256=YOUSRwdNAlXJ7meFLolpAFQ_mSlObs2F81zcOy0DoI4,3170
|
| 216 |
+
pyarrow/include/arrow/dataset/visibility.h,sha256=ckmf_sEI0WBo4W7DIgH1QrOq82skOHtoksl9B3yYvzU,1586
|
| 217 |
+
pyarrow/include/arrow/datum.h,sha256=XYaZ_URrAtVqHMq-_2YtXk_ETeQ4yZWLVAnsi-k2Mac,11511
|
| 218 |
+
pyarrow/include/arrow/device.h,sha256=mLz99tb74VdjxXtKt6RZCYKJQ8TYz93uaCFJ1ZiItMw,15344
|
| 219 |
+
pyarrow/include/arrow/device_allocation_type_set.h,sha256=ynoZ-XyFlOAjh01PU-R11mE_EOxuw3xzc94v5OXa0u4,3306
|
| 220 |
+
pyarrow/include/arrow/engine/api.h,sha256=ORM0M5KQeurjEG8Eoa5IeV_ZgKBRPlWyicyv3ORWkAY,886
|
| 221 |
+
pyarrow/include/arrow/engine/pch.h,sha256=8VXXI10rUHzlQiAthx-yjHMQCpGL3dgAiVaGzTubPPE,1094
|
| 222 |
+
pyarrow/include/arrow/engine/substrait/api.h,sha256=W9NB1RAm0ZVxztRXYA-GD7H8XLQNXFoYT7TdGFHoNTE,1079
|
| 223 |
+
pyarrow/include/arrow/engine/substrait/extension_set.h,sha256=FE6cceycuQv7CCe_Fl4t6tIMRyfoJfWClUhSvHgcm90,21552
|
| 224 |
+
pyarrow/include/arrow/engine/substrait/extension_types.h,sha256=x5ZIuynNh6WFt3wRjW--zUsuC3SeDLk1qRg9_xhswWM,3075
|
| 225 |
+
pyarrow/include/arrow/engine/substrait/options.h,sha256=dtvUty_zoDmcFwVflppiDzelYkeOhCO74uRF6izQSzk,5820
|
| 226 |
+
pyarrow/include/arrow/engine/substrait/relation.h,sha256=V3VKFlDdE61e1OS8LbJiwvm5w0uq5bzBLhKqmgmKaws,2385
|
| 227 |
+
pyarrow/include/arrow/engine/substrait/serde.h,sha256=mjxfuFo4aPhCiwefpKAJMIlknF4UOHSr6gWU__1SwCc,16528
|
| 228 |
+
pyarrow/include/arrow/engine/substrait/test_plan_builder.h,sha256=REFa79D1AOIIjp2Iez73iw5gEnzG9Rac9t8WwiGLsuI,3003
|
| 229 |
+
pyarrow/include/arrow/engine/substrait/test_util.h,sha256=IHZeYrk50Sx9anJfC25DWP6XesItKEywDWUqvUJcjEQ,1517
|
| 230 |
+
pyarrow/include/arrow/engine/substrait/type_fwd.h,sha256=P9YRjAQpSgoIjDC0siYyxoQzcPVo3r9y85qjiMtudBs,1028
|
| 231 |
+
pyarrow/include/arrow/engine/substrait/util.h,sha256=_dRiQBaIMWNbsYG7kuXhs3dMk4dI63-pM0uSxYPOvgE,3570
|
| 232 |
+
pyarrow/include/arrow/engine/substrait/visibility.h,sha256=GRzH6U-UCPT8d60cywOkFfcanPSgiZKCDP6X2rIpbMs,1740
|
| 233 |
+
pyarrow/include/arrow/extension/bool8.h,sha256=VsHTtVyrqk6UKgvifad7LouuieoAZuZs_uVvegdGq4Q,2145
|
| 234 |
+
pyarrow/include/arrow/extension/fixed_shape_tensor.h,sha256=VOqvTSnwDIvnhbstYX5nnqWfhtZ7MaD-lSF89BEqlhE,5610
|
| 235 |
+
pyarrow/include/arrow/extension/json.h,sha256=gnJSzCVni_oJKxKMoSNBwsuBg1BJzk_goGIE_uTSMJY,2109
|
| 236 |
+
pyarrow/include/arrow/extension/opaque.h,sha256=uMVqSScey_13Ho6V86vfkuoByZni9ufh5BGKgX4bTZk,2920
|
| 237 |
+
pyarrow/include/arrow/extension/uuid.h,sha256=E_Bnp5KNKSxVuvdhQHjYT-0HKa9mzVPbSAQjuZ9N3Pc,2278
|
| 238 |
+
pyarrow/include/arrow/extension_type.h,sha256=YUvUzPz-0QiG-jOjs__TfyPEpsHWGkGO5PMVG1vMjkY,6639
|
| 239 |
+
pyarrow/include/arrow/filesystem/api.h,sha256=Xgy2GOZtBVwDjTaXPDyPPlS9Bwt9gjWXm5I_QbyRbFo,1383
|
| 240 |
+
pyarrow/include/arrow/filesystem/azurefs.h,sha256=M-7jR8AqyPu8uTXbw4INLb9RsZKrPmZlPO7T7MskQ_8,15299
|
| 241 |
+
pyarrow/include/arrow/filesystem/filesystem.h,sha256=H7MEX1259aVrWMsgsWX26tuCEPSJF-iI51J3sKsYec0,29585
|
| 242 |
+
pyarrow/include/arrow/filesystem/filesystem_library.h,sha256=axaof-G9GxBjzXhRIt4azB7HB8VJ49MtGYsL7pSO0A0,1725
|
| 243 |
+
pyarrow/include/arrow/filesystem/gcsfs.h,sha256=AKMBJlhYg7dlFdyWvGFRUmfA7QdQ8X_6gA6RqPKn6RU,10477
|
| 244 |
+
pyarrow/include/arrow/filesystem/hdfs.h,sha256=Jn91pjfk6RMx-MuAWsEAKLTyKQ7bDPNA5jMEVzafSgc,4133
|
| 245 |
+
pyarrow/include/arrow/filesystem/localfs.h,sha256=eIhPrpABheQz21WE845ULleTk83e4EtJnES4jALW6mM,4972
|
| 246 |
+
pyarrow/include/arrow/filesystem/mockfs.h,sha256=kohu7s9s9xtd75sGTE2K_rsHW89swDOtSSSFxBixMcc,4768
|
| 247 |
+
pyarrow/include/arrow/filesystem/path_util.h,sha256=hrDVHk4F9M7oGABB4x2wKfQMjSlSAIS0IaLVv2jHrl4,5698
|
| 248 |
+
pyarrow/include/arrow/filesystem/s3_test_util.h,sha256=22B600fr84Gq4rGALdidIP0IzDs9G3aOqkLN4y-6xrI,2962
|
| 249 |
+
pyarrow/include/arrow/filesystem/s3fs.h,sha256=V-Sx7dW2THttjOcxTPAiD-5C-VkSAgp18GnOcHv1890,17923
|
| 250 |
+
pyarrow/include/arrow/filesystem/test_util.h,sha256=kgT3WgKvG2acNpiXWQqVL1c6Uhfmzg1m9h6o1nh3dKg,11729
|
| 251 |
+
pyarrow/include/arrow/filesystem/type_fwd.h,sha256=zztDER55Wbt4rVnkd-ReeDO-YnrpemftFeFtZ7ZGidY,1462
|
| 252 |
+
pyarrow/include/arrow/flight/api.h,sha256=YotLTQn-KCl6y5BIg8coEFZ9n7PMtJ02ly7Pc5gmX7U,1257
|
| 253 |
+
pyarrow/include/arrow/flight/client.h,sha256=NtFquWOaafBcmdIB4en9ua5xSEJaCBkC1ZHhAU_Gg60,17798
|
| 254 |
+
pyarrow/include/arrow/flight/client_auth.h,sha256=a3Dkm_jPOuqzNsDA4eejuMUwCEBMavM8uS7w81ihbRY,2216
|
| 255 |
+
pyarrow/include/arrow/flight/client_cookie_middleware.h,sha256=5zkCP2SxMFQuTX8N9NHxOve5J_ef2rFO6-xY4Tfnygk,1204
|
| 256 |
+
pyarrow/include/arrow/flight/client_middleware.h,sha256=aAZwCahuiBhP85iMPe7xNWvidBR9KeHGto2YAqJioI4,2948
|
| 257 |
+
pyarrow/include/arrow/flight/client_tracing_middleware.h,sha256=d0sTmUOfq5M9FMliIKK-flJkR6-7r69NjU2TpxhfqWo,1217
|
| 258 |
+
pyarrow/include/arrow/flight/middleware.h,sha256=JPQd8JnIVcwjTH6yOBck4BWR-WV95fpnAdhHyEYvfKE,2254
|
| 259 |
+
pyarrow/include/arrow/flight/otel_logging.h,sha256=riS9sZM2C3mH6VMbESizJ6lGmudqdJhfdCY9_cJJqMA,1139
|
| 260 |
+
pyarrow/include/arrow/flight/pch.h,sha256=Dp2nrZ3t_KPjm0cIMyu913BbCorJG5rmbtpfyDN09bo,1192
|
| 261 |
+
pyarrow/include/arrow/flight/platform.h,sha256=1ZfzVaollAZosGyH_1JvzEA8iNR0hi9cUGz5eyLT1zc,1209
|
| 262 |
+
pyarrow/include/arrow/flight/server.h,sha256=GAcV0-THuBuj-bXfwqYrZ1P2bwZgKQSJLbu8ToltRvU,13185
|
| 263 |
+
pyarrow/include/arrow/flight/server_auth.h,sha256=zKQ8lvkMBuMYiIfT1sU0MPXqVPQikaOS3npBgytcaKk,5429
|
| 264 |
+
pyarrow/include/arrow/flight/server_middleware.h,sha256=ITKjCNTT2qnX7JeqWdaweC_QpCX_ytW9PFucQYmPkFo,4317
|
| 265 |
+
pyarrow/include/arrow/flight/server_tracing_middleware.h,sha256=zR0FFZYGwAAqhzVhPVDjyXfZda9zmLteqauwA5dgR_w,2186
|
| 266 |
+
pyarrow/include/arrow/flight/test_auth_handlers.h,sha256=XkvMWucv9GQjlt2ttvYxshym4kUubUdMh-timlQIt1I,3315
|
| 267 |
+
pyarrow/include/arrow/flight/test_definitions.h,sha256=U_HhBnNdNZmojraYzICBmBvuef0bTT5eYzFXp8iGFzc,13110
|
| 268 |
+
pyarrow/include/arrow/flight/test_flight_server.h,sha256=SbRhZP0U4ILnbg7lYQvGeXmvPM_B6bai12FTM_HD4RQ,3930
|
| 269 |
+
pyarrow/include/arrow/flight/test_util.h,sha256=E0OlDLwcknevKf4LzzqdU3jfxUMV_mcIJxy4U_up77Q,6860
|
| 270 |
+
pyarrow/include/arrow/flight/transport.h,sha256=ZDXc-f8o00TFWESwsGU1My7rR9OfM3X7OZjDcGXTwIA,12181
|
| 271 |
+
pyarrow/include/arrow/flight/transport_server.h,sha256=iVdXmrb2pemh4o6BxwvB7OZAV4UeoWrbhe4ePZ5Pi4s,5268
|
| 272 |
+
pyarrow/include/arrow/flight/type_fwd.h,sha256=tQFAM3QNKPdzB4VqUGdEUFjNPYXVZLApwGnSus2GQx8,1797
|
| 273 |
+
pyarrow/include/arrow/flight/types.h,sha256=E0HxptiVr1UBZ1XcKJVZitzMTCCyvM2sCGPrpq6xQBI,46681
|
| 274 |
+
pyarrow/include/arrow/flight/types_async.h,sha256=3nIQqwCYO4Ir3Mt2bG7BNntXxuNHYQNNpz-Yl3EaFTQ,2599
|
| 275 |
+
pyarrow/include/arrow/flight/visibility.h,sha256=N1k74cwyRvOaYFa_tCjdgUjiSdPBhmy20UuVGu0wTg0,1596
|
| 276 |
+
pyarrow/include/arrow/io/api.h,sha256=Pn4jZSTsLW8MAlMyXUokmJdupX54u154GYI5AvD5ByA,996
|
| 277 |
+
pyarrow/include/arrow/io/buffered.h,sha256=PHaMwCMaXu3vAjhDpZMC2xt5hKooJXVeMffhoDzTxNc,5912
|
| 278 |
+
pyarrow/include/arrow/io/caching.h,sha256=AAjoyKwQ06m2XiglFS6Ch_cdg2p4-wkA7GakGI_eX1E,6708
|
| 279 |
+
pyarrow/include/arrow/io/compressed.h,sha256=3JxIOo1q8VhjIErfwVM5ZLVkwwQKXd-FT5517j58etA,3774
|
| 280 |
+
pyarrow/include/arrow/io/concurrency.h,sha256=SmIr0OWCgMUR3j9ngVbjMJhWOUrU15jQf_jz2rUw7r4,7934
|
| 281 |
+
pyarrow/include/arrow/io/file.h,sha256=-ZEklW1Q0sj3pYCQLQ1ebirKd3s2GI3vUEIszFr8mVU,7625
|
| 282 |
+
pyarrow/include/arrow/io/hdfs.h,sha256=2s3f49ggAYgSCsX5SoqnomwsXd24_IZhW-VSBJclqTg,8559
|
| 283 |
+
pyarrow/include/arrow/io/interfaces.h,sha256=QIBHTJUobEkwcqnKMT_GEKu5ArzpeGmK-8v7z4qGHIQ,13428
|
| 284 |
+
pyarrow/include/arrow/io/memory.h,sha256=htc3MmEbEvwc28bLjCtTtt9QcYp-10WKLmX0V9TnwRM,7048
|
| 285 |
+
pyarrow/include/arrow/io/mman.h,sha256=qoLBAGFcvpYTy96Ga7FNWDJKT3uhxpFAF3hbXIaDSiY,4111
|
| 286 |
+
pyarrow/include/arrow/io/slow.h,sha256=8-ZjQJq49EQJ4esQ6qHHjlKCeZNg4BSND7ire-ZtLYQ,3942
|
| 287 |
+
pyarrow/include/arrow/io/stdio.h,sha256=dqMTHoJbmiXcyNa2fN60tSWQsx0GPphZVCLdGiZNt8I,2095
|
| 288 |
+
pyarrow/include/arrow/io/test_common.h,sha256=Rj8mwgcUkzksrlBALiAldtr_6JGHJFLh2SztGVkRiSA,2112
|
| 289 |
+
pyarrow/include/arrow/io/transform.h,sha256=W9XWonw69VymQAaQptfW7jD-6ry7VCpfPXlkB7aZzOE,1890
|
| 290 |
+
pyarrow/include/arrow/io/type_fwd.h,sha256=Pi7EFpFvBXsFN1xKOyZjTSP95xNDs6W5hxb5GucoVVE,2315
|
| 291 |
+
pyarrow/include/arrow/ipc/api.h,sha256=olkdu82mTS8hmwD53DBJJL6QQ0YBplhs-s-m4uOInSQ,1007
|
| 292 |
+
pyarrow/include/arrow/ipc/dictionary.h,sha256=UTjZPIG8mLZOk9IW2QnR9RZGr1npexZOp103fv-O70E,6104
|
| 293 |
+
pyarrow/include/arrow/ipc/feather.h,sha256=uCnxwO7eUH18kJ-lWz9IWwSj6AjfejqqLdoifJ-UBDo,4918
|
| 294 |
+
pyarrow/include/arrow/ipc/json_simple.h,sha256=IjFjx6Z7h_WLXt1paVIJboUOTR5GFBhWUhCbm_m9lNk,2455
|
| 295 |
+
pyarrow/include/arrow/ipc/message.h,sha256=KtMCbIC2J4-5iyPG5Sijqu_MALxiuKWBYZhGnw0jxOQ,20011
|
| 296 |
+
pyarrow/include/arrow/ipc/options.h,sha256=X2BbCaQ03S1uqedgLRbvLyfb1PHZ7WGRBjDLLCbQMGE,6888
|
| 297 |
+
pyarrow/include/arrow/ipc/reader.h,sha256=NqdrqqAEItO1ecYUINRO7-qhKlYy-CHSJKGI2hdXlRQ,24106
|
| 298 |
+
pyarrow/include/arrow/ipc/test_common.h,sha256=_kWOR_-YKtilcCIWK6I4WYo8fcRt6eBMfxEM4kDtY20,6351
|
| 299 |
+
pyarrow/include/arrow/ipc/type_fwd.h,sha256=Ty8ET7nLI4JJeTqDMyP0pEH9QVj9xs7BpJkZrnrpaPY,1440
|
| 300 |
+
pyarrow/include/arrow/ipc/util.h,sha256=wTkfC9YFKZlAAjyzlmQVZcW90oOj_JatjDN4qz0IxHg,1414
|
| 301 |
+
pyarrow/include/arrow/ipc/writer.h,sha256=hum8E_orkG_X38vgyfyKhGbyvcLJ3AkXEykyBjAXIYg,18870
|
| 302 |
+
pyarrow/include/arrow/json/api.h,sha256=XRW1fP43zVqwy1yabaKctNK9MDZqnxkoHDH1fx5B3Y4,879
|
| 303 |
+
pyarrow/include/arrow/json/chunked_builder.h,sha256=DDuMwrImMECw6Mhfncn2xMOjkFcKUV1O1597_fSFSAs,2365
|
| 304 |
+
pyarrow/include/arrow/json/chunker.h,sha256=dkZOcxsF1Q3ek58P7IoA8f3lQyBQpFvGSFeynNV2Olc,1119
|
| 305 |
+
pyarrow/include/arrow/json/converter.h,sha256=3lXsP3BSdpLPIkFAJnYW9vP8BbX3neVYR_W0zFKClQ0,3134
|
| 306 |
+
pyarrow/include/arrow/json/object_parser.h,sha256=Y_6Oceya06aUyeo-1k047dm2-JUMJa2_w9iyZ-goIRQ,1627
|
| 307 |
+
pyarrow/include/arrow/json/object_writer.h,sha256=UrIrjCkIz7Q5n_FpV5NNPD96gHHdTkvTJaekuGBHwTo,1428
|
| 308 |
+
pyarrow/include/arrow/json/options.h,sha256=EypQgDwLZQbrPnAh45nSPfpGGYrxvLgfp1eAG_l0p3Q,2227
|
| 309 |
+
pyarrow/include/arrow/json/parser.h,sha256=3oIzO5kUs2Takc7t_d5mH7bp1uIcc1M-qbuHmPoSI34,3383
|
| 310 |
+
pyarrow/include/arrow/json/rapidjson_defs.h,sha256=lBJlfuYWIeQQ8awPd3bk4jJc81efr_KzKwG8Klw7t1s,1474
|
| 311 |
+
pyarrow/include/arrow/json/reader.h,sha256=KNO9dCyc2RZs7WxUSEW7bpCYBh_h1C3U52YHYxBnP0M,5212
|
| 312 |
+
pyarrow/include/arrow/json/test_common.h,sha256=YiiY_jswpp7Nu6IW1Y2lBhqWSFRoNaNEy1jHd5qkYHQ,10874
|
| 313 |
+
pyarrow/include/arrow/json/type_fwd.h,sha256=o9aigB5losknJFFei1k25pDVYZgkC2elmRMX1C6aTjo,942
|
| 314 |
+
pyarrow/include/arrow/memory_pool.h,sha256=SjPtWz1tx6Lotr2WeOKCCIw9NQc50Zjez3yzgfr7SDw,11064
|
| 315 |
+
pyarrow/include/arrow/memory_pool_test.h,sha256=qv7csk6hZiO2ELFF-1yukpppjETDDX0nuBFBbPFHtMU,3350
|
| 316 |
+
pyarrow/include/arrow/pch.h,sha256=MaR9bqy2cFZDbjq8Aekq9Gh1vzLTlWZOSHu-GhWP1g8,1286
|
| 317 |
+
pyarrow/include/arrow/pretty_print.h,sha256=ZDlroPRr9_ryCk7h_rjA8pL7BNgaJQ9HnRb2PZU63lg,5529
|
| 318 |
+
pyarrow/include/arrow/python/api.h,sha256=W76VAxYqOxi9BHJddji1B62CmaWDFuBhqI65YOhUnGQ,1222
|
| 319 |
+
pyarrow/include/arrow/python/arrow_to_pandas.h,sha256=jUBEUMKXw70oJdMlgkSf6HitaNweQcc7hxI75_C9WSI,5561
|
| 320 |
+
pyarrow/include/arrow/python/async.h,sha256=C0f8YYmgwBGgDau4xEFsdjukiZB4YvpylETHEZryHOo,2352
|
| 321 |
+
pyarrow/include/arrow/python/benchmark.h,sha256=f-kzyMOlPKDse2bcLWhyMrDEMZrG_JHAPpDJgGW0bXU,1192
|
| 322 |
+
pyarrow/include/arrow/python/common.h,sha256=yjljfJK1f7slZ7DBQ4LTo_pob70zioswJNWazy0p-uM,14412
|
| 323 |
+
pyarrow/include/arrow/python/csv.h,sha256=QxU3B-Hv_RsoEcMGS9-1434ugouL2ygC64Lq6FgviNM,1397
|
| 324 |
+
pyarrow/include/arrow/python/datetime.h,sha256=Bny_THGi2tyUeHxcOuw01O7hNE8B_gave5ABAZQtwTQ,7931
|
| 325 |
+
pyarrow/include/arrow/python/decimal.h,sha256=K9ScmzSa7XCuuwpXKnq0GPbRDTuRU5yXfWr9zGtOchc,6362
|
| 326 |
+
pyarrow/include/arrow/python/deserialize.h,sha256=Q4L1qPCra8-Wzl6oLm44cPOUMVuK1FX01LeGzwNUtK4,4260
|
| 327 |
+
pyarrow/include/arrow/python/extension_type.h,sha256=0gzb42y_mbw4fsYs3u8cwPFLBRlG-kkHQLgbvGtrY0U,3181
|
| 328 |
+
pyarrow/include/arrow/python/filesystem.h,sha256=FG0AcLekqaDf9IQPqKixAfIcY_ZLgIKP5NvvXdtBVUM,5126
|
| 329 |
+
pyarrow/include/arrow/python/flight.h,sha256=PzZhVa9DiT8GUB5_s5gXRBoYR9RLPq4Uy6QA7RRWOpo,14382
|
| 330 |
+
pyarrow/include/arrow/python/gdb.h,sha256=H-qvM-nU8a_3Z5tk8PvppTwQtBMSZhQKQIVgRAsRfFg,972
|
| 331 |
+
pyarrow/include/arrow/python/helpers.h,sha256=jVNFEbvJXmCceJti3J3-MnZkNlJoynQNq334tt29bbs,5489
|
| 332 |
+
pyarrow/include/arrow/python/inference.h,sha256=FUFvB4Zy7V-tueXdmbDcqTeLK4xj5GZEeRW5yhiJlsU,2038
|
| 333 |
+
pyarrow/include/arrow/python/io.h,sha256=4jGnodpSUlnVqAVh9fWId7H4WldlLPkXyroABpdaW6w,3858
|
| 334 |
+
pyarrow/include/arrow/python/ipc.h,sha256=SZbw6jCCqLiLNCY3k632GmwHeD_r_xrDS0dhqV49VhY,2259
|
| 335 |
+
pyarrow/include/arrow/python/iterators.h,sha256=Ugfm3JvetAH0l-oAjjpZfhrUBqRimVMaw4-xusvqLSg,7327
|
| 336 |
+
pyarrow/include/arrow/python/lib.h,sha256=aWAOSlSScduvc3gGO6aSAWcNBl2QECWEdQAZb6mIl_U,4631
|
| 337 |
+
pyarrow/include/arrow/python/lib_api.h,sha256=4oiKWmdhyjn5OxDSBamrukHpWwQbUioDR7X82dhgdXs,19487
|
| 338 |
+
pyarrow/include/arrow/python/numpy_convert.h,sha256=y13eHwfe1lJKzadoTr2-GyX6xPsE6Z7FN31s7PN-2Rk,4870
|
| 339 |
+
pyarrow/include/arrow/python/numpy_init.h,sha256=FniVHP7W2YBlenoMYhQrODvoqqvDMSls2JANGtNPQts,999
|
| 340 |
+
pyarrow/include/arrow/python/numpy_interop.h,sha256=rI6ek8JTOYtjo7gEADSDBS6QuAOHa2A0YQPZ2GeypFw,3418
|
| 341 |
+
pyarrow/include/arrow/python/numpy_to_arrow.h,sha256=z9KapsuoOSpWILPt9bea7GR4BL6AQ28T6DUO0mSkh3k,2760
|
| 342 |
+
pyarrow/include/arrow/python/parquet_encryption.h,sha256=Mc8tZ8gIfkH0AckNiIOt6hesP_MVKeKhcytT24ZOLdQ,4861
|
| 343 |
+
pyarrow/include/arrow/python/pch.h,sha256=vkbgStQjq820YeHlXBPdzQ-W9LyzJrTGfMBpnMMqahk,1129
|
| 344 |
+
pyarrow/include/arrow/python/platform.h,sha256=XYS5IqiMUejxN2COzu60Zs8b_wAaGTBw4M-zKVqqs5U,1422
|
| 345 |
+
pyarrow/include/arrow/python/pyarrow.h,sha256=TK3BtD9n3QKOQ9dX3LXbQc0hu9alWcufV0O93iQW7B0,2761
|
| 346 |
+
pyarrow/include/arrow/python/pyarrow_api.h,sha256=7l0G4-_m9yALYoifsY8Z6qh3HHD0PgkpVSgCn_JaGU4,867
|
| 347 |
+
pyarrow/include/arrow/python/pyarrow_lib.h,sha256=-70_Ckj3_0ImlzaXSJOE_d3w9pGM66lXiGPyln9c96Y,863
|
| 348 |
+
pyarrow/include/arrow/python/python_test.h,sha256=ea32mM20uHySlygi9MtVxr26O-ydTZHCUQIlxaIMjT4,1195
|
| 349 |
+
pyarrow/include/arrow/python/python_to_arrow.h,sha256=BoVytf6P7PBYXyznchElKZSFvEsFyimB-tLFdw0AUNo,2521
|
| 350 |
+
pyarrow/include/arrow/python/serialize.h,sha256=HVBhIKgc7A4YOmwYfjE2Hqj1Yxl9suCJb940KxrVcrs,4630
|
| 351 |
+
pyarrow/include/arrow/python/type_traits.h,sha256=B_NsRT_hZG8D91sTcihJyKF5SrslPcFmj12QfbpHuLI,10093
|
| 352 |
+
pyarrow/include/arrow/python/udf.h,sha256=de3R8PhNJO5lT9oCqRxe8e2_SE3jBpHOkwbNqCrlgjQ,3104
|
| 353 |
+
pyarrow/include/arrow/python/vendored/pythoncapi_compat.h,sha256=bzMnlHTCfjk5DQRIxwytunYh5aQxU3iSElaaDyNnAY8,40900
|
| 354 |
+
pyarrow/include/arrow/python/visibility.h,sha256=hwJw5sGrWJckQkNaAuLe4Tf-VDjQbXknyzNOVgZI3FI,1381
|
| 355 |
+
pyarrow/include/arrow/record_batch.h,sha256=_ApzCQ4CTMRGUBM2IFd6bM08SqxDUySlPwL1NB87tyg,18541
|
| 356 |
+
pyarrow/include/arrow/result.h,sha256=8V2_O8iqZBxi0b4B9fc9pDH4-YqXvrdQi10ryIsY3yM,18185
|
| 357 |
+
pyarrow/include/arrow/scalar.h,sha256=7SguSvJ4wohjqV-FSKboC1pgaFVB09dNfkMz36JjcM8,36543
|
| 358 |
+
pyarrow/include/arrow/sparse_tensor.h,sha256=dd6eQmCjfCmmI76hgsC37R-qPJ11IMhafVaxSo2XJFs,25205
|
| 359 |
+
pyarrow/include/arrow/status.h,sha256=BY0B-zFu83czvc0bvBFkJ96bWjZ1DxJFK1nYrgBg2kQ,16401
|
| 360 |
+
pyarrow/include/arrow/stl.h,sha256=MtEWXG3x1YYNi7xPdDOGVRqpnLVvNQFiE_ZJAsPFJ1g,19343
|
| 361 |
+
pyarrow/include/arrow/stl_allocator.h,sha256=TBbvjbuQIH9y88FI2SaqAL7pOIt3wZ1xMKwXqeKNiJE,4956
|
| 362 |
+
pyarrow/include/arrow/stl_iterator.h,sha256=RelNQrADHupKWTuFBCCkqVlyuGHXU3yB6gcsDpQpra8,9953
|
| 363 |
+
pyarrow/include/arrow/table.h,sha256=UoixXGk5S1ckV35utXjbA-KUBQrSeqvfrhSmk22k760,14647
|
| 364 |
+
pyarrow/include/arrow/table_builder.h,sha256=LRcLCL2iUrj6vF4f9AjPswVjqtqlMw7z_8VBAfUJeCo,3763
|
| 365 |
+
pyarrow/include/arrow/tensor.h,sha256=mgPkJ5f5ngl0qDkeYf-uk-BtX7Gyr-0DUuX1qB6YadE,9093
|
| 366 |
+
pyarrow/include/arrow/tensor/converter.h,sha256=RZq0Try_kiZ085_d_CvhewMsd57InGb2TCeiveaf-Oo,2891
|
| 367 |
+
pyarrow/include/arrow/testing/async_test_util.h,sha256=IrHWfPeIyhrgeTGHUPLt92LdsofmFX6khjngWsZv3dY,2262
|
| 368 |
+
pyarrow/include/arrow/testing/builder.h,sha256=4x0bWOedaVomWU0m7dF99irOv3flR-_p-IMofTDZtwo,8556
|
| 369 |
+
pyarrow/include/arrow/testing/executor_util.h,sha256=38_rF-V_9zF1ttJMspkPiI-34VU1RDjg1ADBS8lUFHk,1885
|
| 370 |
+
pyarrow/include/arrow/testing/extension_type.h,sha256=5l_28-SdoO0r6r-nVqkXsfSRFWTLTPgOFEpXzZiqh6U,7430
|
| 371 |
+
pyarrow/include/arrow/testing/fixed_width_test_util.h,sha256=g6yB7RkziU7HEhNJnxOhkn2nE5HeXaFX3tbBX3q9_sE,3091
|
| 372 |
+
pyarrow/include/arrow/testing/future_util.h,sha256=qIhi417OGMWSMUSDHjkGTYd-ihZbqw8ZSIRwJ01vbKg,6246
|
| 373 |
+
pyarrow/include/arrow/testing/generator.h,sha256=h9Kw9GfDnCHDLl7IsEgaLCi8UDu7R6MHL7Au2TWfMVc,12024
|
| 374 |
+
pyarrow/include/arrow/testing/gtest_compat.h,sha256=0NqH39my7m1FMpsrQYnxQx4bdEE10SCXZaysN6yjQFA,1311
|
| 375 |
+
pyarrow/include/arrow/testing/gtest_util.h,sha256=jnVGbM53nnXO433aUNmZHlMyiQ1ftENITLbtqRF6R08,24496
|
| 376 |
+
pyarrow/include/arrow/testing/matchers.h,sha256=3ys7UI6YpFeMvFCgjmF_VWn1w7Hzhqbr2c-_EuJBpnU,16852
|
| 377 |
+
pyarrow/include/arrow/testing/math.h,sha256=YRoNVZVreF1j8G1G8oaaFzeK7VGYA2Q25j10gFN_hTA,1210
|
| 378 |
+
pyarrow/include/arrow/testing/pch.h,sha256=wKPN4rZnVcQbmpn02Sx5tSa7-MEhpUR1w-YJ6drtyRM,1164
|
| 379 |
+
pyarrow/include/arrow/testing/process.h,sha256=AzPW3Lh2R4sTm-RUUi4Od3aSba9zoLcS_zHBxztv4zI,1372
|
| 380 |
+
pyarrow/include/arrow/testing/random.h,sha256=UMxioQORvoZOsodZM6T-ujza5WuYKwAndbvnOImDsqQ,37046
|
| 381 |
+
pyarrow/include/arrow/testing/uniform_real.h,sha256=-G_2J9cvevoCtB55vsCsWtJkMUHLIMyOwdT6G8ZW45Y,2970
|
| 382 |
+
pyarrow/include/arrow/testing/util.h,sha256=xECPSXF8LbS9FWDLIivrJMXpjMU0Tf-vZ6YMpto3mYQ,5582
|
| 383 |
+
pyarrow/include/arrow/testing/visibility.h,sha256=-wjc00QIhygXJa7tknbIL685AQ1wnyCPr-EtVzkzmq0,1606
|
| 384 |
+
pyarrow/include/arrow/type.h,sha256=yxS8FpeY8eK4cjiSc0nBPdKAF8CRnu7cpR0VX_BCY74,96772
|
| 385 |
+
pyarrow/include/arrow/type_fwd.h,sha256=X-drEwMCZXh5xt83ilfNvRK7f5nyEXZnd2ST4NUAffs,23504
|
| 386 |
+
pyarrow/include/arrow/type_traits.h,sha256=zaZta7_fhYMUOlPGt267_8uArMw56OVeXdEhqvqo9ek,55028
|
| 387 |
+
pyarrow/include/arrow/util/algorithm.h,sha256=045EVzsC9rThlRVFaCoBmmtWZmFy5y28PR9yapn9sXY,1229
|
| 388 |
+
pyarrow/include/arrow/util/align_util.h,sha256=DG2L24KReTiU8nFpXLigbflkKouKWTPUf6osQs6mxiY,10669
|
| 389 |
+
pyarrow/include/arrow/util/aligned_storage.h,sha256=e0pCTBZ9hn9VAVTnENubbEii_witF73xUeBZNIQd73I,4254
|
| 390 |
+
pyarrow/include/arrow/util/async_generator.h,sha256=dMfy3t58k9zQ82LeD002LZT0uEce_QWoDRfwjIapwKk,77704
|
| 391 |
+
pyarrow/include/arrow/util/async_generator_fwd.h,sha256=Y7EZ4VXdvqp7DnzG5I6rTt123_8kQhAgYIOhNcLvBdA,1737
|
| 392 |
+
pyarrow/include/arrow/util/async_util.h,sha256=1nnAJZ22iK7wSzmvZDo3PMhuWqJIt2qKdlXzTyhoCK4,19759
|
| 393 |
+
pyarrow/include/arrow/util/base64.h,sha256=qzcBE98cg8Tx5iPJAvQ4Pdf2yc6R2r-4yGJS1_DEIeY,1095
|
| 394 |
+
pyarrow/include/arrow/util/basic_decimal.h,sha256=Q2zfksUdYc92TL8po81I_aQOmwHTwZGPjqXvJM7cgek,33569
|
| 395 |
+
pyarrow/include/arrow/util/benchmark_util.h,sha256=SG3gfwE-wGNZAwpL3TvffnSiZGM2cztV5xRBnbqy2Mw,7641
|
| 396 |
+
pyarrow/include/arrow/util/binary_view_util.h,sha256=-sFAQX9cnfWmmZJo8stFX5vkJki7T2UloAvDzYO0MN8,4625
|
| 397 |
+
pyarrow/include/arrow/util/bit_block_counter.h,sha256=iSIemzizxVokwC0Ze6SjSi-al_nrP2ViXF6JPoIVUWc,20162
|
| 398 |
+
pyarrow/include/arrow/util/bit_run_reader.h,sha256=IWDww6Dm8OFsCRlJ0hEpJKiHMK3nUM3pqbd09mZhcIQ,16616
|
| 399 |
+
pyarrow/include/arrow/util/bit_util.h,sha256=S0TbReZet8MpPFZk9wjfYzfKpkBquthkkFk2QtxzB7U,12108
|
| 400 |
+
pyarrow/include/arrow/util/bitmap.h,sha256=qDoNl-S8QFoZ220HsAtAN-s-Xm5JcnjOXNOGdaIssL0,17462
|
| 401 |
+
pyarrow/include/arrow/util/bitmap_builders.h,sha256=28rjB9AGwG-VMzuen9FARssdMul0RJx2ZmPFQL9SV1E,1596
|
| 402 |
+
pyarrow/include/arrow/util/bitmap_generate.h,sha256=m6ZsNwx1GhsEktQr63NxXHQkX2B7Nti011XYsPg2xfo,3661
|
| 403 |
+
pyarrow/include/arrow/util/bitmap_ops.h,sha256=87_SXoqmVPRC6umXFitektDCIeI8yOalYWUonzdWjt8,10750
|
| 404 |
+
pyarrow/include/arrow/util/bitmap_reader.h,sha256=pLrMDWhVo-Qb3V1mLASAz_aI6QZxDHRr37EtqxqGd9E,8353
|
| 405 |
+
pyarrow/include/arrow/util/bitmap_visit.h,sha256=myn8k66VrvZnL6R6VW6IDPTfO68VxjbJ8Up5IuSjFL4,3470
|
| 406 |
+
pyarrow/include/arrow/util/bitmap_writer.h,sha256=a4goXhLlY0qcfvYxbfbGD_HZ8Au1wFcbV1tVF3BPaXs,9383
|
| 407 |
+
pyarrow/include/arrow/util/bitset_stack.h,sha256=D49IZZSzZOM2hqh6b-fT0vgRISf1mQnl4oG5nnLBZ4A,2776
|
| 408 |
+
pyarrow/include/arrow/util/bpacking.h,sha256=qiiYXgZLWZcYX6sm75_vBQ6qpHtS1AwasL59YQL2Ptk,1175
|
| 409 |
+
pyarrow/include/arrow/util/bpacking64_default.h,sha256=q7kf_BW62k45v1qMtnJtLIPk8VtJIALc5nXkYmISy3w,196990
|
| 410 |
+
pyarrow/include/arrow/util/bpacking_avx2.h,sha256=ymQJGQc54W3zbrSoktjbAcBnWwbq_SphiXLLI-G6fHg,1009
|
| 411 |
+
pyarrow/include/arrow/util/bpacking_avx512.h,sha256=Z_rAQpiKJEH-9QSHUXpbDmZiAgIm7CPCHfPnwlIZDAE,1011
|
| 412 |
+
pyarrow/include/arrow/util/bpacking_default.h,sha256=nDi4g5JdyWwXa_J3EqE22bG9R4G7Czd6W75F9spRU5U,103760
|
| 413 |
+
pyarrow/include/arrow/util/bpacking_neon.h,sha256=vE-V4E8dpqSjk7dq8kagD07-nhRQKGvcYMhc_dE4nqg,1009
|
| 414 |
+
pyarrow/include/arrow/util/byte_size.h,sha256=Pd2c_3a0IeSOUevhPIlXNkDmgoB06g4c9YCsuRwwSKM,3997
|
| 415 |
+
pyarrow/include/arrow/util/cancel.h,sha256=SgAy5S0TBISnCypp4R_OI-jPUQ997qtsLOSdXo8l5bM,3659
|
| 416 |
+
pyarrow/include/arrow/util/checked_cast.h,sha256=SR9Qg8NuLSBJw2w1UfgeGvCfT8k7wrbN7BzADQOZfAU,2076
|
| 417 |
+
pyarrow/include/arrow/util/compare.h,sha256=OLrSSyllkY4Sv00IK-37A2d68gr4OwnWJsxn1aF9xTU,1982
|
| 418 |
+
pyarrow/include/arrow/util/compression.h,sha256=fvlURoWJsgO8Hr6Xs_VNaqiOatmIGn9ktVUkYv7pIu4,8427
|
| 419 |
+
pyarrow/include/arrow/util/concurrent_map.h,sha256=wMi9WDHfRuJ_aSFgcJPpsVwGJ9vIJ5agaZ3rVUlwGe4,1775
|
| 420 |
+
pyarrow/include/arrow/util/config.h,sha256=GrUtAhdzwMzsPKIKCbJnaz9VKb6rGjgiAnTiBtTEgg8,2269
|
| 421 |
+
pyarrow/include/arrow/util/converter.h,sha256=PILfos6VlnLK6fOFMfLIUhiKl3o1dJo9T4HJXeR7V5E,14637
|
| 422 |
+
pyarrow/include/arrow/util/counting_semaphore.h,sha256=iXHYagqi_-ay73T1uPmv7pG334SY34DUQLSdtD_4_tA,2251
|
| 423 |
+
pyarrow/include/arrow/util/cpu_info.h,sha256=MqLdJabBZkzDjiScaQ7if9dmoAGvXT2QavGoGkho3lU,3964
|
| 424 |
+
pyarrow/include/arrow/util/crc32.h,sha256=4gN0M-SRnxaGKci2ATPbMWZG2TG3YULXjaTpadV0Udk,1337
|
| 425 |
+
pyarrow/include/arrow/util/debug.h,sha256=CPB_oDOuZ_u89e9wM8bGn88mGvClgfa7UDxDph6v9sY,971
|
| 426 |
+
pyarrow/include/arrow/util/decimal.h,sha256=ozY_pRsBgftG73qz0KKEPchFQ5HRTb5oxCcTIdWEL7g,20831
|
| 427 |
+
pyarrow/include/arrow/util/delimiting.h,sha256=JYe9YcWMeFT_ISuojx_VgVqOYLvZ2TiiR2sNn-WdeBQ,7317
|
| 428 |
+
pyarrow/include/arrow/util/dict_util.h,sha256=HipvAVlQ1Q6zNneu9tYOwVUv6NLklBu2IfZ1eoeSpVg,986
|
| 429 |
+
pyarrow/include/arrow/util/dispatch.h,sha256=g6R9w8asCTRyDTFoxUipvdOeh6Ye_FvZBGP6Zwg2t3M,3235
|
| 430 |
+
pyarrow/include/arrow/util/double_conversion.h,sha256=23QU2TFX4hpBZnoqMDyTKxZoH7mU9qkY2vkF1KL8bW4,1243
|
| 431 |
+
pyarrow/include/arrow/util/endian.h,sha256=jp4QoQ9r2vb-oigrlb9AhQW7Lxgxjj7desQjzkEre7g,8176
|
| 432 |
+
pyarrow/include/arrow/util/float16.h,sha256=V6OYyvMTybRWJWhNfjP-NsrrxBMPiDkA-7RWkfBVZSA,7230
|
| 433 |
+
pyarrow/include/arrow/util/formatting.h,sha256=782wKN6ZKlHO7cQLC8CKCF9STixvLGjXrp_CwRqXyVs,22554
|
| 434 |
+
pyarrow/include/arrow/util/functional.h,sha256=4ljKXSWX3G_lBT2BfLXuG44pzZwVKeaojpLWCniqKyc,5612
|
| 435 |
+
pyarrow/include/arrow/util/future.h,sha256=tsSVDEH2dhXKyvIKl6R9BVBolpPdZXoRRf2-YRbtdxg,32296
|
| 436 |
+
pyarrow/include/arrow/util/hash_util.h,sha256=CjiNVPUJPxXvVJy7ys79aIb7YB6Bm-5nTJAR4DHsxcs,1918
|
| 437 |
+
pyarrow/include/arrow/util/hashing.h,sha256=S88jTTQ5k23L7NOSqESp-_KFvHS_fg0GyfiF9NAwvV8,33214
|
| 438 |
+
pyarrow/include/arrow/util/int_util.h,sha256=zTOAq57M4pUe469WpnW6I5hNtxe3vGRHlZWhngA1DzM,4859
|
| 439 |
+
pyarrow/include/arrow/util/int_util_overflow.h,sha256=AtvkG7v3-1gVzW5SrFrdVkYuXFtT76_nxrKtzIbz_9U,4895
|
| 440 |
+
pyarrow/include/arrow/util/io_util.h,sha256=U6VTCh0yKUmYPaw2oG-CllJd4J02Gce6b0qTfqFi9E4,13709
|
| 441 |
+
pyarrow/include/arrow/util/iterator.h,sha256=osTT6Fc063yUfHC260uHmPhBcPjfncMwiCObdtYsaAg,18098
|
| 442 |
+
pyarrow/include/arrow/util/key_value_metadata.h,sha256=wjU6uQGcSmy-YFqMs6rwLP7E4X-0IFBjPrWZstistzQ,3590
|
| 443 |
+
pyarrow/include/arrow/util/launder.h,sha256=C3rNBRh4reuUp8YuRdGQU95WPc8vl4bAY-z5LXgDiuA,1046
|
| 444 |
+
pyarrow/include/arrow/util/list_util.h,sha256=_OmtsDqe-mnZ_7tVWxB2yHdgCJhpiME_RP3nXHzKbdI,2028
|
| 445 |
+
pyarrow/include/arrow/util/logger.h,sha256=p9i4dNgne36LWpFmNSYBYgTQ4kFSao20dJ40LgRRZKQ,6693
|
| 446 |
+
pyarrow/include/arrow/util/logging.h,sha256=eY1sZ1QCcvy5lpJwfOCL2rtRgLjc8V8yDf9usSa9-d4,9694
|
| 447 |
+
pyarrow/include/arrow/util/macros.h,sha256=dqnFiDUrFUyqHyNP4xEr54WgaAEXX8gE4ZG7-i3nfZQ,9336
|
| 448 |
+
pyarrow/include/arrow/util/map.h,sha256=KbKB3QNc3aWR_0YU1S7aF9fdI0VCABGxEF1VES2oOqU,2476
|
| 449 |
+
pyarrow/include/arrow/util/math_constants.h,sha256=2sfWoVc8syHz8X26XgBmejzXStl7hmvKiOh9622oUZA,1112
|
| 450 |
+
pyarrow/include/arrow/util/memory.h,sha256=qsxFgvj_wozO5OxIs6fHdcam7aifpozqc1aE81P91Yo,1566
|
| 451 |
+
pyarrow/include/arrow/util/mutex.h,sha256=n4bsrHK2Q8zbYsQEyNaFqNu__vvqgwo1AfrLLCxfkpU,2554
|
| 452 |
+
pyarrow/include/arrow/util/parallel.h,sha256=_43wTVSrtJwOkRt3KJcJF1DyYHwhoWbWPsrAswftP-Q,3817
|
| 453 |
+
pyarrow/include/arrow/util/pcg_random.h,sha256=nbXowfCJFiy4GjVfF9I8VvB6fxkyR5zNB1FKdnFsYTQ,1252
|
| 454 |
+
pyarrow/include/arrow/util/prefetch.h,sha256=vaE4FPdscbtO0cPbzl8F1PzB1NDO18ytYlEmZCHDjHs,1251
|
| 455 |
+
pyarrow/include/arrow/util/print.h,sha256=X0CfuWzDkq8CNHaEUH3I27Yi4v_zdoOo7sdrTad8Wr0,2444
|
| 456 |
+
pyarrow/include/arrow/util/queue.h,sha256=X9vRZQX3YL_a2Lzwe-zcNNHguR7FoGYmD-Q0THqsCBM,1017
|
| 457 |
+
pyarrow/include/arrow/util/range.h,sha256=yhe5pJiZIiLUO8tYr408Y9yEsFrFd7FrBMeTL2hAOKY,8526
|
| 458 |
+
pyarrow/include/arrow/util/ree_util.h,sha256=waTBOQfwWGHhoAYHTyyhUnM2BSwOqsof_H_akHvUgno,22395
|
| 459 |
+
pyarrow/include/arrow/util/regex.h,sha256=Tj92CttOh2HxS0EKQ_9-sxMBAsQrDOUKNP0ngIJFdP8,1742
|
| 460 |
+
pyarrow/include/arrow/util/rows_to_batches.h,sha256=PZNoLeMCfJJdeHVvUny0UHc5AtS0hctUCi7zUztJpeE,7120
|
| 461 |
+
pyarrow/include/arrow/util/simd.h,sha256=PpKm-aWpZYIYP0NnyGrQceOO9m3_7JbN4uro0IhIT9w,1679
|
| 462 |
+
pyarrow/include/arrow/util/small_vector.h,sha256=dDNNMFpNdtIbxLP3L-h_bv3A8raYv4IVuyLEzUVMgck,14421
|
| 463 |
+
pyarrow/include/arrow/util/sort.h,sha256=cXZvBN_EcXkN5j0xhX2oNisbChT2QKXP9KzDgjXW2_M,2466
|
| 464 |
+
pyarrow/include/arrow/util/spaced.h,sha256=790FFCTdZA-z6qKuEJM5_wG24SqTTVtyj7PKnLBe7_Q,3567
|
| 465 |
+
pyarrow/include/arrow/util/span.h,sha256=1edvehJ567sQfZn4gGvn4kcVpLAJU9raXHbqE_dDpZQ,4298
|
| 466 |
+
pyarrow/include/arrow/util/stopwatch.h,sha256=ADGbEEU1x-fvp_NsIdTHH5BW0b9jDB8rTAj1WOgkClc,1401
|
| 467 |
+
pyarrow/include/arrow/util/string.h,sha256=hYtg4d3kGQBHdd0vGuKJTlVeueCCgfyD3iq-feMA3p8,5756
|
| 468 |
+
pyarrow/include/arrow/util/string_builder.h,sha256=EGT0azRF4dB1cQowm2fruwSRjPbuHt5h0jna8JWyTwk,2653
|
| 469 |
+
pyarrow/include/arrow/util/task_group.h,sha256=fI330NoJT8u84AEUA6pSxWrE7UBKn2LaM4DfPFoalqA,4362
|
| 470 |
+
pyarrow/include/arrow/util/tdigest.h,sha256=L6nSj-FVlYLtwKJ94WX9qps9YU6Yg-e3xwP6C0qE7pw,3058
|
| 471 |
+
pyarrow/include/arrow/util/test_common.h,sha256=ZniLT8TvAUdCE2T2YrtlDKdwDNPBpT5e9V1EiPHH9LU,2837
|
| 472 |
+
pyarrow/include/arrow/util/thread_pool.h,sha256=4ztLwkJHQJQmTmqwy8IGDmAo8X4N-o3qi6f91agzkkQ,24426
|
| 473 |
+
pyarrow/include/arrow/util/time.h,sha256=4Xi8JzaYlWFxVaenmCJ7orMgu4cuKELvbtMiszuJHUA,2988
|
| 474 |
+
pyarrow/include/arrow/util/tracing.h,sha256=sVfC_Rj2gwkWKVSKT0l0FOO5c2EGsfYwlkZX4d9ncxA,1286
|
| 475 |
+
pyarrow/include/arrow/util/trie.h,sha256=WBvryYO2sNdoPc-UB-XmQ3WzSed79qIsSg7YWCrvwNY,7121
|
| 476 |
+
pyarrow/include/arrow/util/type_fwd.h,sha256=aC3ZZR2FniFUR3InlZDXH8dknZKvmM0RBocHwFKU_Us,1521
|
| 477 |
+
pyarrow/include/arrow/util/type_traits.h,sha256=F0Gdg_3faM0MmZBOXOspRzUwuxnjKbFaVpJiTEaOXGU,1731
|
| 478 |
+
pyarrow/include/arrow/util/ubsan.h,sha256=m18PxnY-B0x4twewjyNt2UUy5qHntiolMnWC0JkkTmM,2817
|
| 479 |
+
pyarrow/include/arrow/util/union_util.h,sha256=PSssBiw-v-PDen_q75c6OkNO5PwyIPhGbf9PMJj7P2M,1211
|
| 480 |
+
pyarrow/include/arrow/util/unreachable.h,sha256=O1TG4ozCYT3_xvDpJouKWrlFADIEpIemQ28y4DqIwu4,1070
|
| 481 |
+
pyarrow/include/arrow/util/uri.h,sha256=D24zebazFcrKGt7iGpkcGQ87DuF-2AbjPKVkDlq9Nuk,3886
|
| 482 |
+
pyarrow/include/arrow/util/utf8.h,sha256=flGZ786kHo33Xg_zw0zVA9GAT8jYdPUHTVhIPHGjOj8,2031
|
| 483 |
+
pyarrow/include/arrow/util/value_parsing.h,sha256=ypbnIIxfFDfDmELinEiS2RYSkeabYDAfuKPW5YsmfRw,29995
|
| 484 |
+
pyarrow/include/arrow/util/vector.h,sha256=w1lxZG3CU0gq2ZrByeU8QX2A0JeTtooGdaZONUsVlfs,5697
|
| 485 |
+
pyarrow/include/arrow/util/visibility.h,sha256=DFEdl8TCr30r3b7vlpgzJIiA5NsK7eW9UmeL47PgcLk,2835
|
| 486 |
+
pyarrow/include/arrow/util/windows_compatibility.h,sha256=Chme9fWRqYRzfIbLw7V_yeiIWd3F4dFeG6ImHHr4Xqw,1255
|
| 487 |
+
pyarrow/include/arrow/util/windows_fixup.h,sha256=hjoh6zvB8u8OVUQqLtdcrmohMzoAoLy6XJFLxcfFhK0,1435
|
| 488 |
+
pyarrow/include/arrow/vendored/ProducerConsumerQueue.h,sha256=Bz1ks3NDgXXLfT8TMUkE38RpMOSwKRRtwU1e37Y1CUw,6101
|
| 489 |
+
pyarrow/include/arrow/vendored/datetime.h,sha256=tsFbz8LKBFzRzTEOAKZyWRbdFLfnCnZRCK9Tyi1PANs,1103
|
| 490 |
+
pyarrow/include/arrow/vendored/datetime/date.h,sha256=WNhAT0LIHIl-5t27CT4NjHZxQFl9TANLlGTjlUfHPaE,237812
|
| 491 |
+
pyarrow/include/arrow/vendored/datetime/ios.h,sha256=Qnu0iuy2-ein9KkVoSL1t71_W_VFZkdjDVsOnYTnP38,1641
|
| 492 |
+
pyarrow/include/arrow/vendored/datetime/tz.h,sha256=m5JJv7LE7Vukp8h50r90sCfbOSAD2bMVIVQUUxNZeDQ,85347
|
| 493 |
+
pyarrow/include/arrow/vendored/datetime/tz_private.h,sha256=pDkKXYdzfzQ5uh-jcUhURBLqHo00t0UnlimUdiM53Cs,10706
|
| 494 |
+
pyarrow/include/arrow/vendored/datetime/visibility.h,sha256=VCGKzhQOgL1zwGXKl_7lLULfSy0OsPt8FLWHwA4sOtU,1002
|
| 495 |
+
pyarrow/include/arrow/vendored/double-conversion/bignum-dtoa.h,sha256=imGhcg0RywMsFNMYTqp6rlXw2HZCIAla8SC_n92gCqE,4358
|
| 496 |
+
pyarrow/include/arrow/vendored/double-conversion/bignum.h,sha256=RnQ2CPL8Pt6fVCGh_8VDF11e_GyrrwO0IH0uMnTcsEs,5949
|
| 497 |
+
pyarrow/include/arrow/vendored/double-conversion/cached-powers.h,sha256=jjwfR3bue7mNlE5lbTrFR2KlgjRew2OkmjBa7oQO0Qg,3079
|
| 498 |
+
pyarrow/include/arrow/vendored/double-conversion/diy-fp.h,sha256=J-RgqH27jspT5Ubth9pTA9NAZH6e7n1OVhxModgi8Sc,5088
|
| 499 |
+
pyarrow/include/arrow/vendored/double-conversion/double-conversion.h,sha256=J1Tl5-8aFY0A9SnaA9z5Q90jnMxw55illPIuE-jdD5Q,1804
|
| 500 |
+
pyarrow/include/arrow/vendored/double-conversion/double-to-string.h,sha256=C-tKRi0IuLycXgS6CC1oiFkCroOo_-AO0VOjmfe0tlE,23925
|
| 501 |
+
pyarrow/include/arrow/vendored/double-conversion/fast-dtoa.h,sha256=ZAho25fqeP3t2RM0XgqfhTBXQIIicACLpdyHHMRX3JU,4122
|
| 502 |
+
pyarrow/include/arrow/vendored/double-conversion/fixed-dtoa.h,sha256=HLnpxkHjKldm-FBiDRbADYljJBSYbQGP4Gz-sVbiSJU,2828
|
| 503 |
+
pyarrow/include/arrow/vendored/double-conversion/ieee.h,sha256=CVKA9RXSjv4ZygqDHMiF-H2hUh3QHQvp1GZYC3MAhkE,15281
|
| 504 |
+
pyarrow/include/arrow/vendored/double-conversion/string-to-double.h,sha256=Ul6b-2R0pjUaAWNM3Ki4kH933LqrW6_XfPz4BSiE2v8,10906
|
| 505 |
+
pyarrow/include/arrow/vendored/double-conversion/strtod.h,sha256=6xCRm47vmcghYJug5mhhTVbsZ3m3Y6tQfMehEyVZNx0,3096
|
| 506 |
+
pyarrow/include/arrow/vendored/double-conversion/utils.h,sha256=wFRb5cGABiNoUSCnvKmdv_KIMcBtX1PX89tPFfvgbQI,15614
|
| 507 |
+
pyarrow/include/arrow/vendored/pcg/pcg_extras.hpp,sha256=FEYzq8NFxPfdJyLs4kVtTBLkaD6iO71INz9EJnaxTdc,19784
|
| 508 |
+
pyarrow/include/arrow/vendored/pcg/pcg_random.hpp,sha256=7TaV3nZhcwpf6XxlZ6cod1GaW5gm-iUn67t2fiMPNbA,73501
|
| 509 |
+
pyarrow/include/arrow/vendored/pcg/pcg_uint128.hpp,sha256=r8exMtH21S8pjizyZZvP8Q8lAdxkKF22ZEiurSTFtzM,28411
|
| 510 |
+
pyarrow/include/arrow/vendored/portable-snippets/debug-trap.h,sha256=9KphJ9gRtDT9DXR9iZ7aS23xa2T8tLmLsFEJMg0pLDQ,3081
|
| 511 |
+
pyarrow/include/arrow/vendored/portable-snippets/safe-math.h,sha256=q9yWh34bsFu1vSqLTuI3n_cIU4TlY98Lk1elxKHvZP0,48167
|
| 512 |
+
pyarrow/include/arrow/vendored/strptime.h,sha256=q1IZi5CvyUp_PNzbQ4_XLroAV24VEovBEz2TkpwUJ9c,1212
|
| 513 |
+
pyarrow/include/arrow/vendored/xxhash.h,sha256=MUwtyzu7xjkx9mBcS65SaDcCK7tgeqQgj-KYEMxcHWc,844
|
| 514 |
+
pyarrow/include/arrow/vendored/xxhash/xxhash.h,sha256=videnbIaUDw38kaDzbSQjyNwo-NauW4CxOpz3I45nEM,253096
|
| 515 |
+
pyarrow/include/arrow/visit_array_inline.h,sha256=XuQjuME8XZeJp7W86YuCsuoVVgmG1NulXAA0KJkmmB0,2446
|
| 516 |
+
pyarrow/include/arrow/visit_data_inline.h,sha256=4MkdFVsrjhMyTDNrScQtOYV_nwzqR2ddSS2yYnbyLt0,12460
|
| 517 |
+
pyarrow/include/arrow/visit_scalar_inline.h,sha256=KvNY0j8nE9gs_805LXMV3ATgvxvUqW4UeKpXUxR3rMA,2419
|
| 518 |
+
pyarrow/include/arrow/visit_type_inline.h,sha256=45aoF8APn8hm909nLBngls669o2yKCn24WlL5XdDpa4,4397
|
| 519 |
+
pyarrow/include/arrow/visitor.h,sha256=NKos98j54uY9tdXzctI_n_nwFRrXNOwanxLDqDZONw4,8690
|
| 520 |
+
pyarrow/include/arrow/visitor_generate.h,sha256=n2YKZW-5hY7ICQSwEUBZIYh2eg9ZoTfD54XRd9OlNDo,3324
|
| 521 |
+
pyarrow/include/parquet/api/io.h,sha256=Ricq0d2R4QXHiGZCbjxZ_0F_QmKq0IrfTidNu5NoXPI,847
|
| 522 |
+
pyarrow/include/parquet/api/reader.h,sha256=vnM5XDPn1TVsDJk4SDgb3ZU2Ta4vdrRzCpDWO90rYHk,1204
|
| 523 |
+
pyarrow/include/parquet/api/schema.h,sha256=KsNJ529pEh7bGUa0rLUCcfanI9rW2uSTirgpvKq0hdc,855
|
| 524 |
+
pyarrow/include/parquet/api/writer.h,sha256=UJZbY8QGVRMtAmozzjoM9TnI4gssqlNFUKCXBw2IfuI,1007
|
| 525 |
+
pyarrow/include/parquet/arrow/reader.h,sha256=9euD9hYg2xk7awQJDoKoDMNg2NhZOMc6OR3pu9XPYIw,17411
|
| 526 |
+
pyarrow/include/parquet/arrow/schema.h,sha256=Mi56ul7itNS6NDbMpKOJCufjHVqaSY5_rbsNRNLE560,6204
|
| 527 |
+
pyarrow/include/parquet/arrow/test_util.h,sha256=oyaIkVk3Js9_LL5jEbXbzKIaCiXMtcBaeQkmtEMt37Q,20573
|
| 528 |
+
pyarrow/include/parquet/arrow/writer.h,sha256=XicHPFeGb92AcsNRDblJ7V4Hmst2qSPGYYT9MTSNNmI,7095
|
| 529 |
+
pyarrow/include/parquet/benchmark_util.h,sha256=RhFvoDBVyfd5Sv0fm9JO4JrXWJRGYYmIIrHXi0cSJP0,1756
|
| 530 |
+
pyarrow/include/parquet/bloom_filter.h,sha256=TC3OxK0J2v6tHxT_Bbw7mlYtM0603KXgBoHRvmzM9aA,14999
|
| 531 |
+
pyarrow/include/parquet/bloom_filter_reader.h,sha256=63kpHYKs5TPrbRamkBLZsDYbD-I9UeVhF-R8d7JHeLg,2892
|
| 532 |
+
pyarrow/include/parquet/column_page.h,sha256=7w2hQDqkIhqpHLRh2LHk0ujnuknSPHVtuvJ21LS--n0,6942
|
| 533 |
+
pyarrow/include/parquet/column_reader.h,sha256=3QwlHlpiS5e5jtWmI_kRmD4jrrC8ljfpqF0ilf5JgNI,19299
|
| 534 |
+
pyarrow/include/parquet/column_scanner.h,sha256=HecBvh-z0n_1HJsD-GIdcGHQAvDOHKlLzppB9RBsD9s,8863
|
| 535 |
+
pyarrow/include/parquet/column_writer.h,sha256=Y9VN1eJtsYmQVhpL9UPiWGrHbgSDbDds19Z1nv_yfOA,12294
|
| 536 |
+
pyarrow/include/parquet/encoding.h,sha256=PYEOY6eK6n4Jh7UH63GvnkcVTwaEmua2kPCADmGliAU,16607
|
| 537 |
+
pyarrow/include/parquet/encryption/crypto_factory.h,sha256=RT4iznr6uvSIPbUzh_7s6Cexe8uMbQkzgrjCTGYBC6I,7057
|
| 538 |
+
pyarrow/include/parquet/encryption/encryption.h,sha256=bHJ7USckzezXfydqjJstljcjuR15r8U6zh8z3IoINCo,19842
|
| 539 |
+
pyarrow/include/parquet/encryption/file_key_material_store.h,sha256=YzAVO3M2H5v5Fz2b_WlmB3GE5wVbMEnFTL3S9XPH6k0,2200
|
| 540 |
+
pyarrow/include/parquet/encryption/file_key_unwrapper.h,sha256=pB30St8lGEaEAxNcwnDnlGtATTvc1muMzNOusfgqzT8,4635
|
| 541 |
+
pyarrow/include/parquet/encryption/file_key_wrapper.h,sha256=d2W4xICbSRAy7aPe5RKahhPhiJDfvxHY_v_lifq7wqY,3762
|
| 542 |
+
pyarrow/include/parquet/encryption/file_system_key_material_store.h,sha256=9H1ey0O3LL4dg9VVeFLNxlZ7Vr263JVaZHKVSu4s8MI,3573
|
| 543 |
+
pyarrow/include/parquet/encryption/key_encryption_key.h,sha256=0c3ZrRud2vrCu5z513ocyPYxlsP2kg1fQ8m0Jqr701g,2232
|
| 544 |
+
pyarrow/include/parquet/encryption/key_material.h,sha256=kPTSIuRFYOnH4BCPIB33zG9hp5D2Ba-5kZVlq3rFnRI,6221
|
| 545 |
+
pyarrow/include/parquet/encryption/key_metadata.h,sha256=Pc0nA9LW3Fc9NLMMxz7osbw8si2jSiOVTES-J-9R0y0,4003
|
| 546 |
+
pyarrow/include/parquet/encryption/key_toolkit.h,sha256=HPabI8qFnIMgxZYhHgXCzYV0LU1c5yJ16xjUx21I9b0,4577
|
| 547 |
+
pyarrow/include/parquet/encryption/kms_client.h,sha256=D34pVHzkCbWqKnPIBYfs6cONxmuYzyLSS9-C52ZFhz0,3151
|
| 548 |
+
pyarrow/include/parquet/encryption/kms_client_factory.h,sha256=VZ97CMgDQxx5oZWFGprjXsaM1hZ0wNudPmFU1_lniAc,1293
|
| 549 |
+
pyarrow/include/parquet/encryption/local_wrap_kms_client.h,sha256=XZxkEct0-Tv93VDpda9sDou1kp9qkTKMxr36bpVcI8s,3954
|
| 550 |
+
pyarrow/include/parquet/encryption/test_encryption_util.h,sha256=zIGeULeTOCU1N-XYHdvIppth5wnnTYEwf2h-OuTcQZQ,5209
|
| 551 |
+
pyarrow/include/parquet/encryption/test_in_memory_kms.h,sha256=jYc5WPsrh_wcaaaWcjf23Gbiye3a_bdg2royUfukWEs,3521
|
| 552 |
+
pyarrow/include/parquet/encryption/two_level_cache_with_expiration.h,sha256=cuHbX9gBWWyd0IPXNVjMmHxjPw7omYTns4If4YhBgSM,5075
|
| 553 |
+
pyarrow/include/parquet/encryption/type_fwd.h,sha256=dL8snyUwNjhTQE2FQ2dXAUjTboEXhH2JOehQovHfixc,955
|
| 554 |
+
pyarrow/include/parquet/exception.h,sha256=yc5A3iMqM9P59hnjuY8VXUIoF_JvbZVPHM6_wPtg4cI,5599
|
| 555 |
+
pyarrow/include/parquet/file_reader.h,sha256=Z1RiOP74Y9tMv7kZ7FWX05IR05qzgSOTRKrY71pLOJE,11185
|
| 556 |
+
pyarrow/include/parquet/file_writer.h,sha256=6fK6Mn-MdiQ-J4oo8BTi_eVVVshlffoQiJzFaLRrqco,9343
|
| 557 |
+
pyarrow/include/parquet/hasher.h,sha256=HSY1EjPD2xx_dB9HtAg-lXL7hB4j9MDE0cAlR7u0NOc,5227
|
| 558 |
+
pyarrow/include/parquet/level_comparison.h,sha256=5z4fUJJPWq9W60l2CsAI7T7E2auGYD7m0fpR5rfLmsw,1306
|
| 559 |
+
pyarrow/include/parquet/level_comparison_inc.h,sha256=r20_6Rv5L7UmFGJ68f-JaZ5hLXb87wvZa80hZNQoF-I,2494
|
| 560 |
+
pyarrow/include/parquet/level_conversion.h,sha256=OsuqK1xiUnEnOLPKwfm9X-pXTaXRMlDIkj3lwGb2ggI,9432
|
| 561 |
+
pyarrow/include/parquet/level_conversion_inc.h,sha256=0r2Gfd_FMidLGFC_a8kgpC9bnUt2-IBbAn9QbQFTrTo,14161
|
| 562 |
+
pyarrow/include/parquet/metadata.h,sha256=WR3ZDqJM21Jn1fk9k8B4lrxmn2aqXLWpZO9w5tyTKpo,20634
|
| 563 |
+
pyarrow/include/parquet/page_index.h,sha256=AqvLT6M81jY13YbpX-s-hOzCVz0AGNkZJ9om3_tp4Vk,17307
|
| 564 |
+
pyarrow/include/parquet/parquet_version.h,sha256=TVv89r2MMqGNwa9bPNUOUN0kHs5Gb7n9EMm579nZkE4,1164
|
| 565 |
+
pyarrow/include/parquet/pch.h,sha256=zIdkjZS4kuFYra3woGMjmvYXCwB4IaXdpm_nR5Nz8hk,1249
|
| 566 |
+
pyarrow/include/parquet/platform.h,sha256=VS0zEUC4d37LQmlQLQZ5aHNaiwRf8QrxixXdWf73m5Q,3898
|
| 567 |
+
pyarrow/include/parquet/printer.h,sha256=hXqzwuj5p1oKY2awZkVOq7qXx-Rsoo6QPH1oTE94AHU,1548
|
| 568 |
+
pyarrow/include/parquet/properties.h,sha256=B1l5hn6THai15MSmw1ZtSKTEWXsRrEDqYyiYwX9sXM8,48632
|
| 569 |
+
pyarrow/include/parquet/schema.h,sha256=CjZh2i9WN5VeoDbLqy7M1AZtopZ43_C9blWG3OT2IfU,18222
|
| 570 |
+
pyarrow/include/parquet/size_statistics.h,sha256=Ahr8qyIVre8U_JVRLHL0BbSoYpdJjo2OUeE1UD4I1tw,4327
|
| 571 |
+
pyarrow/include/parquet/statistics.h,sha256=0sk7koXslu-KuVC6CsTiFVD1Fu_ZWPD_FLhcXALas_g,15176
|
| 572 |
+
pyarrow/include/parquet/stream_reader.h,sha256=1WmN0vYCqTz1Lwb_Di4xPWTE-VbCQQuzZralSpWQm3U,8791
|
| 573 |
+
pyarrow/include/parquet/stream_writer.h,sha256=nw_v3nhrL682ozZ2KZKVkHnOsjwexbmBXTV2CKcq4YQ,7505
|
| 574 |
+
pyarrow/include/parquet/test_util.h,sha256=gkJoOl_N4cG3L56uXVJi1RLiDVBl73yX01Dkx2Plt9g,31180
|
| 575 |
+
pyarrow/include/parquet/type_fwd.h,sha256=NYplsPswBbYq5n-UjXc2kArnmFtJrRj5d1TIVnn6I5I,3267
|
| 576 |
+
pyarrow/include/parquet/types.h,sha256=IFbKlP0aZzW8Cn4U0QCIGboVb8hOnD6UvSGi6EqpvvE,25482
|
| 577 |
+
pyarrow/include/parquet/windows_compatibility.h,sha256=xIEGHW354URgdIP9A4V303TJL8A1IkCEvp08bMKsHTU,897
|
| 578 |
+
pyarrow/include/parquet/windows_fixup.h,sha256=DpyWCywx8YIqouun6BJcgMrHFMTCBgowWdJ1mnJnQ2s,1052
|
| 579 |
+
pyarrow/include/parquet/xxhasher.h,sha256=QAa7ZE7S3UFtU_Voz3oi3YclIYhbhviJkafLOYgiuWg,2074
|
| 580 |
+
pyarrow/includes/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 581 |
+
pyarrow/includes/common.pxd,sha256=8v66QsHwEIfW6cMZA8Mv4E5dq-_ycXCUJ_u6UXbg9Ds,5689
|
| 582 |
+
pyarrow/includes/libarrow.pxd,sha256=pq8fAPP354E6tW6-qHEeL-7ECIm1X9sPt7N6GCQsT4A,116315
|
| 583 |
+
pyarrow/includes/libarrow_acero.pxd,sha256=c84RdYfIuFWW_36-1RELJsowfQwXhgUxbdC_xKQyFCI,5298
|
| 584 |
+
pyarrow/includes/libarrow_cuda.pxd,sha256=0fRcHbCZY_gFdwIXIElnpGvTxeA5xVxZH1-vwZh16SM,4942
|
| 585 |
+
pyarrow/includes/libarrow_dataset.pxd,sha256=WssZKf33Gn6dXAxtE5-TVcIqPtJGCb0uFETn3WYWDB8,17024
|
| 586 |
+
pyarrow/includes/libarrow_dataset_parquet.pxd,sha256=4me_u82JiInHNRvoazLXUTOO5sxVnyCk-BdfsYQZyWQ,4536
|
| 587 |
+
pyarrow/includes/libarrow_feather.pxd,sha256=MTJUDQbfKP8Ir700Fobl7xcbjX7WcrsUV4mxFXlfwn0,2140
|
| 588 |
+
pyarrow/includes/libarrow_flight.pxd,sha256=HNhM1PcKcFk1hmlbqIm1ocyv_EUb2B6jG9QwiGD1HF8,25111
|
| 589 |
+
pyarrow/includes/libarrow_fs.pxd,sha256=jG1sBGyTkU3X_XZKBMC-n3YsY8Po_2dIQdXyK9vXtHY,14973
|
| 590 |
+
pyarrow/includes/libarrow_python.pxd,sha256=Fs9hNJZ-_fdVmqkNu3zGRUXy8Azt6_zniX_p1SKqM64,12387
|
| 591 |
+
pyarrow/includes/libarrow_substrait.pxd,sha256=PtgwVFqsCQBzCHzK-VqhQOdTyU9J4SziQ_lnxRwChfs,4061
|
| 592 |
+
pyarrow/includes/libgandiva.pxd,sha256=FLBd99IeU67Db9SnHS7oe6FgBZ1aIHuRc0pOiDv7hQc,11538
|
| 593 |
+
pyarrow/includes/libparquet_encryption.pxd,sha256=fi3QrLpHN1_IaYRXvVMJdIgp7F_6aaLu1owP0I3BD5g,5898
|
| 594 |
+
pyarrow/interchange/__init__.py,sha256=DH0bwbKpdjD1WCW1VinnXEuVLY098uHKkirv7DFc9JM,845
|
| 595 |
+
pyarrow/interchange/__pycache__/__init__.cpython-312.pyc,,
|
| 596 |
+
pyarrow/interchange/__pycache__/buffer.cpython-312.pyc,,
|
| 597 |
+
pyarrow/interchange/__pycache__/column.cpython-312.pyc,,
|
| 598 |
+
pyarrow/interchange/__pycache__/dataframe.cpython-312.pyc,,
|
| 599 |
+
pyarrow/interchange/__pycache__/from_dataframe.cpython-312.pyc,,
|
| 600 |
+
pyarrow/interchange/buffer.py,sha256=NF_GU1uQ6INqHqCwzY6XQQqRxKDh6znEeDHiRqaEIQ0,3359
|
| 601 |
+
pyarrow/interchange/column.py,sha256=afU794n3H7yf4gDQDuFLbtyDlgVnLk9iZ6sugb0h8_4,19370
|
| 602 |
+
pyarrow/interchange/dataframe.py,sha256=tmSMmBvBAc-ZSUzE8tBNbvQLHuuxLuBkMkK6KYwtS8M,8405
|
| 603 |
+
pyarrow/interchange/from_dataframe.py,sha256=JfkP4wuY_9x76H6RDtmsOzs6B6qe-1WS7zxpKeD481s,19709
|
| 604 |
+
pyarrow/io.pxi,sha256=JJbw69rqeJ6Hj0s_HZeGuhO4lAbmJ6AcB3s8KywOa0I,86617
|
| 605 |
+
pyarrow/ipc.pxi,sha256=Reakb_rHbBipOr9QPEC0D2jBvQ87ORpVb5kasDdeY_4,41081
|
| 606 |
+
pyarrow/ipc.py,sha256=Hb3qCPKRr_wth5u4WrkZHJyAZmIK5SoVSezfBOI97Ww,10107
|
| 607 |
+
pyarrow/json.py,sha256=N9Y7_3TSrOEDy2OrmgQ8UKqUPMx1Bm9dYgot-brJ8Xw,858
|
| 608 |
+
pyarrow/jvm.py,sha256=tzAsIrMSCIeNAtSC8lZWjQS0rq7kjaQDPlePDmvpqDw,9593
|
| 609 |
+
pyarrow/lib.cpython-312-x86_64-linux-gnu.so,sha256=XgOUvSaAfGzzT5PJawvL8dYylMPLVvg89RM1eHIOr20,4916720
|
| 610 |
+
pyarrow/lib.h,sha256=aWAOSlSScduvc3gGO6aSAWcNBl2QECWEdQAZb6mIl_U,4631
|
| 611 |
+
pyarrow/lib.pxd,sha256=yeAGPAh5ydW-mgb8Ijaj_MJ0dzxhAuy4RF7gwVcYsBM,18383
|
| 612 |
+
pyarrow/lib.pyx,sha256=sObLt9zELSeQZkyL373L9yHo2quhly_uAhNIXzaS9fA,6080
|
| 613 |
+
pyarrow/lib_api.h,sha256=4oiKWmdhyjn5OxDSBamrukHpWwQbUioDR7X82dhgdXs,19487
|
| 614 |
+
pyarrow/libarrow.so.1900,sha256=_l0_Z0616aIG128DyxAbASe5gZ8Gdq6GnqULbMinrrQ,64745512
|
| 615 |
+
pyarrow/libarrow_acero.so.1900,sha256=aYN7gHqMT-tzpI_-RfeeYLlmXX4QLUAWT9oQ_j5KnTc,2113216
|
| 616 |
+
pyarrow/libarrow_dataset.so.1900,sha256=RKLP2312jQjn1L1y1qA1IQdBIno2mEk8jlJoUQIJHKM,2763416
|
| 617 |
+
pyarrow/libarrow_flight.so.1900,sha256=5qZGdzsArCxZH2wfABPXlbffm4_ghchb9xgJpdEVjWE,20274688
|
| 618 |
+
pyarrow/libarrow_python.so,sha256=2fYxXypU4z0tkerf0YA2df338IB-unTsqIi-xnFyHlA,2890824
|
| 619 |
+
pyarrow/libarrow_python.so.1900,sha256=2fYxXypU4z0tkerf0YA2df338IB-unTsqIi-xnFyHlA,2890824
|
| 620 |
+
pyarrow/libarrow_python.so.1900.1.0,sha256=2fYxXypU4z0tkerf0YA2df338IB-unTsqIi-xnFyHlA,2890824
|
| 621 |
+
pyarrow/libarrow_python_flight.so,sha256=Nd6p56-YzjfCaJaBWRyEBFt-nxGUFxTaGBxYTyPK1J0,118208
|
| 622 |
+
pyarrow/libarrow_python_flight.so.1900,sha256=Nd6p56-YzjfCaJaBWRyEBFt-nxGUFxTaGBxYTyPK1J0,118208
|
| 623 |
+
pyarrow/libarrow_python_flight.so.1900.1.0,sha256=Nd6p56-YzjfCaJaBWRyEBFt-nxGUFxTaGBxYTyPK1J0,118208
|
| 624 |
+
pyarrow/libarrow_python_parquet_encryption.so,sha256=IIYy08rsx__IxkUz6NPFFHkc1CH5EebGtMjlbnCQFFg,37432
|
| 625 |
+
pyarrow/libarrow_python_parquet_encryption.so.1900,sha256=IIYy08rsx__IxkUz6NPFFHkc1CH5EebGtMjlbnCQFFg,37432
|
| 626 |
+
pyarrow/libarrow_python_parquet_encryption.so.1900.1.0,sha256=IIYy08rsx__IxkUz6NPFFHkc1CH5EebGtMjlbnCQFFg,37432
|
| 627 |
+
pyarrow/libarrow_substrait.so.1900,sha256=iY-zFnKClxrS7Sle2LJDuxY5WBeRATj2w28-vIhRIVU,5346184
|
| 628 |
+
pyarrow/libparquet.so.1900,sha256=MkmXrEQlZK91cOIICmnBxDppwS2IHd_pMWfk0D2JRMo,11104016
|
| 629 |
+
pyarrow/memory.pxi,sha256=9AVMENxqaV0Ndf9tYSiakunEpMRRCZNT9d-PnrY8r14,8229
|
| 630 |
+
pyarrow/orc.py,sha256=IjjeGAEZl0KhHvwy3YsSGfTWlx7Ilb54P0tFKPvwcfk,12618
|
| 631 |
+
pyarrow/pandas-shim.pxi,sha256=LtVztf56Fhy7VzWwBuEBQbWUphezlby7AoSnPU9QSX8,8796
|
| 632 |
+
pyarrow/pandas_compat.py,sha256=rET2AFVwh90BjQAh4D0wgA0a8UJ6JluH7JPir2Z2_Go,45740
|
| 633 |
+
pyarrow/parquet/__init__.py,sha256=4W64CbvwvO60tG58nfNtyCwMVCfuPumtu82p-kiGPaE,822
|
| 634 |
+
pyarrow/parquet/__pycache__/__init__.cpython-312.pyc,,
|
| 635 |
+
pyarrow/parquet/__pycache__/core.cpython-312.pyc,,
|
| 636 |
+
pyarrow/parquet/__pycache__/encryption.cpython-312.pyc,,
|
| 637 |
+
pyarrow/parquet/core.py,sha256=SA1zMIm-0cnTPMCjgWe_Bu6bFbjBbTWBpfYauGcHpW8,90440
|
| 638 |
+
pyarrow/parquet/encryption.py,sha256=-XW7Qcbl-jQhpZsR610uQ8-z9ZVE_NL045Jdnp1TZ9M,1153
|
| 639 |
+
pyarrow/public-api.pxi,sha256=G6tk0gOWMBoQaQGo4lyp0OLSkqEZqMhB0z27MoQR3rU,14064
|
| 640 |
+
pyarrow/scalar.pxi,sha256=h0aq_Q1mJN7gCynehZfnt1maz5hmAyCPqCV857L_n-4,36603
|
| 641 |
+
pyarrow/src/arrow/python/CMakeLists.txt,sha256=D4Ypror_508aAd_juYkrS9Qu2maeirK4QXzwGEZEj0M,855
|
| 642 |
+
pyarrow/src/arrow/python/api.h,sha256=W76VAxYqOxi9BHJddji1B62CmaWDFuBhqI65YOhUnGQ,1222
|
| 643 |
+
pyarrow/src/arrow/python/arrow_to_pandas.cc,sha256=Ba4TDYQdWVSpeeZ_IY3-b6ZWOcnQmn3cvBeTDe9n7Y0,95354
|
| 644 |
+
pyarrow/src/arrow/python/arrow_to_pandas.h,sha256=jUBEUMKXw70oJdMlgkSf6HitaNweQcc7hxI75_C9WSI,5561
|
| 645 |
+
pyarrow/src/arrow/python/arrow_to_python_internal.h,sha256=nQXPZTL3xa4Sm-a-Gv-8bpFs-qAOZHkqWmA_m-dSLVw,1740
|
| 646 |
+
pyarrow/src/arrow/python/async.h,sha256=C0f8YYmgwBGgDau4xEFsdjukiZB4YvpylETHEZryHOo,2352
|
| 647 |
+
pyarrow/src/arrow/python/benchmark.cc,sha256=z6qYRx4qMuNXPaC8fuPJlQd92aosMN85u1aD50R1-UU,1293
|
| 648 |
+
pyarrow/src/arrow/python/benchmark.h,sha256=f-kzyMOlPKDse2bcLWhyMrDEMZrG_JHAPpDJgGW0bXU,1192
|
| 649 |
+
pyarrow/src/arrow/python/common.cc,sha256=_9ozIRo_WTDWovBKqOVyX28d0IttHvwW9MG-PkTzmKc,7591
|
| 650 |
+
pyarrow/src/arrow/python/common.h,sha256=yjljfJK1f7slZ7DBQ4LTo_pob70zioswJNWazy0p-uM,14412
|
| 651 |
+
pyarrow/src/arrow/python/csv.cc,sha256=ql5AY76AqiFksWsrmzSl551k5s9vS8YcmypM2A9rhw8,1803
|
| 652 |
+
pyarrow/src/arrow/python/csv.h,sha256=QxU3B-Hv_RsoEcMGS9-1434ugouL2ygC64Lq6FgviNM,1397
|
| 653 |
+
pyarrow/src/arrow/python/datetime.cc,sha256=_VKRKeyFqR7Xzay2wazcveb7mgOv8K37ebMomNY__lQ,23001
|
| 654 |
+
pyarrow/src/arrow/python/datetime.h,sha256=Bny_THGi2tyUeHxcOuw01O7hNE8B_gave5ABAZQtwTQ,7931
|
| 655 |
+
pyarrow/src/arrow/python/decimal.cc,sha256=Raz7kMa9N5y2gmSIM0XDkIUl6TTvWvKZquksawv0LN0,9592
|
| 656 |
+
pyarrow/src/arrow/python/decimal.h,sha256=K9ScmzSa7XCuuwpXKnq0GPbRDTuRU5yXfWr9zGtOchc,6362
|
| 657 |
+
pyarrow/src/arrow/python/deserialize.cc,sha256=ogtBX7OzGuDvyj_LepFkaG7m53-wenf3duG0WF8Ooa0,19185
|
| 658 |
+
pyarrow/src/arrow/python/deserialize.h,sha256=Q4L1qPCra8-Wzl6oLm44cPOUMVuK1FX01LeGzwNUtK4,4260
|
| 659 |
+
pyarrow/src/arrow/python/extension_type.cc,sha256=eU5P7pufWjcEcmVeOyu1jtEZ08AWd9tkTSMfx8ph0rQ,6860
|
| 660 |
+
pyarrow/src/arrow/python/extension_type.h,sha256=0gzb42y_mbw4fsYs3u8cwPFLBRlG-kkHQLgbvGtrY0U,3181
|
| 661 |
+
pyarrow/src/arrow/python/filesystem.cc,sha256=0twavI91TE20Otq5kkVUwnN5sindU_mBWoVAvz1ZMgI,6152
|
| 662 |
+
pyarrow/src/arrow/python/filesystem.h,sha256=FG0AcLekqaDf9IQPqKixAfIcY_ZLgIKP5NvvXdtBVUM,5126
|
| 663 |
+
pyarrow/src/arrow/python/flight.cc,sha256=j3tbzVopONkqHTg-gZ1q_-Wv8_l2AbrdNF5c9lvoESg,14092
|
| 664 |
+
pyarrow/src/arrow/python/flight.h,sha256=PzZhVa9DiT8GUB5_s5gXRBoYR9RLPq4Uy6QA7RRWOpo,14382
|
| 665 |
+
pyarrow/src/arrow/python/gdb.cc,sha256=Z0WLBYHWBzc4uExNG7nWJeRnUBAVSqo_DFpKYry0aAE,22667
|
| 666 |
+
pyarrow/src/arrow/python/gdb.h,sha256=H-qvM-nU8a_3Z5tk8PvppTwQtBMSZhQKQIVgRAsRfFg,972
|
| 667 |
+
pyarrow/src/arrow/python/helpers.cc,sha256=zrrUI56RGrZ8VBzR2dJFJoRq7L6chlX7289HK7tjoOA,16627
|
| 668 |
+
pyarrow/src/arrow/python/helpers.h,sha256=jVNFEbvJXmCceJti3J3-MnZkNlJoynQNq334tt29bbs,5489
|
| 669 |
+
pyarrow/src/arrow/python/inference.cc,sha256=Gm-lOXDzqcbef6gdgCQa5eXPuh8uvYqz9iUjKS2_yO4,24350
|
| 670 |
+
pyarrow/src/arrow/python/inference.h,sha256=FUFvB4Zy7V-tueXdmbDcqTeLK4xj5GZEeRW5yhiJlsU,2038
|
| 671 |
+
pyarrow/src/arrow/python/io.cc,sha256=ZARQCv4WQmHDQrA1dlNZt6mJuPhyK8wNuGm7zoL6V78,11936
|
| 672 |
+
pyarrow/src/arrow/python/io.h,sha256=4jGnodpSUlnVqAVh9fWId7H4WldlLPkXyroABpdaW6w,3858
|
| 673 |
+
pyarrow/src/arrow/python/ipc.cc,sha256=3D9iMbOFHlhNXX4432wsfbfjWvDryZWgdA0Ak19V_8Q,4472
|
| 674 |
+
pyarrow/src/arrow/python/ipc.h,sha256=SZbw6jCCqLiLNCY3k632GmwHeD_r_xrDS0dhqV49VhY,2259
|
| 675 |
+
pyarrow/src/arrow/python/iterators.h,sha256=Ugfm3JvetAH0l-oAjjpZfhrUBqRimVMaw4-xusvqLSg,7327
|
| 676 |
+
pyarrow/src/arrow/python/numpy_convert.cc,sha256=166BIW7zVTRMKogxLUuhV4e5jOevmonvRtXDydNujgc,21194
|
| 677 |
+
pyarrow/src/arrow/python/numpy_convert.h,sha256=y13eHwfe1lJKzadoTr2-GyX6xPsE6Z7FN31s7PN-2Rk,4870
|
| 678 |
+
pyarrow/src/arrow/python/numpy_init.cc,sha256=cJKOH946T7VCcB-gVIoGgfbWTrbj3FPkI4TgnsLTf7s,1178
|
| 679 |
+
pyarrow/src/arrow/python/numpy_init.h,sha256=FniVHP7W2YBlenoMYhQrODvoqqvDMSls2JANGtNPQts,999
|
| 680 |
+
pyarrow/src/arrow/python/numpy_internal.h,sha256=F9p-hzTKCIhRqgtZbsoyPox7RR85YcEw6FYkFF8KqfM,5314
|
| 681 |
+
pyarrow/src/arrow/python/numpy_interop.h,sha256=rI6ek8JTOYtjo7gEADSDBS6QuAOHa2A0YQPZ2GeypFw,3418
|
| 682 |
+
pyarrow/src/arrow/python/numpy_to_arrow.cc,sha256=55-VSQlg10MAZTR0G3I7maErexO8-FDk_27SYdvVlk8,30238
|
| 683 |
+
pyarrow/src/arrow/python/numpy_to_arrow.h,sha256=z9KapsuoOSpWILPt9bea7GR4BL6AQ28T6DUO0mSkh3k,2760
|
| 684 |
+
pyarrow/src/arrow/python/parquet_encryption.cc,sha256=RNupwaySaVHKX_iCYOPK0yJWkTUpqbrpbCW2duWJ3kU,3567
|
| 685 |
+
pyarrow/src/arrow/python/parquet_encryption.h,sha256=Mc8tZ8gIfkH0AckNiIOt6hesP_MVKeKhcytT24ZOLdQ,4861
|
| 686 |
+
pyarrow/src/arrow/python/pch.h,sha256=vkbgStQjq820YeHlXBPdzQ-W9LyzJrTGfMBpnMMqahk,1129
|
| 687 |
+
pyarrow/src/arrow/python/platform.h,sha256=XYS5IqiMUejxN2COzu60Zs8b_wAaGTBw4M-zKVqqs5U,1422
|
| 688 |
+
pyarrow/src/arrow/python/pyarrow.cc,sha256=Pul4lmF7n5Q9cSzgBSvPArWfZY_qDyAq1a_tyMIQGRA,3677
|
| 689 |
+
pyarrow/src/arrow/python/pyarrow.h,sha256=TK3BtD9n3QKOQ9dX3LXbQc0hu9alWcufV0O93iQW7B0,2761
|
| 690 |
+
pyarrow/src/arrow/python/pyarrow_api.h,sha256=7l0G4-_m9yALYoifsY8Z6qh3HHD0PgkpVSgCn_JaGU4,867
|
| 691 |
+
pyarrow/src/arrow/python/pyarrow_lib.h,sha256=-70_Ckj3_0ImlzaXSJOE_d3w9pGM66lXiGPyln9c96Y,863
|
| 692 |
+
pyarrow/src/arrow/python/python_test.cc,sha256=Jg35rRR7BtXOS1012RFOdLViFlVC3zlXV--w8aEzf8I,32397
|
| 693 |
+
pyarrow/src/arrow/python/python_test.h,sha256=ea32mM20uHySlygi9MtVxr26O-ydTZHCUQIlxaIMjT4,1195
|
| 694 |
+
pyarrow/src/arrow/python/python_to_arrow.cc,sha256=Ia4vNdbiZ7v5okvBKHmKmrXba7m5jWqkoakNVLSjJeA,47535
|
| 695 |
+
pyarrow/src/arrow/python/python_to_arrow.h,sha256=BoVytf6P7PBYXyznchElKZSFvEsFyimB-tLFdw0AUNo,2521
|
| 696 |
+
pyarrow/src/arrow/python/serialize.cc,sha256=FOAsdyfRETe_bCSxC1vc3-oq9Rs9SsU4kDQFTwrdvQM,32667
|
| 697 |
+
pyarrow/src/arrow/python/serialize.h,sha256=HVBhIKgc7A4YOmwYfjE2Hqj1Yxl9suCJb940KxrVcrs,4630
|
| 698 |
+
pyarrow/src/arrow/python/type_traits.h,sha256=B_NsRT_hZG8D91sTcihJyKF5SrslPcFmj12QfbpHuLI,10093
|
| 699 |
+
pyarrow/src/arrow/python/udf.cc,sha256=69DuHRjV6rUAbZqkWEKEUG3ODuHg9ym52lnH7A_lM5Y,29814
|
| 700 |
+
pyarrow/src/arrow/python/udf.h,sha256=de3R8PhNJO5lT9oCqRxe8e2_SE3jBpHOkwbNqCrlgjQ,3104
|
| 701 |
+
pyarrow/src/arrow/python/vendored/CMakeLists.txt,sha256=02XvDJAdKiajCEBOmnMKBpmzbRU7FPkNdlNXtw0-A24,837
|
| 702 |
+
pyarrow/src/arrow/python/vendored/pythoncapi_compat.h,sha256=bzMnlHTCfjk5DQRIxwytunYh5aQxU3iSElaaDyNnAY8,40900
|
| 703 |
+
pyarrow/src/arrow/python/visibility.h,sha256=hwJw5sGrWJckQkNaAuLe4Tf-VDjQbXknyzNOVgZI3FI,1381
|
| 704 |
+
pyarrow/substrait.py,sha256=yOMgCb-A5XW9t2DKgutRydDHpFvQkiNNq6ZIu0hIUB8,1230
|
| 705 |
+
pyarrow/table.pxi,sha256=TaThZeSXhoO_hAqGpxEFBVXfkeuea-ULMfdaVzzC7aU,205518
|
| 706 |
+
pyarrow/tensor.pxi,sha256=CXlMcTRWh_n_FTzIIx8SpHCmYlV0IBA69toQ-3Evs5o,42071
|
| 707 |
+
pyarrow/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 708 |
+
pyarrow/tests/__pycache__/__init__.cpython-312.pyc,,
|
| 709 |
+
pyarrow/tests/__pycache__/arrow_16597.cpython-312.pyc,,
|
| 710 |
+
pyarrow/tests/__pycache__/arrow_39313.cpython-312.pyc,,
|
| 711 |
+
pyarrow/tests/__pycache__/arrow_7980.cpython-312.pyc,,
|
| 712 |
+
pyarrow/tests/__pycache__/conftest.cpython-312.pyc,,
|
| 713 |
+
pyarrow/tests/__pycache__/pandas_examples.cpython-312.pyc,,
|
| 714 |
+
pyarrow/tests/__pycache__/pandas_threaded_import.cpython-312.pyc,,
|
| 715 |
+
pyarrow/tests/__pycache__/read_record_batch.cpython-312.pyc,,
|
| 716 |
+
pyarrow/tests/__pycache__/strategies.cpython-312.pyc,,
|
| 717 |
+
pyarrow/tests/__pycache__/test_acero.cpython-312.pyc,,
|
| 718 |
+
pyarrow/tests/__pycache__/test_adhoc_memory_leak.cpython-312.pyc,,
|
| 719 |
+
pyarrow/tests/__pycache__/test_array.cpython-312.pyc,,
|
| 720 |
+
pyarrow/tests/__pycache__/test_builder.cpython-312.pyc,,
|
| 721 |
+
pyarrow/tests/__pycache__/test_cffi.cpython-312.pyc,,
|
| 722 |
+
pyarrow/tests/__pycache__/test_compute.cpython-312.pyc,,
|
| 723 |
+
pyarrow/tests/__pycache__/test_convert_builtin.cpython-312.pyc,,
|
| 724 |
+
pyarrow/tests/__pycache__/test_cpp_internals.cpython-312.pyc,,
|
| 725 |
+
pyarrow/tests/__pycache__/test_csv.cpython-312.pyc,,
|
| 726 |
+
pyarrow/tests/__pycache__/test_cuda.cpython-312.pyc,,
|
| 727 |
+
pyarrow/tests/__pycache__/test_cuda_numba_interop.cpython-312.pyc,,
|
| 728 |
+
pyarrow/tests/__pycache__/test_cython.cpython-312.pyc,,
|
| 729 |
+
pyarrow/tests/__pycache__/test_dataset.cpython-312.pyc,,
|
| 730 |
+
pyarrow/tests/__pycache__/test_dataset_encryption.cpython-312.pyc,,
|
| 731 |
+
pyarrow/tests/__pycache__/test_deprecations.cpython-312.pyc,,
|
| 732 |
+
pyarrow/tests/__pycache__/test_device.cpython-312.pyc,,
|
| 733 |
+
pyarrow/tests/__pycache__/test_dlpack.cpython-312.pyc,,
|
| 734 |
+
pyarrow/tests/__pycache__/test_exec_plan.cpython-312.pyc,,
|
| 735 |
+
pyarrow/tests/__pycache__/test_extension_type.cpython-312.pyc,,
|
| 736 |
+
pyarrow/tests/__pycache__/test_feather.cpython-312.pyc,,
|
| 737 |
+
pyarrow/tests/__pycache__/test_flight.cpython-312.pyc,,
|
| 738 |
+
pyarrow/tests/__pycache__/test_flight_async.cpython-312.pyc,,
|
| 739 |
+
pyarrow/tests/__pycache__/test_fs.cpython-312.pyc,,
|
| 740 |
+
pyarrow/tests/__pycache__/test_gandiva.cpython-312.pyc,,
|
| 741 |
+
pyarrow/tests/__pycache__/test_gdb.cpython-312.pyc,,
|
| 742 |
+
pyarrow/tests/__pycache__/test_io.cpython-312.pyc,,
|
| 743 |
+
pyarrow/tests/__pycache__/test_ipc.cpython-312.pyc,,
|
| 744 |
+
pyarrow/tests/__pycache__/test_json.cpython-312.pyc,,
|
| 745 |
+
pyarrow/tests/__pycache__/test_jvm.cpython-312.pyc,,
|
| 746 |
+
pyarrow/tests/__pycache__/test_memory.cpython-312.pyc,,
|
| 747 |
+
pyarrow/tests/__pycache__/test_misc.cpython-312.pyc,,
|
| 748 |
+
pyarrow/tests/__pycache__/test_orc.cpython-312.pyc,,
|
| 749 |
+
pyarrow/tests/__pycache__/test_pandas.cpython-312.pyc,,
|
| 750 |
+
pyarrow/tests/__pycache__/test_scalars.cpython-312.pyc,,
|
| 751 |
+
pyarrow/tests/__pycache__/test_schema.cpython-312.pyc,,
|
| 752 |
+
pyarrow/tests/__pycache__/test_sparse_tensor.cpython-312.pyc,,
|
| 753 |
+
pyarrow/tests/__pycache__/test_strategies.cpython-312.pyc,,
|
| 754 |
+
pyarrow/tests/__pycache__/test_substrait.cpython-312.pyc,,
|
| 755 |
+
pyarrow/tests/__pycache__/test_table.cpython-312.pyc,,
|
| 756 |
+
pyarrow/tests/__pycache__/test_tensor.cpython-312.pyc,,
|
| 757 |
+
pyarrow/tests/__pycache__/test_types.cpython-312.pyc,,
|
| 758 |
+
pyarrow/tests/__pycache__/test_udf.cpython-312.pyc,,
|
| 759 |
+
pyarrow/tests/__pycache__/test_util.cpython-312.pyc,,
|
| 760 |
+
pyarrow/tests/__pycache__/test_without_numpy.cpython-312.pyc,,
|
| 761 |
+
pyarrow/tests/__pycache__/util.cpython-312.pyc,,
|
| 762 |
+
pyarrow/tests/__pycache__/wsgi_examples.cpython-312.pyc,,
|
| 763 |
+
pyarrow/tests/arrow_16597.py,sha256=DNb41h9E3ITGvAJJu86i5SfsKrwstQJ0E5gT_bpTS_k,1354
|
| 764 |
+
pyarrow/tests/arrow_39313.py,sha256=0pyBixoX38fldTPO1Vwshi_H0XBACrz8esYoL4o71KI,1431
|
| 765 |
+
pyarrow/tests/arrow_7980.py,sha256=tZKb_tRLfxHaosDk9Yu2GLEsJjMaruXD5CKhbK_6Hq8,1094
|
| 766 |
+
pyarrow/tests/bound_function_visit_strings.pyx,sha256=vDEFoNYR8BWNkCntKDuBUT8sXNRBex_5G2bFKogr1Bs,2026
|
| 767 |
+
pyarrow/tests/conftest.py,sha256=JvdZgiYNJNeE6yLVyRFOoGjVbfrl4c-kAlEPzBIiGM8,10500
|
| 768 |
+
pyarrow/tests/data/feather/v0.17.0.version.2-compression.lz4.feather,sha256=qzcc7Bo4OWBXYsyyKdDJwdTRstMqB1Zz0GiGYtndBnE,594
|
| 769 |
+
pyarrow/tests/data/orc/README.md,sha256=_4X5XszZqQtWAVEz5N1Va4VyyayGQgNDKrcdMX2Ib4s,932
|
| 770 |
+
pyarrow/tests/data/orc/TestOrcFile.emptyFile.jsn.gz,sha256=xLjAXd-3scx3DCyeAsmxTO3dv1cj9KRvYopKe5rQNiI,50
|
| 771 |
+
pyarrow/tests/data/orc/TestOrcFile.emptyFile.orc,sha256=zj0579dQBXhF7JuB-ZphkmQ81ybLo6Ca4zPV4HXoImY,523
|
| 772 |
+
pyarrow/tests/data/orc/TestOrcFile.test1.jsn.gz,sha256=kLxmwMVHtfzpHqBztFjfY_PTCloaXpfHq9DDDszb8Wk,323
|
| 773 |
+
pyarrow/tests/data/orc/TestOrcFile.test1.orc,sha256=A4JxgMCffTkz9-XT1QT1tg2TlYZRRz1g7iIMmqzovqA,1711
|
| 774 |
+
pyarrow/tests/data/orc/TestOrcFile.testDate1900.jsn.gz,sha256=oWf7eBR3ZtOA91OTvdeQJYos1an56msGsJwhGOan3lo,182453
|
| 775 |
+
pyarrow/tests/data/orc/TestOrcFile.testDate1900.orc,sha256=nYsVYhUGGOL80gHj37si_vX0dh8QhIMSeU4sHjNideM,30941
|
| 776 |
+
pyarrow/tests/data/orc/decimal.jsn.gz,sha256=kTEyYdPDAASFUX8Niyry5mRDF-Y-LsrhSAjbu453mvA,19313
|
| 777 |
+
pyarrow/tests/data/orc/decimal.orc,sha256=W5cV2WdLy4OrSTnd_Qv5ntphG4TcB-MyG4UpRFwSxJY,16337
|
| 778 |
+
pyarrow/tests/data/parquet/v0.7.1.all-named-index.parquet,sha256=YPGUXtw-TsOPbiNDieZHobNp3or7nHhAxJGjmIDAyqE,3948
|
| 779 |
+
pyarrow/tests/data/parquet/v0.7.1.column-metadata-handling.parquet,sha256=7sebZgpfdcP37QksT3FhDL6vOA9gR6GBaq44NCVtOYw,2012
|
| 780 |
+
pyarrow/tests/data/parquet/v0.7.1.parquet,sha256=vmdzhIzpBbmRkq3Gjww7KqurfSFNtQuSpSIDeQVmqys,4372
|
| 781 |
+
pyarrow/tests/data/parquet/v0.7.1.some-named-index.parquet,sha256=VGgSjqihCRtdBxlUcfP5s3BSR7aUQKukW-bGgJLf_HY,4008
|
| 782 |
+
pyarrow/tests/extensions.pyx,sha256=05S652zNGxwMFwuyMbP0RP4VNJLSMlzvoxH8iYIvSNk,3054
|
| 783 |
+
pyarrow/tests/interchange/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
| 784 |
+
pyarrow/tests/interchange/__pycache__/__init__.cpython-312.pyc,,
|
| 785 |
+
pyarrow/tests/interchange/__pycache__/test_conversion.cpython-312.pyc,,
|
| 786 |
+
pyarrow/tests/interchange/__pycache__/test_interchange_spec.cpython-312.pyc,,
|
| 787 |
+
pyarrow/tests/interchange/test_conversion.py,sha256=23e5tpKBL-ekA5uWpM6-f6HVPF937Hnzfune0Ty9moo,18609
|
| 788 |
+
pyarrow/tests/interchange/test_interchange_spec.py,sha256=5hwwCG6f7yf72PfUG0iLIk2bARsZU5EJeRjDxSQrkKI,9320
|
| 789 |
+
pyarrow/tests/pandas_examples.py,sha256=RFKCW-Rn0Qz-ncd4pZWWSeUoPq63kemE3lFiVdv2dBs,5115
|
| 790 |
+
pyarrow/tests/pandas_threaded_import.py,sha256=b_ubLr5dj4dWJht9552qc3S3Yt3fQQgaUH6208oZvHg,1429
|
| 791 |
+
pyarrow/tests/parquet/__init__.py,sha256=dKsXU9M-sJyz2wYIuqwsKM9meOlK_qY6qhmQzIvEpCE,931
|
| 792 |
+
pyarrow/tests/parquet/__pycache__/__init__.cpython-312.pyc,,
|
| 793 |
+
pyarrow/tests/parquet/__pycache__/common.cpython-312.pyc,,
|
| 794 |
+
pyarrow/tests/parquet/__pycache__/conftest.cpython-312.pyc,,
|
| 795 |
+
pyarrow/tests/parquet/__pycache__/encryption.cpython-312.pyc,,
|
| 796 |
+
pyarrow/tests/parquet/__pycache__/test_basic.cpython-312.pyc,,
|
| 797 |
+
pyarrow/tests/parquet/__pycache__/test_compliant_nested_type.cpython-312.pyc,,
|
| 798 |
+
pyarrow/tests/parquet/__pycache__/test_data_types.cpython-312.pyc,,
|
| 799 |
+
pyarrow/tests/parquet/__pycache__/test_dataset.cpython-312.pyc,,
|
| 800 |
+
pyarrow/tests/parquet/__pycache__/test_datetime.cpython-312.pyc,,
|
| 801 |
+
pyarrow/tests/parquet/__pycache__/test_encryption.cpython-312.pyc,,
|
| 802 |
+
pyarrow/tests/parquet/__pycache__/test_metadata.cpython-312.pyc,,
|
| 803 |
+
pyarrow/tests/parquet/__pycache__/test_pandas.cpython-312.pyc,,
|
| 804 |
+
pyarrow/tests/parquet/__pycache__/test_parquet_file.cpython-312.pyc,,
|
| 805 |
+
pyarrow/tests/parquet/__pycache__/test_parquet_writer.cpython-312.pyc,,
|
| 806 |
+
pyarrow/tests/parquet/common.py,sha256=-kckaOVj9P9BvL1vlvyHlsPUtysBoAYVL98Nwc9wmGo,5894
|
| 807 |
+
pyarrow/tests/parquet/conftest.py,sha256=mJNQal0VYsGFhHglhSt-F9CYHy_i8hB8MXaq3SxFBvk,3082
|
| 808 |
+
pyarrow/tests/parquet/encryption.py,sha256=Oi3QbixApvWGoGImiW7PAjR28cTQqlRXZKMI3O7E4UY,2521
|
| 809 |
+
pyarrow/tests/parquet/test_basic.py,sha256=SdLPuZ02NaBUEtpr18SzA90I7pK-WRMM1r3ApbQI5ps,36492
|
| 810 |
+
pyarrow/tests/parquet/test_compliant_nested_type.py,sha256=Lz7tCPrSpv9GrKPMS-eu1LehsCTwz7KdUdCYJ8tF8dE,3901
|
| 811 |
+
pyarrow/tests/parquet/test_data_types.py,sha256=YIHx23xY5GLuJ2BhVb4OarHs1K29oRbQE-igfzMESoc,16080
|
| 812 |
+
pyarrow/tests/parquet/test_dataset.py,sha256=UhjjQGO2kki9Q50zush0VGU3OMXHZncL_3uEQse4Lx8,42218
|
| 813 |
+
pyarrow/tests/parquet/test_datetime.py,sha256=A3ZaRj88u0IrlhCNp2KY_A8txrb7y2pKPgEVvI7e7bU,16398
|
| 814 |
+
pyarrow/tests/parquet/test_encryption.py,sha256=XMVlIcEurlzcPN2rlaNqbdZbGhF9hjz5ZhWY5Bz4Fxo,22099
|
| 815 |
+
pyarrow/tests/parquet/test_metadata.py,sha256=0sbEUEEal4dEczJHk77KzCk3q9P_1JD61Ayw6HBXFzo,27158
|
| 816 |
+
pyarrow/tests/parquet/test_pandas.py,sha256=dXXcaRBZXIt2HervJLC1gCxDLlhxu6MM_M3gxcaV1Rw,22821
|
| 817 |
+
pyarrow/tests/parquet/test_parquet_file.py,sha256=xm5ZUCf5xmpKh7s5nTIrEiis53mfv2NqZWVRiYOTfAg,9909
|
| 818 |
+
pyarrow/tests/parquet/test_parquet_writer.py,sha256=xwedRwRYtw5n_OMhLPGnJurcvlo4ooROsSalYL-ZVCM,11733
|
| 819 |
+
pyarrow/tests/pyarrow_cython_example.pyx,sha256=fx6zT1bUb2-cDnwKoG71K3ozpmrNJ53kKQHHJTExGz8,2115
|
| 820 |
+
pyarrow/tests/read_record_batch.py,sha256=9Y0X0h03hUXwOKZz7jBBZSwgIrjxT-FkWIw6pu38Frc,953
|
| 821 |
+
pyarrow/tests/strategies.py,sha256=ksEfxpT9Bn89V5pj9Xt2WgIAdDhqTMAqfrONozhBXSs,14226
|
| 822 |
+
pyarrow/tests/test_acero.py,sha256=jgSkIAGhrVffShaD0ZAm50sY-f4u9jfjCimK8ezUbbA,15003
|
| 823 |
+
pyarrow/tests/test_adhoc_memory_leak.py,sha256=Pn4PcIbOBRtSJuz9Ar_ocubco0QOMZ-eAE9Bs7Wp4mA,1453
|
| 824 |
+
pyarrow/tests/test_array.py,sha256=rBp6X77MyM1H7RZjSqqANMqfdV_JoeVOH24g6tI0dF8,140539
|
| 825 |
+
pyarrow/tests/test_builder.py,sha256=zNEcslLwyb40oYbG7lInQcI81QHMKDOzi1zthw1Je7c,2803
|
| 826 |
+
pyarrow/tests/test_cffi.py,sha256=Fbs1dFCxdnvXYLgO5oaxm_h8KV3vefE9jc3nI1JZNxw,26385
|
| 827 |
+
pyarrow/tests/test_compute.py,sha256=F8E03IdPEhGBMseLb2OsRt_zb90DFeIBj-6OQ4-9Wq8,143316
|
| 828 |
+
pyarrow/tests/test_convert_builtin.py,sha256=Hh1Ti08oBBPXfEQ-196rH_LjHYGvuzyxVDu54lKsGm0,80992
|
| 829 |
+
pyarrow/tests/test_cpp_internals.py,sha256=Xg4CUB6zohQkcYG64Lj_Uf2BscI27Vv0JC_CqNkDQuE,2006
|
| 830 |
+
pyarrow/tests/test_csv.py,sha256=GKNYAGis5TsiDJMIu0L6bH2_cIOpWDviRwxCfPN9Pv8,77313
|
| 831 |
+
pyarrow/tests/test_cuda.py,sha256=qCbVbYOokzpEef-e0_Fus36xQR9Y---9MLCYquI3shE,36163
|
| 832 |
+
pyarrow/tests/test_cuda_numba_interop.py,sha256=iHP_FE4sWbsKwNNXRcYnVozp3Wd1o0Mg6BDymx710G4,8794
|
| 833 |
+
pyarrow/tests/test_cython.py,sha256=IJVELKXBD89xoCcxscMfUpwvkk9SL_kNT4cccLjDww4,7115
|
| 834 |
+
pyarrow/tests/test_dataset.py,sha256=hvVGYRUpqk42DQvpJ4AHrNwkH-zgw4Gzj-npd1TqtkU,212891
|
| 835 |
+
pyarrow/tests/test_dataset_encryption.py,sha256=mA8ipIlOBSA4eKc6xnRz-IFyM7fu_kIQ5FV2r4vE2rs,7593
|
| 836 |
+
pyarrow/tests/test_deprecations.py,sha256=W_rneq4jC6zqCNoGhBDf1F28Q-0LHI7YKLgtsbV6LHM,891
|
| 837 |
+
pyarrow/tests/test_device.py,sha256=qe9Wiwo-XVazt9pdxyqQJUz6fNR0jTs9CHiyaoppNA4,2550
|
| 838 |
+
pyarrow/tests/test_dlpack.py,sha256=kknsGN0BsmfALJeb8F9Wr4--3rZOaqkZKQwLTjCwgpE,4968
|
| 839 |
+
pyarrow/tests/test_exec_plan.py,sha256=pjOkSaWeqjN6celKxUEH3tBGXLh8kKbmSSsvKOWsbQQ,10096
|
| 840 |
+
pyarrow/tests/test_extension_type.py,sha256=DnlYadsbh0LniL9szlrWIXR-OOTQKCp3f-v2iyBRWlc,67422
|
| 841 |
+
pyarrow/tests/test_feather.py,sha256=UciZ-CHwiQcXZkJDNfHElEzcDjv10yRzLAg8kar35Xs,25235
|
| 842 |
+
pyarrow/tests/test_flight.py,sha256=IY513fq087F27zUVVV5flCYRangN7N_tQp8VRpu3X80,92326
|
| 843 |
+
pyarrow/tests/test_flight_async.py,sha256=kP2wIrUz1HIbrr4CE0SxSg4Zc56ta3xX6EdibAI2yVM,2848
|
| 844 |
+
pyarrow/tests/test_fs.py,sha256=n-RuiqvfK9zWkmmuhHLSZp3v5pRR1f258YKB6R5DsdI,65418
|
| 845 |
+
pyarrow/tests/test_gandiva.py,sha256=AEf9ln-j5MmIMQ0JTQPhnZwbNh82ynSURsWPaKaNing,15623
|
| 846 |
+
pyarrow/tests/test_gdb.py,sha256=OJzMfZtev3YOKJBm2QxnE-q-9-exy2JLhxpiVhY3T_0,44938
|
| 847 |
+
pyarrow/tests/test_io.py,sha256=T9Vdg1rPGjdAp7nd5U9TAc3mN0N4oWvlG-F8TKmMVS4,63768
|
| 848 |
+
pyarrow/tests/test_ipc.py,sha256=JPW2Q3pXKi8Y4adbCkpGZeNjdP8C6Ot1TqapinKeO_Q,42746
|
| 849 |
+
pyarrow/tests/test_json.py,sha256=DwLaNDKlr_HosnT_hDJW2lB3pBhctkVzJ25EezPa23A,13236
|
| 850 |
+
pyarrow/tests/test_jvm.py,sha256=pIrHUgnDdmwDoLgM2TFvdgfcEJTGtBGsPgzYIRU6jYY,15507
|
| 851 |
+
pyarrow/tests/test_memory.py,sha256=3ZJrdf2t9joaozoXolwY4425H80x1smR3LXLbKpFUCY,8866
|
| 852 |
+
pyarrow/tests/test_misc.py,sha256=A4_0gQ7VisziNelWa78loDsWQ79Y6_Z5XSM7R1IzJA8,7325
|
| 853 |
+
pyarrow/tests/test_orc.py,sha256=tihT87eP8MF24CDH3FMCH7vFd1Iq8i8kr7H8_UjRgQA,21184
|
| 854 |
+
pyarrow/tests/test_pandas.py,sha256=nCM-F3Kp_2RZjREq76tQSYQJcUZDmo5O7e84odoTEjs,192049
|
| 855 |
+
pyarrow/tests/test_scalars.py,sha256=cKsl6QSB68aKTcHRI_sVXXonA-OgIOrkGjW3iAEIDT4,27654
|
| 856 |
+
pyarrow/tests/test_schema.py,sha256=MiwSK5EOY5UKAydoGqjAbZQNFlv5oRI4givLYHV52EI,21871
|
| 857 |
+
pyarrow/tests/test_sparse_tensor.py,sha256=6Hp-X6PLqcUzTZCRSB-TyaAWR7ZyWf5YsWuZgixmd64,17500
|
| 858 |
+
pyarrow/tests/test_strategies.py,sha256=HEL8T94h8VyukGKNRVAW_RyQ3m36REc2P4q2BQZ_PfY,1811
|
| 859 |
+
pyarrow/tests/test_substrait.py,sha256=rsLPNlDPDAxZ1OIu-LAINSD4q_UZJhOvtTzPfXjrWM8,32223
|
| 860 |
+
pyarrow/tests/test_table.py,sha256=RObVx2lqIFd36GwAyPenXXUxVwUagGPmImij9-cYFqU,121752
|
| 861 |
+
pyarrow/tests/test_tensor.py,sha256=LYSEYGUjtdnsbL0WAir9jFindo-r0bLySiDA1uAXL8E,6643
|
| 862 |
+
pyarrow/tests/test_types.py,sha256=Vc8vp_9xG-o1PFLpALrZTi6HcU6eDqWd7CYmTOElpAA,43838
|
| 863 |
+
pyarrow/tests/test_udf.py,sha256=WA9E5skUqh7uMr_zH3rQ11LRx0SK2G3WO8HjVHGWyQY,29792
|
| 864 |
+
pyarrow/tests/test_util.py,sha256=ozTlooHBMOP3nbX5b3dG2aanrXwxXHx1giicm0QQyPM,5030
|
| 865 |
+
pyarrow/tests/test_without_numpy.py,sha256=ysbB-jML318I04ViQT4Ok7iMg1cI-NU8kguPu-FTSl4,1855
|
| 866 |
+
pyarrow/tests/util.py,sha256=YeH8RovBtKY4L1SJqcOOObEZx0Yf6HSpkkq4xJdKL5U,13275
|
| 867 |
+
pyarrow/tests/wsgi_examples.py,sha256=vQIDb5989sRVLsELw-fRHhfX-dE96sTl5J2lEuEKup8,1348
|
| 868 |
+
pyarrow/types.pxi,sha256=JnuyyzuJbxOuu1DFpxm9_wFoRZIYN19AmmKNb1sBoMM,166489
|
| 869 |
+
pyarrow/types.py,sha256=M-fGpHFc-OyTDT_IiG_9l5PO2H7A2iynbiSxk6Zv8bM,7492
|
| 870 |
+
pyarrow/util.py,sha256=ARlwfZFK6sMKGNG2V9HcG0EC0LGHHImB9AMhoWUI4nI,8640
|
| 871 |
+
pyarrow/vendored/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
| 872 |
+
pyarrow/vendored/__pycache__/__init__.cpython-312.pyc,,
|
| 873 |
+
pyarrow/vendored/__pycache__/docscrape.cpython-312.pyc,,
|
| 874 |
+
pyarrow/vendored/__pycache__/version.cpython-312.pyc,,
|
| 875 |
+
pyarrow/vendored/docscrape.py,sha256=phTjwuzoO5hB88QerZk3uGu9c5OrZwjFzI7vEIIbCUQ,22975
|
| 876 |
+
pyarrow/vendored/version.py,sha256=5-Vo4Q3kPJrm1DSGusnMlTxuA8ynI4hAryApBd6MnpQ,14345
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/WHEEL
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Wheel-Version: 1.0
|
| 2 |
+
Generator: setuptools (72.1.0)
|
| 3 |
+
Root-Is-Purelib: false
|
| 4 |
+
Tag: cp312-cp312-manylinux_2_28_x86_64
|
| 5 |
+
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/pyarrow-19.0.1.dist-info/top_level.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
__dummy__
|
| 2 |
+
pyarrow
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/INSTALLER
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
This software is made available under the terms of *either* of the
|
| 2 |
+
licenses found in LICENSE.APACHE2 or LICENSE.MIT. Contributions to are
|
| 3 |
+
made under the terms of *both* these licenses.
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE.APACHE2
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
Apache License
|
| 3 |
+
Version 2.0, January 2004
|
| 4 |
+
http://www.apache.org/licenses/
|
| 5 |
+
|
| 6 |
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
| 7 |
+
|
| 8 |
+
1. Definitions.
|
| 9 |
+
|
| 10 |
+
"License" shall mean the terms and conditions for use, reproduction,
|
| 11 |
+
and distribution as defined by Sections 1 through 9 of this document.
|
| 12 |
+
|
| 13 |
+
"Licensor" shall mean the copyright owner or entity authorized by
|
| 14 |
+
the copyright owner that is granting the License.
|
| 15 |
+
|
| 16 |
+
"Legal Entity" shall mean the union of the acting entity and all
|
| 17 |
+
other entities that control, are controlled by, or are under common
|
| 18 |
+
control with that entity. For the purposes of this definition,
|
| 19 |
+
"control" means (i) the power, direct or indirect, to cause the
|
| 20 |
+
direction or management of such entity, whether by contract or
|
| 21 |
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
| 22 |
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
| 23 |
+
|
| 24 |
+
"You" (or "Your") shall mean an individual or Legal Entity
|
| 25 |
+
exercising permissions granted by this License.
|
| 26 |
+
|
| 27 |
+
"Source" form shall mean the preferred form for making modifications,
|
| 28 |
+
including but not limited to software source code, documentation
|
| 29 |
+
source, and configuration files.
|
| 30 |
+
|
| 31 |
+
"Object" form shall mean any form resulting from mechanical
|
| 32 |
+
transformation or translation of a Source form, including but
|
| 33 |
+
not limited to compiled object code, generated documentation,
|
| 34 |
+
and conversions to other media types.
|
| 35 |
+
|
| 36 |
+
"Work" shall mean the work of authorship, whether in Source or
|
| 37 |
+
Object form, made available under the License, as indicated by a
|
| 38 |
+
copyright notice that is included in or attached to the work
|
| 39 |
+
(an example is provided in the Appendix below).
|
| 40 |
+
|
| 41 |
+
"Derivative Works" shall mean any work, whether in Source or Object
|
| 42 |
+
form, that is based on (or derived from) the Work and for which the
|
| 43 |
+
editorial revisions, annotations, elaborations, or other modifications
|
| 44 |
+
represent, as a whole, an original work of authorship. For the purposes
|
| 45 |
+
of this License, Derivative Works shall not include works that remain
|
| 46 |
+
separable from, or merely link (or bind by name) to the interfaces of,
|
| 47 |
+
the Work and Derivative Works thereof.
|
| 48 |
+
|
| 49 |
+
"Contribution" shall mean any work of authorship, including
|
| 50 |
+
the original version of the Work and any modifications or additions
|
| 51 |
+
to that Work or Derivative Works thereof, that is intentionally
|
| 52 |
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
| 53 |
+
or by an individual or Legal Entity authorized to submit on behalf of
|
| 54 |
+
the copyright owner. For the purposes of this definition, "submitted"
|
| 55 |
+
means any form of electronic, verbal, or written communication sent
|
| 56 |
+
to the Licensor or its representatives, including but not limited to
|
| 57 |
+
communication on electronic mailing lists, source code control systems,
|
| 58 |
+
and issue tracking systems that are managed by, or on behalf of, the
|
| 59 |
+
Licensor for the purpose of discussing and improving the Work, but
|
| 60 |
+
excluding communication that is conspicuously marked or otherwise
|
| 61 |
+
designated in writing by the copyright owner as "Not a Contribution."
|
| 62 |
+
|
| 63 |
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
| 64 |
+
on behalf of whom a Contribution has been received by Licensor and
|
| 65 |
+
subsequently incorporated within the Work.
|
| 66 |
+
|
| 67 |
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
| 68 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 69 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 70 |
+
copyright license to reproduce, prepare Derivative Works of,
|
| 71 |
+
publicly display, publicly perform, sublicense, and distribute the
|
| 72 |
+
Work and such Derivative Works in Source or Object form.
|
| 73 |
+
|
| 74 |
+
3. Grant of Patent License. Subject to the terms and conditions of
|
| 75 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 76 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 77 |
+
(except as stated in this section) patent license to make, have made,
|
| 78 |
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
| 79 |
+
where such license applies only to those patent claims licensable
|
| 80 |
+
by such Contributor that are necessarily infringed by their
|
| 81 |
+
Contribution(s) alone or by combination of their Contribution(s)
|
| 82 |
+
with the Work to which such Contribution(s) was submitted. If You
|
| 83 |
+
institute patent litigation against any entity (including a
|
| 84 |
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
| 85 |
+
or a Contribution incorporated within the Work constitutes direct
|
| 86 |
+
or contributory patent infringement, then any patent licenses
|
| 87 |
+
granted to You under this License for that Work shall terminate
|
| 88 |
+
as of the date such litigation is filed.
|
| 89 |
+
|
| 90 |
+
4. Redistribution. You may reproduce and distribute copies of the
|
| 91 |
+
Work or Derivative Works thereof in any medium, with or without
|
| 92 |
+
modifications, and in Source or Object form, provided that You
|
| 93 |
+
meet the following conditions:
|
| 94 |
+
|
| 95 |
+
(a) You must give any other recipients of the Work or
|
| 96 |
+
Derivative Works a copy of this License; and
|
| 97 |
+
|
| 98 |
+
(b) You must cause any modified files to carry prominent notices
|
| 99 |
+
stating that You changed the files; and
|
| 100 |
+
|
| 101 |
+
(c) You must retain, in the Source form of any Derivative Works
|
| 102 |
+
that You distribute, all copyright, patent, trademark, and
|
| 103 |
+
attribution notices from the Source form of the Work,
|
| 104 |
+
excluding those notices that do not pertain to any part of
|
| 105 |
+
the Derivative Works; and
|
| 106 |
+
|
| 107 |
+
(d) If the Work includes a "NOTICE" text file as part of its
|
| 108 |
+
distribution, then any Derivative Works that You distribute must
|
| 109 |
+
include a readable copy of the attribution notices contained
|
| 110 |
+
within such NOTICE file, excluding those notices that do not
|
| 111 |
+
pertain to any part of the Derivative Works, in at least one
|
| 112 |
+
of the following places: within a NOTICE text file distributed
|
| 113 |
+
as part of the Derivative Works; within the Source form or
|
| 114 |
+
documentation, if provided along with the Derivative Works; or,
|
| 115 |
+
within a display generated by the Derivative Works, if and
|
| 116 |
+
wherever such third-party notices normally appear. The contents
|
| 117 |
+
of the NOTICE file are for informational purposes only and
|
| 118 |
+
do not modify the License. You may add Your own attribution
|
| 119 |
+
notices within Derivative Works that You distribute, alongside
|
| 120 |
+
or as an addendum to the NOTICE text from the Work, provided
|
| 121 |
+
that such additional attribution notices cannot be construed
|
| 122 |
+
as modifying the License.
|
| 123 |
+
|
| 124 |
+
You may add Your own copyright statement to Your modifications and
|
| 125 |
+
may provide additional or different license terms and conditions
|
| 126 |
+
for use, reproduction, or distribution of Your modifications, or
|
| 127 |
+
for any such Derivative Works as a whole, provided Your use,
|
| 128 |
+
reproduction, and distribution of the Work otherwise complies with
|
| 129 |
+
the conditions stated in this License.
|
| 130 |
+
|
| 131 |
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
| 132 |
+
any Contribution intentionally submitted for inclusion in the Work
|
| 133 |
+
by You to the Licensor shall be under the terms and conditions of
|
| 134 |
+
this License, without any additional terms or conditions.
|
| 135 |
+
Notwithstanding the above, nothing herein shall supersede or modify
|
| 136 |
+
the terms of any separate license agreement you may have executed
|
| 137 |
+
with Licensor regarding such Contributions.
|
| 138 |
+
|
| 139 |
+
6. Trademarks. This License does not grant permission to use the trade
|
| 140 |
+
names, trademarks, service marks, or product names of the Licensor,
|
| 141 |
+
except as required for reasonable and customary use in describing the
|
| 142 |
+
origin of the Work and reproducing the content of the NOTICE file.
|
| 143 |
+
|
| 144 |
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
| 145 |
+
agreed to in writing, Licensor provides the Work (and each
|
| 146 |
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
| 147 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
| 148 |
+
implied, including, without limitation, any warranties or conditions
|
| 149 |
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
| 150 |
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
| 151 |
+
appropriateness of using or redistributing the Work and assume any
|
| 152 |
+
risks associated with Your exercise of permissions under this License.
|
| 153 |
+
|
| 154 |
+
8. Limitation of Liability. In no event and under no legal theory,
|
| 155 |
+
whether in tort (including negligence), contract, or otherwise,
|
| 156 |
+
unless required by applicable law (such as deliberate and grossly
|
| 157 |
+
negligent acts) or agreed to in writing, shall any Contributor be
|
| 158 |
+
liable to You for damages, including any direct, indirect, special,
|
| 159 |
+
incidental, or consequential damages of any character arising as a
|
| 160 |
+
result of this License or out of the use or inability to use the
|
| 161 |
+
Work (including but not limited to damages for loss of goodwill,
|
| 162 |
+
work stoppage, computer failure or malfunction, or any and all
|
| 163 |
+
other commercial damages or losses), even if such Contributor
|
| 164 |
+
has been advised of the possibility of such damages.
|
| 165 |
+
|
| 166 |
+
9. Accepting Warranty or Additional Liability. While redistributing
|
| 167 |
+
the Work or Derivative Works thereof, You may choose to offer,
|
| 168 |
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
| 169 |
+
or other liability obligations and/or rights consistent with this
|
| 170 |
+
License. However, in accepting such obligations, You may act only
|
| 171 |
+
on Your own behalf and on Your sole responsibility, not on behalf
|
| 172 |
+
of any other Contributor, and only if You agree to indemnify,
|
| 173 |
+
defend, and hold each Contributor harmless for any liability
|
| 174 |
+
incurred by, or claims asserted against, such Contributor by reason
|
| 175 |
+
of your accepting any such warranty or additional liability.
|
| 176 |
+
|
| 177 |
+
END OF TERMS AND CONDITIONS
|
| 178 |
+
|
| 179 |
+
APPENDIX: How to apply the Apache License to your work.
|
| 180 |
+
|
| 181 |
+
To apply the Apache License to your work, attach the following
|
| 182 |
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
| 183 |
+
replaced with your own identifying information. (Don't include
|
| 184 |
+
the brackets!) The text should be enclosed in the appropriate
|
| 185 |
+
comment syntax for the file format. We also recommend that a
|
| 186 |
+
file or class name and description of purpose be included on the
|
| 187 |
+
same "printed page" as the copyright notice for easier
|
| 188 |
+
identification within third-party archives.
|
| 189 |
+
|
| 190 |
+
Copyright [yyyy] [name of copyright owner]
|
| 191 |
+
|
| 192 |
+
Licensed under the Apache License, Version 2.0 (the "License");
|
| 193 |
+
you may not use this file except in compliance with the License.
|
| 194 |
+
You may obtain a copy of the License at
|
| 195 |
+
|
| 196 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
| 197 |
+
|
| 198 |
+
Unless required by applicable law or agreed to in writing, software
|
| 199 |
+
distributed under the License is distributed on an "AS IS" BASIS,
|
| 200 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 201 |
+
See the License for the specific language governing permissions and
|
| 202 |
+
limitations under the License.
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/LICENSE.MIT
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
The MIT License (MIT)
|
| 2 |
+
|
| 3 |
+
Permission is hereby granted, free of charge, to any person obtaining
|
| 4 |
+
a copy of this software and associated documentation files (the
|
| 5 |
+
"Software"), to deal in the Software without restriction, including
|
| 6 |
+
without limitation the rights to use, copy, modify, merge, publish,
|
| 7 |
+
distribute, sublicense, and/or sell copies of the Software, and to
|
| 8 |
+
permit persons to whom the Software is furnished to do so, subject to
|
| 9 |
+
the following conditions:
|
| 10 |
+
|
| 11 |
+
The above copyright notice and this permission notice shall be
|
| 12 |
+
included in all copies or substantial portions of the Software.
|
| 13 |
+
|
| 14 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 15 |
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 16 |
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
| 17 |
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
| 18 |
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
| 19 |
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
| 20 |
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/METADATA
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Metadata-Version: 2.1
|
| 2 |
+
Name: sniffio
|
| 3 |
+
Version: 1.3.1
|
| 4 |
+
Summary: Sniff out which async library your code is running under
|
| 5 |
+
Author-email: "Nathaniel J. Smith" <njs@pobox.com>
|
| 6 |
+
License: MIT OR Apache-2.0
|
| 7 |
+
Project-URL: Homepage, https://github.com/python-trio/sniffio
|
| 8 |
+
Project-URL: Documentation, https://sniffio.readthedocs.io/
|
| 9 |
+
Project-URL: Changelog, https://sniffio.readthedocs.io/en/latest/history.html
|
| 10 |
+
Keywords: async,trio,asyncio
|
| 11 |
+
Classifier: License :: OSI Approved :: MIT License
|
| 12 |
+
Classifier: License :: OSI Approved :: Apache Software License
|
| 13 |
+
Classifier: Framework :: Trio
|
| 14 |
+
Classifier: Framework :: AsyncIO
|
| 15 |
+
Classifier: Operating System :: POSIX :: Linux
|
| 16 |
+
Classifier: Operating System :: MacOS :: MacOS X
|
| 17 |
+
Classifier: Operating System :: Microsoft :: Windows
|
| 18 |
+
Classifier: Programming Language :: Python :: 3 :: Only
|
| 19 |
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
| 20 |
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
| 21 |
+
Classifier: Intended Audience :: Developers
|
| 22 |
+
Classifier: Development Status :: 5 - Production/Stable
|
| 23 |
+
Requires-Python: >=3.7
|
| 24 |
+
Description-Content-Type: text/x-rst
|
| 25 |
+
License-File: LICENSE
|
| 26 |
+
License-File: LICENSE.APACHE2
|
| 27 |
+
License-File: LICENSE.MIT
|
| 28 |
+
|
| 29 |
+
.. image:: https://img.shields.io/badge/chat-join%20now-blue.svg
|
| 30 |
+
:target: https://gitter.im/python-trio/general
|
| 31 |
+
:alt: Join chatroom
|
| 32 |
+
|
| 33 |
+
.. image:: https://img.shields.io/badge/docs-read%20now-blue.svg
|
| 34 |
+
:target: https://sniffio.readthedocs.io/en/latest/?badge=latest
|
| 35 |
+
:alt: Documentation Status
|
| 36 |
+
|
| 37 |
+
.. image:: https://img.shields.io/pypi/v/sniffio.svg
|
| 38 |
+
:target: https://pypi.org/project/sniffio
|
| 39 |
+
:alt: Latest PyPi version
|
| 40 |
+
|
| 41 |
+
.. image:: https://img.shields.io/conda/vn/conda-forge/sniffio.svg
|
| 42 |
+
:target: https://anaconda.org/conda-forge/sniffio
|
| 43 |
+
:alt: Latest conda-forge version
|
| 44 |
+
|
| 45 |
+
.. image:: https://travis-ci.org/python-trio/sniffio.svg?branch=master
|
| 46 |
+
:target: https://travis-ci.org/python-trio/sniffio
|
| 47 |
+
:alt: Automated test status
|
| 48 |
+
|
| 49 |
+
.. image:: https://codecov.io/gh/python-trio/sniffio/branch/master/graph/badge.svg
|
| 50 |
+
:target: https://codecov.io/gh/python-trio/sniffio
|
| 51 |
+
:alt: Test coverage
|
| 52 |
+
|
| 53 |
+
=================================================================
|
| 54 |
+
sniffio: Sniff out which async library your code is running under
|
| 55 |
+
=================================================================
|
| 56 |
+
|
| 57 |
+
You're writing a library. You've decided to be ambitious, and support
|
| 58 |
+
multiple async I/O packages, like `Trio
|
| 59 |
+
<https://trio.readthedocs.io>`__, and `asyncio
|
| 60 |
+
<https://docs.python.org/3/library/asyncio.html>`__, and ... You've
|
| 61 |
+
written a bunch of clever code to handle all the differences. But...
|
| 62 |
+
how do you know *which* piece of clever code to run?
|
| 63 |
+
|
| 64 |
+
This is a tiny package whose only purpose is to let you detect which
|
| 65 |
+
async library your code is running under.
|
| 66 |
+
|
| 67 |
+
* Documentation: https://sniffio.readthedocs.io
|
| 68 |
+
|
| 69 |
+
* Bug tracker and source code: https://github.com/python-trio/sniffio
|
| 70 |
+
|
| 71 |
+
* License: MIT or Apache License 2.0, your choice
|
| 72 |
+
|
| 73 |
+
* Contributor guide: https://trio.readthedocs.io/en/latest/contributing.html
|
| 74 |
+
|
| 75 |
+
* Code of conduct: Contributors are requested to follow our `code of
|
| 76 |
+
conduct
|
| 77 |
+
<https://trio.readthedocs.io/en/latest/code-of-conduct.html>`_
|
| 78 |
+
in all project spaces.
|
| 79 |
+
|
| 80 |
+
This library is maintained by the Trio project, as a service to the
|
| 81 |
+
async Python community as a whole.
|
| 82 |
+
|
| 83 |
+
|
| 84 |
+
Quickstart
|
| 85 |
+
----------
|
| 86 |
+
|
| 87 |
+
.. code-block:: python3
|
| 88 |
+
|
| 89 |
+
from sniffio import current_async_library
|
| 90 |
+
import trio
|
| 91 |
+
import asyncio
|
| 92 |
+
|
| 93 |
+
async def print_library():
|
| 94 |
+
library = current_async_library()
|
| 95 |
+
print("This is:", library)
|
| 96 |
+
|
| 97 |
+
# Prints "This is trio"
|
| 98 |
+
trio.run(print_library)
|
| 99 |
+
|
| 100 |
+
# Prints "This is asyncio"
|
| 101 |
+
asyncio.run(print_library())
|
| 102 |
+
|
| 103 |
+
For more details, including how to add support to new async libraries,
|
| 104 |
+
`please peruse our fine manual <https://sniffio.readthedocs.io>`__.
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/RECORD
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
sniffio-1.3.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
| 2 |
+
sniffio-1.3.1.dist-info/LICENSE,sha256=ZSyHhIjRRWNh4Iw_hgf9e6WYkqFBA9Fczk_5PIW1zIs,185
|
| 3 |
+
sniffio-1.3.1.dist-info/LICENSE.APACHE2,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
| 4 |
+
sniffio-1.3.1.dist-info/LICENSE.MIT,sha256=Pm2uVV65J4f8gtHUg1Vnf0VMf2Wus40_nnK_mj2vA0s,1046
|
| 5 |
+
sniffio-1.3.1.dist-info/METADATA,sha256=CzGLVwmO3sz1heYKiJprantcQIbzqapi7_dqHTzuEtk,3875
|
| 6 |
+
sniffio-1.3.1.dist-info/RECORD,,
|
| 7 |
+
sniffio-1.3.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
| 8 |
+
sniffio-1.3.1.dist-info/top_level.txt,sha256=v9UJXGs5CyddCVeAqXkQiWOrpp6Wtx6GeRrPt9-jjHg,8
|
| 9 |
+
sniffio/__init__.py,sha256=9WJEJlXu7yluP0YtI5SQ9M9OTQfbNHkadarK1vXGDPM,335
|
| 10 |
+
sniffio/__pycache__/__init__.cpython-312.pyc,,
|
| 11 |
+
sniffio/__pycache__/_impl.cpython-312.pyc,,
|
| 12 |
+
sniffio/__pycache__/_version.cpython-312.pyc,,
|
| 13 |
+
sniffio/_impl.py,sha256=UmUFMZpiuOrcjnuHhuYiYMxeCNWfqu9kBlaPf0xk6X8,2843
|
| 14 |
+
sniffio/_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 15 |
+
sniffio/_tests/__pycache__/__init__.cpython-312.pyc,,
|
| 16 |
+
sniffio/_tests/__pycache__/test_sniffio.cpython-312.pyc,,
|
| 17 |
+
sniffio/_tests/test_sniffio.py,sha256=MMJZZJjQrUi95RANNM-a_55BZquA_gv4rHU1pevcTCM,2058
|
| 18 |
+
sniffio/_version.py,sha256=iVes5xwsHeRzQDexBaAhyx_taNt2ucfA7CWAo4QDt6Q,89
|
| 19 |
+
sniffio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.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-any
|
| 5 |
+
|
Prism/LLaDA/LLaDA_Prism/.venv/lib/python3.12/site-packages/sniffio-1.3.1.dist-info/top_level.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
sniffio
|