/usr/share/cagefs-skeleton/usr/lib/python3.9/site-packages/dns
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license import importlib.metadata import itertools import string from typing import Dict, List, Tuple def _tuple_from_text(version: str) -> Tuple: text_parts = version.split(".") int_parts = [] for text_part in text_parts: digit_prefix = "".join( itertools.takewhile(lambda x: x in string.digits, text_part) ) try: int_parts.append(int(digit_prefix)) except Exception: break return tuple(int_parts) def _version_check( requirement: str, ) -> bool: """Is the requirement fulfilled? The requirement must be of the form package>=version """ package, minimum = requirement.split(">=") try: version = importlib.metadata.version(package) except Exception: return False t_version = _tuple_from_text(version) t_minimum = _tuple_from_text(minimum) if t_version < t_minimum: return False return True _cache: Dict[str, bool] = {} def have(feature: str) -> bool: """Is *feature* available? This tests if all optional packages needed for the feature are available and recent enough. Returns ``True`` if the feature is available, and ``False`` if it is not or if metadata is missing. """ value = _cache.get(feature) if value is not None: return value requirements = _requirements.get(feature) if requirements is None: # we make a cache entry here for consistency not performance _cache[feature] = False return False ok = True for requirement in requirements: if not _version_check(requirement): ok = False break _cache[feature] = ok return ok def force(feature: str, enabled: bool) -> None: """Force the status of *feature* to be *enabled*. This method is provided as a workaround for any cases where importlib.metadata is ineffective, or for testing. """ _cache[feature] = enabled _requirements: Dict[str, List[str]] = { ### BEGIN generated requirements "dnssec": ["cryptography>=41"], "doh": ["httpcore>=1.0.0", "httpx>=0.26.0", "h2>=4.1.0"], "doq": ["aioquic>=0.9.25"], "idna": ["idna>=3.6"], "trio": ["trio>=0.23"], "wmi": ["wmi>=1.5.1"], ### END generated requirements }
.
Edit
..
Edit
__init__.py
Edit
__pycache__
Edit
_asyncbackend.py
Edit
_asyncio_backend.py
Edit
_ddr.py
Edit
_features.py
Edit
_immutable_ctx.py
Edit
asyncbackend.py
Edit
asyncquery.py
Edit
asyncresolver.py
Edit
dnssec.py
Edit
dnssecalgs
Edit
dnssectypes.py
Edit
e164.py
Edit
edns.py
Edit
entropy.py
Edit
enum.py
Edit
exception.py
Edit
flags.py
Edit
grange.py
Edit
immutable.py
Edit
inet.py
Edit
ipv4.py
Edit
ipv6.py
Edit
message.py
Edit
name.py
Edit
namedict.py
Edit
nameserver.py
Edit
node.py
Edit
opcode.py
Edit
query.py
Edit
quic
Edit
rcode.py
Edit
rdata.py
Edit
rdataclass.py
Edit
rdataset.py
Edit
rdatatype.py
Edit
rdtypes
Edit
renderer.py
Edit
resolver.py
Edit
reversename.py
Edit
rrset.py
Edit
serial.py
Edit
set.py
Edit
tokenizer.py
Edit
transaction.py
Edit
tsig.py
Edit
tsigkeyring.py
Edit
ttl.py
Edit
update.py
Edit
version.py
Edit
versioned.py
Edit
win32util.py
Edit
wire.py
Edit
xfr.py
Edit
zone.py
Edit
zonefile.py
Edit
zonetypes.py
Edit