diff --git a/docs/topics/downloader-middleware.rst b/docs/topics/downloader-middleware.rst index 77f327b35..eec67ea66 100644 --- a/docs/topics/downloader-middleware.rst +++ b/docs/topics/downloader-middleware.rst @@ -84,7 +84,7 @@ single Python class that defines one or more of the following methods: callback, the response downloaded will be just passed to the original request callback. - If it returns an :exc:`~scrapy.core.exceptions.IgnoreRequest` exception, the + If it returns an :exc:`~scrapy.exceptions.IgnoreRequest` exception, the entire request will be dropped completely and its callback never called. :param request: the request being processed @@ -96,13 +96,13 @@ single Python class that defines one or more of the following methods: .. method:: process_response(request, response, spider) :meth:`process_response` should return a :class:`~scrapy.http.Response` - object or raise a :exc:`~scrapy.core.exceptions.IgnoreRequest` exception. + object or raise a :exc:`~scrapy.exceptions.IgnoreRequest` exception. If it returns a :class:`~scrapy.http.Response` (it could be the same given response, or a brand-new one), that response will continue to be processed with the :meth:`process_response` of the next middleware in the pipeline. - If it returns an :exc:`~scrapy.core.exceptions.IgnoreRequest` exception, the + If it returns an :exc:`~scrapy.exceptions.IgnoreRequest` exception, the response will be dropped completely and its callback never called. :param request: the request that originated the response diff --git a/docs/topics/exceptions.rst b/docs/topics/exceptions.rst index eb7f7686b..d75f28fed 100644 --- a/docs/topics/exceptions.rst +++ b/docs/topics/exceptions.rst @@ -4,8 +4,8 @@ Exceptions ========== -.. module:: scrapy.core.exceptions - :synopsis: Core exceptions +.. module:: scrapy.exceptions + :synopsis: Scrapy exceptions .. _topics-exceptions-ref: diff --git a/docs/topics/extensions.rst b/docs/topics/extensions.rst index 361f74a10..3b997bd1f 100644 --- a/docs/topics/extensions.rst +++ b/docs/topics/extensions.rst @@ -87,7 +87,7 @@ which doesn't need to implement any particular method. All extension initialization code must be performed in the class constructor (``__init__`` method). If that method raises the -:exc:`~scrapy.core.exceptions.NotConfigured` exception, the extension will be +:exc:`~scrapy.exceptions.NotConfigured` exception, the extension will be disabled. Otherwise, the extension will be enabled. Let's take a look at the following example extension which just logs a message diff --git a/docs/topics/images.rst b/docs/topics/images.rst index ca4117d47..12cf00950 100644 --- a/docs/topics/images.rst +++ b/docs/topics/images.rst @@ -135,7 +135,7 @@ Here are the methods that you should override in your custom Images Pipeline: store the downloaded image paths (passed in results) in the ``image_paths`` item field, and we drop the item if it doesn't contain any images:: - from scrapy.core.exceptions import DropItem + from scrapy.exceptions import DropItem def item_completed(self, results, item, info): image_paths = [info['path'] for success, info in results if success] @@ -153,7 +153,7 @@ Here is a full example of the Images Pipeline whose methods are examplified above:: from scrapy.contrib.pipeline.images import ImagesPipeline - from scrapy.core.exceptions import DropItem + from scrapy.exceptions import DropItem from scrapy.http import Request class MyImagesPipeline(ImagesPipeline): diff --git a/docs/topics/item-pipeline.rst b/docs/topics/item-pipeline.rst index a32250fd8..2318a627c 100644 --- a/docs/topics/item-pipeline.rst +++ b/docs/topics/item-pipeline.rst @@ -34,7 +34,7 @@ single Python class that must define the following method: This method is called for every item pipeline component and must either return a :class:`~scrapy.item.Item` (or any descendant class) object or raise a -:exc:`~scrapy.core.exceptions.DropItem` exception. Dropped items are no longer +:exc:`~scrapy.exceptions.DropItem` exception. Dropped items are no longer processed by further pipeline components. @@ -45,7 +45,7 @@ Let's take a look at following hypothetic pipeline that adjusts the ``price`` attribute for those items that do not include VAT (``price_excludes_vat`` attribute), and drops those items which don't contain a price:: - from scrapy.core.exceptions import DropItem + from scrapy.exceptions import DropItem class PricePipeline(object): @@ -83,7 +83,7 @@ spider returns multiples items with the same id:: from scrapy.xlib.pydispatch import dispatcher from scrapy.core import signals - from scrapy.core.exceptions import DropItem + from scrapy.exceptions import DropItem class DuplicatesPipeline(object): def __init__(self): diff --git a/docs/topics/signals.rst b/docs/topics/signals.rst index 75277b203..cf6a864ac 100644 --- a/docs/topics/signals.rst +++ b/docs/topics/signals.rst @@ -91,7 +91,7 @@ item_dropped .. function:: item_dropped(item, spider, exception) Sent after an item has been dropped from the :ref:`topics-item-pipeline` - when some stage raised a :exc:`~scrapy.core.exceptions.DropItem` exception. + when some stage raised a :exc:`~scrapy.exceptions.DropItem` exception. :param item: the item dropped from the :ref:`topics-item-pipeline` :type item: :class:`~scrapy.item.Item` object @@ -100,9 +100,9 @@ item_dropped :type spider: :class:`~scrapy.spider.BaseSpider` object :param exception: the exception (which must be a - :exc:`~scrapy.core.exceptions.DropItem` subclass) which caused the item + :exc:`~scrapy.exceptions.DropItem` subclass) which caused the item to be dropped - :type exception: :exc:`~scrapy.core.exceptions.DropItem` exception + :type exception: :exc:`~scrapy.exceptions.DropItem` exception spider_closed ------------- diff --git a/examples/experimental/googledir/googledir/pipelines.py b/examples/experimental/googledir/googledir/pipelines.py index f775b254c..77472bcee 100644 --- a/examples/experimental/googledir/googledir/pipelines.py +++ b/examples/experimental/googledir/googledir/pipelines.py @@ -3,7 +3,7 @@ # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: http://doc.scrapy.org/topics/item-pipeline.html -from scrapy.core.exceptions import DropItem +from scrapy.exceptions import DropItem class FilterWordsPipeline(object): """ diff --git a/examples/googledir/googledir/pipelines.py b/examples/googledir/googledir/pipelines.py index 4fb10626e..7131144a4 100644 --- a/examples/googledir/googledir/pipelines.py +++ b/examples/googledir/googledir/pipelines.py @@ -1,4 +1,4 @@ -from scrapy.core.exceptions import DropItem +from scrapy.exceptions import DropItem class FilterWordsPipeline(object): """A pipeline for filtering out items which contain certain words in their diff --git a/scrapy/contrib/downloadermiddleware/httpcache.py b/scrapy/contrib/downloadermiddleware/httpcache.py index d1af33d7a..1f27e9907 100644 --- a/scrapy/contrib/downloadermiddleware/httpcache.py +++ b/scrapy/contrib/downloadermiddleware/httpcache.py @@ -8,7 +8,7 @@ import cPickle as pickle from scrapy.xlib.pydispatch import dispatcher from scrapy.core import signals from scrapy.http import Headers -from scrapy.core.exceptions import NotConfigured, IgnoreRequest +from scrapy.exceptions import NotConfigured, IgnoreRequest from scrapy.core.downloader.responsetypes import responsetypes from scrapy.utils.request import request_fingerprint from scrapy.utils.http import headers_dict_to_raw, headers_raw_to_dict diff --git a/scrapy/contrib/downloadermiddleware/httpproxy.py b/scrapy/contrib/downloadermiddleware/httpproxy.py index f2b531d28..6a6a049bf 100644 --- a/scrapy/contrib/downloadermiddleware/httpproxy.py +++ b/scrapy/contrib/downloadermiddleware/httpproxy.py @@ -4,7 +4,7 @@ from urllib2 import _parse_proxy from urlparse import urlunparse from scrapy.utils.httpobj import urlparse_cached -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured class HttpProxyMiddleware(object): diff --git a/scrapy/contrib/downloadermiddleware/redirect.py b/scrapy/contrib/downloadermiddleware/redirect.py index 8bd3887db..1e3e390ff 100644 --- a/scrapy/contrib/downloadermiddleware/redirect.py +++ b/scrapy/contrib/downloadermiddleware/redirect.py @@ -2,7 +2,7 @@ from scrapy import log from scrapy.http import HtmlResponse from scrapy.utils.url import urljoin_rfc from scrapy.utils.response import get_meta_refresh -from scrapy.core.exceptions import IgnoreRequest +from scrapy.exceptions import IgnoreRequest from scrapy.conf import settings diff --git a/scrapy/contrib/downloadermiddleware/robotstxt.py b/scrapy/contrib/downloadermiddleware/robotstxt.py index 1f877708c..1dfff759f 100644 --- a/scrapy/contrib/downloadermiddleware/robotstxt.py +++ b/scrapy/contrib/downloadermiddleware/robotstxt.py @@ -10,7 +10,7 @@ from scrapy.xlib.pydispatch import dispatcher from scrapy.core import signals from scrapy.core.manager import scrapymanager -from scrapy.core.exceptions import NotConfigured, IgnoreRequest +from scrapy.exceptions import NotConfigured, IgnoreRequest from scrapy.http import Request from scrapy.utils.httpobj import urlparse_cached from scrapy.conf import settings diff --git a/scrapy/contrib/downloadermiddleware/stats.py b/scrapy/contrib/downloadermiddleware/stats.py index 64d9e92fc..2f9c61336 100644 --- a/scrapy/contrib/downloadermiddleware/stats.py +++ b/scrapy/contrib/downloadermiddleware/stats.py @@ -1,4 +1,4 @@ -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.utils.request import request_httprepr from scrapy.utils.response import response_httprepr from scrapy.stats import stats diff --git a/scrapy/contrib/itemsampler.py b/scrapy/contrib/itemsampler.py index 9098f09e1..b3ab0d799 100644 --- a/scrapy/contrib/itemsampler.py +++ b/scrapy/contrib/itemsampler.py @@ -28,7 +28,7 @@ import cPickle as pickle from scrapy.xlib.pydispatch import dispatcher from scrapy.core.manager import scrapymanager -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.core import signals from scrapy.utils.response import response_httprepr from scrapy.stats import stats diff --git a/scrapy/contrib/memdebug.py b/scrapy/contrib/memdebug.py index b9f56f01d..587239279 100644 --- a/scrapy/contrib/memdebug.py +++ b/scrapy/contrib/memdebug.py @@ -11,7 +11,7 @@ import libxml2 from scrapy.xlib.pydispatch import dispatcher from scrapy.core import signals -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.mail import MailSender from scrapy.conf import settings from scrapy import log diff --git a/scrapy/contrib/memusage.py b/scrapy/contrib/memusage.py index a2e2ee567..9fee33238 100644 --- a/scrapy/contrib/memusage.py +++ b/scrapy/contrib/memusage.py @@ -14,7 +14,7 @@ from scrapy.xlib.pydispatch import dispatcher from scrapy.core import signals from scrapy import log from scrapy.core.manager import scrapymanager -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.mail import MailSender from scrapy.conf import settings from scrapy.stats import stats diff --git a/scrapy/contrib/pipeline/__init__.py b/scrapy/contrib/pipeline/__init__.py index 5801e86fc..9e839beec 100644 --- a/scrapy/contrib/pipeline/__init__.py +++ b/scrapy/contrib/pipeline/__init__.py @@ -5,7 +5,7 @@ See documentation in docs/item-pipeline.rst """ from scrapy import log -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.item import BaseItem from scrapy.utils.misc import load_object from scrapy.utils.defer import defer_succeed, mustbe_deferred diff --git a/scrapy/contrib/pipeline/fileexport.py b/scrapy/contrib/pipeline/fileexport.py index dcbbcf994..a101ab9fd 100644 --- a/scrapy/contrib/pipeline/fileexport.py +++ b/scrapy/contrib/pipeline/fileexport.py @@ -6,7 +6,7 @@ See documentation in docs/topics/item-pipeline.rst from scrapy.xlib.pydispatch import dispatcher from scrapy.core import signals -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.contrib import exporter from scrapy.conf import settings diff --git a/scrapy/contrib/pipeline/images.py b/scrapy/contrib/pipeline/images.py index af60b1ff1..a878e3a9f 100644 --- a/scrapy/contrib/pipeline/images.py +++ b/scrapy/contrib/pipeline/images.py @@ -21,7 +21,7 @@ from scrapy import log from scrapy.stats import stats from scrapy.utils.misc import md5sum from scrapy.core import signals -from scrapy.core.exceptions import DropItem, NotConfigured, IgnoreRequest +from scrapy.exceptions import DropItem, NotConfigured, IgnoreRequest from scrapy.contrib.pipeline.media import MediaPipeline from scrapy.conf import settings diff --git a/scrapy/contrib/schedulermiddleware/duplicatesfilter.py b/scrapy/contrib/schedulermiddleware/duplicatesfilter.py index b610d41d6..2ba329146 100644 --- a/scrapy/contrib/schedulermiddleware/duplicatesfilter.py +++ b/scrapy/contrib/schedulermiddleware/duplicatesfilter.py @@ -4,7 +4,7 @@ DuplicatesFilterMiddleware: Filter out already visited urls See documentation in docs/topics/scheduler-middleware.rst """ -from scrapy.core.exceptions import IgnoreRequest, NotConfigured +from scrapy.exceptions import IgnoreRequest, NotConfigured from scrapy.utils.misc import load_object from scrapy.conf import settings diff --git a/scrapy/contrib/spiderclosedelay.py b/scrapy/contrib/spiderclosedelay.py index f8e92cfee..4e4bb6921 100644 --- a/scrapy/contrib/spiderclosedelay.py +++ b/scrapy/contrib/spiderclosedelay.py @@ -10,7 +10,7 @@ from collections import defaultdict from scrapy.core import signals from scrapy.core.manager import scrapymanager -from scrapy.core.exceptions import NotConfigured, DontCloseSpider +from scrapy.exceptions import NotConfigured, DontCloseSpider from scrapy.conf import settings diff --git a/scrapy/contrib/spidermiddleware/httperror.py b/scrapy/contrib/spidermiddleware/httperror.py index b76b7494b..86913c02d 100644 --- a/scrapy/contrib/spidermiddleware/httperror.py +++ b/scrapy/contrib/spidermiddleware/httperror.py @@ -3,7 +3,7 @@ HttpError Spider Middleware See documentation in docs/topics/spider-middleware.rst """ -from scrapy.core.exceptions import IgnoreRequest +from scrapy.exceptions import IgnoreRequest class HttpError(IgnoreRequest): diff --git a/scrapy/contrib/spidermiddleware/requestlimit.py b/scrapy/contrib/spidermiddleware/requestlimit.py index 04138588d..4c43cc2ad 100644 --- a/scrapy/contrib/spidermiddleware/requestlimit.py +++ b/scrapy/contrib/spidermiddleware/requestlimit.py @@ -8,7 +8,7 @@ from scrapy.xlib.pydispatch import dispatcher from scrapy.core import signals from scrapy.core.manager import scrapymanager -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.conf import settings from scrapy.http import Request from scrapy import log diff --git a/scrapy/contrib/spidermiddleware/urllength.py b/scrapy/contrib/spidermiddleware/urllength.py index 98e1924cf..aa342a28d 100644 --- a/scrapy/contrib/spidermiddleware/urllength.py +++ b/scrapy/contrib/spidermiddleware/urllength.py @@ -6,7 +6,7 @@ See documentation in docs/topics/spider-middleware.rst from scrapy import log from scrapy.http import Request -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.conf import settings class UrlLengthMiddleware(object): diff --git a/scrapy/contrib/spiders/feed.py b/scrapy/contrib/spiders/feed.py index a80108c5c..b449be977 100644 --- a/scrapy/contrib/spiders/feed.py +++ b/scrapy/contrib/spiders/feed.py @@ -10,7 +10,7 @@ from scrapy.item import BaseItem from scrapy.http import Request from scrapy.utils.iterators import xmliter, csviter from scrapy.selector import XmlXPathSelector, HtmlXPathSelector -from scrapy.core.exceptions import NotConfigured, NotSupported +from scrapy.exceptions import NotConfigured, NotSupported class XMLFeedSpider(InitSpider): """ diff --git a/scrapy/contrib/statsmailer.py b/scrapy/contrib/statsmailer.py index fc76ccfbf..2398ad287 100644 --- a/scrapy/contrib/statsmailer.py +++ b/scrapy/contrib/statsmailer.py @@ -9,7 +9,7 @@ from scrapy.xlib.pydispatch import dispatcher from scrapy.stats import stats, signals from scrapy.mail import MailSender from scrapy.conf import settings -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured class StatsMailer(object): diff --git a/scrapy/core/downloader/handlers/__init__.py b/scrapy/core/downloader/handlers/__init__.py index 94d619202..6a1556768 100644 --- a/scrapy/core/downloader/handlers/__init__.py +++ b/scrapy/core/downloader/handlers/__init__.py @@ -1,6 +1,6 @@ """Download handlers for different schemes""" -from scrapy.core.exceptions import NotSupported +from scrapy.exceptions import NotSupported from scrapy.utils.httpobj import urlparse_cached from scrapy.conf import settings from scrapy.utils.misc import load_object diff --git a/scrapy/core/downloader/handlers/http.py b/scrapy/core/downloader/handlers/http.py index 3a3b17af5..af18ba9c6 100644 --- a/scrapy/core/downloader/handlers/http.py +++ b/scrapy/core/downloader/handlers/http.py @@ -3,7 +3,7 @@ from twisted.internet import reactor from scrapy.core import signals -from scrapy.core.exceptions import NotSupported +from scrapy.exceptions import NotSupported from scrapy.utils.signal import send_catch_log from scrapy.utils.misc import load_object from scrapy.conf import settings diff --git a/scrapy/core/downloader/manager.py b/scrapy/core/downloader/manager.py index 15a02b426..3f754597d 100644 --- a/scrapy/core/downloader/manager.py +++ b/scrapy/core/downloader/manager.py @@ -8,7 +8,7 @@ from time import time from twisted.internet import reactor, defer from twisted.python.failure import Failure -from scrapy.core.exceptions import IgnoreRequest +from scrapy.exceptions import IgnoreRequest from scrapy.conf import settings from scrapy.utils.defer import mustbe_deferred from scrapy import log diff --git a/scrapy/core/downloader/middleware.py b/scrapy/core/downloader/middleware.py index fd09b8cc2..b46395f59 100644 --- a/scrapy/core/downloader/middleware.py +++ b/scrapy/core/downloader/middleware.py @@ -10,7 +10,7 @@ from scrapy.core import signals from scrapy.utils.signal import send_catch_log from scrapy import log from scrapy.http import Request, Response -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.utils.misc import load_object from scrapy.utils.defer import mustbe_deferred from scrapy.utils.conf import build_component_list diff --git a/scrapy/core/engine.py b/scrapy/core/engine.py index 912ea71f5..dc49b01c3 100644 --- a/scrapy/core/engine.py +++ b/scrapy/core/engine.py @@ -15,7 +15,7 @@ from scrapy.conf import settings from scrapy.core import signals from scrapy.core.downloader import Downloader from scrapy.core.scraper import Scraper -from scrapy.core.exceptions import IgnoreRequest, DontCloseSpider +from scrapy.exceptions import IgnoreRequest, DontCloseSpider from scrapy.http import Response, Request from scrapy.spider import spiders from scrapy.utils.misc import load_object diff --git a/scrapy/core/exceptions.py b/scrapy/core/exceptions.py index 48204f148..9901069d6 100644 --- a/scrapy/core/exceptions.py +++ b/scrapy/core/exceptions.py @@ -1,40 +1,5 @@ -""" -Scrapy core exceptions +from scrapy.exceptions import * -These exceptions are documented in docs/topics/exceptions.rst. Please don't add -new exceptions here without documenting them there. -""" - -from scrapy import log - -# Internal - -class NotConfigured(Exception): - """Indicates a missing configuration situation""" - pass - -# HTTP and crawling - -class IgnoreRequest(Exception): - """Indicates a decision was made not to process a request""" - - def __init__(self, msg='', level=log.ERROR): - self.msg = msg - self.level = level - - def __str__(self): - return self.msg - -class DontCloseSpider(Exception): - """Request the spider not to be closed yet""" - pass - -# Items - -class DropItem(Exception): - """Drop item from the item pipeline""" - pass - -class NotSupported(Exception): - """Indicates a feature or method is not supported""" - pass +import warnings +warnings.warn("scrapy.core.exceptions is deprecated, use scrapy.exceptions instead", \ + DeprecationWarning, stacklevel=2) diff --git a/scrapy/core/scheduler.py b/scrapy/core/scheduler.py index 290ebefc1..2da44cbdd 100644 --- a/scrapy/core/scheduler.py +++ b/scrapy/core/scheduler.py @@ -7,7 +7,7 @@ from twisted.python.failure import Failure from scrapy.utils.datatypes import PriorityQueue, PriorityStack from scrapy.core.schedulermw import SchedulerMiddlewareManager -from scrapy.core.exceptions import IgnoreRequest +from scrapy.exceptions import IgnoreRequest from scrapy.conf import settings class Scheduler(object): diff --git a/scrapy/core/schedulermw.py b/scrapy/core/schedulermw.py index fec9bb2d1..9f27c1e5d 100644 --- a/scrapy/core/schedulermw.py +++ b/scrapy/core/schedulermw.py @@ -9,7 +9,7 @@ from collections import defaultdict from twisted.internet.defer import Deferred from scrapy import log -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.utils.misc import load_object from scrapy.utils.defer import mustbe_deferred from scrapy.utils.conf import build_component_list diff --git a/scrapy/core/scraper.py b/scrapy/core/scraper.py index 8825ec540..c1e88a18a 100644 --- a/scrapy/core/scraper.py +++ b/scrapy/core/scraper.py @@ -8,7 +8,7 @@ from scrapy.utils.defer import defer_result, defer_succeed, parallel from scrapy.utils.spider import iterate_spider_output from scrapy.utils.misc import load_object from scrapy.utils.signal import send_catch_log -from scrapy.core.exceptions import IgnoreRequest, DropItem +from scrapy.exceptions import IgnoreRequest, DropItem from scrapy.core import signals from scrapy.http import Request, Response from scrapy.item import BaseItem diff --git a/scrapy/core/spidermw.py b/scrapy/core/spidermw.py index 4a8342c0a..38f947045 100644 --- a/scrapy/core/spidermw.py +++ b/scrapy/core/spidermw.py @@ -8,7 +8,7 @@ docs/topics/spider-middleware.rst from scrapy import log from twisted.python.failure import Failure -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.utils.misc import load_object from scrapy.utils.conf import build_component_list from scrapy.utils.defer import mustbe_deferred diff --git a/scrapy/exceptions.py b/scrapy/exceptions.py new file mode 100644 index 000000000..48204f148 --- /dev/null +++ b/scrapy/exceptions.py @@ -0,0 +1,40 @@ +""" +Scrapy core exceptions + +These exceptions are documented in docs/topics/exceptions.rst. Please don't add +new exceptions here without documenting them there. +""" + +from scrapy import log + +# Internal + +class NotConfigured(Exception): + """Indicates a missing configuration situation""" + pass + +# HTTP and crawling + +class IgnoreRequest(Exception): + """Indicates a decision was made not to process a request""" + + def __init__(self, msg='', level=log.ERROR): + self.msg = msg + self.level = level + + def __str__(self): + return self.msg + +class DontCloseSpider(Exception): + """Request the spider not to be closed yet""" + pass + +# Items + +class DropItem(Exception): + """Drop item from the item pipeline""" + pass + +class NotSupported(Exception): + """Indicates a feature or method is not supported""" + pass diff --git a/scrapy/extension.py b/scrapy/extension.py index 4f3ed8da7..ede22447f 100644 --- a/scrapy/extension.py +++ b/scrapy/extension.py @@ -3,7 +3,7 @@ This module contains the ExtensionManager which takes care of loading and keeping track of all enabled extensions. It also contains an instantiated ExtensionManager (extensions) to be used as singleton. """ -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.utils.misc import load_object from scrapy.utils.conf import build_component_list from scrapy import log diff --git a/scrapy/mail.py b/scrapy/mail.py index 8ce7b1798..17973e584 100644 --- a/scrapy/mail.py +++ b/scrapy/mail.py @@ -15,7 +15,7 @@ from twisted.internet import defer, reactor from twisted.mail.smtp import ESMTPSenderFactory from scrapy import log -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.conf import settings from scrapy.utils.signal import send_catch_log diff --git a/scrapy/telnet.py b/scrapy/telnet.py index 49deed463..fa46becfa 100644 --- a/scrapy/telnet.py +++ b/scrapy/telnet.py @@ -11,7 +11,7 @@ from twisted.conch.insults import insults from twisted.internet import reactor, protocol from scrapy.extension import extensions -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.core.manager import scrapymanager from scrapy.spider import spiders from scrapy.stats import stats diff --git a/scrapy/tests/test_downloadermiddleware_httpcache.py b/scrapy/tests/test_downloadermiddleware_httpcache.py index 230352804..29782674a 100644 --- a/scrapy/tests/test_downloadermiddleware_httpcache.py +++ b/scrapy/tests/test_downloadermiddleware_httpcache.py @@ -4,7 +4,7 @@ from scrapy.http import Response, HtmlResponse, Request from scrapy.spider import BaseSpider from scrapy.contrib.downloadermiddleware.httpcache import FilesystemCacheStorage, HttpCacheMiddleware from scrapy.conf import Settings -from scrapy.core.exceptions import IgnoreRequest +from scrapy.exceptions import IgnoreRequest class HttpCacheMiddlewareTest(unittest.TestCase): diff --git a/scrapy/tests/test_downloadermiddleware_httpproxy.py b/scrapy/tests/test_downloadermiddleware_httpproxy.py index 7f6f7ee4e..ef6753b5a 100644 --- a/scrapy/tests/test_downloadermiddleware_httpproxy.py +++ b/scrapy/tests/test_downloadermiddleware_httpproxy.py @@ -3,7 +3,7 @@ import sys from twisted.trial.unittest import TestCase, SkipTest from scrapy.contrib.downloadermiddleware.httpproxy import HttpProxyMiddleware -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.http import Response, Request from scrapy.spider import BaseSpider from scrapy.conf import settings diff --git a/scrapy/tests/test_downloadermiddleware_redirect.py b/scrapy/tests/test_downloadermiddleware_redirect.py index be705b958..d07e86b9c 100644 --- a/scrapy/tests/test_downloadermiddleware_redirect.py +++ b/scrapy/tests/test_downloadermiddleware_redirect.py @@ -2,7 +2,7 @@ import unittest from scrapy.contrib.downloadermiddleware.redirect import RedirectMiddleware from scrapy.spider import BaseSpider -from scrapy.core.exceptions import IgnoreRequest +from scrapy.exceptions import IgnoreRequest from scrapy.http import Request, Response, HtmlResponse, Headers class RedirectMiddlewareTest(unittest.TestCase): diff --git a/scrapy/tests/test_schedulermiddleware_duplicatesfilter.py b/scrapy/tests/test_schedulermiddleware_duplicatesfilter.py index 1384c2237..524b80167 100644 --- a/scrapy/tests/test_schedulermiddleware_duplicatesfilter.py +++ b/scrapy/tests/test_schedulermiddleware_duplicatesfilter.py @@ -2,7 +2,7 @@ import unittest from scrapy.http import Request from scrapy.spider import BaseSpider -from scrapy.core.exceptions import IgnoreRequest +from scrapy.exceptions import IgnoreRequest from scrapy.contrib.schedulermiddleware.duplicatesfilter import DuplicatesFilterMiddleware diff --git a/scrapy/utils/defer.py b/scrapy/utils/defer.py index bf9014bbd..7fb34efd5 100644 --- a/scrapy/utils/defer.py +++ b/scrapy/utils/defer.py @@ -5,7 +5,7 @@ Helper functions for dealing with Twisted deferreds from twisted.internet import defer, reactor, task from twisted.python import failure -from scrapy.core.exceptions import IgnoreRequest +from scrapy.exceptions import IgnoreRequest def defer_fail(_failure): """Same as twisted.internet.defer.fail, but delay calling errback until diff --git a/scrapy/webservice.py b/scrapy/webservice.py index ddfe97369..44f804fea 100644 --- a/scrapy/webservice.py +++ b/scrapy/webservice.py @@ -7,7 +7,7 @@ See docs/topics/ws.rst from twisted.internet import reactor from twisted.web import server, resource, error -from scrapy.core.exceptions import NotConfigured +from scrapy.exceptions import NotConfigured from scrapy.utils.jsonrpc import jsonrpc_server_call from scrapy.utils.serialize import ScrapyJSONEncoder, ScrapyJSONDecoder from scrapy.utils.misc import load_object