removed (barely used) spider context extension, to drop dependencies with sqlite

This commit is contained in:
Pablo Hoffman 2011-08-27 01:03:56 -03:00
parent 075a2d62d3
commit e1aff779da
3 changed files with 0 additions and 75 deletions

View File

@ -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)

View File

@ -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'

View File

@ -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())