def int_unary_op(op: str, c_func_name: str) -> OpDescription: return unary_op(op=op, arg_type=int_rprimitive, result_type=int_rprimitive, error_kind=ERR_NEVER, format_str='{dest} = %s{args[0]} :: int' % op, emit=call_emit(c_func_name))
error_kind=ERR_NEVER, emit=simple_emit('{dest} = {args[0]} == {args[1]};'), priority=0) binary_op('is not', arg_types=[object_rprimitive, object_rprimitive], result_type=bool_rprimitive, error_kind=ERR_NEVER, emit=simple_emit('{dest} = {args[0]} != {args[1]};'), priority=0) for op, funcname in [('-', 'PyNumber_Negative'), ('+', 'PyNumber_Positive'), ('~', 'PyNumber_Invert')]: unary_op(op=op, arg_type=object_rprimitive, result_type=object_rprimitive, error_kind=ERR_MAGIC, emit=call_emit(funcname), priority=0) unary_op(op='not', arg_type=object_rprimitive, result_type=bool_rprimitive, error_kind=ERR_MAGIC, format_str='{dest} = not {args[0]}', emit=call_negative_magic_emit('PyObject_Not'), priority=0) unary_op(op='not', arg_type=bool_rprimitive, result_type=bool_rprimitive, error_kind=ERR_NEVER,