
Kh                 @   sn   d  d l  m Z d  d l m Z m Z d d l m Z d d l m Z	 d d   Z
 d d	   Z d
 d   Z d S)    )absolute_import)!MultipartInvariantViolationDefectStartBoundaryNotFoundDefect   )HeaderParsingError)http_clientc             C   sy   y |  j    SWn t k
 r" Yn Xy |  j SWn t k
 rB Yn Xy |  j d k SWn t k
 rh Yn Xt d   d S)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.)isclosedAttributeErrorclosedfp
ValueError)obj r   Q/mod/web/acousticsspace/venv/lib/python3.5/site-packages/urllib3/util/response.pyis_fp_closed	   s    r   c             C   s   t  |  t j  s- t d j t |      t |  d d  } t |  d d  } d } | r |  j   s |   } t  | t t	 f  r | } | r d d   | D } | s | r t
 d | d |   d S)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  | t t f  s |  q Sr   )
isinstancer   r   ).0defectr   r   r   
<listcomp>S   s   	z)assert_header_parsing.<locals>.<listcomp>unparsed_data)r   httplibHTTPMessage	TypeErrorformattypegetattris_multipartbytesstrr   )headersr   r   r   payloadr   r   r   assert_header_parsing(   s    		
r#   c             C   s2   |  j  } t | t  r" | d k S| j   d k S)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.
       HEAD)_methodr   intupper)responsemethodr   r   r   is_response_to_head^   s    
	
r+   N)
__future__r   Zemail.errorsr   r   
exceptionsr   Zpackages.six.movesr   r   r   r#   r+   r   r   r   r   <module>   s   6