code: def generate():
      version = sys.argv[1]
      update_function_order_in_functsions_yaml()
      generate_functions_pkl()
  
      function_info = utils.load_function_info(flatten=True)
      solver_info = utils.load_solver_info()
      function_types = utils.load_yaml_ordered(
          open(join(here, "function_types.yaml"), "r")
      )
      solver_types = utils.load_yaml_ordered(
          open(join(here, "solver_types.yaml"), "r")
      )
      utils.generate_init(
          function_info, function_types, solver_info, solver_types
      )
      utils.generate_function_types(function_info, function_types)
      utils.generate_solver_types(solver_info, solver_types)
      utils.generate_version(
          join(base, "python/src/nnabla/_version.py.tmpl"),
          base,
          version=version,
      )
      utils.generate_version(
          join(base, "src/nbla/version.cpp.tmpl"), base, version=version
      )
      utils.generate_version(
          join(base, "doc/requirements.txt.tmpl"), base, version=version
      )
      utils.generate_version(
          join(base, "python/src/nnabla/utils/converter/setup.py.tmpl"),
          base,
          version=version,
      )
      generate_solver_python_interface(solver_info)
      generate_function_python_interface(function_info)
      generate_python_utils(function_info)
      generate_proto(function_info, solver_info)
      generate_cpp_utils(function_info)
      generate_function_cpp_interface(function_info)
      generate_backward_function_mapping(function_info)
  
      # Generate function skeletons if new ones are added to functions.yaml and function_types.yaml.
      utils.generate_skeleton_function_impl(
          function_info, function_types
      )
      func_header_template = join(
          base, "include/nbla/function/function_impl.hpp.tmpl"
      )
      utils.generate_skeleton_function_impl(
          function_info,
          function_types,
          template=func_header_template,
          output_format="%s.hpp",
      )
  
      # Generate backward function skeletons if new ones are added to functions.yaml
      utils.generate_skeleton_backward_function_impl(
          function_info,
          join(base, "python/src/nnabla/backward_function.py.tmpl"),
          join(base, "python/src/nnabla/backward_function"),
      )
  
file_path: nnabla/build-tools/code_generator/generate.py
imports: import sys
  from collections import OrderedDict
  from os.path import abspath, dirname, join, exists
  from contextlib import contextmanager
  import code_generator_utils
label_desc: Use image node_id 13 for calling a global function with example usage: generate() without return types