ValueError: Can't clean for JSON: datetime.time(10, 0)
- 主要语言
- Python
- 星标
- 734
- 派生
- 412
- 平均合并
- 1 天 5 小时
- 30 天内合并 PR
- 8
描述
Hi there!
I'm on `ipykernel==5.3.4`
I'm adding a custom mimebundle formatter to ipython for pandas dataframes, and I'm getting an error in the `jsonutil.py` `json_clean`. Here's my minimum reproduction example:
```python
from IPython import get_ipython
import datetime
import pandas as pd
def dataframe_formatter(df):
return { 'application/the21st': { 'rows': [{'datetime': datetime.time(10, 0) }]} }
get_ipython().display_formatter.mimebundle_formatter.for_type(pd.DataFrame, dataframe_formatter)
```
Displaying any dataframe in jupyter then produces an error with stack trace:
stack trace
```
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
in
---> 1 df
/opt/venv/lib/python3.7/site-packages/IPython/core/displayhook.py in __call__(self, result)
264 self.fill_exec_result(result)
265 if format_dict:
--> 266 self.write_format_data(format_dict, md_dict)
267 self.log_output(format_dict)
268 self.finish_displayhook()
/opt/venv/lib/python3.7/site-packages/ipykernel/displayhook.py in write_format_data(self, format_dict, md_dict)
69
70 def write_format_data(self, format_dict, md_dict=None):
---> 71 self.msg['content']['data'] = json_clean(encode_images(format_dict))
72 self.msg['content']['metadata'] = md_dict
73
/opt/venv/lib/python3.7/site-packages/ipykernel/jsonutil.py in json_clean(obj)
189 out = {}
190 for k,v in iteritems(obj):
--> 191 out[unicode_type(k)] = json_clean(v)
192 return out
193 if isinstance(obj, datetime):
/opt/venv/lib/python3.7/site-packages/ipykernel/jsonutil.py in json_clean(obj)
189 out = {}
190 for k,v in iteritems(obj):
--> 191 out[unicode_type(k)] = json_clean(v)
192 return out
193 if isinstance(obj, datetime):
/opt/venv/lib/python3.7/site-packages/ipykernel/jsonutil.py in json_clean(obj)
175
176 if isinstance(obj, list):
--> 177 return [json_clean(x) for x in obj]
178
179 if isinstance(obj, dict):
/opt/venv/lib/python3.7/site-packages/ipykernel/jsonutil.py in (.0)
175
176 if isinstance(obj, list):
--> 177 return [json_clean(x) for x in obj]
178
179 if isinstance(obj, dict):
/opt/venv/lib/python3.7/site-packages/ipykernel/jsonutil.py in json_clean(obj)
189 out = {}
190 for k,v in iteritems(obj):
--> 191 out[unicode_type(k)] = json_clean(v)
192 return out
193 if isinstance(obj, datetime):
/opt/venv/lib/python3.7/site-packages/ipykernel/jsonutil.py in json_clean(obj)
195
196 # we don't understand it, it's probably an unserializable object
--> 197 raise ValueError("Can't clean for JSON: %r" % obj)
ValueError: Can't clean for JSON: datetime.time(10, 0)
```
贡献指南
评估
这个 Issue 还没有评估数据。