It is surprising that DirPathCalc is not the superclass of OutputDirPathCalc and WorkingDirPathCalc. This structure is the result of DirPathCalc not supporting ContextDir keys, which itself has rendered DirPathCalc essentially useless in common operations, which will not care to produce any files beyond the walls of working_dir and output_dir. Both the structural issue and the usefulness issue can be resolved by changing DirPathCalc's path parameter to support Paths or ContextDirs.
It is surprising that DirPathCalc is not the superclass of OutputDirPathCalc and WorkingDirPathCalc. This structure is the result of DirPathCalc not supporting ContextDir keys, which itself has rendered DirPathCalc essentially useless in common operations, which will not care to produce any files beyond the walls of working_dir and output_dir. Both the structural issue and the usefulness issue can be resolved by changing DirPathCalc's path parameter to support Paths or ContextDirs.