Source code for graphdot.minipandas.series

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
from graphdot.codegen.typetool import common_concrete_type, common_min_type


[docs]class Series(np.ndarray): '''A thin wrapper to customize serialization behavior''' def __new__(cls, input): if isinstance(input, np.ndarray): series = input.view(cls) if np.issctype(series.dtype): series._concrete_type = series.dtype else: series._concrete_type = common_concrete_type.of_values(input) else: t = common_min_type.of_values(input) dtype = np.dtype(t) if np.issctype(t) else np.dtype(np.object) series = np.empty(len(input), dtype=dtype).view(cls) # ensures 1D series[:] = input series._concrete_type = t return series def __repr__(self): return np.array2string(self, separator=',', max_line_width=1e20) @property def concrete_type(self): return self._concrete_type def __reduce__(self): recon, args, state = super(Series, self).__reduce__() return (recon, args, (state, self.__dict__)) def __setstate__(self, states): state, dict_ = states self.__dict__.update(**dict_) super(Series, self).__setstate__(state)