On Mar 13, 12:33 am, Erich <[EMAIL PROTECTED]> 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 -- http://mail.python.org/mailman/listinfo/python-list