From e1aff779dac765baeab051bfac55030450df6fd2 Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Sat, 27 Aug 2011 01:03:56 -0300 Subject: [PATCH] removed (barely used) spider context extension, to drop dependencies with sqlite --- scrapy/contrib/spidercontext.py | 61 ---------------------- scrapy/settings/default_settings.py | 5 -- scrapy/tests/test_contrib_spidercontext.py | 9 ---- 3 files changed, 75 deletions(-) delete mode 100644 scrapy/contrib/spidercontext.py delete mode 100644 scrapy/tests/test_contrib_spidercontext.py diff --git a/scrapy/contrib/spidercontext.py b/scrapy/contrib/spidercontext.py deleted file mode 100644 index 29a309183..000000000 --- a/scrapy/contrib/spidercontext.py +++ /dev/null @@ -1,61 +0,0 @@ -from zope.interface import Interface, implements - -from scrapy.xlib.pydispatch import dispatcher -from scrapy.exceptions import NotConfigured -from scrapy.utils.misc import load_object -from scrapy.utils.sqlite import JsonSqliteDict -from scrapy.utils.project import sqlite_db -from scrapy import signals - -class ISpiderContextStorage(Interface): - - def get(spider): - """Get the context for the given spider, or None if the spider has no - context stored.""" - - def put(spider, context): - """Store the context for the given spider""" - - -class SqliteSpiderContextStorage(object): - - implements(ISpiderContextStorage) - sqlite_dict_class = JsonSqliteDict - - def __init__(self, database=None, table='contexts'): - self.d = self.sqlite_dict_class(database, table) - - @classmethod - def from_settings(cls, settings): - return cls(sqlite_db(settings['SQLITE_DB'])) - - def get(self, spider): - if spider.name in self.d: - return self.d[spider.name] - - def put(self, spider, context): - self.d[spider.name] = context - - -class SpiderContext(object): - - def __init__(self, storage): - dispatcher.connect(self._spider_opened, signals.spider_opened) - dispatcher.connect(self._spider_closed, signals.spider_closed) - self.storage = storage - - @classmethod - def from_settings(cls, settings): - if not settings.getbool('SPIDER_CONTEXT_ENABLED'): - raise NotConfigured - stcls = load_object(settings['SPIDER_CONTEXT_STORAGE_CLASS']) - storage = stcls.from_settings(settings) - return cls(storage) - - def _spider_opened(self, spider): - spider.context = self.storage.get(spider) or {} - - def _spider_closed(self, spider): - if spider.context: - self.storage.put(spider, spider.context) - diff --git a/scrapy/settings/default_settings.py b/scrapy/settings/default_settings.py index 2c7a5e8a0..03ea0d68f 100644 --- a/scrapy/settings/default_settings.py +++ b/scrapy/settings/default_settings.py @@ -143,7 +143,6 @@ EXTENSIONS_BASE = { 'scrapy.contrib.memdebug.MemoryDebugger': 0, 'scrapy.contrib.closespider.CloseSpider': 0, 'scrapy.contrib.feedexport.FeedExporter': 0, - 'scrapy.contrib.spidercontext.SpiderContext': 0, 'scrapy.contrib.logstats.LogStats': 0, } @@ -244,10 +243,6 @@ SPIDER_MIDDLEWARES_BASE = { SPIDER_MODULES = [] -SPIDER_CONTEXT_ENABLED = True -SPIDER_CONTEXT_STORAGE_CLASS = 'scrapy.contrib.spidercontext.SqliteSpiderContextStorage' - - SQLITE_DB = 'scrapy.db' STATS_CLASS = 'scrapy.statscol.MemoryStatsCollector' diff --git a/scrapy/tests/test_contrib_spidercontext.py b/scrapy/tests/test_contrib_spidercontext.py deleted file mode 100644 index 734b76545..000000000 --- a/scrapy/tests/test_contrib_spidercontext.py +++ /dev/null @@ -1,9 +0,0 @@ -from twisted.trial import unittest -from zope.interface.verify import verifyObject - -from scrapy.contrib.spidercontext import ISpiderContextStorage, SqliteSpiderContextStorage - -class SqliteSpiderContextStorageTest(unittest.TestCase): - - def test_interface(self): - verifyObject(ISpiderContextStorage, SqliteSpiderContextStorage())