Al renderizar un archivo que termina en un carácter de nueva línea (\ n), esperaría que la salida renderizada también terminara en un carácter de nueva línea. Es una convención estándar en sistemas similares a UNIX terminar archivos de texto con una nueva línea al final.
La última línea nueva se elimina de la salida 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
>>>
Pase keep_trailing_newline=True
al Environment
: http://jinja.pocoo.org/docs/api/#jinja2.Environment
Ok, gracias por la respuesta, no sabía que era una opción, pero parece que esta debería ser la predeterminada. Parece extraño suponer que el usuario quiere modificar la entrada de formas inesperadas que no tienen nada que ver con el lenguaje de la plantilla. De hecho, la razón por la que estoy abriendo este problema es porque estoy usando shinto-cli (https://github.com/istrategylabs/shinto-cli) para parametrizar algunos archivos en un trabajo de compilación, y noté que estaba generando archivos sin nuevas líneas, por lo que cuando los agrego, tengo líneas aplastadas en una línea. Al principio, iba a abrir un problema con shinto-cli hasta que eché un vistazo a la fuente, y luego probé una plantilla básica de jinja2 de Python REPL y me di cuenta de que esto es solo el comportamiento predeterminado de jinja2.
Puedo abrir un problema con shinto-cli para pedirles que agreguen la opción keep_trailing_newline = True a todas sus llamadas al entorno.
Comentario más útil
Ok, gracias por la respuesta, no sabía que era una opción, pero parece que esta debería ser la predeterminada. Parece extraño suponer que el usuario quiere modificar la entrada de formas inesperadas que no tienen nada que ver con el lenguaje de la plantilla. De hecho, la razón por la que estoy abriendo este problema es porque estoy usando shinto-cli (https://github.com/istrategylabs/shinto-cli) para parametrizar algunos archivos en un trabajo de compilación, y noté que estaba generando archivos sin nuevas líneas, por lo que cuando los agrego, tengo líneas aplastadas en una línea. Al principio, iba a abrir un problema con shinto-cli hasta que eché un vistazo a la fuente, y luego probé una plantilla básica de jinja2 de Python REPL y me di cuenta de que esto es solo el comportamiento predeterminado de jinja2.
Puedo abrir un problema con shinto-cli para pedirles que agreguen la opción keep_trailing_newline = True a todas sus llamadas al entorno.