def fromJsonFragment(json, nameFromParent): if isinstance(json, dict) and hasKeys(json.keys(), ["entries", "values", "range"], ["name"]): if json["entries"] in ("nan", "inf", "-inf") or isinstance(json["entries"], numbers.Real): entries = json["entries"] else: raise JsonFormatException(json["entries"], "Bag.entries") if isinstance(json.get("name", None), basestring): name = json["name"] elif json.get("name", None) is None: name = None else: raise JsonFormatException(json["name"], "Bag.name") if json["values"] is None: values = None elif json["values"] is None or isinstance(json["values"], list): values = {} for i, nv in enumerate(json["values"]): if isinstance(nv, dict) and hasKeys(nv.keys(), ["w", "v"]): if nv["w"] in ("nan", "inf", "-inf") or isinstance(nv["w"], numbers.Real): n = float(nv["w"]) else: raise JsonFormatException(nv["w"], "Bag.values {0} n".format(i)) if nv["v"] in ("nan", "inf", "-inf") or isinstance(nv["v"], numbers.Real): v = floatOrNan(nv["v"]) elif isinstance(nv["v"], basestring): v = nv["v"] elif isinstance(nv["v"], (list, tuple)): for j, d in enumerate(nv["v"]): if d not in ("nan", "inf", "-inf") and not isinstance(d, numbers.Real): raise JsonFormatException(d, "Bag.values {0} v {1}".format(i, j)) v = tuple(map(floatOrNan, nv["v"])) else: raise JsonFormatException(nv["v"], "Bag.values {0} v".format(i)) values[v] = n else: raise JsonFormatException(nv, "Bag.values {0}".format(i)) elif json["values"] is None: values = None else: raise JsonFormatException(json["values"], "Bag.values") if isinstance(json["range"], basestring): range = json["range"] else: raise JsonFormatException(json["range"], "Bag.range") out = Bag.ed(entries, values, range) out.quantity.name = nameFromParent if name is None else name return out.specialize() else: raise JsonFormatException(json, "Bag")
def fromJsonFragment(json, nameFromParent): if isinstance(json, dict) and hasKeys(json.keys(), ["entries", "data"]): if json["entries"] in ("nan", "inf", "-inf") or isinstance( json["entries"], numbers.Real): entries = float(json["entries"]) else: raise JsonFormatException(json, "UntypedLabel.entries") if isinstance(json["data"], dict): pairs = {} for k, v in json["data"].items(): if isinstance(v, dict) and hasKeys(v.keys(), ["type", "data"]): factory = Factory.registered[v["type"]] pairs[k] = factory.fromJsonFragment(v["data"], None) else: raise JsonFormatException( k, "UntypedLabel.data {0}".format(v)) else: raise JsonFormatException(json, "UntypedLabel.data") return UntypedLabel.ed(entries, **pairs).specialize() else: raise JsonFormatException(json, "UntypedLabel")
def fromJsonFragment(json, nameFromParent): if isinstance(json, dict) and hasKeys(json.keys(), ["entries", "data"]): if json["entries"] in ("nan", "inf", "-inf") or isinstance( json["entries"], numbers.Real): entries = float(json["entries"]) else: raise JsonFormatException(json, "Branch.entries") if isinstance(json["data"], list): values = [] for i, x in enumerate(json["data"]): if isinstance(x, dict) and hasKeys(x.keys(), ["type", "data"]): if isinstance(x["type"], basestring): factory = Factory.registered[x["type"]] else: raise JsonFormatException( x, "Branch.data {0} type".format(i)) values.append(factory.fromJsonFragment( x["data"], None)) else: raise JsonFormatException(json, "Branch.data") return Branch.ed(entries, *values) else: raise JsonFormatException(json, "Branch")
def fromJsonFragment(json, nameFromParent): if isinstance(json, dict) and hasKeys(json.keys(), ["entries", "sub:type", "data"]): if json["entries"] in ("nan", "inf", "-inf") or isinstance( json["entries"], numbers.Real): entries = float(json["entries"]) else: raise JsonFormatException(json, "Index.entries") if isinstance(json["sub:type"], basestring): factory = Factory.registered[json["sub:type"]] else: raise JsonFormatException(json, "Index.sub:type") if isinstance(json["data"], list): values = [ factory.fromJsonFragment(x, None) for x in json["data"] ] else: raise JsonFormatException(json, "Index.data") return Index.ed(entries, *values).specialize() else: raise JsonFormatException(json, "Index")
def fromJsonFragment(json, nameFromParent): if isinstance(json, dict) and hasKeys(json.keys(), ["entries", "max"], ["name"]): if json["entries"] in ("nan", "inf", "-inf") or isinstance( json["entries"], numbers.Real): entries = float(json["entries"]) else: raise JsonFormatException(json["entries"], "Maximize.entries") if isinstance(json.get("name", None), basestring): name = json["name"] elif json.get("name", None) is None: name = None else: raise JsonFormatException(json["name"], "Maximize.name") if json["max"] in ("nan", "inf", "-inf") or isinstance( json["max"], numbers.Real): max = float(json["max"]) else: raise JsonFormatException(json["max"], "Maximize.max") out = Maximize.ed(entries, max) out.quantity.name = nameFromParent if name is None else name return out.specialize() else: raise JsonFormatException(json, "Maximize")
def fromJsonFragment(json, nameFromParent): if isinstance(json, dict) and hasKeys(json.keys(), ["entries", "bins:type", "bins"], ["name", "bins:name"]): if json["entries"] in ("nan", "inf", "-inf") or isinstance( json["entries"], numbers.Real): entries = float(json["entries"]) else: raise JsonFormatException(json, "Categorize.entries") if isinstance(json.get("name", None), basestring): name = json["name"] elif json.get("name", None) is None: name = None else: raise JsonFormatException(json["name"], "Categorize.name") if isinstance(json["bins:type"], basestring): contentType = json["bins:type"] factory = Factory.registered[contentType] else: raise JsonFormatException(json, "Categorize.bins:type") if isinstance(json.get("bins:name", None), basestring): dataName = json["bins:name"] elif json.get("bins:name", None) is None: dataName = None else: raise JsonFormatException(json["bins:name"], "Categorize.bins:name") if isinstance(json["bins"], dict): bins = dict((k, factory.fromJsonFragment(v, dataName)) for k, v in json["bins"].items()) else: raise JsonFormatException(json, "Categorize.bins") out = Categorize.ed(entries, contentType, **bins) out.quantity.name = nameFromParent if name is None else name return out.specialize() else: raise JsonFormatException(json, "Categorize")
def fromJsonFragment(json, nameFromParent): if isinstance(json, dict) and hasKeys(json.keys(), ["entries", "sub:type", "data"]): if json["entries"] in ("nan", "inf", "-inf") or isinstance( json["entries"], numbers.Real): entries = float(json["entries"]) else: raise JsonFormatException(json, "Label.entries") if isinstance(json["sub:type"], basestring): factory = Factory.registered[json["sub:type"]] else: raise JsonFormatException(json, "Label.sub:type") if isinstance(json["data"], dict): pairs = dict((k, factory.fromJsonFragment(v, None)) for k, v in json["data"].items()) else: raise JsonFormatException(json, "Label.data") return Label.ed(entries, **pairs) else: raise JsonFormatException(json, "Label")
def fromJsonFragment(json, nameFromParent): if isinstance(json, dict) and hasKeys( json.keys(), ["entries", "sub:type", "numerator", "denominator"], ["name", "sub:name"]): if json["entries"] in ("nan", "inf", "-inf") or isinstance(json["entries"], numbers.Real): entries = float(json["entries"]) else: raise JsonFormatException(json, "Fraction.entries") if isinstance(json.get("name", None), basestring): name = json["name"] elif json.get("name", None) is None: name = None else: raise JsonFormatException(json["name"], "Fraction.name") if isinstance(json["sub:type"], basestring): factory = Factory.registered[json["sub:type"]] else: raise JsonFormatException(json, "Fraction.type") if isinstance(json.get("sub:name", None), basestring): subName = json["sub:name"] elif json.get("sub:name", None) is None: subName = None else: raise JsonFormatException(json["sub:name"], "Fraction.sub:name") numerator = factory.fromJsonFragment(json["numerator"], subName) denominator = factory.fromJsonFragment(json["denominator"], subName) out = Fraction.ed(entries, numerator, denominator) out.quantity.name = nameFromParent if name is None else name return out.specialize() else: raise JsonFormatException(json, "Fraction")
def fromJsonFragment(json, nameFromParent): if isinstance(json, dict) and hasKeys(json.keys(), [ "entries", "bins:type", "bins", "nanflow:type", "nanflow" ], ["name", "bins:name"]): if json["entries"] in ("nan", "inf", "-inf") or isinstance( json["entries"], numbers.Real): entries = float(json["entries"]) else: raise JsonFormatException(json, "CentrallyBin.entries") if isinstance(json.get("name", None), basestring): name = json["name"] elif json.get("name", None) is None: name = None else: raise JsonFormatException(json["name"], "CentrallyBin.name") if isinstance(json["bins:type"], basestring): factory = Factory.registered[json["bins:type"]] else: raise JsonFormatException(json, "CentrallyBin.bins:type") if isinstance(json.get("bins:name", None), basestring): binsName = json["bins:name"] elif json.get("bins:name", None) is None: binsName = None else: raise JsonFormatException(json["bins:name"], "CentrallyBin.bins:name") if isinstance(json["bins"], list): bins = [] for i, binpair in enumerate(json["bins"]): if isinstance(binpair, dict) and hasKeys( binpair.keys(), ["center", "data"]): if binpair["center"] in ("nan", "inf", "-inf") or isinstance( binpair["center"], numbers.Real): center = float(binpair["center"]) else: JsonFormatException( binpair["center"], "CentrallyBin.bins {0} center".format(i)) bins.append( (center, factory.fromJsonFragment(binpair["data"], binsName))) else: raise JsonFormatException( binpair, "CentrallyBin.bins {0}".format(i)) if isinstance(json["nanflow:type"], basestring): nanflowFactory = Factory.registered[json["nanflow:type"]] else: raise JsonFormatException(json, "CentrallyBin.nanflow:type") nanflow = nanflowFactory.fromJsonFragment(json["nanflow"], None) out = CentrallyBin.ed(entries, bins, nanflow) out.quantity.name = nameFromParent if name is None else name return out.specialize() else: raise JsonFormatException(json, "CentrallyBin")
def fromJsonFragment(json, nameFromParent): if isinstance(json, dict) and hasKeys(json.keys(), [ "entries", "bins:type", "bins", "nanflow:type", "nanflow" ], ["name", "bins:name"]): if json["entries"] in ("nan", "inf", "-inf") or isinstance( json["entries"], numbers.Real): entries = float(json["entries"]) else: raise JsonFormatException(json, "Stack.entries") if isinstance(json.get("name", None), basestring): name = json["name"] elif json.get("name", None) is None: name = None else: raise JsonFormatException(json["name"], "Stack.name") if isinstance(json["bins:type"], basestring): factory = Factory.registered[json["bins:type"]] else: raise JsonFormatException(json, "Stack.bins:type") if isinstance(json.get("bins:name", None), basestring): dataName = json["bins:name"] elif json.get("bins:name", None) is None: dataName = None else: raise JsonFormatException(json["bins:name"], "Stack.bins:name") if isinstance(json["nanflow:type"], basestring): nanflowFactory = Factory.registered[json["nanflow:type"]] else: raise JsonFormatException(json, "Stack.nanflow:type") nanflow = nanflowFactory.fromJsonFragment(json["nanflow"], None) if isinstance(json["bins"], list): bins = [] for i, elementPair in enumerate(json["bins"]): if isinstance(elementPair, dict) and hasKeys( elementPair.keys(), ["atleast", "data"]): if elementPair["atleast"] not in ( "nan", "inf", "-inf") and not isinstance( elementPair["atleast"], numbers.Real): raise JsonFormatException( json, "Stack.bins {0} atleast".format(i)) bins.append( (float(elementPair["atleast"]), factory.fromJsonFragment(elementPair["data"], dataName))) else: raise JsonFormatException(json, "Stack.bins {0}".format(i)) out = Stack.ed(entries, bins, nanflow) out.quantity.name = nameFromParent if name is None else name return out.specialize() else: raise JsonFormatException(json, "Stack.bins") else: raise JsonFormatException(json, "Stack")
def fromJsonFragment(json, nameFromParent): if isinstance(json, dict) and hasKeys(json.keys(), [ "binWidth", "entries", "bins:type", "bins", "nanflow:type", "nanflow", "origin" ], ["name", "bins:name"]): if json["binWidth"] in ("nan", "inf", "-inf") or isinstance( json["binWidth"], numbers.Real): binWidth = float(json["binWidth"]) else: raise JsonFormatException(json, "SparselyBin.binWidth") if json["entries"] in ("nan", "inf", "-inf") or isinstance( json["entries"], numbers.Real): entries = float(json["entries"]) else: raise JsonFormatException(json, "SparselyBin.entries") if isinstance(json.get("name", None), basestring): name = json["name"] elif json.get("name", None) is None: name = None else: raise JsonFormatException(json["name"], "SparselyBin.name") if isinstance(json["bins:type"], basestring): binsFactory = Factory.registered[json["bins:type"]] else: raise JsonFormatException(json, "SparselyBin.bins:type") if isinstance(json.get("bins:name", None), basestring): binsName = json["bins:name"] elif json.get("bins:name", None) is None: binsName = None else: raise JsonFormatException(json["bins:name"], "SparselyBin.bins:name") if isinstance(json["bins"], dict): for i in json["bins"]: try: int(i) except ValueError: raise JsonFormatException( i, "SparselyBin.bins key must be an integer") bins = dict((int(i), binsFactory.fromJsonFragment(v, binsName)) for i, v in json["bins"].items()) else: raise JsonFormatException(json, "SparselyBin.bins") if isinstance(json["nanflow:type"], basestring): nanflowFactory = Factory.registered[json["nanflow:type"]] else: raise JsonFormatException(json, "Bin.nanflow:type") nanflow = nanflowFactory.fromJsonFragment(json["nanflow"], None) if json["origin"] in ("nan", "inf", "-inf") or isinstance( json["origin"], numbers.Real): origin = json["origin"] else: raise JsonFormatException(json, "SparselyBin.origin") out = SparselyBin.ed(binWidth, entries, json["bins:type"], bins, nanflow, origin) out.quantity.name = nameFromParent if name is None else name return out.specialize() else: raise JsonFormatException(json, "SparselyBin")