{ "info": { "author": "Agendaless Consulting", "author_email": "repoze-dev@lists.repoze.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "repoze.folder\n=============\n\n.. image:: https://travis-ci.org/repoze/repoze.folder.png?branch=master\n :target: https://travis-ci.org/repoze/repoze.folder\n\n.. image:: https://readthedocs.org/projects/repozefolder/badge/?version=latest\n :target: http://repozefolder.readthedocs.org/en/latest/\n :alt: Documentation Status\n\n``repoze.folder`` provides a barebones ZODB folder implementation with\nobject event support. Folders have a dictionary-like interface and\nemit \"object events\" on the addition and removal of objects when\ncertain methods of this interface are exercised.\n\nFolder objects are based on BTree code, so as long as you persist\nthem, the folder should be able to contain many objects efficiently.\n\n\nChanges\n=======\n\n1.0 (2014-12-28)\n----------------\n\n- Add support for PyPy.\n\n- Add support for Python 3.2, 3.3, and 3.4.\n\n- Add support for testing on Travis.\n\n- Drop support for Python 2.4 and 2.5.\n\n0.6.3 (2012-03-29)\n------------------\n\n.. note::\n \n This release is the last which will maintain support for Python 2.4 /\n Python 2.5.\n\n- Add support for continuous integration using ``tox`` and ``jenkins``.\n\n- Add 'setup.py dev' alias (runs ``setup.py develop`` plus installs\n ``nose`` and ``coverage``).\n\n- Move to GitHub.\n\n0.6.2 (2010-10-04)\n------------------\n\n- Fix iteration bug due to use of ``_order`` as tuple.\n\n0.6.1 (2010-10-01)\n------------------\n\n- Fixed persistence bugs in ordering support when adding or removing items.\n\n0.6 (2010-09-30)\n------------------\n\n- Add support for ordering items in a folder.\n\n0.5 (2010/09/04)\n------------------\n\n- Make ``remove`` return the removed object.\n\n- Add ``pop`` method.\n\n0.4 (2009/06/15)\n------------------\n\n- 100% test coverage.\n\n- Add an ``add`` method that does what ``__setitem__`` does. It also\n provides a flag named ``send_events``, which by default is True. If\n it is False when ``add` is called, folder events\n (``IObjectWillBeAddedEvent`` and ``IObjectAddedEvent``) will not be\n sent.\n\n- Add a ``remove`` method that does what ``__delitem__`` does. It\n also provides a flag named ``send_events``, which by default is\n True. If it is False when ``add` is called, folder events\n (``IObjectWillBeRemovedEvent`` and ``IObjectRemovedEvent``) will not\n be sent.\n\n0.3.5 (2009/1/8)\n------------------\n\n- Add a ``BTrees.Length`` object to folders that don't already have\n one during ``__setitem__`` and ``__delitem__`` (this is an\n \"evolution\" step; having a Length object is useful for performance\n reasons).\n\n0.3.4 (2009/1/8)\n------------------\n\n- Fix backwards compatibility foul (near\n ``self._num_objects.change(1)``: ``AttributeError: 'NoneType' object\n has no attribute 'change'``).\n\n0.3.3 (2009/1/6)\n------------------\n\n- Add tests for ``unicodify`` and make docs about to-Unicode\n convenience conversion from byte strings (and error messages)\n slightly clearer.\n\n- Now no matter what is passed to the folder as constructor, we\n try to turn it into an OOBTree (before it was set as ``data`` on the\n instance without any conversion).\n\n- A ``__len__`` method was added to ``repoze.folder.Folder``\n instances. It returns the number of subobjects in the folder.\n\n- A ``_num_objects`` attribute is set onto newly created\n ``repoze.folder.Folder`` instances. This is a\n ``BTrees.Length.Length`` object. We manage this length object in\n order to supply a return value for the ``__len__`` method instead of\n using the folder's underlying OOBTree.__len__ method (querying a\n btree for length can be arbitrarily expensive). A ``_num_objects``\n class attribute was added equalling None to provide a backward\n compatibility cue for already-persisted objects which do not have a\n meaningful Length attribute.\n\n- The implementation no longer concerns itself with advertising a\n modified event (``IObjectModifiedEvent``).\n\n0.3.2 (2008/12/13)\n------------------\n\n- Yeah. 0.3.1 was another brownbag, as we need to try to decode ASCII\n to unicode before we use the utf-8 decoding.\n\n0.3.1 (2008/12/13)\n------------------\n\n- Mistakenly removed ``__parent__`` and ``__name__`` attributes from\n folder implementation, making 0.3 a brownbag.\n\n0.3 (2008/12/13)\n----------------\n\nBackwards Incompatibilities\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- When a new object is added using ``__setitem__`` with the same name\n as an existing object, a KeyError is now raised rather than the item\n being silently replaced.\n\n- API methods accepting a ``name`` (``__setitem__``, ``__getitem__``,\n ``get``, ``__contains__``, and ``__delitem__``) now attempt to\n decode bytestrings to Unicode using the utf-8 encoding before\n performing the action the method implies.\n\n- Previously, it was possible to store either an ASCII bytestring or a\n Unicode object as a key value. Now all key values are converted to\n Unicode before being stored.\n\n0.2.1 (2008/10/31)\n------------------\n\n- Remove ``__init__`` from IFolder interface.\n \n0.2 (2008/10/22)\n------------------\n\n- Update Sphinx docs, using interfaces\n\n- Add folder ``__name__`` to repr and str of folder in output.\n\n0.1 (2008/10/13)\n------------------\n\n- Initial release.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.repoze.org", "keywords": "web repoze folder", "license": "BSD-derived (http://www.repoze.org/LICENSE.txt)", "maintainer": null, "maintainer_email": null, "name": "repoze.folder", "package_url": "https://pypi.org/project/repoze.folder/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/repoze.folder/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://www.repoze.org" }, "release_url": "https://pypi.org/project/repoze.folder/1.0/", "requires_dist": null, "requires_python": null, "summary": "A ZODB folder implementation with object events", "version": "1.0" }, "last_serial": 1362984, "releases": { "0.4": [ { "comment_text": "", "digests": { "md5": "6d4f782147103eff11845edf803c4844", "sha256": "592c71615180a9f29a981dc4296ecbc8b7394811ff651681e02b1960a6ef0d57" }, "downloads": -1, "filename": "repoze.folder-0.4.tar.gz", "has_sig": false, "md5_digest": "6d4f782147103eff11845edf803c4844", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24538, "upload_time": "2009-06-15T21:06:42", "url": "https://files.pythonhosted.org/packages/34/84/f01bb7fc2df7bcb6face2c0eabf361e068f77981ef077a24abb5f7156863/repoze.folder-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "8bfa9ab4e8dbb5cce0b91aed6fd461e4", "sha256": "29ffa1ed18343af893deb113a34e48f8f5127766e28c9461c4d03298eb329b7f" }, "downloads": -1, "filename": "repoze.folder-0.5.tar.gz", "has_sig": false, "md5_digest": "8bfa9ab4e8dbb5cce0b91aed6fd461e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21020, "upload_time": "2010-09-04T17:39:01", "url": "https://files.pythonhosted.org/packages/8f/62/b67d11b987d34de6fbee291f36a1bd4f46d67369d8b4257a0fe4e8dd7ce1/repoze.folder-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "176b0d59d169d6322d3c86c73b639be5", "sha256": "05adf16798b0cc46a6949740d89bab0476f7682a2d518b5f0b0c9767e4512bcb" }, "downloads": -1, "filename": "repoze.folder-0.6.tar.gz", "has_sig": false, "md5_digest": "176b0d59d169d6322d3c86c73b639be5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21356, "upload_time": "2010-10-01T20:11:19", "url": "https://files.pythonhosted.org/packages/ed/88/9c173ec1205bd83785eecc7ea6ee4863e4fd90985854745b7c654be109e5/repoze.folder-0.6.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "e1470e10c9ca230debaf3f17e8eb422c", "sha256": "2b1bff2b41e4952607fc0746ff94754999c40fb416f0700b0f03e5ce6371be4e" }, "downloads": -1, "filename": "repoze.folder-0.6.1.tar.gz", "has_sig": false, "md5_digest": "e1470e10c9ca230debaf3f17e8eb422c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21496, "upload_time": "2010-10-02T00:11:28", "url": "https://files.pythonhosted.org/packages/a3/9c/c889ae12778ed2e61a179c3e619cf9b08fa7fc0f6ab002376c10e0520d41/repoze.folder-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "87af149c294e06275aad63cafd549190", "sha256": "3b4891449632e0e6423e887c03ed6a78d027835f2243504d21be37f217d4a34f" }, "downloads": -1, "filename": "repoze.folder-0.6.2.tar.gz", "has_sig": false, "md5_digest": "87af149c294e06275aad63cafd549190", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21597, "upload_time": "2010-10-04T22:36:26", "url": "https://files.pythonhosted.org/packages/07/fb/d97ca65172044aa3bfb486675e78ee435d4a86e5fe42f8140d782de9891e/repoze.folder-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "f243d4cf9b398e501e9757953d842b7d", "sha256": "00f779960aa83475362b11f95f94b7d1b6ce10ea80748ee4fe976d17d0af5687" }, "downloads": -1, "filename": "repoze.folder-0.6.3.tar.gz", "has_sig": false, "md5_digest": "f243d4cf9b398e501e9757953d842b7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23281, "upload_time": "2012-03-30T05:30:36", "url": "https://files.pythonhosted.org/packages/8d/d4/4fb6003725952bd04d2690d49ce8fd33834ea0005fae80480bb29274d242/repoze.folder-0.6.3.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "f9d1a633741a7b167892ff6e864a9eb5", "sha256": "75ffd225533c42f4a1a14074eb6778a4580128d84cf7a5fb98b4e80bfb068b23" }, "downloads": -1, "filename": "repoze.folder-1.0.tar.gz", "has_sig": false, "md5_digest": "f9d1a633741a7b167892ff6e864a9eb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24299, "upload_time": "2014-12-28T21:06:39", "url": "https://files.pythonhosted.org/packages/3e/56/5d67bfc10bf6ee1736f6812dc5f17f04d786ccf3f51d0284dbfed6d01f1f/repoze.folder-1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f9d1a633741a7b167892ff6e864a9eb5", "sha256": "75ffd225533c42f4a1a14074eb6778a4580128d84cf7a5fb98b4e80bfb068b23" }, "downloads": -1, "filename": "repoze.folder-1.0.tar.gz", "has_sig": false, "md5_digest": "f9d1a633741a7b167892ff6e864a9eb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24299, "upload_time": "2014-12-28T21:06:39", "url": "https://files.pythonhosted.org/packages/3e/56/5d67bfc10bf6ee1736f6812dc5f17f04d786ccf3f51d0284dbfed6d01f1f/repoze.folder-1.0.tar.gz" } ] }