def execute(cls, stack: MichelsonStack, stdout: List[str], context: AbstractContext): res_type: MichelsonType literal: Type[MichelineLiteral] res_type, literal = cls.args # type: ignore if res_type.prim == 'AMOUNT': context.amount = literal.get_int() # type: ignore elif res_type.prim == 'BALANCE': context.balance = literal.get_int() # type: ignore elif res_type.prim == 'CHAIN_ID': context.chain_id = literal.get_string() # type: ignore elif res_type.prim == 'SENDER': context.sender = literal.get_string() # type: ignore elif res_type.prim == 'SOURCE': context.source = literal.get_string() # type: ignore elif res_type.prim == 'NOW': try: context.now = literal.get_int() # type: ignore # FIXME: Why does TypeError appear to be wrapped? except (TypeError, MichelsonRuntimeError): context.now = int( strict_rfc3339.rfc3339_to_timestamp( literal.get_string())) # type: ignore else: raise ValueError( f'Expected one of {cls.allowed_primitives}, got {res_type.prim}' ) return cls()
def execute(cls, stack: MichelsonStack, stdout: List[str], context: AbstractContext): res_type: MichelsonType res_type = cls.args[0] # type: ignore if res_type.prim == 'AMOUNT': context.amount = None # type: ignore elif res_type.prim == 'BALANCE': context.balance = None # type: ignore elif res_type.prim == 'CHAIN_ID': context.chain_id = None # type: ignore elif res_type.prim == 'SENDER': context.sender = None # type: ignore elif res_type.prim == 'SOURCE': context.source = None # type: ignore elif res_type.prim == 'NOW': context.now = None # type: ignore else: raise ValueError(f'Expected one of {cls.allowed_primitives}, got {res_type.prim}') return cls()