code: def deprecated_defvjp(primitive_fun):
      deprecation_msg = deprecated_defvjp_message.format("defvjp")
      vjpfuns = {}
  
      def defvjp_unstaged(vjpmaker, argnum=0):
          warnings.warn(deprecation_msg)
  
          def staged_vjpmaker(ans, *args, **kwargs):
              def vjp(g):
                  vs, gvs = vspace(args[argnum]), vspace(g)
                  return vjpmaker(g, ans, vs, gvs, *args, **kwargs)
  
              return vjp
  
          vjpfuns[argnum] = staged_vjpmaker
          argnums, vjpmakers = zip(
              *[
                  (argnum, vjpfuns[argnum])
                  for argnum in sorted(vjpfuns.keys())
              ]
          )
          defvjp(primitive_fun, *vjpmakers, argnums=argnums)
  
      return defvjp_unstaged
  
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 17 for calling a global function with example usage: deprecated_defvjp(primitive_fun) and returns: defvjp_unstaged, vjp, vjpmaker