/usr/local/lib/python3.6/site-packages/responses/__pycache__
NameSizeModeActions
matchers.cpython-36.pyc89830644editdlrm
registries.cpython-36.pyc17290644editdlrm
test_matchers.cpython-36.pyc144810644editdlrm
test_responses.cpython-36.pyc595840644editdlrm
__init__.cpython-36.pyc250930644editdlrm
Edit: /usr/local/lib/python3.6/site-packages/responses/__pycache__/matchers.cpython-36.pyc (8983B)
3 8%Eg#)@sddlZddlZddlmZejr4ddlmZmZnddlmZmZyddl m Z Wn e k rtddl m Z YnXyddl mZWne k reZYnXddZdd Zd d Zd d ZddZddZddZdddZdddZdS)N)PreparedRequest) parse_qslurlparse) parse_url)JSONDecodeErrorcsfddg}x^t|jdddD]F}||}t|trFt|}nt|trZ|d}|jdj||q&Wdjd j|}|S) z Returns string of format {'key': val, 'key2': val2} Function is called recursively for nested dictionaries :param input_dict: dictionary to transform :return: (str) reformatted string cshg}xLt|dddD]8}t|tr.t|}nt|tr@|}|jt|qWdj|}d|dS)zk Convert all list items to string. Function is called recursively for nested lists cSst|S)N)str)xr &sz:_create_key_val_str..list_to_str..)keyz, [])sorted isinstancedict_create_key_val_strlistappendrjoin) input_listZconverted_listitemZlist_str) list_to_strr r r s    z(_create_key_val_str..list_to_strcSst|S)N)r)rr r r r 1sz%_create_key_val_str..)r )rz{}: {}z{{{}}}z, ) rkeysrrrrrformatr)Z input_dictZ items_listr valZ key_val_strr )rr rs     rcsfdd}|S)z Matches URL encoded data :param params: (dict) data provided to 'data' arg of request :return: (func) matcher cs^d}|j}|rtt|ni}p$i}|dkr6dkn||k}|sVdjt|t|}||fS)Nz/request.body doesn't match: {} doesn't match {})bodyrrrr)requestreason request_bodyZqsl_body params_dictvalid)paramsr r matchFsz(urlencoded_params_matcher..matchr )r#r$r )r#r urlencoded_params_matcher>s r%csfdd}|S)z Matches JSON encoded data :param params: (dict) JSON data provided to 'json' arg of request :return: (func) matcher c sd}|j}pi}yZt|tr(|jd}|r6tj|ni}|dkrJdkn||k}|sjdjt|t|}Wntk rd}d}YnX||fS)Nrzutf-8z/request.body doesn't match: {} doesn't match {}FzFrequest.body doesn't match: JSONDecodeError: Cannot parse request.body) rrbytesdecode json_moduleloadsrrr)rrr r!Z json_bodyr")r#r r r$^s   z"json_params_matcher..matchr )r#r$r )r#r json_params_matcherVs r*csfdd}|S)NcsTd}t|jj}r6tt|}tt}||k}n| }|sLdj|}||fS)Nrz9URL fragment identifier is different: {} doesn't match {})rurlfragmentrrr)rrZ url_fragmentZurl_fragment_qslZidentifier_qslr") identifierr r r$zs    z*fragment_identifier_matcher..matchr )r-r$r )r-r fragment_identifier_matcherys r.csfdd}|S)z Matcher to match 'params' argument in request :param params: (dict), same as provided to request :return: (func) matcher csRd}|j}|pi}pi}|dkr*dkn||k}|sJdjt|t|}||fS)Nrz,Parameters do not match. {} doesn't match {})r#rr)rrZrequest_paramsZrequest_params_dictr!r")r#r r r$s z"query_param_matcher..matchr )r#r$r )r#r query_param_matchers r/cs*tjrttrjdfdd}|S)z Matcher to match query string part of request :param query: (str), same as constructed by request :return: (func) matcher utf8cszd}t|j}|j}|r$tt|ni}r8ttni}|dkrJ n||k}|srdjtt|tt|}||fS)Nrz/Query string doesn't match. {} doesn't match {})rr+queryrrrrr)rrdataZ request_queryZ request_qslZ matcher_qslr")r1r r r$s  z#query_string_matcher..match)sixPY2runicodeencode)r1r$r )r1r query_string_matchers  r7csfdd}|S)z Matcher to match keyword arguments provided to request :param kwargs: (dict), keyword arguments, same as provided to request :return: (func) matcher csfd}p ifdd|jjD}|s. ntjt|jk}|s^djt|t}||fS)Nrcsi|]\}}|kr||qSr r ).0kv) kwargs_dictr r sz9request_kwargs_matcher..match..z*Arguments don't match: {} doesn't match {})Z req_kwargsitemsrrr)rrZrequest_kwargsr")kwargs)r;r r$s  z%request_kwargs_matcher..matchr )r>r$r )r>r request_kwargs_matchers r?csD|s tdtddi_j||dddfdd}|S) aJ Matcher to match 'multipart/form-data' content-type. This function constructs request body and headers from provided 'data' and 'files' arguments and compares to actual request :param files: (dict), same as provided to request :param data: (dict), same as provided to request :return: (func) matcher zfiles argument cannot be emptyz Content-Typer)r2filescSsd|kr dS|jddS)z Parse 'boundary' value from header. :param content_type: (str) headers["Content-Type"] value :return: (str) boundary value z boundary=r)split) content_typer r r get_boundarysz'multipart_matcher..get_boundaryc sd}d|jkrd|dfS|jd}jd}|jd}jdj||}|j}j}t|tr||jd}|jd}|j||}||k}|sd|dj||fS||k} | sd|dj||fSd S) Nz#multipart/form-data doesn't match. z Content-TypeFz,Request is missing the 'Content-Type' headerzutf-8zBRequest headers['Content-Type'] is different. {} isn't equal to {}z(Request body differs. {} aren't equal {}Tr)Tr)headersreplacerrr&r6r) rrZrequest_boundaryZprepared_boundaryZrequest_content_typeZprepared_content_typer Z prepared_bodyZ headers_validZ body_valid)rDpreparedr r r$s2          z multipart_matcher..match) TypeErrorrrE prepare_body)r@r2r$r )rDrGr multipart_matchers   ,rJFcsfdd}|S)aY Matcher to match 'headers' argument in request using the responses library. Because ``requests`` will send several standard headers in addition to what was specified by your code, request headers that are additional to the ones passed to the matcher are ignored by default. You can change this behaviour by passing ``strict_match=True``. :param headers: (dict), same as provided to request :param strict_match: (bool), whether headers in addition to those specified in the matcher should cause the match to fail. :return: (func) matcher cs`|jpi}s$fdd|jD}tjt|jk}|sXddjt|tfS|dfS)Ncsi|]\}}|kr||qSr r )r8r9r:)rEr r r<Jsz1header_matcher..match..Fz)Headers do not match: {} doesn't match {}r)rEr=rrr)rZrequest_headersr")rE strict_matchr r r$Es zheader_matcher..matchr )rErKr$r )rErKr header_matcher6srL)N)F)r3jsonr(requestsrr4rr urllib.parseZ"requests.packages.urllib3.util.urlr ImportErrorZurllib3.util.urlZ json.decoderr ValueErrorrr%r*r.r/r7r?rJrLr r r r s,  '# L