U ��`� � @ sP d dl mZ d dlmZmZ ddlmZ ddlmZ dd� Z dd � Zd d� ZdS ) � )�absolute_import)�!MultipartInvariantViolationDefect�StartBoundaryNotFoundDefect� )�HeaderParsingError)�http_clientc C sl z | � � W S tk r Y nX z| jW S tk r< Y nX z| jdkW S tk r^ Y nX td��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 �F/opt/alt/python38/lib/python3.8/site-packages/urllib3/util/response.py�is_fp_closed s r c C s� t | tj�std�t| ����t| dd�}t| dd�}d}|r^| �� s^|� }t |tt f�r^|}|rpdd� |D �}|sx|r�t ||d��dS )a> Asserts whether all headers have been successfully parsed. Extracts encountered errors from the result of parsing headers. Only works on Python 3. :param http.client.HTTPMessage headers: Headers to verify. :raises urllib3.exceptions.HeaderParsingError: If parsing errors are found. z"expected httplib.Message, got {0}.�defectsN�get_payloadc S s g | ]}t |ttf�s|�qS r )� isinstancer r )�.0Zdefectr r r � <listcomp>R s ��z)assert_header_parsing.<locals>.<listcomp>)r � unparsed_data)r �httplibZHTTPMessage� TypeError�format�type�getattrZis_multipart�bytes�strr )Zheadersr r r Zpayloadr r r �assert_header_parsing( s �r c C s$ | 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 http.client.HTTPResponse response: Response to check if the originating request used 'HEAD' as a method. � ZHEAD)�_methodr �int�upper)Zresponse�methodr r r �is_response_to_head^ s r# N) Z __future__r Zemail.errorsr r � exceptionsr Zpackages.six.movesr r r r r# r r r r �<module> s 6