Tox: Unable to run tox 3.13.1

Created on 26 Jun 2019  ·  18Comments  ·  Source: tox-dev/tox

Having issues with tox 3.13.1 in my environment. 3.12.x works flawlessly. Others in my company are reporting no issues with tox launched from a py3 context. Unable to reproduce in another project yet

python: 2.7
environ: py27
os: ubuntu 16.02 docker

The process fails after creating a .tox/.tox/ folder and never generates the expected .tox/py## virtualenv folders

tox.ini

[tox]
envlist = py27

[testenv]
deps = 
    pytest
    pytest-cov==2.6.0
    cython
    numpy
    six
setenv =
    PYTHONHASHSEED = 0
commands =
    pytest [REDACTED_PROJECT_NAME]/tests --junitxml=test-results/junit-{envname}.xml

tox --sitepackages -rvv

using tox.ini: /home/[REDACTED_PROJECT_PATH]/tox.ini (pid 1)
could not satisfy requires MissingDependency(<Requirement('tox>=3.13.1')>,)
using tox-3.13.1 from /usr/local/lib/python2.7/dist-packages/tox/__init__.pyc (pid 1)
.tox start: getenv /home/[REDACTED_PROJECT_PATH]/.tox/.tox
.tox cannot reuse: -r flag
.tox create: /home/[REDACTED_PROJECT_PATH]/.tox/.tox
/usr/bin/python (/usr/bin/python) is {u'executable': u'/usr/bin/python', u'name': u'python', u'version_info': [2, 7, 12, u'final', 0], u'sysplatform': u'linux2', u'version': u'2.7.12 (default, Nov 12 2018, 14:36:49) \n[GCC 5.4.0 20160609]', u'is_64': True}
.tox uses /usr/bin/python
setting PATH=/home/[REDACTED_PROJECT_PATH]/.tox/.tox/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[12] /home/[REDACTED_PROJECT_PATH]/.tox$ /usr/bin/python -m virtualenv --system-site-packages --no-download --python /usr/bin/python .tox
Already using interpreter /usr/bin/python
New python executable in /home/[REDACTED_PROJECT_PATH]/.tox/.tox/bin/python
Installing setuptools, pip, wheel...
done.
.tox installdeps: tox >= 3.13.1
setting PATH=/home/[REDACTED_PROJECT_PATH]/.tox/.tox/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[21] /home/[REDACTED_PROJECT_PATH]l$ /home/[REDACTED_PROJECT_PATH]/.tox/.tox/bin/python -m pip install 'tox >= 3.13.1'
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Looking in indexes: https://pypi01.cid.cs.sys/simple/, https://pypi.python.org/simple
Requirement already satisfied: tox>=3.13.1 in /usr/local/lib/python2.7/dist-packages (3.13.1)
Requirement already satisfied: packaging>=14 in /usr/local/lib/python2.7/dist-packages (from tox>=3.13.1) (19.0)
Requirement already satisfied: six<2,>=1.0.0 in /usr/local/lib/python2.7/dist-packages (from tox>=3.13.1) (1.12.0)
Requirement already satisfied: pluggy<1,>=0.12.0 in /usr/local/lib/python2.7/dist-packages (from tox>=3.13.1) (0.12.0)
Requirement already satisfied: toml>=0.9.4 in /usr/local/lib/python2.7/dist-packages (from tox>=3.13.1) (0.10.0)
Requirement already satisfied: virtualenv>=14.0.0 in /usr/local/lib/python2.7/dist-packages (from tox>=3.13.1) (16.6.1)
Requirement already satisfied: py<2,>=1.4.17 in /usr/local/lib/python2.7/dist-packages (from tox>=3.13.1) (1.8.0)
Requirement already satisfied: importlib-metadata<1,>=0.12 in /usr/local/lib/python2.7/dist-packages (from tox>=3.13.1) (0.18)
Requirement already satisfied: filelock<4,>=3.0.0 in /usr/local/lib/python2.7/dist-packages (from tox>=3.13.1) (3.0.12)
Requirement already satisfied: pyparsing>=2.0.2 in /usr/local/lib/python2.7/dist-packages (from packaging>=14->tox>=3.13.1) (2.4.0)
Requirement already satisfied: contextlib2; python_version < "3" in /usr/local/lib/python2.7/dist-packages (from importlib-metadata<1,>=0.12->tox>=3.13.1) (0.5.5)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python2.7/dist-packages (from importlib-metadata<1,>=0.12->tox>=3.13.1) (0.5.1)
Requirement already satisfied: pathlib2; python_version == "3.4.*" or python_version < "3" in /usr/local/lib/python2.7/dist-packages (from importlib-metadata<1,>=0.12->tox>=3.13.1) (2.3.3)
Requirement already satisfied: configparser>=3.5; python_version < "3" in /usr/local/lib/python2.7/dist-packages (from importlib-metadata<1,>=0.12->tox>=3.13.1) (3.7.4)
Requirement already satisfied: scandir; python_version < "3.5" in /usr/local/lib/python2.7/dist-packages (from pathlib2; python_version == "3.4.*" or python_version < "3"->importlib-metadata<1,>=0.12->tox>=3.13.1) (1.10.0)
.tox finish: getenv /home/[REDACTED_PROJECT_PATH]/.tox/.tox after 24.97 seconds
.tox start: finishvenv 
write config to /home/[REDACTED_PROJECT_PATH]/.tox/.tox/.tox-config1 as 'fdfa6acc26b1a187ba86772f74812876 /usr/bin/python\n3.13.1 1 0 0\n00000000000000000000000000000000 tox >= 3.13.1'
.tox finish: finishvenv  after 0.02 seconds
.tox start: provision 
[28] /home/[REDACTED_PROJECT_PATH]$ /home/[REDACTED_PROJECT_PATH]/.tox/.tox/bin/python -m tox --sitepackages -rvv
using tox.ini: /home/[REDACTED_PROJECT_PATH]/tox.ini (pid 28)
  removing /home/[REDACTED_PROJECT_PATH]/.tox/log
could not satisfy requires MissingDependency(<Requirement('tox>=3.13.1')>,)
using tox-3.13.1 from /usr/local/lib/python2.7/dist-packages/tox/__init__.pyc (pid 28)
.tox start: getenv /home/[REDACTED_PROJECT_PATH]/.tox/.tox
.tox cannot reuse: -r flag
.tox recreate: /home/[REDACTED_PROJECT_PATH]/.tox/.tox
/home/[REDACTED_PROJECT_PATH]/.tox/.tox/bin/python (/home/[REDACTED_PROJECT_PATH]/.tox/.tox/bin/python) is {u'executable': u'/home/[REDACTED_PROJECT_PATH]/.tox/.tox/bin/python', u'name': u'python', u'version_info': [2, 7, 12, u'final', 0], u'sysplatform': u'linux2', u'version': u'2.7.12 (default, Nov 12 2018, 14:36:49) \n[GCC 5.4.0 20160609]', u'is_64': True}
.tox uses /home/[REDACTED_PROJECT_PATH]/.tox/.tox/bin/python
  removing /home/[REDACTED_PROJECT_PATH]/.tox/.tox
setting PATH=/home/[REDACTED_PROJECT_PATH]/.tox/.tox/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/lib/python2.7/dist-packages/tox/__main__.py", line 4, in <module>
    tox.cmdline()
  File "/usr/local/lib/python2.7/dist-packages/tox/session/__init__.py", line 44, in cmdline
    main(args)
  File "/usr/local/lib/python2.7/dist-packages/tox/session/__init__.py", line 68, in main
    exit_code = session.runcommand()
  File "/usr/local/lib/python2.7/dist-packages/tox/session/__init__.py", line 182, in runcommand
    return provision_tox(provision_tox_venv, self.config.args)
  File "/usr/local/lib/python2.7/dist-packages/tox/session/commands/provision.py", line 10, in provision_tox
    ensure_meta_env_up_to_date(provision_venv)
  File "/usr/local/lib/python2.7/dist-packages/tox/session/commands/provision.py", line 23, in ensure_meta_env_up_to_date
    if provision_venv.setupenv():
  File "/usr/local/lib/python2.7/dist-packages/tox/venv.py", line 594, in setupenv
    status = self.update(action=action)
  File "/usr/local/lib/python2.7/dist-packages/tox/venv.py", line 252, in update
    self.hook.tox_testenv_create(action=action, venv=self)
  File "/usr/local/lib/python2.7/dist-packages/pluggy/hooks.py", line 289, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "/usr/local/lib/python2.7/dist-packages/pluggy/manager.py", line 87, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/usr/local/lib/python2.7/dist-packages/pluggy/manager.py", line 81, in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
  File "/usr/local/lib/python2.7/dist-packages/pluggy/callers.py", line 208, in _multicall
    return outcome.get_result()
  File "/usr/local/lib/python2.7/dist-packages/pluggy/callers.py", line 81, in get_result
    _reraise(*ex)  # noqa
  File "/usr/local/lib/python2.7/dist-packages/pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "/usr/local/lib/python2.7/dist-packages/tox/venv.py", line 687, in tox_testenv_create
    redirect=reporter.verbosity() < reporter.Verbosity.DEBUG,
  File "/usr/local/lib/python2.7/dist-packages/tox/venv.py", line 574, in _pcall
    report_fail=not is_test_command,
  File "/usr/local/lib/python2.7/dist-packages/tox/action.py", line 93, in popen
    else 0
  File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1342, in _execute_child
    child_exception = pickle.loads(data)
  File "/usr/lib/python2.7/pickle.py", line 1388, in loads
    return Unpickler(file).load()
  File "/usr/lib/python2.7/pickle.py", line 864, in load
    dispatch[key](self)
  File "/usr/lib/python2.7/pickle.py", line 977, in load_string
    self.append(rep.decode("string-escape"))
LookupError: unknown encoding: string-escape
.tox finish: provision  after 8.21 seconds
normal reproducer

Most helpful comment

Same thing on my side, tox 3.13.0 and 3.13.1 are creating a ".tox/.tox/" folder, which makes tox to crash few steps later. I had to revert to 3.12.1 which is working properly.

All 18 comments

Same thing on my side, tox 3.13.0 and 3.13.1 are creating a ".tox/.tox/" folder, which makes tox to crash few steps later. I had to revert to 3.12.1 which is working properly.

Must be related some dependency of tox not being satisfied. we need to fix this, but in the meantime if you force reinstall dependencies should fix it for you👌

I'll take a look at this one

@lockefox you mentioned docker -- could you perhaps provide a Dockerfile reproducing the issue?

Guys, can you please provide output for tox -r -v -v? Thanks!

Is this fixed with 3.13.2?

Something I've been hitting still and is ultra annoying:

ERROR: cowardly refusing to delete envdir (it does not look like a virtualenv): /git/github/virtualenv/.tox/.package 👍

The magic feature for refusing to delete the envdir needs some fixing.

weird, what's inside of .tox/.package?

It's what we use to generate isolated builds, looks fine for me. Can we disable this check for anything inside the toxworkdir please?

.tox/.package
├── bin
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── activate.ps1
│   ├── activate_this.py
│   ├── activate.xsh
│   ├── easy_install
│   ├── easy_install-3.8
│   ├── pip
│   ├── pip3
│   ├── pip3.8
│   ├── python
│   ├── python3 -> python
│   ├── python3.8 -> python
│   ├── python-config
│   └── wheel
├── lib
│   └── python3.8
│       ├── abc.py -> /usr/lib/python3.8/abc.py
│       ├── base64.py -> /usr/lib/python3.8/base64.py
│       ├── bisect.py -> /usr/lib/python3.8/bisect.py
│       ├── _bootlocale.py -> /usr/lib/python3.8/_bootlocale.py
│       ├── codecs.py -> /usr/lib/python3.8/codecs.py
│       ├── collections -> /usr/lib/python3.8/collections
│       ├── _collections_abc.py -> /usr/lib/python3.8/_collections_abc.py
│       ├── copy.py -> /usr/lib/python3.8/copy.py
│       ├── copyreg.py -> /usr/lib/python3.8/copyreg.py
│       ├── distutils
│       │   ├── distutils.cfg
│       │   ├── __init__.py
│       │   └── __pycache__
│       │       └── __init__.cpython-38.pyc
│       ├── _dummy_thread.py -> /usr/lib/python3.8/_dummy_thread.py
│       ├── encodings -> /usr/lib/python3.8/encodings
│       ├── enum.py -> /usr/lib/python3.8/enum.py
│       ├── fnmatch.py -> /usr/lib/python3.8/fnmatch.py
│       ├── functools.py -> /usr/lib/python3.8/functools.py
│       ├── __future__.py -> /usr/lib/python3.8/__future__.py
│       ├── genericpath.py -> /usr/lib/python3.8/genericpath.py
│       ├── hashlib.py -> /usr/lib/python3.8/hashlib.py
│       ├── heapq.py -> /usr/lib/python3.8/heapq.py
│       ├── hmac.py -> /usr/lib/python3.8/hmac.py
│       ├── importlib -> /usr/lib/python3.8/importlib
│       ├── imp.py -> /usr/lib/python3.8/imp.py
│       ├── io.py -> /usr/lib/python3.8/io.py
│       ├── keyword.py -> /usr/lib/python3.8/keyword.py
│       ├── lib-dynload -> /usr/lib/python3.8/lib-dynload
│       ├── LICENSE.txt -> /usr/lib/python3.8/LICENSE.txt
│       ├── linecache.py -> /usr/lib/python3.8/linecache.py
│       ├── locale.py -> /usr/lib/python3.8/locale.py
│       ├── no-global-site-packages.txt
│       ├── ntpath.py -> /usr/lib/python3.8/ntpath.py
│       ├── operator.py -> /usr/lib/python3.8/operator.py
│       ├── orig-prefix.txt
│       ├── os.py -> /usr/lib/python3.8/os.py
│       ├── posixpath.py -> /usr/lib/python3.8/posixpath.py
│       ├── __pycache__
│       │   ├── abc.cpython-38.pyc
│       │   ├── base64.cpython-38.pyc
│       │   ├── bisect.cpython-38.pyc
│       │   ├── _bootlocale.cpython-38.pyc
│       │   ├── codecs.cpython-38.pyc
│       │   ├── _collections_abc.cpython-38.pyc
│       │   ├── copy.cpython-38.pyc
│       │   ├── copyreg.cpython-38.pyc
│       │   ├── enum.cpython-38.pyc
│       │   ├── fnmatch.cpython-38.pyc
│       │   ├── functools.cpython-38.pyc
│       │   ├── __future__.cpython-38.pyc
│       │   ├── genericpath.cpython-38.pyc
│       │   ├── hashlib.cpython-38.pyc
│       │   ├── heapq.cpython-38.pyc
│       │   ├── hmac.cpython-38.pyc
│       │   ├── imp.cpython-38.pyc
│       │   ├── io.cpython-38.pyc
│       │   ├── keyword.cpython-38.pyc
│       │   ├── linecache.cpython-38.pyc
│       │   ├── locale.cpython-38.pyc
│       │   ├── ntpath.cpython-38.pyc
│       │   ├── operator.cpython-38.pyc
│       │   ├── os.cpython-38.pyc
│       │   ├── posixpath.cpython-38.pyc
│       │   ├── random.cpython-38.pyc
│       │   ├── re.cpython-38.pyc
│       │   ├── reprlib.cpython-38.pyc
│       │   ├── shutil.cpython-38.pyc
│       │   ├── site.cpython-38.pyc
│       │   ├── sre_compile.cpython-38.pyc
│       │   ├── sre_constants.cpython-38.pyc
│       │   ├── sre_parse.cpython-38.pyc
│       │   ├── stat.cpython-38.pyc
│       │   ├── struct.cpython-38.pyc
│       │   ├── tarfile.cpython-38.pyc
│       │   ├── tempfile.cpython-38.pyc
│       │   ├── token.cpython-38.pyc
│       │   ├── tokenize.cpython-38.pyc
│       │   ├── types.cpython-38.pyc
│       │   ├── warnings.cpython-38.pyc
│       │   ├── weakref.cpython-38.pyc
│       │   └── _weakrefset.cpython-38.pyc
│       ├── random.py -> /usr/lib/python3.8/random.py
│       ├── reprlib.py -> /usr/lib/python3.8/reprlib.py
│       ├── re.py -> /usr/lib/python3.8/re.py
│       ├── rlcompleter.py -> /usr/lib/python3.8/rlcompleter.py
│       ├── shutil.py -> /usr/lib/python3.8/shutil.py
│       ├── site-packages
│       │   ├── easy_install.py
│       │   ├── pip
│       │   │   ├── __init__.py
│       │   │   ├── _internal
│       │   │   │   ├── build_env.py
│       │   │   │   ├── cache.py
│       │   │   │   ├── cli
│       │   │   │   │   ├── autocompletion.py
│       │   │   │   │   ├── base_command.py
│       │   │   │   │   ├── cmdoptions.py
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── main_parser.py
│       │   │   │   │   ├── parser.py
│       │   │   │   │   ├── __pycache__
│       │   │   │   │   │   ├── autocompletion.cpython-38.pyc
│       │   │   │   │   │   ├── base_command.cpython-38.pyc
│       │   │   │   │   │   ├── cmdoptions.cpython-38.pyc
│       │   │   │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   │   │   ├── main_parser.cpython-38.pyc
│       │   │   │   │   │   ├── parser.cpython-38.pyc
│       │   │   │   │   │   └── status_codes.cpython-38.pyc
│       │   │   │   │   └── status_codes.py
│       │   │   │   ├── commands
│       │   │   │   │   ├── check.py
│       │   │   │   │   ├── completion.py
│       │   │   │   │   ├── configuration.py
│       │   │   │   │   ├── download.py
│       │   │   │   │   ├── freeze.py
│       │   │   │   │   ├── hash.py
│       │   │   │   │   ├── help.py
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── install.py
│       │   │   │   │   ├── list.py
│       │   │   │   │   ├── __pycache__
│       │   │   │   │   │   ├── check.cpython-38.pyc
│       │   │   │   │   │   ├── completion.cpython-38.pyc
│       │   │   │   │   │   ├── configuration.cpython-38.pyc
│       │   │   │   │   │   ├── download.cpython-38.pyc
│       │   │   │   │   │   ├── freeze.cpython-38.pyc
│       │   │   │   │   │   ├── hash.cpython-38.pyc
│       │   │   │   │   │   ├── help.cpython-38.pyc
│       │   │   │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   │   │   ├── install.cpython-38.pyc
│       │   │   │   │   │   ├── list.cpython-38.pyc
│       │   │   │   │   │   ├── search.cpython-38.pyc
│       │   │   │   │   │   ├── show.cpython-38.pyc
│       │   │   │   │   │   ├── uninstall.cpython-38.pyc
│       │   │   │   │   │   └── wheel.cpython-38.pyc
│       │   │   │   │   ├── search.py
│       │   │   │   │   ├── show.py
│       │   │   │   │   ├── uninstall.py
│       │   │   │   │   └── wheel.py
│       │   │   │   ├── configuration.py
│       │   │   │   ├── download.py
│       │   │   │   ├── exceptions.py
│       │   │   │   ├── index.py
│       │   │   │   ├── __init__.py
│       │   │   │   ├── locations.py
│       │   │   │   ├── models
│       │   │   │   │   ├── candidate.py
│       │   │   │   │   ├── format_control.py
│       │   │   │   │   ├── index.py
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── link.py
│       │   │   │   │   └── __pycache__
│       │   │   │   │       ├── candidate.cpython-38.pyc
│       │   │   │   │       ├── format_control.cpython-38.pyc
│       │   │   │   │       ├── index.cpython-38.pyc
│       │   │   │   │       ├── __init__.cpython-38.pyc
│       │   │   │   │       └── link.cpython-38.pyc
│       │   │   │   ├── operations
│       │   │   │   │   ├── check.py
│       │   │   │   │   ├── freeze.py
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── prepare.py
│       │   │   │   │   └── __pycache__
│       │   │   │   │       ├── check.cpython-38.pyc
│       │   │   │   │       ├── freeze.cpython-38.pyc
│       │   │   │   │       ├── __init__.cpython-38.pyc
│       │   │   │   │       └── prepare.cpython-38.pyc
│       │   │   │   ├── pep425tags.py
│       │   │   │   ├── __pycache__
│       │   │   │   │   ├── build_env.cpython-38.pyc
│       │   │   │   │   ├── cache.cpython-38.pyc
│       │   │   │   │   ├── configuration.cpython-38.pyc
│       │   │   │   │   ├── download.cpython-38.pyc
│       │   │   │   │   ├── exceptions.cpython-38.pyc
│       │   │   │   │   ├── index.cpython-38.pyc
│       │   │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   │   ├── locations.cpython-38.pyc
│       │   │   │   │   ├── pep425tags.cpython-38.pyc
│       │   │   │   │   ├── pyproject.cpython-38.pyc
│       │   │   │   │   ├── resolve.cpython-38.pyc
│       │   │   │   │   └── wheel.cpython-38.pyc
│       │   │   │   ├── pyproject.py
│       │   │   │   ├── req
│       │   │   │   │   ├── constructors.py
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── __pycache__
│       │   │   │   │   │   ├── constructors.cpython-38.pyc
│       │   │   │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   │   │   ├── req_file.cpython-38.pyc
│       │   │   │   │   │   ├── req_install.cpython-38.pyc
│       │   │   │   │   │   ├── req_set.cpython-38.pyc
│       │   │   │   │   │   ├── req_tracker.cpython-38.pyc
│       │   │   │   │   │   └── req_uninstall.cpython-38.pyc
│       │   │   │   │   ├── req_file.py
│       │   │   │   │   ├── req_install.py
│       │   │   │   │   ├── req_set.py
│       │   │   │   │   ├── req_tracker.py
│       │   │   │   │   └── req_uninstall.py
│       │   │   │   ├── resolve.py
│       │   │   │   ├── utils
│       │   │   │   │   ├── appdirs.py
│       │   │   │   │   ├── compat.py
│       │   │   │   │   ├── deprecation.py
│       │   │   │   │   ├── encoding.py
│       │   │   │   │   ├── filesystem.py
│       │   │   │   │   ├── glibc.py
│       │   │   │   │   ├── hashes.py
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── logging.py
│       │   │   │   │   ├── misc.py
│       │   │   │   │   ├── models.py
│       │   │   │   │   ├── outdated.py
│       │   │   │   │   ├── packaging.py
│       │   │   │   │   ├── __pycache__
│       │   │   │   │   │   ├── appdirs.cpython-38.pyc
│       │   │   │   │   │   ├── compat.cpython-38.pyc
│       │   │   │   │   │   ├── deprecation.cpython-38.pyc
│       │   │   │   │   │   ├── encoding.cpython-38.pyc
│       │   │   │   │   │   ├── filesystem.cpython-38.pyc
│       │   │   │   │   │   ├── glibc.cpython-38.pyc
│       │   │   │   │   │   ├── hashes.cpython-38.pyc
│       │   │   │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   │   │   ├── logging.cpython-38.pyc
│       │   │   │   │   │   ├── misc.cpython-38.pyc
│       │   │   │   │   │   ├── models.cpython-38.pyc
│       │   │   │   │   │   ├── outdated.cpython-38.pyc
│       │   │   │   │   │   ├── packaging.cpython-38.pyc
│       │   │   │   │   │   ├── setuptools_build.cpython-38.pyc
│       │   │   │   │   │   ├── temp_dir.cpython-38.pyc
│       │   │   │   │   │   ├── typing.cpython-38.pyc
│       │   │   │   │   │   └── ui.cpython-38.pyc
│       │   │   │   │   ├── setuptools_build.py
│       │   │   │   │   ├── temp_dir.py
│       │   │   │   │   ├── typing.py
│       │   │   │   │   └── ui.py
│       │   │   │   ├── vcs
│       │   │   │   │   ├── bazaar.py
│       │   │   │   │   ├── git.py
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── mercurial.py
│       │   │   │   │   ├── __pycache__
│       │   │   │   │   │   ├── bazaar.cpython-38.pyc
│       │   │   │   │   │   ├── git.cpython-38.pyc
│       │   │   │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   │   │   ├── mercurial.cpython-38.pyc
│       │   │   │   │   │   └── subversion.cpython-38.pyc
│       │   │   │   │   └── subversion.py
│       │   │   │   └── wheel.py
│       │   │   ├── __main__.py
│       │   │   ├── __pycache__
│       │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   └── __main__.cpython-38.pyc
│       │   │   └── _vendor
│       │   │       ├── appdirs.py
│       │   │       ├── cachecontrol
│       │   │       │   ├── adapter.py
│       │   │       │   ├── cache.py
│       │   │       │   ├── caches
│       │   │       │   │   ├── file_cache.py
│       │   │       │   │   ├── __init__.py
│       │   │       │   │   ├── __pycache__
│       │   │       │   │   │   ├── file_cache.cpython-38.pyc
│       │   │       │   │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   │   └── redis_cache.cpython-38.pyc
│       │   │       │   │   └── redis_cache.py
│       │   │       │   ├── _cmd.py
│       │   │       │   ├── compat.py
│       │   │       │   ├── controller.py
│       │   │       │   ├── filewrapper.py
│       │   │       │   ├── heuristics.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── adapter.cpython-38.pyc
│       │   │       │   │   ├── cache.cpython-38.pyc
│       │   │       │   │   ├── _cmd.cpython-38.pyc
│       │   │       │   │   ├── compat.cpython-38.pyc
│       │   │       │   │   ├── controller.cpython-38.pyc
│       │   │       │   │   ├── filewrapper.cpython-38.pyc
│       │   │       │   │   ├── heuristics.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── serialize.cpython-38.pyc
│       │   │       │   │   └── wrapper.cpython-38.pyc
│       │   │       │   ├── serialize.py
│       │   │       │   └── wrapper.py
│       │   │       ├── certifi
│       │   │       │   ├── cacert.pem
│       │   │       │   ├── core.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── __main__.py
│       │   │       │   └── __pycache__
│       │   │       │       ├── core.cpython-38.pyc
│       │   │       │       ├── __init__.cpython-38.pyc
│       │   │       │       └── __main__.cpython-38.pyc
│       │   │       ├── chardet
│       │   │       │   ├── big5freq.py
│       │   │       │   ├── big5prober.py
│       │   │       │   ├── chardistribution.py
│       │   │       │   ├── charsetgroupprober.py
│       │   │       │   ├── charsetprober.py
│       │   │       │   ├── cli
│       │   │       │   │   ├── chardetect.py
│       │   │       │   │   ├── __init__.py
│       │   │       │   │   └── __pycache__
│       │   │       │   │       ├── chardetect.cpython-38.pyc
│       │   │       │   │       └── __init__.cpython-38.pyc
│       │   │       │   ├── codingstatemachine.py
│       │   │       │   ├── compat.py
│       │   │       │   ├── cp949prober.py
│       │   │       │   ├── enums.py
│       │   │       │   ├── escprober.py
│       │   │       │   ├── escsm.py
│       │   │       │   ├── eucjpprober.py
│       │   │       │   ├── euckrfreq.py
│       │   │       │   ├── euckrprober.py
│       │   │       │   ├── euctwfreq.py
│       │   │       │   ├── euctwprober.py
│       │   │       │   ├── gb2312freq.py
│       │   │       │   ├── gb2312prober.py
│       │   │       │   ├── hebrewprober.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── jisfreq.py
│       │   │       │   ├── jpcntx.py
│       │   │       │   ├── langbulgarianmodel.py
│       │   │       │   ├── langcyrillicmodel.py
│       │   │       │   ├── langgreekmodel.py
│       │   │       │   ├── langhebrewmodel.py
│       │   │       │   ├── langhungarianmodel.py
│       │   │       │   ├── langthaimodel.py
│       │   │       │   ├── langturkishmodel.py
│       │   │       │   ├── latin1prober.py
│       │   │       │   ├── mbcharsetprober.py
│       │   │       │   ├── mbcsgroupprober.py
│       │   │       │   ├── mbcssm.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── big5freq.cpython-38.pyc
│       │   │       │   │   ├── big5prober.cpython-38.pyc
│       │   │       │   │   ├── chardistribution.cpython-38.pyc
│       │   │       │   │   ├── charsetgroupprober.cpython-38.pyc
│       │   │       │   │   ├── charsetprober.cpython-38.pyc
│       │   │       │   │   ├── codingstatemachine.cpython-38.pyc
│       │   │       │   │   ├── compat.cpython-38.pyc
│       │   │       │   │   ├── cp949prober.cpython-38.pyc
│       │   │       │   │   ├── enums.cpython-38.pyc
│       │   │       │   │   ├── escprober.cpython-38.pyc
│       │   │       │   │   ├── escsm.cpython-38.pyc
│       │   │       │   │   ├── eucjpprober.cpython-38.pyc
│       │   │       │   │   ├── euckrfreq.cpython-38.pyc
│       │   │       │   │   ├── euckrprober.cpython-38.pyc
│       │   │       │   │   ├── euctwfreq.cpython-38.pyc
│       │   │       │   │   ├── euctwprober.cpython-38.pyc
│       │   │       │   │   ├── gb2312freq.cpython-38.pyc
│       │   │       │   │   ├── gb2312prober.cpython-38.pyc
│       │   │       │   │   ├── hebrewprober.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── jisfreq.cpython-38.pyc
│       │   │       │   │   ├── jpcntx.cpython-38.pyc
│       │   │       │   │   ├── langbulgarianmodel.cpython-38.pyc
│       │   │       │   │   ├── langcyrillicmodel.cpython-38.pyc
│       │   │       │   │   ├── langgreekmodel.cpython-38.pyc
│       │   │       │   │   ├── langhebrewmodel.cpython-38.pyc
│       │   │       │   │   ├── langhungarianmodel.cpython-38.pyc
│       │   │       │   │   ├── langthaimodel.cpython-38.pyc
│       │   │       │   │   ├── langturkishmodel.cpython-38.pyc
│       │   │       │   │   ├── latin1prober.cpython-38.pyc
│       │   │       │   │   ├── mbcharsetprober.cpython-38.pyc
│       │   │       │   │   ├── mbcsgroupprober.cpython-38.pyc
│       │   │       │   │   ├── mbcssm.cpython-38.pyc
│       │   │       │   │   ├── sbcharsetprober.cpython-38.pyc
│       │   │       │   │   ├── sbcsgroupprober.cpython-38.pyc
│       │   │       │   │   ├── sjisprober.cpython-38.pyc
│       │   │       │   │   ├── universaldetector.cpython-38.pyc
│       │   │       │   │   ├── utf8prober.cpython-38.pyc
│       │   │       │   │   └── version.cpython-38.pyc
│       │   │       │   ├── sbcharsetprober.py
│       │   │       │   ├── sbcsgroupprober.py
│       │   │       │   ├── sjisprober.py
│       │   │       │   ├── universaldetector.py
│       │   │       │   ├── utf8prober.py
│       │   │       │   └── version.py
│       │   │       ├── colorama
│       │   │       │   ├── ansi.py
│       │   │       │   ├── ansitowin32.py
│       │   │       │   ├── initialise.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── ansi.cpython-38.pyc
│       │   │       │   │   ├── ansitowin32.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── initialise.cpython-38.pyc
│       │   │       │   │   ├── win32.cpython-38.pyc
│       │   │       │   │   └── winterm.cpython-38.pyc
│       │   │       │   ├── win32.py
│       │   │       │   └── winterm.py
│       │   │       ├── distlib
│       │   │       │   ├── _backport
│       │   │       │   │   ├── __init__.py
│       │   │       │   │   ├── misc.py
│       │   │       │   │   ├── __pycache__
│       │   │       │   │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   │   ├── misc.cpython-38.pyc
│       │   │       │   │   │   ├── shutil.cpython-38.pyc
│       │   │       │   │   │   ├── sysconfig.cpython-38.pyc
│       │   │       │   │   │   └── tarfile.cpython-38.pyc
│       │   │       │   │   ├── shutil.py
│       │   │       │   │   ├── sysconfig.cfg
│       │   │       │   │   ├── sysconfig.py
│       │   │       │   │   └── tarfile.py
│       │   │       │   ├── compat.py
│       │   │       │   ├── database.py
│       │   │       │   ├── index.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── locators.py
│       │   │       │   ├── manifest.py
│       │   │       │   ├── markers.py
│       │   │       │   ├── metadata.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── compat.cpython-38.pyc
│       │   │       │   │   ├── database.cpython-38.pyc
│       │   │       │   │   ├── index.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── locators.cpython-38.pyc
│       │   │       │   │   ├── manifest.cpython-38.pyc
│       │   │       │   │   ├── markers.cpython-38.pyc
│       │   │       │   │   ├── metadata.cpython-38.pyc
│       │   │       │   │   ├── resources.cpython-38.pyc
│       │   │       │   │   ├── scripts.cpython-38.pyc
│       │   │       │   │   ├── util.cpython-38.pyc
│       │   │       │   │   ├── version.cpython-38.pyc
│       │   │       │   │   └── wheel.cpython-38.pyc
│       │   │       │   ├── resources.py
│       │   │       │   ├── scripts.py
│       │   │       │   ├── t32.exe
│       │   │       │   ├── t64.exe
│       │   │       │   ├── util.py
│       │   │       │   ├── version.py
│       │   │       │   ├── w32.exe
│       │   │       │   ├── w64.exe
│       │   │       │   └── wheel.py
│       │   │       ├── distro.py
│       │   │       ├── html5lib
│       │   │       │   ├── constants.py
│       │   │       │   ├── filters
│       │   │       │   │   ├── alphabeticalattributes.py
│       │   │       │   │   ├── base.py
│       │   │       │   │   ├── __init__.py
│       │   │       │   │   ├── inject_meta_charset.py
│       │   │       │   │   ├── lint.py
│       │   │       │   │   ├── optionaltags.py
│       │   │       │   │   ├── __pycache__
│       │   │       │   │   │   ├── alphabeticalattributes.cpython-38.pyc
│       │   │       │   │   │   ├── base.cpython-38.pyc
│       │   │       │   │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   │   ├── inject_meta_charset.cpython-38.pyc
│       │   │       │   │   │   ├── lint.cpython-38.pyc
│       │   │       │   │   │   ├── optionaltags.cpython-38.pyc
│       │   │       │   │   │   ├── sanitizer.cpython-38.pyc
│       │   │       │   │   │   └── whitespace.cpython-38.pyc
│       │   │       │   │   ├── sanitizer.py
│       │   │       │   │   └── whitespace.py
│       │   │       │   ├── html5parser.py
│       │   │       │   ├── _ihatexml.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── _inputstream.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── constants.cpython-38.pyc
│       │   │       │   │   ├── html5parser.cpython-38.pyc
│       │   │       │   │   ├── _ihatexml.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── _inputstream.cpython-38.pyc
│       │   │       │   │   ├── serializer.cpython-38.pyc
│       │   │       │   │   ├── _tokenizer.cpython-38.pyc
│       │   │       │   │   └── _utils.cpython-38.pyc
│       │   │       │   ├── serializer.py
│       │   │       │   ├── _tokenizer.py
│       │   │       │   ├── treeadapters
│       │   │       │   │   ├── genshi.py
│       │   │       │   │   ├── __init__.py
│       │   │       │   │   ├── __pycache__
│       │   │       │   │   │   ├── genshi.cpython-38.pyc
│       │   │       │   │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   │   └── sax.cpython-38.pyc
│       │   │       │   │   └── sax.py
│       │   │       │   ├── treebuilders
│       │   │       │   │   ├── base.py
│       │   │       │   │   ├── dom.py
│       │   │       │   │   ├── etree_lxml.py
│       │   │       │   │   ├── etree.py
│       │   │       │   │   ├── __init__.py
│       │   │       │   │   └── __pycache__
│       │   │       │   │       ├── base.cpython-38.pyc
│       │   │       │   │       ├── dom.cpython-38.pyc
│       │   │       │   │       ├── etree.cpython-38.pyc
│       │   │       │   │       ├── etree_lxml.cpython-38.pyc
│       │   │       │   │       └── __init__.cpython-38.pyc
│       │   │       │   ├── treewalkers
│       │   │       │   │   ├── base.py
│       │   │       │   │   ├── dom.py
│       │   │       │   │   ├── etree_lxml.py
│       │   │       │   │   ├── etree.py
│       │   │       │   │   ├── genshi.py
│       │   │       │   │   ├── __init__.py
│       │   │       │   │   └── __pycache__
│       │   │       │   │       ├── base.cpython-38.pyc
│       │   │       │   │       ├── dom.cpython-38.pyc
│       │   │       │   │       ├── etree.cpython-38.pyc
│       │   │       │   │       ├── etree_lxml.cpython-38.pyc
│       │   │       │   │       ├── genshi.cpython-38.pyc
│       │   │       │   │       └── __init__.cpython-38.pyc
│       │   │       │   ├── _trie
│       │   │       │   │   ├── _base.py
│       │   │       │   │   ├── datrie.py
│       │   │       │   │   ├── __init__.py
│       │   │       │   │   ├── __pycache__
│       │   │       │   │   │   ├── _base.cpython-38.pyc
│       │   │       │   │   │   ├── datrie.cpython-38.pyc
│       │   │       │   │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   │   └── py.cpython-38.pyc
│       │   │       │   │   └── py.py
│       │   │       │   └── _utils.py
│       │   │       ├── idna
│       │   │       │   ├── codec.py
│       │   │       │   ├── compat.py
│       │   │       │   ├── core.py
│       │   │       │   ├── idnadata.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── intranges.py
│       │   │       │   ├── package_data.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── codec.cpython-38.pyc
│       │   │       │   │   ├── compat.cpython-38.pyc
│       │   │       │   │   ├── core.cpython-38.pyc
│       │   │       │   │   ├── idnadata.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── intranges.cpython-38.pyc
│       │   │       │   │   ├── package_data.cpython-38.pyc
│       │   │       │   │   └── uts46data.cpython-38.pyc
│       │   │       │   └── uts46data.py
│       │   │       ├── __init__.py
│       │   │       ├── ipaddress.py
│       │   │       ├── lockfile
│       │   │       │   ├── __init__.py
│       │   │       │   ├── linklockfile.py
│       │   │       │   ├── mkdirlockfile.py
│       │   │       │   ├── pidlockfile.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── linklockfile.cpython-38.pyc
│       │   │       │   │   ├── mkdirlockfile.cpython-38.pyc
│       │   │       │   │   ├── pidlockfile.cpython-38.pyc
│       │   │       │   │   ├── sqlitelockfile.cpython-38.pyc
│       │   │       │   │   └── symlinklockfile.cpython-38.pyc
│       │   │       │   ├── sqlitelockfile.py
│       │   │       │   └── symlinklockfile.py
│       │   │       ├── msgpack
│       │   │       │   ├── exceptions.py
│       │   │       │   ├── fallback.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── exceptions.cpython-38.pyc
│       │   │       │   │   ├── fallback.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   └── _version.cpython-38.pyc
│       │   │       │   └── _version.py
│       │   │       ├── packaging
│       │   │       │   ├── __about__.py
│       │   │       │   ├── _compat.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── markers.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── __about__.cpython-38.pyc
│       │   │       │   │   ├── _compat.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── markers.cpython-38.pyc
│       │   │       │   │   ├── requirements.cpython-38.pyc
│       │   │       │   │   ├── specifiers.cpython-38.pyc
│       │   │       │   │   ├── _structures.cpython-38.pyc
│       │   │       │   │   ├── utils.cpython-38.pyc
│       │   │       │   │   └── version.cpython-38.pyc
│       │   │       │   ├── requirements.py
│       │   │       │   ├── specifiers.py
│       │   │       │   ├── _structures.py
│       │   │       │   ├── utils.py
│       │   │       │   └── version.py
│       │   │       ├── pep517
│       │   │       │   ├── build.py
│       │   │       │   ├── check.py
│       │   │       │   ├── colorlog.py
│       │   │       │   ├── compat.py
│       │   │       │   ├── envbuild.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── _in_process.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── build.cpython-38.pyc
│       │   │       │   │   ├── check.cpython-38.pyc
│       │   │       │   │   ├── colorlog.cpython-38.pyc
│       │   │       │   │   ├── compat.cpython-38.pyc
│       │   │       │   │   ├── envbuild.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── _in_process.cpython-38.pyc
│       │   │       │   │   └── wrappers.cpython-38.pyc
│       │   │       │   └── wrappers.py
│       │   │       ├── pkg_resources
│       │   │       │   ├── __init__.py
│       │   │       │   ├── py31compat.py
│       │   │       │   └── __pycache__
│       │   │       │       ├── __init__.cpython-38.pyc
│       │   │       │       └── py31compat.cpython-38.pyc
│       │   │       ├── progress
│       │   │       │   ├── bar.py
│       │   │       │   ├── counter.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── bar.cpython-38.pyc
│       │   │       │   │   ├── counter.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   └── spinner.cpython-38.pyc
│       │   │       │   └── spinner.py
│       │   │       ├── __pycache__
│       │   │       │   ├── appdirs.cpython-38.pyc
│       │   │       │   ├── distro.cpython-38.pyc
│       │   │       │   ├── __init__.cpython-38.pyc
│       │   │       │   ├── ipaddress.cpython-38.pyc
│       │   │       │   ├── pyparsing.cpython-38.pyc
│       │   │       │   ├── retrying.cpython-38.pyc
│       │   │       │   └── six.cpython-38.pyc
│       │   │       ├── pyparsing.py
│       │   │       ├── pytoml
│       │   │       │   ├── core.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── parser.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── core.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── parser.cpython-38.pyc
│       │   │       │   │   ├── test.cpython-38.pyc
│       │   │       │   │   ├── utils.cpython-38.pyc
│       │   │       │   │   └── writer.cpython-38.pyc
│       │   │       │   ├── test.py
│       │   │       │   ├── utils.py
│       │   │       │   └── writer.py
│       │   │       ├── requests
│       │   │       │   ├── adapters.py
│       │   │       │   ├── api.py
│       │   │       │   ├── auth.py
│       │   │       │   ├── certs.py
│       │   │       │   ├── compat.py
│       │   │       │   ├── cookies.py
│       │   │       │   ├── exceptions.py
│       │   │       │   ├── help.py
│       │   │       │   ├── hooks.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── _internal_utils.py
│       │   │       │   ├── models.py
│       │   │       │   ├── packages.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── adapters.cpython-38.pyc
│       │   │       │   │   ├── api.cpython-38.pyc
│       │   │       │   │   ├── auth.cpython-38.pyc
│       │   │       │   │   ├── certs.cpython-38.pyc
│       │   │       │   │   ├── compat.cpython-38.pyc
│       │   │       │   │   ├── cookies.cpython-38.pyc
│       │   │       │   │   ├── exceptions.cpython-38.pyc
│       │   │       │   │   ├── help.cpython-38.pyc
│       │   │       │   │   ├── hooks.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── _internal_utils.cpython-38.pyc
│       │   │       │   │   ├── models.cpython-38.pyc
│       │   │       │   │   ├── packages.cpython-38.pyc
│       │   │       │   │   ├── sessions.cpython-38.pyc
│       │   │       │   │   ├── status_codes.cpython-38.pyc
│       │   │       │   │   ├── structures.cpython-38.pyc
│       │   │       │   │   ├── utils.cpython-38.pyc
│       │   │       │   │   └── __version__.cpython-38.pyc
│       │   │       │   ├── sessions.py
│       │   │       │   ├── status_codes.py
│       │   │       │   ├── structures.py
│       │   │       │   ├── utils.py
│       │   │       │   └── __version__.py
│       │   │       ├── retrying.py
│       │   │       ├── six.py
│       │   │       ├── urllib3
│       │   │       │   ├── _collections.py
│       │   │       │   ├── connectionpool.py
│       │   │       │   ├── connection.py
│       │   │       │   ├── contrib
│       │   │       │   │   ├── _appengine_environ.py
│       │   │       │   │   ├── appengine.py
│       │   │       │   │   ├── __init__.py
│       │   │       │   │   ├── ntlmpool.py
│       │   │       │   │   ├── __pycache__
│       │   │       │   │   │   ├── appengine.cpython-38.pyc
│       │   │       │   │   │   ├── _appengine_environ.cpython-38.pyc
│       │   │       │   │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   │   ├── ntlmpool.cpython-38.pyc
│       │   │       │   │   │   ├── pyopenssl.cpython-38.pyc
│       │   │       │   │   │   ├── securetransport.cpython-38.pyc
│       │   │       │   │   │   └── socks.cpython-38.pyc
│       │   │       │   │   ├── pyopenssl.py
│       │   │       │   │   ├── _securetransport
│       │   │       │   │   │   ├── bindings.py
│       │   │       │   │   │   ├── __init__.py
│       │   │       │   │   │   ├── low_level.py
│       │   │       │   │   │   └── __pycache__
│       │   │       │   │   │       ├── bindings.cpython-38.pyc
│       │   │       │   │   │       ├── __init__.cpython-38.pyc
│       │   │       │   │   │       └── low_level.cpython-38.pyc
│       │   │       │   │   ├── securetransport.py
│       │   │       │   │   └── socks.py
│       │   │       │   ├── exceptions.py
│       │   │       │   ├── fields.py
│       │   │       │   ├── filepost.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── packages
│       │   │       │   │   ├── backports
│       │   │       │   │   │   ├── __init__.py
│       │   │       │   │   │   ├── makefile.py
│       │   │       │   │   │   └── __pycache__
│       │   │       │   │   │       ├── __init__.cpython-38.pyc
│       │   │       │   │   │       └── makefile.cpython-38.pyc
│       │   │       │   │   ├── __init__.py
│       │   │       │   │   ├── __pycache__
│       │   │       │   │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   │   └── six.cpython-38.pyc
│       │   │       │   │   ├── six.py
│       │   │       │   │   └── ssl_match_hostname
│       │   │       │   │       ├── _implementation.py
│       │   │       │   │       ├── __init__.py
│       │   │       │   │       └── __pycache__
│       │   │       │   │           ├── _implementation.cpython-38.pyc
│       │   │       │   │           └── __init__.cpython-38.pyc
│       │   │       │   ├── poolmanager.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── _collections.cpython-38.pyc
│       │   │       │   │   ├── connection.cpython-38.pyc
│       │   │       │   │   ├── connectionpool.cpython-38.pyc
│       │   │       │   │   ├── exceptions.cpython-38.pyc
│       │   │       │   │   ├── fields.cpython-38.pyc
│       │   │       │   │   ├── filepost.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── poolmanager.cpython-38.pyc
│       │   │       │   │   ├── request.cpython-38.pyc
│       │   │       │   │   └── response.cpython-38.pyc
│       │   │       │   ├── request.py
│       │   │       │   ├── response.py
│       │   │       │   └── util
│       │   │       │       ├── connection.py
│       │   │       │       ├── __init__.py
│       │   │       │       ├── __pycache__
│       │   │       │       │   ├── connection.cpython-38.pyc
│       │   │       │       │   ├── __init__.cpython-38.pyc
│       │   │       │       │   ├── queue.cpython-38.pyc
│       │   │       │       │   ├── request.cpython-38.pyc
│       │   │       │       │   ├── response.cpython-38.pyc
│       │   │       │       │   ├── retry.cpython-38.pyc
│       │   │       │       │   ├── ssl_.cpython-38.pyc
│       │   │       │       │   ├── timeout.cpython-38.pyc
│       │   │       │       │   ├── url.cpython-38.pyc
│       │   │       │       │   └── wait.cpython-38.pyc
│       │   │       │       ├── queue.py
│       │   │       │       ├── request.py
│       │   │       │       ├── response.py
│       │   │       │       ├── retry.py
│       │   │       │       ├── ssl_.py
│       │   │       │       ├── timeout.py
│       │   │       │       ├── url.py
│       │   │       │       └── wait.py
│       │   │       └── webencodings
│       │   │           ├── __init__.py
│       │   │           ├── labels.py
│       │   │           ├── mklabels.py
│       │   │           ├── __pycache__
│       │   │           │   ├── __init__.cpython-38.pyc
│       │   │           │   ├── labels.cpython-38.pyc
│       │   │           │   ├── mklabels.cpython-38.pyc
│       │   │           │   ├── tests.cpython-38.pyc
│       │   │           │   └── x_user_defined.cpython-38.pyc
│       │   │           ├── tests.py
│       │   │           └── x_user_defined.py
│       │   ├── pip-19.1.1.dist-info
│       │   │   ├── entry_points.txt
│       │   │   ├── INSTALLER
│       │   │   ├── LICENSE.txt
│       │   │   ├── METADATA
│       │   │   ├── RECORD
│       │   │   ├── top_level.txt
│       │   │   └── WHEEL
│       │   ├── pkg_resources
│       │   │   ├── extern
│       │   │   │   ├── __init__.py
│       │   │   │   └── __pycache__
│       │   │   │       └── __init__.cpython-38.pyc
│       │   │   ├── __init__.py
│       │   │   ├── py31compat.py
│       │   │   ├── __pycache__
│       │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   └── py31compat.cpython-38.pyc
│       │   │   └── _vendor
│       │   │       ├── appdirs.py
│       │   │       ├── __init__.py
│       │   │       ├── packaging
│       │   │       │   ├── __about__.py
│       │   │       │   ├── _compat.py
│       │   │       │   ├── __init__.py
│       │   │       │   ├── markers.py
│       │   │       │   ├── __pycache__
│       │   │       │   │   ├── __about__.cpython-38.pyc
│       │   │       │   │   ├── _compat.cpython-38.pyc
│       │   │       │   │   ├── __init__.cpython-38.pyc
│       │   │       │   │   ├── markers.cpython-38.pyc
│       │   │       │   │   ├── requirements.cpython-38.pyc
│       │   │       │   │   ├── specifiers.cpython-38.pyc
│       │   │       │   │   ├── _structures.cpython-38.pyc
│       │   │       │   │   ├── utils.cpython-38.pyc
│       │   │       │   │   └── version.cpython-38.pyc
│       │   │       │   ├── requirements.py
│       │   │       │   ├── specifiers.py
│       │   │       │   ├── _structures.py
│       │   │       │   ├── utils.py
│       │   │       │   └── version.py
│       │   │       ├── __pycache__
│       │   │       │   ├── appdirs.cpython-38.pyc
│       │   │       │   ├── __init__.cpython-38.pyc
│       │   │       │   ├── pyparsing.cpython-38.pyc
│       │   │       │   └── six.cpython-38.pyc
│       │   │       ├── pyparsing.py
│       │   │       └── six.py
│       │   ├── __pycache__
│       │   │   └── easy_install.cpython-38.pyc
│       │   ├── setuptools
│       │   │   ├── archive_util.py
│       │   │   ├── build_meta.py
│       │   │   ├── cli-32.exe
│       │   │   ├── cli-64.exe
│       │   │   ├── cli.exe
│       │   │   ├── command
│       │   │   │   ├── alias.py
│       │   │   │   ├── bdist_egg.py
│       │   │   │   ├── bdist_rpm.py
│       │   │   │   ├── bdist_wininst.py
│       │   │   │   ├── build_clib.py
│       │   │   │   ├── build_ext.py
│       │   │   │   ├── build_py.py
│       │   │   │   ├── develop.py
│       │   │   │   ├── dist_info.py
│       │   │   │   ├── easy_install.py
│       │   │   │   ├── egg_info.py
│       │   │   │   ├── __init__.py
│       │   │   │   ├── install_egg_info.py
│       │   │   │   ├── install_lib.py
│       │   │   │   ├── install.py
│       │   │   │   ├── install_scripts.py
│       │   │   │   ├── launcher manifest.xml
│       │   │   │   ├── py36compat.py
│       │   │   │   ├── __pycache__
│       │   │   │   │   ├── alias.cpython-38.pyc
│       │   │   │   │   ├── bdist_egg.cpython-38.pyc
│       │   │   │   │   ├── bdist_rpm.cpython-38.pyc
│       │   │   │   │   ├── bdist_wininst.cpython-38.pyc
│       │   │   │   │   ├── build_clib.cpython-38.pyc
│       │   │   │   │   ├── build_ext.cpython-38.pyc
│       │   │   │   │   ├── build_py.cpython-38.pyc
│       │   │   │   │   ├── develop.cpython-38.pyc
│       │   │   │   │   ├── dist_info.cpython-38.pyc
│       │   │   │   │   ├── easy_install.cpython-38.pyc
│       │   │   │   │   ├── egg_info.cpython-38.pyc
│       │   │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   │   ├── install.cpython-38.pyc
│       │   │   │   │   ├── install_egg_info.cpython-38.pyc
│       │   │   │   │   ├── install_lib.cpython-38.pyc
│       │   │   │   │   ├── install_scripts.cpython-38.pyc
│       │   │   │   │   ├── py36compat.cpython-38.pyc
│       │   │   │   │   ├── register.cpython-38.pyc
│       │   │   │   │   ├── rotate.cpython-38.pyc
│       │   │   │   │   ├── saveopts.cpython-38.pyc
│       │   │   │   │   ├── sdist.cpython-38.pyc
│       │   │   │   │   ├── setopt.cpython-38.pyc
│       │   │   │   │   ├── test.cpython-38.pyc
│       │   │   │   │   ├── upload.cpython-38.pyc
│       │   │   │   │   └── upload_docs.cpython-38.pyc
│       │   │   │   ├── register.py
│       │   │   │   ├── rotate.py
│       │   │   │   ├── saveopts.py
│       │   │   │   ├── sdist.py
│       │   │   │   ├── setopt.py
│       │   │   │   ├── test.py
│       │   │   │   ├── upload_docs.py
│       │   │   │   └── upload.py
│       │   │   ├── config.py
│       │   │   ├── depends.py
│       │   │   ├── _deprecation_warning.py
│       │   │   ├── dep_util.py
│       │   │   ├── dist.py
│       │   │   ├── extension.py
│       │   │   ├── extern
│       │   │   │   ├── __init__.py
│       │   │   │   └── __pycache__
│       │   │   │       └── __init__.cpython-38.pyc
│       │   │   ├── glibc.py
│       │   │   ├── glob.py
│       │   │   ├── gui-32.exe
│       │   │   ├── gui-64.exe
│       │   │   ├── gui.exe
│       │   │   ├── __init__.py
│       │   │   ├── launch.py
│       │   │   ├── lib2to3_ex.py
│       │   │   ├── monkey.py
│       │   │   ├── msvc.py
│       │   │   ├── namespaces.py
│       │   │   ├── package_index.py
│       │   │   ├── pep425tags.py
│       │   │   ├── py27compat.py
│       │   │   ├── py31compat.py
│       │   │   ├── py33compat.py
│       │   │   ├── __pycache__
│       │   │   │   ├── archive_util.cpython-38.pyc
│       │   │   │   ├── build_meta.cpython-38.pyc
│       │   │   │   ├── config.cpython-38.pyc
│       │   │   │   ├── depends.cpython-38.pyc
│       │   │   │   ├── _deprecation_warning.cpython-38.pyc
│       │   │   │   ├── dep_util.cpython-38.pyc
│       │   │   │   ├── dist.cpython-38.pyc
│       │   │   │   ├── extension.cpython-38.pyc
│       │   │   │   ├── glibc.cpython-38.pyc
│       │   │   │   ├── glob.cpython-38.pyc
│       │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   ├── launch.cpython-38.pyc
│       │   │   │   ├── lib2to3_ex.cpython-38.pyc
│       │   │   │   ├── monkey.cpython-38.pyc
│       │   │   │   ├── msvc.cpython-38.pyc
│       │   │   │   ├── namespaces.cpython-38.pyc
│       │   │   │   ├── package_index.cpython-38.pyc
│       │   │   │   ├── pep425tags.cpython-38.pyc
│       │   │   │   ├── py27compat.cpython-38.pyc
│       │   │   │   ├── py31compat.cpython-38.pyc
│       │   │   │   ├── py33compat.cpython-38.pyc
│       │   │   │   ├── sandbox.cpython-38.pyc
│       │   │   │   ├── site-patch.cpython-38.pyc
│       │   │   │   ├── ssl_support.cpython-38.pyc
│       │   │   │   ├── unicode_utils.cpython-38.pyc
│       │   │   │   ├── version.cpython-38.pyc
│       │   │   │   ├── wheel.cpython-38.pyc
│       │   │   │   └── windows_support.cpython-38.pyc
│       │   │   ├── sandbox.py
│       │   │   ├── script (dev).tmpl
│       │   │   ├── script.tmpl
│       │   │   ├── site-patch.py
│       │   │   ├── ssl_support.py
│       │   │   ├── unicode_utils.py
│       │   │   ├── _vendor
│       │   │   │   ├── __init__.py
│       │   │   │   ├── packaging
│       │   │   │   │   ├── __about__.py
│       │   │   │   │   ├── _compat.py
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── markers.py
│       │   │   │   │   ├── __pycache__
│       │   │   │   │   │   ├── __about__.cpython-38.pyc
│       │   │   │   │   │   ├── _compat.cpython-38.pyc
│       │   │   │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   │   │   ├── markers.cpython-38.pyc
│       │   │   │   │   │   ├── requirements.cpython-38.pyc
│       │   │   │   │   │   ├── specifiers.cpython-38.pyc
│       │   │   │   │   │   ├── _structures.cpython-38.pyc
│       │   │   │   │   │   ├── utils.cpython-38.pyc
│       │   │   │   │   │   └── version.cpython-38.pyc
│       │   │   │   │   ├── requirements.py
│       │   │   │   │   ├── specifiers.py
│       │   │   │   │   ├── _structures.py
│       │   │   │   │   ├── utils.py
│       │   │   │   │   └── version.py
│       │   │   │   ├── __pycache__
│       │   │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   │   ├── pyparsing.cpython-38.pyc
│       │   │   │   │   └── six.cpython-38.pyc
│       │   │   │   ├── pyparsing.py
│       │   │   │   └── six.py
│       │   │   ├── version.py
│       │   │   ├── wheel.py
│       │   │   └── windows_support.py
│       │   ├── setuptools-41.0.1.dist-info
│       │   │   ├── dependency_links.txt
│       │   │   ├── entry_points.txt
│       │   │   ├── INSTALLER
│       │   │   ├── LICENSE
│       │   │   ├── METADATA
│       │   │   ├── RECORD
│       │   │   ├── top_level.txt
│       │   │   ├── WHEEL
│       │   │   └── zip-safe
│       │   ├── setuptools_scm
│       │   │   ├── config.py
│       │   │   ├── discover.py
│       │   │   ├── file_finder_git.py
│       │   │   ├── file_finder_hg.py
│       │   │   ├── file_finder.py
│       │   │   ├── git.py
│       │   │   ├── hacks.py
│       │   │   ├── hg.py
│       │   │   ├── __init__.py
│       │   │   ├── integration.py
│       │   │   ├── __main__.py
│       │   │   ├── __pycache__
│       │   │   │   ├── config.cpython-38.pyc
│       │   │   │   ├── discover.cpython-38.pyc
│       │   │   │   ├── file_finder.cpython-38.pyc
│       │   │   │   ├── file_finder_git.cpython-38.pyc
│       │   │   │   ├── file_finder_hg.cpython-38.pyc
│       │   │   │   ├── git.cpython-38.pyc
│       │   │   │   ├── hacks.cpython-38.pyc
│       │   │   │   ├── hg.cpython-38.pyc
│       │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   ├── integration.cpython-38.pyc
│       │   │   │   ├── __main__.cpython-38.pyc
│       │   │   │   ├── utils.cpython-38.pyc
│       │   │   │   ├── version.cpython-38.pyc
│       │   │   │   └── win_py31_compat.cpython-38.pyc
│       │   │   ├── utils.py
│       │   │   ├── version.py
│       │   │   └── win_py31_compat.py
│       │   ├── setuptools_scm-3.3.3.dist-info
│       │   │   ├── entry_points.txt
│       │   │   ├── INSTALLER
│       │   │   ├── LICENSE
│       │   │   ├── METADATA
│       │   │   ├── RECORD
│       │   │   ├── top_level.txt
│       │   │   ├── WHEEL
│       │   │   └── zip-safe
│       │   ├── wheel
│       │   │   ├── bdist_wheel.py
│       │   │   ├── cli
│       │   │   │   ├── convert.py
│       │   │   │   ├── __init__.py
│       │   │   │   ├── pack.py
│       │   │   │   ├── __pycache__
│       │   │   │   │   ├── convert.cpython-38.pyc
│       │   │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   │   ├── pack.cpython-38.pyc
│       │   │   │   │   └── unpack.cpython-38.pyc
│       │   │   │   └── unpack.py
│       │   │   ├── __init__.py
│       │   │   ├── __main__.py
│       │   │   ├── metadata.py
│       │   │   ├── pep425tags.py
│       │   │   ├── pkginfo.py
│       │   │   ├── __pycache__
│       │   │   │   ├── bdist_wheel.cpython-38.pyc
│       │   │   │   ├── __init__.cpython-38.pyc
│       │   │   │   ├── __main__.cpython-38.pyc
│       │   │   │   ├── metadata.cpython-38.pyc
│       │   │   │   ├── pep425tags.cpython-38.pyc
│       │   │   │   ├── pkginfo.cpython-38.pyc
│       │   │   │   ├── util.cpython-38.pyc
│       │   │   │   └── wheelfile.cpython-38.pyc
│       │   │   ├── util.py
│       │   │   └── wheelfile.py
│       │   └── wheel-0.33.4.dist-info
│       │       ├── entry_points.txt
│       │       ├── INSTALLER
│       │       ├── LICENSE.txt
│       │       ├── METADATA
│       │       ├── RECORD
│       │       ├── top_level.txt
│       │       └── WHEEL
│       ├── site.py
│       ├── sre_compile.py -> /usr/lib/python3.8/sre_compile.py
│       ├── sre_constants.py -> /usr/lib/python3.8/sre_constants.py
│       ├── sre_parse.py -> /usr/lib/python3.8/sre_parse.py
│       ├── stat.py -> /usr/lib/python3.8/stat.py
│       ├── struct.py -> /usr/lib/python3.8/struct.py
│       ├── tarfile.py -> /usr/lib/python3.8/tarfile.py
│       ├── tempfile.py -> /usr/lib/python3.8/tempfile.py
│       ├── tokenize.py -> /usr/lib/python3.8/tokenize.py
│       ├── token.py -> /usr/lib/python3.8/token.py
│       ├── types.py -> /usr/lib/python3.8/types.py
│       ├── warnings.py -> /usr/lib/python3.8/warnings.py
│       ├── weakref.py -> /usr/lib/python3.8/weakref.py
│       └── _weakrefset.py -> /usr/lib/python3.8/_weakrefset.py
└── log

123 directories, 976 files

Can we disable this check for anything inside the toxworkdir please?

I don't think we should disable it even for that, for instance it found a bug when someone was clobbering .tox/dist -- we should figure out why it isn't happy about that .package env though -- it looks like it should be fine

seems especially useful to keep it on if we find bugs like this :P

Why is https://github.com/tox-dev/tox/blob/2d2b2aed942937fa11b2e9df191c2542fdcbf89a/src/tox/venv.py#L713 > rather than >=, so if we only have bin and lib we refuse to delete? What else are we expecting to be in there?

probably just an oversight -- though I'm also seeing include in my environments

I think that is a CPython thing 👍 😄 I mean in case of Jython/IronPython include does not make much sense 🤔

should probably have >= for all three of those cases :man_shrugging:

Hello,
I have faced the same issue with v.3.14.0 when using requires = tox-env.

.tox create: /home/joao/GitHub/sampleproject/.tox/.tox
.tox installdeps: tox-conda, tox-env, tox >= 3.4.0

when disabled requires = tox-env everything seems to flow.

Other packages in my conda env use importlib_metadata > 1, does tox really absolutely need it to be < 1 ? A conda install toxcurrently wants to downgrade my importlib_metadata from 1.3.0 to 0.23?

@michaelaye that has nothing to do with this particular issue I'm afraid

that said, it has already been relaxed if you look at master: #1476

Was this page helpful?
0 / 5 - 0 ratings