That being said it would be possible to add a smarter check against python version missmatch that would still allow this kind of path hardcoding. On Fri, Jul 13, 2018, 15:21 Fred Drake <fred@fdrake.net> wrote:
On Fri, Jul 13, 2018 at 5:55 AM Oliver Bestwalter <oliver@bestwalter.de> wrote:
this is a fix introduced new in 3.1 to make sure that the wrong interpreter isn't used silently when tox is misconfigured. I wasn't involved in the fix and lack the details, but your config looks like there should be no such warning.
With the attached tox.ini and Python interpreters at the indicated locations, I see four warnings, but the configured interpreters are used:
py35 recreate: /home/fdrake/p/kt.testing/.tox/py35 /home/fdrake/p/kt.testing/.tox$ /home/fdrake/tools/tox/bin/python3 -m virtualenv --python /opt/kt-python35/bin/python3 py35
/home/fdrake/p/kt.testing/.tox/py35/log/py35-0.log
Uncommenting the "ignore_basepython_conflict = true" setting, the configured locations of the interpreters is ignored, and no warnings are displayed:
py35 recreate: /home/fdrake/p/kt.testing/.tox/py35 /home/fdrake/p/kt.testing/.tox$ /home/fdrake/tools/tox/bin/python3 -m virtualenv --python /usr/bin/python3.5 py35
/home/fdrake/p/kt.testing/.tox/py35/log/py35-0.log
When you say that py36 and py37 weren't found at all: do you mean that the warning shadows an actual error? If this is the case, it would be great if you could open an issue with a quick explanation how to reproduce this.
With "ignore_basepython_conflict = true" uncommented, tox ignores the basepython settings and tells me the interpreters are not found. Since I've used "skip_missing_interpreters = true", it skips without an error:
py36 recreate: /home/fdrake/p/kt.testing/.tox/py36 SKIPPED: InterpreterNotFound: python3.6 py37 recreate: /home/fdrake/p/kt.testing/.tox/py37 SKIPPED: InterpreterNotFound: python3.7
Using "ignore_basepython_conflict = true" and "skip_missing_interpreters = false", the system 2.7 and 3.5 are used, and 3.6 and 3.7 are reported missing as errors:
py36 recreate: /home/fdrake/p/kt.testing/.tox/py36 ERROR: InterpreterNotFound: python3.6 py37 recreate: /home/fdrake/p/kt.testing/.tox/py37 ERROR: InterpreterNotFound: python3.7
So I think there are a couple of surprising behaviors here.
1. A warning about a conflict is being generated when the Python I've specified actually matches the version I've indicated I want (by factor). The interpreter isn't from a system package (provided by the OS distribution, Ubuntu in my case), but for each of my configured interpreters, the version matches.
2. When the configuration indicates the warning should be suppressed, the configuration of the basepython setting is ignored. This strikes me as counter-intuitive. Warning of suspicious configuration is arguably a good idea, but ignoring configuration is never the right thing to do. If the user agrees with the warning, they'll change the configuration and have another go at it.
It remains unclear to be whether the "default factors" are intended to refer to specific versions of Python, or to specific installations. Searching for defaults based on the PATH is reasonable, but many software engineers will also argue that building apps on top of them is insane. When testing a library with tox, I want to use the same Python's I'll consider for my applications.
-Fred
-- Fred L. Drake, Jr. <fred at fdrake.net> "A storm broke loose in my mind." --Albert Einstein _______________________________________________ tox-dev mailing list -- tox-dev@python.org To unsubscribe send an email to tox-dev-leave@python.org https://mail.python.org/mm3/mailman3/lists/tox-dev.python.org/