[web2py] Re: Debugging view template logic

2010-08-02 Thread Michael Ellis
I'm pretty sure it does because I've fixed several instances during
the past two days  by correcting pass statements.   I'll try to create
a minimal example to post here.

On Aug 2, 12:13 pm, Thadeus Burgess thade...@thadeusb.com wrote:
 The template system actually emits an error that says Missing pass in
 view or too many pass in view.

 This has to do with cron / rocket failing, nothing to do with template.

 --
 Thadeus

 On Mon, Aug 2, 2010 at 10:57 AM, Michael Ellis



 michael.f.el...@gmail.com wrote:
  One of my views has a number of if else clauses to control what the
  user sees depending on context.  I'm finding it painfully difficult to
  debug because omitting a pass statement generates a not very helpful
  error:

  Traceback (most recent call last):
   File /Users/mellis/w2ptip/gluon/rocket.py, line 871, in run
     self.run_app(conn)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 1281, in run_app
     self.environ = environ = self.build_environ(sock_file, conn)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 1114, in
  build_environ
     request = self.read_request_line(sock_file)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 942, in
  read_request_line
     raise SocketClosed('Client closed socket.')
  SocketClosed: Client closed socket.

  Usually I can spot the problem visually, but I've been stuck for over
  an hour just now and can't find what's wrong.  Are there errors other
  than missing pass statements that will cause this?  Also, where would
  I need to set a breakpoint to step through template parsing (and is
  that a useful thing to do) ?

  I'm working at tip.

  Thanks,
  Mike


Re: [web2py] Re: Debugging view template logic

2010-08-02 Thread Jonathan Lundell
On Aug 2, 2010, at 9:21 AM, Michael Ellis wrote:

 I'm pretty sure it does because I've fixed several instances during
 the past two days  by correcting pass statements.   I'll try to create
 a minimal example to post here.

That would be good. Whatever it is, it's leading to rocket seeing an empty 
request from the client. If it's possible to cause that from a view, then 
hopefully it'll be possible to catch the error earlier and raise a more helpful 
exception.


 
 On Aug 2, 12:13 pm, Thadeus Burgess thade...@thadeusb.com wrote:
 The template system actually emits an error that says Missing pass in
 view or too many pass in view.
 
 This has to do with cron / rocket failing, nothing to do with template.
 
 --
 Thadeus
 
 On Mon, Aug 2, 2010 at 10:57 AM, Michael Ellis
 
 
 
 michael.f.el...@gmail.com wrote:
 One of my views has a number of if else clauses to control what the
 user sees depending on context.  I'm finding it painfully difficult to
 debug because omitting a pass statement generates a not very helpful
 error:
 
 Traceback (most recent call last):
  File /Users/mellis/w2ptip/gluon/rocket.py, line 871, in run
self.run_app(conn)
  File /Users/mellis/w2ptip/gluon/rocket.py, line 1281, in run_app
self.environ = environ = self.build_environ(sock_file, conn)
  File /Users/mellis/w2ptip/gluon/rocket.py, line 1114, in
 build_environ
request = self.read_request_line(sock_file)
  File /Users/mellis/w2ptip/gluon/rocket.py, line 942, in
 read_request_line
raise SocketClosed('Client closed socket.')
 SocketClosed: Client closed socket.
 
 Usually I can spot the problem visually, but I've been stuck for over
 an hour just now and can't find what's wrong.  Are there errors other
 than missing pass statements that will cause this?  Also, where would
 I need to set a breakpoint to step through template parsing (and is
 that a useful thing to do) ?
 
 I'm working at tip.
 
 Thanks,
 Mike




Re: [web2py] Re: Debugging view template logic

2010-08-02 Thread Thadeus Burgess
I seriously doubt it.

I guarantee you it is just a fluke probably having to do with your setup.

--
Thadeus





On Mon, Aug 2, 2010 at 11:21 AM, Michael Ellis
michael.f.el...@gmail.com wrote:
 I'm pretty sure it does because I've fixed several instances during
 the past two days  by correcting pass statements.   I'll try to create
 a minimal example to post here.

 On Aug 2, 12:13 pm, Thadeus Burgess thade...@thadeusb.com wrote:
 The template system actually emits an error that says Missing pass in
 view or too many pass in view.

 This has to do with cron / rocket failing, nothing to do with template.

 --
 Thadeus

 On Mon, Aug 2, 2010 at 10:57 AM, Michael Ellis



 michael.f.el...@gmail.com wrote:
  One of my views has a number of if else clauses to control what the
  user sees depending on context.  I'm finding it painfully difficult to
  debug because omitting a pass statement generates a not very helpful
  error:

  Traceback (most recent call last):
   File /Users/mellis/w2ptip/gluon/rocket.py, line 871, in run
     self.run_app(conn)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 1281, in run_app
     self.environ = environ = self.build_environ(sock_file, conn)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 1114, in
  build_environ
     request = self.read_request_line(sock_file)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 942, in
  read_request_line
     raise SocketClosed('Client closed socket.')
  SocketClosed: Client closed socket.

  Usually I can spot the problem visually, but I've been stuck for over
  an hour just now and can't find what's wrong.  Are there errors other
  than missing pass statements that will cause this?  Also, where would
  I need to set a breakpoint to step through template parsing (and is
  that a useful thing to do) ?

  I'm working at tip.

  Thanks,
  Mike



Re: [web2py] Re: Debugging view template logic

2010-08-02 Thread Michael Ellis
Ok, think I know what was going on:

1. I did have a missing pass statement
2. I had not restarted web2py after updating from tip this morning.

It's probably not fair to expect web2py to show the correct errors after
repairing the engine while the motor's still running :-}

So I immediately got the missing pass error after restarting.  FWIW it would
be really helpful if the template parser could give some indication of which
loop or conditional might responsible.  I know that's not as easy as it
sounds, though.

Thanks for the help!
Mike



On Mon, Aug 2, 2010 at 12:32 PM, Jonathan Lundell jlund...@pobox.comwrote:

 On Aug 2, 2010, at 9:21 AM, Michael Ellis wrote:

  I'm pretty sure it does because I've fixed several instances during
  the past two days  by correcting pass statements.   I'll try to create
  a minimal example to post here.

 That would be good. Whatever it is, it's leading to rocket seeing an empty
 request from the client. If it's possible to cause that from a view, then
 hopefully it'll be possible to catch the error earlier and raise a more
 helpful exception.


 
  On Aug 2, 12:13 pm, Thadeus Burgess thade...@thadeusb.com wrote:
  The template system actually emits an error that says Missing pass in
  view or too many pass in view.
 
  This has to do with cron / rocket failing, nothing to do with template.
 
  --
  Thadeus
 
  On Mon, Aug 2, 2010 at 10:57 AM, Michael Ellis
 
 
 
  michael.f.el...@gmail.com wrote:
  One of my views has a number of if else clauses to control what the
  user sees depending on context.  I'm finding it painfully difficult to
  debug because omitting a pass statement generates a not very helpful
  error:
 
  Traceback (most recent call last):
   File /Users/mellis/w2ptip/gluon/rocket.py, line 871, in run
 self.run_app(conn)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 1281, in run_app
 self.environ = environ = self.build_environ(sock_file, conn)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 1114, in
  build_environ
 request = self.read_request_line(sock_file)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 942, in
  read_request_line
 raise SocketClosed('Client closed socket.')
  SocketClosed: Client closed socket.
 
  Usually I can spot the problem visually, but I've been stuck for over
  an hour just now and can't find what's wrong.  Are there errors other
  than missing pass statements that will cause this?  Also, where would
  I need to set a breakpoint to step through template parsing (and is
  that a useful thing to do) ?
 
  I'm working at tip.
 
  Thanks,
  Mike





Re: [web2py] Re: Debugging view template logic

2010-08-02 Thread Thadeus Burgess
Its not a matter of easy, but more a matter of it even being a
possibility. There is no way to know where you intended to place the
pass statement.

--
Thadeus





On Mon, Aug 2, 2010 at 11:47 AM, Michael Ellis
michael.f.el...@gmail.com wrote:
 Ok, think I know what was going on:
 1. I did have a missing pass statement
 2. I had not restarted web2py after updating from tip this morning.
 It's probably not fair to expect web2py to show the correct errors after
 repairing the engine while the motor's still running :-}
 So I immediately got the missing pass error after restarting.  FWIW it would
 be really helpful if the template parser could give some indication of which
 loop or conditional might responsible.  I know that's not as easy as it
 sounds, though.
 Thanks for the help!
 Mike


 On Mon, Aug 2, 2010 at 12:32 PM, Jonathan Lundell jlund...@pobox.com
 wrote:

 On Aug 2, 2010, at 9:21 AM, Michael Ellis wrote:

  I'm pretty sure it does because I've fixed several instances during
  the past two days  by correcting pass statements.   I'll try to create
  a minimal example to post here.

 That would be good. Whatever it is, it's leading to rocket seeing an empty
 request from the client. If it's possible to cause that from a view, then
 hopefully it'll be possible to catch the error earlier and raise a more
 helpful exception.


 
  On Aug 2, 12:13 pm, Thadeus Burgess thade...@thadeusb.com wrote:
  The template system actually emits an error that says Missing pass in
  view or too many pass in view.
 
  This has to do with cron / rocket failing, nothing to do with template.
 
  --
  Thadeus
 
  On Mon, Aug 2, 2010 at 10:57 AM, Michael Ellis
 
 
 
  michael.f.el...@gmail.com wrote:
  One of my views has a number of if else clauses to control what the
  user sees depending on context.  I'm finding it painfully difficult to
  debug because omitting a pass statement generates a not very helpful
  error:
 
  Traceback (most recent call last):
   File /Users/mellis/w2ptip/gluon/rocket.py, line 871, in run
     self.run_app(conn)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 1281, in run_app
     self.environ = environ = self.build_environ(sock_file, conn)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 1114, in
  build_environ
     request = self.read_request_line(sock_file)
   File /Users/mellis/w2ptip/gluon/rocket.py, line 942, in
  read_request_line
     raise SocketClosed('Client closed socket.')
  SocketClosed: Client closed socket.
 
  Usually I can spot the problem visually, but I've been stuck for over
  an hour just now and can't find what's wrong.  Are there errors other
  than missing pass statements that will cause this?  Also, where would
  I need to set a breakpoint to step through template parsing (and is
  that a useful thing to do) ?
 
  I'm working at tip.
 
  Thanks,
  Mike






Re: [web2py] Re: Debugging view template logic

2010-08-02 Thread Michael Ellis
Agreed. That's why I said some indication.  I can think of a couple of
things that might be helpful:

1. If the nesting level returns to 0 at any point in the file, the missing
pass statement must be afterwards.  If that's the case, the error message
could say missing pass statement after line 214.

2. Offer a collapsed view of the output, ie only the loops, conditionals,
and pass statements.  Should make the errors easier to spot.

Cheers,
Mike


On Mon, Aug 2, 2010 at 12:57 PM, Thadeus Burgess thade...@thadeusb.comwrote:

 Its not a matter of easy, but more a matter of it even being a
 possibility. There is no way to know where you intended to place the
 pass statement.

 --
 Thadeus





 On Mon, Aug 2, 2010 at 11:47 AM, Michael Ellis
 michael.f.el...@gmail.com wrote:
  Ok, think I know what was going on:
  1. I did have a missing pass statement
  2. I had not restarted web2py after updating from tip this morning.
  It's probably not fair to expect web2py to show the correct errors after
  repairing the engine while the motor's still running :-}
  So I immediately got the missing pass error after restarting.  FWIW it
 would
  be really helpful if the template parser could give some indication of
 which
  loop or conditional might responsible.  I know that's not as easy as it
  sounds, though.
  Thanks for the help!
  Mike
 
 
  On Mon, Aug 2, 2010 at 12:32 PM, Jonathan Lundell jlund...@pobox.com
  wrote:
 
  On Aug 2, 2010, at 9:21 AM, Michael Ellis wrote:
 
   I'm pretty sure it does because I've fixed several instances during
   the past two days  by correcting pass statements.   I'll try to create
   a minimal example to post here.
 
  That would be good. Whatever it is, it's leading to rocket seeing an
 empty
  request from the client. If it's possible to cause that from a view,
 then
  hopefully it'll be possible to catch the error earlier and raise a more
  helpful exception.
 
 
  
   On Aug 2, 12:13 pm, Thadeus Burgess thade...@thadeusb.com wrote:
   The template system actually emits an error that says Missing pass
 in
   view or too many pass in view.
  
   This has to do with cron / rocket failing, nothing to do with
 template.
  
   --
   Thadeus
  
   On Mon, Aug 2, 2010 at 10:57 AM, Michael Ellis
  
  
  
   michael.f.el...@gmail.com wrote:
   One of my views has a number of if else clauses to control what the
   user sees depending on context.  I'm finding it painfully difficult
 to
   debug because omitting a pass statement generates a not very helpful
   error:
  
   Traceback (most recent call last):
File /Users/mellis/w2ptip/gluon/rocket.py, line 871, in run
  self.run_app(conn)
File /Users/mellis/w2ptip/gluon/rocket.py, line 1281, in run_app
  self.environ = environ = self.build_environ(sock_file, conn)
File /Users/mellis/w2ptip/gluon/rocket.py, line 1114, in
   build_environ
  request = self.read_request_line(sock_file)
File /Users/mellis/w2ptip/gluon/rocket.py, line 942, in
   read_request_line
  raise SocketClosed('Client closed socket.')
   SocketClosed: Client closed socket.
  
   Usually I can spot the problem visually, but I've been stuck for
 over
   an hour just now and can't find what's wrong.  Are there errors
 other
   than missing pass statements that will cause this?  Also, where
 would
   I need to set a breakpoint to step through template parsing (and is
   that a useful thing to do) ?
  
   I'm working at tip.
  
   Thanks,
   Mike