Attribute-accesible collections inspired by stuf. Implements chainstuf and counterstuf: versions of ChainMap and Counter that expose their keys as attributes.
The ultimate goal of this module is to have these functions available in the stuf module, and this sidecar to be retired.
Use these just like you would ChainMap and Counter, except that you get attribute-style access as well.
from otherstuf import chainstuf d1 = dict(this=1, that=2) d2 = dict(roger=99, that=100) # test simple attribute equivalence c = chainstuf(d1, d2) assert c.this == 1 assert c.roger == 99 c.roger = 'wilco' assert c.roger print "roger", c.roger d1.update(feeling='fancypants!') print "i'm feeling", c.feeling # passed through, since d2 lacks 'feeling'
Given recent versions (e.g. 0.9.10) of stuf, one could simply use from stuf import chainstuf. This portion of the otherstuf sidecar is now superflous.
from otherstuf import counterstuf c = counterstuf() c.update("this and this is this but that isn't this".split()) c.total = sum(c.values()) print "everything:", c.total print "'this' mentioned", c.this, "times" print "'bozo' mentioned", c.bozo, "times" print c
- Commenced automated multi-version testing with pytest and tox.
- Now successfully packaged and tested for Python 2.6, 2.7, 3.2, 3.3 and PyPy 1.9 (aka Python 2.7.2). Previous exceptions for Python 2.6 have been eliminated.
- Now packaged as a package rather than modules. This changes the import from from chainstuf import chainstuf and from counterstuf import counterstuf to from otherstuf import chainstuf and from otherstuf import counterstuf, respectively.
- The author, Jonathan Eunice or @jeunice on Twitter welcomes your comments and suggestions.
pip install otherstuf
To easy_install under a specific Python version (3.3 in this example):
python3.3 -m easy_install otherstuf
(You may need to prefix these with "sudo " to authorize installation. If they're already installed, the --upgrade flag will be helpful; add it right before the package name.)