B -<` @sPddlmZddlmZmZddlmZddlmZ ddZ dd Z d d Z d S) )absolute_import)!MultipartInvariantViolationDefectStartBoundaryNotFoundDefect)HeaderParsingError) http_clientcCsfy|Stk 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.)isclosedAttributeErrorclosedfp ValueError)objr 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_payloadcSsg|]}t|ttfs|qSr) isinstancerr).0defectrrr Ssz)assert_header_parsing..)r unparsed_data) rhttplib HTTPMessage TypeErrorformattypegetattr is_multipartbytesstrr)headersrrrpayloadrrrassert_header_parsing(s    r#cCs$|j}t|tr|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. HEAD)_methodrintupper)responsemethodrrris_response_to_head^s  r+N) __future__rZ email.errorsrr exceptionsrZpackages.six.movesrrrr#r+rrrrs   6