def _generate_output_abi(self, custom_units_descriptions=None):
        t = self.output_type
        if not t:
            return []
        elif isinstance(t, TupleType):
            res = [(canonicalize_type(x),
                    print_unit(unit_from_type(x), custom_units_descriptions))
                   for x in t.members]
        elif isinstance(t, TupleLike):
            res = [(canonicalize_type(x),
                    print_unit(unit_from_type(x), custom_units_descriptions))
                   for x in t.tuple_members()]
        else:
            res = [(canonicalize_type(t),
                    print_unit(unit_from_type(t), custom_units_descriptions))]

        abi_outputs = [{
            "type": x,
            "name": "out",
            "unit": unit
        } for x, unit in res]

        for abi_output in abi_outputs:
            delete_unit_if_empty(abi_output)

        return abi_outputs
Example #2
0
    def to_abi_dict(self, custom_units_descriptions=None):
        abi_dict = {
            "name":
            self.name,
            "outputs":
            self._generate_output_abi(custom_units_descriptions),
            "inputs": [{
                "type":
                canonicalize_type(arg.typ),
                "name":
                arg.name,
                "unit":
                print_unit(unit_from_type(arg.typ), custom_units_descriptions)
            } for arg in self.args],
            "constant":
            self.const,
            "payable":
            self.payable,
            "type":
            "constructor" if self.name == "__init__" else "function"
        }

        for abi_input in abi_dict['inputs']:
            delete_unit_if_empty(abi_input)

        return abi_dict
Example #3
0
 def to_abi_event_dict(self, arg, pos, custom_units_descriptions):
     yield "type", canonicalize_type(arg.typ, self.indexed_list[pos]),
     yield "name", arg.name,
     yield "indexed", self.indexed_list[pos],
     u = unit_from_type(arg.typ)
     if u:
         yield "unit", print_unit(u, custom_units_descriptions)
Example #4
0
 def _generate_base_type(self, arg_type, name=None, custom_units_descriptions=None):
     yield "type", canonicalize_type(arg_type)
     u = unit_from_type(arg_type)
     if u:
         yield "unit", print_unit(u, custom_units_descriptions)
     name = "out" if not name else name
     yield "name", name
Example #5
0
    def to_abi_dict(self, custom_units_descriptions=None):
        func_type = "function"
        if self.name == "__init__":
            func_type = "constructor"
        if self.name == "__default__":
            func_type = "fallback"

        abi_dict = {
            "name": self.name,
            "outputs": self._generate_output_abi(custom_units_descriptions),
            "inputs": [{
                "type": canonicalize_type(arg.typ),
                "name": arg.name,
                "unit": print_unit(unit_from_type(arg.typ), custom_units_descriptions)
            } for arg in self.args],
            "constant": self.const,
            "payable": self.payable,
            "type": func_type
        }

        for abi_input in abi_dict['inputs']:
            delete_unit_if_empty(abi_input)

        if self.name in ('__default__', '__init__'):
            del abi_dict['name']
        if self.name == '__default__':
            del abi_dict['inputs']
            del abi_dict['outputs']

        return abi_dict
Example #6
0
    def to_abi_dict(self, custom_units_descriptions=None):
        abi_dict = {
            "name": self.name,
            "inputs": [{
                "type": canonicalize_type(arg.typ, self.indexed_list[pos]),
                "name": arg.name,
                "indexed": self.indexed_list[pos],
                "unit": print_unit(unit_from_type(arg.typ), custom_units_descriptions)
            } for pos, arg in enumerate(self.args)] if self.args else [],
            "anonymous": False,
            "type": "event"
        }

        for abi_input in abi_dict['inputs']:
            delete_unit_if_empty(abi_input)

        return abi_dict