U ��.e �@s@ddlmZddlmZddlmZdd�Zdd�Zd d �Z d S) �)�absolute_import�)� http_client)�HeaderParsingErrorcCslz |��WStk rYnXz|jWStk r<YnXz |jdkWStk r^YnXtd��dS)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.)Zisclosed�AttributeError�closed�fp� ValueError)�obj�r �E/usr/lib/python3.8/site-packages/pip/_vendor/urllib3/util/response.py� is_fp_closeds  r cCsvt|tj�std�t|����t|dd�}t|dd�}d}|r^|��s^|�}t|tt f�r^|}|sf|rrt ||d��dS)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) � isinstance�httplibZ HTTPMessage� TypeError�format�type�getattrZ is_multipart�bytes�strr)ZheadersrrrZpayloadr r r �assert_header_parsing&s   rcCs$|j}t|t�r|dkS|��dkS)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)�_methodr�int�upper)Zresponse�methodr r r �is_response_to_headJs  rN) Z __future__rZpackages.six.movesrr� exceptionsrr rrr r r r �s   $