Topology optimization using PETSc: a Python wrapper and extended functionality