Closed lkeegan closed 1 year ago
pypi provide a json dump from which we can extract the latest version number: json.info.version
https://pypi.org/pypi/vstt/json
{
"info": {
"author": "",
"author_email": "Liam Keegan <ssc@iwr.uni-heidelberg.de>",
"bugtrack_url": null,
"classifiers": [
"Intended Audience :: Education",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Topic :: Scientific/Engineering :: Bio-Informatics"
],
"description": "# Visuomotor Serial Targeting Task (VSTT)\n\n[![Docs](https://readthedocs.org/projects/vstt/badge/?version=latest)](https://vstt.readthedocs.io/en/latest/?badge=latest)\n[![CI](https://github.com/ssciwr/vstt/actions/workflows/ci.yml/badge.svg)](https://github.com/ssciwr/vstt/actions/workflows/ci.yml)\n[![Coverage](https://codecov.io/gh/ssciwr/vstt/branch/main/graph/badge.svg?token=sjsAdTyLH1)](https://codecov.io/gh/ssciwr/vstt)\n\nVisuomotor Serial Targeting Task (VSTT)\n\nDocumentation: [vstt.readthedocs.io](https://vstt.readthedocs.io/)\n\n![screenshot](https://raw.githubusercontent.com/ssciwr/vstt/main/docs/quickstart/images/gui.png)\n![screenshot](https://raw.githubusercontent.com/ssciwr/vstt/main/docs/quickstart/images/results.png)\n",
"description_content_type": "text/markdown",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "",
"keywords": "",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "vstt",
"package_url": "https://pypi.org/project/vstt/",
"platform": null,
"project_url": "https://pypi.org/project/vstt/",
"project_urls": {
"Documentation": "https://ssciwr.github.io/vstt/",
"Github": "https://github.com/ssciwr/vstt",
"Issues": "https://github.com/ssciwr/vstt/issues"
},
"release_url": "https://pypi.org/project/vstt/0.25.0/",
"requires_dist": [
"psychopy",
"psychopy-sounddevice",
"numpy",
"click",
"PyQt5",
"ipykernel ; extra == 'docs'",
"matplotlib ; extra == 'docs'",
"nbsphinx ; extra == 'docs'",
"pandoc ; extra == 'docs'",
"sphinx (>=4.5.0) ; extra == 'docs'",
"sphinx-rtd-theme (>=1.0.0) ; extra == 'docs'",
"pytest ; extra == 'tests'",
"pytest-cov ; extra == 'tests'",
"pytest-randomly ; extra == 'tests'",
"pyautogui ; extra == 'tests'",
"ascii-magic ; extra == 'tests'",
"keyboard ; extra == 'tests'"
],
"requires_python": ">=3.7",
"summary": "Visuomotor Serial Targeting Task (VSTT)",
"version": "0.25.0",
"yanked": false,
"yanked_reason": null
},
"last_serial": 18302302,
"releases": {
"0.25.0": [
{
"comment_text": "",
"digests": {
"blake2b_256": "269aca65a1a4fe30bd2246638cb8793a9a8e9ebfd30fa67ec45825a15d639f90",
"md5": "9950ef9eac175162bba3da95cfb83e63",
"sha256": "286cef1809caa514abaeba3a7bfe217707b5ec5a6719bb7b465b403d09e9690d"
},
"downloads": -1,
"filename": "vstt-0.25.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9950ef9eac175162bba3da95cfb83e63",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 28464,
"upload_time": "2023-05-30T12:43:33",
"upload_time_iso_8601": "2023-05-30T12:43:33.917772Z",
"url": "https://files.pythonhosted.org/packages/26/9a/ca65a1a4fe30bd2246638cb8793a9a8e9ebfd30fa67ec45825a15d639f90/vstt-0.25.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "53c379894907df5c1a002c448d4c16354c0869a00eca5b8df62bb55a6d251449",
"md5": "16e23a0ffc2b0e824110f44e794b6dd7",
"sha256": "7eacce8880a4bb37bc2cde32b054a4f802c174a2776ac8daf2df41a9f34d6890"
},
"downloads": -1,
"filename": "vstt-0.25.0.tar.gz",
"has_sig": false,
"md5_digest": "16e23a0ffc2b0e824110f44e794b6dd7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 38681,
"upload_time": "2023-05-30T12:43:35",
"upload_time_iso_8601": "2023-05-30T12:43:35.307907Z",
"url": "https://files.pythonhosted.org/packages/53/c3/79894907df5c1a002c448d4c16354c0869a00eca5b8df62bb55a6d251449/vstt-0.25.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "269aca65a1a4fe30bd2246638cb8793a9a8e9ebfd30fa67ec45825a15d639f90",
"md5": "9950ef9eac175162bba3da95cfb83e63",
"sha256": "286cef1809caa514abaeba3a7bfe217707b5ec5a6719bb7b465b403d09e9690d"
},
"downloads": -1,
"filename": "vstt-0.25.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9950ef9eac175162bba3da95cfb83e63",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 28464,
"upload_time": "2023-05-30T12:43:33",
"upload_time_iso_8601": "2023-05-30T12:43:33.917772Z",
"url": "https://files.pythonhosted.org/packages/26/9a/ca65a1a4fe30bd2246638cb8793a9a8e9ebfd30fa67ec45825a15d639f90/vstt-0.25.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "53c379894907df5c1a002c448d4c16354c0869a00eca5b8df62bb55a6d251449",
"md5": "16e23a0ffc2b0e824110f44e794b6dd7",
"sha256": "7eacce8880a4bb37bc2cde32b054a4f802c174a2776ac8daf2df41a9f34d6890"
},
"downloads": -1,
"filename": "vstt-0.25.0.tar.gz",
"has_sig": false,
"md5_digest": "16e23a0ffc2b0e824110f44e794b6dd7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 38681,
"upload_time": "2023-05-30T12:43:35",
"upload_time_iso_8601": "2023-05-30T12:43:35.307907Z",
"url": "https://files.pythonhosted.org/packages/53/c3/79894907df5c1a002c448d4c16354c0869a00eca5b8df62bb55a6d251449/vstt-0.25.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"vulnerabilities": []
}
pip recommends running it in a sub-process:
https://pip.pypa.io/en/latest/user_guide/#using-pip-from-your-program
subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'my_package'])
A nice to have feature would be an auto-update:
Doesn't seem to be a good existing library for doing this though.