U ` @sPddlmZddlmZmZddlmZddlmZ ddZ dd Z d d Z d S) )absolute_import)!MultipartInvariantViolationDefectStartBoundaryNotFoundDefect)HeaderParsingError) http_clientcCslz |WStk rYnXz|jWStk r<YnXz |jdkWStk r^YnXtddS)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 F/opt/alt/python38/lib/python3.8/site-packages/urllib3/util/response.py is_fp_closed s  rcCst|tjstdt|t|dd}t|dd}d}|r^|s^|}t|tt fr^|}|rpdd|D}|sx|rt ||ddS)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_payloadcSsg|]}t|ttfs|qSr ) isinstancerr).0Zdefectr r r Rs z)assert_header_parsing..)r unparsed_data) rhttplibZ HTTPMessage TypeErrorformattypegetattrZ is_multipartbytesstrr)ZheadersrrrZpayloadr r rassert_header_parsing(s     rcCs$|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. ZHEAD)_methodrintupper)Zresponsemethodr r ris_response_to_head^s  r#N) Z __future__rZ email.errorsrr exceptionsrZpackages.six.movesrrrrr#r r r rs   6