Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

It is not possible for a tox plugin to change the value of tox_root #2966

Closed
kdestin opened this issue Mar 31, 2023 · 0 comments · Fixed by #2978
Closed

It is not possible for a tox plugin to change the value of tox_root #2966

kdestin opened this issue Mar 31, 2023 · 0 comments · Fixed by #2978

Comments

@kdestin
Copy link
Contributor

kdestin commented Mar 31, 2023

Issue

Based on this #2882 (comment) response to a discussion question, it seems like the recommended way for tox plugins to set config values is to use a memory loader.

This seems to work in most cases, but tox_root appears to be an exception.

Reproduced on 4.4.8

Environment

Provide at least:

  • OS:
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.1 LTS
Release:	22.04
Codename:	jammy
  • pip list of the host Python where tox is installed:
Package       Version
------------- -------
cachetools    5.3.0
chardet       5.1.0
colorama      0.4.6
distlib       0.3.6
filelock      3.10.7
packaging     23.0
pip           22.0.2
platformdirs  3.2.0
pluggy        1.0.0
pyproject_api 1.5.1
setuptools    59.6.0
tomli         2.0.1
tox           4.4.8
virtualenv    20.21.0

Output of running tox

Provide the output of tox -rvv:

py: 793 I find interpreter for spec PythonSpec(path=/home/kd/Documents/tox/venv/bin/python3) [virtualenv/discovery/builtin.py:56]
py: 794 D discover exe for PythonInfo(spec=CPython3.10.6.final.0-64, exe=/home/kd/Documents/tox/venv/bin/python3, platform=linux, version='3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]', encoding_fs_io=utf-8-utf-8) in /usr [virtualenv/discovery/py_info.py:437]
py: 795 D filesystem is case-sensitive [virtualenv/info.py:24]
py: 797 D got python info of /usr/bin/python3.10 from /home/kd/.local/share/virtualenv/py_info/1/8a94588eda9d64d9e9a351ab8144e55b1fabf5113b54e67dd26a8c27df0381b3.json [virtualenv/app_data/via_disk_folder.py:129]
py: 799 I proposed PythonInfo(spec=CPython3.10.6.final.0-64, system=/usr/bin/python3.10, exe=/home/kd/Documents/tox/venv/bin/python3, platform=linux, version='3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:63]
py: 799 D accepted PythonInfo(spec=CPython3.10.6.final.0-64, system=/usr/bin/python3.10, exe=/home/kd/Documents/tox/venv/bin/python3, platform=linux, version='3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]', encoding_fs_io=utf-8-utf-8) [virtualenv/discovery/builtin.py:65]
py: 886 I create virtual environment via CPython3Posix(dest=/home/kd/py, clear=False, no_vcs_ignore=False, global=False) [virtualenv/run/session.py:48]
py: 888 D create folder /home/kd/py/bin [virtualenv/util/path/_sync.py:9]
py: 889 D create folder /home/kd/py/lib/python3.10/site-packages [virtualenv/util/path/_sync.py:9]
py: 890 D write /home/kd/py/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:30]
py: 890 D 	home = /usr/bin [virtualenv/create/pyenv_cfg.py:34]
py: 890 D 	implementation = CPython [virtualenv/create/pyenv_cfg.py:34]
py: 890 D 	version_info = 3.10.6.final.0 [virtualenv/create/pyenv_cfg.py:34]
py: 891 D 	virtualenv = 20.21.0 [virtualenv/create/pyenv_cfg.py:34]
py: 891 D 	include-system-site-packages = false [virtualenv/create/pyenv_cfg.py:34]
py: 891 D 	base-prefix = /usr [virtualenv/create/pyenv_cfg.py:34]
py: 892 D 	base-exec-prefix = /usr [virtualenv/create/pyenv_cfg.py:34]
py: 892 D 	base-executable = /usr/bin/python3.10 [virtualenv/create/pyenv_cfg.py:34]
py: 893 D symlink /usr/bin/python3.10 to /home/kd/py/bin/python [virtualenv/util/path/_sync.py:28]
py: 895 D create virtualenv import hook file /home/kd/py/lib/python3.10/site-packages/_virtualenv.pth [virtualenv/create/via_global_ref/api.py:89]
py: 896 D create /home/kd/py/lib/python3.10/site-packages/_virtualenv.py [virtualenv/create/via_global_ref/api.py:92]
py: 897 D ============================== target debug ============================== [virtualenv/run/session.py:50]
py: 898 D debug via /home/kd/py/bin/python /home/kd/Documents/tox/venv/lib/python3.10/site-packages/virtualenv/create/debug.py [virtualenv/create/creator.py:193]
py: 897 D {
  "sys": {
    "executable": "/home/kd/py/bin/python",
    "_base_executable": "/home/kd/py/bin/python",
    "prefix": "/home/kd/py",
    "base_prefix": "/usr",
    "real_prefix": null,
    "exec_prefix": "/home/kd/py",
    "base_exec_prefix": "/usr",
    "path": [
      "/usr/lib/python310.zip",
      "/usr/lib/python3.10",
      "/usr/lib/python3.10/lib-dynload",
      "/home/kd/py/lib/python3.10/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.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]",
  "makefile_filename": "/usr/lib/python3.10/config-3.10-x86_64-linux-gnu/Makefile",
  "os": "<module 'os' from '/usr/lib/python3.10/os.py'>",
  "site": "<module 'site' from '/usr/lib/python3.10/site.py'>",
  "datetime": "<module 'datetime' from '/usr/lib/python3.10/datetime.py'>",
  "math": "<module 'math' (built-in)>",
  "json": "<module 'json' from '/usr/lib/python3.10/json/__init__.py'>"
} [virtualenv/run/session.py:51]
py: 1043 I add seed packages via FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/kd/.local/share/virtualenv) [virtualenv/run/session.py:55]
py: 1065 D got embed update of distribution wheel from /home/kd/.local/share/virtualenv/wheel/3.10/embed/3/wheel.json [virtualenv/app_data/via_disk_folder.py:129]
py: 1068 D got embed update of distribution setuptools from /home/kd/.local/share/virtualenv/wheel/3.10/embed/3/setuptools.json [virtualenv/app_data/via_disk_folder.py:129]
py: 1069 D got embed update of distribution pip from /home/kd/.local/share/virtualenv/wheel/3.10/embed/3/pip.json [virtualenv/app_data/via_disk_folder.py:129]
py: 1078 D install wheel from wheel /home/kd/Documents/tox/venv/lib/python3.10/site-packages/virtualenv/seed/wheels/embed/wheel-0.38.4-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:47]
py: 1079 D install setuptools from wheel /home/kd/Documents/tox/venv/lib/python3.10/site-packages/virtualenv/seed/wheels/embed/setuptools-67.4.0-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:47]
py: 1082 D install pip from wheel /home/kd/Documents/tox/venv/lib/python3.10/site-packages/virtualenv/seed/wheels/embed/pip-23.0.1-py3-none-any.whl via CopyPipInstall [virtualenv/seed/embed/via_app_data/via_app_data.py:47]
py: 1093 D copy directory /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/pip-23.0.1-py3-none-any/pip to /home/kd/py/lib/python3.10/site-packages/pip [virtualenv/util/path/_sync.py:36]
py: 1098 D copy /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/setuptools-67.4.0-py3-none-any/setuptools-67.4.0.virtualenv to /home/kd/py/lib/python3.10/site-packages/setuptools-67.4.0.virtualenv [virtualenv/util/path/_sync.py:36]
py: 1100 D copy directory /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/wheel-0.38.4-py3-none-any/wheel to /home/kd/py/lib/python3.10/site-packages/wheel [virtualenv/util/path/_sync.py:36]
py: 1104 D copy directory /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/setuptools-67.4.0-py3-none-any/_distutils_hack to /home/kd/py/lib/python3.10/site-packages/_distutils_hack [virtualenv/util/path/_sync.py:36]
py: 1121 D copy directory /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/setuptools-67.4.0-py3-none-any/setuptools-67.4.0.dist-info to /home/kd/py/lib/python3.10/site-packages/setuptools-67.4.0.dist-info [virtualenv/util/path/_sync.py:36]
py: 1154 D copy directory /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/setuptools-67.4.0-py3-none-any/setuptools to /home/kd/py/lib/python3.10/site-packages/setuptools [virtualenv/util/path/_sync.py:36]
py: 1181 D copy /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/wheel-0.38.4-py3-none-any/wheel-0.38.4.virtualenv to /home/kd/py/lib/python3.10/site-packages/wheel-0.38.4.virtualenv [virtualenv/util/path/_sync.py:36]
py: 1187 D copy directory /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/wheel-0.38.4-py3-none-any/wheel-0.38.4.dist-info to /home/kd/py/lib/python3.10/site-packages/wheel-0.38.4.dist-info [virtualenv/util/path/_sync.py:36]
py: 1225 D generated console scripts wheel-3.10 wheel3 wheel3.10 wheel [virtualenv/seed/embed/via_app_data/pip_install/base.py:41]
py: 1506 D copy directory /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/setuptools-67.4.0-py3-none-any/pkg_resources to /home/kd/py/lib/python3.10/site-packages/pkg_resources [virtualenv/util/path/_sync.py:36]
py: 1599 D copy /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/setuptools-67.4.0-py3-none-any/distutils-precedence.pth to /home/kd/py/lib/python3.10/site-packages/distutils-precedence.pth [virtualenv/util/path/_sync.py:36]
py: 1604 D generated console scripts  [virtualenv/seed/embed/via_app_data/pip_install/base.py:41]
py: 1765 D copy directory /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/pip-23.0.1-py3-none-any/pip-23.0.1.dist-info to /home/kd/py/lib/python3.10/site-packages/pip-23.0.1.dist-info [virtualenv/util/path/_sync.py:36]
py: 1770 D copy /home/kd/.local/share/virtualenv/wheel/3.10/image/1/CopyPipInstall/pip-23.0.1-py3-none-any/pip-23.0.1.virtualenv to /home/kd/py/lib/python3.10/site-packages/pip-23.0.1.virtualenv [virtualenv/util/path/_sync.py:36]
py: 1772 D generated console scripts pip pip3 pip-3.10 pip3.10 [virtualenv/seed/embed/via_app_data/pip_install/base.py:41]
py: 1773 I add activators for Bash, CShell, Fish, Nushell, PowerShell, Python [virtualenv/run/session.py:61]
py: 1778 D write /home/kd/py/pyvenv.cfg [virtualenv/create/pyenv_cfg.py:30]
py: 1779 D 	home = /usr/bin [virtualenv/create/pyenv_cfg.py:34]
py: 1779 D 	implementation = CPython [virtualenv/create/pyenv_cfg.py:34]
py: 1779 D 	version_info = 3.10.6.final.0 [virtualenv/create/pyenv_cfg.py:34]
py: 1780 D 	virtualenv = 20.21.0 [virtualenv/create/pyenv_cfg.py:34]
py: 1780 D 	include-system-site-packages = false [virtualenv/create/pyenv_cfg.py:34]
py: 1780 D 	base-prefix = /usr [virtualenv/create/pyenv_cfg.py:34]
py: 1780 D 	base-exec-prefix = /usr [virtualenv/create/pyenv_cfg.py:34]
py: 1780 D 	base-executable = /usr/bin/python3.10 [virtualenv/create/pyenv_cfg.py:34]
  py: OK (1.01 seconds)
  congratulations :) (1.20 seconds)

Minimal example

If possible, provide a minimal reproducer for the issue:

  1. Reproduce minimal tox project

      $ tree
     .
     ├── foo/
     ├── toxfile.py
     └── tox.ini

    Where

    # tox.ini
    [testenv]
    commands=
        python -c "print(\"tox_root:\", '{tox_root}')"
    # toxfile.py
    from tox import plugin
    from tox.config.sets import CoreConfigSet
    from tox.config.loader.memory import MemoryLoader
    from tox.session.state import State
    from pathlib import Path
    
    @plugin.impl
    def tox_add_core_config(core_conf: CoreConfigSet, state: State):
        core_conf.loaders.insert(0, MemoryLoader(tox_root=Path(__file__).parent / "foo")
  2. Run tox -qq

    Expected Output:

    tox_root:	/home/kd/Documents/tox/repro/foo

    Actual Output:

    tox_root:	/home/kd/Documents/tox/repro/
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

Successfully merging a pull request may close this issue.

1 participant