From 016a394f2c9ee7c34a958372a545e1ceefaec085 Mon Sep 17 00:00:00 2001 From: Jair Henrique Date: Mon, 26 Jun 2023 17:07:59 -0300 Subject: [PATCH] Enable E, W and F linters for ruff --- pyproject.toml | 12 ++++-------- tests/integration/test_aiohttp.py | 9 +++++---- tests/integration/test_boto.py | 16 ++++++++-------- tests/integration/test_boto3.py | 11 +++++------ tests/integration/test_httpx.py | 7 ++++--- tests/integration/test_requests.py | 1 - tests/integration/test_wild.py | 4 ++-- tests/unit/test_vcr_import.py | 8 ++------ tox.ini | 4 +--- vcr/__init__.py | 2 +- vcr/patch.py | 2 +- 11 files changed, 33 insertions(+), 43 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1d2343c..9f62bca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,6 @@ [tool.black] line-length=110 -[tool.isort] -line_length = 110 -known_first_party = "vcrpy" -multi_line_output = 3 -use_parentheses = true -include_trailing_comma = true - [tool.codespell] skip = '.git,*.pdf,*.svg,.tox' ignore-regex = "\\\\[fnrstv]" @@ -23,14 +16,17 @@ markers = [ select = [ "C4", # flake8-comprehensions "COM", # flake8-commas + "E", # pycodestyle error + "F", # pyflakes "I", # isort "ISC", # flake8-implicit-str-concat "PIE", # flake8-pie "RUF", # Ruff-specific rules "UP", # pyupgrade + "W", # pycodestyle warning ] line-length = 110 target-version = "py38" [tool.ruff.isort] -known-first-party = [ "vcr" ] \ No newline at end of file +known-first-party = [ "vcr" ] diff --git a/tests/integration/test_aiohttp.py b/tests/integration/test_aiohttp.py index a8d14c1..4b7d783 100644 --- a/tests/integration/test_aiohttp.py +++ b/tests/integration/test_aiohttp.py @@ -4,12 +4,13 @@ import urllib.parse import pytest +import vcr + asyncio = pytest.importorskip("asyncio") aiohttp = pytest.importorskip("aiohttp") -import vcr -from .aiohttp_utils import aiohttp_app, aiohttp_request +from .aiohttp_utils import aiohttp_app, aiohttp_request # noqa: E402 def run_in_loop(fn): @@ -59,7 +60,7 @@ def test_headers(tmpdir, auth, mockbin_request_url): request = cassette.requests[0] assert "AUTHORIZATION" in request.headers cassette_response, _ = get(url, auth=auth) - assert dict(cassette_response.headers) == dict(response.headers) + assert cassette_response.headers.items() == response.headers.items() assert cassette.play_count == 1 assert "istr" not in cassette.data[0] assert "yarl.URL" not in cassette.data[0] @@ -278,7 +279,7 @@ def test_redirect(tmpdir, mockbin): # looking request_info. assert cassette_response.request_info.url == response.request_info.url assert cassette_response.request_info.method == response.request_info.method - assert dict(cassette_response.request_info.headers.items()) == dict(response.request_info.headers.items()) + assert cassette_response.request_info.headers.items() == response.request_info.headers.items() assert cassette_response.request_info.real_url == response.request_info.real_url diff --git a/tests/integration/test_boto.py b/tests/integration/test_boto.py index 4040b35..fcf5a44 100644 --- a/tests/integration/test_boto.py +++ b/tests/integration/test_boto.py @@ -1,15 +1,15 @@ +from configparser import DuplicateSectionError + import pytest +import vcr + boto = pytest.importorskip("boto") -from configparser import DuplicateSectionError - -import boto -import boto.iam -from boto.s3.connection import S3Connection -from boto.s3.key import Key - -import vcr +import boto # noqa +import boto.iam # noqa +from boto.s3.connection import S3Connection # noqa +from boto.s3.key import Key # noqa def test_boto_stubs(tmpdir): diff --git a/tests/integration/test_boto3.py b/tests/integration/test_boto3.py index 02a0a03..448a765 100644 --- a/tests/integration/test_boto3.py +++ b/tests/integration/test_boto3.py @@ -2,15 +2,14 @@ import os import pytest -boto3 = pytest.importorskip("boto3") - -import boto3 -import botocore - import vcr +boto3 = pytest.importorskip("boto3") + +import botocore # noqa + try: - from botocore import awsrequest + from botocore import awsrequest # noqa botocore_awsrequest = True except ImportError: diff --git a/tests/integration/test_httpx.py b/tests/integration/test_httpx.py index d8539e1..0b1bf9a 100644 --- a/tests/integration/test_httpx.py +++ b/tests/integration/test_httpx.py @@ -2,11 +2,12 @@ import os import pytest +import vcr + asyncio = pytest.importorskip("asyncio") httpx = pytest.importorskip("httpx") -import vcr -from vcr.stubs.httpx_stubs import HTTPX_REDIRECT_PARAM +from vcr.stubs.httpx_stubs import HTTPX_REDIRECT_PARAM # noqa: E402 class BaseDoRequest: @@ -185,7 +186,7 @@ def test_redirect(mockbin, yml, do_request): # looking request_info. assert cassette_response.request.url == response.request.url assert cassette_response.request.method == response.request.method - assert dict(cassette_response.request.headers.items()) == dict(response.request.headers.items()) + assert cassette_response.request.headers.items() == response.request.headers.items() @pytest.mark.online diff --git a/tests/integration/test_requests.py b/tests/integration/test_requests.py index d4622f4..493df41 100644 --- a/tests/integration/test_requests.py +++ b/tests/integration/test_requests.py @@ -5,7 +5,6 @@ from assertions import assert_cassette_empty, assert_is_json_bytes import vcr requests = pytest.importorskip("requests") -from requests.exceptions import ConnectionError # E402 def test_status_code(httpbin_both, tmpdir): diff --git a/tests/integration/test_wild.py b/tests/integration/test_wild.py index 0ae4db0..6e0df08 100644 --- a/tests/integration/test_wild.py +++ b/tests/integration/test_wild.py @@ -5,10 +5,10 @@ from xmlrpc.server import SimpleXMLRPCServer import pytest -requests = pytest.importorskip("requests") - import vcr +requests = pytest.importorskip("requests") + def test_domain_redirect(): """Ensure that redirects across domains are considered unique""" diff --git a/tests/unit/test_vcr_import.py b/tests/unit/test_vcr_import.py index ba8b53f..d3571e4 100644 --- a/tests/unit/test_vcr_import.py +++ b/tests/unit/test_vcr_import.py @@ -6,10 +6,6 @@ def test_vcr_import_deprecation(recwarn): # Remove imported module entry if already loaded in another test del sys.modules["vcr"] - import vcr + import vcr # noqa: F401 - if sys.version_info[0] == 2: - assert len(recwarn) == 1 - assert issubclass(recwarn[0].category, DeprecationWarning) - else: - assert len(recwarn) == 0 + assert len(recwarn) == 0 diff --git a/tox.ini b/tox.ini index 2fb5305..5df1b8b 100644 --- a/tox.ini +++ b/tox.ini @@ -37,6 +37,7 @@ skipsdist = True commands = black --version black --check --diff . + ruff --version ruff check . deps = black @@ -100,6 +101,3 @@ passenv = AWS_ACCESS_KEY_ID AWS_DEFAULT_REGION AWS_SECRET_ACCESS_KEY - -[flake8] -max_line_length = 110 diff --git a/vcr/__init__.py b/vcr/__init__.py index 8da5cb2..ac7377a 100644 --- a/vcr/__init__.py +++ b/vcr/__init__.py @@ -2,7 +2,7 @@ import logging from logging import NullHandler from .config import VCR -from .record_mode import RecordMode as mode # import is not used in this file +from .record_mode import RecordMode as mode # noqa: F401 __version__ = "5.0.0" diff --git a/vcr/patch.py b/vcr/patch.py index 83f6361..abe089f 100644 --- a/vcr/patch.py +++ b/vcr/patch.py @@ -18,7 +18,7 @@ try: from botocore.awsrequest import AWSHTTPConnection, AWSHTTPSConnection except ImportError as e: try: - import botocore.vendored.requests + import botocore.vendored.requests # noqa: F401 except ImportError: # pragma: no cover pass else: