- Notifications
You must be signed in to change notification settings - Fork590
Closed
Description
I would consider this a pretty severe issue as it corrupts the database on unexpected user input. I would instead expect this to act as defensive as possible.
Example code:
from tinydb import TinyDBdb = TinyDB('some-db.json')db.insert({'foo': 'bar'})db.insert({'bar': set([1])})Results in the following insome-db.json:{"_default": {"1": {"foo": "bar"}, "2": {"bar":
This is the traceback:
Traceback (most recent call last): File "test-tinydb.py", line 6, in <module> db.insert({'bar': set([1])}) File "/usr/lib/python2.7/site-packages/tinydb/database.py", line 299, in insert self._write(data) File "/usr/lib/python2.7/site-packages/tinydb/database.py", line 266, in _write self._storage.write(values) File "/usr/lib/python2.7/site-packages/tinydb/database.py", line 45, in write self._storage.write(data) File "/usr/lib/python2.7/site-packages/tinydb/storages.py", line 105, in write json.dump(data, self._handle, **self.kwargs) File "/usr/lib64/python2.7/json/__init__.py", line 189, in dump for chunk in iterable: File "/usr/lib64/python2.7/json/encoder.py", line 434, in _iterencode for chunk in _iterencode_dict(o, _current_indent_level): File "/usr/lib64/python2.7/json/encoder.py", line 408, in _iterencode_dict for chunk in chunks: File "/usr/lib64/python2.7/json/encoder.py", line 408, in _iterencode_dict for chunk in chunks: File "/usr/lib64/python2.7/json/encoder.py", line 408, in _iterencode_dict for chunk in chunks: File "/usr/lib64/python2.7/json/encoder.py", line 442, in _iterencode o = _default(o) File "/usr/lib64/python2.7/json/encoder.py", line 184, in default raise TypeError(repr(o) + " is not JSON serializable")TypeError: set([1]) is not JSON serializableThis was on a linux box running python 2.7.10 and tinydb 3.1.0.
Metadata
Metadata
Assignees
Labels
No labels