Skip to content

Commit 4b1dd41

Browse files
committed
Merge branch 'deprec-fix' into modernize
2 parents 3352cbc + f918c71 commit 4b1dd41

File tree

4 files changed

+50
-13
lines changed

4 files changed

+50
-13
lines changed

.github/workflows/main.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,14 @@ jobs:
1111

1212
runs-on: ubuntu-latest
1313
strategy:
14+
fail-fast: false
1415
matrix:
15-
python-version: [3.5, 3.6, 3.7, 3.8, 3.9]
16+
include:
17+
- python-version: "3.9"
18+
- python-version: "3.10"
19+
- python-version: "3.11"
20+
- python-version: "3.12"
21+
- python-version: "3.13"
1622

1723
steps:
1824
- uses: actions/checkout@v2
@@ -21,7 +27,7 @@ jobs:
2127
sudo apt-get install libdb-dev
2228
2329
- name: Set up Python ${{ matrix.python-version }}
24-
uses: actions/setup-python@v2
30+
uses: actions/setup-python@v5
2531
with:
2632
python-version: ${{ matrix.python-version }}
2733
- name: Cache pip
@@ -38,4 +44,4 @@ jobs:
3844
pip install -r tests/requirements-test.txt
3945
- name: Test with pytest
4046
run: |
41-
pytest
47+
pytest

scrapy_deltafetch/middleware.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from scrapy.item import Item
1010
from scrapy.utils.project import data_path
1111
from scrapy.utils.python import to_bytes
12-
from scrapy.utils.request import request_fingerprint
1312

1413
logger = logging.getLogger(__name__)
1514

@@ -39,6 +38,14 @@ def from_crawler(cls, crawler): # noqa: D102
3938
o = cls(dir, reset, crawler.stats)
4039
crawler.signals.connect(o.spider_opened, signal=signals.spider_opened)
4140
crawler.signals.connect(o.spider_closed, signal=signals.spider_closed)
41+
42+
try:
43+
o.fingerprint = crawler.request_fingerprinter.fingerprint
44+
except AttributeError:
45+
from scrapy.utils.request import request_fingerprint
46+
47+
o.fingerprint = request_fingerprint
48+
4249
return o
4350

4451
def spider_opened(self, spider): # noqa: D102
@@ -78,7 +85,7 @@ def process_spider_output(self, response, result, spider): # noqa: D102
7885
yield r
7986

8087
def _get_key(self, request):
81-
key = request.meta.get("deltafetch_key") or request_fingerprint(request)
88+
key = request.meta.get("deltafetch_key") or self.fingerprint(request)
8289
return to_bytes(key)
8390

8491
def _is_enabled_for_request(self, request):

setup.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@
1919
"Operating System :: OS Independent",
2020
"Programming Language :: Python",
2121
"Programming Language :: Python :: 3",
22-
"Programming Language :: Python :: 3.5",
23-
"Programming Language :: Python :: 3.6",
24-
"Programming Language :: Python :: 3.7",
25-
"Programming Language :: Python :: 3.8",
2622
"Programming Language :: Python :: 3.9",
23+
"Programming Language :: Python :: 3.10",
24+
"Programming Language :: Python :: 3.11",
25+
"Programming Language :: Python :: 3.12",
26+
"Programming Language :: Python :: 3.13",
2727
],
2828
install_requires=["Scrapy>=1.1.0"],
29+
python_requires=">=3.9",
2930
)

tests/test_deltafetch.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,17 @@
1111
from scrapy.spiders import Spider
1212
from scrapy.statscollectors import StatsCollector
1313
from scrapy.utils.python import to_bytes
14-
from scrapy.utils.request import request_fingerprint
1514
from scrapy.utils.test import get_crawler
1615

16+
try:
17+
from scrapy.utils.request import request_fingerprint
18+
19+
_legacy_fingerprint = True
20+
except ImportError:
21+
from scrapy.utils.request import RequestFingerprinter
22+
23+
_legacy_fingerprint = False
24+
1725
from scrapy_deltafetch.middleware import DeltaFetch
1826

1927

@@ -176,7 +184,12 @@ def test_process_spider_output(self):
176184

177185
def test_process_spider_output_with_ignored_request(self):
178186
self._create_test_db()
179-
mw = self.mwcls(self.temp_dir, reset=False, stats=self.stats)
187+
settings = {
188+
"DELTAFETCH_DIR": self.temp_dir,
189+
"DELTAFETCH_ENABLED": True,
190+
}
191+
crawler = get_crawler(Spider, settings_dict=settings)
192+
mw = self.mwcls.from_crawler(crawler)
180193
mw.spider_opened(self.spider)
181194
response = mock.Mock()
182195
response.request = Request("http://url")
@@ -298,9 +311,19 @@ def __init__(self, dir, reset=False, *args, **kwargs):
298311
assert self.stats.get_value("deltafetch/stored") is None
299312

300313
def test_get_key(self):
301-
mw = self.mwcls(self.temp_dir, reset=True)
314+
settings = {
315+
"DELTAFETCH_DIR": self.temp_dir,
316+
"DELTAFETCH_ENABLED": True,
317+
"DELTAFETCH_RESET": True,
318+
}
319+
crawler = get_crawler(Spider, settings_dict=settings)
320+
mw = self.mwcls.from_crawler(crawler)
302321
test_req1 = Request("http://url1")
303-
assert mw._get_key(test_req1) == to_bytes(request_fingerprint(test_req1))
322+
if _legacy_fingerprint:
323+
fingerprint = request_fingerprint
324+
else:
325+
fingerprint = RequestFingerprinter.from_crawler(crawler).fingerprint
326+
assert mw._get_key(test_req1) == to_bytes(fingerprint(test_req1))
304327
test_req2 = Request("http://url2", meta={"deltafetch_key": b"dfkey1"})
305328
assert mw._get_key(test_req2) == b"dfkey1"
306329

0 commit comments

Comments
 (0)