{ "info": { "author": "Manuel Webersen", "author_email": "webersen@emt.uni-paderborn.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering" ], "description": "****\ndsch\n****\n\n\nIntroduction\n============\n\nDsch provides a way to store data and its metadata in a structured, reliable\nway. It is built upon well-known data storage engines, such as the `HDF5`_ file\nformat, providing performance and long-term stability.\n\nThe core feature is the schema-based approach to data storage, which means that\na pre-defined schema specification is used to determine:\n\n* which data fields are available\n* the (hierarchical) structure of data fields\n* metadata of the stored values (e.g. physical units)\n* expected data types and constraints for the stored values\n\nIn fact, this is similar to an API specification, but it can be attached to and\nstored with the data. Programs *writing* datasets benefit from data validation\nand the high-level interface. *Reading* programs can determine the given data's\nschema upfront, and process accordingly. This is especially useful with schemas\nevolving over time.\n\nFor persistent storage, dsch supports multiple storage engines via its\n`backends`, but all through a single, transparent interface. Usually, there are\nno client code changes required to support a new backend, and custom backends\ncan easily be added to dsch.\nCurrently, backends exist for these storage engines:\n\n* `HDF5`_ files (through `h5py`_)\n* `NumPy .npz`_ files\n* `MATLAB .mat`_ files (through `SciPy`_)\n\nNote that dsch is only a thin layer, so that users can still benefit from the\nperformance of the underlying storage engine. Also, files created with dsch can\nalways be opened directly (i.e. without dsch) and still provide all relevant\ninformation, even the metadata!\n\n.. _HDF5: https://hdfgroup.org\n.. _h5py: http://www.h5py.org\n.. _NumPy .npz: https://docs.scipy.org/doc/numpy/reference/generated/numpy.savez.html\n.. _MATLAB .mat: https://www.mathworks.com/products/matlab.html\n.. _SciPy: https://docs.scipy.org/doc/scipy-0.19.0/reference/io.html\n\n\nReasoning\n=========\n\nDsch is a response to the challenges in low-level data acquisition scenarios,\nwhich are commonly found in labs at universities or R&D departments. Frequent\nchanges in both hardware and software are commonplace in these environments, and\nsince those changes are often made by different people, the data acquisition\nhardware, software and data consumption software tend to get out of sync. At the\nsame time, datasets are often stored (and used!) for many years, which makes\nbackwards-compatibility a significant issue.\n\nDsch aims to counteract these problems by making the data exchange process more\nexplicit. Using pre-defined schemas ensures backward-compatibility as long as\npossible, and when it can no longer be retained, provides a clear way to detect\n(and properly handle) multiple schema versions. Also, schema based validation\nallows to detect possible errors upfront, so that most non-security-related\nchecks do not have to be re-implemented in data consuming applications.\n\nNote that dsch is targeted primarily at these low-level applications. When using\nhigh-level data processing or even data science and machine learning techniques,\ndata is often pre-processed and aggregated with regard to a specific\napplication, which often eliminates the need for some of dsch's features, such\nas the metadata storage. One might think of dsch as the tool to handle data\n*before* it is filled into something like `pandas`_.\n\n.. _pandas: https://pandas.pydata.org/\n\n\n*********\nChangelog\n*********\n\nThis project follows the guidelines of `Keep a changelog`_ and adheres to\n`Semantic versioning`_.\n\n.. _Keep a changelog: http://keepachangelog.com/\n.. _Semantic versioning: https://semver.org/\n\n\n`0.2.1`_ - 2018-02-02\n=====================\n\nChanged\n-------\n* ``h5py`` and ``scipy``, needed for HDF5 and MAT file support, respectively,\n are now listed as extras / optional dependencies in setup.py.\n\nFixed\n-----\n* Fix missing type conversion for ``Scalar`` in ``inmem`` backend that causes\n validation to incorrectly fail in some cases.\n\n\n`0.2.0`_ - 2018-02-01\n=====================\n\nAdded\n-----\n* New node type for `bytes` data.\n* In-memory backend, for handling data without needing e.g. a file on disk.\n* Support for copying data between different storages.\n* Support for creating new storages from existing ones, aka. \"save as\".\n* ``PseudoStorage`` abstraction class for unified data access in libraries.\n* Human-readable tree-representation of data nodes for use in interactive\n sessions.\n* Support ``==`` operator for schema nodes.\n\nChanged\n-------\n* Data nodes in Compilations and Lists can no longer be overwritten\n accidentally when trying to overwrite their stored value.\n* Improve structure and conciseness of docs.\n* Change List to evaluate ``empty``-ness recursively.\n* Replace generic exceptions like ``TypeError`` by custom dsch exceptions.\n\n\n`0.1.3`_ - 2018-01-11\n=====================\n\nChanged\n-------\n* Attempting to open a non-existent file now shows a sensible error message.\n* Attempting to create an existing file now shows a sensible error message.\n\nFixed\n-----\n* Fix error when handling partially filled compilations.\n* Fix typo in documentation.\n\n\n`0.1.2`_ - 2017-08-25\n=====================\n\nFixed\n-----\n* Fix incorrect ordering of list items.\n\n\n`0.1.1`_ - 2017-06-09\n=====================\n\nAdded\n-----\n* Cover additional topics in documentation.\n\nFixed\n-----\n* Fix error when handling single-element lists with `mat` backend.\n\n\n`0.1.0`_ - 2017-05-18\n=====================\n\nAdded\n-----\n* First preview release.\n\n\n.. _Unreleased: https://github.com/emtpb/dsch\n.. _0.2.1: https://github.com/emtpb/dsch/releases/tag/0.2.1\n.. _0.2.0: https://github.com/emtpb/dsch/releases/tag/0.2.0\n.. _0.1.3: https://github.com/emtpb/dsch/releases/tag/0.1.3\n.. _0.1.2: https://github.com/emtpb/dsch/releases/tag/0.1.2\n.. _0.1.1: https://github.com/emtpb/dsch/releases/tag/0.1.1\n.. _0.1.0: https://github.com/emtpb/dsch/releases/tag/0.1.0\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/emtpb/dsch/", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "dsch", "package_url": "https://pypi.org/project/dsch/", "platform": "", "project_url": "https://pypi.org/project/dsch/", "project_urls": { "Homepage": "https://github.com/emtpb/dsch/" }, "release_url": "https://pypi.org/project/dsch/0.2.1/", "requires_dist": [ "asciitree", "numpy", "h5py; extra == 'HDF5'", "scipy; extra == 'MAT'" ], "requires_python": ">=3", "summary": "Structured, metadata-enhanced data storage.", "version": "0.2.1" }, "last_serial": 3545531, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "885f5f504b7c0d439350581e858d21ea", "sha256": "88af00baa9e25a47934f634f5bd45e4f90b03e71f25ee8565b1cb7b2e3b0e061" }, "downloads": -1, "filename": "dsch-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "885f5f504b7c0d439350581e858d21ea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26344, "upload_time": "2017-05-23T08:34:55", "url": "https://files.pythonhosted.org/packages/83/3b/684e9715b1d0b25d4d20141dbb3d1e042c11fa0e01ec7c5a0bd2202d96b1/dsch-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d75115c167f6d5460ce5451401dfb615", "sha256": "8d77166fb3d6a93a7aa20373718538b7231b99cb32d317671e8388b4b184e311" }, "downloads": -1, "filename": "dsch-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d75115c167f6d5460ce5451401dfb615", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37948, "upload_time": "2017-05-23T08:32:23", "url": "https://files.pythonhosted.org/packages/e1/8f/2205fa63d718a17153994b3eb7d06e85acce52f49dee683bfd83aa27f08d/dsch-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "151f8689dc63e56a213d452599a7bb9c", "sha256": "8bc613323659bf1ac378bf3aaf7143b1795a4bd1c8c615f56ed2a95652dadf6d" }, "downloads": -1, "filename": "dsch-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "151f8689dc63e56a213d452599a7bb9c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26418, "upload_time": "2017-06-12T15:27:58", "url": "https://files.pythonhosted.org/packages/4a/24/bac3830d715146d6c7e3cc439d5efbefb6f2c1e1191cb4c86d977bf51397/dsch-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b19dacb8013a1cf5e4aa8701ff4f79f", "sha256": "57d600c46bda656c4e501070cf0ec13d8b00f50baa8582ec8d0e2070ef01934e" }, "downloads": -1, "filename": "dsch-0.1.1.tar.gz", "has_sig": false, "md5_digest": "1b19dacb8013a1cf5e4aa8701ff4f79f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39484, "upload_time": "2017-06-12T15:28:00", "url": "https://files.pythonhosted.org/packages/5a/4d/1068a01f8a7d5ef7b5dbab517695b8aed5791cf7842608c99e7e74c15997/dsch-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "718b2f7a6a1292226905c22f2e5b734a", "sha256": "5b8c679bd55ca07278c1df8215efdfe033e3ab8cbc2e2255674d7f22302358b2" }, "downloads": -1, "filename": "dsch-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "718b2f7a6a1292226905c22f2e5b734a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26428, "upload_time": "2017-08-25T10:49:53", "url": "https://files.pythonhosted.org/packages/3a/ba/623c577e1f1c94d750357247bef233efa4883ad71a8e65242fcd5988ba0a/dsch-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2132d9a881d5d5180c47abe42871d63", "sha256": "e7401daa669b1804a6e04b485a902845ba89974189897f37b7f7e87986b7aee8" }, "downloads": -1, "filename": "dsch-0.1.2.tar.gz", "has_sig": false, "md5_digest": "c2132d9a881d5d5180c47abe42871d63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39686, "upload_time": "2017-08-25T10:49:56", "url": "https://files.pythonhosted.org/packages/2d/0f/434cd540bc48680ffbd16b49ac457fe5a632c0e84f392cb550090da00809/dsch-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "af8e6e84566b68728405a1d6ab539bf3", "sha256": "018de9c3bda4236a13447bf1610f9770f11da42319a751e50c32aab675ca133f" }, "downloads": -1, "filename": "dsch-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "af8e6e84566b68728405a1d6ab539bf3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26714, "upload_time": "2018-01-11T10:06:49", "url": "https://files.pythonhosted.org/packages/ff/fc/09b10abdee14576aa2448a6b6274f909dee63201785872a87aeade9269cf/dsch-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe72536a59b7404cf95df5828354ecf2", "sha256": "951101a7281109d2c722e55b2e7e2d264b0c347911b1ec9865bf68e4a402eacc" }, "downloads": -1, "filename": "dsch-0.1.3.tar.gz", "has_sig": false, "md5_digest": "fe72536a59b7404cf95df5828354ecf2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40121, "upload_time": "2018-01-11T10:06:51", "url": "https://files.pythonhosted.org/packages/5d/d4/4c2904da6d60a022af925d56ef16787c6d787b709c2db4ed1e570b2d819e/dsch-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "97dfbb0cc27600331f54311cf3480379", "sha256": "da8a9156d4139d8d9fa1e382024e483229e486f720c86c4d0367524afb7206b6" }, "downloads": -1, "filename": "dsch-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "97dfbb0cc27600331f54311cf3480379", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 37097, "upload_time": "2018-02-01T09:07:33", "url": "https://files.pythonhosted.org/packages/68/a3/94aa0f9bb137a496418e8073951c7ad15147c923273ff1e0170efdd9dcd9/dsch-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "176a360ff1a5c893833b222333827761", "sha256": "2e898a7367c14748a3a0ec2563598accdfe5cdd8ada7d50edbe97b15d7389657" }, "downloads": -1, "filename": "dsch-0.2.0.tar.gz", "has_sig": false, "md5_digest": "176a360ff1a5c893833b222333827761", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 54452, "upload_time": "2018-02-01T09:07:35", "url": "https://files.pythonhosted.org/packages/6f/c2/ba69539fc797ce246f0c0b1b93a81b02a98013678672b892e2d7f3fac883/dsch-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "a80d0b328eed3d79ba34ecf03983b244", "sha256": "e9bfdd8e3b451a18b9200f945415baab18c2a53b1a3f9387894e993ee3ec0710" }, "downloads": -1, "filename": "dsch-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a80d0b328eed3d79ba34ecf03983b244", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 37483, "upload_time": "2018-02-02T13:24:01", "url": "https://files.pythonhosted.org/packages/e3/30/f38b0809b637dd277b0d58d3b03a69c2059b5b7df6e86550f22094b403ea/dsch-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17be7ebee36d703986514a38f23c25dc", "sha256": "30f44ef92890275b604a4f0233df673b06742f151e643315cb131fa02d3f78b6" }, "downloads": -1, "filename": "dsch-0.2.1.tar.gz", "has_sig": false, "md5_digest": "17be7ebee36d703986514a38f23c25dc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 54804, "upload_time": "2018-02-02T13:24:03", "url": "https://files.pythonhosted.org/packages/77/53/fed78b972000aa9a37ebec81a0e69831172efc759262f76b43d86b2e9e98/dsch-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a80d0b328eed3d79ba34ecf03983b244", "sha256": "e9bfdd8e3b451a18b9200f945415baab18c2a53b1a3f9387894e993ee3ec0710" }, "downloads": -1, "filename": "dsch-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a80d0b328eed3d79ba34ecf03983b244", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 37483, "upload_time": "2018-02-02T13:24:01", "url": "https://files.pythonhosted.org/packages/e3/30/f38b0809b637dd277b0d58d3b03a69c2059b5b7df6e86550f22094b403ea/dsch-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17be7ebee36d703986514a38f23c25dc", "sha256": "30f44ef92890275b604a4f0233df673b06742f151e643315cb131fa02d3f78b6" }, "downloads": -1, "filename": "dsch-0.2.1.tar.gz", "has_sig": false, "md5_digest": "17be7ebee36d703986514a38f23c25dc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 54804, "upload_time": "2018-02-02T13:24:03", "url": "https://files.pythonhosted.org/packages/77/53/fed78b972000aa9a37ebec81a0e69831172efc759262f76b43d86b2e9e98/dsch-0.2.1.tar.gz" } ] }