`bytes` type unsupported
strayge opened this issue · comments
strayge commented
Issue
Cannot store bytes
as values.
Env
Windows 10
Python 3.8.1
MontyDB 2.3.6
Actual error
>>> from montydb import MontyClient
>>> col = MontyClient(":memory:").db.test
>>> col.insert_one({'data': b'some bytes'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\user\.virtualenvs\name\lib\site-packages\montydb\collection.py", line 139, in insert_one
result = self._storage.write_one(self, document)
File "C:\Users\user\.virtualenvs\name\lib\site-packages\montydb\storage\__init__.py", line 45, in delegate
return getattr(delegator, attr)(*args, **kwargs)
File "C:\Users\user\.virtualenvs\name\lib\site-packages\montydb\storage\memory.py", line 120, in write_one
self._col[b_id] = self._encode_doc(doc, check_keys)
File "C:\Users\user\.virtualenvs\name\lib\site-packages\montydb\storage\__init__.py", line 183, in _encode_doc
return bson.document_encode(
File "C:\Users\user\.virtualenvs\name\lib\site-packages\montydb\types\_bson.py", line 236, in document_encode
for s in _encoder.iterencode(doc):
File "C:\Program Files\Python38\lib\json\encoder.py", line 431, in _iterencode
yield from _iterencode_dict(o, _current_indent_level)
File "C:\Program Files\Python38\lib\json\encoder.py", line 405, in _iterencode_dict
yield from chunks
File "C:\Program Files\Python38\lib\json\encoder.py", line 438, in _iterencode
o = _default(o)
File "C:\Users\user\.virtualenvs\name\lib\site-packages\montydb\types\_bson.py", line 222, in default
return NoBSON.JSONEncoder.default(self, obj)
File "C:\Program Files\Python38\lib\json\encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type bytes is not JSON serializable
Same with PyMongo
>>> from pymongo import MongoClient
>>> col = MongoClient('127.0.0.1').tests.test1
>>> col.insert_one({'data': b'some bytes'})
<pymongo.results.InsertOneResult object at 0x000002BBB52BC7C0>
>>> next(col.find())
{'_id': ObjectId('60bdaa528ff3727b58f514f7'), 'data': b'some bytes'}
David Lai commented
Thanks, will look into this later today.