In the command string for parmchk2,
cmd = f"parmchk2 -i out.mol2 -f mol2 -p {self.gaff_dat_filename} -o out.frcmod -s %{self._gaff_major_version}"
there is an extra percentage sign before the gaff major version that I think should not be there. On Linux/Mac, this seems to be harmless. Not entirely sure how this happens, but on Windows this sometimes seems to get filled with random text that gets inserted into the middle of the parmchk2 command that then does not run. Having tested on several different Windows machines, I only found this to happen on a single machine.