Re: [Python-de] bottle-template: syntax error
Am Sonntag, 1. September 2013 11:57:16 UTC+2 schrieb Peter Otten:
Ich kann den Fehler damit nicht reproduzieren:
..... Habe jetzt mal ein dos2unix.py ueber das Template laufen lassen und jetzt funzt es! Verstehe aber nicht, warum das ueberhaupt notwendig ist, da Python3 das doch angeblich automatisch erkennt?! Gruss, Helmut
helmut_blass@web.de wrote:
Am Sonntag, 1. September 2013 11:57:16 UTC+2 schrieb Peter Otten:
Ich kann den Fehler damit nicht reproduzieren:
..... Habe jetzt mal ein dos2unix.py ueber das Template laufen lassen und jetzt funzt es! Verstehe aber nicht, warum das ueberhaupt notwendig ist, da Python3 das doch angeblich automatisch erkennt?!
Ich war auch verwundert, zumal ich vor meiner letzten Antwort vergeblich versucht hatte, den Fehler mit unix2dos zu provozieren. Python 2 wie 3 sollten mit DOS-Newlines in Modulen klarkommen. Allerdings bestehen bei mir zwischen 2.6.7 und 2.7.2+ Unterschiede bei der Verarbeitung von CRLF in exec und eval (und bottle verwendet eval() für templates): $ python2.6 -c 'print eval("1\r\n")' Traceback (most recent call last): File "<string>", line 1, in <module> File "<string>", line 1 1 ^ SyntaxError: invalid syntax $ python2.7 -c 'print eval("1\r\n")' 1 Auch 3.2.2 stört sich hier nicht an CRLF, $ python3.2 -c 'print(eval("1\r\n"))' 1 aber das könnte sich mit auch mit einem Bugfix-Release geändert haben.
On 01.09.2013 15:06, Peter Otten wrote:
Allerdings bestehen bei mir zwischen 2.6.7 und 2.7.2+ Unterschiede bei der Verarbeitung von CRLF in exec und eval (und bottle verwendet eval() für templates):
$ python2.6 -c 'print eval("1\r\n")' Traceback (most recent call last): File "<string>", line 1, in <module> File "<string>", line 1 1 ^ SyntaxError: invalid syntax $ python2.7 -c 'print eval("1\r\n")' 1
Auch 3.2.2 stört sich hier nicht an CRLF,
$ python3.2 -c 'print(eval("1\r\n"))' 1
aber das könnte sich mit auch mit einem Bugfix-Release geändert haben.
Das ist mal interessant. Den Bug kannte ich noch nicht. Ich seh mal ob sich das leicht in Bottle fixen lässt.
On 01.09.2013 15:06, Peter Otten wrote:
Allerdings bestehen bei mir zwischen 2.6.7 und 2.7.2+ Unterschiede bei der Verarbeitung von CRLF in exec und eval (und bottle verwendet eval() für templates):
$ python2.6 -c 'print eval("1\r\n")' Traceback (most recent call last): File "<string>", line 1, in <module> File "<string>", line 1 1 ^ SyntaxError: invalid syntax $ python2.7 -c 'print eval("1\r\n")' 1
Ich kann den eval() Fehler reproduzieren, aber nicht mit Templates. Sowohl bottle-0.11 als auch bottle-0.12 generieren Python Code ohne \r. Kann natürlich sein das ich etwas übersehe aber das Beispiel-Template erzeugt http://pastebin.com/xXh6Gwi6 und rendert ohne probleme. Ich bin also nicht schlauer als vorher.
Marcel Hellkamp wrote:
On 01.09.2013 15:06, Peter Otten wrote:
Allerdings bestehen bei mir zwischen 2.6.7 und 2.7.2+ Unterschiede bei der Verarbeitung von CRLF in exec und eval (und bottle verwendet eval() für templates):
$ python2.6 -c 'print eval("1\r\n")' Traceback (most recent call last): File "<string>", line 1, in <module> File "<string>", line 1 1 ^ SyntaxError: invalid syntax $ python2.7 -c 'print eval("1\r\n")' 1
Ich kann den eval() Fehler reproduzieren, aber nicht mit Templates. Sowohl bottle-0.11 als auch bottle-0.12 generieren Python Code ohne \r. Kann natürlich sein das ich etwas übersehe aber das Beispiel-Template erzeugt http://pastebin.com/xXh6Gwi6 und rendert ohne probleme.
Ich kann den SyntaxError ebenfalls nicht mit einem bottle-Template provozieren. Ich habe auch einen Blick in den bottle-Sourcecode (0.11.6) geworfen, sehe aber im Moment nicht, wie ein "\r" den Parsingprozess überleben könnte.
participants (3)
-
helmut_blass@web.de
-
Marcel Hellkamp
-
Peter Otten