Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: tox-dev/tox
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 4.40.0
Choose a base ref
...
head repository: tox-dev/tox
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 4.41.0
Choose a head ref
  • 3 commits
  • 23 files changed
  • 3 contributors

Commits on Feb 19, 2026

  1. Prefer TOML-native config over legacy_tox_ini in pyproject.toml (#3776)

    Swap the discovery priority of TomlPyProject and LegacyToml so that
    native TOML configuration ([tool.tox]) is preferred over legacy_tox_ini
    when both are present in pyproject.toml. This allows users to include a
    legacy_tox_ini section with min_version for backward compatibility with
    older tox versions while using native TOML config for newer ones.
    
    Fixes #3402 
    
    <!-- Thank you for your contribution!
    
    Please, make sure you address all the checklists (for details on how see
    [development
    documentation](http://tox.readthedocs.org/en/latest/development.html#development))!
    -->
    
    - [x] ran the linter to address style issues (`tox -e fix`)
    - [x] wrote descriptive pull request text
    - [x] ensured there are test(s) validating the fix
    - [x] added news fragment in `docs/changelog` folder
    - [x] updated/extended the documentation
    rahuldevikar authored Feb 19, 2026
    Configuration menu
    Copy the full SHA
    95d63fb View commit details
    Browse the repository at this point in the history
  2. ✨ feat(config): add package = "deps-only" mode (#3774)

    Many tox environments -- coverage combining, doc building, linting --
    need a project's dependencies (and extras) but not the project itself.
    Today the only option is `skip_install = true` plus manually duplicating
    every dependency in `deps`, which drifts out of sync with
    `pyproject.toml`. This adds `package = "deps-only"` so those
    environments can declare `extras = ["docs"]` and get the right
    dependencies automatically, just like a normal test environment, without
    paying for a build step. 🎯
    
    The implementation uses a two-tier resolution strategy. It first tries
    to read dependencies statically from a PEP 621 `[project]` table in
    `pyproject.toml` -- no packaging environment needed, same fast path as
    `dependency_groups`. If that fails (dynamic deps, no `[project]` table,
    `setup.cfg`-only projects), it falls back to the existing `.pkg` env and
    `prepare_metadata_for_build_wheel` to extract metadata. A new
    `load_deps_for_env` abstract method on `PythonPackageToxEnv` exposes
    this fallback cleanly to the runner.
    
    The `extras` config key works identically to other package modes,
    including validation of unknown extra names. Existing configurations are
    unaffected -- `deps-only` is purely opt-in alongside the existing
    `wheel`, `sdist`, `sdist-wheel`, `editable`, `editable-legacy`, `skip`,
    and `external` modes.
    
    Fixes #2301
    
    ---------
    
    Signed-off-by: Bernát Gábor <[email protected]>
    gaborbernat authored Feb 19, 2026
    Configuration menu
    Copy the full SHA
    82629e5 View commit details
    Browse the repository at this point in the history
  3. release 4.41.0

    gaborbernat committed Feb 19, 2026
    Configuration menu
    Copy the full SHA
    96d25a9 View commit details
    Browse the repository at this point in the history
Loading