code: def _partial_subs(func, func2vars):
      
      if isinstance(func, sympy.Derivative):
          new_func = func.expr.xreplace(func2vars)
          new_variables = tuple(var.xreplace(func2vars)
                                for var in func.variables)
          return _partial_diff(new_func, *new_variables)
      else:
          return func.xreplace(func2vars)
docs: Partial-bug proof substitution. Works by making the substitutions on
      the expression inside the derivative first, and then rebuilding the
      derivative safely without evaluating it using `_partial_diff`.