* [gentoo-commits] repo/proj/guru:dev commit in: dev-python/scrapy/files/, dev-python/scrapy/
@ 2023-12-30 20:24 Lucio Sauer
0 siblings, 0 replies; only message in thread
From: Lucio Sauer @ 2023-12-30 20:24 UTC (permalink / raw
To: gentoo-commits
commit: 8dbc037bbfab1e35bf3b4eb14bce705f11c74c45
Author: Lucio Sauer <watermanpaint <AT> posteo <DOT> net>
AuthorDate: Sat Dec 30 20:02:09 2023 +0000
Commit: Lucio Sauer <watermanpaint <AT> posteo <DOT> net>
CommitDate: Sat Dec 30 20:11:36 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=8dbc037b
dev-python/scrapy: backport lift on dependency restriction
dev-python/twisted::gentoo surpassed max. allowed version.
Enable more tests.
Fix DEPEND/BDEPEND confusion.
Update IUSE and RESTRICT to account for the test USE flag.
Remove superfluous ${PYTHON_DEPS}, as it's already inherited.
Signed-off-by: Lucio Sauer <watermanpaint <AT> posteo.net>
.../scrapy-2.11.0-lift-twisted-restriction.patch | 99 ++++++++++++++++++++++
dev-python/scrapy/scrapy-2.11.0-r1.ebuild | 61 +++++++++++++
2 files changed, 160 insertions(+)
diff --git a/dev-python/scrapy/files/scrapy-2.11.0-lift-twisted-restriction.patch b/dev-python/scrapy/files/scrapy-2.11.0-lift-twisted-restriction.patch
new file mode 100644
index 0000000000..c3ef232870
--- /dev/null
+++ b/dev-python/scrapy/files/scrapy-2.11.0-lift-twisted-restriction.patch
@@ -0,0 +1,99 @@
+Backport commits 720f351a3eea5e5bfa83a6eaf50210cd1fa43992^..0630e4aaa10c3fb8c79c2542a229f5c0632cddde.
+At the time of writing, ::gentoo no longer has <dev-python/twisted-23.8.0.
+These commits refactor the signal handling logic to support newer versions of Twisted.
+
+Author: Lucio Sauer <watermanpaint@posteo.net>
+--- a/scrapy/crawler.py
++++ b/scrapy/crawler.py
+@@ -404,8 +404,8 @@ class CrawlerProcess(CrawlerRunner):
+ :param bool stop_after_crawl: stop or not the reactor when all
+ crawlers have finished
+
+- :param bool install_signal_handlers: whether to install the shutdown
+- handlers (default: True)
++ :param bool install_signal_handlers: whether to install the OS signal
++ handlers from Twisted and Scrapy (default: True)
+ """
+ from twisted.internet import reactor
+
+@@ -416,15 +416,17 @@ class CrawlerProcess(CrawlerRunner):
+ return
+ d.addBoth(self._stop_reactor)
+
+- if install_signal_handlers:
+- install_shutdown_handlers(self._signal_shutdown)
+ resolver_class = load_object(self.settings["DNS_RESOLVER"])
+ resolver = create_instance(resolver_class, self.settings, self, reactor=reactor)
+ resolver.install_on_reactor()
+ tp = reactor.getThreadPool()
+ tp.adjustPoolsize(maxthreads=self.settings.getint("REACTOR_THREADPOOL_MAXSIZE"))
+ reactor.addSystemEventTrigger("before", "shutdown", self.stop)
+- reactor.run(installSignalHandlers=False) # blocking call
++ if install_signal_handlers:
++ reactor.addSystemEventTrigger(
++ "after", "startup", install_shutdown_handlers, self._signal_shutdown
++ )
++ reactor.run(installSignalHandlers=install_signal_handlers) # blocking call
+
+ def _graceful_stop_reactor(self) -> Deferred:
+ d = self.stop()
+--- a/scrapy/utils/ossignal.py
++++ b/scrapy/utils/ossignal.py
+@@ -19,13 +19,10 @@ def install_shutdown_handlers(
+ function: SignalHandlerT, override_sigint: bool = True
+ ) -> None:
+ """Install the given function as a signal handler for all common shutdown
+- signals (such as SIGINT, SIGTERM, etc). If override_sigint is ``False`` the
+- SIGINT handler won't be install if there is already a handler in place
+- (e.g. Pdb)
++ signals (such as SIGINT, SIGTERM, etc). If ``override_sigint`` is ``False`` the
++ SIGINT handler won't be installed if there is already a handler in place
++ (e.g. Pdb)
+ """
+- from twisted.internet import reactor
+-
+- reactor._handleSignals()
+ signal.signal(signal.SIGTERM, function)
+ if signal.getsignal(signal.SIGINT) == signal.default_int_handler or override_sigint:
+ signal.signal(signal.SIGINT, function)
+--- a/scrapy/utils/testproc.py
++++ b/scrapy/utils/testproc.py
+@@ -2,7 +2,7 @@ from __future__ import annotations
+
+ import os
+ import sys
+-from typing import Iterable, Optional, Tuple, cast
++from typing import Iterable, List, Optional, Tuple, cast
+
+ from twisted.internet.defer import Deferred
+ from twisted.internet.error import ProcessTerminated
+@@ -26,14 +26,15 @@ class ProcessTest:
+ env = os.environ.copy()
+ if settings is not None:
+ env["SCRAPY_SETTINGS_MODULE"] = settings
++ assert self.command
+ cmd = self.prefix + [self.command] + list(args)
+ pp = TestProcessProtocol()
+- pp.deferred.addBoth(self._process_finished, cmd, check_code)
++ pp.deferred.addCallback(self._process_finished, cmd, check_code)
+ reactor.spawnProcess(pp, cmd[0], cmd, env=env, path=self.cwd)
+ return pp.deferred
+
+ def _process_finished(
+- self, pp: TestProcessProtocol, cmd: str, check_code: bool
++ self, pp: TestProcessProtocol, cmd: List[str], check_code: bool
+ ) -> Tuple[int, bytes, bytes]:
+ if pp.exitcode and check_code:
+ msg = f"process {cmd} exit with code {pp.exitcode}"
+--- a/setup.py
++++ b/setup.py
+@@ -6,8 +6,7 @@ version = (Path(__file__).parent / "scrapy/VERSION").read_text("ascii").strip()
+
+
+ install_requires = [
+- # 23.8.0 incompatibility: https://github.com/scrapy/scrapy/issues/6024
+- "Twisted>=18.9.0,<23.8.0",
++ "Twisted>=18.9.0",
+ "cryptography>=36.0.0",
+ "cssselect>=0.9.1",
+ "itemloaders>=1.0.1",
diff --git a/dev-python/scrapy/scrapy-2.11.0-r1.ebuild b/dev-python/scrapy/scrapy-2.11.0-r1.ebuild
new file mode 100644
index 0000000000..c019441a6d
--- /dev/null
+++ b/dev-python/scrapy/scrapy-2.11.0-r1.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+DISTUTILS_USE_PEP517=setuptools
+inherit distutils-r1
+
+DESCRIPTION="A high-level Web Crawling and Web Scraping framework"
+HOMEPAGE="https://scrapy.org/"
+SRC_URI="https://github.com/scrapy/scrapy/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT=0
+KEYWORDS="~amd64"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+# The 'PyDispatcher>=2.0.5' distribution was not found and is required by Scrapy
+# https://bugs.gentoo.org/684734
+RDEPEND="dev-python/cssselect[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ <dev-python/priority-2.0.0[${PYTHON_USEDEP}]
+ dev-python/h2[${PYTHON_USEDEP}]
+ dev-python/itemadapter[${PYTHON_USEDEP}]
+ dev-python/itemloaders[${PYTHON_USEDEP}]
+ dev-python/lxml[${PYTHON_USEDEP}]
+ dev-python/parsel[${PYTHON_USEDEP}]
+ dev-python/protego[${PYTHON_USEDEP}]
+ >=dev-python/pydispatcher-2.0.5[${PYTHON_USEDEP}]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ dev-python/queuelib[${PYTHON_USEDEP}]
+ dev-python/service-identity[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+ dev-python/tldextract[${PYTHON_USEDEP}]
+ >=dev-python/twisted-18.9.0[${PYTHON_USEDEP}]
+ dev-python/w3lib[${PYTHON_USEDEP}]
+ dev-python/zope-interface[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ ${RDEPEND}
+ dev-python/testfixtures[${PYTHON_USEDEP}]
+ dev-python/uvloop[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES="${FILESDIR}"/${P}-lift-twisted-restriction.patch
+
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # these require (local) network access
+ tests/test_command_check.py
+ tests/test_feedexport.py
+ tests/test_pipeline_files.py::TestFTPFileStore::test_persist
+ # Flaky test: https://github.com/scrapy/scrapy/issues/6193
+ tests/test_crawl.py::CrawlTestCase::test_start_requests_laziness
+ )
+EPYTEST_IGNORE=( docs )
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2023-12-30 20:24 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-30 20:24 [gentoo-commits] repo/proj/guru:dev commit in: dev-python/scrapy/files/, dev-python/scrapy/ Lucio Sauer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox