Skip to content

Commit e17fdd7

Browse files
committed
Add set serialization to ScrapyJSONEncoder
1 parent 80c296e commit e17fdd7

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

scrapy/utils/serialize.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ class ScrapyJSONEncoder(json.JSONEncoder):
1414
TIME_FORMAT = "%H:%M:%S"
1515

1616
def default(self, o):
17-
if isinstance(o, datetime.datetime):
17+
if isinstance(o, set):
18+
return list(o)
19+
elif isinstance(o, datetime.datetime):
1820
return o.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT))
1921
elif isinstance(o, datetime.date):
2022
return o.strftime(self.DATE_FORMAT)

tests/test_utils_serialize.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,14 @@ def test_encode_decode(self):
2323
ts = "10:11:12"
2424
dec = Decimal("1000.12")
2525
decs = "1000.12"
26+
s = {'foo'}
27+
ss = ['foo']
28+
dt_set = {dt}
29+
dt_sets = [dts]
2630

2731
for input, output in [('foo', 'foo'), (d, ds), (t, ts), (dt, dts),
28-
(dec, decs), (['foo', d], ['foo', ds])]:
32+
(dec, decs), (['foo', d], ['foo', ds]), (s, ss),
33+
(dt_set, dt_sets)]:
2934
self.assertEqual(self.encoder.encode(input), json.dumps(output))
3035

3136
def test_encode_deferred(self):

0 commit comments

Comments
 (0)