{ "info": { "author": "Crane Chu", "author_email": "cranechu@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: BSD License", "Operating System :: POSIX :: Linux", "Programming Language :: C", "Programming Language :: Python :: 3" ], "description": "# pynvme: test NVMe devices in Python.\n\n[![Status](https://img.shields.io/gitlab/pipeline/cranechu/pynvme.svg)](https://gitlab.com/cranechu/pynvme/pipelines)\n[![Document](https://readthedocs.org/projects/pynvme/badge/?version=latest)](https://pynvme.readthedocs.io)\n[![License](https://img.shields.io/github/license/cranechu/pynvme.svg)](https://github.com/cranechu/pynvme/blob/master/LICENSE)\n[![Release](https://img.shields.io/github/release/cranechu/pynvme.svg)](https://github.com/cranechu/pynvme/releases)\n\n\"pynvme:\n\nThe pynvme is a python extension module. Users can test NVMe devices intuitively in Python scripts. It is designed for NVMe storage developers with performance considered. Integrated with third-party tools (e.g. vscode and pytest), pynvme provides a convenient and professional solution of NVMe testing.\n\n## Features:\n1. access PCI configuration space\n2. access NVMe registers in BAR space\n3. send any NVMe admin/IO commands\n4. callback functions are supported\n5. MSIx interrupt is supported\n6. transparent checksum verification for each LBA\n7. IOWorker generates high-performance IO\n8. integrated with pytest\n9. integrated with VSCode\n10. test multiple controllers, namespaces and qpairs simultaneously\n11. test NVMe over TCP targets\n\n## Links:\n* GitHub: https://github.com/cranechu/pynvme\n* Document: https://pynvme.readthedocs.io/\n* PDF: https://buildmedia.readthedocs.org/media/pdf/pynvme/latest/pynvme.pdf\n* Presentation: SPDK PRC Summit 2019, Beijing. \n [02_Presentation_26_Why_SSD_Developers_Need_Pynvme_and_Why_Pynvme_Needs_SPDK_Crane.pdf](https://raw.githubusercontent.com/cranechu/pynvme/master/doc/_static/02_Presentation_26_Why_SSD_Developers_Need_Pynvme_and_Why_Pynvme_Needs_SPDK_Crane.pdf)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cranechu/pynvme", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pynvme", "package_url": "https://pypi.org/project/pynvme/", "platform": "", "project_url": "https://pypi.org/project/pynvme/", "project_urls": { "Homepage": "https://github.com/cranechu/pynvme" }, "release_url": "https://pypi.org/project/pynvme/1.4/", "requires_dist": null, "requires_python": ">=3.5", "summary": "test NVMe devices in Python", "version": "1.4" }, "last_serial": 5943115, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "8641befb419984ad83a25d64d96570fb", "sha256": "5645c2ea664e4df9af6b84847fc63b50ddd1fe16354e4e14da4bd4292c83e718" }, "downloads": -1, "filename": "pynvme-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8641befb419984ad83a25d64d96570fb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6980, "upload_time": "2019-01-10T09:48:21", "url": "https://files.pythonhosted.org/packages/38/7b/0f3ef38ad2ec877aed28bac257cb52e62dd2d981c5d99ac058c8f69e6fed/pynvme-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cfd0b8aa51c9e19aff049ac2866449ab", "sha256": "a109377bcdfc2d559bebd4e1e41b9abfd4cdf25329bbe7014f403a0da887ae29" }, "downloads": -1, "filename": "pynvme-0.0.1.tar.gz", "has_sig": false, "md5_digest": "cfd0b8aa51c9e19aff049ac2866449ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9289, "upload_time": "2019-01-11T15:18:33", "url": "https://files.pythonhosted.org/packages/30/26/1667fc31cb199e88a194ebe0555d7eecf36aa971e1bb21e353573d94f961/pynvme-0.0.1.tar.gz" } ], "0.1": [ { "comment_text": "", "digests": { "md5": "fdc845475562289203c155a11124c0ab", "sha256": "d51e1df4a7ae943acd46923e06e957645ed3efd6bac1405a197ae3d8e92db058" }, "downloads": -1, "filename": "pynvme-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fdc845475562289203c155a11124c0ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7306, "upload_time": "2019-01-11T15:10:18", "url": "https://files.pythonhosted.org/packages/97/b5/66f95645646c242068e4480cf3fd600fb648bedf0a08bc4efbbf9e9cfcbd/pynvme-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "67587657045d3dda8e4864b445936d72", "sha256": "2c98b78b0037e99c1e959e22d58b96cc32b0f1106fa510da6c620e84418746fd" }, "downloads": -1, "filename": "pynvme-0.1.tar.gz", "has_sig": false, "md5_digest": "67587657045d3dda8e4864b445936d72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9286, "upload_time": "2019-01-11T15:18:35", "url": "https://files.pythonhosted.org/packages/87/8f/c2e45a0d3fdbf8e0be287f29650567ee4cee2f529afb758c2e05c4001875/pynvme-0.1.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "7d5ac8b67c4e7a25eba5235aedb1fcf7", "sha256": "5eb039da430be2d6c1434aedb756a3d3cfbc8463650f0b08dbf24e93d969b6e4" }, "downloads": -1, "filename": "pynvme-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7d5ac8b67c4e7a25eba5235aedb1fcf7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13377, "upload_time": "2019-06-06T05:10:09", "url": "https://files.pythonhosted.org/packages/72/a7/18def9c4b3651b7d209c2fdf00356520c629825a3cbd9d81dbccb40fb8b4/pynvme-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6dec4fea74f811d3ccfc07aa935deb6", "sha256": "d017af3401e7dad245cde4402009cb26d6065e948cbaadf0a789ed86fa5e20b6" }, "downloads": -1, "filename": "pynvme-1.0.tar.gz", "has_sig": false, "md5_digest": "d6dec4fea74f811d3ccfc07aa935deb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34674, "upload_time": "2019-06-06T05:10:13", "url": "https://files.pythonhosted.org/packages/ab/c2/770cd03b4ef4e4d6d741117b6677c9f9cd642a996d10e04f2869a1acc906/pynvme-1.0.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "4bb4b6a60dcdb2fc699dcca8930c46b6", "sha256": "ba5dc4f82a112aee6b6a55071258c07231c4dacb2fb82d5bf0aaf839a9fd88ee" }, "downloads": -1, "filename": "pynvme-1.4.tar.gz", "has_sig": false, "md5_digest": "4bb4b6a60dcdb2fc699dcca8930c46b6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 2758, "upload_time": "2019-10-08T06:44:40", "url": "https://files.pythonhosted.org/packages/b3/1e/b17c6548ee4c0c35b159e88217cea51b25adcd531cf535cf41e8f35ee3ef/pynvme-1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4bb4b6a60dcdb2fc699dcca8930c46b6", "sha256": "ba5dc4f82a112aee6b6a55071258c07231c4dacb2fb82d5bf0aaf839a9fd88ee" }, "downloads": -1, "filename": "pynvme-1.4.tar.gz", "has_sig": false, "md5_digest": "4bb4b6a60dcdb2fc699dcca8930c46b6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 2758, "upload_time": "2019-10-08T06:44:40", "url": "https://files.pythonhosted.org/packages/b3/1e/b17c6548ee4c0c35b159e88217cea51b25adcd531cf535cf41e8f35ee3ef/pynvme-1.4.tar.gz" } ] }