{ "info": { "author": "Per Voie & Erling Lone", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering" ], "description": "# QATS\n\nPython library and GUI for efficient processing and visualization of time series.\n\n[![Build Status](https://travis-ci.com/dnvgl/qats.svg?branch=master)](https://travis-ci.com/dnvgl/qats)\n[![Documentation Status](https://readthedocs.org/projects/qats/badge/?version=latest)](https://qats.readthedocs.io/en/latest/?badge=latest)\n\n\n## General\n\n### About\n\nThe python library provides tools for:\n- Import and export from/to various pre-defined time series file formats\n- Signal processing\n- Inferring statistical distributions\n- Cycle counting using the Rainflow algorithm\n\nIt was originally created to handle time series files exported from [SIMO](https://www.dnvgl.com/services/complex-multibody-calculations-simo-2311) \nand [RIFLEX](https://www.dnvgl.com/services/riser-analysis-software-for-marine-riser-systems-riflex-2312). Now it also\nhandles [SIMA](https://www.dnvgl.com/services/marine-operations-and-mooring-analysis-software-sima-2324) hdf5 (.h5) files, \nMatlab (version < 7.3) .mat files, CSV files and more. \n\nQATS also features a GUI which offers efficient and low threshold processing and visualization of time series. It is\nperfect for inspecting, comparing and reporting:\n- time series\n- power spectral density distributions\n- peak and extreme distributions\n- cycle distributions\n\n### Demo\n\n![QATS GUI](https://raw.githubusercontent.com/dnvgl/qats/master/docs/source/demo.gif)\n\n### Getting started\n\nRun the below command in a Python environment to install the latest QATS release:\n\n```console\npython -m pip install qats\n```\n\nTo upgrade from a previous version, the command is:\n\n```console\npython -m pip install --upgrade qats\n```\n\nYou may now import qats in your own scripts:\n\n```python\nfrom qats import TsDB, TimeSeries\n```\n\n... or use the GUI to inspect time series. Note that as of version 4.2.0 you are quite free to choose which \n[Qt](https://www.qt.io) binding you would like to use for the GUI: [PyQt5](https://pypi.org/project/PyQt5/) or \n[PySide2](https://pypi.org/project/PySide2/), or even [PyQt4](https://pypi.org/project/PyQt4/) / \n[PySide](https://pypi.org/project/PySide/).\n\nInstall the chosen binding (here PyQt5 as an example):\n\n```console\npython -m pip install pyqt5\n```\n\nIf multiple Qt bindinds are installed, the one to use may be controlled by setting the environmental variable `QT_API` to the desired package. Accepted values include `pyqt5` (to use PyQt5) and `pyside2` (PySide2). For more details, see [README file for qtpy](https://github.com/spyder-ide/qtpy/blob/master/README.md).\n\nThe GUI may now be launched by:\n\n```console\nqats app\n```\n\nTo create a start menu link, which you can even pin to the taskbar to ease access to the \nQATS GUI, run the following command:\n\n```console\nqats config --link-app\n```\n\nTake a look at the resources listed below to learn more.\n\n### Resources\n\n* [**Source**](https://github.com/dnvgl/qats)\n* [**Issues**](https://github.com/dnvgl/qats/issues)\n* [**Changelog**](https://github.com/dnvgl/qats/blob/master/CHANGELOG.md)\n* [**Documentation**](https://qats.readthedocs.io)\n* [**Download**](https://pypi.org/project/qats/)\n\n## Contribute\n\nThese instructions will get you a copy of the project up and running on your local machine for development and testing \npurposes. See deployment for notes on how to deploy the project on a live system.\n\n### Prerequisites\n\nInstall Python version 3.6 or later from either https://www.python.org or https://www.anaconda.com.\n\n### Clone the source code repository\n\nAt the desired location, run: \n\n```git clone https://github.com/dnvgl/qats.git```\n\n### Installing\n\nTo get the development environment running:\n\n... create an isolated Python environment and activate it,\n\n```console\npython -m venv /path/to/new/virtual/environment\n\n/path/to/new/virtual/environment/Scripts/activate\n```\n\n... install the dev dependencies in [requirements.txt](requirements.txt),\n\n```console\npython -m pip install -r requirements.txt\n```\n\n.. and install the package in development mode.\n\n```console\npython setup.py develop\n```\n\nYou should now be able to import the package in the Python console,\n\n```python\nimport qats\nhelp(qats)\n```\n\n... and use the command line interface (CLI).\n\n```console\nqats -h\n```\n\n### Running the tests\n\nThe automated tests are run using [Tox](https://tox.readthedocs.io/en/latest/).\n\n```console\ntox\n```\n\nThe test automation is configured in the file `tox.ini`.\n\n### Building the package\n\nBuild tarball and wheel distributions by:\n\n```console\npython setup.py sdist bdist_wheel\n```\n\nThe distribution file names adhere to the [PEP 0427](https://www.python.org/dev/peps/pep-0427/#file-name-convention) \nconvention `{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl`.\n\n### Building the documentation\n\nThe html documentation is built using [Sphinx](http://www.sphinx-doc.org/en/master)\n\n```console\nsphinx-build -b html docs\\source docs\\_build\n```\n\nTo force a build to read/write all files (always read all files and don't use a saved environment), include the `-a` and `-E` options:\n\n```console\nsphinx-build -a -E -b html docs\\source docs\\_build\n```\n\n### Deployment\nPackaging, unit testing and deployment to [PyPi](https://pypi.org/project/qats/) is automated using \n[Travis-CI](https://travis-ci.com).\n\n### Versioning\n\nWe apply the \"major.minor.micro\" versioning scheme defined in [PEP 440](https://www.python.org/dev/peps/pep-0440/).\n\nWe cut a new version by applying a Git tag like `3.0.1` at the desired commit and then \n[setuptools_scm](https://github.com/pypa/setuptools_scm/#setup-py-usage) takes care of the rest. For the versions \navailable, see the [tags on this repository](https://github.com/dnvgl/qats/tags). \n\n## Authors\n\n* **Per Voie** - [tovop](https://github.com/tovop)\n* **Erling Lone** - [eneelo](https://github.com/eneelo)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://pypi.org/project/qats/", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/dnvgl/qats", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "qats", "package_url": "https://pypi.org/project/qats/", "platform": "", "project_url": "https://pypi.org/project/qats/", "project_urls": { "Changelog": "https://github.com/dnvgl/qats/blob/master/CHANGELOG.md", "Documentation": "https://qats.readthedocs.io", "Download": "https://pypi.org/project/qats/", "Homepage": "https://github.com/dnvgl/qats", "Issue Tracker": "https://github.com/dnvgl/qats/issues" }, "release_url": "https://pypi.org/project/qats/4.9.2/", "requires_dist": [ "openpyxl (<4,>=3)", "numpy (<2,>=1)", "scipy (<2,>=1)", "matplotlib (<4,>=3)", "npTDMS (<2,>=1)", "h5py (<4,>=2.7)", "QtPy (<2,>=1)", "pandas (<2,>=1)", "pymatreader (<1,>=0.0.20)", "pywin32 ; platform_system == \"Windows\"" ], "requires_python": "~=3.6", "summary": "Library for efficient processing and visualization of time series.", "version": "4.9.2", "yanked": false, "yanked_reason": null }, "last_serial": 8810967, "releases": { "3.0.5": [ { "comment_text": "", "digests": { "md5": "34dabaf4ae692c794f624acee3ca50f8", "sha256": "76a67388d8d30d9388b9ff09fdd2bff62995edbb55a105c30145c5a7628f3b05" }, "downloads": -1, "filename": "qats-3.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "34dabaf4ae692c794f624acee3ca50f8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 212668, "upload_time": "2019-06-26T14:33:46", "upload_time_iso_8601": "2019-06-26T14:33:46.896954Z", "url": "https://files.pythonhosted.org/packages/69/2b/552e2cd8b759c04458a521852f1aaa042eccf31666adabf4b61da705dd2e/qats-3.0.5-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "3.0.6": [ { "comment_text": "", "digests": { "md5": "f5061dcfa1971ee8ca04d4e7f7782fd1", "sha256": "b17040d1a04a0dece282b9326a4ee663bd6fd04e84003b7c166a99aea5bddc13" }, "downloads": -1, "filename": "qats-3.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "f5061dcfa1971ee8ca04d4e7f7782fd1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 101352, "upload_time": "2019-06-27T09:19:27", "upload_time_iso_8601": "2019-06-27T09:19:27.124969Z", "url": "https://files.pythonhosted.org/packages/83/59/f758b4fbc8f02612d7d26e5c7826c3c90b9ccd3d343ccaba5a5ea631a5a9/qats-3.0.6-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "de07369f15781c514f4e9bf2a432e105", "sha256": "ba1d044908938bfbc7c143751bacf824959843513f10172e90b82cc1919ebc2c" }, "downloads": -1, "filename": "qats-4.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "de07369f15781c514f4e9bf2a432e105", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 111286, "upload_time": "2019-08-22T13:26:45", "upload_time_iso_8601": "2019-08-22T13:26:45.593969Z", "url": "https://files.pythonhosted.org/packages/2f/e4/36fe6b4731e55cef4de6b57841379e4a92d20d14fd50deaab390290cd910/qats-4.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.0.1": [ { "comment_text": "", "digests": { "md5": "6a1f2da30fd8e421d136bd2164fc6cd1", "sha256": "982c4c3ba6a36d4780a1aa7bc727c1816623af169c2fe3a372583ada57db2f39" }, "downloads": -1, "filename": "qats-4.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6a1f2da30fd8e421d136bd2164fc6cd1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 111251, "upload_time": "2019-08-23T13:35:36", "upload_time_iso_8601": "2019-08-23T13:35:36.828131Z", "url": "https://files.pythonhosted.org/packages/b5/3b/a382f5966fe48d5050cc233012956048b4defb41a32247b5e75e36382de0/qats-4.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.1.0": [ { "comment_text": "", "digests": { "md5": "09e438d5ae42fddb213412baffe412b5", "sha256": "b0c1e7226a438104251fc03665102a0437b7b62ffb3a0e82f6d9dc445fa41e69" }, "downloads": -1, "filename": "qats-4.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "09e438d5ae42fddb213412baffe412b5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 111775, "upload_time": "2019-08-28T08:41:35", "upload_time_iso_8601": "2019-08-28T08:41:35.124494Z", "url": "https://files.pythonhosted.org/packages/e2/0b/4a5a98e83195a80c8d77dfa7eddcd48aa718d942164597cbc1b3b7946784/qats-4.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.1.1": [ { "comment_text": "", "digests": { "md5": "1f1d12d43b2073c59b2b8d7fcecb7bbd", "sha256": "3f74db619578b877bf4d7c3c5942d270cc20ed33239b9d5433beb0b5f6d82645" }, "downloads": -1, "filename": "qats-4.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1f1d12d43b2073c59b2b8d7fcecb7bbd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 111868, "upload_time": "2019-09-17T14:28:31", "upload_time_iso_8601": "2019-09-17T14:28:31.375351Z", "url": "https://files.pythonhosted.org/packages/39/15/67814ef7646c9b192000bd2ab8e467459ace7ba5555a5d1d51cc4756470e/qats-4.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.2.0": [ { "comment_text": "", "digests": { "md5": "f3adc2348eead8ed36fdfe481c65db83", "sha256": "6bd3d7571298ffbb558da5d01613cc736580777729e4fcdb7078140baa205f3f" }, "downloads": -1, "filename": "qats-4.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f3adc2348eead8ed36fdfe481c65db83", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 112103, "upload_time": "2019-09-23T11:41:26", "upload_time_iso_8601": "2019-09-23T11:41:26.000359Z", "url": "https://files.pythonhosted.org/packages/15/05/c2af559ecb3156d5036012b0d7d6499afcd06f239c6359e753a4e6fdeaeb/qats-4.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.3.0": [ { "comment_text": "", "digests": { "md5": "575938e4c700664159dd3e42b36be797", "sha256": "1476118d72c8bbb455f17e46b5e4527fca499e16020753ef4326f7b218251266" }, "downloads": -1, "filename": "qats-4.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "575938e4c700664159dd3e42b36be797", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 115353, "upload_time": "2019-10-30T13:25:49", "upload_time_iso_8601": "2019-10-30T13:25:49.010446Z", "url": "https://files.pythonhosted.org/packages/22/b8/db4c38940ce4bab1e094de0759eb950c8b76bf7e0f668d8c9e7abea09208/qats-4.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.4.0": [ { "comment_text": "", "digests": { "md5": "248bfd8395f28b46e226f8cc740b5442", "sha256": "2e2f67bf9450dd016c7494a1c59066cabc9f37e651d5ef2ea2155d2945ae40a2" }, "downloads": -1, "filename": "qats-4.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "248bfd8395f28b46e226f8cc740b5442", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 115801, "upload_time": "2019-11-04T14:01:21", "upload_time_iso_8601": "2019-11-04T14:01:21.070139Z", "url": "https://files.pythonhosted.org/packages/7b/49/e5149dab0ce365b6ca852d59df7cab6a774a20943d717f62c2d9b5ec7fe7/qats-4.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.5.0": [ { "comment_text": "", "digests": { "md5": "18221f4a41818e9eb78eb595eaae1d57", "sha256": "985fb64c631a967197e1f621a7c7762b2f9a3cb46ee7a9c208787fcf4ad59995" }, "downloads": -1, "filename": "qats-4.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "18221f4a41818e9eb78eb595eaae1d57", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 115785, "upload_time": "2019-11-05T20:01:14", "upload_time_iso_8601": "2019-11-05T20:01:14.829260Z", "url": "https://files.pythonhosted.org/packages/5b/0c/7a315097e2ef4e619d4017420e113b8158fc6b04bb382adb9d9b16af4137/qats-4.5.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.6.0": [ { "comment_text": "", "digests": { "md5": "c1be2e527a34ee5f90258e4eb4f1346e", "sha256": "6e3e775b9b0b3f08bd81f2ac623ed6631c495b9f2938c7d12a599bbd9d828638" }, "downloads": -1, "filename": "qats-4.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c1be2e527a34ee5f90258e4eb4f1346e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 115950, "upload_time": "2019-11-14T13:40:50", "upload_time_iso_8601": "2019-11-14T13:40:50.650766Z", "url": "https://files.pythonhosted.org/packages/4a/b5/0492ee0e824ff5ca32bac284ab2fca3371846b7c61ab9f5a54e7d4bbeb42/qats-4.6.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.6.1": [ { "comment_text": "", "digests": { "md5": "23bea7cdb58a84b3aba16c3185635b6d", "sha256": "c2716c2742e4dd1476fb85d98c8e323e910e71380c07e1212c8ed1d897c3d7e2" }, "downloads": -1, "filename": "qats-4.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "23bea7cdb58a84b3aba16c3185635b6d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 116010, "upload_time": "2019-11-26T10:04:35", "upload_time_iso_8601": "2019-11-26T10:04:35.885678Z", "url": "https://files.pythonhosted.org/packages/11/94/9609414a8854d251cca2c4fb30aefe06b8b8b180c580546899010b7f9235/qats-4.6.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.7.0": [ { "comment_text": "", "digests": { "md5": "f83ae2de20dc8695577bad0ec28b8d50", "sha256": "1f1f4c5e4c04e5e8cb860c9fe6a0da1b318b515a9747179f354a5ac84e7f1140" }, "downloads": -1, "filename": "qats-4.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f83ae2de20dc8695577bad0ec28b8d50", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 120100, "upload_time": "2020-01-15T09:45:35", "upload_time_iso_8601": "2020-01-15T09:45:35.572961Z", "url": "https://files.pythonhosted.org/packages/0f/7e/2e0c56a01816343e220e63f75ad0569d18b57c07a35b92933359ae6cdd41/qats-4.7.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.8.0": [ { "comment_text": "", "digests": { "md5": "f4082f867d7b2bfa634e43dffad8ca3d", "sha256": "6cc381ed945b1e969f1414101ecc08fd0ac7a3e21177099b06b65f6992c25e28" }, "downloads": -1, "filename": "qats-4.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f4082f867d7b2bfa634e43dffad8ca3d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 121534, "upload_time": "2020-04-10T15:35:31", "upload_time_iso_8601": "2020-04-10T15:35:31.737315Z", "url": "https://files.pythonhosted.org/packages/04/be/1ae4ffbf42463417eb65c82ab0c5766652ff0dc19870806dd8fcbce950be/qats-4.8.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.8.1": [ { "comment_text": "", "digests": { "md5": "ac11d2a9a651ad3a69ad43a6e5a120cd", "sha256": "d21e2dfb0e91b5bbb486627545059a2251108c09345557e019f976886088bc5b" }, "downloads": -1, "filename": "qats-4.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ac11d2a9a651ad3a69ad43a6e5a120cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 121788, "upload_time": "2020-06-08T08:56:59", "upload_time_iso_8601": "2020-06-08T08:56:59.503201Z", "url": "https://files.pythonhosted.org/packages/b0/4c/eaeec9c71a8551f16fc9fa10c0c1668acf626df56d2a754d9261167e348c/qats-4.8.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.9.0": [ { "comment_text": "", "digests": { "md5": "a28f5bb1bbb829b2a322b58ff1b5f113", "sha256": "d1d68564824a836f54ab8aa828c47a094ef591fd8a1cd9b1968b8ab6b0f07ade" }, "downloads": -1, "filename": "qats-4.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a28f5bb1bbb829b2a322b58ff1b5f113", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 123267, "upload_time": "2020-11-18T08:51:33", "upload_time_iso_8601": "2020-11-18T08:51:33.080364Z", "url": "https://files.pythonhosted.org/packages/b4/a0/db2a9a5d56a6eb1653e528eb4648933292557231e48c1c546a950615b3d2/qats-4.9.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.9.1": [ { "comment_text": "", "digests": { "md5": "d51f8f5f326e50cab825bd58b623b584", "sha256": "8075b11b5a0cc0f54bdb66626d9b169fe12340cd1975feeb5b2cb97287ac009e" }, "downloads": -1, "filename": "qats-4.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d51f8f5f326e50cab825bd58b623b584", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 123509, "upload_time": "2020-12-03T10:51:39", "upload_time_iso_8601": "2020-12-03T10:51:39.728049Z", "url": "https://files.pythonhosted.org/packages/4c/a4/3bb2029a724280a097282d084884ceb70e69a2fe8bfc514759c56d62df4b/qats-4.9.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "4.9.2": [ { "comment_text": "", "digests": { "md5": "2b4facb1ffc7255a4f2a25ab933256a5", "sha256": "1ea3672d3b02b5df14c7a53033e20060df46efcd37793bf3147f3b5f508f271a" }, "downloads": -1, "filename": "qats-4.9.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2b4facb1ffc7255a4f2a25ab933256a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 123511, "upload_time": "2020-12-03T12:35:25", "upload_time_iso_8601": "2020-12-03T12:35:25.093752Z", "url": "https://files.pythonhosted.org/packages/a1/73/0d40124ace7b24672835adadb615693242e82f9c728e011e7868c4828a35/qats-4.9.2-py3-none-any.whl", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2b4facb1ffc7255a4f2a25ab933256a5", "sha256": "1ea3672d3b02b5df14c7a53033e20060df46efcd37793bf3147f3b5f508f271a" }, "downloads": -1, "filename": "qats-4.9.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2b4facb1ffc7255a4f2a25ab933256a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 123511, "upload_time": "2020-12-03T12:35:25", "upload_time_iso_8601": "2020-12-03T12:35:25.093752Z", "url": "https://files.pythonhosted.org/packages/a1/73/0d40124ace7b24672835adadb615693242e82f9c728e011e7868c4828a35/qats-4.9.2-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }