Generator woes
Erich
sophacles at gmail.com
Thu Mar 13 01:40:03 EDT 2008
On Mar 13, 12:33 am, Erich <sophac... at gmail.com> wrote:
> Hi all,
>
> I am trying to get the following generator to work to these goals:
>
> 1. When it recieves an exception (via a throw()) it yeilds the value
> of handler.remaining. Otherwise it yeilds None.
> 2. Send adds data to the generator.
>
> Goal 2 is working great. Goal 1 on the other hand, is not working. The
> result of a throw is always None.
>
> Any reasons why this does not work as I expect? If not, what is wrong?
>
> Code:
> def make_handler():
> def handler():
> eol = '\r\n'
>
> handler.remaining = 1
> response = ''
> data = ''
>
> while not response.endswith(eol):
> trv = None
> try:
> ndata = (yield trv)
> if ndata: response += ndata
> trv = None
> except:
> trv = handler.remaining
> response = response.strip()
> yield response * 2
> res = handler()
> res.next()
> return res
>
> x = make_handler()
> y = x.send('a')
> print 'y (should be None):',y
> y = x.send('b')
> print 'y (should be None):',y
> y = x.throw(Exception)
> print 'y (should be 1):',y
> y = x.send('c\r\n')
> print 'y (should be abcabc):',y
>
> Output:
> y (should be None): None
> y (should be None): None
> y (should be 1): None
> y (should be abcabc): abcabc
>
> Thanks,
> Erich
Never mind its obviously a case of "I need to look foolish before I
can see the simple error". Im going to blush and hide now.
Erich
More information about the Python-list
mailing list