def __init__(self): super().__init__() self.name = 'cumsum' self.args.add_arg('a', values.NoneValue()) self.args.add_arg('axis', values.NoneValue()) self.args.add_arg('dtype', values.NoneValue()) self.args.add_arg('out', values.NoneValue())
def veval_ast_aug_assign(astc : 'AstContext', local_field : 'values.Field', graph : 'Graph'): assert(isinstance(astc.nast, gast.gast.AugAssign)) target = veval_ast(astc.c(astc.nast.target), local_field, graph) value = veval_ast(astc.c(astc.nast.value), local_field, graph) binop = nodes.BinOpType.Unknown if isinstance(astc.nast.op, gast.Add): binop = nodes.BinOpType.Add if isinstance(astc.nast.op, gast.Sub): binop = nodes.BinOpType.Sub target_value = target.get_value() if isinstance(target_value, values.NumberValue): node_aug_assign = nodes.NodeValueAugAssign(target_value, value.get_value(), binop, astc.lineno) new_value = functions.generate_value_with_same_type(target_value) target.revise(new_value) node_aug_assign.set_outputs([new_value]) graph.add_node(node_aug_assign) return values.NoneValue() else: node_aug_assign = nodes.NodeAugAssign(target_value, value.get_value(), binop, astc.lineno) target_value.modify(node_aug_assign, None) graph.add_node(node_aug_assign) return values.NoneValue()
def __init__(self): super().__init__() self.name = 'array' fa = functions.FunctionArg() fa.name = 'object' fa.obj = values.Object(values.NoneValue()) self.funcArgs.append(fa) fa = functions.FunctionArg() fa.name = 'dtype' fa.obj = values.Object(values.NoneValue()) self.funcArgs.append(fa) fa = functions.FunctionArg() fa.name = 'copy' fa.obj = values.Object(values.BoolValue(True)) self.funcArgs.append(fa) fa = functions.FunctionArg() fa.name = 'order' fa.obj = values.Object(values.StrValue('K')) self.funcArgs.append(fa) fa = functions.FunctionArg() fa.name = 'subok' fa.obj = values.Object(values.BoolValue(False)) self.funcArgs.append(fa) fa = functions.FunctionArg() fa.name = 'ndmin' fa.obj = values.Object(values.NumberValue(0)) self.funcArgs.append(fa)
def __init__(self): super().__init__() self.name = 'full' self.args.add_arg('shape', values.NoneValue()) self.args.add_arg('fill_value', values.NoneValue()) self.args.add_arg('dtype', values.NoneValue()) self.args.add_arg('order', values.StrValue('C'))
def __init__(self): super().__init__() self.name = 'array' self.args.add_arg('object', values.NoneValue()) self.args.add_arg('dtype', values.NoneValue()) self.args.add_arg('copy', values.BoolValue(True)) self.args.add_arg('order', values.StrValue('K')) self.args.add_arg('subok', values.BoolValue(False)) self.args.add_arg('ndmin', values.NumberValue(0))
def generate_value_with_same_type(value: 'values.Value'): assert (isinstance(value, values.Value)) ret = None if isinstance(value, values.TensorValue): ret = values.TensorValue() ret.shape = value.shape if isinstance(value, values.NumberValue): ret = values.NumberValue(None) if value.internal_value is None: ret.dtype = value.dtype elif isinstance(value.internal_value, int): ret.dtype = np.array(value.internal_value).dtype elif isinstance(value.internal_value, float): ret.dtype = np.array(value.internal_value).dtype if isinstance(value, values.StrValue): ret = values.StrValue(None) if isinstance(value, values.BoolValue): ret = values.BoolValue(None) if isinstance(value, values.ListValue): ret = values.ListValue(None) if isinstance(value, values.NoneValue): ret = values.NoneValue() if ret is None and isinstance(value, values.Value): ret = values.Value() if ret is not None: ret.name = value.name + '_st' return ret
def generate_value_with_same_type(value: 'values.Value'): assert (isinstance(value, values.Value)) ret = None if isinstance(value, values.TensorValue): ret = values.TensorValue() ret.shape = value.shape if isinstance(value, values.NumberValue): ret = values.NumberValue(None) if isinstance(value, values.StrValue): ret = values.StrValue(None) if isinstance(value, values.BoolValue): ret = values.BoolValue(None) if isinstance(value, values.ListValue): ret = values.ListValue(None) if isinstance(value, values.NoneValue): ret = values.NoneValue() if ret is None and isinstance(value, values.Value): ret = values.Value() if ret is not None: ret.name = value.name + '_st' return ret
def generate_copied_value(value : 'values.Value'): if isinstance(value, values.NumberValue): copied = values.NumberValue(value.internal_value) return copied if isinstance(value, values.TensorValue): copied = values.TensorValue() copied.shape = value.shape return copied if isinstance(value, values.NoneValue): copied = values.NoneValue() return copied if isinstance(value, values.BoolValue): copied = values.BoolValue(value.internal_value) return copied if isinstance(value, values.StrValue): copied = values.StrValue(value.internal_value) return copied if isinstance(value, values.RangeValue): copied = values.RangeValue() return copied if isinstance(value, values.TupleValue): copied = values.TupleValue(value.values) return copied if config.show_warnings: print('Unknown type {} is copied'.format(value)) return values.Value()
def generate_value_with_same_type(value : 'values.Value'): if isinstance(value, values.TensorValue): ret = values.TensorValue() ret.shape = value.shape return ret if isinstance(value, values.NumberValue): ret = values.NumberValue(None) return ret if isinstance(value, values.StrValue): ret = values.StrValue(None) return ret if isinstance(value, values.BoolValue): ret = values.BoolValue(None) return ret if isinstance(value, values.ListValue): ret = values.ListValue(None) return ret if isinstance(value, values.NoneValue): ret = values.NoneValue() return ret if isinstance(value, values.Value): ret = values.Value() return ret return None
def __init__(self): super().__init__() self.name = 'list' fa = functions.FunctionArg() fa.name = 'value' fa.obj = values.Object(values.NoneValue()) self.funcArgs.append(fa)
def vcall(self, module: 'values.Field', graph: 'core.Graph', inst: 'values.Value', args=[], line=-1): assert (len(args) == 1) node = nodes.NodeCall(self, [v.value for v in args], line) inst.modify(node, None) graph.add_node(node) return values.NoneValue()
def vcall(self, module : 'Field', graph : 'Graph', inst : 'values.Object', args = [], line = -1): assert(len(args) == 1) node = nodes.NodeCall(self, [inst.get_value()] + [v.obj.get_value() for v in args], line) old_v = inst.get_value() new_v = functions.generate_value_with_same_type(old_v) inst.revise(new_v) new_v.name = '@F.{}.{}'.format(line, self.name) node.set_outputs([new_v]) graph.add_node(node) return values.NoneValue()
def vcall(self, module: 'Field', graph: 'Graph', inst: 'values.ValueRef', args: 'functions.FunctionArgInput', line=-1): funcArgs = self.args.merge_inputs(inst, args) node = nodes.NodeCall(self, funcArgs, line) old_v = inst.get_value() new_v = functions.generate_value_with_same_type(old_v) inst.revise(new_v) new_v.name = '@F.{}.{}'.format(line, self.name) node.set_outputs([new_v]) graph.add_node(node) return values.NoneValue()
def generate_copied_value(value: 'values.Value'): assert (isinstance(value, values.Value)) if isinstance(value, values.NumberValue): copied = values.NumberValue(value.internal_value) copied.dtype = value.dtype return copied if isinstance(value, values.TensorValue): copied = values.TensorValue() copied.value = value.value copied.shape = value.shape copied.dtype = value.dtype return copied if isinstance(value, values.ListValue): copied = values.ListValue() copied.is_any = value.is_any if value.internal_value is not None: copied.internal_value = value.internal_value.copy() return copied if isinstance(value, values.NoneValue): copied = values.NoneValue() return copied if isinstance(value, values.BoolValue): copied = values.BoolValue(value.internal_value) return copied if isinstance(value, values.StrValue): copied = values.StrValue(value.internal_value) return copied if isinstance(value, values.RangeValue): copied = values.RangeValue() return copied if isinstance(value, values.TupleValue): if value.internal_value is not None: copied = values.TupleValue(value.internal_value.copy()) else: copied = values.TupleValue(value.internal_value) return copied if config.show_warnings: print('Unknown type {} is copied'.format(value)) return values.Value()
def generate_copied_value(value : 'values.Value'): if isinstance(value, values.NumberValue): copied = values.NumberValue(value.internal_value) return copied if isinstance(value, values.TensorValue): copied = values.TensorValue() copied.shape = value.shape return copied if isinstance(value, values.NoneValue): copied = values.NoneValue() return copied if config.show_warnings: print('Warning : Unimplemented copied_value {}'.format(value)) return values.Value()
def veval_ast_name_constant(astc: 'AstContext', local_field: 'values.Field', graph: 'Graph'): ''' Ex. True ''' assert (isinstance(astc.nast, gast.gast.NameConstant)) lineprop = utils.LineProperty(astc.lineno) ret = None if astc.nast.value == True: ret = values.ValueRef(values.BoolValue(True)) if astc.nast.value == False: ret = values.ValueRef(values.BoolValue(False)) if astc.nast.value is None: ret = values.ValueRef(values.NoneValue()) name = values.create_ref_value_name_with_constant(ret) ret.name = name ret.get_value().name = name return ret
def __init__(self): super().__init__() self.name = 'list' self.args.add_arg(functions.FunctionArg('value', values.Object(values.NoneValue())))
def generate_value_with_same_type(value: 'values.Value', has_default=False, suffix_type=SuffixType.Unknown): assert (isinstance(value, values.Value)) ret = None if isinstance(value, values.TensorValue): ret = values.TensorValue() ret.shape = value.shape ret.dtype = value.dtype if isinstance(value, values.NumberValue): dtype = None if value.internal_value is None: dtype = value.dtype elif isinstance(value.internal_value, int): dtype = np.array(value.internal_value).dtype elif isinstance(value.internal_value, float): dtype = np.array(value.internal_value).dtype if has_default: if dtype == np.array(0).dtype: ret = values.NumberValue(0) elif dtype == np.array(0.0).dtype: ret = values.NumberValue(0.0) else: ret = values.NumberValue(None) else: ret = values.NumberValue(None) ret.dtype = dtype if isinstance(value, values.StrValue): if has_default: ret = values.StrValue('') else: ret = values.StrValue(None) if isinstance(value, values.BoolValue): if has_default: ret = values.BoolValue(False) else: ret = values.BoolValue(None) if isinstance(value, values.ListValue): ret = values.ListValue(None) if isinstance(value, values.NoneValue): ret = values.NoneValue() if isinstance(value, values.TupleValue): ret = values.TupleValue() if isinstance(value, values.UnknownValue): ret = values.UnknownValue() if has_default: ret.internal_value = 0 if ret is None and isinstance(value, values.Value): ret = values.Value() if ret is not None: if suffix_type == SuffixType.Unknown: ret.name = value.name + '_st' if suffix_type == SuffixType.Unused: ret.name = value.name + '_unused' return ret
def __init__(self): super().__init__() self.name = 'list' self.args.add_arg('value', values.ValueRef(values.NoneValue()))
def generate_value_with_same_type(value: 'values.Value', is_dummy_value=False, suffix_type=SuffixType.Unknown): assert (isinstance(value, values.Value)) ret = None if isinstance(value, values.TensorValue): ret = values.TensorValue() ret.shape = value.shape ret.dtype = value.dtype elif isinstance(value, values.NumberValue): dtype = None if value.internal_value is None: dtype = value.dtype elif isinstance(value.internal_value, int): dtype = np.array(value.internal_value).dtype elif isinstance(value.internal_value, float): dtype = np.array(value.internal_value).dtype ret = values.NumberValue(None) ret.dtype = dtype elif isinstance(value, values.StrValue): ret = values.StrValue(None) elif isinstance(value, values.BoolValue): ret = values.BoolValue(None) elif isinstance(value, values.ListValue): ret = values.ListValue(None) elif isinstance(value, values.NoneValue): ret = values.NoneValue() elif isinstance(value, values.TupleValue): ret = values.TupleValue() elif isinstance(value, values.RangeValue): ret = values.RangeValue() elif isinstance(value, values.UnknownValue): ret = values.UnknownValue() elif ret is None and isinstance(value, values.Value): ret = values.Value() else: assert (False) assert (ret is not None) ret.is_dummy_value = is_dummy_value if suffix_type == SuffixType.Unknown: ret.name = value.name + '_st' elif suffix_type == SuffixType.Unused: ret.name = value.name + '_unused' elif suffix_type == SuffixType.Dummy: ret.name = value.name + '_dummy' elif suffix_type == SuffixType.Input: ret.name = value.name + '_in' else: assert (False) return ret
def __init__(self): super().__init__() self.name = 'ceil' self.args.add_arg('x', values.NoneValue())