{ "info": { "author": "Petr Splichal", "author_email": "psplicha@redhat.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Natural Language :: English", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Utilities" ], "description": "\n======================\n fmf\n======================\n\nFlexible Metadata Format\n\n\nDescription\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe ``fmf`` Python module and command line tool implement a\nflexible format for defining metadata in plain text files which\ncan be stored close to the source code and structured in a\nhierarchical way with support for inheritance.\n\nAlthough the proposal initially originated from user stories\ncentered around test execution, the format is general and thus\ncan be used in broader scenarios, e.g. test coverage mapping.\n\nUsing this approach it's also possible to combine both test\nexecution metadata and test coverage information. Thanks to\nelasticity and hierarchy it provides ability to organize data\ninto well-sized text documents while preventing duplication.\n\n\nSynopsis\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nCommand line usage is straightforward::\n\n fmf command [options]\n\nThere are following commands available::\n\n fmf ls List identifiers of available objects\n fmf show Show metadata of available objects\n fmf init Initialize a new metadata tree\n\n\nExamples\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nList names of all objects stored in the metadata tree::\n\n fmf ls\n\nShow all test metadata (with 'test' attribute defined)::\n\n fmf show --key test\n\nShow metadata for all tree nodes (not only leaves)::\n\n fmf show --key test --whole\n\nList all attributes for the ``/recursion`` tests::\n\n fmf show --key test --name /recursion\n\nShow all covered requirements::\n\n fmf show --key requirement --key coverage\n\nSearch for all tests with the ``Tier1`` tag defined and show a\nbrief summary of what was found::\n\n fmf show --key test --filter tags:Tier1 --verbose\n\nUse arbitrary Python expressions to access deeper objects and\ncreate more complex conditions::\n\n fmf show --condition \"execute['how'] == 'shell'\"\n\nInitialize a new metadata tree in the current directory::\n\n fmf init\n\nCheck help message of individual commands for the full list of\navailable options.\n\n\nOptions\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nHere is the list of the most frequently used options.\n\nSelect\n------\n\nLimit which metadata should be listed.\n\n--key=KEYS\n Key content definition (required attributes)\n\n--name=NAMES\n List objects with name matching regular expression\n\n--filter=FLTRS\n Apply advanced filter when selecting objects\n\n--condition=EXPR\n Use arbitrary Python expression for filtering\n\n--whole\n Consider the whole tree (leaves only by default)\n\nFor filtering regular expressions can be used as well. See\n``pydoc fmf.filter`` for advanced filtering options.\n\nFormat\n------\n\nChoose the best format for showing the metadata.\n\n--format=FMT\n Custom output format using the {} expansion\n\n--value=VALUES\n Values for the custom formatting string\n\nSee online documentation for details about custom format.\n\nUtils\n-----\n\nVarious utility options.\n\n--path PATHS\n Path to the metadata tree (default: current directory)\n\n--verbose\n Print additional information standard error output\n\n--debug\n Turn on debugging output, do not catch exceptions\n\nCheck help message of individual commands for the full list of\navailable options.\n\n\nInstall\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe fmf package is available in Fedora and EPEL::\n\n dnf install fmf\n\nInstall the latest version from the Copr repository::\n\n dnf copr enable psss/fmf\n dnf install fmf\n\nor use PIP::\n\n pip install fmf\n\nSee documentation for more details about installation options.\n\n\nLinks\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nGit:\nhttps://github.com/psss/fmf\n\nDocs:\nhttp://fmf.readthedocs.io/\n\nIssues:\nhttps://github.com/psss/fmf/issues\n\nReleases:\nhttps://github.com/psss/fmf/releases\n\nCopr:\nhttp://copr.fedoraproject.org/coprs/psss/fmf\n\nPIP:\nhttps://pypi.org/project/fmf/\n\nTravis:\nhttps://travis-ci.org/psss/fmf\n\nCoveralls:\nhttps://coveralls.io/github/psss/fmf\n\n\nAuthors\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPetr \u0160pl\u00edchal, Jakub Krysl, Jan \u0160\u010dotka, Alois Mahdal and Cleber\nRosa.\n\n\nCopyright\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nCopyright (c) 2018 Red Hat, Inc.\n\nThis program is free software; you can redistribute it and/or\nmodify it under the terms of the GNU General Public License as\npublished by the Free Software Foundation; either version 2 of\nthe License, or (at your option) any later version.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/psss/fmf/archive/master.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/psss/fmf", "keywords": "metadata,testing", "license": "GPLv2", "maintainer": "Petr Splichal", "maintainer_email": "psplicha@redhat.com", "name": "fmf", "package_url": "https://pypi.org/project/fmf/", "platform": "", "project_url": "https://pypi.org/project/fmf/", "project_urls": { "Download": "https://github.com/psss/fmf/archive/master.zip", "Homepage": "https://github.com/psss/fmf" }, "release_url": "https://pypi.org/project/fmf/0.9.2/", "requires_dist": [ "PyYAML" ], "requires_python": "", "summary": "Flexible Metadata Format", "version": "0.9.2" }, "last_serial": 5954587, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "f8f7b2849cee0a5458acffa98ab147b7", "sha256": "e392ef299dc8df5e9368a24e97965624d130be705e460ea080a91b13d35b2a0b" }, "downloads": -1, "filename": "fmf-0.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "f8f7b2849cee0a5458acffa98ab147b7", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 14545, "upload_time": "2018-01-22T08:58:37", "url": "https://files.pythonhosted.org/packages/54/9b/3e156b8c4b5b979b367d2ee735a9576a67da472a1445f5b13ed17d5b8dbd/fmf-0.1.1-py2-none-any.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "455323578d03aec61d25146688d97f38", "sha256": "b81f5637c0a97dca6a156d8816517af483e7c61e9effa384b6233cd2bd1f7186" }, "downloads": -1, "filename": "fmf-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "455323578d03aec61d25146688d97f38", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 15178, "upload_time": "2018-04-09T15:40:59", "url": "https://files.pythonhosted.org/packages/df/99/a6242d3fed6d4d27f1bbd9d3b8a3cc36318907a9ba0b7f21120d1815a630/fmf-0.2.1-py2-none-any.whl" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "2bb6582bfa89a79cc76bccc3b4243567", "sha256": "54fb411f0d5a91e1f3d3f336b236ccdc6bc6675f3b37f2bb1b9ecee18a214851" }, "downloads": -1, "filename": "fmf-0.3.1-py2-none-any.whl", "has_sig": false, "md5_digest": "2bb6582bfa89a79cc76bccc3b4243567", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 16330, "upload_time": "2018-04-25T08:50:05", "url": "https://files.pythonhosted.org/packages/09/90/eae34f2947d94036e2a5daefe1a581372dd7e4308664a4d6f9f0934cbfbf/fmf-0.3.1-py2-none-any.whl" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "bb368c256844237fe384f9facd8ab68b", "sha256": "47572d5c21fa354b427f6b844029bb718106baa2ef9aca303969a1ec94987f02" }, "downloads": -1, "filename": "fmf-0.4.1-py2-none-any.whl", "has_sig": false, "md5_digest": "bb368c256844237fe384f9facd8ab68b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 16741, "upload_time": "2018-06-04T09:25:54", "url": "https://files.pythonhosted.org/packages/64/77/d52bf18011d53b5b16132c525d7533a6be16cdb042f40f1d636270b600bc/fmf-0.4.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec89924ee51400b7903a917f5c131ade", "sha256": "24c04b9f25449ecdd08641e2a181e44236e51a600b4f23b3ee5825193c1faae9" }, "downloads": -1, "filename": "fmf-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ec89924ee51400b7903a917f5c131ade", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14279, "upload_time": "2018-06-04T09:29:39", "url": "https://files.pythonhosted.org/packages/e3/3b/a0a6adf5283dcc2907e45204613113140198c59d8944add84df8720a55aa/fmf-0.4.1-py3-none-any.whl" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "aa49c2816b20a2fd4af7e55589073c2a", "sha256": "dfbe3a8f2b6168b01ef947fd951f310495f84aa3667ef15dcee7027cf740ca25" }, "downloads": -1, "filename": "fmf-0.5.1-py2-none-any.whl", "has_sig": false, "md5_digest": "aa49c2816b20a2fd4af7e55589073c2a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17828, "upload_time": "2018-06-12T10:20:57", "url": "https://files.pythonhosted.org/packages/79/ce/ec86be65c430936deb58eee5421c9de0673a4cdb121f888106ab65f7320d/fmf-0.5.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "02934e5e3c4750ee349208204b324801", "sha256": "de61d83be00510483f1f9fd9f188f32222f9bd8add0b516d11e55e73d0a96370" }, "downloads": -1, "filename": "fmf-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "02934e5e3c4750ee349208204b324801", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15217, "upload_time": "2018-06-12T10:20:58", "url": "https://files.pythonhosted.org/packages/f4/20/8912623d44756e41e1e8f4f8f9714aa2c1e8defca8b94bff5439f2c3d788/fmf-0.5.1-py3-none-any.whl" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "f7e9c1e6da41c65572cf5778e3fba1a0", "sha256": "546e60a63330bb8199c281561e1cc904565814b08dbe5ffeeea1f6f96feb4679" }, "downloads": -1, "filename": "fmf-0.6.1-py2-none-any.whl", "has_sig": false, "md5_digest": "f7e9c1e6da41c65572cf5778e3fba1a0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 18458, "upload_time": "2018-10-08T12:33:59", "url": "https://files.pythonhosted.org/packages/aa/07/57a1d4eb4b7be34334c5f2639dfacd81237ef94b88ba28df9456ff99acb9/fmf-0.6.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0cf858faaec9033fcca5ec16621d15a", "sha256": "fedc406c28297bac92b1af4940c8e61c5de8b32a43370fb7102f4c46193b5119" }, "downloads": -1, "filename": "fmf-0.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d0cf858faaec9033fcca5ec16621d15a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15843, "upload_time": "2018-10-08T12:34:01", "url": "https://files.pythonhosted.org/packages/0d/da/386154d219842c3ea13aa6a6f4a18439c69185d3e91a4fa1d82bfcb27721/fmf-0.6.1-py3-none-any.whl" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "882b515cde5d35deb67a70915e337b62", "sha256": "b92f17342c58e54b03850e3d68759244096a41ef4d50592ac5fc70b07251f0c3" }, "downloads": -1, "filename": "fmf-0.7.1-py2-none-any.whl", "has_sig": false, "md5_digest": "882b515cde5d35deb67a70915e337b62", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 23585, "upload_time": "2019-07-26T14:06:31", "url": "https://files.pythonhosted.org/packages/86/e6/c09fee3053d7900ff337c348cc59e85373cd7e84544c02e920d97c909561/fmf-0.7.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c92622047f60e5219aaa96679720d123", "sha256": "e6e6623990035be99a0bceefba9b9f35c6e189f736fd437579c00e277c1a8cf1" }, "downloads": -1, "filename": "fmf-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c92622047f60e5219aaa96679720d123", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23588, "upload_time": "2019-07-26T13:04:14", "url": "https://files.pythonhosted.org/packages/f2/b9/f69feaecf2df61a3628cadc84c7e0f05a8e31354f750c1e4d2e3370c8b5f/fmf-0.7.1-py3-none-any.whl" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "4ecdaa5acf1b379ba94f6c684cb58d71", "sha256": "eb5cbe63227de5a67ff2651932513a568120829fa280c885e13b6ed4dbbce5d1" }, "downloads": -1, "filename": "fmf-0.8.1-py2-none-any.whl", "has_sig": false, "md5_digest": "4ecdaa5acf1b379ba94f6c684cb58d71", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 23585, "upload_time": "2019-09-30T12:36:54", "url": "https://files.pythonhosted.org/packages/97/e3/c6d416161eb0f158d84f88fabb0224cb33e5f47d4cf09e4575a1862cec3d/fmf-0.8.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "766b9b97729a6163eb0e1d7c25cb5d98", "sha256": "70dadba4267c4ddcc5916703e25c1e7a532dcce51f6c01e5121c6c9454ef3db1" }, "downloads": -1, "filename": "fmf-0.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "766b9b97729a6163eb0e1d7c25cb5d98", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23588, "upload_time": "2019-09-30T12:36:56", "url": "https://files.pythonhosted.org/packages/0b/37/45f1df5b8abd1cbb9a20a6fc2dc764aa740d514c7c122ccc9bf11badb46c/fmf-0.8.1-py3-none-any.whl" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "c1369d7375779b21fe4f3031e3c27221", "sha256": "c9566cdaa9aa575ae7b7ad0bf447b95509a5c59bf9051f0e868fde6c500f3c77" }, "downloads": -1, "filename": "fmf-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c1369d7375779b21fe4f3031e3c27221", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23625, "upload_time": "2019-10-09T15:59:05", "url": "https://files.pythonhosted.org/packages/f5/1b/137192fe2042d10f68643c3eca247312106861459b6bc4137fbad5e8d9e9/fmf-0.9.1-py3-none-any.whl" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "6bb3f578ed66193b1375d6eb61779032", "sha256": "43b7a2a52161a8945b95ae1c951be48638de4d96f7eeffefb2cffcdfe94e34e0" }, "downloads": -1, "filename": "fmf-0.9.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6bb3f578ed66193b1375d6eb61779032", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23662, "upload_time": "2019-10-10T12:48:26", "url": "https://files.pythonhosted.org/packages/d6/d9/905a400a16a66ae7404b3af8739cea84ff9a426a8add26f874fea5e9f96a/fmf-0.9.2-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6bb3f578ed66193b1375d6eb61779032", "sha256": "43b7a2a52161a8945b95ae1c951be48638de4d96f7eeffefb2cffcdfe94e34e0" }, "downloads": -1, "filename": "fmf-0.9.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6bb3f578ed66193b1375d6eb61779032", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23662, "upload_time": "2019-10-10T12:48:26", "url": "https://files.pythonhosted.org/packages/d6/d9/905a400a16a66ae7404b3af8739cea84ff9a426a8add26f874fea5e9f96a/fmf-0.9.2-py3-none-any.whl" } ] }