scrapy-seleniumbase-cdp 2.0.3__tar.gz → 2.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,7 +29,7 @@ jobs:
29
29
  - name: Set up Python
30
30
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
31
31
  with:
32
- python-version: '3.14.3'
32
+ python-version: '3.14.4'
33
33
 
34
34
  - name: Install commitizen
35
35
  run: pip install commitizen
@@ -20,7 +20,7 @@ jobs:
20
20
  - name: Set up Python
21
21
  uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
22
22
  with:
23
- python-version: '3.14.3'
23
+ python-version: '3.14.4'
24
24
 
25
25
  - name: Install build tools
26
26
  run: |
@@ -31,7 +31,7 @@ jobs:
31
31
  run: python -m build
32
32
 
33
33
  - name: Generate changelog
34
- uses: orhun/git-cliff-action@c93ef52f3d0ddcdcc9bd5447d98d458a11cd4f72 # v4
34
+ uses: orhun/git-cliff-action@f50e11560dce63f7c33227798f90b924471a88b5 # v4
35
35
  with:
36
36
  args: -vv --latest --strip all
37
37
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scrapy-seleniumbase-cdp
3
- Version: 2.0.3
3
+ Version: 2.0.4
4
4
  Summary: Scrapy downloader middleware that uses SeleniumBase's pure CDP mode to make requests.
5
5
  Project-URL: Homepage, https://github.com/nyg/scrapy-seleniumbase-cdp
6
6
  Project-URL: Issues, https://github.com/nyg/scrapy-seleniumbase-cdp/issues
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "scrapy-seleniumbase-cdp"
3
- version = "2.0.3"
3
+ version = "2.0.4"
4
4
  authors = [
5
5
  { name = "nyg" },
6
6
  ]
@@ -34,7 +34,7 @@ build-backend = "hatchling.build"
34
34
 
35
35
  [tool.commitizen]
36
36
  name = "cz_conventional_commits"
37
- version = "2.0.3"
37
+ version = "2.0.4"
38
38
  tag_format = "v$version"
39
39
  bump_message = "chore(release): bump version from $current_version to $new_version"
40
40
  version_files = [
@@ -9,7 +9,6 @@ from mycdp.accessibility import LoadComplete
9
9
  from mycdp.network import ResponseReceived
10
10
  from scrapy import Request, signals
11
11
  from scrapy.crawler import Crawler
12
- from scrapy.exceptions import IgnoreRequest
13
12
  from scrapy.http import HtmlResponse
14
13
  from seleniumbase.undetected import cdp_driver
15
14
  from seleniumbase.undetected.cdp_driver.browser import Browser
@@ -125,11 +124,11 @@ class SeleniumBaseAsyncCDPMiddleware:
125
124
 
126
125
  try:
127
126
  return await self._process_request(request, status_event, page_loaded_event, status)
128
- except IgnoreRequest:
127
+ except TimeoutError:
129
128
  raise
130
129
  except Exception as e:
131
130
  logger.exception(f'Error processing request: {e}')
132
- raise IgnoreRequest(f'Error processing request: {e}')
131
+ raise
133
132
  finally:
134
133
  tab.handlers.get(ResponseReceived, []).remove(on_response_received)
135
134
  tab.handlers.get(LoadComplete, []).remove(on_load_complete)
@@ -154,7 +153,7 @@ class SeleniumBaseAsyncCDPMiddleware:
154
153
  try:
155
154
  await asyncio.wait_for(asyncio.gather(status_event.wait(), page_loaded_event.wait()), timeout=request.page_load_timeout)
156
155
  except TimeoutError:
157
- logger.warning(f'Timed out waiting for page to load: {request.url}')
156
+ logger.warning(f'timed out waiting for page to load: {request.url}')
158
157
 
159
158
  status_code = status['code']
160
159
  if status_code in request.captcha_blocked_codes:
@@ -169,7 +168,7 @@ class SeleniumBaseAsyncCDPMiddleware:
169
168
  break
170
169
  logger.debug(f'captcha solved on attempt {attempt + 1}/{request.captcha_max_attempts}: {request.url}')
171
170
  else:
172
- logger.warning(f'Max captcha solve attempts ({request.captcha_max_attempts}) reached for {request.url}')
171
+ logger.warning(f'max captcha solve attempts ({request.captcha_max_attempts}) reached for {request.url}')
173
172
 
174
173
  await self._wait_for_element(tab, request)
175
174
  await self._execute_callback(request)
@@ -200,14 +199,13 @@ class SeleniumBaseAsyncCDPMiddleware:
200
199
  if not request.wait_for_element:
201
200
  return
202
201
 
203
- logger.debug(f'waiting for element "{request.wait_for_element}" (timeout: {request.element_timeout}s): {request.url}')
204
-
205
202
  try:
203
+ logger.debug(f'waiting for element "{request.wait_for_element}" (timeout: {request.element_timeout}s): {request.url}')
206
204
  await tab.wait_for(selector=request.wait_for_element, timeout=request.element_timeout)
207
205
  except TimeoutError:
208
- logger.error(f'Timed out waiting for element "{request.wait_for_element}" on {request.url}')
206
+ logger.error(f'timed out waiting for element "{request.wait_for_element}" on {request.url}')
209
207
  await SeleniumBaseAsyncCDPMiddleware._take_error_screenshot(tab, request)
210
- raise IgnoreRequest(f'Element "{request.wait_for_element}" not found within {request.element_timeout} seconds')
208
+ raise
211
209
 
212
210
  @_handle_errors("Error executing browser callback")
213
211
  async def _execute_callback(self, request: SeleniumBaseRequest):
@@ -243,11 +241,11 @@ class SeleniumBaseAsyncCDPMiddleware:
243
241
 
244
242
  if request.screenshot.get('path'):
245
243
  path = await tab.save_screenshot(request.screenshot.get('path'), image_format, full_page)
246
- logger.debug(f'Screenshot saved in {path}')
244
+ logger.debug(f'screenshot saved in {path}')
247
245
  else:
248
246
  command = mycdp.page.capture_screenshot(format_=image_format, capture_beyond_viewport=full_page)
249
247
  request.meta['screenshot'] = b64decode(await tab.send(command))
250
- logger.debug('Screenshot saved in response.meta["screenshot"]')
248
+ logger.debug('screenshot saved in response.meta["screenshot"]')
251
249
 
252
250
  @staticmethod
253
251
  @_handle_errors("Error taking error screenshot")