Skip to content

python3.x -m tox -e py3y finds wrong python #3532

New issue

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

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

Already on GitHub? Sign in to your account

Open
bdarnell opened this issue May 12, 2025 · 1 comment
Open

python3.x -m tox -e py3y finds wrong python #3532

bdarnell opened this issue May 12, 2025 · 1 comment

Comments

@bdarnell
Copy link

Issue

I was trying to run tox in Python 3.11 while running tests under 3.14 (to work around #3523). Instead of putting the 3.11 bin directory on my path and running tox directly, I used python3.11 -m tox -v -v -e py314-full. This appeared to confuse something, and even though tox correctly recognized that it should be running under 3.14 (according to its own debug output), it ended up running the tests under 3.11. Putting the 3.11 bin directory on $PATH and running python -m tox or the tox script both work as expected; the problem only occurs when python3.11 -m tox is used.

Unfortunately I have not been able to reproduce this in something less than my full CI environment. It's possible that there's something special about the way setup-python works in github actions. My hypothesis is that tox is using either sys.executable or sys.argv[0] somewhere that it shouldn't, but I was unable to make a simple reproduction based on this theory so it's probably not quite right.

Environment

Provide at least:

  • OS: ubuntu-22.04 (on github actions)
Installed packages

I don't have this from pip list, but tox==4.15.1 and its dependencies are the only things installed here:

Successfully installed cachetools-5.3.3 chardet-5.2.0 colorama-0.4.6 distlib-0.3.8 filelock-3.14.0 packaging-24.1 platformdirs-4.2.2 pluggy-1.5.0 pyproject-api-1.6.1 tox-4.15.1 virtualenv-20.26.6

Output of running tox

Full log is also available in https://github.com/tornadoweb/tornado/actions/runs/14978432577/job/42076586754

Search for python --version for the confirmation that the test commands are getting run with the wrong python.

Output of tox -rvv
Run python3.11 -m tox -v -v -e py314-full
  python3.11 -m tox -v -v -e py314-full
  shell: /usr/bin/bash -e {0}
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.14.0-beta.1/x64
    PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.14.0-beta.1/x64/lib/pkgconfig
    Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.14.0-beta.1/x64
    Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.14.0-beta.1/x64
    Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.14.0-beta.1/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.14.0-beta.1/x64/lib:/opt/hostedtoolcache/Python/3.11.12/x64/lib
ROOT: 150 D setup logging to DEBUG on pid 2605 [tox/report.py:221]
py314-full: 306 D created app data folder /home/runner/.local/share/virtualenv [virtualenv/app_data/__init__.py:40]
py314-full: 309 I find interpreter for spec PythonSpec(major=3, minor=14) [virtualenv/discovery/builtin.py:72]
py314-full: 309 D filesystem is case-sensitive [virtualenv/info.py:25]
py314-full: 309 I proposed PythonInfo(spec=CPython3.11.12.final.0-64, exe=/opt/hostedtoolcache/Python/3.11.12/x64/bin/python3.11, platform=linux, version='3.11.12 (main, Apr  8 2025, 21:35:37) [GCC 11.4.0]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:79]
py314-full: 310 D discover PATH[0]=/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/bin [virtualenv/discovery/builtin.py:148]
py314-full: 310 D get interpreter info via cmd: /opt/hostedtoolcache/Python/3.14.0-beta.1/x64/bin/python3.14 /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/virtualenv/discovery/py_info.py 8lulg6BAl6hRuIlfYq5f6L32eePil7KF lt4mE2Wwx8YZj51KiRdATlFSDSqvxmpJ [virtualenv/discovery/cached_py_info.py:112]
py314-full: 383 D wrote python info of %s at (PosixPath('/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/bin/python3.14'), PosixPath('/home/runner/.local/share/virtualenv/py_info/1/cdc40f470fa97321bb8320e4de858a328a5097f1cea68923d23c0337165a7d21.json')) [virtualenv/app_data/via_disk_folder.py:151]
py314-full: 383 I proposed PathPythonInfo(spec=CPython3.14.0.beta.1-64, exe=/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/bin/python3.14, platform=linux, version='3.14.0b1 (main, May  7 2025, 17:24:10) [GCC 11.4.0]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:79]
py314-full: 383 D accepted PathPythonInfo(spec=CPython3.14.0.beta.1-64, exe=/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/bin/python3.14, platform=linux, version='3.14.0b1 (main, May  7 2025, 17:24:10) [GCC 11.4.0]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:81]
py314-full: 404 I create virtual environment via CPython3Posix(dest=/home/runner/work/tornado/tornado/.tox/py314-full, clear=False, no_vcs_ignore=False, global=False) [virtualenv/run/session.py:50]
py314-full: 404 D create folder /home/runner/work/tornado/tornado/.tox/py314-full/bin [virtualenv/util/path/_sync.py:12]
py314-full: 404 D create folder /home/runner/work/tornado/tornado/.tox/py314-full/lib/python3.14/site-packages [virtualenv/util/path/_sync.py:12]
py314-full: 404 D write /home/runner/work/tornado/tornado/.tox/py314-full/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:33]
py314-full: 405 D 	home = /opt/hostedtoolcache/Python/3.14.0-beta.1/x64/bin [virtualenv/create/pyenv_cfg.py:38]
py314-full: 405 D 	implementation = CPython [virtualenv/create/pyenv_cfg.py:38]
py314-full: 405 D 	version_info = 3.14.0.beta.1 [virtualenv/create/pyenv_cfg.py:38]
py314-full: 405 D 	virtualenv = 20.26.6 [virtualenv/create/pyenv_cfg.py:38]
py314-full: 405 D 	include-system-site-packages = false [virtualenv/create/pyenv_cfg.py:38]
py314-full: 405 D 	base-prefix = /opt/hostedtoolcache/Python/3.14.0-beta.1/x64 [virtualenv/create/pyenv_cfg.py:38]
py314-full: 405 D 	base-exec-prefix = /opt/hostedtoolcache/Python/3.14.0-beta.1/x64 [virtualenv/create/pyenv_cfg.py:38]
py314-full: 405 D 	base-executable = /opt/hostedtoolcache/Python/3.14.0-beta.1/x64/bin/python3.14 [virtualenv/create/pyenv_cfg.py:38]
py314-full: 406 D symlink /opt/hostedtoolcache/Python/3.14.0-beta.1/x64/bin/python3.14 to /home/runner/work/tornado/tornado/.tox/py314-full/bin/python [virtualenv/util/path/_sync.py:32]
py314-full: 406 D create virtualenv import hook file /home/runner/work/tornado/tornado/.tox/py314-full/lib/python3.14/site-packages/_virtualenv.pth [virtualenv/create/via_global_ref/api.py:91]
py314-full: 406 D create /home/runner/work/tornado/tornado/.tox/py314-full/lib/python3.14/site-packages/_virtualenv.py [virtualenv/create/via_global_ref/api.py:94]
py314-full: 406 D ============================== target debug ============================== [virtualenv/run/session.py:52]
py314-full: 407 D debug via /home/runner/work/tornado/tornado/.tox/py314-full/bin/python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/virtualenv/create/debug.py [virtualenv/create/creator.py:200]
py314-full: 406 D {
  "sys": {
    "executable": "/home/runner/work/tornado/tornado/.tox/py314-full/bin/python",
    "_base_executable": "/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/bin/python3.14",
    "prefix": "/home/runner/work/tornado/tornado/.tox/py314-full",
    "base_prefix": "/opt/hostedtoolcache/Python/3.14.0-beta.1/x64",
    "real_prefix": null,
    "exec_prefix": "/home/runner/work/tornado/tornado/.tox/py314-full",
    "base_exec_prefix": "/opt/hostedtoolcache/Python/3.14.0-beta.1/x64",
    "path": [
      "/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/lib/python314.zip",
      "/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/lib/python3.14",
      "/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/lib/python3.14/lib-dynload",
      "/home/runner/work/tornado/tornado/.tox/py314-full/lib/python3.14/site-packages"
    ],
    "meta_path": [
      "<class '_virtualenv._Finder'>",
      "<class '_frozen_importlib.BuiltinImporter'>",
      "<class '_frozen_importlib.FrozenImporter'>",
      "<class '_frozen_importlib_external.PathFinder'>"
    ],
    "fs_encoding": "utf-8",
    "io_encoding": "utf-8"
  },
  "version": "3.14.0b1 (main, May  7 2025, 17:24:10) [GCC 11.4.0]",
  "makefile_filename": "/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/lib/python3.14/config-3.14-x86_64-linux-gnu/Makefile",
  "os": "<module 'os' (frozen)>",
  "site": "<module 'site' (frozen)>",
  "datetime": "<module 'datetime' from '/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/lib/python3.14/datetime.py'>",
  "math": "<module 'math' from '/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/lib/python3.14/lib-dynload/math.cpython-314-x86_64-linux-gnu.so'>",
  "json": "<module 'json' from '/opt/hostedtoolcache/Python/3.14.0-beta.1/x64/lib/python3.14/json/__init__.py'>"
} [virtualenv/run/session.py:53]
py314-full: 443 I add seed packages via FromAppData(download=False, pip=bundle, via=copy, app_data_dir=/home/runner/.local/share/virtualenv) [virtualenv/run/session.py:57]
py314-full: 443 D install pip from wheel /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/pip-24.2-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:49]
py314-full: 444 D build install image for pip-24.2-py3-none-any.whl to /home/runner/.local/share/virtualenv/wheel/3.14/image/1/CopyPipInstall/pip-24.2-py3-none-any [virtualenv/seed/embed/via_app_data/pip_install/base.py:47]
py314-full: 523 D copy /home/runner/.local/share/virtualenv/wheel/3.14/image/1/CopyPipInstall/pip-24.2-py3-none-any/pip-24.2.virtualenv to /home/runner/work/tornado/tornado/.tox/py314-full/lib/python3.14/site-packages/pip-24.2.virtualenv [virtualenv/util/path/_sync.py:40]
py314-full: 523 D copy directory /home/runner/.local/share/virtualenv/wheel/3.14/image/1/CopyPipInstall/pip-24.2-py3-none-any/pip-24.2.dist-info to /home/runner/work/tornado/tornado/.tox/py314-full/lib/python3.14/site-packages/pip-24.2.dist-info [virtualenv/util/path/_sync.py:40]
py314-full: 525 D copy directory /home/runner/.local/share/virtualenv/wheel/3.14/image/1/CopyPipInstall/pip-24.2-py3-none-any/pip to /home/runner/work/tornado/tornado/.tox/py314-full/lib/python3.14/site-packages/pip [virtualenv/util/path/_sync.py:40]
py314-full: 572 D generated console scripts pip pip3.14 pip3 pip-3.14 [virtualenv/seed/embed/via_app_data/pip_install/base.py:43]
py314-full: 572 I add activators for Bash, CShell, Fish, Nushell, PowerShell, Python [virtualenv/run/session.py:63]
py314-full: 587 D write /home/runner/work/tornado/tornado/.tox/py314-full/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:33]
py314-full: 587 D 	home = /opt/hostedtoolcache/Python/3.14.0-beta.1/x64/bin [virtualenv/create/pyenv_cfg.py:38]
py314-full: 588 D 	implementation = CPython [virtualenv/create/pyenv_cfg.py:38]
py314-full: 588 D 	version_info = 3.14.0.beta.1 [virtualenv/create/pyenv_cfg.py:38]
py314-full: 588 D 	virtualenv = 20.26.6 [virtualenv/create/pyenv_cfg.py:38]
py314-full: 588 D 	include-system-site-packages = false [virtualenv/create/pyenv_cfg.py:38]
py314-full: 588 D 	base-prefix = /opt/hostedtoolcache/Python/3.14.0-beta.1/x64 [virtualenv/create/pyenv_cfg.py:38]
py314-full: 588 D 	base-exec-prefix = /opt/hostedtoolcache/Python/3.14.0-beta.1/x64 [virtualenv/create/pyenv_cfg.py:38]
py314-full: 588 D 	base-executable = /opt/hostedtoolcache/Python/3.14.0-beta.1/x64/bin/python3.14 [virtualenv/create/pyenv_cfg.py:38]
py314-full: 590 W install_deps> python -I -m pip install pycares pycurl twisted [tox/tox_env/api.py:425]
Collecting pycares
  Downloading pycares-4.8.0.tar.gz (647 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 648.0/648.0 kB 32.5 MB/s eta 0:00:00
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting pycurl
  Downloading pycurl-7.45.6.tar.gz (239 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting twisted
  Downloading twisted-24.11.0-py3-none-any.whl.metadata (20 kB)
Collecting cffi>=1.5.0 (from pycares)
  Using cached cffi-1.17.1-cp314-cp314-linux_x86_64.whl
Collecting attrs>=22.2.0 (from twisted)
  Downloading attrs-25.3.0-py3-none-any.whl.metadata (10 kB)
Collecting automat>=24.8.0 (from twisted)
  Downloading automat-25.4.16-py3-none-any.whl.metadata (8.4 kB)
Collecting constantly>=15.1 (from twisted)
  Downloading constantly-23.10.4-py3-none-any.whl.metadata (1.8 kB)
Collecting hyperlink>=17.1.1 (from twisted)
  Downloading hyperlink-21.0.0-py2.py3-none-any.whl.metadata (1.5 kB)
Collecting incremental>=24.7.0 (from twisted)
  Downloading incremental-24.7.2-py3-none-any.whl.metadata (8.1 kB)
Collecting typing-extensions>=4.2.0 (from twisted)
  Downloading typing_extensions-4.13.2-py3-none-any.whl.metadata (3.0 kB)
Collecting zope-interface>=5 (from twisted)
  Downloading zope.interface-7.2.tar.gz (252 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting pycparser (from cffi>=1.5.0->pycares)
  Using cached pycparser-2.22-py3-none-any.whl.metadata (943 bytes)
Collecting idna>=2.5 (from hyperlink>=17.1.1->twisted)
  Downloading idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting setuptools>=61.0 (from incremental>=24.7.0->twisted)
  Using cached setuptools-80.4.0-py3-none-any.whl.metadata (6.5 kB)
Downloading twisted-24.11.0-py3-none-any.whl (3.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 MB 130.6 MB/s eta 0:00:00
Downloading attrs-25.3.0-py3-none-any.whl (63 kB)
Downloading automat-25.4.16-py3-none-any.whl (42 kB)
Downloading constantly-23.10.4-py3-none-any.whl (13 kB)
Downloading hyperlink-21.0.0-py2.py3-none-any.whl (74 kB)
Downloading incremental-24.7.2-py3-none-any.whl (20 kB)
Downloading typing_extensions-4.13.2-py3-none-any.whl (45 kB)
Downloading idna-3.10-py3-none-any.whl (70 kB)
Using cached setuptools-80.4.0-py3-none-any.whl (1.2 MB)
Using cached pycparser-2.22-py3-none-any.whl (117 kB)
Building wheels for collected packages: pycares, pycurl, zope-interface
  Building wheel for pycares (pyproject.toml): started
  Building wheel for pycares (pyproject.toml): finished with status 'done'
  Created wheel for pycares: filename=pycares-4.8.0-cp314-cp314-linux_x86_64.whl size=656520 sha256=d94413981e99e919d17c429e4ce4581fd039edcfb1770ca2cb6d75a4de05a6f4
  Stored in directory: /home/runner/.cache/pip/wheels/1d/bc/e0/bb53db6fb384889599c3d1115f3fefa5b018b0ff767d916c0c
  Building wheel for pycurl (pyproject.toml): started
  Building wheel for pycurl (pyproject.toml): finished with status 'done'
  Created wheel for pycurl: filename=pycurl-7.45.6-cp314-cp314-linux_x86_64.whl size=333429 sha256=a4943dbd77e000e65c7aa32644c1cebc8c444aa17983ce0b50d6f7b8920b499b
  Stored in directory: /home/runner/.cache/pip/wheels/c8/07/9f/d28d4f34f663c8eb5b37cfb7e6906f93e6231a9334f6d5edd9
  Building wheel for zope-interface (pyproject.toml): started
  Building wheel for zope-interface (pyproject.toml): finished with status 'done'
  Created wheel for zope-interface: filename=zope.interface-7.2-cp314-cp314-linux_x86_64.whl size=262005 sha256=ba78d7997ad0f21cb4c4252d8561f2cb8f72be38c04899db500121b7fbd603e5
  Stored in directory: /home/runner/.cache/pip/wheels/20/03/ef/c244af1b594605c1280760b7c1c98f7007ab9ae9b4e549b8b5
Successfully built pycares pycurl zope-interface
Installing collected packages: typing-extensions, setuptools, pycurl, pycparser, idna, constantly, automat, attrs, zope-interface, incremental, hyperlink, cffi, twisted, pycares
Successfully installed attrs-25.3.0 automat-25.4.16 cffi-1.17.1 constantly-23.10.4 hyperlink-21.0.0 idna-3.10 incremental-24.7.2 pycares-4.8.0 pycparser-2.22 pycurl-7.45.6 setuptools-80.4.0 twisted-24.11.0 typing-extensions-4.13.2 zope-interface-7.2
py314-full: 34867 I exit 0 (34.28 seconds) /home/runner/work/tornado/tornado> python -I -m pip install pycares pycurl twisted pid=2617 [tox/execute/api.py:286]
.pkg: 34870 I find interpreter for spec PythonSpec(path=/opt/hostedtoolcache/Python/3.11.12/x64/bin/python3.11) [virtualenv/discovery/builtin.py:72]
.pkg: 34870 I proposed PythonInfo(spec=CPython3.11.12.final.0-64, exe=/opt/hostedtoolcache/Python/3.11.12/x64/bin/python3.11, platform=linux, version='3.11.12 (main, Apr  8 2025, 21:35:37) [GCC 11.4.0]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:79]
.pkg: 34870 D accepted PythonInfo(spec=CPython3.11.12.final.0-64, exe=/opt/hostedtoolcache/Python/3.11.12/x64/bin/python3.11, platform=linux, version='3.11.12 (main, Apr  8 2025, 21:35:37) [GCC 11.4.0]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:81]
.pkg: 34871 I create virtual environment via CPython3Posix(dest=/home/runner/work/tornado/tornado/.tox/.pkg, clear=False, no_vcs_ignore=False, global=False) [virtualenv/run/session.py:50]
.pkg: 34871 D create folder /home/runner/work/tornado/tornado/.tox/.pkg/bin [virtualenv/util/path/_sync.py:12]
.pkg: 34872 D create folder /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages [virtualenv/util/path/_sync.py:12]
.pkg: 34872 D write /home/runner/work/tornado/tornado/.tox/.pkg/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:33]
.pkg: 34872 D 	home = /opt/hostedtoolcache/Python/3.11.12/x64/bin [virtualenv/create/pyenv_cfg.py:38]
.pkg: 34872 D 	implementation = CPython [virtualenv/create/pyenv_cfg.py:38]
.pkg: 34872 D 	version_info = 3.11.12.final.0 [virtualenv/create/pyenv_cfg.py:38]
.pkg: 34872 D 	virtualenv = 20.26.6 [virtualenv/create/pyenv_cfg.py:38]
.pkg: 34872 D 	include-system-site-packages = false [virtualenv/create/pyenv_cfg.py:38]
.pkg: 34872 D 	base-prefix = /opt/hostedtoolcache/Python/3.11.12/x64 [virtualenv/create/pyenv_cfg.py:38]
.pkg: 34872 D 	base-exec-prefix = /opt/hostedtoolcache/Python/3.11.12/x64 [virtualenv/create/pyenv_cfg.py:38]
.pkg: 34872 D 	base-executable = /opt/hostedtoolcache/Python/3.11.12/x64/bin/python3.11 [virtualenv/create/pyenv_cfg.py:38]
.pkg: 34873 D symlink /opt/hostedtoolcache/Python/3.11.12/x64/bin/python3.11 to /home/runner/work/tornado/tornado/.tox/.pkg/bin/python [virtualenv/util/path/_sync.py:32]
.pkg: 34873 D create virtualenv import hook file /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/_virtualenv.pth [virtualenv/create/via_global_ref/api.py:91]
.pkg: 34873 D create /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/_virtualenv.py [virtualenv/create/via_global_ref/api.py:94]
.pkg: 34873 D ============================== target debug ============================== [virtualenv/run/session.py:52]
.pkg: 34874 D debug via /home/runner/work/tornado/tornado/.tox/.pkg/bin/python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/virtualenv/create/debug.py [virtualenv/create/creator.py:200]
.pkg: 34874 D {
  "sys": {
    "executable": "/home/runner/work/tornado/tornado/.tox/.pkg/bin/python",
    "_base_executable": "/opt/hostedtoolcache/Python/3.11.12/x64/bin/python3.11",
    "prefix": "/home/runner/work/tornado/tornado/.tox/.pkg",
    "base_prefix": "/opt/hostedtoolcache/Python/3.11.12/x64",
    "real_prefix": null,
    "exec_prefix": "/home/runner/work/tornado/tornado/.tox/.pkg",
    "base_exec_prefix": "/opt/hostedtoolcache/Python/3.11.12/x64",
    "path": [
      "/opt/hostedtoolcache/Python/3.11.12/x64/lib/python311.zip",
      "/opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11",
      "/opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/lib-dynload",
      "/home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages"
    ],
    "meta_path": [
      "<class '_virtualenv._Finder'>",
      "<class '_frozen_importlib.BuiltinImporter'>",
      "<class '_frozen_importlib.FrozenImporter'>",
      "<class '_frozen_importlib_external.PathFinder'>"
    ],
    "fs_encoding": "utf-8",
    "io_encoding": "utf-8"
  },
  "version": "3.11.12 (main, Apr  8 2025, 21:35:37) [GCC 11.4.0]",
  "makefile_filename": "/opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/config-3.11-x86_64-linux-gnu/Makefile",
  "os": "<module 'os' (frozen)>",
  "site": "<module 'site' (frozen)>",
  "datetime": "<module 'datetime' from '/opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/datetime.py'>",
  "math": "<module 'math' from '/opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/lib-dynload/math.cpython-311-x86_64-linux-gnu.so'>",
  "json": "<module 'json' from '/opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/json/__init__.py'>"
} [virtualenv/run/session.py:53]
.pkg: 34898 I add seed packages via FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/runner/.local/share/virtualenv) [virtualenv/run/session.py:57]
.pkg: 34900 D install wheel from wheel /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/wheel-0.44.0-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:49]
.pkg: 34900 D install setuptools from wheel /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/setuptools-75.1.0-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:49]
.pkg: 34901 D install pip from wheel /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/pip-24.2-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:49]
.pkg: 34902 D build install image for wheel-0.44.0-py3-none-any.whl to /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/wheel-0.44.0-py3-none-any [virtualenv/seed/embed/via_app_data/pip_install/base.py:47]
.pkg: 34902 D build install image for pip-24.2-py3-none-any.whl to /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-24.2-py3-none-any [virtualenv/seed/embed/via_app_data/pip_install/base.py:47]
.pkg: 34902 D build install image for setuptools-75.1.0-py3-none-any.whl to /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-75.1.0-py3-none-any [virtualenv/seed/embed/via_app_data/pip_install/base.py:47]
.pkg: 34927 D copy /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/wheel-0.44.0-py3-none-any/wheel-0.44.0.virtualenv to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/wheel-0.44.0.virtualenv [virtualenv/util/path/_sync.py:40]
.pkg: 34927 D copy directory /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/wheel-0.44.0-py3-none-any/wheel-0.44.0.dist-info to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/wheel-0.44.0.dist-info [virtualenv/util/path/_sync.py:40]
.pkg: 34933 D copy directory /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/wheel-0.44.0-py3-none-any/wheel to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/wheel [virtualenv/util/path/_sync.py:40]
.pkg: 34952 D generated console scripts wheel3 wheel3.11 wheel-3.11 wheel [virtualenv/seed/embed/via_app_data/pip_install/base.py:43]
.pkg: 35055 D copy /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-24.2-py3-none-any/pip-24.2.virtualenv to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/pip-24.2.virtualenv [virtualenv/util/path/_sync.py:40]
.pkg: 35055 D copy directory /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-24.2-py3-none-any/pip-24.2.dist-info to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/pip-24.2.dist-info [virtualenv/util/path/_sync.py:40]
.pkg: 35059 D copy directory /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-24.2-py3-none-any/pip to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/pip [virtualenv/util/path/_sync.py:40]
.pkg: 35068 D copy directory /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-75.1.0-py3-none-any/_distutils_hack to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/_distutils_hack [virtualenv/util/path/_sync.py:40]
.pkg: 35069 D copy /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-75.1.0-py3-none-any/setuptools-75.1.0.virtualenv to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/setuptools-75.1.0.virtualenv [virtualenv/util/path/_sync.py:40]
.pkg: 35069 D copy directory /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-75.1.0-py3-none-any/setuptools-75.1.0.dist-info to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/setuptools-75.1.0.dist-info [virtualenv/util/path/_sync.py:40]
.pkg: 35071 D copy directory /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-75.1.0-py3-none-any/pkg_resources to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/pkg_resources [virtualenv/util/path/_sync.py:40]
.pkg: 35077 D copy directory /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-75.1.0-py3-none-any/setuptools to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/setuptools [virtualenv/util/path/_sync.py:40]
.pkg: 35166 D generated console scripts pip pip3 pip-3.11 pip3.11 [virtualenv/seed/embed/via_app_data/pip_install/base.py:43]
.pkg: 35178 D copy /home/runner/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-75.1.0-py3-none-any/distutils-precedence.pth to /home/runner/work/tornado/tornado/.tox/.pkg/lib/python3.11/site-packages/distutils-precedence.pth [virtualenv/util/path/_sync.py:40]
.pkg: 35179 D generated console scripts  [virtualenv/seed/embed/via_app_data/pip_install/base.py:43]
.pkg: 35179 I add activators for Bash, CShell, Fish, Nushell, PowerShell, Python [virtualenv/run/session.py:63]
.pkg: 35180 D write /home/runner/work/tornado/tornado/.tox/.pkg/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:33]
.pkg: 35180 D 	home = /opt/hostedtoolcache/Python/3.11.12/x64/bin [virtualenv/create/pyenv_cfg.py:38]
.pkg: 35180 D 	implementation = CPython [virtualenv/create/pyenv_cfg.py:38]
.pkg: 35180 D 	version_info = 3.11.12.final.0 [virtualenv/create/pyenv_cfg.py:38]
.pkg: 35180 D 	virtualenv = 20.26.6 [virtualenv/create/pyenv_cfg.py:38]
.pkg: 35181 D 	include-system-site-packages = false [virtualenv/create/pyenv_cfg.py:38]
.pkg: 35181 D 	base-prefix = /opt/hostedtoolcache/Python/3.11.12/x64 [virtualenv/create/pyenv_cfg.py:38]
.pkg: 35181 D 	base-exec-prefix = /opt/hostedtoolcache/Python/3.11.12/x64 [virtualenv/create/pyenv_cfg.py:38]
.pkg: 35181 D 	base-executable = /opt/hostedtoolcache/Python/3.11.12/x64/bin/python3.11 [virtualenv/create/pyenv_cfg.py:38]
.pkg: 35182 W install_requires> python -I -m pip install setuptools wheel [tox/tox_env/api.py:425]
Requirement already satisfied: setuptools in ./.tox/.pkg/lib/python3.11/site-packages (75.1.0)
Requirement already satisfied: wheel in ./.tox/.pkg/lib/python3.11/site-packages (0.44.0)
.pkg: 36076 I exit 0 (0.89 seconds) /home/runner/work/tornado/tornado> python -I -m pip install setuptools wheel pid=3160 [tox/execute/api.py:286]
.pkg: 36077 W _optional_hooks> python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta [tox/tox_env/api.py:425]
Backend: run command _optional_hooks with args {}
Backend: Wrote response {'return': {'get_requires_for_build_sdist': True, 'prepare_metadata_for_build_wheel': True, 'get_requires_for_build_wheel': True, 'build_editable': True, 'get_requires_for_build_editable': True, 'prepare_metadata_for_build_editable': True}} to /tmp/pep517__optional_hooks-c1fxmykz.json
.pkg: 36361 I exit None (0.28 seconds) /home/runner/work/tornado/tornado> python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta pid=3177 [tox/execute/api.py:286]
.pkg: 36402 W get_requires_for_build_sdist> python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta [tox/tox_env/api.py:425]
Backend: run command get_requires_for_build_sdist with args {'config_settings': None}
running egg_info
creating tornado.egg-info
writing tornado.egg-info/PKG-INFO
writing dependency_links to tornado.egg-info/dependency_links.txt
writing top-level names to tornado.egg-info/top_level.txt
writing manifest file 'tornado.egg-info/SOURCES.txt'
reading manifest file 'tornado.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'docs/build'
warning: no files found matching 'tornado/test/README'
adding license file 'LICENSE'
writing manifest file 'tornado.egg-info/SOURCES.txt'
Backend: Wrote response {'return': []} to /tmp/pep517_get_requires_for_build_sdist-o2gjmv_r.json
.pkg: 36585 I exit None (0.18 seconds) /home/runner/work/tornado/tornado> python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta pid=3183 [tox/execute/api.py:286]
.pkg: 36627 W get_requires_for_build_wheel> python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta [tox/tox_env/api.py:425]
Backend: run command get_requires_for_build_wheel with args {'config_settings': None}
running egg_info
writing tornado.egg-info/PKG-INFO
writing dependency_links to tornado.egg-info/dependency_links.txt
writing top-level names to tornado.egg-info/top_level.txt
reading manifest file 'tornado.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'docs/build'
warning: no files found matching 'tornado/test/README'
adding license file 'LICENSE'
writing manifest file 'tornado.egg-info/SOURCES.txt'
Backend: Wrote response {'return': []} to /tmp/pep517_get_requires_for_build_wheel-ikja6xrk.json
.pkg: 36777 I exit None (0.15 seconds) /home/runner/work/tornado/tornado> python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta pid=3201 [tox/execute/api.py:286]
.pkg: 36818 W freeze> python -m pip freeze --all [tox/tox_env/api.py:425]
.pkg: 37036 I exit 0 (0.22 seconds) /home/runner/work/tornado/tornado> python -m pip freeze --all pid=3215 [tox/execute/api.py:286]
.pkg: 37036 W pip==24.2,setuptools==75.1.0,wheel==0.44.0 [tox/tox_env/python/api.py:238]
.pkg: 37036 W prepare_metadata_for_build_wheel> python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta [tox/tox_env/api.py:425]
Backend: run command prepare_metadata_for_build_wheel with args {'metadata_directory': '/home/runner/work/tornado/tornado/.tox/.pkg/.meta', 'config_settings': None}
running dist_info
creating /home/runner/work/tornado/tornado/.tox/.pkg/.meta/tornado.egg-info
writing /home/runner/work/tornado/tornado/.tox/.pkg/.meta/tornado.egg-info/PKG-INFO
writing dependency_links to /home/runner/work/tornado/tornado/.tox/.pkg/.meta/tornado.egg-info/dependency_links.txt
writing top-level names to /home/runner/work/tornado/tornado/.tox/.pkg/.meta/tornado.egg-info/top_level.txt
writing manifest file '/home/runner/work/tornado/tornado/.tox/.pkg/.meta/tornado.egg-info/SOURCES.txt'
reading manifest file '/home/runner/work/tornado/tornado/.tox/.pkg/.meta/tornado.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'docs/build'
warning: no files found matching 'tornado/test/README'
adding license file 'LICENSE'
writing manifest file '/home/runner/work/tornado/tornado/.tox/.pkg/.meta/tornado.egg-info/SOURCES.txt'
creating '/home/runner/work/tornado/tornado/.tox/.pkg/.meta/tornado-6.5b1.dist-info'
Backend: Wrote response {'return': 'tornado-6.5b1.dist-info'} to /tmp/pep517_prepare_metadata_for_build_wheel-afk9vw8z.json
.pkg: 37250 I exit None (0.21 seconds) /home/runner/work/tornado/tornado> python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta pid=3220 [tox/execute/api.py:286]
.pkg: 37292 W build_sdist> python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta [tox/tox_env/api.py:425]
Backend: run command build_sdist with args {'sdist_directory': '/home/runner/work/tornado/tornado/.tox/.pkg/dist', 'config_settings': None}
running sdist
running egg_info
writing tornado.egg-info/PKG-INFO
writing dependency_links to tornado.egg-info/dependency_links.txt
writing top-level names to tornado.egg-info/top_level.txt
reading manifest file 'tornado.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'docs/build'
warning: no files found matching 'tornado/test/README'
adding license file 'LICENSE'
writing manifest file 'tornado.egg-info/SOURCES.txt'
running check
creating tornado-6.5b1
creating tornado-6.5b1/docs
creating tornado-6.5b1/docs/guide
creating tornado-6.5b1/docs/releases
creating tornado-6.5b1/tornado
creating tornado-6.5b1/tornado.egg-info
creating tornado-6.5b1/tornado/platform
creating tornado-6.5b1/tornado/test
creating tornado-6.5b1/tornado/test/csv_translations
creating tornado-6.5b1/tornado/test/gettext_translations/fr_FR/LC_MESSAGES
creating tornado-6.5b1/tornado/test/static
creating tornado-6.5b1/tornado/test/static/dir
creating tornado-6.5b1/tornado/test/templates
copying files to tornado-6.5b1...
copying LICENSE -> tornado-6.5b1
copying MANIFEST.in -> tornado-6.5b1
copying README.rst -> tornado-6.5b1
copying pyproject.toml -> tornado-6.5b1
copying requirements.in -> tornado-6.5b1
copying requirements.txt -> tornado-6.5b1
copying runtests.sh -> tornado-6.5b1
copying setup.cfg -> tornado-6.5b1
copying setup.py -> tornado-6.5b1
copying tox.ini -> tornado-6.5b1
copying docs/Makefile -> tornado-6.5b1/docs
copying docs/asyncio.rst -> tornado-6.5b1/docs
copying docs/auth.rst -> tornado-6.5b1/docs
copying docs/autoreload.rst -> tornado-6.5b1/docs
copying docs/caresresolver.rst -> tornado-6.5b1/docs
copying docs/concurrent.rst -> tornado-6.5b1/docs
copying docs/conf.py -> tornado-6.5b1/docs
copying docs/coroutine.rst -> tornado-6.5b1/docs
copying docs/escape.rst -> tornado-6.5b1/docs
copying docs/faq.rst -> tornado-6.5b1/docs
copying docs/favicon.ico -> tornado-6.5b1/docs
copying docs/gen.rst -> tornado-6.5b1/docs
copying docs/guide.rst -> tornado-6.5b1/docs
copying docs/http.rst -> tornado-6.5b1/docs
copying docs/http1connection.rst -> tornado-6.5b1/docs
copying docs/httpclient.rst -> tornado-6.5b1/docs
copying docs/httpserver.rst -> tornado-6.5b1/docs
copying docs/httputil.rst -> tornado-6.5b1/docs
copying docs/index.rst -> tornado-6.5b1/docs
copying docs/integration.rst -> tornado-6.5b1/docs
copying docs/ioloop.rst -> tornado-6.5b1/docs
copying docs/iostream.rst -> tornado-6.5b1/docs
copying docs/locale.rst -> tornado-6.5b1/docs
copying docs/locks.rst -> tornado-6.5b1/docs
copying docs/log.rst -> tornado-6.5b1/docs
copying docs/netutil.rst -> tornado-6.5b1/docs
copying docs/networking.rst -> tornado-6.5b1/docs
copying docs/options.rst -> tornado-6.5b1/docs
copying docs/process.rst -> tornado-6.5b1/docs
copying docs/queues.rst -> tornado-6.5b1/docs
copying docs/releases.rst -> tornado-6.5b1/docs
copying docs/routing.rst -> tornado-6.5b1/docs
copying docs/tcpclient.rst -> tornado-6.5b1/docs
copying docs/tcpserver.rst -> tornado-6.5b1/docs
copying docs/template.rst -> tornado-6.5b1/docs
copying docs/testing.rst -> tornado-6.5b1/docs
copying docs/tornado.png -> tornado-6.5b1/docs
copying docs/twisted.rst -> tornado-6.5b1/docs
copying docs/util.rst -> tornado-6.5b1/docs
copying docs/utilities.rst -> tornado-6.5b1/docs
copying docs/web.rst -> tornado-6.5b1/docs
copying docs/webframework.rst -> tornado-6.5b1/docs
copying docs/websocket.rst -> tornado-6.5b1/docs
copying docs/wsgi.rst -> tornado-6.5b1/docs
copying docs/guide/async.rst -> tornado-6.5b1/docs/guide
copying docs/guide/coroutines.rst -> tornado-6.5b1/docs/guide
copying docs/guide/intro.rst -> tornado-6.5b1/docs/guide
copying docs/guide/queues.rst -> tornado-6.5b1/docs/guide
copying docs/guide/running.rst -> tornado-6.5b1/docs/guide
copying docs/guide/security.rst -> tornado-6.5b1/docs/guide
copying docs/guide/structure.rst -> tornado-6.5b1/docs/guide
copying docs/guide/templates.rst -> tornado-6.5b1/docs/guide
copying docs/releases/v1.0.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v1.0.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v1.1.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v1.1.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v1.2.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v1.2.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v2.0.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v2.1.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v2.1.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v2.2.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v2.2.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v2.3.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v2.4.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v2.4.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v3.0.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v3.0.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v3.0.2.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v3.1.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v3.1.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v3.2.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v3.2.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v3.2.2.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.0.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.0.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.0.2.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.1.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.2.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.2.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.3.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.4.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.4.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.4.2.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.4.3.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.5.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.5.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.5.2.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v4.5.3.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v5.0.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v5.0.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v5.0.2.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v5.1.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v5.1.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.0.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.0.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.0.2.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.0.3.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.0.4.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.1.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.2.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.3.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.3.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.3.2.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.3.3.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.4.0.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.4.1.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.4.2.rst -> tornado-6.5b1/docs/releases
copying docs/releases/v6.5.0.rst -> tornado-6.5b1/docs/releases
copying tornado/__init__.py -> tornado-6.5b1/tornado
copying tornado/__init__.pyi -> tornado-6.5b1/tornado
copying tornado/_locale_data.py -> tornado-6.5b1/tornado
copying tornado/auth.py -> tornado-6.5b1/tornado
copying tornado/autoreload.py -> tornado-6.5b1/tornado
copying tornado/concurrent.py -> tornado-6.5b1/tornado
copying tornado/curl_httpclient.py -> tornado-6.5b1/tornado
copying tornado/escape.py -> tornado-6.5b1/tornado
copying tornado/gen.py -> tornado-6.5b1/tornado
copying tornado/http1connection.py -> tornado-6.5b1/tornado
copying tornado/httpclient.py -> tornado-6.5b1/tornado
copying tornado/httpserver.py -> tornado-6.5b1/tornado
copying tornado/httputil.py -> tornado-6.5b1/tornado
copying tornado/ioloop.py -> tornado-6.5b1/tornado
copying tornado/iostream.py -> tornado-6.5b1/tornado
copying tornado/locale.py -> tornado-6.5b1/tornado
copying tornado/locks.py -> tornado-6.5b1/tornado
copying tornado/log.py -> tornado-6.5b1/tornado
copying tornado/netutil.py -> tornado-6.5b1/tornado
copying tornado/options.py -> tornado-6.5b1/tornado
copying tornado/process.py -> tornado-6.5b1/tornado
copying tornado/py.typed -> tornado-6.5b1/tornado
copying tornado/queues.py -> tornado-6.5b1/tornado
copying tornado/routing.py -> tornado-6.5b1/tornado
copying tornado/simple_httpclient.py -> tornado-6.5b1/tornado
copying tornado/speedups.c -> tornado-6.5b1/tornado
copying tornado/speedups.pyi -> tornado-6.5b1/tornado
copying tornado/tcpclient.py -> tornado-6.5b1/tornado
copying tornado/tcpserver.py -> tornado-6.5b1/tornado
copying tornado/template.py -> tornado-6.5b1/tornado
copying tornado/testing.py -> tornado-6.5b1/tornado
copying tornado/util.py -> tornado-6.5b1/tornado
copying tornado/web.py -> tornado-6.5b1/tornado
copying tornado/websocket.py -> tornado-6.5b1/tornado
copying tornado/wsgi.py -> tornado-6.5b1/tornado
copying tornado.egg-info/PKG-INFO -> tornado-6.5b1/tornado.egg-info
copying tornado.egg-info/SOURCES.txt -> tornado-6.5b1/tornado.egg-info
copying tornado.egg-info/dependency_links.txt -> tornado-6.5b1/tornado.egg-info
copying tornado.egg-info/top_level.txt -> tornado-6.5b1/tornado.egg-info
copying tornado/platform/__init__.py -> tornado-6.5b1/tornado/platform
copying tornado/platform/asyncio.py -> tornado-6.5b1/tornado/platform
copying tornado/platform/caresresolver.py -> tornado-6.5b1/tornado/platform
copying tornado/platform/twisted.py -> tornado-6.5b1/tornado/platform
copying tornado/test/__init__.py -> tornado-6.5b1/tornado/test
copying tornado/test/__main__.py -> tornado-6.5b1/tornado/test
copying tornado/test/asyncio_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/auth_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/autoreload_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/circlerefs_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/concurrent_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/curl_httpclient_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/escape_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/gen_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/http1connection_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/httpclient_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/httpserver_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/httputil_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/import_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/ioloop_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/iostream_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/locale_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/locks_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/log_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/netutil_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/options_test.cfg -> tornado-6.5b1/tornado/test
copying tornado/test/options_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/options_test_types.cfg -> tornado-6.5b1/tornado/test
copying tornado/test/options_test_types_str.cfg -> tornado-6.5b1/tornado/test
copying tornado/test/process_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/queues_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/resolve_test_helper.py -> tornado-6.5b1/tornado/test
copying tornado/test/routing_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/runtests.py -> tornado-6.5b1/tornado/test
copying tornado/test/simple_httpclient_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/static_foo.txt -> tornado-6.5b1/tornado/test
copying tornado/test/tcpclient_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/tcpserver_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/template_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/test.crt -> tornado-6.5b1/tornado/test
copying tornado/test/test.key -> tornado-6.5b1/tornado/test
copying tornado/test/testing_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/twisted_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/util.py -> tornado-6.5b1/tornado/test
copying tornado/test/util_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/web_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/websocket_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/wsgi_test.py -> tornado-6.5b1/tornado/test
copying tornado/test/csv_translations/fr_FR.csv -> tornado-6.5b1/tornado/test/csv_translations
copying tornado/test/gettext_translations/fr_FR/LC_MESSAGES/tornado_test.mo -> tornado-6.5b1/tornado/test/gettext_translations/fr_FR/LC_MESSAGES
copying tornado/test/gettext_translations/fr_FR/LC_MESSAGES/tornado_test.po -> tornado-6.5b1/tornado/test/gettext_translations/fr_FR/LC_MESSAGES
copying tornado/test/static/robots.txt -> tornado-6.5b1/tornado/test/static
copying tornado/test/static/sample.xml -> tornado-6.5b1/tornado/test/static
copying tornado/test/static/sample.xml.bz2 -> tornado-6.5b1/tornado/test/static
copying tornado/test/static/sample.xml.gz -> tornado-6.5b1/tornado/test/static
copying tornado/test/static/dir/index.html -> tornado-6.5b1/tornado/test/static/dir
copying tornado/test/templates/utf8.html -> tornado-6.5b1/tornado/test/templates
copying tornado.egg-info/SOURCES.txt -> tornado-6.5b1/tornado.egg-info
Writing tornado-6.5b1/setup.cfg
Creating tar archive
removing 'tornado-6.5b1' (and everything under it)
Backend: Wrote response {'return': 'tornado-6.5b1.tar.gz'} to /tmp/pep517_build_sdist-0ay8v5st.json
.pkg: 37726 I exit None (0.43 seconds) /home/runner/work/tornado/tornado> python /opt/hostedtoolcache/Python/3.11.12/x64/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta pid=3239 [tox/execute/api.py:286]
.pkg: 37767 D package .tmp/package/1/tornado-6.5b1.tar.gz links to .pkg/dist/tornado-6.5b1.tar.gz (/home/runner/work/tornado/tornado/.tox) [tox/util/file_view.py:39]
py314-full: 37768 W install_package> python -I -m pip install --force-reinstall --no-deps /home/runner/work/tornado/tornado/.tox/.tmp/package/1/tornado-6.5b1.tar.gz [tox/tox_env/api.py:425]
Processing ./.tox/.tmp/package/1/tornado-6.5b1.tar.gz
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Building wheels for collected packages: tornado
  Building wheel for tornado (pyproject.toml): started
  Building wheel for tornado (pyproject.toml): finished with status 'done'
  Created wheel for tornado: filename=tornado-6.5b1-cp39-abi3-linux_x86_64.whl size=440717 sha256=f1a1e7760fa12bd7dcd2df4fbd9d8150f4a29916d658ee7e8d2038638cc644e8
  Stored in directory: /home/runner/.cache/pip/wheels/66/1f/05/266e253db987bd67ed3e156f13e47935149a2b34a0f938db0f
Successfully built tornado
Installing collected packages: tornado
Successfully installed tornado-6.5b1
py314-full: 41427 I exit 0 (3.66 seconds) /home/runner/work/tornado/tornado> python -I -m pip install --force-reinstall --no-deps /home/runner/work/tornado/tornado/.tox/.tmp/package/1/tornado-6.5b1.tar.gz pid=3476 [tox/execute/api.py:286]
py314-full: 41428 W freeze> python -m pip freeze --all [tox/tox_env/api.py:425]
py314-full: 41692 I exit 0 (0.26 seconds) /home/runner/work/tornado/tornado> python -m pip freeze --all pid=3522 [tox/execute/api.py:286]
py314-full: 41692 W attrs==25.3.0,Automat==25.4.16,cffi==1.17.1,constantly==23.10.4,hyperlink==21.0.0,idna==3.10,incremental==24.7.2,pip==24.2,pycares==4.8.0,pycparser==2.22,pycurl==7.45.6,setuptools==80.4.0,tornado @ file:///home/runner/work/tornado/tornado/.tox/.tmp/package/1/tornado-6.5b1.tar.gz#sha256=74779ee43f0df1306401c872b622bccbf1cb4bbc81f7aa2117bce96e536b1b0d,Twisted==24.11.0,typing_extensions==4.13.2,zope.interface==7.2 [tox/tox_env/python/api.py:238]
py314-full: 41693 W commands[0] /home/runner/work/tornado/tornado/.tox> python --version [tox/tox_env/api.py:425]
Python 3.14.0b1
py314-full: 41696 I exit 0 (0.00 seconds) /home/runner/work/tornado/tornado/.tox> python --version pid=3527 [tox/execute/api.py:286]
py314-full: 41696 W commands[1] /home/runner/work/tornado/tornado/.tox> python -bb -m tornado.test [tox/tox_env/api.py:425]
........................................................................................................................................................................................................................................................................................................................................................................................................................s.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................s...........s.................................................................................................s.................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 1218 tests in 17.262s

OK (skipped=4)
Some tests were skipped because: implicit event loop creation not
available, needs fix, no testable future imports, py312 has its own
check for test case returns
py314-full: 59474 I exit 0 (17.78 seconds) /home/runner/work/tornado/tornado/.tox> python -bb -m tornado.test pid=3533 [tox/execute/api.py:286]
py314-full: 59474 W commands[2] /home/runner/work/tornado/tornado/.tox> python -O -m tornado.test [tox/tox_env/api.py:425]
........................................................................................................................................................................................................................................................................................................................................................................................................................s.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................s...........s.................................................................................................s.................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 1218 tests in 17.210s

OK (skipped=4)
Some tests were skipped because: implicit event loop creation not
available, needs fix, no testable future imports, py312 has its own
check for test case returns
py314-full: 78243 I exit 0 (18.77 seconds) /home/runner/work/tornado/tornado/.tox> python -O -m tornado.test pid=5246 [tox/execute/api.py:286]
py314-full: 78243 W commands[3] /home/runner/work/tornado/tornado/.tox> python -m tornado.test --httpclient=tornado.curl_httpclient.CurlAsyncHTTPClient [tox/tox_env/api.py:425]
........................................................................................................................................................................................................................................................................................................................................................................................................................s...................................................................................................................................................................................................................................................................................................................................s.....................................................................................................................................................................................s...........s.................................................................................................s.................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 1218 tests in 16.980s

OK (skipped=5)
Some tests were skipped because: curl client accepts invalid headers,
implicit event loop creation not available, needs fix, no testable
future imports, py312 has its own check for test case returns
py314-full: 95506 I exit 0 (17.26 seconds) /home/runner/work/tornado/tornado/.tox> python -m tornado.test --httpclient=tornado.curl_httpclient.CurlAsyncHTTPClient pid=6961 [tox/execute/api.py:286]
py314-full: 95506 W commands[4] /home/runner/work/tornado/tornado/.tox> python -m tornado.test --resolver=tornado.platform.caresresolver.CaresResolver [tox/tox_env/api.py:425]
........................................................................................................................................................................................................................................................................................................................................................................................................................s.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................s...........s.................................................................................................s..............................................................................................................................................................s..................................
----------------------------------------------------------------------
Ran 1218 tests in 17.348s

OK (skipped=5)
Some tests were skipped because: implicit event loop creation not
available, localhost does not resolve to ipv4, needs fix, no testable
future imports, py312 has its own check for test case returns
py314-full: 113138 I exit 0 (17.63 seconds) /home/runner/work/tornado/tornado/.tox> python -m tornado.test --resolver=tornado.platform.caresresolver.CaresResolver pid=8399 [tox/execute/api.py:286]
.pkg: 113139 D delete package /home/runner/work/tornado/tornado/.tox/.tmp/package/1/tornado-6.5b1.tar.gz [tox/tox_env/python/virtual_env/package/pyproject.py:224]
  py314-full: OK (112.84=setup[41.39]+cmd[0.00,17.78,18.77,17.26,17.63] seconds)
  congratulations :) (112.99 seconds)

Minimal example

Unfortunately I haven't been able to reproduce this outside my full CI environment. One commit that demonstrates the problem is tornadoweb/tornado@5ec0c39.

@bdarnell
Copy link
Author

Putting the 3.11 bin directory on $PATH and running python -m tox or the tox script both work as expected; the problem only occurs when python3.11 -m tox is used.

Oops, I spoke too soon. I'm pretty sure I had a successful run after making this change, but now I still see it picking the wrong python, even when I'm running the tox script. So python -m is not implicated in the problem. I'm guessing now that it has something to do with the way actions/setup-python sets up the environment when installing multiple python versions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant