code: def should_generate_py_binding(f: NativeFunction) -> bool:
      # NativeFunctions that are entirely code-generated should not get python bindings
      # because these codegen implementations are often inefficient. A handful of
      # view_copy style ops were exposed accidentally when they were handwritten and now
      # that we are moving them to codegen for bc reasons we need to keep them exposed in
      # python.
      if "generated" in f.tags and "view_copy" not in f.tags:
          return False
  
      name = cpp.name(f.func)
      for skip_regex in SKIP_PYTHON_BINDINGS:
          if skip_regex.match(name):
              return False
  
      signature = str(f.func)
      for pattern in SKIP_PYTHON_BINDINGS_SIGNATURES:
          if pattern == signature:
              return False
      return True
  
imports: import itertools
  import re
  from collections import defaultdict
  from typing import Callable, Dict, Iterable, List, Optional, Sequence, Set, Tuple
  import yaml
  from torchgen.api import cpp
  from torchgen.api.python import arg_parser_output_exprs, cpp_dispatch_exprs, cpp_dispatch_target, dispatch_lambda_args, dispatch_lambda_exprs, dispatch_lambda_return_str, has_tensor_options, namedtuple_fieldnames, PythonSignature, PythonSignatureDeprecated, PythonSignatureGroup, PythonSignatureNativeFunctionPair, signature, signature_from_schema
  from torchgen.code_template import CodeTemplate
  from torchgen.context import with_native_function
  from torchgen.gen import cpp_string, parse_native_yaml, parse_tags_yaml
  from torchgen.model import Argument, BaseOperatorName, FunctionSchema, NativeFunction, Type, Variant
  from torchgen.utils import FileManager, split_name_params
  from torchgen.yaml_utils import YamlLoader
  from .gen_trace_type import should_trace
label_desc: Use image node_id 1 for calling a global function with example usage: should_generate_py_binding(f) and returns: True, False, False, False