The way we tried to allow customization in Mantissa is to split up template files into somewhat smallish pieces (deciding on what "small" meant on an arbitrary, subjective, case-by-case basis) and then allowed each template to be overridden separately. This reduces copy/paste/hack somewhat, although we still ended up with some instances of it.
This might just mean option 1 from above, plus a fallback for anything that's missing, and then being liberal about slicing up existing templates when it would be helpful for someone trying to customize output.
For my particular use case, I currently have modifications to common.html, index.html, nameIndex.html, problemObjects.html, and summary.html, adding the same footer to each. So, a separate footer template that I could override to include something at the end of every page pydoctor emits would satisfy this particular case.
The way we tried to allow customization in Mantissa is to split up template files into somewhat smallish pieces (deciding on what "small" meant on an arbitrary, subjective, case-by-case basis) and then allowed each template to be overridden separately. This reduces copy/paste/hack somewhat, although we still ended up with some instances of it.
This might just mean option 1 from above, plus a fallback for anything that's missing, and then being liberal about slicing up existing templates when it would be helpful for someone trying to customize output.
For my particular use case, I currently have modifications to common.html, index.html, nameIndex.html, problemObjects. html, and summary.html, adding the same footer to each. So, a separate footer template that I could override to include something at the end of every page pydoctor emits would satisfy this particular case.