Ao renderizar um arquivo que termina em um caractere de nova linha (\ n), espero que a saída renderizada também termine em um caractere de nova linha. É uma convenção padrão em sistemas semelhantes ao UNIX terminar os arquivos de texto com uma nova linha à direita.
A nova linha final é removida da saída renderizada.
>>> c
u'foo is {{ foo }}\nquux is {{ quux }}\nasdf\n'
>>> t = jinja2.Template(c)
>>> t.render(foo="bar", quux="baz")
u'foo is bar\nquux is baz\nasdf'
>>> s = t.stream()
>>> s.next()
u'foo is \nquux is \nasdf'
>>> s.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ifreeman/.local/lib/python2.7/site-packages/jinja2/environment.py", line 1271, in __next__
return self._next()
StopIteration
>>>
Passe keep_trailing_newline=True
para o Environment
: http://jinja.pocoo.org/docs/api/#jinja2.Environment
Ok, obrigado pela resposta, eu não sabia se era uma opção, mas parece que esse deveria ser o padrão. Parece estranho supor que o usuário deseja modificar a entrada de maneiras inesperadas que nada têm a ver com a linguagem do modelo. Na verdade, estou até abrindo este problema porque estou usando shinto-cli (https://github.com/istrategylabs/shinto-cli) para parametrizar alguns arquivos em um trabalho de construção e percebi que estava gerando arquivos sem novas linhas, então, quando os acrescento, tenho as linhas comprimidas em uma linha. No início, eu ia abrir um problema com shinto-cli até que dei uma olhada no código-fonte e, em seguida, tentei um modelo jinja2 básico do REPL python e percebi que esse é apenas o comportamento padrão do jinja2.
Posso abrir um problema com shinto-cli para pedir que eles adicionem a opção keep_trailing_newline = True a todas as suas chamadas de ambiente.
Comentários muito úteis
Ok, obrigado pela resposta, eu não sabia se era uma opção, mas parece que esse deveria ser o padrão. Parece estranho supor que o usuário deseja modificar a entrada de maneiras inesperadas que nada têm a ver com a linguagem do modelo. Na verdade, estou até abrindo este problema porque estou usando shinto-cli (https://github.com/istrategylabs/shinto-cli) para parametrizar alguns arquivos em um trabalho de construção e percebi que estava gerando arquivos sem novas linhas, então, quando os acrescento, tenho as linhas comprimidas em uma linha. No início, eu ia abrir um problema com shinto-cli até que dei uma olhada no código-fonte e, em seguida, tentei um modelo jinja2 básico do REPL python e percebi que esse é apenas o comportamento padrão do jinja2.
Posso abrir um problema com shinto-cli para pedir que eles adicionem a opção keep_trailing_newline = True a todas as suas chamadas de ambiente.