Hello community,

here is the log from the commit of package python-tox for openSUSE:Factory 
checked in at 2020-02-15 22:23:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-tox (Old)
 and      /work/SRC/openSUSE:Factory/.python-tox.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-tox"

Sat Feb 15 22:23:29 2020 rev:31 rq:771779 version:3.14.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-tox/python-tox.changes    2019-11-22 
10:25:16.101276306 +0100
+++ /work/SRC/openSUSE:Factory/.python-tox.new.26092/python-tox.changes 
2020-02-15 22:23:32.135248583 +0100
@@ -1,0 +2,6 @@
+Fri Feb  7 12:41:53 UTC 2020 - Tomáš Chvátal <tchva...@suse.com>
+
+- Update to 3.14.3 bsc#1163043:
+  * Relax importlib requirement to allow either version 0 or 1 - by 
:user:`chyzzqo2` #1476
+
+-------------------------------------------------------------------

Old:
----
  tox-3.14.0.tar.gz

New:
----
  tox-3.14.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-tox.spec ++++++
--- /var/tmp/diff_new_pack.CqmzL0/_old  2020-02-15 22:23:32.959249029 +0100
+++ /var/tmp/diff_new_pack.CqmzL0/_new  2020-02-15 22:23:32.959249029 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-tox
 #
-# Copyright (c) 2019 SUSE LLC.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-tox
-Version:        3.14.0
+Version:        3.14.3
 Release:        0
 Summary:        Virtualenv-based automation of test activities
 License:        MIT
@@ -41,7 +41,7 @@
 BuildRequires:  %{python_module setuptools_scm >= 2.0.0}
 BuildRequires:  %{python_module six >= 1.0.0}
 BuildRequires:  %{python_module toml}
-BuildRequires:  %{python_module virtualenv >= 14.0.0}
+BuildRequires:  %{python_module virtualenv >= 16.0.0}
 BuildRequires:  %{python_module wheel >= 0.29.0}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
@@ -54,7 +54,7 @@
 Requires:       python-setuptools >= 30.0.0
 Requires:       python-six >= 1.0.0
 Requires:       python-toml >= 0.9.4
-Requires:       python-virtualenv >= 14.0.0
+Requires:       python-virtualenv >= 16.0.0
 Requires(post): update-alternatives
 Requires(postun): update-alternatives
 Obsoletes:      python-detox
@@ -121,7 +121,7 @@
 export PYTHONDONTWRITEBYTECODE=1
 export PATH=%{buildroot}%{_bindir}:$PATH
 # Ignores for gh#tox-dev/tox#1293
-%pytest -k 'not (network or parallel or test_provision_missing or 
test_provision_interrupt_child or test_workdir_gets_resolved or 
test_provision_cli_args_ignore or test_provision_non_canonical_dep or 
test_create_KeyboardInterrupt)'
+%pytest -k 'not (network or parallel or test_provision_missing or 
test_provision_interrupt_child or test_workdir_gets_resolved or 
test_provision_cli_args_ignore or test_provision_non_canonical_dep or 
test_create_KeyboardInterrupt or test_provision_from_pyvenv)'
 
 %post
 %python_install_alternative tox tox-quickstart

++++++ tox-3.14.0.tar.gz -> tox-3.14.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/.pre-commit-config.yaml 
new/tox-3.14.3/.pre-commit-config.yaml
--- old/tox-3.14.0/.pre-commit-config.yaml      2019-09-03 18:08:03.000000000 
+0200
+++ new/tox-3.14.3/.pre-commit-config.yaml      2019-12-28 11:58:14.000000000 
+0100
@@ -1,18 +1,18 @@
 repos:
 -   repo: https://github.com/psf/black
-    rev: 19.3b0
+    rev: 19.10b0
     hooks:
     -   id: black
         args: [--safe]
-        language_version: python3.7
+        language_version: python3.8
 -   repo: https://github.com/asottile/blacken-docs
-    rev: v1.1.0
+    rev: v1.3.0
     hooks:
     -   id: blacken-docs
         additional_dependencies: [black==19.3b0]
-        language_version: python3.7
+        language_version: python3.8
 -   repo: https://github.com/asottile/seed-isort-config
-    rev: v1.9.1
+    rev: v1.9.3
     hooks:
     -   id: seed-isort-config
         args: [--application-directories, "src:."]
@@ -21,20 +21,20 @@
     hooks:
     -   id: isort
 -   repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v2.2.3
+    rev: v2.4.0
     hooks:
     -   id: trailing-whitespace
     -   id: end-of-file-fixer
     -   id: check-yaml
     -   id: debug-statements
     -   id: flake8
-        additional_dependencies: ["flake8-bugbear == 19.3.0"]
-        language_version: python3.7
+        additional_dependencies: ["flake8-bugbear == 19.8.0"]
+        language_version: python3.8
 -   repo: https://github.com/asottile/pyupgrade
-    rev: v1.19.0
+    rev: v1.25.1
     hooks:
     -   id: pyupgrade
 -   repo: https://github.com/pre-commit/pygrep-hooks
-    rev: v1.4.0
+    rev: v1.4.2
     hooks:
     -   id: rst-backticks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/CONTRIBUTORS new/tox-3.14.3/CONTRIBUTORS
--- old/tox-3.14.0/CONTRIBUTORS 2019-09-03 18:08:03.000000000 +0200
+++ new/tox-3.14.3/CONTRIBUTORS 2019-12-28 11:58:14.000000000 +0100
@@ -19,6 +19,7 @@
 Chris Rose
 Clark Boylan
 Cyril Roelandt
+Dane Hillard
 David Staheli
 Ederag
 Eli Collins
@@ -31,6 +32,7 @@
 Henk-Jaap Wagenaar
 Ian Stapleton Cordasco
 Igor Duarte Cardoso
+Ilya Kulakov
 Ionel Maries Cristian
 Itxaka Serrano
 Jake Windle
@@ -72,9 +74,11 @@
 Ronald Evers
 Ronny Pfannschmidt
 Selim Belhaouane
+Sorin Sbarnea
 Sridhar Ratnakumar
 Stephen Finucane
 Sviatoslav Sydorenko
+Thomas Grainger
 Tim Laurence
 Ville Skyttä
 Xander Johnson
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/PKG-INFO new/tox-3.14.3/PKG-INFO
--- old/tox-3.14.0/PKG-INFO     2019-09-03 18:08:18.000000000 +0200
+++ new/tox-3.14.3/PKG-INFO     2019-12-28 11:58:34.418653000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: tox
-Version: 3.14.0
+Version: 3.14.3
 Summary: tox is a generic virtualenv management and test command line tool
 Home-page: http://tox.readthedocs.org
 Author: Holger Krekel, Oliver Bestwalter, Bernát Gábor and others
@@ -19,6 +19,7 @@
         
status](https://readthedocs.org/projects/tox/badge/?version=latest&style=flat-square)](https://tox.readthedocs.io/en/latest/?badge=latest)
         [![Code style:
         
black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+        
[![Downloads](https://pepy.tech/badge/tox/month)](https://pepy.tech/project/tox/month)
         
         <a href="https://tox.readthedocs.io";>
             <img 
src="https://raw.githubusercontent.com/tox-dev/tox/master/docs/_static/img/tox.png";
@@ -155,7 +156,7 @@
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
-Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
+Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7
 Description-Content-Type: text/markdown
-Provides-Extra: docs
 Provides-Extra: testing
+Provides-Extra: docs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/README.md new/tox-3.14.3/README.md
--- old/tox-3.14.0/README.md    2019-09-03 18:08:03.000000000 +0200
+++ new/tox-3.14.3/README.md    2019-12-28 11:58:14.000000000 +0100
@@ -8,6 +8,7 @@
 
status](https://readthedocs.org/projects/tox/badge/?version=latest&style=flat-square)](https://tox.readthedocs.io/en/latest/?badge=latest)
 [![Code style:
 
black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+[![Downloads](https://pepy.tech/badge/tox/month)](https://pepy.tech/project/tox/month)
 
 <a href="https://tox.readthedocs.io";>
     <img 
src="https://raw.githubusercontent.com/tox-dev/tox/master/docs/_static/img/tox.png";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/azure-pipelines.yml 
new/tox-3.14.3/azure-pipelines.yml
--- old/tox-3.14.0/azure-pipelines.yml  2019-09-03 18:08:03.000000000 +0200
+++ new/tox-3.14.3/azure-pipelines.yml  2019-12-28 11:58:14.000000000 +0100
@@ -20,36 +20,41 @@
 
 variables:
   PYTEST_ADDOPTS: "-v -v -ra --showlocals"
-  PYTEST_XDIST_PROC_NR: 'auto'
+  PYTEST_XDIST_PROC_NR: '0'
+  PRE_COMMIT_HOME: $(Pipeline.Workspace)/pre-commit-cache
 
 jobs:
 - template: run-tox-env.yml@tox
   parameters:
     tox_version: ''
     jobs:
-      fix_lint: null
+      fix_lint:
+        before:
+        - task: CacheBeta@0
+          displayName: cache pre-commit
+          inputs:
+            key: pre-commit | .pre-commit-config.yaml
+            path: $(PRE_COMMIT_HOME)
       docs: null
       py38:
-        image: [linux]
-      py37:
         image: [linux, windows, macOs]
       py27:
         image: [linux, windows, macOs]
       pypy:
         image: [linux]
-      pypy3:
-        image: [linux]
+      py37:
+        image: [linux, windows, macOs]
       py36:
         image: [linux, windows, macOs]
       py35:
         image: [linux, windows, macOs]
-      py34:
-        image: [linux, windows, macOs]
+      pypy3:
+        image: [linux]
       dev: null
       package_description: null
     coverage:
       with_toxenv: 'coverage' # generate .tox/.coverage, .tox/coverage.xml 
after test run
-      for_envs: [py37, py36, py35, py34, py27]
+      for_envs: [py38, py37, py36, py35, py27, pypy3, pypy]
 
 - ${{ if startsWith(variables['Build.SourceBranch'], 'refs/tags/') }}:
   - template: publish-pypi.yml@tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/docs/changelog.rst 
new/tox-3.14.3/docs/changelog.rst
--- old/tox-3.14.0/docs/changelog.rst   2019-09-03 18:08:03.000000000 +0200
+++ new/tox-3.14.3/docs/changelog.rst   2019-12-28 11:58:14.000000000 +0100
@@ -11,6 +11,74 @@
 
 .. towncrier release notes start
 
+v3.14.3 (2019-12-27)
+--------------------
+
+Bugfixes
+^^^^^^^^
+
+- Relax importlib requirement to allow either version 0 or 1 - by 
:user:`chyzzqo2`
+  `#1476 <https://github.com/tox-dev/tox/issues/1476>`_
+
+Miscellaneous
+^^^^^^^^^^^^^
+
+- Clarify legacy setup.py error message: python projects should commit to a 
strong consistency of message regarding packaging. We no-longer tell people to 
add a setup.py to their already configured pep-517 project, otherwise it could 
imply that pyproject.toml isn't as well supported and recommended as it truly 
is - by :user:`graingert`
+  `#1478 <https://github.com/tox-dev/tox/issues/1478>`_
+
+v3.14.2 (2019-12-02)
+--------------------
+
+Bugfixes
+^^^^^^^^
+
+- Fix fallback to global configuration when running in Jenkins. - by 
:user:`daneah`
+  `#1428 <https://github.com/tox-dev/tox/issues/1428>`_
+- Fix colouring on windows: colorama is a dep. - by :user:`1138-4EB`
+  `#1471 <https://github.com/tox-dev/tox/issues/1471>`_
+
+
+Miscellaneous
+^^^^^^^^^^^^^
+
+- improve performance with internal lookup of Python version information - by 
:user:`blueyed`
+  `#1462 <https://github.com/tox-dev/tox/issues/1462>`_
+- Use latest version of importlib_metadata package - by :user:`kammala`
+  `#1472 <https://github.com/tox-dev/tox/issues/1472>`_
+- Mark poetry related tests as xfail since its dependency pyrsistent won't 
install in ci due to missing wheels/build deps. - by :user:`RonnyPfannschmidt`
+  `#1474 <https://github.com/tox-dev/tox/issues/1474>`_
+
+
+v3.14.1 (2019-11-13)
+--------------------
+
+Bugfixes
+^^^^^^^^
+
+- fix reporting of exiting due to (real) signals - by :user:`blueyed`
+  `#1401 <https://github.com/tox-dev/tox/issues/1401>`_
+- Bump minimal virtualenv to 16.0.0 to improve own transitive
+  deps handling in some ancient envs. — by :user:`webknjaz`
+  `#1429 <https://github.com/tox-dev/tox/issues/1429>`_
+- Adds ``CURL_CA_BUNDLE``, ``REQUESTS_CA_BUNDLE``, ``SSL_CERT_FILE`` to the 
default passenv values. - by :user:`ssbarnea`
+  `#1437 <https://github.com/tox-dev/tox/issues/1437>`_
+- Fix nested tox execution in the parallel mode by separating the environment
+  variable that let's tox know it is invoked in the parallel mode
+  (``_TOX_PARALLEL_ENV``) from the variable that informs the tests that tox is
+  running in parallel mode (``TOX_PARALLEL_ENV``).
+  — by :user:`hroncok`
+  `#1444 <https://github.com/tox-dev/tox/issues/1444>`_
+- Fix provisioning from a pyvenv interpreter. — by :user:`kentzo`
+  `#1452 <https://github.com/tox-dev/tox/issues/1452>`_
+
+
+Deprecations (removal in next major release)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Python ``3.4`` is no longer supported. — by :user:`gaborbernat`
+  `#1456 <https://github.com/tox-dev/tox/issues/1456>`_
+
+
 v3.14.0 (2019-09-03)
 --------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/docs/config.rst 
new/tox-3.14.3/docs/config.rst
--- old/tox-3.14.0/docs/config.rst      2019-09-03 18:08:03.000000000 +0200
+++ new/tox-3.14.3/docs/config.rst      2019-12-28 11:58:14.000000000 +0100
@@ -385,8 +385,10 @@
     Some variables are always passed through to ensure the basic functionality
     of standard library functions or tooling like pip:
 
-    * passed through on all platforms: ``PATH``, ``LANG``, ``LANGUAGE``,
-      ``LD_LIBRARY_PATH``, ``PIP_INDEX_URL``
+    * passed through on all platforms: ``CURL_CA_BUNDLE`, ``PATH``,
+      ``LANG``, ``LANGUAGE``,
+      ``LD_LIBRARY_PATH``, ``PIP_INDEX_URL``,
+      ``REQUESTS_CA_BUNDLE``, ``SSL_CERT_FILE``
     * Windows: ``SYSTEMDRIVE``, ``SYSTEMROOT``, ``PATHEXT``, ``TEMP``, ``TMP``
        ``NUMBER_OF_PROCESSORS``, ``USERPROFILE``, ``MSYSTEM``
     * Others (e.g. UNIX, macOS): ``TMPDIR``
@@ -829,7 +831,7 @@
 - ``Django>=1.5,<1.6`` will be included for environments containing
   ``django15`` factor,
 - ``Django>=1.6,<1.7`` similarly depends on ``django16`` factor,
-- ``unittest`` will be loaded for Python 3.6 environments.
+- ``unittest2`` will be loaded for Python 3.6 environments.
 
 tox provides a number of default factors corresponding to Python interpreter
 versions. The conditional setting above will lead to either ``python3.6`` or
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/docs/example/basic.rst 
new/tox-3.14.3/docs/example/basic.rst
--- old/tox-3.14.0/docs/example/basic.rst       2019-09-03 18:08:03.000000000 
+0200
+++ new/tox-3.14.3/docs/example/basic.rst       2019-12-28 11:58:14.000000000 
+0100
@@ -399,7 +399,8 @@
   - ``auto`` to limit it to CPU count,
   - or pass an integer to set that limit.
 - Parallel mode displays a progress spinner while running tox environments in 
parallel, and reports outcome of
-  these as soon as completed with a human readable duration timing attached.
+  these as soon as completed with a human readable duration timing attached. 
This spinner can be disabled by
+  setting the environment variable ``TOX_PARALLEL_NO_SPINNER`` to the value 
``1``.
 - Parallel mode by default shows output only of failed environments and ones 
marked as :conf:`parallel_show_output`
   ``=True``.
 - There's now a concept of dependency between environments (specified via 
:conf:`depends`), tox will re-order the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/docs/example/devenv.rst 
new/tox-3.14.3/docs/example/devenv.rst
--- old/tox-3.14.0/docs/example/devenv.rst      2019-09-03 18:08:03.000000000 
+0200
+++ new/tox-3.14.3/docs/example/devenv.rst      2019-12-28 11:58:14.000000000 
+0100
@@ -15,7 +15,7 @@
 ===============================================================
 
 The easiest way to set up a development environment is to use the ``--devenv``
-option along with your existing configured ``testenv``s.  The ``--devenv``
+option along with your existing configured ``testenv``\ s.  The ``--devenv``
 option accepts a single argument, the location you want to create a development
 environment at.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/setup.cfg new/tox-3.14.3/setup.cfg
--- old/tox-3.14.0/setup.cfg    2019-09-03 18:08:18.000000000 +0200
+++ new/tox-3.14.3/setup.cfg    2019-12-28 11:58:34.418653000 +0100
@@ -35,16 +35,17 @@
 
 [options]
 packages = find:
-python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
+python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
 install_requires = 
-       importlib-metadata >= 0.12, <1;python_version<"3.8"
+       importlib-metadata >= 0.12, <2;python_version<"3.8"
        packaging >= 14
        pluggy >= 0.12.0, <1
        py >= 1.4.17, <2
        six >= 1.0.0, <2
-       virtualenv >= 14.0.0
+       virtualenv >= 16.0.0
        toml >=0.9.4
        filelock >= 3.0.0, <4
+       colorama >= 0.4.1 ;platform_system=="Windows"
 
 [options.packages.find]
 where = src
@@ -62,7 +63,7 @@
        pytest-cov >= 2.5.1, <3
        pytest-mock >= 1.10.0, <2
        pytest-xdist >= 1.22.2, <2
-       pytest-randomly >= 1.2.3, <2
+       pytest-randomly >= 1.0.0, <4
        psutil >= 5.6.1, < 6; python_version != "3.4"
        flaky >= 3.4.0, < 4
 docs = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/_pytestplugin.py 
new/tox-3.14.3/src/tox/_pytestplugin.py
--- old/tox-3.14.0/src/tox/_pytestplugin.py     2019-09-03 18:08:03.000000000 
+0200
+++ new/tox-3.14.3/src/tox/_pytestplugin.py     2019-12-28 11:58:14.000000000 
+0100
@@ -17,7 +17,8 @@
 import tox.session
 from tox import venv
 from tox.config import parseconfig
-from tox.config.parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY
+from tox.config.parallel import ENV_VAR_KEY_PRIVATE as 
PARALLEL_ENV_VAR_KEY_PRIVATE
+from tox.config.parallel import ENV_VAR_KEY_PUBLIC as 
PARALLEL_ENV_VAR_KEY_PUBLIC
 from tox.reporter import update_default_reporter
 from tox.venv import CreationConfig, VirtualEnv, getdigest
 
@@ -66,7 +67,12 @@
 
     to_clean = {
         k: os.environ.pop(k, None)
-        for k in {PARALLEL_ENV_VAR_KEY, str("TOX_WORK_DIR"), str("PYTHONPATH")}
+        for k in {
+            PARALLEL_ENV_VAR_KEY_PRIVATE,
+            PARALLEL_ENV_VAR_KEY_PUBLIC,
+            str("TOX_WORK_DIR"),
+            str("PYTHONPATH"),
+        }
     }
 
     yield
@@ -96,12 +102,12 @@
 
 @pytest.fixture(name="newconfig")
 def create_new_config_file(tmpdir):
-    def create_new_config_file_(args, source=None, plugins=()):
+    def create_new_config_file_(args, source=None, plugins=(), 
filename="tox.ini"):
         if source is None:
             source = args
             args = []
         s = textwrap.dedent(source)
-        p = tmpdir.join("tox.ini")
+        p = tmpdir.join(filename)
         p.write(s)
         tox.session.setup_reporter(args)
         with tmpdir.as_cwd():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/config/__init__.py 
new/tox-3.14.3/src/tox/config/__init__.py
--- old/tox-3.14.0/src/tox/config/__init__.py   2019-09-03 18:08:03.000000000 
+0200
+++ new/tox-3.14.3/src/tox/config/__init__.py   2019-12-28 11:58:14.000000000 
+0100
@@ -35,7 +35,8 @@
 from tox.util.path import ensure_empty_dir
 from tox.util.stdlib import importlib_metadata
 
-from .parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY
+from .parallel import ENV_VAR_KEY_PRIVATE as PARALLEL_ENV_VAR_KEY_PRIVATE
+from .parallel import ENV_VAR_KEY_PUBLIC as PARALLEL_ENV_VAR_KEY_PUBLIC
 from .parallel import add_parallel_config, add_parallel_flags
 from .reporter import add_verbosity_commands
 
@@ -663,14 +664,17 @@
         value = list(itertools.chain.from_iterable([x.split(" ") for x in 
value]))
 
         passenv = {
-            "PATH",
-            "PIP_INDEX_URL",
+            "CURL_CA_BUNDLE",
             "LANG",
             "LANGUAGE",
             "LD_LIBRARY_PATH",
+            "PATH",
+            "PIP_INDEX_URL",
+            "REQUESTS_CA_BUNDLE",
+            "SSL_CERT_FILE",
             "TOX_WORK_DIR",
             str(REPORTER_TIMESTAMP_ON_ENV),
-            str(PARALLEL_ENV_VAR_KEY),
+            str(PARALLEL_ENV_VAR_KEY_PUBLIC),
         }
 
         # read in global passenv settings
@@ -987,11 +991,12 @@
         self.config = config
 
         prefix = "tox" if ini_path.basename == "setup.cfg" else None
+        fallbacksection = "tox:tox" if ini_path.basename == "setup.cfg" else 
"tox"
 
         context_name = getcontextname()
         if context_name == "jenkins":
             reader = SectionReader(
-                "tox:jenkins", self._cfg, prefix=prefix, 
fallbacksections=["tox"]
+                "tox:jenkins", self._cfg, prefix=prefix, 
fallbacksections=[fallbacksection]
             )
             dist_share_default = "{toxworkdir}/distshare"
         elif not context_name:
@@ -1030,7 +1035,7 @@
         config.sdistsrc = reader.getpath("sdistsrc", None)
         config.setupdir = reader.getpath("setupdir", "{toxinidir}")
         config.logdir = config.toxworkdir.join("log")
-        within_parallel = PARALLEL_ENV_VAR_KEY in os.environ
+        within_parallel = PARALLEL_ENV_VAR_KEY_PRIVATE in os.environ
         if not within_parallel and not WITHIN_PROVISION:
             ensure_empty_dir(config.logdir)
 
@@ -1282,7 +1287,7 @@
             all_envs = self._getallenvs(reader)
         else:
             candidates = (
-                (os.environ.get(PARALLEL_ENV_VAR_KEY), True),
+                (os.environ.get(PARALLEL_ENV_VAR_KEY_PRIVATE), True),
                 (from_option, True),
                 (from_environ, True),
                 ("py" if self.config.option.devenv is not None else None, 
False),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/config/parallel.py 
new/tox-3.14.3/src/tox/config/parallel.py
--- old/tox-3.14.0/src/tox/config/parallel.py   2019-09-03 18:08:03.000000000 
+0200
+++ new/tox-3.14.3/src/tox/config/parallel.py   2019-12-28 11:58:14.000000000 
+0100
@@ -2,7 +2,8 @@
 
 from argparse import ArgumentTypeError
 
-ENV_VAR_KEY = "TOX_PARALLEL_ENV"
+ENV_VAR_KEY_PUBLIC = "TOX_PARALLEL_ENV"
+ENV_VAR_KEY_PRIVATE = "_TOX_PARALLEL_ENV"
 OFF_VALUE = 0
 DEFAULT_PARALLEL = OFF_VALUE
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/exception.py 
new/tox-3.14.3/src/tox/exception.py
--- old/tox-3.14.0/src/tox/exception.py 2019-09-03 18:08:03.000000000 +0200
+++ new/tox-3.14.3/src/tox/exception.py 2019-12-28 11:58:14.000000000 +0100
@@ -17,18 +17,24 @@
     """
     str_ = "{} for command {}".format(exception_name, command)
     if exit_code is not None:
-        str_ += " (exited with code {:d})".format(exit_code)
-        if (os.name == "posix") and (exit_code > 128):
+        if exit_code < 0 or (os.name == "posix" and exit_code > 128):
             signals = {
                 number: name for name, number in vars(signal).items() if 
name.startswith("SIG")
             }
-            number = exit_code - 128
-            name = signals.get(number)
-            if name:
-                str_ += (
-                    "\nNote: this might indicate a fatal error signal "
-                    "({:d} - 128 = {:d}: {})".format(number + 128, number, 
name)
-                )
+            if exit_code < 0:
+                # Signal reported via subprocess.Popen.
+                sig_name = signals.get(-exit_code)
+                str_ += " (exited with code {:d} ({}))".format(exit_code, 
sig_name)
+            else:
+                str_ += " (exited with code {:d})".format(exit_code)
+                number = exit_code - 128
+                name = signals.get(number)
+                if name:
+                    str_ += (
+                        ")\nNote: this might indicate a fatal error signal "
+                        "({:d} - 128 = {:d}: {})".format(exit_code, number, 
name)
+                    )
+        str_ += " (exited with code {:d})".format(exit_code)
     return str_
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/interpreters/__init__.py 
new/tox-3.14.3/src/tox/interpreters/__init__.py
--- old/tox-3.14.0/src/tox/interpreters/__init__.py     2019-09-03 
18:08:03.000000000 +0200
+++ new/tox-3.14.3/src/tox/interpreters/__init__.py     2019-12-28 
11:58:14.000000000 +0100
@@ -5,7 +5,8 @@
 
 import tox
 from tox import reporter
-from tox.constants import SITE_PACKAGE_QUERY_SCRIPT, VERSION_QUERY_SCRIPT
+from tox.constants import SITE_PACKAGE_QUERY_SCRIPT
+from tox.interpreters.via_path import get_python_info
 
 
 class Interpreters:
@@ -56,7 +57,7 @@
 def run_and_get_interpreter_info(name, executable):
     assert executable
     try:
-        result = exec_on_interpreter(str(executable), VERSION_QUERY_SCRIPT)
+        result = get_python_info(str(executable))
         result["version_info"] = tuple(result["version_info"])  # fix json 
dump transformation
         del result["name"]
         del result["version"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/interpreters/via_path.py 
new/tox-3.14.3/src/tox/interpreters/via_path.py
--- old/tox-3.14.0/src/tox/interpreters/via_path.py     2019-09-03 
18:08:03.000000000 +0200
+++ new/tox-3.14.3/src/tox/interpreters/via_path.py     2019-12-28 
11:58:14.000000000 +0100
@@ -35,7 +35,7 @@
         python_exe = str(python_exe)
     with _SPECK_LOCK[python_exe]:
         if python_exe not in _SPECS:
-            info = get_python_info([python_exe])
+            info = get_python_info(python_exe)
             if info is not None:
                 found = PythonSpec(
                     info["name"],
@@ -51,9 +51,16 @@
     return _SPECS[python_exe]
 
 
+_python_info_cache = {}
+
+
 def get_python_info(cmd):
+    try:
+        return _python_info_cache[cmd].copy()
+    except KeyError:
+        pass
     proc = subprocess.Popen(
-        cmd + [VERSION_QUERY_SCRIPT],
+        [cmd] + [VERSION_QUERY_SCRIPT],
         stdout=subprocess.PIPE,
         stderr=subprocess.PIPE,
         universal_newlines=True,
@@ -65,7 +72,8 @@
         except ValueError as exception:
             failure = exception
         else:
-            return result
+            _python_info_cache[cmd] = result
+            return result.copy()
     else:
         failure = "exit code {}".format(proc.returncode)
     reporter.verbosity1("{!r} cmd {!r} out {!r} err {!r} ".format(failure, 
cmd, out, err))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/logs/env.py 
new/tox-3.14.3/src/tox/logs/env.py
--- old/tox-3.14.0/src/tox/logs/env.py  2019-09-03 18:08:03.000000000 +0200
+++ new/tox-3.14.3/src/tox/logs/env.py  2019-12-28 11:58:14.000000000 +0100
@@ -1,9 +1,6 @@
 from __future__ import absolute_import, unicode_literals
 
-import json
-import subprocess
-
-from tox.constants import VERSION_QUERY_SCRIPT
+from tox.interpreters.via_path import get_python_info
 
 from .command import CommandLog
 
@@ -17,9 +14,7 @@
         self.dict = dict
 
     def set_python_info(self, python_executable):
-        cmd = [str(python_executable), VERSION_QUERY_SCRIPT]
-        result = subprocess.check_output(cmd, universal_newlines=True)
-        answer = json.loads(result)
+        answer = get_python_info(str(python_executable))
         answer["executable"] = python_executable
         self.dict["python"] = answer
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/package/builder/legacy.py 
new/tox-3.14.3/src/tox/package/builder/legacy.py
--- old/tox-3.14.0/src/tox/package/builder/legacy.py    2019-09-03 
18:08:03.000000000 +0200
+++ new/tox-3.14.3/src/tox/package/builder/legacy.py    2019-12-28 
11:58:14.000000000 +0100
@@ -8,16 +8,26 @@
 
 def make_sdist(config, session):
     setup = config.setupdir.join("setup.py")
-    if not setup.check():
+    pyproject = config.setupdir.join("pyproject.toml")
+    setup_check = setup.check()
+    if not setup_check and not pyproject.check():
         reporter.error(
-            "No setup.py file found. The expected location is:\n"
-            "  {}\n"
+            "No pyproject.toml or setup.py file found. The expected locations 
are:\n"
+            "  {pyproject} or {setup}\n"
             "You can\n"
             "  1. Create one:\n"
-            "     
https://packaging.python.org/tutorials/distributing-packages/#setup-py\n";
+            "     https://tox.readthedocs.io/en/latest/example/package.html\n";
             "  2. Configure tox to avoid running sdist:\n"
-            "     https://tox.readthedocs.io/en/latest/example/general.html";
-            "#avoiding-expensive-sdist".format(setup)
+            "     https://tox.readthedocs.io/en/latest/example/general.html\n";
+            "  3. Configure tox to use an 
isolated_build".format(pyproject=pyproject, setup=setup)
+        )
+        raise SystemExit(1)
+    if not setup_check:
+        reporter.error(
+            "pyproject.toml file found.\n"
+            "To use a PEP 517 build-backend you are required to "
+            "configure tox to use an isolated_build:\n"
+            "https://tox.readthedocs.io/en/latest/example/package.html\n";
         )
         raise SystemExit(1)
     with session.newaction("GLOB", "packaging") as action:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/session/__init__.py 
new/tox-3.14.3/src/tox/session/__init__.py
--- old/tox-3.14.0/src/tox/session/__init__.py  2019-09-03 18:08:03.000000000 
+0200
+++ new/tox-3.14.3/src/tox/session/__init__.py  2019-12-28 11:58:14.000000000 
+0100
@@ -20,7 +20,7 @@
 from tox import reporter
 from tox.action import Action
 from tox.config import parseconfig
-from tox.config.parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY
+from tox.config.parallel import ENV_VAR_KEY_PRIVATE as 
PARALLEL_ENV_VAR_KEY_PRIVATE
 from tox.config.parallel import OFF_VALUE as PARALLEL_OFF
 from tox.logs.result import ResultLog
 from tox.reporter import update_default_reporter
@@ -212,7 +212,7 @@
         if self.config.option.sdistonly:
             return
 
-        within_parallel = PARALLEL_ENV_VAR_KEY in os.environ
+        within_parallel = PARALLEL_ENV_VAR_KEY_PRIVATE in os.environ
         try:
             if not within_parallel and self.config.option.parallel != 
PARALLEL_OFF:
                 run_parallel(self.config, self.venv_dict)
@@ -241,7 +241,7 @@
             return data
 
     def _summary(self):
-        is_parallel_child = PARALLEL_ENV_VAR_KEY in os.environ
+        is_parallel_child = PARALLEL_ENV_VAR_KEY_PRIVATE in os.environ
         if not is_parallel_child:
             reporter.separator("_", "summary", reporter.Verbosity.QUIET)
         exit_code = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/session/commands/provision.py 
new/tox-3.14.3/src/tox/session/commands/provision.py
--- old/tox-3.14.0/src/tox/session/commands/provision.py        2019-09-03 
18:08:03.000000000 +0200
+++ new/tox-3.14.3/src/tox/session/commands/provision.py        2019-12-28 
11:58:14.000000000 +0100
@@ -13,6 +13,7 @@
         try:
             env = os.environ.copy()
             env[str("TOX_PROVISION")] = str("1")
+            env.pop("__PYVENV_LAUNCHER__", None)
             action.popen(provision_args, redirect=False, report_fail=False, 
env=env)
             return 0
         except InvocationError as exception:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/session/commands/run/parallel.py 
new/tox-3.14.3/src/tox/session/commands/run/parallel.py
--- old/tox-3.14.0/src/tox/session/commands/run/parallel.py     2019-09-03 
18:08:03.000000000 +0200
+++ new/tox-3.14.3/src/tox/session/commands/run/parallel.py     2019-12-28 
11:58:14.000000000 +0100
@@ -4,7 +4,8 @@
 from threading import Event, Semaphore, Thread
 
 from tox import reporter
-from tox.config.parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY
+from tox.config.parallel import ENV_VAR_KEY_PRIVATE as 
PARALLEL_ENV_VAR_KEY_PRIVATE
+from tox.config.parallel import ENV_VAR_KEY_PUBLIC as 
PARALLEL_ENV_VAR_KEY_PUBLIC
 from tox.exception import InvocationError
 from tox.util.main import MAIN_FILE
 from tox.util.spinner import Spinner
@@ -37,7 +38,8 @@
             env_name = tox_env.envconfig.envname
             status = "skipped tests" if config.option.notest else None
             try:
-                os_env[str(PARALLEL_ENV_VAR_KEY)] = str(env_name)
+                os_env[str(PARALLEL_ENV_VAR_KEY_PRIVATE)] = str(env_name)
+                os_env[str(PARALLEL_ENV_VAR_KEY_PUBLIC)] = str(env_name)
                 args_sub = list(args)
                 if hasattr(tox_env, "package"):
                     args_sub.insert(position, str(tox_env.package))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/venv.py 
new/tox-3.14.3/src/tox/venv.py
--- old/tox-3.14.0/src/tox/venv.py      2019-09-03 18:08:03.000000000 +0200
+++ new/tox-3.14.3/src/tox/venv.py      2019-12-28 11:58:14.000000000 +0100
@@ -11,7 +11,7 @@
 import tox
 from tox import reporter
 from tox.action import Action
-from tox.config.parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY
+from tox.config.parallel import ENV_VAR_KEY_PRIVATE as 
PARALLEL_ENV_VAR_KEY_PRIVATE
 from tox.constants import INFO, PARALLEL_RESULT_JSON_PREFIX, 
PARALLEL_RESULT_JSON_SUFFIX
 from tox.package.local import resolve_package
 from tox.util.lock import get_unique_file
@@ -693,7 +693,7 @@
 
 
 def cleanup_for_venv(venv):
-    within_parallel = PARALLEL_ENV_VAR_KEY in os.environ
+    within_parallel = PARALLEL_ENV_VAR_KEY_PRIVATE in os.environ
     # if the directory exists and it doesn't look like a virtualenv, produce
     # an error
     if venv.path.exists():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox/version.py 
new/tox-3.14.3/src/tox/version.py
--- old/tox-3.14.0/src/tox/version.py   2019-09-03 18:08:18.000000000 +0200
+++ new/tox-3.14.3/src/tox/version.py   2019-12-28 11:58:34.000000000 +0100
@@ -1,4 +1,4 @@
 # coding: utf-8
 from __future__ import unicode_literals
 
-__version__ = '3.14.0'
+__version__ = '3.14.3'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox.egg-info/PKG-INFO 
new/tox-3.14.3/src/tox.egg-info/PKG-INFO
--- old/tox-3.14.0/src/tox.egg-info/PKG-INFO    2019-09-03 18:08:18.000000000 
+0200
+++ new/tox-3.14.3/src/tox.egg-info/PKG-INFO    2019-12-28 11:58:34.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: tox
-Version: 3.14.0
+Version: 3.14.3
 Summary: tox is a generic virtualenv management and test command line tool
 Home-page: http://tox.readthedocs.org
 Author: Holger Krekel, Oliver Bestwalter, Bernát Gábor and others
@@ -19,6 +19,7 @@
         
status](https://readthedocs.org/projects/tox/badge/?version=latest&style=flat-square)](https://tox.readthedocs.io/en/latest/?badge=latest)
         [![Code style:
         
black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+        
[![Downloads](https://pepy.tech/badge/tox/month)](https://pepy.tech/project/tox/month)
         
         <a href="https://tox.readthedocs.io";>
             <img 
src="https://raw.githubusercontent.com/tox-dev/tox/master/docs/_static/img/tox.png";
@@ -155,7 +156,7 @@
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
-Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
+Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7
 Description-Content-Type: text/markdown
-Provides-Extra: docs
 Provides-Extra: testing
+Provides-Extra: docs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox.egg-info/SOURCES.txt 
new/tox-3.14.3/src/tox.egg-info/SOURCES.txt
--- old/tox-3.14.0/src/tox.egg-info/SOURCES.txt 2019-09-03 18:08:18.000000000 
+0200
+++ new/tox-3.14.3/src/tox.egg-info/SOURCES.txt 2019-12-28 11:58:34.000000000 
+0100
@@ -117,6 +117,7 @@
 tests/conftest.py
 tests/integration/test_jython_env_create.py
 tests/integration/test_package_int.py
+tests/integration/test_parallel_inception.py
 tests/integration/test_parallel_interrupt.py
 tests/integration/test_provision_int.py
 tests/lib/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/src/tox.egg-info/requires.txt 
new/tox-3.14.3/src/tox.egg-info/requires.txt
--- old/tox-3.14.0/src/tox.egg-info/requires.txt        2019-09-03 
18:08:18.000000000 +0200
+++ new/tox-3.14.3/src/tox.egg-info/requires.txt        2019-12-28 
11:58:34.000000000 +0100
@@ -2,12 +2,15 @@
 pluggy<1,>=0.12.0
 py<2,>=1.4.17
 six<2,>=1.0.0
-virtualenv>=14.0.0
+virtualenv>=16.0.0
 toml>=0.9.4
 filelock<4,>=3.0.0
 
+[:platform_system == "Windows"]
+colorama>=0.4.1
+
 [:python_version < "3.8"]
-importlib-metadata<1,>=0.12
+importlib-metadata<2,>=0.12
 
 [docs]
 sphinx<3,>=2.0.0
@@ -22,7 +25,7 @@
 pytest-cov<3,>=2.5.1
 pytest-mock<2,>=1.10.0
 pytest-xdist<2,>=1.22.2
-pytest-randomly<2,>=1.2.3
+pytest-randomly<4,>=1.0.0
 flaky<4,>=3.4.0
 
 [testing:python_version != "3.4"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/tox-3.14.0/tests/integration/test_parallel_inception.py 
new/tox-3.14.3/tests/integration/test_parallel_inception.py
--- old/tox-3.14.0/tests/integration/test_parallel_inception.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/tox-3.14.3/tests/integration/test_parallel_inception.py 2019-12-28 
11:58:14.000000000 +0100
@@ -0,0 +1,52 @@
+def test_parallel_inception(initproj, cmd):
+    initproj(
+        "inception-1.2.3",
+        filedefs={
+            # the outer config just has one env: graham
+            "tox.ini": """
+            [tox]
+            envlist = graham
+            skipsdist = True
+
+            [testenv]
+            commands =
+                python runner.py
+            """,
+            # the inner config has 3 different envs, 1 of them is graham
+            "inner": {
+                "tox.ini": """
+                [tox]
+                envlist = graham,john,terry
+                skipsdist = True
+
+                [testenv]
+                commands =
+                    python -c 'pass'
+                """
+            },
+            # the outer test runs the inner tox and asserts all 3 envs were run
+            "runner.py": """
+            import os
+            import subprocess
+            import sys
+
+            os.chdir("inner")
+            p = subprocess.Popen(("tox"), stdout=subprocess.PIPE, 
universal_newlines=True)
+            stdout, _ = p.communicate()
+            sys.stdout.write(stdout)
+            assert "graham" in stdout
+            assert "john" in stdout
+            assert "terry" in stdout
+            """,
+        },
+        add_missing_setup_py=False,
+    )
+
+    result = cmd("-p", "all", "-o")
+    result.assert_success()
+
+    # 1 from the outer, 1 from the inner
+    assert result.out.count("graham: commands succeeded") == 2
+    # those gentlemen are only inside
+    assert result.out.count("john: commands succeeded") == 1
+    assert result.out.count("terry: commands succeeded") == 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/tox-3.14.0/tests/integration/test_parallel_interrupt.py 
new/tox-3.14.3/tests/integration/test_parallel_interrupt.py
--- old/tox-3.14.0/tests/integration/test_parallel_interrupt.py 2019-09-03 
18:08:03.000000000 +0200
+++ new/tox-3.14.3/tests/integration/test_parallel_interrupt.py 2019-12-28 
11:58:14.000000000 +0100
@@ -9,10 +9,12 @@
 from flaky import flaky
 from pathlib2 import Path
 
+from tox.constants import INFO
 from tox.util.main import MAIN_FILE
 
 
 @flaky(max_runs=3)
+@pytest.mark.skipif(INFO.IS_PYPY, reason="TODO: process numbers work 
differently on pypy")
 @pytest.mark.skipif(
     "sys.platform == 'win32'", reason="triggering SIGINT reliably on Windows 
is hard"
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/tests/integration/test_provision_int.py 
new/tox-3.14.3/tests/integration/test_provision_int.py
--- old/tox-3.14.0/tests/integration/test_provision_int.py      2019-09-03 
18:08:03.000000000 +0200
+++ new/tox-3.14.3/tests/integration/test_provision_int.py      2019-12-28 
11:58:14.000000000 +0100
@@ -6,6 +6,7 @@
 import pytest
 from pathlib2 import Path
 
+from tox.constants import INFO
 from tox.util.main import MAIN_FILE
 
 
@@ -41,6 +42,29 @@
     assert meta_python.exists()
 
 
+@pytest.mark.skipif("sys.platform == 'win32'", reason="pyenv does not exists 
on Windows")
+def test_provision_from_pyvenv(initproj, cmd, monkeypatch):
+    initproj(
+        "pkg123-0.7",
+        filedefs={
+            "tox.ini": """\
+                [tox]
+                skipsdist=True
+                minversion = 3.7.0
+                requires =
+                    setuptools == 40.6.3
+                [testenv]
+                commands=python -c "import sys; print(sys.executable); raise 
SystemExit(1)"
+            """
+        },
+    )
+    monkeypatch.setenv(str("__PYVENV_LAUNCHER__"), sys.executable)
+    result = cmd("-e", "py", "-vv")
+    result.assert_fail()
+    assert ".tox/.tox/bin/python -m virtualenv" in result.out
+
+
+@pytest.mark.skipif(INFO.IS_PYPY, reason="TODO: process numbers work 
differently on pypy")
 @pytest.mark.skipif(
     "sys.platform == 'win32'", reason="triggering SIGINT reliably on Windows 
is hard"
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/tests/unit/config/test_config.py 
new/tox-3.14.3/tests/unit/config/test_config.py
--- old/tox-3.14.0/tests/unit/config/test_config.py     2019-09-03 
18:08:03.000000000 +0200
+++ new/tox-3.14.3/tests/unit/config/test_config.py     2019-12-28 
11:58:14.000000000 +0100
@@ -19,7 +19,8 @@
     is_section_substitution,
     parseconfig,
 )
-from tox.config.parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY
+from tox.config.parallel import ENV_VAR_KEY_PRIVATE as 
PARALLEL_ENV_VAR_KEY_PRIVATE
+from tox.config.parallel import ENV_VAR_KEY_PUBLIC as 
PARALLEL_ENV_VAR_KEY_PUBLIC
 
 
 class TestVenvConfig:
@@ -836,7 +837,7 @@
             reader.getbool("key3")
         with pytest.raises(tox.exception.ConfigError) as excinfo:
             reader.getbool("key5")
-        msg, = excinfo.value.args
+        (msg,) = excinfo.value.args
         assert msg == "key5: boolean value 'yes' needs to be 'True' or 'False'"
 
 
@@ -1068,12 +1069,16 @@
             assert "MSYSTEM" in envconfig.passenv
         else:
             assert "TMPDIR" in envconfig.passenv
+        assert "CURL_CA_BUNDLE" in envconfig.passenv
         assert "PATH" in envconfig.passenv
         assert "PIP_INDEX_URL" in envconfig.passenv
+        assert "REQUESTS_CA_BUNDLE" in envconfig.passenv
+        assert "SSL_CERT_FILE" in envconfig.passenv
         assert "LANG" in envconfig.passenv
         assert "LANGUAGE" in envconfig.passenv
         assert "LD_LIBRARY_PATH" in envconfig.passenv
-        assert PARALLEL_ENV_VAR_KEY in envconfig.passenv
+        assert PARALLEL_ENV_VAR_KEY_PUBLIC in envconfig.passenv
+        assert PARALLEL_ENV_VAR_KEY_PRIVATE not in envconfig.passenv
         assert "A123A" in envconfig.passenv
         assert "A123B" in envconfig.passenv
 
@@ -2099,6 +2104,17 @@
         config = newconfig(args, "")
         assert config.option.quiet_level == expected
 
+    def test_substitution_jenkins_global(self, monkeypatch, newconfig):
+        monkeypatch.setenv("HUDSON_URL", "xyz")
+        config = newconfig(
+            """
+            [tox:tox]
+            envlist = py37
+        """,
+            filename="setup.cfg",
+        )
+        assert "py37" in config.envconfigs
+
     def test_substitution_jenkins_default(self, monkeypatch, newconfig):
         monkeypatch.setenv("HUDSON_URL", "xyz")
         config = newconfig(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/tests/unit/test_result.py 
new/tox-3.14.3/tests/unit/test_result.py
--- old/tox-3.14.0/tests/unit/test_result.py    2019-09-03 18:08:03.000000000 
+0200
+++ new/tox-3.14.3/tests/unit/test_result.py    2019-12-28 11:58:14.000000000 
+0100
@@ -72,7 +72,7 @@
     assert setuplog2.list == setuplog.list
 
 
-@pytest.mark.parametrize("exit_code", [None, 0, 5, 128 + signal.SIGTERM, 1234])
+@pytest.mark.parametrize("exit_code", [None, 0, 5, 128 + signal.SIGTERM, 1234, 
-15])
 @pytest.mark.parametrize("os_name", ["posix", "nt"])
 def test_invocation_error(exit_code, os_name, mocker, monkeypatch):
     monkeypatch.setattr(os, "name", value=os_name)
@@ -85,6 +85,8 @@
     assert call_args == mocker.call("InvocationError", "<command>", exit_code)
     if exit_code is None:
         assert "(exited with code" not in result
+    elif exit_code == -15:
+        assert "(exited with code -15 (SIGTERM))" in result
     else:
         assert "(exited with code %d)" % exit_code in result
         note = "Note: this might indicate a fatal error signal"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/tests/unit/test_venv.py 
new/tox-3.14.3/tests/unit/test_venv.py
--- old/tox-3.14.0/tests/unit/test_venv.py      2019-09-03 18:08:03.000000000 
+0200
+++ new/tox-3.14.3/tests/unit/test_venv.py      2019-12-28 11:58:14.000000000 
+0100
@@ -92,9 +92,9 @@
     )
     mocksession.new_config(config)
     venv = mocksession.getvenv("py123")
-    with mocker.patch.object(venv, "_pcall", side_effect=KeyboardInterrupt):
-        with pytest.raises(KeyboardInterrupt):
-            venv.setupenv()
+    mocker.patch.object(venv, "_pcall", side_effect=KeyboardInterrupt)
+    with pytest.raises(KeyboardInterrupt):
+        venv.setupenv()
 
     assert venv.status == "keyboardinterrupt"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/tests/unit/test_z_cmdline.py 
new/tox-3.14.3/tests/unit/test_z_cmdline.py
--- old/tox-3.14.0/tests/unit/test_z_cmdline.py 2019-09-03 18:08:03.000000000 
+0200
+++ new/tox-3.14.3/tests/unit/test_z_cmdline.py 2019-12-28 11:58:14.000000000 
+0100
@@ -6,6 +6,7 @@
 import sys
 import tempfile
 
+import pathlib2
 import py
 import pytest
 
@@ -411,7 +412,31 @@
     result = cmd()
     result.assert_fail()
     assert any(
-        re.match(r".*ERROR.*No setup.py file found.*", l) for l in 
result.outlines
+        re.match(r".*ERROR.*No pyproject.toml or setup.py file found.*", l)
+        for l in result.outlines
+    ), result.outlines
+
+
+def test_no_setup_py_exits_but_pyproject_toml_does(cmd, initproj):
+    initproj(
+        "pkg123-0.7",
+        filedefs={
+            "tox.ini": """
+            [testenv]
+            commands=python -c "2 + 2"
+        """
+        },
+    )
+    os.remove("setup.py")
+    pathlib2.Path("pyproject.toml").touch()
+    result = cmd()
+    result.assert_fail()
+    assert any(
+        re.match(r".*ERROR.*pyproject.toml file found.*", l) for l in 
result.outlines
+    ), result.outlines
+    assert any(
+        re.match(r".*To use a PEP 517 build-backend you are required to*", l)
+        for l in result.outlines
     ), result.outlines
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tox-3.14.0/tox.ini new/tox-3.14.3/tox.ini
--- old/tox-3.14.0/tox.ini      2019-09-03 18:08:03.000000000 +0200
+++ new/tox-3.14.3/tox.ini      2019-12-28 11:58:14.000000000 +0100
@@ -16,11 +16,19 @@
 
 [testenv]
 description = run the tests with pytest under {basepython}
-setenv = PIP_DISABLE_VERSION_CHECK = 1
-         COVERAGE_FILE = {env:COVERAGE_FILE:{toxworkdir}/.coverage.{envname}}
-         VIRTUALENV_NO_DOWNLOAD = 1
-passenv = http_proxy https_proxy no_proxy SSL_CERT_FILE PYTEST_*
-deps = pip == 19.1.1
+setenv =
+    PIP_DISABLE_PIP_VERSION_CHECK = 1
+    COVERAGE_FILE = {env:COVERAGE_FILE:{toxworkdir}/.coverage.{envname}}
+passenv =
+    CURL_CA_BUNDLE
+    http_proxy
+    https_proxy
+    no_proxy
+    REQUESTS_CA_BUNDLE
+    SSL_CERT_FILE
+    PYTEST_*
+    PIP_CACHE_DIR
+deps = pip >= 19.3.1
 extras = testing
 commands = pytest \
            --cov "{envsitepackagesdir}/tox" \
@@ -31,14 +39,14 @@
 
 [testenv:docs]
 description = invoke sphinx-build to build the HTML docs
-basepython = python3.7
+basepython = python3.8
 extras = docs
 commands = sphinx-build -d "{toxworkdir}/docs_doctree" docs 
"{toxworkdir}/docs_out" --color -W -bhtml {posargs}
            python -c 'import pathlib; print("documentation available under 
file://\{0\}".format(pathlib.Path(r"{toxworkdir}") / "docs_out" / 
"index.html"))'
 
 [testenv:package_description]
 description = check that the long description is valid
-basepython = python3.7
+basepython = python3.8
 deps = twine >= 1.12.1
        # TODO installing readme-renderer[md] should not be necessary
        readme-renderer[md] >= 24.0
@@ -50,15 +58,16 @@
 
 [testenv:fix_lint]
 description = format the code base to adhere to our styles, and complain about 
what we cannot do automatically
-basepython = python3.7
-passenv = {[testenv]passenv}
-          # without PROGRAMDATA cloning using git for Windows will fail with an
-          # `error setting certificate verify locations` error
-          PROGRAMDATA
+basepython = python3.8
+passenv =
+    {[testenv]passenv}
+    # without PROGRAMDATA cloning using git for Windows will fail with an 
`error setting certificate verify locations` error
+    PROGRAMDATA
+    PRE_COMMIT_HOME
 extras = lint
 deps = pre-commit >= 1.14.4, < 2
 skip_install = True
-commands = pre-commit run --all-files --show-diff-on-failure
+commands = pre-commit run --all-files --show-diff-on-failure {posargs}
            python -c 'import pathlib; print("hint: run \{\} install to add 
checks as pre-commit hook".format(pathlib.Path(r"{envdir}") / "bin" / 
"pre-commit"))'
 
 
@@ -66,7 +75,7 @@
 description = [run locally after tests]: combine coverage data and create 
report;
               generates a diff coverage against origin/master (can be changed 
by setting DIFF_AGAINST env var)
 deps = {[testenv]deps}
-       coverage >= 4.4.1, < 5
+       coverage >= 5.0.1, < 6
        diff_cover
 skip_install = True
 passenv = {[testenv]passenv}
@@ -83,10 +92,10 @@
 [testenv:exit_code]
 # to see how the InvocationError is displayed, use
 # PYTHONPATH=.:$PYTHONPATH python3 -m tox -e exit_code
-basepython = python3.7
+basepython = python3.8
 description = commands with several exit codes
 skip_install = True
-commands = python3.7 -c "import sys; sys.exit(139)"
+commands = python3.8 -c "import sys; sys.exit(139)"
 
 [testenv:X]
 description = print the positional arguments passed in with echo
@@ -143,7 +152,7 @@
 
 [testenv:release]
 description = do a release, required posarg of the version number
-basepython = python3.7
+basepython = python3.8
 passenv = *
 deps = gitpython >= 2.1.10
        towncrier >= 18.5.0
@@ -152,7 +161,7 @@
 
 [testenv:notify]
 description = notify people about the release of the library
-basepython = python3.7
+basepython = python3.8
 skip_install = true
 passenv = *
 deps = gitpython >= 2.1.10


Reply via email to