E
Erich
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
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