Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Empty block in middle of %if...%elif...%elif...%else...%endif doesn't get a pass in the Python, leading to an IndentationError #146

Open
sqlalchemy-bot opened this issue Aug 10, 2010 · 9 comments

Comments

@sqlalchemy-bot
Copy link

@sqlalchemy-bot sqlalchemy-bot commented Aug 10, 2010

Migrated issue, originally created by Anonymous

How-To-Reproduce:

% if True:
test
% elif lose:
## do nothing
% elif False:
broken
% endif

Results:

An IndentationError pointing at the next line of code after the do-nothing block, complaining that Python was expecting an indented block.

Workaround:
Add <%pass%> to the do-nothing block


Attachments: 146.patch | 146.2.patch | 146.3.patch

@sqlalchemy-bot
Copy link
Author

@sqlalchemy-bot sqlalchemy-bot commented Aug 10, 2010

Michael Bayer (@zzzeek) wrote:

a very old bug which I thought we had a bug report for, thought we fixed, but all these assumptions (except the first) are wrong.

@sqlalchemy-bot
Copy link
Author

@sqlalchemy-bot sqlalchemy-bot commented Jun 25, 2011

Anonymous wrote:

Don't you have to add a 'pass' in that same situation in Python? Isn't this asking mako behavior to diverge from Python unnecessarily? Although it would indeed be more convenient to not have to manually insert the pass statement.

@sqlalchemy-bot
Copy link
Author

@sqlalchemy-bot sqlalchemy-bot commented Apr 3, 2012

Michael Bayer (@zzzeek) wrote:

the patch is in 1b4d1fb but doesn't actually fix the above test case, it appears that the comment line screws it up:

from mako.template import Template
template = r"""
% if True:
test
% elif lose:
##  do nothing
% elif False:
broken
% endif
"""

t = Template(template)
print t.render()



Traceback (most recent call last):
  File "test.py", line 12, in <module>
    t = Template(template)
  File "/Users/classic/dev/mako/mako/template.py", line 258, in __init__
    (code, module) = _compile_text(self, text, filename)
  File "/Users/classic/dev/mako/mako/template.py", line 606, in _compile_text
    code = compile(source, cid, 'exec')
  File "memory:0x1004a68d0", line 29
    elif False:
       ^
IndentationError: expected an indented block

taking out the comment, it's fine:

from mako.template import Template
template = r"""
% if True:
test
% elif lose:
% elif False:
broken
% endif
"""

t = Template(template)
print t.render()
@sqlalchemy-bot
Copy link
Author

@sqlalchemy-bot sqlalchemy-bot commented Apr 6, 2012

Michael Bayer (@zzzeek) wrote:

great, 8cce610 and we're done ! thanks!

@sqlalchemy-bot
Copy link
Author

@sqlalchemy-bot sqlalchemy-bot commented Apr 6, 2012

Changes by Michael Bayer (@zzzeek):

  • changed status to closed
@smarie
Copy link

@smarie smarie commented Apr 12, 2019

Hi there, it seems that if the empty statement is the first one it still fails:

from mako.template import Template
template = r"""
% if True:
% elif lose:
test
% elif False:
broken
% endif
"""

t = Template(template)
print(t.render())  # IndentationError: expected an indented block

So the bug is not entirely fixed.

@zzzeek
Copy link
Member

@zzzeek zzzeek commented Apr 12, 2019

hi there -

unfortunately Mako needs a maintainer to be able to look into these issues, I can only submit PRs with tests I don't have time to diagnose intricate issues like these.

@smarie
Copy link

@smarie smarie commented Apr 12, 2019

no worries I found a workaround, but could you please just reopen the ticket so that when a maintainer is active, he will know what to fix ? Thanks!

@zzzeek
Copy link
Member

@zzzeek zzzeek commented Apr 12, 2019

Sure! github lets you do all that stuff too.

@zzzeek zzzeek reopened this Apr 12, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants