I am developing an improved API for differentiation in sympy which is a class for scalar differential operators (a linear combination of sympy expressions and partial derivatives). The code (test_dop.py attached) produces the following output -
To run this code also requires the gprinter.py and dop.py modules (also attached). Note that the scalar differential operator API could be extended to vector operators or differential forms. It only depends on how you define the coefficients of the partial derivative operators. You could also define partial derivative operators that operate on the left argument instead of on the right argument of *.