{"id":24665675,"url":"https://github.com/makukha/tox-multipython","last_synced_at":"2026-05-18T03:36:12.641Z","repository":{"id":271875077,"uuid":"914041947","full_name":"makukha/tox-multipython","owner":"makukha","description":"tox 3 discovery plugin for multipython","archived":false,"fork":false,"pushed_at":"2025-01-22T09:09:06.000Z","size":96,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T07:13:05.576Z","etag":null,"topics":["discovery","plugin","testing","tox","tox-plugin"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/makukha.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-08T20:48:27.000Z","updated_at":"2025-01-22T09:06:59.000Z","dependencies_parsed_at":"2025-01-18T20:25:40.973Z","dependency_job_id":null,"html_url":"https://github.com/makukha/tox-multipython","commit_stats":null,"previous_names":["makukha/tox-multipython"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makukha%2Ftox-multipython","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makukha%2Ftox-multipython/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makukha%2Ftox-multipython/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makukha%2Ftox-multipython/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/makukha","download_url":"https://codeload.github.com/makukha/tox-multipython/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244781791,"owners_count":20509667,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["discovery","plugin","testing","tox","tox-plugin"],"created_at":"2025-01-26T07:13:10.267Z","updated_at":"2026-05-18T03:36:07.621Z","avatar_url":"https://github.com/makukha.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tox-multipython\n\u003e python interpreter discovery plugin for [tox](https://tox.wiki) 3 and [multipython](https://github.com/makukha/multipython)\n\n[![license](https://img.shields.io/github/license/makukha/tox-multipython.svg)](https://github.com/makukha/tox-multipython/blob/main/LICENSE)\n[![python versions](https://img.shields.io/pypi/pyversions/tox-multipython.svg)](https://pypi.org/project/tox-multipython)\n[![pypi](https://img.shields.io/pypi/v/tox-multipython.svg#v0.2.2)](https://pypi.python.org/pypi/tox-multipython)\n[![tested with multipython](https://img.shields.io/badge/tested_with-multipython-x)](https://github.com/makukha/multipython)\n[![uses docsub](https://img.shields.io/badge/uses-docsub-royalblue)](https://github.com/makukha/docsub)\n\n\u003e [!NOTE]\n\u003e [tox-multipython]() has twin plugin [virtualenv-multipython](https://github.com/makukha/virtualenv-multipython) that serves the same purpose for [tox](https://tox.wiki) 4\n\nThis [tox](https://tox.wiki) plugin comes pre-installed in [multipython](https://hub.docker.com/r/makukha/multipython) Docker image and is responsible for resolving tox environment name to Python executable. Most probably, you don't need to install it yourself.\n\nEnvironment names supported are all multipython tags. More names may be added in the future.\n\n# Testing\n\nThere is one test suite:\n\n1. `tox3` — `tox\u003e=3,\u003c4` is installed in *host tag* environment, and `tox run` is executed on `tox.ini` with env names equal to *target tags*. This test includes subtests:\n    - assert `{env_python}` version inside tox env\n    - assert `python` version inside tox env\n    - install externally built *sample package* in tox environment\n    - execute entrypoint of *sample package*\n\nVirtualenv supports discovery plugins since v20. In v20.22, it dropped support for Python \u003c=3.6, in v20.27 it dropped support for Python 3.7.\n\nThis is why we use 6 different test setups:\n\n1. `tox3` + `virtualenv\u003e=20`\n1. `tox3` + `virtualenv\u003e=20,\u003c20.27`\n1. `tox3` + `virtualenv\u003e=20,\u003c20.22`\n\n## Test report\n\nWhen `tox-multipython` is installed inside *host tag* environment, it allows to use selected ✅ *target tag* (create virtualenv environment or use as tox env name in `env_list`) and automatically discovers corresponding [multipython](https://github.com/makukha/multipython) executable. For failing 💥 *target tag*, interpreter is discoverable, but virtual environment with *sample package* cannot be created.\n\n*Host tag* and *Target tags* are valid [multipython](https://hub.docker.com/r/makukha/multipython) tags. *Host tags* are listed vertically (rows), *target tags* are listed horizontally (columns).\n\n\u003ctable\u003e\n\u003ctbody\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etox\u003e=3,\u003c4\u003c/code\u003e, \u003ccode\u003evirtualenv\u003e=20\u003c/code\u003e\n\u003c!-- docsub: begin --\u003e\n\u003c!-- docsub: x pretty tox3-v__ --\u003e\n\u003c!-- docsub: lines after 1 upto -1 --\u003e\n\u003cpre\u003e\n  HOST    TARGETS\n——————    A B C D E F G H I J K L M\npy314t  A ✅✅✅✅✅✅✅✅✅✅💥💥💥\npy313t  B ✅✅✅✅✅✅✅✅✅💥💥💥💥\n py314  C ✅✅✅✅✅✅✅✅✅💥💥💥💥\n py313  D ✅✅✅✅✅✅✅✅✅💥💥💥💥\n py312  E ✅✅✅✅✅✅✅✅✅💥💥💥💥\n py311  F ✅✅✅✅✅✅✅✅✅💥💥💥💥\n py310  G ✅✅✅✅✅✅✅✅✅💥💥💥💥\n  py39  H ✅✅✅✅✅✅✅✅✅💥💥💥💥\n  py38  I ✅✅✅✅✅✅✅✅✅💥💥💥💥\n  py37  J ✅✅✅✅✅✅✅✅✅✅💥💥💥\n  py36  K 💥💥💥💥💥✅✅✅✅✅✅✅✅\n  py35  L 💥💥💥💥💥✅✅✅✅✅✅✅✅\n  py27  M 💥💥💥💥💥✅✅✅✅✅✅✅✅\n\u003c/pre\u003e\n\u003c!-- docsub: end --\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etox\u003e=3,\u003c4\u003c/code\u003e, \u003ccode\u003evirtualenv\u003e=20,\u003c20.27\u003c/code\u003e\n\u003c!-- docsub: begin --\u003e\n\u003c!-- docsub: x pretty tox3-v27 --\u003e\n\u003c!-- docsub: lines after 1 upto -1 --\u003e\n\u003cpre\u003e\n  HOST    TARGETS\n——————    A B C D E F G H I J K L M\npy314t  A ✅✅✅✅✅✅✅✅✅✅✅✅✅\npy313t  B ✅✅✅✅✅✅✅✅✅✅✅✅✅\n py314  C ✅✅✅✅✅✅✅✅✅✅✅✅✅\n py313  D ✅✅✅✅✅✅✅✅✅✅✅✅✅\n py312  E ✅✅✅✅✅✅✅✅✅✅✅✅✅\n py311  F ✅✅✅✅✅✅✅✅✅✅✅✅✅\n py310  G ✅✅✅✅✅✅✅✅✅✅✅✅✅\n  py39  H ✅✅✅✅✅✅✅✅✅✅✅✅✅\n  py38  I ✅✅✅✅✅✅✅✅✅✅✅✅✅\n  py37  J ✅✅✅✅✅✅✅✅✅✅✅✅✅\n  py36  K 💥💥💥💥💥✅✅✅✅✅✅✅✅\n  py35  L 💥💥💥💥💥✅✅✅✅✅✅✅✅\n  py27  M 💥💥💥💥💥✅✅✅✅✅✅✅✅\n\u003c/pre\u003e\n\u003c!-- docsub: end --\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e\n\u003ccode\u003etox\u003e=3,\u003c4\u003c/code\u003e, \u003ccode\u003evirtualenv\u003e=20,\u003c20.22\u003c/code\u003e\n\u003c!-- docsub: begin --\u003e\n\u003c!-- docsub: x pretty tox3-v22 --\u003e\n\u003c!-- docsub: lines after 1 upto -1 --\u003e\n\u003cpre\u003e\n  HOST    TARGETS\n——————    A B C D E F G H I J K L M\npy314t  A ✅✅✅✅✅✅✅✅✅💥💥💥💥\npy313t  B ✅✅✅✅✅✅✅✅✅✅💥💥💥\n py314  C ✅✅✅✅✅✅✅✅✅✅💥💥💥\n py313  D ✅✅✅✅✅✅✅✅✅✅💥💥💥\n py312  E ✅✅✅✅✅✅✅✅✅✅💥💥💥\n py311  F ✅✅✅✅✅✅✅✅✅✅💥💥💥\n py310  G ✅✅✅✅✅✅✅✅✅✅💥💥💥\n  py39  H ✅✅✅✅✅✅✅✅✅✅💥💥💥\n  py38  I ✅✅✅✅✅✅✅✅✅✅💥💥💥\n  py37  J ✅✅✅✅✅✅✅✅✅✅💥💥💥\n  py36  K 💥💥💥💥💥✅✅✅✅✅✅✅✅\n  py35  L 💥💥💥💥💥✅✅✅✅✅✅✅✅\n  py27  M 💥💥💥💥💥✅✅✅✅✅✅✅✅\n\u003c/pre\u003e\n\u003c!-- docsub: end --\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n\n# Changelog\n\nCheck [CHANGELOG.md](https://github.com/makukha/tox-multipython/tree/main/CHANGELOG.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmakukha%2Ftox-multipython","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmakukha%2Ftox-multipython","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmakukha%2Ftox-multipython/lists"}