removed unused module: scrapy.tests.serialization

This commit is contained in:
Pablo Hoffman 2009-08-20 14:20:45 -03:00
parent 20e82335e2
commit 5de409a6a0
2 changed files with 0 additions and 111 deletions

View File

@ -1,33 +0,0 @@
from twisted.trial import unittest
class SerializationTest(unittest.TestCase):
def setUp(self):
try:
import json
except ImportError:
try:
import simplejson
except ImportError, e:
raise unittest.SkipTest(e)
def test_string_serialization(self):
"""Test simple string serialization"""
from scrapy.utils.serialization import serialize, unserialize, serialize_funcs
s = "string to serialize"
for format in serialize_funcs.iterkeys():
self.assertEqual(s, unserialize(serialize(s)))
def test_dict_serialization(self):
"""Test dict serialization"""
from scrapy.utils.serialization import serialize, unserialize, serialize_funcs
# using only string keys/values since it's the only data type that
# works with all serializers
d = {'one': 'item one', 'two': 'item two'}
for format in serialize_funcs.iterkeys():
self.assertEqual(d, unserialize(serialize(d)))
if __name__ == "__main__":
unittest.main()

View File

@ -1,78 +0,0 @@
"""
This module provides a universal API for different serialization formats.
Keep in mind that not all formats support all types for serialization, and some
formats (like pprint) may be unsafe for unserialization (like pprint) but it
may still very convenient for serialization.
"""
import datetime
import decimal
import cPickle as pickle
import pprint
try:
import json
except ImportError:
import simplejson as json
class ScrapyJSONEncoder(json.JSONEncoder):
"""
JSONEncoder subclass that knows how to encode date/time and decimal types.
"""
DATE_FORMAT = "%Y-%m-%d"
TIME_FORMAT = "%H:%M:%S"
def default(self, o):
if isinstance(o, datetime.datetime):
return o.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT))
elif isinstance(o, datetime.date):
return o.strftime(self.DATE_FORMAT)
elif isinstance(o, datetime.time):
return o.strftime(self.TIME_FORMAT)
elif isinstance(o, decimal.Decimal):
return str(o)
else:
return super(ScrapyJSONEncoder, self).default(o)
serialize_funcs = {
'json': lambda obj: json.dumps(obj, cls=ScrapyJSONEncoder),
'pprint': lambda obj: pprint.pformat(obj),
'pickle': lambda obj: pickle.dumps(obj),
}
unserialize_funcs = {
'json': lambda text: json.loads(text),
'pprint': lambda text: eval(text),
'pickle': lambda text: pickle.loads(text),
}
def serialize(obj, format='pickle'):
"""
Main entrance point for serialization.
Supported formats: pickle, json, pprint
"""
try:
func = serialize_funcs[format]
return func(obj)
except KeyError:
raise TypeError("Unknown serialization format: %s" % format)
def unserialize(text, format='pickle'):
"""
Main entrance point for unserialization.
"""
try:
func = unserialize_funcs[format]
return func(text)
except KeyError:
raise TypeError("Unknown serialization format: %s" % format)
def parse_jsondatetime(text):
if isinstance(text, basestring):
return datetime.datetime.strptime(text, "%s %s" % \
(ScrapyJSONEncoder.DATE_FORMAT, ScrapyJSONEncoder.TIME_FORMAT))