Пример #1
0
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})'
Пример #2
0
 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})'
Пример #3
0
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)},'
Пример #4
0
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