{ "info": { "author": "\u5218\u58eb", "author_email": "liushilive@outlook.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: Chinese (Simplified)", "Programming Language :: Python", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Testing :: Unit", "Topic :: Software Development :: User Interfaces" ], "description": "# HTMLReport\n\n[![Downloads](https://pepy.tech/badge/htmlreport)](https://pepy.tech/project/htmlreport)\n\n`HTMLReport`\u662f\u4e00\u4e2a\u5355\u5143\u6d4b\u8bd5\u6d4b\u8bd5\u8fd0\u884c\u5668\uff0c\u53ef\u4ee5\u5c06\u6d4b\u8bd5\u7ed3\u679c\u4fdd\u5b58\u5728 Html \u6587\u4ef6\u4e2d\uff0c\u7528\u4e8e\u4eba\u6027\u5316\u7684\u7ed3\u679c\u663e\u793a\u3002\n\n\u4ec5\u652f\u6301**Python 3.x**\n\n* [The report template](https://liushilive.github.io/report/report/#en)\n\n* [\u62a5\u544a\u6837\u677f](https://liushilive.github.io/report/report/#cn)\n\n## \u5b89\u88c5\n\n\u8981\u5b89\u88c5 HTMLReport\uff0c\u8bf7\u5728\u7ec8\u7aef\u4e2d\u8fd0\u884c\u6b64\u547d\u4ee4\n\n```bash\npip install HTMLReport\n```\n\n\u8fd9\u662f\u5b89\u88c5HTMLReport\u7684\u9996\u9009\u65b9\u6cd5\uff0c\u56e0\u4e3a\u5b83\u5c06\u59cb\u7ec8\u5b89\u88c5\u6700\u65b0\u7684\u7a33\u5b9a\u7248\u672c\u3002 \u5982\u679c\u60a8\u6ca1\u6709\u5b89\u88c5 [pip](https://pip.pypa.io/)\uff0c\n\u5219\u8be5 [Python\u5b89\u88c5\u6307\u5357](http://docs.python-guide.org/en/latest/starting/installation/ \"Python\u5b89\u88c5\u6307\u5357\")\n\u53ef\u4ee5\u6307\u5bfc\u60a8\u5b8c\u6210\u8be5\u8fc7\u7a0b\u3002\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n### \u65e5\u5fd7\n\n\u4e3a\u6d4b\u8bd5\u62a5\u544a\u4e2d\u6dfb\u52a0\u8fc7\u7a0b\u65e5\u5fd7\uff0c\u5728\u591a\u7ebf\u7a0b\u4e0b\uff0c\u5728\u62a5\u544a\u4e2d\u4f1a\u5206\u522b\u8bb0\u5f55\u6bcf\u4e2a\u7ebf\u7a0b\u7684\u65e5\u5fd7\uff0c\u540c\u65f6\u4f1a\u4ea7\u751f\u4e0e\u6d4b\u8bd5\u62a5\u544a\u540c\u540d\u7684\u6d4b\u8bd5 log \u6587\u4ef6\u3002\n\n```python\nimport logging\n\nlogging.info(\"\u6d4b\u8bd5\")\nlogging.debug(\"\u6d4b\u8bd5\")\nlogging.warning(\"\u6d4b\u8bd5\")\nlogging.error(\"\u6d4b\u8bd5\")\nlogging.critical(\"\u6d4b\u8bd5\")\n```\n\n### \u56fe\u7247\u4fe1\u606f\n\n\u4e3a\u6d4b\u8bd5\u62a5\u544a\u6dfb\u52a0\u56fe\u7247\u4fe1\u606f\uff0c\u8bf7\u5c06\u56fe\u7247\u4fe1\u606f\u7f16\u7801\u4e3a base64 \u7f16\u7801\u3002\n\n\u5982\u91c7\u7528\u7684\u662f selenium \u622a\u5c4f\uff0c\u8bf7\u4f7f\u7528 `get_screenshot_as_base64()` \u65b9\u6cd5\u83b7\u53d6 base64 encoded string \u4f5c\u4e3a\u53c2\u6570\u4f20\u5165\u3002\n\n\u672c\u5e93\u4f1a\u81ea\u52a8\u5c06\u56fe\u7247\u4fdd\u5b58\u5728\u62a5\u544a\u8def\u5f84\u4e0b\u7684`images`\u76ee\u5f55\u4e0b\uff0c\u5e76\u5d4c\u5165\u5230\u62a5\u544a\u4e2d\u3002\n\n```python\nimport base64\nfrom HTMLReport import add_image\n\nwith open(\"baidu.png\", 'rb') as f:\n image = base64.b64encode(f.read())\n add_image(image, \"\u56fe\u7247\u6807\u9898\", \"\u56fe\u7247\u63cf\u8ff0\")\n```\n\n* `image` \u53c2\u6570\u53ef\u4ee5\u63a7\u5236\u5168\u5c40\u662f\u5426\u6dfb\u52a0\u56fe\u7247\n* `failed_image` \u53c2\u6570\u53ef\u4ee5\u63a7\u5236\u662f\u5426\u53ea\u5728\u6d4b\u8bd5\u5931\u8d25\u65f6\u4fdd\u5b58\u56fe\u7247\n\n### \u5931\u8d25\u91cd\u8bd5\n\n\u6d4b\u8bd5\u65b9\u6cd5\u524d\u52a0\u5165\u88c5\u9970\u5668 `@retry` `@no_retry`\uff0c\u7528\u4e8e\u91cd\u8bd5\u4e0e\u4e0d\u91cd\u8bd5\n\n### \u6570\u636e\u9a71\u52a8\n\n\u6d4b\u8bd5\u7c7b\u524d\u52a0\u5165\u88c5\u9970\u5668 `@ddt.ddt`\n\n\u6d4b\u8bd5\u65b9\u6cd5\u524d\u52a0\u5165\u88c5\u9970\u5668 `@ddt.data(*data)`\n\n### \u5b9e\u4f8b\n\n```python\nimport base64\nimport logging\nimport random\nimport unittest\n\nfrom HTMLReport import ddt, TestRunner, add_image, no_retry, retry\n\n\nclass TestOne(unittest.TestCase):\n \"\"\"\u5e38\u89c4\u6d4b\u8bd5\"\"\"\n\n def setUp(self) -> None:\n logging.debug(\"\u6d4b\u8bd5\u5f00\u59cb\")\n logging.info(\"\u6d4b\u8bd5\u5f00\u59cb\")\n logging.warning(\"\u6d4b\u8bd5\u5f00\u59cb\")\n logging.error(\"\u6d4b\u8bd5\u5f00\u59cb\")\n\n def tearDown(self) -> None:\n logging.info(\"\u6d4b\u8bd5\u7ed3\u675f\")\n\n def test_true(self):\n \"\"\"\n \u6d4b\u8bd5\u901a\u8fc7\n \"\"\"\n self.assertTrue(True)\n\n def test_false(self):\n \"\"\"\n \u6d4b\u8bd5\u5931\u8d25\n\n :return:\n \"\"\"\n self.assertTrue(False)\n\n def test_error(self):\n \"\"\"\n \u6d4b\u8bd5\u5f02\u5e38\n\n :return:\n \"\"\"\n self.assertTrue(int(\"5.2\"))\n\n @unittest.skip(\"\u8df3\u8fc7\u7528\u4f8b\")\n def test_skip(self):\n \"\"\"\n \u6d4b\u8bd5\u8df3\u8fc7\n\n :return:\n \"\"\"\n self.assertTrue(int(\"5.2\"))\n\n def test_skip_(self):\n \"\"\"\n \u6d4b\u8bd5\u4e2d\u9014\u8df3\u8fc7\n\n :return:\n \"\"\"\n logging.info(\"\u51c6\u5907\u8df3\u8fc7\")\n self.skipTest(\"\u4e2d\u9014\u8df3\u8fc7\")\n self.assertTrue(int(\"5.2\"))\n\n def test_image(self):\n \"\"\"\u6d4b\u8bd5\u622a\u56fe\"\"\"\n with open(\"baidu.png\", 'rb') as f:\n image = base64.b64encode(f.read())\n alt = \"\"\"\u767e\u5ea6\u4e00\u4e0b\uff0c\u4f60\u5c31\u77e5\u9053\u4e86\u3002\"\"\"\n for i in range(5):\n add_image(image, f\"\u767e\u5ea6 {i}\", alt)\n\n\n@ddt.ddt\nclass TestDDT(unittest.TestCase):\n \"\"\"DDT \u6d4b\u8bd5\"\"\"\n\n def setUp(self) -> None:\n logging.info(\"\u6d4b\u8bd5\u5f00\u59cb\")\n\n def tearDown(self) -> None:\n logging.info(\"\u6d4b\u8bd5\u7ed3\u675f\")\n\n @ddt.data(*range(3))\n def test_a(self, n):\n self.assertEqual(n, random.randint(0, 2))\n\n\n@ddt.ddt\nclass TestNoRetry(unittest.TestCase):\n \"\"\"\u6d4b\u8bd5 DDT \u4e0d\u91cd\u8bd5\"\"\"\n\n def setUp(self) -> None:\n logging.info(\"\u6d4b\u8bd5\u5f00\u59cb\")\n\n def tearDown(self) -> None:\n logging.info(\"\u6d4b\u8bd5\u7ed3\u675f\")\n\n @no_retry\n @ddt.data(*range(3))\n def test_a(self, n):\n self.assertEqual(n, random.randint(0, 2))\n\n\n@ddt.ddt\nclass TestRetry(unittest.TestCase):\n \"\"\"\u6d4b\u8bd5 DDT \u91cd\u8bd5\"\"\"\n\n def setUp(self) -> None:\n logging.info(\"\u6d4b\u8bd5\u5f00\u59cb\")\n\n def tearDown(self) -> None:\n logging.info(\"\u6d4b\u8bd5\u7ed3\u675f\")\n\n @retry\n @ddt.data(*range(3))\n def test_a(self, n):\n self.assertEqual(n, random.randint(0, 2))\n\n\nclass TestClassMethod(unittest.TestCase):\n \"\"\"\n \u6d4b\u8bd5 setUpClass\n \"\"\"\n\n n = 0\n\n @classmethod\n def setUpClass(cls) -> None:\n logging.info(f\"\u521d\u59cb\u8ba1\u6570\uff1a{cls.n}\")\n\n @classmethod\n def tearDownClass(cls) -> None:\n logging.info(f\"\u6700\u7ec8\u8ba1\u6570\uff1a{cls.n}\")\n\n def setUp(self) -> None:\n logging.info(f\"\u524d\u7f6e\u8ba1\u6570\uff1a{self.n}\")\n\n def tearDown(self) -> None:\n logging.info(f\"\u540e\u7f6e\u8ba1\u6570\uff1a{self.n}\")\n\n def test_1(self):\n self.__class__.n += 1\n logging.info(f\"\u8fd0\u884c\u4fee\u6539\uff1a{self.n}\")\n\n def test_2(self):\n self.__class__.n += 1\n logging.info(f\"\u8fd0\u884c\u4fee\u6539\uff1a{self.n}\")\n self.assertTrue(False)\n\n\nif __name__ == '__main__':\n test_runner = TestRunner(\n report_file_name=\"index\",\n output_path=\"report\",\n title=\"\u4e00\u4e2a\u7b80\u5355\u7684\u6d4b\u8bd5\u62a5\u544a\",\n description=\"\u968f\u610f\u63cf\u8ff0\",\n thread_count=5,\n thread_start_wait=0.1,\n tries=3,\n delay=0,\n back_off=1,\n retry=True,\n sequential_execution=True,\n lang=\"cn\"\n )\n suite = unittest.TestSuite()\n suite_sub = unittest.TestSuite()\n loader = unittest.TestLoader()\n suite_sub.addTests(loader.loadTestsFromTestCase(TestOne))\n suite_sub.addTests(loader.loadTestsFromTestCase(TestDDT))\n suite.addTests(suite_sub)\n suite.addTests(loader.loadTestsFromTestCase(TestRetry))\n suite.addTests(loader.loadTestsFromTestCase(TestNoRetry))\n suite.addTests(loader.loadTestsFromTestCase(TestClassMethod))\n suite.addTests(loader.loadTestsFromNames([\"HTMLReport_test.TestClassMethod\"]))\n test_runner.run(suite)\n\n```\n\n> \u5982\u679c\u60a8\u6709\u5176\u4ed6\u7684\u9700\u6c42\uff0c\u8bf7\u53d1\u90ae\u4ef6\u7ed9\u6211\uff1a \uff0c \u795d\u60a8\u4f7f\u7528\u6109\u5feb\uff01\n\nLinks:\n\n---------\n\n* [https://liushilive.github.io](https://liushilive.github.io \"Github\")\n\n\n", "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/liushilive/htmlreport", "keywords": "HtmlTestRunner test runner html reports unittest", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "HTMLReport", "package_url": "https://pypi.org/project/HTMLReport/", "platform": null, "project_url": "https://pypi.org/project/HTMLReport/", "project_urls": { "Homepage": "https://github.com/liushilive/htmlreport", "The report template": "https://liushilive.github.io/report/report/#en", "issues": "https://github.com/liushilive/htmlreport/issues", "\u4e2a\u4eba\u4e3b\u9875": "https://liushilive.github.io/", "\u62a5\u544a\u6837\u677f": "https://liushilive.github.io/report/report/#cn" }, "release_url": "https://pypi.org/project/HTMLReport/2.3.1/", "requires_dist": null, "requires_python": "", "summary": "Python3 Unittest HTML\u62a5\u544a\u751f\u6210\u5668", "version": "2.3.1", "yanked": false, "yanked_reason": null }, "last_serial": 13600475, "releases": { "2.1.5": [ { "comment_text": "", "digests": { "md5": "3560568d8de86977fc3431cff26f21bb", "sha256": "ad1077d29b36441ede3ff674ac2147379db675ab7b3887c57488ba00fab84030" }, "downloads": -1, "filename": "HTMLReport-2.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "3560568d8de86977fc3431cff26f21bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29631, "upload_time": "2020-05-08T05:31:25", "upload_time_iso_8601": "2020-05-08T05:31:25.392933Z", "url": "https://files.pythonhosted.org/packages/59/8e/ca3f5dcf9a076ab8cd4a4dabc8ff978f38dacaf7073e11e8a29f3a4ccd4c/HTMLReport-2.1.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "cd12ac0236684819735a3f982bbf4bc8", "sha256": "18c6cb01a34d58e85176074849512993a936d27eb15cb5a8bd1d4b143d8fdb31" }, "downloads": -1, "filename": "HTMLReport-2.1.5.tar.gz", "has_sig": false, "md5_digest": "cd12ac0236684819735a3f982bbf4bc8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20686, "upload_time": "2020-05-08T05:31:26", "upload_time_iso_8601": "2020-05-08T05:31:26.947075Z", "url": "https://files.pythonhosted.org/packages/d7/4e/0ffa2948ffef1747f1a9466db977380c89fb7c402c45e444bb20ca1c906c/HTMLReport-2.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.7": [ { "comment_text": "", "digests": { "md5": "96413e145a57776a0ced928ddc2fe04a", "sha256": "d9c647be6485f68e601f84dfa32d8db797c3ac68677d76d6d7274bba9a6d6e55" }, "downloads": -1, "filename": "HTMLReport-2.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "96413e145a57776a0ced928ddc2fe04a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29838, "upload_time": "2021-03-13T03:25:08", "upload_time_iso_8601": "2021-03-13T03:25:08.439124Z", "url": "https://files.pythonhosted.org/packages/62/1c/2c0e67321679821c71ab1a507e1c8acfec1aac1bb7f3eece0200d2c937e8/HTMLReport-2.1.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "cd31988690725684e7d4e1906de0d3c5", "sha256": "95425195d39eb7e0f50d414af08a61f874e226a2b0804d9a2c9e19d6261339a8" }, "downloads": -1, "filename": "HTMLReport-2.1.7.tar.gz", "has_sig": false, "md5_digest": "cd31988690725684e7d4e1906de0d3c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20870, "upload_time": "2021-03-13T03:25:10", "upload_time_iso_8601": "2021-03-13T03:25:10.478142Z", "url": "https://files.pythonhosted.org/packages/b8/1f/a87528ba9d9462ffe6b63c9887ac17269edb9c9bf015e2e32af8162add23/HTMLReport-2.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "4f9a63e6acfedde3a1d694072e7dc9ab", "sha256": "bdee6bd5b1f72abe4605bd633e7f3807c4b116551d0845ca03fae09766a767a1" }, "downloads": -1, "filename": "HTMLReport-2.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4f9a63e6acfedde3a1d694072e7dc9ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32289, "upload_time": "2021-03-14T07:44:13", "upload_time_iso_8601": "2021-03-14T07:44:13.895050Z", "url": "https://files.pythonhosted.org/packages/65/12/5ff5d9175318b18101f62f4da8830119a0c12ff2366f1e664ebaf9d07a6b/HTMLReport-2.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3813469c26b872e332a4421e733c8762", "sha256": "f84c4892817c4091830c010559275cb29383f73d85b3a6efa2c1f1c90b10b895" }, "downloads": -1, "filename": "HTMLReport-2.2.1.tar.gz", "has_sig": false, "md5_digest": "3813469c26b872e332a4421e733c8762", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23230, "upload_time": "2021-03-14T07:44:15", "upload_time_iso_8601": "2021-03-14T07:44:15.503791Z", "url": "https://files.pythonhosted.org/packages/36/bc/6f39f20cd36b86ac437eb09fa7144ea6093ee23847fb3282936b614c852f/HTMLReport-2.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.2": [ { "comment_text": "", "digests": { "md5": "07caf0816006f8fc706e97b5b89bd7a0", "sha256": "8421ef3f972d5e6153d2f7c082787fe50c7c3cfb9b3b108311e40c40cea75af2" }, "downloads": -1, "filename": "HTMLReport-2.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "07caf0816006f8fc706e97b5b89bd7a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32340, "upload_time": "2021-03-15T02:15:25", "upload_time_iso_8601": "2021-03-15T02:15:25.061927Z", "url": "https://files.pythonhosted.org/packages/9a/f2/bb7aca0605ae985594d6a5f7995dba496619439803a7154e94ffd77e36fa/HTMLReport-2.2.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ad46e16bb6ebbf62c68e8ae819b58043", "sha256": "248e7a7ab89a1709ad1bcb1cabb43056b4040f8625eed7f33d97956305d09b70" }, "downloads": -1, "filename": "HTMLReport-2.2.2.tar.gz", "has_sig": false, "md5_digest": "ad46e16bb6ebbf62c68e8ae819b58043", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23307, "upload_time": "2021-03-15T02:15:26", "upload_time_iso_8601": "2021-03-15T02:15:26.506784Z", "url": "https://files.pythonhosted.org/packages/9d/87/6ab1a84704231993d66061b21770f6a91d9a76f7c897d93d8415db9e6fb5/HTMLReport-2.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.3": [ { "comment_text": "", "digests": { "md5": "4c34d1cce46ca8d39a0a7e9a4013f030", "sha256": "75eea158ae49fa21782d2f79f2a8a9397879901323206275ceb9911e361dd422" }, "downloads": -1, "filename": "HTMLReport-2.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "4c34d1cce46ca8d39a0a7e9a4013f030", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32524, "upload_time": "2022-02-11T08:21:29", "upload_time_iso_8601": "2022-02-11T08:21:29.274930Z", "url": "https://files.pythonhosted.org/packages/0f/14/0981bb964613b504910ea5eb6cd07b5292144e5523a1ee9dd983144720b4/HTMLReport-2.2.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9a3a3a6c74f60b0f99b6e8ea6860584e", "sha256": "625cafbbb826c6dd61d67d818ca41e235a1eb5e61fdab1b6bf042f1927df8dbd" }, "downloads": -1, "filename": "HTMLReport-2.2.3.tar.gz", "has_sig": false, "md5_digest": "9a3a3a6c74f60b0f99b6e8ea6860584e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29769, "upload_time": "2022-02-11T08:21:31", "upload_time_iso_8601": "2022-02-11T08:21:31.060665Z", "url": "https://files.pythonhosted.org/packages/c9/b0/968128868eb041ff0699934b548ce3fd10c52f34a7558dfac8118238473f/HTMLReport-2.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2.4": [ { "comment_text": "", "digests": { "md5": "4083d4828c0be06f3c24ab4a3accebdf", "sha256": "27659ed5b99c9f79abbaf52faa80f2db64811ce96fe6aa8d73636ab3a1681c67" }, "downloads": -1, "filename": "HTMLReport-2.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4083d4828c0be06f3c24ab4a3accebdf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32558, "upload_time": "2022-02-21T06:51:28", "upload_time_iso_8601": "2022-02-21T06:51:28.813273Z", "url": "https://files.pythonhosted.org/packages/2b/15/109e24f478fe7280a1e03612e0af77a79a96e0fb2ff9155d31bb3efb0be5/HTMLReport-2.2.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d74825c45a4a59085e55b3e08c2315d0", "sha256": "557809535a7c572dadfc758c3bb198b7e0cab33adf4cf0410dff7fd11b0d2835" }, "downloads": -1, "filename": "HTMLReport-2.2.4.tar.gz", "has_sig": false, "md5_digest": "d74825c45a4a59085e55b3e08c2315d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29943, "upload_time": "2022-02-21T06:51:30", "upload_time_iso_8601": "2022-02-21T06:51:30.848257Z", "url": "https://files.pythonhosted.org/packages/d4/98/7ab53e00607dcb7629f06f226537e2c6976ce0f702ad857997d6c91c4329/HTMLReport-2.2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "ddd80a8fd84b089c29ec8d238fe35c11", "sha256": "609e89ace2bc0d819774f2c27ced91b92c072198e336092702bb4c983779edaf" }, "downloads": -1, "filename": "HTMLReport-2.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ddd80a8fd84b089c29ec8d238fe35c11", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33011, "upload_time": "2022-04-09T14:35:02", "upload_time_iso_8601": "2022-04-09T14:35:02.482158Z", "url": "https://files.pythonhosted.org/packages/a0/06/eeb340fd5539275bac4d5e56b6ea0da51e979af1d87390185df093c63aac/HTMLReport-2.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ea18781dbccef3103370ae8920612ac3", "sha256": "f667f546013438eeb3c6d49ed605067d801fa891fda75332e34da4f99f437e41" }, "downloads": -1, "filename": "HTMLReport-2.3.0.tar.gz", "has_sig": false, "md5_digest": "ea18781dbccef3103370ae8920612ac3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30379, "upload_time": "2022-04-09T14:35:04", "upload_time_iso_8601": "2022-04-09T14:35:04.663500Z", "url": "https://files.pythonhosted.org/packages/06/65/2be3da79e5bfc012cba697167acd9f518e8b2b84a7b55fa292dd6604903f/HTMLReport-2.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.3.1": [ { "comment_text": "", "digests": { "md5": "fd7f5145b1a579e5030bc064f06d2324", "sha256": "8ddbd6da09101854b537ef5dc3c3f18176b8a9a059bbccd5ed3d4ee814bff491" }, "downloads": -1, "filename": "HTMLReport-2.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fd7f5145b1a579e5030bc064f06d2324", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33524, "upload_time": "2022-04-23T13:43:21", "upload_time_iso_8601": "2022-04-23T13:43:21.017303Z", "url": "https://files.pythonhosted.org/packages/ea/f5/b95ada8e79548e60b690207f41f18aedc9bdacafce7afaa91aefeb514b18/HTMLReport-2.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "669b1e618b0dd404d914adc493f6aa21", "sha256": "c82b49842a65073eb6c418552a57e0f7a7b5575c0f823702c674eb2fbbe97922" }, "downloads": -1, "filename": "HTMLReport-2.3.1.tar.gz", "has_sig": false, "md5_digest": "669b1e618b0dd404d914adc493f6aa21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30920, "upload_time": "2022-04-23T13:43:25", "upload_time_iso_8601": "2022-04-23T13:43:25.956307Z", "url": "https://files.pythonhosted.org/packages/7a/1c/e8e2e3e377a48b271662e9112f33c8e5ffff4b5fab3fdb53d88c357ed651/HTMLReport-2.3.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fd7f5145b1a579e5030bc064f06d2324", "sha256": "8ddbd6da09101854b537ef5dc3c3f18176b8a9a059bbccd5ed3d4ee814bff491" }, "downloads": -1, "filename": "HTMLReport-2.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fd7f5145b1a579e5030bc064f06d2324", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33524, "upload_time": "2022-04-23T13:43:21", "upload_time_iso_8601": "2022-04-23T13:43:21.017303Z", "url": "https://files.pythonhosted.org/packages/ea/f5/b95ada8e79548e60b690207f41f18aedc9bdacafce7afaa91aefeb514b18/HTMLReport-2.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "669b1e618b0dd404d914adc493f6aa21", "sha256": "c82b49842a65073eb6c418552a57e0f7a7b5575c0f823702c674eb2fbbe97922" }, "downloads": -1, "filename": "HTMLReport-2.3.1.tar.gz", "has_sig": false, "md5_digest": "669b1e618b0dd404d914adc493f6aa21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30920, "upload_time": "2022-04-23T13:43:25", "upload_time_iso_8601": "2022-04-23T13:43:25.956307Z", "url": "https://files.pythonhosted.org/packages/7a/1c/e8e2e3e377a48b271662e9112f33c8e5ffff4b5fab3fdb53d88c357ed651/HTMLReport-2.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }