Current section
Files
Jump to
Current section
Files
priv/jun_enc_dec.py
#!/usr/bin/env python# -*- coding: utf-8 -*-import pandas as pdimport numpy as npfrom erlport.erlterms import Atom, Listfrom erlport.erlang import set_encoder, set_decoderdef setup_dtype(): set_encoder(dtype_encoder) set_decoder(dtype_decoder) return Atom(b'ok')def dtype_encoder(value): if isinstance(value, np.int64): return np.asscalar(value) elif isinstance(value, np.float64): return np.asscalar(value) elif isinstance(value, str): try: return value.encode('utf-8') # to express as binary() instead of string() on erlang side except: return value elif isinstance(value, list): return [dtype_encoder(v) for v in value] elif isinstance(value, tuple): nvalue = () for v in value: nvalue = nvalue + (dtype_encoder(v),) return nvalue else: try: return value.encode('utf-8') except: return valuedef dtype_decoder(value): try: if isinstance(value, List): return [dtype_decoder(v) for v in value] elif isinstance(value, tuple): nvalue = () for v in value: nvalue = nvalue + (dtype_decoder(v),) return nvalue elif isinstance(value, str): return value else: return value.decode("utf-8") except: return value