1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- """
- 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
|