code: def make_jvp(fun, x):
      def jvp(g):
          start_node = JVPNode.new_root(g)
          end_value, end_node = trace(start_node, fun, x)
          if end_node is None:
              return end_value, vspace(end_value).zeros()
          else:
              return end_value, end_node.g
  
      return jvp
  
imports: from itertools import count
  from functools import reduce
  from .tracer import trace, primitive, toposort, Node, Box, isbox, getval
  from .util import func, subval
  import warnings
label_desc: Use image node_id 7 for calling a global function with example usage: make_jvp(fun, x) and returns: jvp, end_value,  vspace, end_value,  end_node