Source code for gviz_data_table.encoder

import datetime
import json

from . import cell
from . import column
from . import table


[docs]class Encoder(json.JSONEncoder): """ JSON encoder for utility classes. Also maps datetime/date and time objects to the relevant Google Visualization pseudo Date() constructor (month = month -1). Times are lists of [h, m, s] mapped to `timeofday` """ formats = {datetime.date:"Date({0}, {1}, {2})", datetime.datetime:"Date({0}, {1}, {2}, {3}, {4}, {5})", }
[docs] def default(self, obj): if isinstance(obj, cell.Cell): return dict(obj) elif isinstance(obj, column.Column): return dict(obj) elif isinstance(obj, table.Table): return dict(obj) t = type(obj) if t in self.formats: tt = list(obj.timetuple()) tt[1] -= 1 return self.formats[t].format(*tt) elif t == datetime.time: return [obj.hour, obj.minute, obj.second] return json.JSONEncoder.default(self, obj)
[docs]def encode(obj): e = Encoder() return e.encode(obj)