def get_func_signature(f: NativeFunction) -> str: args = CppSignatureGroup.from_schema(f.func, method=False).signature.arguments() types = ', '.join( python.argument_type_str(a.argument.type, simple_type=True) if isinstance(a.argument, Argument) else 'TensorOptions' for a in args) return f'{cpp.name(f.func)}({types})'
def signature_original(f: NativeFunction) -> str: # remove inplace suffix but keep outplace suffix opname = str(f.func.name.name.base) if f.func.is_out_fn(): opname += '_out' if f.func.name.name.inplace and pyi: opname += '_' args = CppSignatureGroup.from_native_function(f, method=False).signature.arguments() # Simply ignore TensorOptionsArguments as it does not exist in deprecated.yaml. types = ', '.join(argument_type_str(a.argument.type) for a in args if isinstance(a.argument, Argument)) return f'{opname}({types})'
def gen_annotated_args(f: NativeFunction) -> str: out_args: List[Dict[str, Any]] = [] for arg in f.func.arguments.flat_positional: if arg.default is not None: continue out_arg: Dict[str, Any] = {} out_arg['name'] = arg.name out_arg['simple_type'] = python.argument_type_str(arg.type, simple_type=True) size = python.argument_type_size(arg.type) if size: out_arg['size'] = size out_args.append(out_arg) return f'{f.func.name.name}: {repr(out_args)},'
def should_generate_py_binding(f: NativeFunction) -> bool: name = cpp.name(f.func) for pattern in SKIP_PYTHON_BINDINGS: if re.match('^' + pattern + '$', name): return False args = ', '.join( argument_type_str(arg.type) for arg in signature(f).arguments()) sig = f'{name}({args})' for pattern in SKIP_PYTHON_BINDINGS_SIGNATURES: if pattern == sig: return False return True