def _merge_serde(serdes, dft=None): """ 内部函数 """ ret = {} for sd in serdes: if not isinstance(serde.origin(sd), FieldsDictSerde): return dft for field, field_serde in serde.origin(sd)._fields_to_types.iteritems(): ret[field] = field_serde return of(ret)
def _merge_serde(serdes, dft=None): """ 内部函数 """ ret = {} for sd in serdes: if not isinstance(serde.origin(sd), FieldsDictSerde): return dft for field, field_serde in serde.origin( sd)._fields_to_types.iteritems(): ret[field] = field_serde return of(ret)
def sort(pvalue, reverse=False): """ sort """ if isinstance(serde.origin(pvalue.serde()), serde.StrSerde): return _sort_str(pvalue, reverse) return sort_by(pvalue, None, reverse)
def get_serde_of_field(sd, field, default=None): """ get serde of field """ if isinstance(sd, FieldsDictSerde): return serde.of(serde.origin(sd._tuple_serde)[sd._fields.index(field)]) return default
def get_out_fields_serde(tpserde, out_fields): """ 内部函数 """ tpserde = serde.origin(tpserde) tpserde = map(lambda sd: serde.Optional(sd), tpserde) assert len(tpserde) == len(out_fields) return of(dict(zip(out_fields, tpserde)))
def _get_serde_of_field(sd, field, dft=None): """ 内部函数 """ if isinstance(sd, FieldsDictSerde): return serde.of(serde.origin(sd._tuple_serde)[sd._fields.index(field)]) return dft
def _get_out_fields_serde(tpserde, out_fields): """ 内部函数 """ tpserde = serde.origin(tpserde) tpserde = map(lambda sd: serde.Optional(sd), tpserde) assert len(tpserde) == len(out_fields) return of(dict(zip(out_fields, tpserde)))