{ "info": { "author": "Lourens Veen", "author_email": "l.veen@esciencecenter.nl", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": ".. image:: https://readthedocs.org/projects/yatiml/badge/?version=latest\n :target: https://yatiml.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Build Status\n\n.. image:: https://api.travis-ci.org/yatiml/yatiml.svg?branch=master\n :target: https://travis-ci.org/yatiml/yatiml\n :alt: Build Status\n\n.. image:: https://api.codacy.com/project/badge/Grade/e9cf088f3f6d44cc82fd6aead08202e1\n :target: https://www.codacy.com/app/LourensVeen/yatiml\n :alt: Codacy Grade\n\n.. image:: https://api.codacy.com/project/badge/Coverage/e9cf088f3f6d44cc82fd6aead08202e1\n :target: https://www.codacy.com/app/LourensVeen/yatiml\n :alt: Code Coverage\n\n.. image:: https://requires.io/github/yatiml/yatiml/requirements.svg?branch=master\n :target: https://requires.io/github/yatiml/yatiml/requirements/?branch=master\n :alt: Requirements Status\n\n################################################################################\nYAtiML\n################################################################################\n\nYAtiML is a small Python library that works with ruamel.yaml, adding functions\nfor automatic type recognition to it. YAtiML is not a schema language like XSD\nand Relax-NG are for XML, or JSON Schema is for JSON. YAtiML is also not an\nObject/YAML mapper (YAML is already an object serialisation system, so you don't\nneed an extra library for that). However, YAtiML does solve the same kind of\nproblems, and more, so if you are looking for a schema language for YAML, YAtiML\nmay actually be what you need.\n\nIf you use YAtiML for scientific work, we ask that you cite it. We have provided\na CITATION.cff file to help you do so quickly and easily.\n\n\nHow it works\n************\n\nYAML-based file formats can be very handy, as YAML is easy to write by humans,\nand parsing support for it is widely available. Just read your YAML file into a\ndocument structure (a tree of nested dicts and lists), and manipulate that in\nyour code.\n\nWhile this works fine for simple file formats, it does not scale very well to\nmore complex file formats such as the Common Workflow Language (CWL) or the\nMultiscale Computing Language (yMCL). Manual error-checking is lots of work and\nerror-prone, defaults are not set automatically (which is especially tricky if\nyou have multiple nested optional objects), and the file format often ends up\nsomewhat underspecified.\n\nFurthermore, a small collection of nested dicts and lists may work fine, but for\nmore complex file formats, this becomes unwieldy and a set of objects is a\nbetter choice. Although it is not often used this way, YAML is actually a fully\nfledged object-to-text serialisation protocol. The Python yaml and ruamel.yaml\nlibraries will actually construct objects for you, but the class names need to\nbe put in the YAML file for that to work, which makes those files harder to\nread and write for humans.\n\nWith YAtiML, you describe your file format by defining a set of ordinary Python\nclasses. You then create a Loader class, which you can then use with the normal\nruamel.yaml.load(). However, objects of the types you have defined will now be\nrecognised automatically in the input YAML text, a type check will be performed\nso that you can be sure that you're getting what you were expecting, and the\nresulting data structure will consist of instances of your classes. Also, with a\nfew lines of extra code, you can add some syntactic sugar to the YAML text\nformat, making it easier for your users to write files in your format by hand in\na variety of ways, while you still get consistent objects. Of course, YAtiML\nsupports the reverse as well, making a Dumper for you to use with yaml.dump(),\nwhich ensures an easy-to-read, clean YAML output.\n\nThere are still some limitations on round-tripping data, so reading a YAML file\nand then saving it again may change the order of attributes, and will strip\ncomments. Round-trip support is still in development in ruamel.yaml, and there\nis not much YAtiML can do to improve this at the moment. YAtiML does contribute\na small but important feature to generating YAML files by your software:\nattributes will be written out in the order in which you've defined them, rather\nthan in random order, which really improves the readability of the result\n(assuming that the order of your definition is logical, of course.)\n\nYAtiML supports Python 3.4 and later.\n\n\nDocumentation and Help\n**********************\n\nInstructions on how to install and use YAtiML can be found in `the YAtiML\ndocumentation `_.\n\nCode of Conduct\n---------------\n\nBefore describing where to ask questions or report bugs, we'd like to point out\nthat this project is governed by a code of conduct, as described in\nCODE_OF_CONDUCT.rst, and we expect you to adhere to it. Please be nice to your\nfellow humans.\n\nQuestions\n---------\n\nIf you have a question that the documentation does not answer for you, then you\nhave found a bug in the documentation. We'd love to fix it, but we need a bit of\nhelp from you to do so. Please do the following:\n\n#. use the `search functionality `_\n to see if someone already filed the same issue;\n#. if your issue search did not yield any relevant results, make a new issue;\n#. apply the \"Question\" label; apply other labels when relevant.\n\nWe'll answer your question, and improve the documentation where necessary.\n\nBugs\n----\n\nLike most software, YAtiML is made by humans, and we make mistakes. If you think\nyou've found a bug in YAtiML, please let us know! Reporting bugs goes as follows.\n\n#. Use the `search functionality`_ to see if someone already filed the same\n issue.\n\n#. If your issue search did not yield any relevant results, make a new issue.\n\n Please explain:\n - what you were trying to achieve,\n - what you did to make that happen,\n - what you expected the result to be,\n - what happened instead.\n\n It really helps to have the actual code for a simple example that demonstrates\n the issue, but excerpts and error messages and a description are welcome too.\n\n#. Finally, apply any relevant labels to the newly created issue.\n\nWith that, we should be able to fix the problem.\n\nLicense\n*******\n\nYAtiML is Copyright 2018, Netherlands eScience Center, University of Amsterdam,\nand VU University Amsterdam\n\nDistributed under the Apache Software License 2.0.\n\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/yatiml/yatiml", "keywords": "yatiml", "license": "Apache Software License 2.0", "maintainer": "", "maintainer_email": "", "name": "yatiml", "package_url": "https://pypi.org/project/yatiml/", "platform": "", "project_url": "https://pypi.org/project/yatiml/", "project_urls": { "Homepage": "https://github.com/yatiml/yatiml" }, "release_url": "https://pypi.org/project/yatiml/0.4.2/", "requires_dist": [ "ruamel.yaml (<=0.15.64)", "typing (>=3.6) ; python_version < \"3.5\"", "yapf ; extra == 'dev'", "isort ; extra == 'dev'" ], "requires_python": "", "summary": "A library for making YAML-based file formats", "version": "0.4.2" }, "last_serial": 5400189, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "43ef3b22c92757d96d9d68b1846fc85d", "sha256": "9057f01903bd85a0696aa4f8a4727845df8282cc419c1e3fcf13a52eaa6ccc7a" }, "downloads": -1, "filename": "yatiml-0.1.0-py3.5.egg", "has_sig": false, "md5_digest": "43ef3b22c92757d96d9d68b1846fc85d", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 36296, "upload_time": "2018-09-27T21:28:10", "url": "https://files.pythonhosted.org/packages/dc/09/75b0d8313ca5a03b9dbcabb266becd0748c47fc35366a3538c89d2d160f0/yatiml-0.1.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "5ba44b3db64a1419d1cf37d874456d11", "sha256": "eee89303b35a74ed6dfb0926bad93ad85ca903dff32492e78247a5191b6792e3" }, "downloads": -1, "filename": "yatiml-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5ba44b3db64a1419d1cf37d874456d11", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19576, "upload_time": "2018-09-27T21:28:08", "url": "https://files.pythonhosted.org/packages/02/86/0e96d1a88b555920668a583bd3304a9e0a00e4f144ca804dd9734a50471e/yatiml-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba623a82406d2c2b0fdfb7888744bd55", "sha256": "83cef3677741e6d3df2a4b0886cb8b3bcf19cde53a07c7690d6d0a2dfb1e5925" }, "downloads": -1, "filename": "yatiml-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ba623a82406d2c2b0fdfb7888744bd55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17173, "upload_time": "2018-09-27T21:28:12", "url": "https://files.pythonhosted.org/packages/8f/80/c3b5f2f9e360544676804736bd56d3791b029089b235b020a0c4ccf85416/yatiml-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b6d2f52f19a72d386ea64671234abb02", "sha256": "78940381b7a55d44e0017630ed52410738fc34bc18e176adcbc5c7b0e0d99050" }, "downloads": -1, "filename": "yatiml-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b6d2f52f19a72d386ea64671234abb02", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21770, "upload_time": "2018-10-16T11:03:08", "url": "https://files.pythonhosted.org/packages/a3/20/95e09179e73f8eea379db6c82e866dbae340c560ca2e8926cfab80b888e1/yatiml-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "040e7cc6a111642ef7490dd7bf2cd680", "sha256": "e170c4440e9474fa58aea16b2de4605cfcaf00794ade6a344c1ee51908f72fed" }, "downloads": -1, "filename": "yatiml-0.2.0.tar.gz", "has_sig": false, "md5_digest": "040e7cc6a111642ef7490dd7bf2cd680", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18248, "upload_time": "2018-10-16T11:03:12", "url": "https://files.pythonhosted.org/packages/4e/b0/4b3f086e6c60ab75c544c401d20e047e9c2a081e4b0fc4119d75c9de4c24/yatiml-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "f629a34a6845575f3d16133c2f62b845", "sha256": "6aded273a14b667723264bb5fcc107cd1e8e4b25e1149545e20d0db4fe38bd0d" }, "downloads": -1, "filename": "yatiml-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f629a34a6845575f3d16133c2f62b845", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23071, "upload_time": "2018-10-23T14:10:07", "url": "https://files.pythonhosted.org/packages/12/26/bc77c127075987d4b3d82d1d3cb81d4ad43e9cfdc5d2669c5f469c0b5171/yatiml-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9207b0555fcaa208d4fca419024c98cb", "sha256": "6b37f4a70f19ae6aa4a33f45264157fda338563ff5697aa4a86da858f8440a34" }, "downloads": -1, "filename": "yatiml-0.3.0.tar.gz", "has_sig": false, "md5_digest": "9207b0555fcaa208d4fca419024c98cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23506, "upload_time": "2018-10-23T14:10:08", "url": "https://files.pythonhosted.org/packages/1c/0f/d7c91cb8b66f72d02fbb2c05ad15e7dc27408d16aab6cb60ec0dd07d7745/yatiml-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "9db057ba36fb47f050c9b8f9445de62d", "sha256": "307f360405153ed40cf21e738e9d57ee4c5c1d41740678b011823dd7bc1d3836" }, "downloads": -1, "filename": "yatiml-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9db057ba36fb47f050c9b8f9445de62d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24501, "upload_time": "2018-10-28T17:44:06", "url": "https://files.pythonhosted.org/packages/fb/06/86f4644574f31ff80764e3ac20e4d64ffc0f79ac93bee7e89ce0af1c4bc2/yatiml-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a5d7033883614d7107a7874f37ae30dc", "sha256": "24246574ca6b773e625dd7dff5790f1a805195adf4e13d993d1df055a9e2e47d" }, "downloads": -1, "filename": "yatiml-0.4.0.tar.gz", "has_sig": false, "md5_digest": "a5d7033883614d7107a7874f37ae30dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24887, "upload_time": "2018-10-28T17:44:08", "url": "https://files.pythonhosted.org/packages/20/e0/f1c11222b8c2fb9687a0cefce9dd6a73e1632e123de7b7d2053eaad748a4/yatiml-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "683b4e98914ea4e7c4152a7dd8e2b13b", "sha256": "dd897304f0cf6fefae7a1ceadcbf4fb48401f7bc78aa6edbac1d33693bb906d4" }, "downloads": -1, "filename": "yatiml-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "683b4e98914ea4e7c4152a7dd8e2b13b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25206, "upload_time": "2019-04-23T15:17:56", "url": "https://files.pythonhosted.org/packages/2b/0b/ae7242cf210885ff89e3f779ad2c5a59d43f8afa0a9c964697241266bb09/yatiml-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59cf258d3e7c57279a3880a6766a7ac0", "sha256": "d873e7b326f3ecf7ed884624c951e91b3458a86d209ed6e8fbdf32b94ac51399" }, "downloads": -1, "filename": "yatiml-0.4.1.tar.gz", "has_sig": false, "md5_digest": "59cf258d3e7c57279a3880a6766a7ac0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25589, "upload_time": "2019-04-23T15:17:58", "url": "https://files.pythonhosted.org/packages/43/fe/c31102b0db40501b7f43e31380995e0f1d10bdc875bc10c89d2004ccebaa/yatiml-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "522372894d79d207cd9783aa611b4631", "sha256": "48986b62033424e7a516f129ccba9dcbd8c57b95a2fd340ad7ab90f20d20655b" }, "downloads": -1, "filename": "yatiml-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "522372894d79d207cd9783aa611b4631", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29840, "upload_time": "2019-06-14T11:44:41", "url": "https://files.pythonhosted.org/packages/9a/9e/afc444fbd14deccfa525a43c7ffd738a1e8c030200220943c1365a902b83/yatiml-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6671ad3b0d9e708ba78f2c733a97c6f9", "sha256": "eaea6c3f16239e225a24ddf3a66b55a42f8c1967b724c72b531219226e835902" }, "downloads": -1, "filename": "yatiml-0.4.2.tar.gz", "has_sig": false, "md5_digest": "6671ad3b0d9e708ba78f2c733a97c6f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25772, "upload_time": "2019-06-14T11:44:43", "url": "https://files.pythonhosted.org/packages/9c/61/191135c1290252ea4983354bf13b49cb5bb159465c655b2fe584da04e2d8/yatiml-0.4.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "522372894d79d207cd9783aa611b4631", "sha256": "48986b62033424e7a516f129ccba9dcbd8c57b95a2fd340ad7ab90f20d20655b" }, "downloads": -1, "filename": "yatiml-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "522372894d79d207cd9783aa611b4631", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29840, "upload_time": "2019-06-14T11:44:41", "url": "https://files.pythonhosted.org/packages/9a/9e/afc444fbd14deccfa525a43c7ffd738a1e8c030200220943c1365a902b83/yatiml-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6671ad3b0d9e708ba78f2c733a97c6f9", "sha256": "eaea6c3f16239e225a24ddf3a66b55a42f8c1967b724c72b531219226e835902" }, "downloads": -1, "filename": "yatiml-0.4.2.tar.gz", "has_sig": false, "md5_digest": "6671ad3b0d9e708ba78f2c733a97c6f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25772, "upload_time": "2019-06-14T11:44:43", "url": "https://files.pythonhosted.org/packages/9c/61/191135c1290252ea4983354bf13b49cb5bb159465c655b2fe584da04e2d8/yatiml-0.4.2.tar.gz" } ] }