mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 01:03:24 +00:00
Use ruff as linter
This commit is contained in:
@@ -2,7 +2,7 @@ import logging
|
||||
from logging import NullHandler
|
||||
|
||||
from .config import VCR
|
||||
from .record_mode import RecordMode as mode # noqa import is not used in this file
|
||||
from .record_mode import RecordMode as mode # import is not used in this file
|
||||
|
||||
__version__ = "5.0.0"
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
async def handle_coroutine(vcr, fn): # noqa: E999
|
||||
async def handle_coroutine(vcr, fn):
|
||||
with vcr as cassette:
|
||||
return await fn(cassette) # noqa: E999
|
||||
return await fn(cassette)
|
||||
|
||||
@@ -81,7 +81,8 @@ class CassetteContextDecorator:
|
||||
# pass
|
||||
assert self.__finish is None, "Cassette already open."
|
||||
other_kwargs, cassette_kwargs = partition_dict(
|
||||
lambda key, _: key in self._non_cassette_arguments, self._args_getter()
|
||||
lambda key, _: key in self._non_cassette_arguments,
|
||||
self._args_getter(),
|
||||
)
|
||||
if other_kwargs.get("path_transformer"):
|
||||
transformer = other_kwargs["path_transformer"]
|
||||
@@ -280,7 +281,7 @@ class Cassette:
|
||||
return response
|
||||
# The cassette doesn't contain the request asked for.
|
||||
raise UnhandledHTTPRequestError(
|
||||
f"The cassette ({self._path!r}) doesn't contain the request ({request!r}) asked for"
|
||||
f"The cassette ({self._path!r}) doesn't contain the request ({request!r}) asked for",
|
||||
)
|
||||
|
||||
def responses_of(self, request):
|
||||
@@ -295,7 +296,7 @@ class Cassette:
|
||||
return responses
|
||||
# The cassette doesn't contain the request asked for.
|
||||
raise UnhandledHTTPRequestError(
|
||||
f"The cassette ({self._path!r}) doesn't contain the request ({request!r}) asked for"
|
||||
f"The cassette ({self._path!r}) doesn't contain the request ({request!r}) asked for",
|
||||
)
|
||||
|
||||
def rewind(self):
|
||||
|
||||
@@ -162,7 +162,8 @@ class VCR:
|
||||
def _build_before_record_response(self, options):
|
||||
before_record_response = options.get("before_record_response", self.before_record_response)
|
||||
decode_compressed_response = options.get(
|
||||
"decode_compressed_response", self.decode_compressed_response
|
||||
"decode_compressed_response",
|
||||
self.decode_compressed_response,
|
||||
)
|
||||
filter_functions = []
|
||||
if decode_compressed_response:
|
||||
@@ -186,10 +187,12 @@ class VCR:
|
||||
filter_headers = options.get("filter_headers", self.filter_headers)
|
||||
filter_query_parameters = options.get("filter_query_parameters", self.filter_query_parameters)
|
||||
filter_post_data_parameters = options.get(
|
||||
"filter_post_data_parameters", self.filter_post_data_parameters
|
||||
"filter_post_data_parameters",
|
||||
self.filter_post_data_parameters,
|
||||
)
|
||||
before_record_request = options.get(
|
||||
"before_record_request", options.get("before_record", self.before_record_request)
|
||||
"before_record_request",
|
||||
options.get("before_record", self.before_record_request),
|
||||
)
|
||||
ignore_hosts = options.get("ignore_hosts", self.ignore_hosts)
|
||||
ignore_localhost = options.get("ignore_localhost", self.ignore_localhost)
|
||||
@@ -199,12 +202,12 @@ class VCR:
|
||||
if filter_query_parameters:
|
||||
replacements = [p if isinstance(p, tuple) else (p, None) for p in filter_query_parameters]
|
||||
filter_functions.append(
|
||||
functools.partial(filters.replace_query_parameters, replacements=replacements)
|
||||
functools.partial(filters.replace_query_parameters, replacements=replacements),
|
||||
)
|
||||
if filter_post_data_parameters:
|
||||
replacements = [p if isinstance(p, tuple) else (p, None) for p in filter_post_data_parameters]
|
||||
filter_functions.append(
|
||||
functools.partial(filters.replace_post_data_parameters, replacements=replacements)
|
||||
functools.partial(filters.replace_post_data_parameters, replacements=replacements),
|
||||
)
|
||||
|
||||
hosts_to_ignore = set(ignore_hosts)
|
||||
|
||||
@@ -14,29 +14,28 @@ class CannotOverwriteExistingCassetteException(Exception):
|
||||
if best_matches:
|
||||
# Build a comprehensible message to put in the exception.
|
||||
best_matches_msg = "Found {} similar requests with {} different matcher(s) :\n".format(
|
||||
len(best_matches), len(best_matches[0][2])
|
||||
len(best_matches),
|
||||
len(best_matches[0][2]),
|
||||
)
|
||||
|
||||
for idx, best_match in enumerate(best_matches, start=1):
|
||||
request, succeeded_matchers, failed_matchers_assertion_msgs = best_match
|
||||
best_matches_msg += (
|
||||
"\n%s - (%r).\n"
|
||||
"Matchers succeeded : %s\n"
|
||||
"Matchers failed :\n" % (idx, request, succeeded_matchers)
|
||||
f"\n{idx} - ({request!r}).\n"
|
||||
f"Matchers succeeded : {succeeded_matchers}\n"
|
||||
"Matchers failed :\n"
|
||||
)
|
||||
for failed_matcher, assertion_msg in failed_matchers_assertion_msgs:
|
||||
best_matches_msg += "%s - assertion failure :\n" "%s\n" % (failed_matcher, assertion_msg)
|
||||
best_matches_msg += f"{failed_matcher} - assertion failure :\n{assertion_msg}\n"
|
||||
else:
|
||||
best_matches_msg = "No similar requests, that have not been played, found."
|
||||
return (
|
||||
"Can't overwrite existing cassette (%r) in "
|
||||
"your current record mode (%r).\n"
|
||||
"No match for the request (%r) was found.\n"
|
||||
"%s" % (cassette._path, cassette.record_mode, failed_request, best_matches_msg)
|
||||
"Can't overwrite existing cassette ({!r}) in "
|
||||
"your current record mode ({!r}).\n"
|
||||
"No match for the request ({!r}) was found.\n"
|
||||
"{}".format(cassette._path, cassette.record_mode, failed_request, best_matches_msg)
|
||||
)
|
||||
|
||||
|
||||
class UnhandledHTTPRequestError(KeyError):
|
||||
"""Raised when a cassette does not contain the request we want."""
|
||||
|
||||
pass
|
||||
|
||||
@@ -92,7 +92,7 @@ def migrate_json(in_fp, out_fp):
|
||||
|
||||
|
||||
def _list_of_tuples_to_dict(fs):
|
||||
return {k: v for k, v in fs[0]}
|
||||
return dict(fs[0])
|
||||
|
||||
|
||||
def _already_migrated(data):
|
||||
@@ -130,7 +130,7 @@ def migrate(file_path, migration_fn):
|
||||
def try_migrate(path):
|
||||
if path.endswith(".json"):
|
||||
return migrate(path, migrate_json)
|
||||
elif path.endswith(".yaml") or path.endswith(".yml"):
|
||||
elif path.endswith((".yaml", ".yml")):
|
||||
return migrate(path, migrate_yml)
|
||||
return False
|
||||
|
||||
@@ -138,7 +138,7 @@ def try_migrate(path):
|
||||
def main():
|
||||
if len(sys.argv) != 2:
|
||||
raise SystemExit(
|
||||
"Please provide path to cassettes directory or file. " "Usage: python3 -m vcr.migration PATH"
|
||||
"Please provide path to cassettes directory or file. Usage: python3 -m vcr.migration PATH",
|
||||
)
|
||||
|
||||
path = sys.argv[1]
|
||||
|
||||
16
vcr/patch.py
16
vcr/patch.py
@@ -18,13 +18,13 @@ try:
|
||||
from botocore.awsrequest import AWSHTTPConnection, AWSHTTPSConnection
|
||||
except ImportError as e:
|
||||
try:
|
||||
import botocore.vendored.requests # noqa: F401
|
||||
import botocore.vendored.requests
|
||||
except ImportError: # pragma: no cover
|
||||
pass
|
||||
else:
|
||||
raise RuntimeError(
|
||||
"vcrpy >=4.2.2 and botocore <1.11.0 are not compatible"
|
||||
"; please upgrade botocore (or downgrade vcrpy)"
|
||||
"; please upgrade botocore (or downgrade vcrpy)",
|
||||
) from e
|
||||
else:
|
||||
_Boto3VerifiedHTTPSConnection = AWSHTTPSConnection
|
||||
@@ -53,7 +53,7 @@ else:
|
||||
if requests.__build__ < 0x021602:
|
||||
raise RuntimeError(
|
||||
"vcrpy >=4.2.2 and requests <2.16.2 are not compatible"
|
||||
"; please upgrade requests (or downgrade vcrpy)"
|
||||
"; please upgrade requests (or downgrade vcrpy)",
|
||||
)
|
||||
|
||||
|
||||
@@ -144,7 +144,9 @@ class CassettePatcherBuilder:
|
||||
return
|
||||
|
||||
return mock.patch.object(
|
||||
obj, patched_attribute, self._recursively_apply_get_cassette_subclass(replacement_class)
|
||||
obj,
|
||||
patched_attribute,
|
||||
self._recursively_apply_get_cassette_subclass(replacement_class),
|
||||
)
|
||||
|
||||
def _recursively_apply_get_cassette_subclass(self, replacement_dict_or_obj):
|
||||
@@ -186,7 +188,7 @@ class CassettePatcherBuilder:
|
||||
bases = (base_class,)
|
||||
if not issubclass(base_class, object): # Check for old style class
|
||||
bases += (object,)
|
||||
return type(f"{base_class.__name__}{self._cassette._path}", bases, dict(cassette=self._cassette))
|
||||
return type(f"{base_class.__name__}{self._cassette._path}", bases, {"cassette": self._cassette})
|
||||
|
||||
@_build_patchers_from_mock_triples_decorator
|
||||
def _httplib(self):
|
||||
@@ -333,10 +335,10 @@ class CassettePatcherBuilder:
|
||||
|
||||
def _urllib3_patchers(self, cpool, conn, stubs):
|
||||
http_connection_remover = ConnectionRemover(
|
||||
self._get_cassette_subclass(stubs.VCRRequestsHTTPConnection)
|
||||
self._get_cassette_subclass(stubs.VCRRequestsHTTPConnection),
|
||||
)
|
||||
https_connection_remover = ConnectionRemover(
|
||||
self._get_cassette_subclass(stubs.VCRRequestsHTTPSConnection)
|
||||
self._get_cassette_subclass(stubs.VCRRequestsHTTPSConnection),
|
||||
)
|
||||
mock_triples = (
|
||||
(conn, "VerifiedHTTPSConnection", stubs.VCRRequestsHTTPSConnection),
|
||||
|
||||
@@ -46,7 +46,7 @@ class Request:
|
||||
|
||||
def add_header(self, key, value):
|
||||
warnings.warn(
|
||||
"Request.add_header is deprecated. " "Please assign to request.headers instead.",
|
||||
"Request.add_header is deprecated. Please assign to request.headers instead.",
|
||||
DeprecationWarning,
|
||||
)
|
||||
self.headers[key] = value
|
||||
|
||||
@@ -28,7 +28,7 @@ def _warn_about_old_cassette_format():
|
||||
raise ValueError(
|
||||
"Your cassette files were generated in an older version "
|
||||
"of VCR. Delete your cassettes or run the migration script."
|
||||
"See http://git.io/mHhLBg for more details."
|
||||
"See http://git.io/mHhLBg for more details.",
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -261,7 +261,8 @@ class VCRConnection:
|
||||
else:
|
||||
if self.cassette.write_protected and self.cassette.filter_request(self._vcr_request):
|
||||
raise CannotOverwriteExistingCassetteException(
|
||||
cassette=self.cassette, failed_request=self._vcr_request
|
||||
cassette=self.cassette,
|
||||
failed_request=self._vcr_request,
|
||||
)
|
||||
|
||||
# Otherwise, we should send the request, then get the response
|
||||
|
||||
@@ -35,7 +35,7 @@ class MockClientResponse(ClientResponse):
|
||||
session=None,
|
||||
)
|
||||
|
||||
async def json(self, *, encoding="utf-8", loads=json.loads, **kwargs): # NOQA: E999
|
||||
async def json(self, *, encoding="utf-8", loads=json.loads, **kwargs):
|
||||
stripped = self._body.strip()
|
||||
if not stripped:
|
||||
return None
|
||||
@@ -162,7 +162,7 @@ async def record_response(cassette, vcr_request, response):
|
||||
vcr_response = {
|
||||
"status": {"code": response.status, "message": response.reason},
|
||||
"headers": _serialize_headers(response.headers),
|
||||
"body": body, # NOQA: E999
|
||||
"body": body,
|
||||
"url": str(response.url),
|
||||
}
|
||||
|
||||
@@ -273,7 +273,7 @@ def vcr_request(cassette, real_request):
|
||||
|
||||
log.info("%s not in cassette, sending to real server", vcr_request)
|
||||
|
||||
response = await real_request(self, method, url, **kwargs) # NOQA: E999
|
||||
response = await real_request(self, method, url, **kwargs)
|
||||
await record_responses(cassette, vcr_request, response)
|
||||
return response
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ def vcr_fetch_impl(cassette, real_fetch_impl):
|
||||
error=Exception(
|
||||
"The request (%s) uses AsyncHTTPClient functionality "
|
||||
"that is not yet supported by VCR.py. Please make the "
|
||||
"request outside a VCR.py context." % repr(request)
|
||||
"request outside a VCR.py context." % repr(request),
|
||||
),
|
||||
request_time=self.io_loop.time() - request.start_time,
|
||||
)
|
||||
@@ -65,7 +65,8 @@ def vcr_fetch_impl(cassette, real_fetch_impl):
|
||||
request,
|
||||
599,
|
||||
error=CannotOverwriteExistingCassetteException(
|
||||
cassette=cassette, failed_request=vcr_request
|
||||
cassette=cassette,
|
||||
failed_request=vcr_request,
|
||||
),
|
||||
request_time=self.io_loop.time() - request.start_time,
|
||||
)
|
||||
|
||||
@@ -27,7 +27,7 @@ class CaseInsensitiveDict(MutableMapping):
|
||||
"""
|
||||
|
||||
def __init__(self, data=None, **kwargs):
|
||||
self._store = dict()
|
||||
self._store = {}
|
||||
if data is None:
|
||||
data = {}
|
||||
self.update(data, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user