Spaces:
Sleeping
Sleeping
""" | |
requests._internal_utils | |
~~~~~~~~~~~~~~ | |
Provides utility functions that are consumed internally by Requests | |
which depend on extremely few external helpers (such as compat) | |
""" | |
import re | |
from .compat import builtin_str | |
_VALID_HEADER_NAME_RE_BYTE = re.compile(rb"^[^:\s][^:\r\n]*$") | |
_VALID_HEADER_NAME_RE_STR = re.compile(r"^[^:\s][^:\r\n]*$") | |
_VALID_HEADER_VALUE_RE_BYTE = re.compile(rb"^\S[^\r\n]*$|^$") | |
_VALID_HEADER_VALUE_RE_STR = re.compile(r"^\S[^\r\n]*$|^$") | |
_HEADER_VALIDATORS_STR = (_VALID_HEADER_NAME_RE_STR, _VALID_HEADER_VALUE_RE_STR) | |
_HEADER_VALIDATORS_BYTE = (_VALID_HEADER_NAME_RE_BYTE, _VALID_HEADER_VALUE_RE_BYTE) | |
HEADER_VALIDATORS = { | |
bytes: _HEADER_VALIDATORS_BYTE, | |
str: _HEADER_VALIDATORS_STR, | |
} | |
def to_native_string(string, encoding="ascii"): | |
"""Given a string object, regardless of type, returns a representation of | |
that string in the native string type, encoding and decoding where | |
necessary. This assumes ASCII unless told otherwise. | |
""" | |
if isinstance(string, builtin_str): | |
out = string | |
else: | |
out = string.decode(encoding) | |
return out | |
def unicode_is_ascii(u_string): | |
"""Determine if unicode string only contains ASCII characters. | |
:param str u_string: unicode string to check. Must be unicode | |
and not Python 2 `str`. | |
:rtype: bool | |
""" | |
assert isinstance(u_string, str) | |
try: | |
u_string.encode("ascii") | |
return True | |
except UnicodeEncodeError: | |
return False | |