{ "info": { "author": "Gr\u00e9gory Millasseau", "author_email": "gregory@millasseau.fr", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Software Development :: Testing" ], "description": "Snitch, an input event recorder and player\n==========================================\n\nSnitch is a Python3 program using the Qt5 framework for GUI and the pyautogui\nand pynput modules for automation.\n\n\n## Prerequisites\n\nA working installation of Python3 with pip package installer.\n\n### Linux\n\nIn order to record and control the mouse on Linux systems, the packages\n`python3-tk` and `python3-dev` are required.\n\nThe `pyautogui` module on Linux relies on the `scrot` utility to perform screen\ncaptures, it must be installed separately. See the note about XWayland [at the\nend of this document](#XWayland).\n\n### Windows\n\nThe installation of the `scikit-image` module on Windows requires the\n[_Microsoft Build Tools 2015_ (C++ compiler)](https://www.microsoft.com/en-us/download/details.aspx?id=48159)\nto be installed.\n\n### macOS\n\nThe use of Python 3.8 is recommended for the menubar to behave properly.\n\n### OCR features\n\nSnitch-CI provides OCR features through the use of the [Tesseract](https://github.com/tesseract-ocr/)\nOCR software, which must be installed separately. The minimum recommended version is 4.1 (prior versions don't support the use of a custom target character set).\n\n- On Ubuntu (the official package only provides the 4.0 version, thus the need of adding an external PPA):\n ```bash\n sudo add-apt-repository ppa:alex-p/tesseract-ocr\n sudo apt-get update\n sudo apt-get install tesseract-ocr\n ```\n- On Windows download the installer at https://digi.bib.uni-mannheim.de/tesseract/\n- On macOS, with Homebrew:\n ```bash\n brew install tesseract\n ```\n\n\n## Installation\n\nSnitch is [available on PyPI](https://pypi.org/project/snitch-ci/) under the\nname `snitch-ci`. You can install it by running the command:\n\n pip install snitch-ci\n\nOnce installed, start the program by simply running the commamd `snitch`.\n\n\n## Building from sources\n\nAfter having insstalled the prerequisites, use the following commands to\nrespectively:\n\n- install the required python packages dependencies\n- generate the python code for the Qt ui and rc files\n- start the program\n\n```bash\npip install -r requirements.txt\nbash build.sh\npython -m snitch\n```\n\n\n## Usage\n\n### Preparing a test case\n\n#### Event recording\n\nClick on the `Record` button. From now on, all the input events from the mouse\nand the keyboard are recorded. Similar events may be gouped together, _e.g._\nmultiple letters typed consecutively are merged into a single TextEvent. All the\nrecorded events appear in the uper table in the Snitch inteface. The following\nevents are recognized:\n\n- Mouse move\n- Mouse click\n- Mouse double click\n- Mouse click with secondary button (so called right-click)\n- Mouse drag\n- Any of the above, with keys pressed\n- Text entry\n- Key pressed\n- Shortcuts (simultaneous press of a key and modifiers: Ctrl, Alt, \u2026)\n\nTo stop the recording, just click on the stop button. This last click is\nautomatically removed from the list of the recorded events.\n\n\n#### Manual event edition\n\nOn the right hand side of the recorded events list, the Snitch UI shows the\nproperties (such as click location, which keys are pressed, \u2026) of the currently\nselected event and buttons to add, remove and reorder events in the list.\n\n\n#### Event playback\n\nTo start the playback of a recorded sequence, click on the `Play` button in the\nupper part of the Snitch UI. The events are played with a default time delay of\n0.2s. Each event is selected while played so you can follow the progression of\nthe sequence. You can also stop the playback by pressing `Esc`.\n\n**Note:** For technical reasons, keyboard events can't be recorded while events\nare played back. So the only time the press on the `Esc` key can be caught is\nbetween two events. As a consequence, multiple press on the `Esc` may be\nrequired for the sequence to stop.\n\n\n#### Capturing areas of interest\n\nThe lower part of the Snitch UI is dedicated to the screenshots management. To\nrecord a region of the screen as a reference to compare to the state of the\ntested application after an automatic playback sequence, click on the `Add\nresult` button. The screen darkens a bit and the mouse cursor becomes a\ncrosshair. Define the area of interest by drawin a rectangle area around it\n(click and drag).\n\nOn mouse button release, the capture is performend and appears in the list of\nscreenshots. When selecting a screenshot, a preview is displayed on the right\nhand side of the UI along with its properties (size, position) and buttons to\nadd, remove and reorder the screenshots. Adding a screenshot with the add button\nis exactly the same as using\u00a0`Add result`.\n\n\u00a0P\n#### Saving / loading test cases\n\nYou can save the recorded sequence of events by clicking on the `Save\u2026` button\nor by selecting the `File > Save\u2026` menu option. The formats available are JSON\n(the images are Base64 encoded) and Pickle.\n\nLoad a previously saved file by selecting the `File > Open\u2026` menu option.\n\n\n#### Examples\n\nThe following video presents some of the various features for events recording:\n\n![event-recording](doc/snitch-event-recording.mp4)\n\nThis video shows how the the screen captures of the results are taken, and how\nthe differces between the reference image and the test result are displayed.\n\n![image-diff](doc/snitch-image-compare.mp4)\n\n\n### Running a batch of test cases\n\nFeature under development.\n\n#### Docker\n\n[See CI documentation](doc/ci.md#docker-compose-docker-composeyml)\n\n\n#### GitLab integration\n\n[See CI documentation](doc/ci.md#ci-configuration-gitlab-ciyml)\n\n\n## Known issues\n\n### Typing speed\n\nWhile recording keystrokes, typing too fast, especially with key modifiers, can\nresult in skipping the modifier, or assinging it to the next key. Typing slowly\ncan avoid the problem. You can also edit the event manually afterwards and enter\nthe intended text.\n\n### Context menus\n\nWhile using context menus with submenus be sure to click on every submenu title\nto record a mouse position on the item an prevent the cursor to skip steps on\nplayback.\n\n\n### XWayland\n\nThe most recent versions of gnome-shell are based on XWayland instead of X11 as\ndisplay server. One of the main features of Wayland is the application\nseparation, _i.e._ each application is isolated from one another and is not\nallowed to access graphical properties (window size, position, \u2026) of others. As\na consequence, the applications running with the native gnome-shell framework\nare invisible to Snitch.\n\nMoreover for those versions, even if the actions can be recorded for the native\nX11 applications, the scrot utility (used by `pyautogui` to perform screenshots)\nproduces only black pictures. As a workaround, it's possible to install the\nGnome native capture utility `gnome-screenshot` and create a wrapper script\nacting as `scrot`. The most basic way to do that is putting the following script\nin the `/usr/bin/scrot` file (and granting it execution permissions):\n\n```bash\n#! /bin/bash\ngnome-screenshot -f $@\n```\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://gitlab.com/irsn/snitch-ci", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "snitch-ci", "package_url": "https://pypi.org/project/snitch-ci/", "platform": "", "project_url": "https://pypi.org/project/snitch-ci/", "project_urls": { "Homepage": "https://gitlab.com/irsn/snitch-ci" }, "release_url": "https://pypi.org/project/snitch-ci/0.7.2/", "requires_dist": [ "PyQt5 (>=5.11.0)", "pynput (>=1.3.10)", "pyautogui (>=0.9.36)", "imutils (>=0.5.2)", "scipy (>=1.3.0)", "scikit-image (==0.14.2)", "opencv-python (>=4.1.1.26)", "pytesseract (>=0.3.2)" ], "requires_python": "", "summary": "An input event recorder and player for automatic testing", "version": "0.7.2", "yanked": false, "yanked_reason": null }, "last_serial": 8034379, "releases": { "0.3.2": [ { "comment_text": "", "digests": { "md5": "2942e9e12c479354ba2cc39b7a4b6da3", "sha256": "3f446dd5251a1ed874850e7466df9732ccdcfaad5b004dab946ef36f9283241c" }, "downloads": -1, "filename": "snitch_ci-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2942e9e12c479354ba2cc39b7a4b6da3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 127144, "upload_time": "2019-09-03T09:52:20", "upload_time_iso_8601": "2019-09-03T09:52:20.129875Z", "url": "https://files.pythonhosted.org/packages/a0/da/3e9b3e46bf53d2ff852fd58fe7b3200ad77f85b7670b69aa6ffbb07e742e/snitch_ci-0.3.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "30ad1889c49c92e9eec16062d2d2d571", "sha256": "a5692025ce080884e1cea873a74aac78a7d7096b392edd3dd538a9e22cf64736" }, "downloads": -1, "filename": "snitch-ci-0.3.2.tar.gz", "has_sig": false, "md5_digest": "30ad1889c49c92e9eec16062d2d2d571", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 114549, "upload_time": "2019-09-03T09:52:22", "upload_time_iso_8601": "2019-09-03T09:52:22.634288Z", "url": "https://files.pythonhosted.org/packages/38/37/9653ecd198fe21b1924733a0920e736595609342ac333c0a420961050a6d/snitch-ci-0.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "0949850700634c510a142d79ecf89a0d", "sha256": "74074ac85596d035f2947e925c1a0e7ee4f9e01d6abe741125b874dd2b6e95b4" }, "downloads": -1, "filename": "snitch_ci-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0949850700634c510a142d79ecf89a0d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 130094, "upload_time": "2019-09-27T14:23:26", "upload_time_iso_8601": "2019-09-27T14:23:26.187247Z", "url": "https://files.pythonhosted.org/packages/6c/a6/c1095b0f4135f1e30ffd8774efc8c8534492c2a52ebc56cda8917e2aeffb/snitch_ci-0.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "137b57dbf0e324974fcac99896bcb0ec", "sha256": "d6f72b14a04392a1b78b6c0f567ac82ad3055441775df58656d006844af26342" }, "downloads": -1, "filename": "snitch-ci-0.4.0.tar.gz", "has_sig": false, "md5_digest": "137b57dbf0e324974fcac99896bcb0ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 119447, "upload_time": "2019-09-27T14:23:30", "upload_time_iso_8601": "2019-09-27T14:23:30.411373Z", "url": "https://files.pythonhosted.org/packages/b7/5a/cb8076b5bd3be5d2dbbf82f2d509f06b03b6124a9978f15d381b780496a3/snitch-ci-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "3cc0f8f317cb6c70bdd99650405bca1d", "sha256": "91718b4fc70ad0bc8a53adfb68bee18d7fe2b253f60612667d4e905af0958a69" }, "downloads": -1, "filename": "snitch_ci-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3cc0f8f317cb6c70bdd99650405bca1d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 142431, "upload_time": "2019-10-18T15:13:44", "upload_time_iso_8601": "2019-10-18T15:13:44.146014Z", "url": "https://files.pythonhosted.org/packages/e4/3a/08ad7b6cd4d0362260471c7a1042600e7ca6f3020e8ac0db3bdabaab9bfb/snitch_ci-0.4.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fa8e4ea4711513d92453338f47bd6954", "sha256": "379fe653d790b7cc0d755b70167d97385f03148b7883e42cce60adc2ae3d135e" }, "downloads": -1, "filename": "snitch-ci-0.4.1.tar.gz", "has_sig": false, "md5_digest": "fa8e4ea4711513d92453338f47bd6954", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 120666, "upload_time": "2019-10-18T15:14:00", "upload_time_iso_8601": "2019-10-18T15:14:00.903391Z", "url": "https://files.pythonhosted.org/packages/e9/c8/47b136f1eb2b1a3e01d48159e77ae1b567e1b06e68c1088d719a4d9d9114/snitch-ci-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "2eec03f8f0c5028a83ae0d6f04f8b67e", "sha256": "2a0311eaf69b0217c373a6ccf122b4aefad56cc59047adf88f24b61118d05556" }, "downloads": -1, "filename": "snitch_ci-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2eec03f8f0c5028a83ae0d6f04f8b67e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 142524, "upload_time": "2019-10-29T14:59:33", "upload_time_iso_8601": "2019-10-29T14:59:33.393221Z", "url": "https://files.pythonhosted.org/packages/20/77/c9c402b5c8885d2d3b80a41dbb9f41f70647ec60e63cc3fefe4cb2006edf/snitch_ci-0.4.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "66f2b24dd97364f859413b6bd81e5d64", "sha256": "666a4ee7e3441b2208794c2a091a5a1e1505189ac6c3078824565e31d707a16e" }, "downloads": -1, "filename": "snitch-ci-0.4.2.tar.gz", "has_sig": false, "md5_digest": "66f2b24dd97364f859413b6bd81e5d64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 120644, "upload_time": "2019-10-29T14:59:34", "upload_time_iso_8601": "2019-10-29T14:59:34.828333Z", "url": "https://files.pythonhosted.org/packages/af/ad/fa8df0a9c716bc6bbf71ab3d6849a9378055a915f33b7da9c2a7a91e3cf9/snitch-ci-0.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "b56b4319fd9c402ede1cf30d0f13b59e", "sha256": "d7e300934dd4e2bcfd48cb60f78e0f8baec0a4c4e54710882d151ea9b5f78f19" }, "downloads": -1, "filename": "snitch-ci-0.5.2.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "b56b4319fd9c402ede1cf30d0f13b59e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 289923, "upload_time": "2020-02-28T15:33:03", "upload_time_iso_8601": "2020-02-28T15:33:03.493333Z", "url": "https://files.pythonhosted.org/packages/7d/d0/4184fc1f055dae26139762d246fb8be0f47b08b67c0436fa8c6ef2188705/snitch-ci-0.5.2.linux-x86_64.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "b7eedd6f37a5777e7a2b843b0f44137b", "sha256": "3975774b7e96d35047cbe14ce8e6525ed6175247d410dc4246a11117b7e3c85f" }, "downloads": -1, "filename": "snitch_ci-0.5.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b7eedd6f37a5777e7a2b843b0f44137b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 186911, "upload_time": "2020-03-12T16:25:39", "upload_time_iso_8601": "2020-03-12T16:25:39.622332Z", "url": "https://files.pythonhosted.org/packages/9c/f5/895b5208f52e3ae329c128022c5a00a6db9a0ce628c239ce690d44e829fa/snitch_ci-0.5.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "870af58a40d2f73f8377bb689d1c0e06", "sha256": "9d00b33583c05d117636db8c1d822ff4f3d7df8eac7f3aaa2ff44ca74a307780" }, "downloads": -1, "filename": "snitch-ci-0.5.3.tar.gz", "has_sig": false, "md5_digest": "870af58a40d2f73f8377bb689d1c0e06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 156545, "upload_time": "2020-03-12T16:23:21", "upload_time_iso_8601": "2020-03-12T16:23:21.297637Z", "url": "https://files.pythonhosted.org/packages/9e/8e/b859a10b7c27efead8e0dc520021082d9e6ccaa2efd801ab1b69314f7bd8/snitch-ci-0.5.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "d11cb4cb58ccd3b30a1eea7bda79b6d7", "sha256": "150dc81499cf34ddb2ae56c3f1f0d40c35168700ddb8e383c4978af486af1128" }, "downloads": -1, "filename": "snitch_ci-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d11cb4cb58ccd3b30a1eea7bda79b6d7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 194891, "upload_time": "2020-04-02T14:43:20", "upload_time_iso_8601": "2020-04-02T14:43:20.208675Z", "url": "https://files.pythonhosted.org/packages/1b/72/c6b8302f98c958ebec03074157044c053693533e232cfe6369b7b1dad347/snitch_ci-0.6.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b7104f9d396008c994cb9169173400fa", "sha256": "30a3f40258c4b29ca3c24261f2c536be5a2e06e56b0c05f18a20a80414557314" }, "downloads": -1, "filename": "snitch-ci-0.6.0.tar.gz", "has_sig": false, "md5_digest": "b7104f9d396008c994cb9169173400fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 166841, "upload_time": "2020-04-02T14:43:21", "upload_time_iso_8601": "2020-04-02T14:43:21.058324Z", "url": "https://files.pythonhosted.org/packages/af/55/1551e576235c6495732fc272546bfbaf738dcdcf0a4ec613fc1dec7f7686/snitch-ci-0.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.0a0": [ { "comment_text": "", "digests": { "md5": "1f5e7890ae09ba1eaa059f7c780f6176", "sha256": "c534cff5ea8901207ef678473011cbadfcac785c453641b8ec68b9e1d9823d0f" }, "downloads": -1, "filename": "snitch_ci-0.6.0a0-py3-none-any.whl", "has_sig": false, "md5_digest": "1f5e7890ae09ba1eaa059f7c780f6176", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 194908, "upload_time": "2020-04-02T13:51:39", "upload_time_iso_8601": "2020-04-02T13:51:39.914938Z", "url": "https://files.pythonhosted.org/packages/3d/23/2970874dc0ac70b7ea87f2e6e393e33f8565b89dbae7dbb1f6ec5a6dc350/snitch_ci-0.6.0a0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "834c2796fd2070c4bba411fd02fbcf12", "sha256": "28038bc36e0a8992d10bc29c0d0cb854ba731c6442f523dfd9dca1a60d559d2c" }, "downloads": -1, "filename": "snitch-ci-0.6.0a0.tar.gz", "has_sig": false, "md5_digest": "834c2796fd2070c4bba411fd02fbcf12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 168427, "upload_time": "2020-04-02T13:51:40", "upload_time_iso_8601": "2020-04-02T13:51:40.961834Z", "url": "https://files.pythonhosted.org/packages/90/d4/4ecad030385c41a350ef1a349b4fbde9f69447597ab076348ae115ab0ca0/snitch-ci-0.6.0a0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "4d2fd738b1c7da7c443a4f0e8bdf4d07", "sha256": "a31a1acfc93b6c1cce59cfcf61e5829688a83b778fd3b9bb1e90f6f14e42ef96" }, "downloads": -1, "filename": "snitch_ci-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4d2fd738b1c7da7c443a4f0e8bdf4d07", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 194954, "upload_time": "2020-04-15T12:32:00", "upload_time_iso_8601": "2020-04-15T12:32:00.958567Z", "url": "https://files.pythonhosted.org/packages/f9/fd/318c6be5996bfbab02f6ca02d8290a66df6eb2d9255f988c9b38bc147e7e/snitch_ci-0.7.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "92724900ead17a3a1db95a092a9f0c18", "sha256": "32d0032362f361b54f5280bcd7dd43d19e1ce1a04df549f845e4e7f0bb6e8f12" }, "downloads": -1, "filename": "snitch-ci-0.7.0.tar.gz", "has_sig": false, "md5_digest": "92724900ead17a3a1db95a092a9f0c18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 166702, "upload_time": "2020-04-15T12:32:01", "upload_time_iso_8601": "2020-04-15T12:32:01.862243Z", "url": "https://files.pythonhosted.org/packages/55/40/0a54c141d03fad54c1fd60d7991b77474f452d11694ceeac96e53619e823/snitch-ci-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "e46831fe0e5a8ecaee0f18607d8dfbd9", "sha256": "56e3741359651e410ffbc9d2343f621099c5545a38b7a5755c3eba05e05a0fc9" }, "downloads": -1, "filename": "snitch_ci-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e46831fe0e5a8ecaee0f18607d8dfbd9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 195192, "upload_time": "2020-04-17T11:11:04", "upload_time_iso_8601": "2020-04-17T11:11:04.839592Z", "url": "https://files.pythonhosted.org/packages/0c/1f/916eb7040c344fe4daff5c4bd52f57d8de805a189a2bc3688604dd6bff92/snitch_ci-0.7.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7bc59d3f8f4b6c5f5f1f553381428d07", "sha256": "106b4d512bcab58b8f1a49662be601b88c6c21b208f8bbe5ade55f008c90e2fa" }, "downloads": -1, "filename": "snitch-ci-0.7.1.tar.gz", "has_sig": false, "md5_digest": "7bc59d3f8f4b6c5f5f1f553381428d07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 166950, "upload_time": "2020-04-17T11:11:06", "upload_time_iso_8601": "2020-04-17T11:11:06.088445Z", "url": "https://files.pythonhosted.org/packages/ba/99/080c535a76177e7dbee88f30fde4f4981322810d1b27d6bfd954c43b99f1/snitch-ci-0.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "5ea248d42e0a3cc3f56e677483d697b4", "sha256": "80df1b956753f55ce4e4d7902a10eec8db99a1b4ba45404b22030cc8f5513032" }, "downloads": -1, "filename": "snitch_ci-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5ea248d42e0a3cc3f56e677483d697b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 195973, "upload_time": "2020-08-25T09:56:06", "upload_time_iso_8601": "2020-08-25T09:56:06.275209Z", "url": "https://files.pythonhosted.org/packages/98/0d/508eb0c6da6c1b4e272e3272fface449b884f6a2e95d19178f5f824120ea/snitch_ci-0.7.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9ece7a3df228d4d9c676853966ba0184", "sha256": "67fe3bc8f25043416565e4ca1bbd5d2dc982d3011398911771536bacf16f5857" }, "downloads": -1, "filename": "snitch-ci-0.7.2.tar.gz", "has_sig": false, "md5_digest": "9ece7a3df228d4d9c676853966ba0184", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 167507, "upload_time": "2020-08-25T09:56:07", "upload_time_iso_8601": "2020-08-25T09:56:07.544320Z", "url": "https://files.pythonhosted.org/packages/14/f9/02a2fc7b3a0bf457aeb62b23c9beedf6ebebf13aae97dffc383e6fe286e5/snitch-ci-0.7.2.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5ea248d42e0a3cc3f56e677483d697b4", "sha256": "80df1b956753f55ce4e4d7902a10eec8db99a1b4ba45404b22030cc8f5513032" }, "downloads": -1, "filename": "snitch_ci-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5ea248d42e0a3cc3f56e677483d697b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 195973, "upload_time": "2020-08-25T09:56:06", "upload_time_iso_8601": "2020-08-25T09:56:06.275209Z", "url": "https://files.pythonhosted.org/packages/98/0d/508eb0c6da6c1b4e272e3272fface449b884f6a2e95d19178f5f824120ea/snitch_ci-0.7.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9ece7a3df228d4d9c676853966ba0184", "sha256": "67fe3bc8f25043416565e4ca1bbd5d2dc982d3011398911771536bacf16f5857" }, "downloads": -1, "filename": "snitch-ci-0.7.2.tar.gz", "has_sig": false, "md5_digest": "9ece7a3df228d4d9c676853966ba0184", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 167507, "upload_time": "2020-08-25T09:56:07", "upload_time_iso_8601": "2020-08-25T09:56:07.544320Z", "url": "https://files.pythonhosted.org/packages/14/f9/02a2fc7b3a0bf457aeb62b23c9beedf6ebebf13aae97dffc383e6fe286e5/snitch-ci-0.7.2.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }