{ "info": { "author": "Joel B. Mohler", "author_email": "joel@kiwistrawberry.us", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Topic :: Database :: Front-Ends" ], "description": "Introduction\n------------\n\nH5pom is an object mapper for keeping a python object hierarchy\nsynchronized with an HDF5 data file. Think of this as an ORM for HDF5 based\nstorage. Under the hood H5pom uses h5py for communicating with the data\nstore, but this dependency is intended to be entirely abstracted away by the\nthe object mapper layer.\n\nThe requirements to save and restore objects from an HDF5 data file using\nH5pom are modest and in keeping with the usual requirements for using\nanother ORM like Sqlalchemy and Django. The only needs are to derive your\ndomain specific classes from h5pom.Object and declare your attributes as\nclass attributes. Here is an example usage:\n\n >>> import h5pom\n >>> class Person(h5pom.Object):\n ... name = h5pom.Scalar()\n ... age = h5pom.Scalar()\n ...\n >>> f = h5pom.open(h5pom.IN_MEMORY, [Person])\n >>> p = Person(name='Joe', age=25)\n >>> f['joe'] = p\n >>> assert f['joe'].name == 'Joe'\n >>> p.age = 23\n >>> assert f['joe'].age == 23\n >>> f.close()\n\nIn that example, there is no file made on disk due to the use of\nh5pom.IN_MEMORY used as the file name, but the code is representative and\ncomplete for the simple notion of saving Person objects to an HDF5 file.\n\nGoals of H5pom\n--------------\n\nH5pom aims to make it easy to store and synchronize python object graphs\nwhich may or may not have numeric array data in an HDF5 file. For array types\nof known numpy dtype H5pom aims to expose the full performance of HDF5\nand h5py as appropriate.\n\nH5pom does not aim to have the full generality of reading arbitrary HDF5\nfiles. The h5py project already has an excellent pythonic API for accessing\ngroups, subgroups and attributes. H5pom will tend to emphasize a schema\nwhere the schema is a list of class types which may appear in the HDF5 file and\nthe attributes on those objects are known at the point of writing the python\nmodel implementation.\n\nObject Mapping Basics\n---------------------\n\nH5pom heavily utilizes the group and attribute notions in HDF5. The\nfollowing general correspondences illustrate the design:\n\n- python objects <-> groups\n- scalar attributes of python objects <-> group attributes\n- object references of python objects <-> subgroup with-in parent object group\n- array type as attribute of python object <-> dataset with-in parent object\n group\n- python list as attribute of python object <-> family of attributes with\n prefixed names with-in parent object group\n\nTODO\n----\n\n- SubObjectDict saves dictionaries mapping alphanumeric names to Objects, but\n there is no persistent dictionaries mapping alphanumeric names to Scalars.\n Consider adding this.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/jbmohler/h5pom", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "h5pom", "package_url": "https://pypi.org/project/h5pom/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/h5pom/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://bitbucket.org/jbmohler/h5pom" }, "release_url": "https://pypi.org/project/h5pom/0.1/", "requires_dist": null, "requires_python": null, "summary": "An ORM for hdf5 using h5py for basic IO", "version": "0.1" }, "last_serial": 743017, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "81a89274199a55ae63760b7a6a1f0144", "sha256": "8b6056f8cbd2b9a50910d039ab90c7f061e9a3959d2c41892c02671c1a839855" }, "downloads": -1, "filename": "h5pom-0.1-py2.7.egg", "has_sig": false, "md5_digest": "81a89274199a55ae63760b7a6a1f0144", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 20627, "upload_time": "2013-03-19T23:31:09", "url": "https://files.pythonhosted.org/packages/9e/9a/dd7928378546ae8f379291a10d0fade93961a01640ed93b6254e1945854c/h5pom-0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "34e76a1bd0260c77b02976de66f20f21", "sha256": "977f53c911e9f73317eea5ede519b4d588cf3aefd7a616cbb719b75f2e1d354c" }, "downloads": -1, "filename": "h5pom-0.1.tar.gz", "has_sig": false, "md5_digest": "34e76a1bd0260c77b02976de66f20f21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9685, "upload_time": "2013-03-19T23:31:06", "url": "https://files.pythonhosted.org/packages/a9/5f/d6d66dd4ead91ea0a535a83eaba7b0da8b7662765c3261af9789e952ada4/h5pom-0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "81a89274199a55ae63760b7a6a1f0144", "sha256": "8b6056f8cbd2b9a50910d039ab90c7f061e9a3959d2c41892c02671c1a839855" }, "downloads": -1, "filename": "h5pom-0.1-py2.7.egg", "has_sig": false, "md5_digest": "81a89274199a55ae63760b7a6a1f0144", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 20627, "upload_time": "2013-03-19T23:31:09", "url": "https://files.pythonhosted.org/packages/9e/9a/dd7928378546ae8f379291a10d0fade93961a01640ed93b6254e1945854c/h5pom-0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "34e76a1bd0260c77b02976de66f20f21", "sha256": "977f53c911e9f73317eea5ede519b4d588cf3aefd7a616cbb719b75f2e1d354c" }, "downloads": -1, "filename": "h5pom-0.1.tar.gz", "has_sig": false, "md5_digest": "34e76a1bd0260c77b02976de66f20f21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9685, "upload_time": "2013-03-19T23:31:06", "url": "https://files.pythonhosted.org/packages/a9/5f/d6d66dd4ead91ea0a535a83eaba7b0da8b7662765c3261af9789e952ada4/h5pom-0.1.tar.gz" } ] }