Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conflicting basepython check fails for factor+testenv combination #1124

Closed
ionelmc opened this issue Jan 7, 2019 · 6 comments
Closed

Conflicting basepython check fails for factor+testenv combination #1124

ionelmc opened this issue Jan 7, 2019 · 6 comments
Labels
bug:minor does not affect many people or has no big impact help:wanted Issues that have been acknowledged, a solution determined and a PR might likely be accepted. pr-rejected

Comments

@ionelmc
Copy link

ionelmc commented Jan 7, 2019

For this given tox.ini:

[tox]
envlist =
    {py27,py34,py35,py36,py37}-{cover,nocov}

[testenv]
basepython =
    py27: {env:TOXPYTHON:python2.7}
    py34: {env:TOXPYTHON:python3.4}
    py35: {env:TOXPYTHON:python3.5}
    py36: {env:TOXPYTHON:python3.6}
    py37: {env:TOXPYTHON:python3.7}
commands =
    python -c 'import sys; print(sys.version_info)'

[testenv:py27-cover]
usedevelop = true

[testenv:py34-cover]
usedevelop = true

[testenv:py35-cover]
usedevelop = true

[testenv:py36-cover]
usedevelop = true

[testenv:py37-cover]
usedevelop = true

I get this sort of output:

> tox --version                                                                                                                                                       3.6.1 imported from /usr/local/lib/python3.6/dist-packages/tox/__init__.py

> TOXPYTHON=$(which python3.7) tox -e py37-cover                                                                                                                      /usr/local/lib/python3.6/dist-packages/tox/config.py:569: UserWarning: conflicting basepython version (set 37, should be 27) for env 'py27-cover';resolve conflict or set ignore_basepython_conflict
  proposed_version, implied_version, testenv_config.envname
/usr/local/lib/python3.6/dist-packages/tox/config.py:569: UserWarning: conflicting basepython version (set 37, should be 34) for env 'py34-cover';resolve conflict or set ignore_basepython_conflict
  proposed_version, implied_version, testenv_config.envname
/usr/local/lib/python3.6/dist-packages/tox/config.py:569: UserWarning: conflicting basepython version (set 37, should be 35) for env 'py35-cover';resolve conflict or set ignore_basepython_conflict
  proposed_version, implied_version, testenv_config.envname
/usr/local/lib/python3.6/dist-packages/tox/config.py:569: UserWarning: conflicting basepython version (set 37, should be 36) for env 'py36-cover';resolve conflict or set ignore_basepython_conflict
  proposed_version, implied_version, testenv_config.envname
py37-cover create: /home/ionel/.tox/py37-cover
py37-cover develop-inst: /home/ionel
....

This only happens if I have those [testenv:pyXX-cover] sections.

Now why do I do it like that you might ask? Well ... on Windows I can specialize on different builds for the same python versions, eg, I want to test both 32bit and 64bit pythons, thus I run with both TOXPYTHON=C:\Python37-x64\python.exe and TOXPYTHON=C:\Python37\python.exe (32bit).

So after writing all that bugreport I realized I can just use factors for usedevelop but I'm submitting anyway, maybe someone has the same problem or you want to fix the check 😅 . Eg:

usedevelop =
    cover: true
    nocov: false
@ionelmc ionelmc changed the title Conflicting basepython check is applied for inactive environments Conflicting basepython check fails for factor+testenv combination Jan 7, 2019
@obestwalter
Copy link
Member

Thanks for reporting @ionelmc. If I plug this in tox --showconfig everthing looks correct, so the warning is a false alarm, so this is definitely a display bug:

tool-versions: tox-3.6.1 virtualenv-16.0.0
config-file: 
toxinipath: /home/ob/do/play/tox.ini
toxinidir:  /home/ob/do/play
toxworkdir: /home/ob/do/play/.tox
setupdir:   /home/ob/do/play
distshare:  /home/ob/.tox/distshare
skipsdist:  

[testenv:py27-cover]
  envdir          = /home/ob/do/play/.tox/py27-cover
  setenv          = SetenvDict: {'PYTHONHASHSEED': '862043223', 'TOX_ENV_NAME': 'py27-cover', 'TOX_ENV_DIR': '/home/ob/do/play/.tox/py27-cover'}
  basepython      = python2.7
  description     = 
  envtmpdir       = /home/ob/do/play/.tox/py27-cover/tmp
  envlogdir       = /home/ob/do/play/.tox/py27-cover/log
  downloadcache   = None
  changedir       = /home/ob/do/play
  args_are_paths  = True
  skip_install    = False
  ignore_errors   = False
  recreate        = False
  passenv         = {'LD_LIBRARY_PATH', 'LANG', 'PIP_INDEX_URL', 'TMPDIR', 'LANGUAGE', 'TOX_WORK_DIR', 'PATH'}
  whitelist_externals = []
  platform        = .*
  sitepackages    = False
  alwayscopy      = False
  pip_pre         = False
  usedevelop      = True
  install_command = ['python', '-m', 'pip', 'install', '{opts}', '{packages}']
  list_dependencies_command = ['python', '-m', 'pip', 'freeze']
  deps            = []
  commands        = [['python', '-c', 'import sys; print(sys.version_info)']]
  commands_pre    = []
  commands_post   = []
  ignore_outcome  = False
  extras          = []
[testenv:py27-nocov]
  envdir          = /home/ob/do/play/.tox/py27-nocov
  setenv          = SetenvDict: {'PYTHONHASHSEED': '862043223', 'TOX_ENV_NAME': 'py27-nocov', 'TOX_ENV_DIR': '/home/ob/do/play/.tox/py27-nocov'}
  basepython      = python2.7
  description     = 
  envtmpdir       = /home/ob/do/play/.tox/py27-nocov/tmp
  envlogdir       = /home/ob/do/play/.tox/py27-nocov/log
  downloadcache   = None
  changedir       = /home/ob/do/play
  args_are_paths  = True
  skip_install    = False
  ignore_errors   = False
  recreate        = False
  passenv         = {'LD_LIBRARY_PATH', 'LANG', 'PIP_INDEX_URL', 'TMPDIR', 'LANGUAGE', 'TOX_WORK_DIR', 'PATH'}
  whitelist_externals = []
  platform        = .*
  sitepackages    = False
  alwayscopy      = False
  pip_pre         = False
  usedevelop      = False
  install_command = ['python', '-m', 'pip', 'install', '{opts}', '{packages}']
  list_dependencies_command = ['python', '-m', 'pip', 'freeze']
  deps            = []
  commands        = [['python', '-c', 'import sys; print(sys.version_info)']]
  commands_pre    = []
  commands_post   = []
  ignore_outcome  = False
  extras          = []
[testenv:py34-cover]
  envdir          = /home/ob/do/play/.tox/py34-cover
  setenv          = SetenvDict: {'PYTHONHASHSEED': '862043223', 'TOX_ENV_NAME': 'py34-cover', 'TOX_ENV_DIR': '/home/ob/do/play/.tox/py34-cover'}
  basepython      = python3.4
  description     = 
  envtmpdir       = /home/ob/do/play/.tox/py34-cover/tmp
  envlogdir       = /home/ob/do/play/.tox/py34-cover/log
  downloadcache   = None
  changedir       = /home/ob/do/play
  args_are_paths  = True
  skip_install    = False
  ignore_errors   = False
  recreate        = False
  passenv         = {'LD_LIBRARY_PATH', 'LANG', 'PIP_INDEX_URL', 'TMPDIR', 'LANGUAGE', 'TOX_WORK_DIR', 'PATH'}
  whitelist_externals = []
  platform        = .*
  sitepackages    = False
  alwayscopy      = False
  pip_pre         = False
  usedevelop      = True
  install_command = ['python', '-m', 'pip', 'install', '{opts}', '{packages}']
  list_dependencies_command = ['python', '-m', 'pip', 'freeze']
  deps            = []
  commands        = [['python', '-c', 'import sys; print(sys.version_info)']]
  commands_pre    = []
  commands_post   = []
  ignore_outcome  = False
  extras          = []
[testenv:py34-nocov]
  envdir          = /home/ob/do/play/.tox/py34-nocov
  setenv          = SetenvDict: {'PYTHONHASHSEED': '862043223', 'TOX_ENV_NAME': 'py34-nocov', 'TOX_ENV_DIR': '/home/ob/do/play/.tox/py34-nocov'}
  basepython      = python3.4
  description     = 
  envtmpdir       = /home/ob/do/play/.tox/py34-nocov/tmp
  envlogdir       = /home/ob/do/play/.tox/py34-nocov/log
  downloadcache   = None
  changedir       = /home/ob/do/play
  args_are_paths  = True
  skip_install    = False
  ignore_errors   = False
  recreate        = False
  passenv         = {'LD_LIBRARY_PATH', 'LANG', 'PIP_INDEX_URL', 'TMPDIR', 'LANGUAGE', 'TOX_WORK_DIR', 'PATH'}
  whitelist_externals = []
  platform        = .*
  sitepackages    = False
  alwayscopy      = False
  pip_pre         = False
  usedevelop      = False
  install_command = ['python', '-m', 'pip', 'install', '{opts}', '{packages}']
  list_dependencies_command = ['python', '-m', 'pip', 'freeze']
  deps            = []
  commands        = [['python', '-c', 'import sys; print(sys.version_info)']]
  commands_pre    = []
  commands_post   = []
  ignore_outcome  = False
  extras          = []
[testenv:py35-cover]
  envdir          = /home/ob/do/play/.tox/py35-cover
  setenv          = SetenvDict: {'PYTHONHASHSEED': '862043223', 'TOX_ENV_NAME': 'py35-cover', 'TOX_ENV_DIR': '/home/ob/do/play/.tox/py35-cover'}
  basepython      = python3.5
  description     = 
  envtmpdir       = /home/ob/do/play/.tox/py35-cover/tmp
  envlogdir       = /home/ob/do/play/.tox/py35-cover/log
  downloadcache   = None
  changedir       = /home/ob/do/play
  args_are_paths  = True
  skip_install    = False
  ignore_errors   = False
  recreate        = False
  passenv         = {'LD_LIBRARY_PATH', 'LANG', 'PIP_INDEX_URL', 'TMPDIR', 'LANGUAGE', 'TOX_WORK_DIR', 'PATH'}
  whitelist_externals = []
  platform        = .*
  sitepackages    = False
  alwayscopy      = False
  pip_pre         = False
  usedevelop      = True
  install_command = ['python', '-m', 'pip', 'install', '{opts}', '{packages}']
  list_dependencies_command = ['python', '-m', 'pip', 'freeze']
  deps            = []
  commands        = [['python', '-c', 'import sys; print(sys.version_info)']]
  commands_pre    = []
  commands_post   = []
  ignore_outcome  = False
  extras          = []
[testenv:py35-nocov]
  envdir          = /home/ob/do/play/.tox/py35-nocov
  setenv          = SetenvDict: {'PYTHONHASHSEED': '862043223', 'TOX_ENV_NAME': 'py35-nocov', 'TOX_ENV_DIR': '/home/ob/do/play/.tox/py35-nocov'}
  basepython      = python3.5
  description     = 
  envtmpdir       = /home/ob/do/play/.tox/py35-nocov/tmp
  envlogdir       = /home/ob/do/play/.tox/py35-nocov/log
  downloadcache   = None
  changedir       = /home/ob/do/play
  args_are_paths  = True
  skip_install    = False
  ignore_errors   = False
  recreate        = False
  passenv         = {'LD_LIBRARY_PATH', 'LANG', 'PIP_INDEX_URL', 'TMPDIR', 'LANGUAGE', 'TOX_WORK_DIR', 'PATH'}
  whitelist_externals = []
  platform        = .*
  sitepackages    = False
  alwayscopy      = False
  pip_pre         = False
  usedevelop      = False
  install_command = ['python', '-m', 'pip', 'install', '{opts}', '{packages}']
  list_dependencies_command = ['python', '-m', 'pip', 'freeze']
  deps            = []
  commands        = [['python', '-c', 'import sys; print(sys.version_info)']]
  commands_pre    = []
  commands_post   = []
  ignore_outcome  = False
  extras          = []
[testenv:py36-cover]
  envdir          = /home/ob/do/play/.tox/py36-cover
  setenv          = SetenvDict: {'PYTHONHASHSEED': '862043223', 'TOX_ENV_NAME': 'py36-cover', 'TOX_ENV_DIR': '/home/ob/do/play/.tox/py36-cover'}
  basepython      = python3.6
  description     = 
  envtmpdir       = /home/ob/do/play/.tox/py36-cover/tmp
  envlogdir       = /home/ob/do/play/.tox/py36-cover/log
  downloadcache   = None
  changedir       = /home/ob/do/play
  args_are_paths  = True
  skip_install    = False
  ignore_errors   = False
  recreate        = False
  passenv         = {'LD_LIBRARY_PATH', 'LANG', 'PIP_INDEX_URL', 'TMPDIR', 'LANGUAGE', 'TOX_WORK_DIR', 'PATH'}
  whitelist_externals = []
  platform        = .*
  sitepackages    = False
  alwayscopy      = False
  pip_pre         = False
  usedevelop      = True
  install_command = ['python', '-m', 'pip', 'install', '{opts}', '{packages}']
  list_dependencies_command = ['python', '-m', 'pip', 'freeze']
  deps            = []
  commands        = [['python', '-c', 'import sys; print(sys.version_info)']]
  commands_pre    = []
  commands_post   = []
  ignore_outcome  = False
  extras          = []
[testenv:py36-nocov]
  envdir          = /home/ob/do/play/.tox/py36-nocov
  setenv          = SetenvDict: {'PYTHONHASHSEED': '862043223', 'TOX_ENV_NAME': 'py36-nocov', 'TOX_ENV_DIR': '/home/ob/do/play/.tox/py36-nocov'}
  basepython      = python3.6
  description     = 
  envtmpdir       = /home/ob/do/play/.tox/py36-nocov/tmp
  envlogdir       = /home/ob/do/play/.tox/py36-nocov/log
  downloadcache   = None
  changedir       = /home/ob/do/play
  args_are_paths  = True
  skip_install    = False
  ignore_errors   = False
  recreate        = False
  passenv         = {'LD_LIBRARY_PATH', 'LANG', 'PIP_INDEX_URL', 'TMPDIR', 'LANGUAGE', 'TOX_WORK_DIR', 'PATH'}
  whitelist_externals = []
  platform        = .*
  sitepackages    = False
  alwayscopy      = False
  pip_pre         = False
  usedevelop      = False
  install_command = ['python', '-m', 'pip', 'install', '{opts}', '{packages}']
  list_dependencies_command = ['python', '-m', 'pip', 'freeze']
  deps            = []
  commands        = [['python', '-c', 'import sys; print(sys.version_info)']]
  commands_pre    = []
  commands_post   = []
  ignore_outcome  = False
  extras          = []
[testenv:py37-cover]
  envdir          = /home/ob/do/play/.tox/py37-cover
  setenv          = SetenvDict: {'PYTHONHASHSEED': '862043223', 'TOX_ENV_NAME': 'py37-cover', 'TOX_ENV_DIR': '/home/ob/do/play/.tox/py37-cover'}
  basepython      = python3.7
  description     = 
  envtmpdir       = /home/ob/do/play/.tox/py37-cover/tmp
  envlogdir       = /home/ob/do/play/.tox/py37-cover/log
  downloadcache   = None
  changedir       = /home/ob/do/play
  args_are_paths  = True
  skip_install    = False
  ignore_errors   = False
  recreate        = False
  passenv         = {'LD_LIBRARY_PATH', 'LANG', 'PIP_INDEX_URL', 'TMPDIR', 'LANGUAGE', 'TOX_WORK_DIR', 'PATH'}
  whitelist_externals = []
  platform        = .*
  sitepackages    = False
  alwayscopy      = False
  pip_pre         = False
  usedevelop      = True
  install_command = ['python', '-m', 'pip', 'install', '{opts}', '{packages}']
  list_dependencies_command = ['python', '-m', 'pip', 'freeze']
  deps            = []
  commands        = [['python', '-c', 'import sys; print(sys.version_info)']]
  commands_pre    = []
  commands_post   = []
  ignore_outcome  = False
  extras          = []
[testenv:py37-nocov]
  envdir          = /home/ob/do/play/.tox/py37-nocov
  setenv          = SetenvDict: {'PYTHONHASHSEED': '862043223', 'TOX_ENV_NAME': 'py37-nocov', 'TOX_ENV_DIR': '/home/ob/do/play/.tox/py37-nocov'}
  basepython      = python3.7
  description     = 
  envtmpdir       = /home/ob/do/play/.tox/py37-nocov/tmp
  envlogdir       = /home/ob/do/play/.tox/py37-nocov/log
  downloadcache   = None
  changedir       = /home/ob/do/play
  args_are_paths  = True
  skip_install    = False
  ignore_errors   = False
  recreate        = False
  passenv         = {'LD_LIBRARY_PATH', 'LANG', 'PIP_INDEX_URL', 'TMPDIR', 'LANGUAGE', 'TOX_WORK_DIR', 'PATH'}
  whitelist_externals = []
  platform        = .*
  sitepackages    = False
  alwayscopy      = False
  pip_pre         = False
  usedevelop      = False
  install_command = ['python', '-m', 'pip', 'install', '{opts}', '{packages}']
  list_dependencies_command = ['python', '-m', 'pip', 'freeze']
  deps            = []
  commands        = [['python', '-c', 'import sys; print(sys.version_info)']]
  commands_pre    = []
  commands_post   = []
  ignore_outcome  = False
  extras          = []

@obestwalter obestwalter added the bug:minor does not affect many people or has no big impact label Jan 8, 2019
@phdru
Copy link

phdru commented Jan 28, 2019

@obestwalter Run TOXPYTHON=python3.5 tox --showconfig to see the problem.

@takluyver
Copy link

takluyver commented Apr 1, 2019

We have a similar issue on h5py, where we're also trying to test with 32-bit and 64-bit Python. To avoid telling tox that every Python is now the one we want to test on, I've had a go at writing a tiny plugin that uses an environment variable to control which one you use:

https://github.com/takluyver/tox_appveyor

h5py/h5py#1196

This may change completely or be abandoned if we don't take this approach for h5py.

GitHub
Select 32 or 64-bit Python for Tox on Appveyor. Contribute to takluyver/tox_appveyor development by creating an account on GitHub.

@gaborbernat gaborbernat added the help:wanted Issues that have been acknowledged, a solution determined and a PR might likely be accepted. label Apr 23, 2019
@helpr helpr bot added the pr-available label Sep 24, 2019
@helpr helpr bot added pr-rejected and removed pr-available labels Nov 13, 2019
@gaborbernat
Copy link
Member

Feel free to open a PR against master and fix it. My available efforts at the moment are aimed at fixing this as part of #1394, but that probably will take a while (ETA September).

@schlamar
Copy link
Contributor

@takluyver Your feature request is already discussed at #1149

@gaborbernat
Copy link
Member

I think this should work now fine on tox 4, so closing as such.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug:minor does not affect many people or has no big impact help:wanted Issues that have been acknowledged, a solution determined and a PR might likely be accepted. pr-rejected
Projects
None yet
6 participants