In [34]:
def gen():
    n = 1
    while True:
        yield str(n)
        n += 1
        
G = gen()
        
print G.next()
print G.next()
print G.next()
print type(G)


1
2
3
<type 'generator'>
<type 'xrange'>

In [30]:
from stuf import __version__ as stuf_version
print stuf_version
from stuf import stuf
s = stuf()
s.ten = 10
print s
s.update(gen=gen)
print s
s.G = G
print s
s.update(G=G)
type(g)


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-30-196d3c1356de> in <module>()
      9 s.G = G
     10 print s
---> 11 s.update(G=G)
     12 type(g)

/Library/Python/2.7/site-packages/stuf/_core.pyc in update(self, *args, **kw)
    119 
    120     def update(self, *args, **kw):
--> 121         self._pop(self._prepop(*args, **kw), self)
    122 
    123 

/Library/Python/2.7/site-packages/stuf/_core.pyc in _pop(self, past, future)
    106                 pass
    107             future[key] = value
--> 108         exhaustmap(closure, past)
    109         return self._postpop(future)
    110 

/Library/Python/2.7/site-packages/stuf/iterable.pyc in exhaustmap(call, mapping, filter, exception, _n)
     66     try:
     67         while 1:
---> 68             _n(iterable)
     69     except exception:
     70         pass

/Library/Python/2.7/site-packages/stuf/_core.pyc in closure(key, value, new)
    101                 if not hasattr(value, 'capitalize'):
    102                     # see if stuf can be converted to nested stuf
--> 103                     trial = new(value)
    104                     value = trial if trial else value
    105             except (TypeError, IOError):

/Library/Python/2.7/site-packages/stuf/_core.pyc in _new(self, iterable)
     90 
     91     def _new(self, iterable):
---> 92         return getcls(self)(self._build(iterable))
     93 
     94     def _prepop(self, *args, **kw):

/Library/Python/2.7/site-packages/stuf/_core.pyc in _build(self, iterable)
     83             exhaustcall(kw.update, iterable)
     84         except ValueError:
---> 85             kw.update(iterable)
     86         return kw
     87 

ValueError: dictionary update sequence element #89 has length 3; 2 is required
(0, 9, 12)
stuf(ten=10)
stuf(gen=<function gen at 0x1066bade8>, ten=10)
stuf(G=<generator object gen at 0x10672cd20>, gen=<function gen at 0x1066bade8>, ten=10)