{ "info": { "author": "Rotem Yaari", "author_email": "vmalloc@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Utilities" ], "description": "chunk\n=====\n\nChunk is a dictionary that supports attribute-style access, a la JavaScript.\n\n>>> b = Chunk()\n>>> b.hello = 'world'\n>>> b.hello\n'world'\n>>> b['hello'] += \"!\"\n>>> b.hello\n'world!'\n>>> b.foo = Chunk(lol=True)\n>>> b.foo.lol\nTrue\n>>> b.foo is b['foo']\nTrue\n\n\nDictionary Methods\n------------------\n\nA Chunk is a subclass of ``dict``; it supports all the methods a ``dict`` does:\n\n>>> b.keys()\n['foo', 'hello']\n\nIncluding ``update()``:\n\n>>> b.update({ 'ponies': 'are pretty!' }, hello=42)\n>>> print repr(b)\nChunk(foo=Chunk(lol=True), hello=42, ponies='are pretty!')\n\nAs well as iteration:\n\n>>> [ (k,b[k]) for k in b ]\n[('ponies', 'are pretty!'), ('foo', Chunk(lol=True)), ('hello', 42)]\n\nAnd \"splats\":\n\n>>> \"The {knights} who say {ni}!\".format(**Chunk(knights='lolcats', ni='can haz'))\n'The lolcats who say can haz!'\n\n\nSerialization\n-------------\n\nChunkes happily and transparently serialize to JSON and YAML.\n\n>>> b = Chunk(foo=Chunk(lol=True), hello=42, ponies='are pretty!')\n>>> import json\n>>> json.dumps(b)\n'{\"ponies\": \"are pretty!\", \"foo\": {\"lol\": true}, \"hello\": 42}'\n\nIf JSON support is present (``json`` or ``simplejson``), ``Chunk`` will have a ``toJSON()`` method which returns the object as a JSON string.\n\nIf you have PyYAML_ installed, Chunk attempts to register itself with the various YAML Representers so that Chunkes can be transparently dumped and loaded.\n\n>>> b = Chunk(foo=Chunk(lol=True), hello=42, ponies='are pretty!')\n>>> import yaml\n>>> yaml.dump(b)\n'!chunk.Chunk\\nfoo: !chunk.Chunk {lol: true}\\nhello: 42\\nponies: are pretty!\\n'\n>>> yaml.safe_dump(b)\n'foo: {lol: true}\\nhello: 42\\nponies: are pretty!\\n'\n\nIn addition, Chunk instances will have a ``toYAML()`` method that returns the YAML string using ``yaml.safe_dump()``. This method also replaces ``__str__`` if present, as I find it far more readable. You can revert back to Python's default use of ``__repr__`` with a simple assignment: ``Chunk.__str__ = Chunk.__repr__``. The Chunk class will also have a static method ``Chunk.fromYAML()``, which loads a Chunk out of a YAML string.\n\nFinally, Chunk converts easily and recursively to (``unchunkify()``, ``Chunk.toDict()``) and from (``chunkify()``, ``Chunk.fromDict()``) a normal ``dict``, making it easy to cleanly serialize them in other formats.\n\n\nMiscellaneous\n-------------\n\n* It is safe to ``import *`` from this module. You'll get: ``Chunk``, ``chunkify``, and ``unchunkify``.\n\n* Ample doctests::\n\n $ python -m chunk.test\n $ python -m chunk.test -v | tail -n22\n 1 items had no tests:\n chunk.fromYAML\n 16 items passed all tests:\n 8 tests in chunk\n 13 tests in chunk.Chunk\n 7 tests in chunk.Chunk.__contains__\n 4 tests in chunk.Chunk.__delattr__\n 7 tests in chunk.Chunk.__getattr__\n 3 tests in chunk.Chunk.__repr__\n 5 tests in chunk.Chunk.__setattr__\n 2 tests in chunk.Chunk.fromDict\n 2 tests in chunk.Chunk.toDict\n 5 tests in chunk.chunkify\n 2 tests in chunk.from_yaml\n 3 tests in chunk.toJSON\n 6 tests in chunk.toYAML\n 3 tests in chunk.to_yaml\n 3 tests in chunk.to_yaml_safe\n 4 tests in chunk.unchunkify\n 77 tests in 17 items.\n 77 passed and 0 failed.\n Test passed.\n\n\nFeedback\n--------\n\nOpen a ticket / fork the project on GitHub_, or send me an email at `dsc@less.ly`_.\n\n.. _PyYAML: http://pyyaml.org/wiki/PyYAML\n.. _GitHub: http://github.com/dsc/chunk\n.. _dsc@less.ly: mailto:dsc@less.ly", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/Infinidat/chunk", "keywords": "chunk,dict,mapping,container,collection", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "chunk", "package_url": "https://pypi.org/project/chunk/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/chunk/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/Infinidat/chunk" }, "release_url": "https://pypi.org/project/chunk/2.0.0/", "requires_dist": null, "requires_python": null, "summary": "A dot-accessible dictionary (a la JavaScript objects)", "version": "2.0.0" }, "last_serial": 957874, "releases": { "2.0.0": [ { "comment_text": "", "digests": { "md5": "1aa85ccc0d9cf76f3f9c85c809aeebf4", "sha256": "916ff1d96b99f27651d939155b9ede95c6e597d047f408ec6a256cb8fd6a2033" }, "downloads": -1, "filename": "chunk-2.0.0.tar.gz", "has_sig": false, "md5_digest": "1aa85ccc0d9cf76f3f9c85c809aeebf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7177, "upload_time": "2014-01-01T11:59:15", "url": "https://files.pythonhosted.org/packages/07/c3/397e29e963894fdf66b7a697454e92bbb422d5275c23384b611875d3eea2/chunk-2.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1aa85ccc0d9cf76f3f9c85c809aeebf4", "sha256": "916ff1d96b99f27651d939155b9ede95c6e597d047f408ec6a256cb8fd6a2033" }, "downloads": -1, "filename": "chunk-2.0.0.tar.gz", "has_sig": false, "md5_digest": "1aa85ccc0d9cf76f3f9c85c809aeebf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7177, "upload_time": "2014-01-01T11:59:15", "url": "https://files.pythonhosted.org/packages/07/c3/397e29e963894fdf66b7a697454e92bbb422d5275c23384b611875d3eea2/chunk-2.0.0.tar.gz" } ] }