3 nf\ @s@ddlmZddlmZddlmZddZddZd d Z d S) )absolute_import) http_client)HeaderParsingErrorcCsfy|jStk rYnXy|jStk r8YnXy |jdkStk rXYnXtddS)zt Checks whether a given file-like object is closed. :param obj: The file-like object to check. Nz)Unable to determine whether fp is closed.)ZisclosedAttributeErrorclosedfp ValueError)objr /usr/lib/python3.6/response.py is_fp_closeds r cCsvt|tjstdjt|t|dd}t|dd}d}|r^|js^|}t|tt fr^|}|sf|rrt ||ddS)aP 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. z"expected httplib.Message, got {0}.defectsN get_payload)r unparsed_data) isinstancehttplibZ HTTPMessage TypeErrorformattypegetattrZ is_multipartbytesstrr)ZheadersrrrZpayloadr r r assert_header_parsing&s    rcCs$|j}t|tr|dkS|jdkS)z Checks whether the request of a response has been a HEAD-request. Handles the quirks of AppEngine. :param conn: :type conn: :class:`httplib.HTTPResponse` ZHEAD)_methodrintupper)Zresponsemethodr r r is_response_to_headKs  rN) Z __future__rZpackages.six.movesrr exceptionsrr rrr r r r s   %