__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
import functools
import logging
import re
from typing import NewType, Optional, Tuple, cast
from pip._vendor.packaging import specifiers, version
from pip._vendor.packaging.requirements import Requirement
NormalizedExtra = NewType("NormalizedExtra", str)
logger = logging.getLogger(__name__)
def check_requires_python(
requires_python: Optional[str], version_info: Tuple[int, ...]
) -> bool:
"""
Check if the given Python version matches a "Requires-Python" specifier.
:param version_info: A 3-tuple of ints representing a Python
major-minor-micro version to check (e.g. `sys.version_info[:3]`).
:return: `True` if the given Python version satisfies the requirement.
Otherwise, return `False`.
:raises InvalidSpecifier: If `requires_python` has an invalid format.
"""
if requires_python is None:
# The package provides no information
return True
requires_python_specifier = specifiers.SpecifierSet(requires_python)
python_version = version.parse(".".join(map(str, version_info)))
return python_version in requires_python_specifier
@functools.lru_cache(maxsize=512)
def get_requirement(req_string: str) -> Requirement:
"""Construct a packaging.Requirement object with caching"""
# Parsing requirement strings is expensive, and is also expected to happen
# with a low diversity of different arguments (at least relative the number
# constructed). This method adds a cache to requirement object creation to
# minimize repeated parsing of the same string to construct equivalent
# Requirement objects.
return Requirement(req_string)
def safe_extra(extra: str) -> NormalizedExtra:
"""Convert an arbitrary string to a standard 'extra' name
Any runs of non-alphanumeric characters are replaced with a single '_',
and the result is always lowercased.
This function is duplicated from ``pkg_resources``. Note that this is not
the same to either ``canonicalize_name`` or ``_egg_link_name``.
"""
return cast(NormalizedExtra, re.sub("[^A-Za-z0-9.-]+", "_", extra).lower())
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __init__.py | File | 0 B | 0644 |
|
| _log.py | File | 1015 B | 0644 |
|
| appdirs.py | File | 1.63 KB | 0644 |
|
| compat.py | File | 1.84 KB | 0644 |
|
| compatibility_tags.py | File | 5.25 KB | 0644 |
|
| datetime.py | File | 242 B | 0644 |
|
| deprecation.py | File | 3.54 KB | 0644 |
|
| direct_url_helpers.py | File | 3.13 KB | 0644 |
|
| distutils_args.py | File | 1.22 KB | 0644 |
|
| egg_link.py | File | 2.15 KB | 0644 |
|
| encoding.py | File | 1.14 KB | 0644 |
|
| entrypoints.py | File | 1.03 KB | 0644 |
|
| filesystem.py | File | 5.75 KB | 0644 |
|
| filetypes.py | File | 716 B | 0644 |
|
| glibc.py | File | 3.04 KB | 0644 |
|
| hashes.py | File | 4.7 KB | 0644 |
|
| inject_securetransport.py | File | 795 B | 0644 |
|
| logging.py | File | 11.25 KB | 0644 |
|
| misc.py | File | 18.91 KB | 0644 |
|
| models.py | File | 1.17 KB | 0644 |
|
| packaging.py | File | 2.06 KB | 0644 |
|
| setuptools_build.py | File | 5.52 KB | 0644 |
|
| subprocess.py | File | 8.97 KB | 0644 |
|
| temp_dir.py | File | 7.48 KB | 0644 |
|
| unpacking.py | File | 8.7 KB | 0644 |
|
| urls.py | File | 1.72 KB | 0644 |
|
| virtualenv.py | File | 3.38 KB | 0644 |
|
| wheel.py | File | 4.44 KB | 0644 |
|