Skip to main content

virtualenv discovery plugin for tox 4 and multipython

Project description

virtualenv-multipython

virtualenv discovery plugin for multipython

license versions pypi tested with multipython

[!NOTE] virtualenv-multipython has twin plugin tox-multipython that serves the same purpose for tox 3

This virtualenv plugin comes pre-installed in multipython Docker image and is responsible for resolving tox environment name to Python executable. Most probably, you don't need to install it yourself.

Environment names supported are all multipython tags, including free threading Python builds py313t and py314t. More names may be added in the future.

[!IMPORTANT] This plugin does not fall back to tox python: interpreter discovery errors are explicit.

Testing

There are two types of tests performed, both with env var VIRTUALENV_DISCOVERY=multipython exported:

  1. Virtualenv. Install virtualenv in host tag environment and create virtual environments for all target tags. Environment's python version must match target tag. In these tests we test all multipython tags as both host tags and target tags.
  2. Tox 4. tox and virtualenv are installed in host tag environment, and tox run is executed on tox.ini with env names equal to target tags. Tox environment's python version must match tox env name and target tag. In these tests we test all multipython tags as target tags and all tags except py27, py35, py36 as target tags (because tox 4 is requires Python 3.7+).

Virtualenv supports discovery plugins since v20. In v20.22, it dropped support for Python <=3.6, in v20.27 it dropped support for Python 3.7. You will see below that it is still capable to discover 3.7, but probably those 3.7 environments won't be fully functional.

This is why we use 6 different test setups:

  1. Virtualenv, virtualenv>=20
  2. Virtualenv, virtualenv>=20,<20.27
  3. Virtualenv, virtualenv>=20,<20.22
  4. Tox 4, tox>=4,<5, virtualenv>=20
  5. Tox 4, tox>=4,<5, virtualenv>=20,<20.27
  6. Tox 4, tox>=4,<5, virtualenv>=20,<20.22

Test report

When virtualenv-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 executable. For failing ๐Ÿšซ๏ธ Target tag, python executable is not discoverable.

Host tag and Target tags are valid multipython tags. Host tags are listed vertically (rows), target tags are listed horizontally (columns).

[!NOTE] The fully green line for py313 is a multipython design flaw that should be fixed soon: https://github.com/makukha/multipython/issues/76

virtualenv>=20
          TARGETS
  HOST    Aโ€‚Bโ€‚Cโ€‚Dโ€‚Eโ€‚Fโ€‚Gโ€‚Hโ€‚Iโ€‚Jโ€‚Kโ€‚Lโ€‚M
py314t  A โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
py313t  B โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py314  C โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py313  D โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py312  E โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py311  F โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py310  G โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py39  H โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py38  I โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py37  J โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py36  K โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py35  L โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py27  M โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
tox>=4,<5, virtualenv>=20
          TARGETS
  HOST    Aโ€‚Bโ€‚Cโ€‚Dโ€‚Eโ€‚Fโ€‚Gโ€‚Hโ€‚Iโ€‚Jโ€‚Kโ€‚Lโ€‚M
py314t  A โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
py313t  B โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py314  C โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py313  D โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py312  E โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py311  F โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py310  G โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py39  H โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py38  I โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py37  J โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py36  K .โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.
  py35  L .โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.
  py27  M .โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.
virtualenv>=20,<20.27
          TARGETS
  HOST    Aโ€‚Bโ€‚Cโ€‚Dโ€‚Eโ€‚Fโ€‚Gโ€‚Hโ€‚Iโ€‚Jโ€‚Kโ€‚Lโ€‚M
py314t  A โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
py313t  B โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py314  C โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py313  D โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py312  E โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py311  F โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py310  G โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py39  H โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py38  I โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py37  J โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py36  K โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py35  L โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py27  M โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
tox>=4,<5, virtualenv>=20,<20.27
          TARGETS
  HOST    Aโ€‚Bโ€‚Cโ€‚Dโ€‚Eโ€‚Fโ€‚Gโ€‚Hโ€‚Iโ€‚Jโ€‚Kโ€‚Lโ€‚M
py314t  A โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
py313t  B โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py314  C โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py313  D โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py312  E โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py311  F โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
 py310  G โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py39  H โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py38  I โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py37  J โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…๐Ÿšซ๐Ÿšซ๐Ÿšซ
  py36  K .โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.
  py35  L .โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.
  py27  M .โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.
virtualenv>=20,<20.22
          TARGETS
  HOST    Aโ€‚Bโ€‚Cโ€‚Dโ€‚Eโ€‚Fโ€‚Gโ€‚Hโ€‚Iโ€‚Jโ€‚Kโ€‚Lโ€‚M
py314t  A โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
py313t  B โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py314  C โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py313  D โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py312  E โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py311  F โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py310  G โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py39  H โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py38  I โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py37  J โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py36  K โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py35  L โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py27  M โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
tox>=4,<5, virtualenv>=20,<20.22
          TARGETS
  HOST    Aโ€‚Bโ€‚Cโ€‚Dโ€‚Eโ€‚Fโ€‚Gโ€‚Hโ€‚Iโ€‚Jโ€‚Kโ€‚Lโ€‚M
py314t  A โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
py313t  B โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py314  C โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py313  D โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py312  E โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py311  F โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
 py310  G โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py39  H โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py38  I โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py37  J โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…โœ…
  py36  K .โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.
  py35  L .โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.
  py27  M .โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.โ€‚.

Authors

This package is a part of multipython project.

License

MIT License

Changelog

Check repository CHANGELOG.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

virtualenv_multipython-0.3.1.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

virtualenv_multipython-0.3.1-py2.py3-none-any.whl (5.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file virtualenv_multipython-0.3.1.tar.gz.

File metadata

File hashes

Hashes for virtualenv_multipython-0.3.1.tar.gz
Algorithm Hash digest
SHA256 2997624d8d89d0932ca15c4e5120416e1bd953d83bf78e7e3d89bd2933d1576d
MD5 9813bec6fc563b63930ac819698fbf47
BLAKE2b-256 c73f785acb24da5b6d1be8d3c2881fa8af19851bce2c02078d7162e86b946bdb

See more details on using hashes here.

File details

Details for the file virtualenv_multipython-0.3.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for virtualenv_multipython-0.3.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ea596e52ded976956cb95b4e164e2886f70cdd095f4e09dd3d2402c8cb1bdd61
MD5 000191749c60309ec5726be82f28fdac
BLAKE2b-256 0f9226c555a14c66e010ef8de49f68d2f5e9c35d318a8f48aadfd36f435aa93b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page