tl; dr
Alguns programas amplamente usados, que geram html, geram apenas tags de parágrafo de abertura e não de fechamento, supondo que o navegador feche adequadamente os parágrafos.
Aparentemente, parece-me que a suposição de que os navegadores fechem corretamente os parágrafos não está correta. Minha interpretação está correta? De um modo mais geral, que tradeoffs estão envolvidos nesse tipo de decisão?
Navegando pelo código fonte do moinmoin, a seguinte linha de código chamou minha atenção:
# We only open those tags and let the browser auto-close them:
_auto_closing_tags = set(['p'])
( fonte )
Depois de ler o restante da implementação, convenci-me de que sim, quando o moinmoin gera código html para uma de suas páginas, ele gera corretamente tags de parágrafo abertas, quando apropriado, e ao mesmo tempo evita intencionalmente qualquer um dos as tags de fechamento do parágrafo (apesar de poder fazer isso trivialmente).
Para meu caso de uso específico, bastante incomum, esse comportamento não está correto. Estou tentado a enviar um relatório de erro e / ou alterar o comportamento. No entanto, parece que essa decisão de design foi cuidadosamente tomada. Não sou suficientemente versado nas complexidades do padrão html ou nas várias implementações de navegador para saber se esse é o comportamento correto em geral e tenho a sensação de que meu instinto de corrigir / alterar esse comportamento pode ser mal orientado.
Esse código faz uma suposição válida sobre implementações de navegador? O html gerado é válido? De um modo mais geral, que tradeoffs posso estar perdendo aqui?