""" Checks whether a given file-like object is closed.
:param obj: The file-like object to check. """
# Check `isclosed()` first, in case Python3 doesn't set `closed`. # GH Issue #928 except AttributeError: pass
try: # Check via the official file-like-object way. return obj.closed except AttributeError: pass
try: # Check if the object is a container for another file-like object that # gets released on exhaustion (e.g. HTTPResponse). return obj.fp is None except AttributeError: pass
raise ValueError("Unable to determine whether fp is closed.")
""" Asserts whether all headers have been successfully parsed. Extracts encountered errors from the result of parsing headers.
Only works on Python 3.
:param headers: Headers to verify. :type headers: `httplib.HTTPMessage`.
:raises urllib3.exceptions.HeaderParsingError: If parsing errors are found. """
# This will fail silently if we pass in the wrong kind of parameter. # To make debugging easier add an explicit check. raise TypeError("expected httplib.Message, got {0}.".format(type(headers)))
# get_payload is actually email.message.Message.get_payload; # we're only interested in the result if it's not a multipart message
raise HeaderParsingError(defects=defects, unparsed_data=unparsed_data)
""" Checks whether the request of a response has been a HEAD-request. Handles the quirks of AppEngine.
:param conn: :type conn: :class:`httplib.HTTPResponse` """ # FIXME: Can we do this somehow without accessing private httplib _method? return method == 3 |