Exclude deprecated code from coverage. (#7241)

This commit is contained in:
Andrey Rakhmatullin 2026-02-06 13:15:07 +05:00 committed by GitHub
parent 6a42bc6450
commit 16929c0991
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 40 additions and 27 deletions

View File

@ -147,8 +147,8 @@ source = [
[tool.coverage.report]
exclude_also = [
"if TYPE_CHECKING:",
"@(abc\\.)?abstractmethod",
'\A(?s:.*# pragma: no file cover.*)\Z',
]
[tool.pylint.MASTER]

View File

@ -1,3 +1,4 @@
# pragma: no file cover
import warnings
from scrapy.core.downloader.handlers.http10 import HTTP10DownloadHandler

View File

@ -159,7 +159,9 @@ class ExecutionEngine:
)
return scheduler_cls
def start(self, _start_request_processing=True) -> Deferred[None]:
def start(
self, _start_request_processing=True
) -> Deferred[None]: # pragma: no cover
warnings.warn(
"ExecutionEngine.start() is deprecated, use start_async() instead",
ScrapyDeprecationWarning,
@ -197,7 +199,7 @@ class ExecutionEngine:
self._start_request_processing_awaitable = Deferred.fromCoroutine(coro)
await maybe_deferred_to_future(self._closewait)
def stop(self) -> Deferred[None]:
def stop(self) -> Deferred[None]: # pragma: no cover
warnings.warn(
"ExecutionEngine.stop() is deprecated, use stop_async() instead",
ScrapyDeprecationWarning,
@ -233,7 +235,7 @@ class ExecutionEngine:
if self._closewait:
self._closewait.callback(None)
def close(self) -> Deferred[None]:
def close(self) -> Deferred[None]: # pragma: no cover
warnings.warn(
"ExecutionEngine.close() is deprecated, use close_async() instead",
ScrapyDeprecationWarning,
@ -510,7 +512,9 @@ class ExecutionEngine:
finally:
self._slot.nextcall.schedule()
def open_spider(self, spider: Spider, close_if_idle: bool = True) -> Deferred[None]:
def open_spider(
self, spider: Spider, close_if_idle: bool = True
) -> Deferred[None]: # pragma: no cover
warnings.warn(
"ExecutionEngine.open_spider() is deprecated, use open_spider_async() instead",
ScrapyDeprecationWarning,
@ -573,7 +577,9 @@ class ExecutionEngine:
assert isinstance(ex, CloseSpider) # typing
_schedule_coro(self.close_spider_async(reason=ex.reason))
def close_spider(self, spider: Spider, reason: str = "cancelled") -> Deferred[None]:
def close_spider(
self, spider: Spider, reason: str = "cancelled"
) -> Deferred[None]: # pragma: no cover
warnings.warn(
"ExecutionEngine.close_spider() is deprecated, use close_spider_async() instead",
ScrapyDeprecationWarning,

View File

@ -426,7 +426,7 @@ class Scheduler(BaseScheduler):
key="",
start_queue_cls=self._smqclass,
)
except TypeError:
except TypeError: # pragma: no cover
warn(
f"The __init__ method of {global_object_name(self.pqclass)} "
f"does not support a `start_queue_cls` keyword-only "
@ -455,7 +455,7 @@ class Scheduler(BaseScheduler):
startprios=state,
start_queue_cls=self._sdqclass,
)
except TypeError:
except TypeError: # pragma: no cover
warn(
f"The __init__ method of {global_object_name(self.pqclass)} "
f"does not support a `start_queue_cls` keyword-only "

View File

@ -151,7 +151,9 @@ class Scraper:
else:
self._itemproc_has_async[method] = True
def open_spider(self, spider: Spider | None = None) -> Deferred[None]:
def open_spider(
self, spider: Spider | None = None
) -> Deferred[None]: # pragma: no cover
warnings.warn(
"Scraper.open_spider() is deprecated, use open_spider_async() instead",
ScrapyDeprecationWarning,
@ -176,7 +178,9 @@ class Scraper:
self.itemproc.open_spider(self.crawler.spider)
)
def close_spider(self, spider: Spider | None = None) -> Deferred[None]:
def close_spider(
self, spider: Spider | None = None
) -> Deferred[None]: # pragma: no cover
warnings.warn(
"Scraper.close_spider() is deprecated, use close_spider_async() instead",
ScrapyDeprecationWarning,
@ -294,7 +298,7 @@ class Scraper:
def call_spider(
self, result: Response | Failure, request: Request, spider: Spider | None = None
) -> Deferred[Iterable[Any] | AsyncIterator[Any]]:
) -> Deferred[Iterable[Any] | AsyncIterator[Any]]: # pragma: no cover
warnings.warn(
"Scraper.call_spider() is deprecated, use call_spider_async() instead",
ScrapyDeprecationWarning,
@ -388,7 +392,7 @@ class Scraper:
request: Request,
response: Response | Failure,
spider: Spider | None = None,
) -> Deferred[None]:
) -> Deferred[None]: # pragma: no cover
"""Pass items/requests produced by a callback to ``_process_spidermw_output()`` in parallel."""
warnings.warn(
"Scraper.handle_spider_output() is deprecated, use handle_spider_output_async() instead",
@ -467,7 +471,7 @@ class Scraper:
def start_itemproc(
self, item: Any, *, response: Response | Failure | None
) -> Deferred[None]:
) -> Deferred[None]: # pragma: no cover
"""Send *item* to the item pipelines for processing.
*response* is the source of the item data. If the item does not come

View File

@ -383,7 +383,7 @@ class SpiderMiddlewareManager(MiddlewareManager):
response: Response,
request: Request,
spider: Spider,
) -> Deferred[MutableChain[_T] | MutableAsyncChain[_T]]:
) -> Deferred[MutableChain[_T] | MutableAsyncChain[_T]]: # pragma: no cover
warn(
"SpiderMiddlewareManager.scrape_response() is deprecated, use scrape_response_async() instead",
ScrapyDeprecationWarning,

View File

@ -43,7 +43,7 @@ _P = ParamSpec("_P")
_DEFER_DELAY = 0.1
def defer_fail(_failure: Failure) -> Deferred[Any]:
def defer_fail(_failure: Failure) -> Deferred[Any]: # pragma: no cover
"""Same as twisted.internet.defer.fail but delay calling errback until
next reactor loop
@ -64,7 +64,7 @@ def defer_fail(_failure: Failure) -> Deferred[Any]:
return d
def defer_succeed(result: _T) -> Deferred[_T]:
def defer_succeed(result: _T) -> Deferred[_T]: # pragma: no cover
"""Same as twisted.internet.defer.succeed but delay calling callback until
next reactor loop
@ -99,7 +99,7 @@ async def _defer_sleep_async() -> None:
await d
def defer_result(result: Any) -> Deferred[Any]:
def defer_result(result: Any) -> Deferred[Any]: # pragma: no cover
warnings.warn(
"scrapy.utils.defer.defer_result() is deprecated, use"
" twisted.internet.defer.success() and twisted.internet.defer.fail(),"
@ -137,7 +137,7 @@ def mustbe_deferred(
f: Callable[_P, Deferred[_T] | _T],
*args: _P.args,
**kw: _P.kwargs,
) -> Deferred[_T]:
) -> Deferred[_T]: # pragma: no cover
"""Same as twisted.internet.defer.maybeDeferred, but delay calling
callback/errback to next reactor loop
"""
@ -299,7 +299,7 @@ def process_chain(
input: _T, # noqa: A002
*a: _P.args,
**kw: _P.kwargs,
) -> Deferred[_T]:
) -> Deferred[_T]: # pragma: no cover
"""Return a Deferred built by chaining the given callbacks"""
warnings.warn(
"process_chain() is deprecated.",
@ -452,7 +452,7 @@ def _maybeDeferred_coro(
return result
if asyncio.isfuture(result) or inspect.isawaitable(result):
return deferred_from_coro(result)
if isinstance(result, failure.Failure):
if isinstance(result, failure.Failure): # pragma: no cover
if warn:
warnings.warn(
f"{global_object_name(f)} returned a Failure, this is deprecated."

View File

@ -177,7 +177,7 @@ def csviter(
quotechar is the character used to enclosure fields on the given obj.
"""
if encoding is not None:
if encoding is not None: # pragma: no cover
warn(
"The encoding argument of csviter() is ignored and will be removed"
" in a future Scrapy version.",

View File

@ -37,7 +37,7 @@ if TYPE_CHECKING:
_T = TypeVar("_T")
def assert_gcs_environ() -> None:
def assert_gcs_environ() -> None: # pragma: no cover
warnings.warn(
"The assert_gcs_environ() function is deprecated and will be removed in a future version of Scrapy."
" Check GCS_PROJECT_ID directly.",
@ -48,7 +48,7 @@ def assert_gcs_environ() -> None:
raise SkipTest("GCS_PROJECT_ID not found")
def skip_if_no_boto() -> None:
def skip_if_no_boto() -> None: # pragma: no cover
warnings.warn(
"The skip_if_no_boto() function is deprecated and will be removed in a future version of Scrapy."
" Check scrapy.utils.boto.is_botocore_available() directly.",
@ -61,7 +61,7 @@ def skip_if_no_boto() -> None:
def get_gcs_content_and_delete(
bucket: Any, path: str
) -> tuple[bytes, list[dict[str, str]], Any]:
) -> tuple[bytes, list[dict[str, str]], Any]: # pragma: no cover
from google.cloud import storage # noqa: PLC0415
warnings.warn(
@ -85,7 +85,7 @@ def get_ftp_content_and_delete(
username: str,
password: str,
use_active_mode: bool = False,
) -> bytes:
) -> bytes: # pragma: no cover
warnings.warn(
"The get_ftp_content_and_delete() function is deprecated and will be removed in a future version of Scrapy.",
category=ScrapyDeprecationWarning,
@ -185,7 +185,7 @@ def get_from_asyncio_queue(value: _T) -> Awaitable[_T]:
return getter
def mock_google_cloud_storage() -> tuple[Any, Any, Any]:
def mock_google_cloud_storage() -> tuple[Any, Any, Any]: # pragma: no cover
"""Creates autospec mocks for google-cloud-storage Client, Bucket and Blob
classes and set their proper return values.
"""

View File

@ -1,3 +1,4 @@
# pragma: no file cover
from __future__ import annotations
import os

View File

@ -1,3 +1,4 @@
# pragma: no file cover
import warnings
from urllib.parse import urljoin

View File

@ -34,7 +34,7 @@ def get_versions(
return [(item, _version(item)) for item in software]
def scrapy_components_versions() -> list[tuple[str, str]]:
def scrapy_components_versions() -> list[tuple[str, str]]: # pragma: no cover
warn(
(
"scrapy.utils.versions.scrapy_components_versions() is deprecated, "