2018-09-17 00:27:00 +00:00
|
|
|
"""
|
2022-01-24 04:07:52 +00:00
|
|
|
Python HTTP library with thread-safe connection pooling, file post support, user friendly, and more
|
2018-09-17 00:27:00 +00:00
|
|
|
"""
|
|
|
|
from __future__ import absolute_import
|
|
|
|
|
2022-01-24 04:07:52 +00:00
|
|
|
# Set default logging handler to avoid "No handler found" warnings.
|
|
|
|
import logging
|
|
|
|
import warnings
|
|
|
|
from logging import NullHandler
|
2018-09-17 00:27:00 +00:00
|
|
|
|
|
|
|
from . import exceptions
|
2022-01-24 04:07:52 +00:00
|
|
|
from ._version import __version__
|
|
|
|
from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url
|
2018-09-17 00:27:00 +00:00
|
|
|
from .filepost import encode_multipart_formdata
|
|
|
|
from .poolmanager import PoolManager, ProxyManager, proxy_from_url
|
|
|
|
from .response import HTTPResponse
|
|
|
|
from .util.request import make_headers
|
|
|
|
from .util.retry import Retry
|
2022-01-24 04:07:52 +00:00
|
|
|
from .util.timeout import Timeout
|
|
|
|
from .util.url import get_host
|
2018-09-17 00:27:00 +00:00
|
|
|
|
2022-01-24 04:07:52 +00:00
|
|
|
__author__ = "Andrey Petrov (andrey.petrov@shazow.net)"
|
|
|
|
__license__ = "MIT"
|
|
|
|
__version__ = __version__
|
2018-09-17 00:27:00 +00:00
|
|
|
|
|
|
|
__all__ = (
|
2022-01-24 04:07:52 +00:00
|
|
|
"HTTPConnectionPool",
|
|
|
|
"HTTPSConnectionPool",
|
|
|
|
"PoolManager",
|
|
|
|
"ProxyManager",
|
|
|
|
"HTTPResponse",
|
|
|
|
"Retry",
|
|
|
|
"Timeout",
|
|
|
|
"add_stderr_logger",
|
|
|
|
"connection_from_url",
|
|
|
|
"disable_warnings",
|
|
|
|
"encode_multipart_formdata",
|
|
|
|
"get_host",
|
|
|
|
"make_headers",
|
|
|
|
"proxy_from_url",
|
2018-09-17 00:27:00 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
logging.getLogger(__name__).addHandler(NullHandler())
|
|
|
|
|
|
|
|
|
|
|
|
def add_stderr_logger(level=logging.DEBUG):
|
|
|
|
"""
|
|
|
|
Helper for quickly adding a StreamHandler to the logger. Useful for
|
|
|
|
debugging.
|
|
|
|
|
|
|
|
Returns the handler after adding it.
|
|
|
|
"""
|
|
|
|
# This method needs to be in this __init__.py to get the __name__ correct
|
|
|
|
# even if urllib3 is vendored within another package.
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
handler = logging.StreamHandler()
|
2022-01-24 04:07:52 +00:00
|
|
|
handler.setFormatter(logging.Formatter("%(asctime)s %(levelname)s %(message)s"))
|
2018-09-17 00:27:00 +00:00
|
|
|
logger.addHandler(handler)
|
|
|
|
logger.setLevel(level)
|
2022-01-24 04:07:52 +00:00
|
|
|
logger.debug("Added a stderr logging handler to logger: %s", __name__)
|
2018-09-17 00:27:00 +00:00
|
|
|
return handler
|
|
|
|
|
|
|
|
|
|
|
|
# ... Clean up.
|
|
|
|
del NullHandler
|
|
|
|
|
|
|
|
|
|
|
|
# All warning filters *must* be appended unless you're really certain that they
|
|
|
|
# shouldn't be: otherwise, it's very hard for users to use most Python
|
|
|
|
# mechanisms to silence them.
|
|
|
|
# SecurityWarning's always go off by default.
|
2022-01-24 04:07:52 +00:00
|
|
|
warnings.simplefilter("always", exceptions.SecurityWarning, append=True)
|
2018-09-17 00:27:00 +00:00
|
|
|
# SubjectAltNameWarning's should go off once per host
|
2022-01-24 04:07:52 +00:00
|
|
|
warnings.simplefilter("default", exceptions.SubjectAltNameWarning, append=True)
|
2018-09-17 00:27:00 +00:00
|
|
|
# InsecurePlatformWarning's don't vary between requests, so we keep it default.
|
2022-01-24 04:07:52 +00:00
|
|
|
warnings.simplefilter("default", exceptions.InsecurePlatformWarning, append=True)
|
2018-09-17 00:27:00 +00:00
|
|
|
# SNIMissingWarnings should go off only once.
|
2022-01-24 04:07:52 +00:00
|
|
|
warnings.simplefilter("default", exceptions.SNIMissingWarning, append=True)
|
2018-09-17 00:27:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
def disable_warnings(category=exceptions.HTTPWarning):
|
|
|
|
"""
|
|
|
|
Helper for quickly disabling all urllib3 warnings.
|
|
|
|
"""
|
2022-01-24 04:07:52 +00:00
|
|
|
warnings.simplefilter("ignore", category)
|