From 532cd1d93ed58f038346ca6b753462563c85b489 Mon Sep 17 00:00:00 2001 From: Aditya Date: Fri, 20 Mar 2020 17:36:49 +0530 Subject: [PATCH] [fix] zope interface 5.0.0 unsupported --- scrapy/crawler.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/scrapy/crawler.py b/scrapy/crawler.py index 77a13d0c1..20990ea41 100644 --- a/scrapy/crawler.py +++ b/scrapy/crawler.py @@ -4,7 +4,15 @@ import signal import warnings from twisted.internet import defer -from zope.interface.verify import DoesNotImplement, verifyClass +from zope.interface.exceptions import DoesNotImplement + +try: + # zope >= 5.0 only supports MultipleInvalid + from zope.interface.exceptions import MultipleInvalid +except ImportError: + MultipleInvalid = None + +from zope.interface.verify import verifyClass from scrapy import signals, Spider from scrapy.core.engine import ExecutionEngine @@ -124,9 +132,10 @@ class CrawlerRunner: """ Get SpiderLoader instance from settings """ cls_path = settings.get('SPIDER_LOADER_CLASS') loader_cls = load_object(cls_path) + excs = (DoesNotImplement, MultipleInvalid) if MultipleInvalid else DoesNotImplement try: verifyClass(ISpiderLoader, loader_cls) - except DoesNotImplement: + except excs: warnings.warn( 'SPIDER_LOADER_CLASS (previously named SPIDER_MANAGER_CLASS) does ' 'not fully implement scrapy.interfaces.ISpiderLoader interface. '