diff options
author | Jordan Cook <jordan.cook.git@proton.me> | 2023-05-08 11:23:22 -0500 |
---|---|---|
committer | Jordan Cook <jordan.cook.git@proton.me> | 2023-05-08 11:32:25 -0500 |
commit | 7a0aa6de6bb9d912554bac6cafef2d2ff7c757b6 (patch) | |
tree | 70b96898114b73698dc3cdc4639f215acd07fce1 | |
parent | 83f7bc77e4daeab70e19e29a1ed1ba4bcabff9e1 (diff) | |
download | requests-cache-7a0aa6de6bb9d912554bac6cafef2d2ff7c757b6.tar.gz |
Enable bugbear extension and fix warnings
-rw-r--r-- | pyproject.toml | 2 | ||||
-rw-r--r-- | requests_cache/backends/base.py | 8 | ||||
-rw-r--r-- | requests_cache/backends/filesystem.py | 2 | ||||
-rw-r--r-- | requests_cache/backends/gridfs.py | 2 | ||||
-rw-r--r-- | requests_cache/backends/sqlite.py | 2 | ||||
-rw-r--r-- | requests_cache/models/raw_response.py | 2 | ||||
-rw-r--r-- | requests_cache/patcher.py | 1 | ||||
-rw-r--r-- | tests/conftest.py | 8 | ||||
-rw-r--r-- | tests/integration/base_cache_test.py | 16 | ||||
-rw-r--r-- | tests/integration/base_storage_test.py | 2 | ||||
-rw-r--r-- | tests/integration/test_sqlite.py | 8 | ||||
-rw-r--r-- | tests/integration/test_upgrade.py | 2 | ||||
-rw-r--r-- | tests/unit/models/test_response.py | 6 | ||||
-rw-r--r-- | tests/unit/test_patcher.py | 4 | ||||
-rw-r--r-- | tests/unit/test_session.py | 8 |
15 files changed, 38 insertions, 35 deletions
diff --git a/pyproject.toml b/pyproject.toml index 87cc72b..4c6520a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -161,5 +161,5 @@ ignore_missing_imports = true [tool.ruff] format = 'grouped' line-length = 120 -select = ['C4','C90', 'E', 'F'] +select = ['B', 'C4','C90', 'E', 'F'] ignore = ['B023'] diff --git a/requests_cache/backends/base.py b/requests_cache/backends/base.py index d64abc1..39df413 100644 --- a/requests_cache/backends/base.py +++ b/requests_cache/backends/base.py @@ -275,6 +275,7 @@ class BaseCache: warn( 'BaseCache.delete_url() is deprecated; please use .delete(urls=...) instead', DeprecationWarning, + stacklevel=2, ) self.delete(requests=[Request(method, url, **kwargs)]) @@ -282,6 +283,7 @@ class BaseCache: warn( 'BaseCache.delete_urls() is deprecated; please use .delete(urls=...) instead', DeprecationWarning, + stacklevel=2, ) self.delete(requests=[Request(method, url, **kwargs) for url in urls]) @@ -289,6 +291,7 @@ class BaseCache: warn( 'BaseCache.has_key() is deprecated; please use .contains() instead', DeprecationWarning, + stacklevel=2, ) return self.contains(key) @@ -296,6 +299,7 @@ class BaseCache: warn( 'BaseCache.has_url() is deprecated; please use .contains(url=...) instead', DeprecationWarning, + stacklevel=2, ) return self.contains(request=Request(method, url, **kwargs)) @@ -304,6 +308,7 @@ class BaseCache: 'BaseCache.keys() is deprecated; ' 'please use .filter() or BaseCache.responses.keys() instead', DeprecationWarning, + stacklevel=2, ) yield from self.redirects.keys() if not check_expiry: @@ -317,6 +322,7 @@ class BaseCache: 'BaseCache.response_count() is deprecated; ' 'please use .filter() or len(BaseCache.responses) instead', DeprecationWarning, + stacklevel=2, ) return len(list(self.filter(expired=not check_expiry))) @@ -325,6 +331,7 @@ class BaseCache: 'BaseCache.remove_expired_responses() is deprecated; ' 'please use .delete(expired=True) instead', DeprecationWarning, + stacklevel=2, ) if expire_after: self.reset_expiration(expire_after) @@ -335,6 +342,7 @@ class BaseCache: 'BaseCache.values() is deprecated; ' 'please use .filter() or BaseCache.responses.values() instead', DeprecationWarning, + stacklevel=2, ) yield from self.filter(expired=not check_expiry) diff --git a/requests_cache/backends/filesystem.py b/requests_cache/backends/filesystem.py index ccda6c8..9641668 100644 --- a/requests_cache/backends/filesystem.py +++ b/requests_cache/backends/filesystem.py @@ -94,7 +94,7 @@ class FileDict(BaseStorage): yield except (EOFError, IOError, OSError, PickleError) as e: if not ignore_errors: - raise KeyError(e) + raise KeyError from e def _path(self, key) -> Path: return self.cache_dir / f'{key}{self.extension}' diff --git a/requests_cache/backends/gridfs.py b/requests_cache/backends/gridfs.py index aadb7e5..ee2fd23 100644 --- a/requests_cache/backends/gridfs.py +++ b/requests_cache/backends/gridfs.py @@ -87,7 +87,7 @@ class GridFSDict(BaseStorage): return self.deserialize(key, result.read()) except CorruptGridFile as e: logger.warning(e, exc_info=True) - raise KeyError + raise KeyError from e def __setitem__(self, key, item): value = self.serialize(item) diff --git a/requests_cache/backends/sqlite.py b/requests_cache/backends/sqlite.py index 72b62da..2840e63 100644 --- a/requests_cache/backends/sqlite.py +++ b/requests_cache/backends/sqlite.py @@ -426,7 +426,7 @@ def get_cache_path(db_path: AnyPath, use_cache_dir: bool = False, use_temp: bool raise FileExistsError( f'Parent path exists and is not a directory: {db_path.parent}.' 'Please either delete the file or choose a different path.' - ) + ) from None return db_path diff --git a/requests_cache/models/raw_response.py b/requests_cache/models/raw_response.py index f95afab..ea51eb5 100644 --- a/requests_cache/models/raw_response.py +++ b/requests_cache/models/raw_response.py @@ -57,7 +57,7 @@ class CachedHTTPResponse(RichMixin, HTTPResponse): body = raw.read(decode_content=False) kwargs['body'] = body raw._fp = BytesIO(body) - response.content # This property reads, decodes, and stores response content + _ = response.content # This property reads, decodes, and stores response content # After reading, reset file pointer on original raw response raw._fp = BytesIO(body) diff --git a/requests_cache/patcher.py b/requests_cache/patcher.py index 406ee45..aa5af76 100644 --- a/requests_cache/patcher.py +++ b/requests_cache/patcher.py @@ -121,6 +121,7 @@ def remove_expired_responses(): warn( 'remove_expired_responses() is deprecated; please use delete() instead', DeprecationWarning, + stacklevel=2, ) delete(expired=True) diff --git a/tests/conftest.py b/tests/conftest.py index 953ddb3..e4ca8a6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -239,14 +239,14 @@ def get_mock_response( method='GET', url='https://img.site.com/base/img.jpg', status_code=200, - headers={}, - request_headers={}, + headers=None, + request_headers=None, ): return MagicMock( url=url, status_code=status_code, - headers=headers, - request=Request(method=method, url=url, headers=request_headers), + headers=headers or {}, + request=Request(method=method, url=url, headers=request_headers or {}), ) diff --git a/tests/integration/base_cache_test.py b/tests/integration/base_cache_test.py index d37bfa7..7801570 100644 --- a/tests/integration/base_cache_test.py +++ b/tests/integration/base_cache_test.py @@ -252,15 +252,9 @@ class BaseCacheTest: assert response.from_cache is True assert response.is_expired is False - # Make sure an immediate subsequent request will be served from the cache for another max-age==60 secondss - try: - with patch.object(Session, 'send', side_effect=AssertionError): - response = session.get(url, params=first_response_headers) - except AssertionError: - assert False, ( - "Session tried to perform re-validation although cached response should have been " - "refreshened." - ) + # Make sure an immediate subsequent request will be served from the cache for another 60 seconds + with patch.object(Session, 'send', side_effect=AssertionError): + response = session.get(url, params=first_response_headers) assert response.from_cache is True assert response.is_expired is False @@ -283,7 +277,7 @@ class BaseCacheTest: def test_multipart_upload(self): session = self.init_session() session.post(httpbin('post'), files={'file1': BytesIO(b'10' * 1024)}) - for i in range(5): + for _ in range(5): assert session.post(httpbin('post'), files={'file1': BytesIO(b'10' * 1024)}).from_cache def test_delete__expired(self): @@ -304,7 +298,7 @@ class BaseCacheTest: assert len(session.cache.responses.keys()) == 2 assert len(session.cache.redirects.keys()) == 3 assert not session.cache.contains(url=httpbin('redirect/1')) - assert not any([session.cache.contains(url=httpbin(f)) for f in HTTPBIN_FORMATS]) + assert not any(session.cache.contains(url=httpbin(f)) for f in HTTPBIN_FORMATS) @pytest.mark.parametrize('method', HTTPBIN_METHODS) def test_filter_request_headers(self, method): diff --git a/tests/integration/base_storage_test.py b/tests/integration/base_storage_test.py index 4870c02..a7ff436 100644 --- a/tests/integration/base_storage_test.py +++ b/tests/integration/base_storage_test.py @@ -40,7 +40,7 @@ class BaseStorageTest: for i in range(self.num_instances): cache = caches[i] - cache[f'key_{i}'] == f'value_{i}' + assert cache[f'key_{i}'] == f'value_{i}' assert len(cache) == 2 assert f'key_{i}' in cache and f'key_{i+1}' in cache diff --git a/tests/integration/test_sqlite.py b/tests/integration/test_sqlite.py index 04e4b61..173cc60 100644 --- a/tests/integration/test_sqlite.py +++ b/tests/integration/test_sqlite.py @@ -163,7 +163,7 @@ class TestSQLiteDict(BaseStorageTest): assert len(items) == limit or 100 prev_item = None - for i, item in enumerate(items): + for item in items: assert prev_item is None or len(prev_item) > len(item) @skip_pypy @@ -201,7 +201,7 @@ class TestSQLiteDict(BaseStorageTest): assert len(items) == limit or 100 prev_item = None - for i, item in enumerate(items): + for item in items: assert prev_item is None or prev_item.expires < item.expires @skip_pypy @@ -223,7 +223,7 @@ class TestSQLiteDict(BaseStorageTest): assert len(items) == 50 prev_item = None - for i, item in enumerate(items): + for item in items: assert prev_item is None or prev_item.expires < item.expires assert item.status_code % 2 == 0 @@ -345,7 +345,7 @@ class TestSQLiteCache(BaseCacheTest): assert len(items) == 100 prev_item = None - for i, item in enumerate(items): + for item in items: assert prev_item is None or prev_item.expires < item.expires assert item.cache_key assert not item.is_expired diff --git a/tests/integration/test_upgrade.py b/tests/integration/test_upgrade.py index 162024e..6774ec4 100644 --- a/tests/integration/test_upgrade.py +++ b/tests/integration/test_upgrade.py @@ -19,5 +19,5 @@ def test_version_upgrade(db_path, tempfile_path): session = CachedSession(tempfile_path) for response_format in HTTPBIN_FORMATS: - session.get(httpbin(response_format)).from_cache + session.get(httpbin(response_format)) assert session.get(httpbin(response_format)).from_cache is True diff --git a/tests/unit/models/test_response.py b/tests/unit/models/test_response.py index d7f40b9..71517ce 100644 --- a/tests/unit/models/test_response.py +++ b/tests/unit/models/test_response.py @@ -29,7 +29,7 @@ def test_history(mock_session): original_response.history = [mock_session.get(MOCKED_URL)] * 3 response = CachedResponse.from_response(original_response) assert len(response.history) == 3 - assert all([isinstance(r, CachedResponse) for r in response.history]) + assert all(isinstance(r, CachedResponse) for r in response.history) @pytest.mark.parametrize( @@ -118,7 +118,7 @@ def test_str(mock_session): response = CachedResponse.from_response(mock_session.get(MOCKED_URL)) response._content = b'1010' expected_values = ['GET', MOCKED_URL, 200, '4 bytes', 'created', 'expires', 'fresh'] - assert all([str(v) in str(response) for v in expected_values]) + assert all(str(v) in str(response) for v in expected_values) def test_repr(mock_session): @@ -127,7 +127,7 @@ def test_repr(mock_session): expected_values = ['GET', MOCKED_URL, 200, 'ISO-8859-1', response.headers] print(repr(response)) assert repr(response).startswith('CachedResponse(') and repr(response).endswith(')') - assert all([str(v) in repr(response) for v in expected_values]) + assert all(str(v) in repr(response) for v in expected_values) @pytest.mark.parametrize( diff --git a/tests/unit/test_patcher.py b/tests/unit/test_patcher.py index 8977271..422f9a0 100644 --- a/tests/unit/test_patcher.py +++ b/tests/unit/test_patcher.py @@ -57,7 +57,7 @@ def test_clear__not_installed(mock_clear): @patch.object(CachedSession, 'request') def test_disabled(cached_request, original_request, installed_session): with requests_cache.disabled(): - for i in range(3): + for _ in range(3): requests.get('some_url') assert cached_request.call_count == 0 assert original_request.call_count == 3 @@ -67,7 +67,7 @@ def test_disabled(cached_request, original_request, installed_session): @patch.object(CachedSession, 'request') def test_enabled(cached_request, original_request, tempfile_path): with requests_cache.enabled(tempfile_path): - for i in range(3): + for _ in range(3): requests.get('some_url') assert cached_request.call_count == 3 assert original_request.call_count == 0 diff --git a/tests/unit/test_session.py b/tests/unit/test_session.py index 0c5b736..895702b 100644 --- a/tests/unit/test_session.py +++ b/tests/unit/test_session.py @@ -439,7 +439,7 @@ def test_stale_if_error__max_stale(mock_session): mock_session.settings.stale_if_error = timedelta(seconds=15) mock_session.settings.expire_after = datetime.utcnow() - timedelta(seconds=10) mock_session.settings.allowable_codes = (200,) - mock_session.get(MOCKED_URL_200_404).from_cache + mock_session.get(MOCKED_URL_200_404) response = mock_session.get(MOCKED_URL_200_404) assert response.from_cache is True @@ -459,7 +459,7 @@ def test_old_data_on_error(): def test_cache_disabled(mock_session): mock_session.get(MOCKED_URL) with mock_session.cache_disabled(): - for i in range(2): + for _ in range(2): assert mock_session.get(MOCKED_URL).from_cache is False assert mock_session.get(MOCKED_URL).from_cache is True @@ -469,7 +469,7 @@ def test_cache_disabled__nested(mock_session): with mock_session.cache_disabled(): mock_session.get(MOCKED_URL) with mock_session.cache_disabled(): - for i in range(2): + for _ in range(2): assert mock_session.get(MOCKED_URL).from_cache is False assert mock_session.get(MOCKED_URL).from_cache is True @@ -616,7 +616,7 @@ def test_hooks(mock_session): assert r.from_cache is True return r - for i in range(5): + for _ in range(5): mock_session.get(MOCKED_URL, hooks={hook: hook_func}) assert state[hook] == 5 |