Repository: wntrblm/nox
Pull request #747 (2023-11-12 18:40:49)

Bump minimum virtualenv to 20.14.1
`virtualenv` dependencies, for example

- https://github.com/pypa/virtualenv/issues/2666

can cause dependency resolution of `virtualenv` to drop to an older version (for example `20.4.7`) that can cause `nox` to fail due to using deprecated `setuptools` behavior. For example:

- https://github.com/johnthagen/python-blueprint/actions/runs/6834646086/job/18587635299

Bump nox's minimum `virtualenv` version to avoid dependency resolution selecting a very outdated `virtualenv`, which isn't tested and can fail.

[virtualenv 20.14.1](https://virtualenv.pypa.io/en/latest/changelog.html#v20-14-1-2022-04-11) was released 2022-04-11.

henryiii: There are also some workaround in the codebase that could be dropped by increasing the min virtualenv version. Like https://github.com/wntrblm/nox/blob/5c82dc553bd04ee017784fc16193da0b35a44ab6/nox/virtualenv.py#L353-L355

Patch:
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 10cbe2a..5ba9d16 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -5,3 +5,7 @@ updates:
     directory: "/"
     schedule:
       interval: weekly
+    groups:
+      actions:
+        patterns:
+          - "*"
diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml
index a7d9827..65b15a6 100644
--- a/.github/workflows/action.yml
+++ b/.github/workflows/action.yml
@@ -9,6 +9,8 @@ on:
       - ".github/workflows/action.yml"
       - ".github/action_helper.py"
       - "action.yml"
+  workflow_dispatch:
+    # allow manual runs on branches without a PR
 env:
   FORCE_COLOR: "1"
 jobs:
@@ -34,10 +36,10 @@ jobs:
     runs-on: windows-latest
     steps:
       - uses: actions/checkout@v4
-      - uses: actions/setup-python@v2
+      - uses: actions/setup-python@v5
         with:
           python-version: 3.9
       - uses: ./
         with:
-          python-versions: "3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, pypy-2.7, pypy-3.7, pypy-3.8, pypy-3.9-v7.3.9"
+          python-versions: "3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, pypy-2.7, pypy-3.7, pypy-3.8, pypy-3.9, pypy-3.10"
       - run: nox --non-interactive --error-on-missing-interpreter --session github_actions_all_tests
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5be101a..86a17a3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -3,6 +3,8 @@ on:
   push:
     branches: [main]
   pull_request:
+  workflow_dispatch:
+    # allow manual runs on branches without a PR
 
 env:
   FORCE_COLOR: "1"
@@ -21,11 +23,11 @@ jobs:
     steps:
       - uses: actions/checkout@v4
       - name: Set up Python ${{ matrix.python-version }}
-        uses: actions/setup-python@v4
+        uses: actions/setup-python@v5
         with:
           python-version: ${{ matrix.python-version }}
       - name: Set up Miniconda
-        uses: conda-incubator/setup-miniconda@v2
+        uses: conda-incubator/setup-miniconda@v3
         with:
           auto-update-conda: true
           python-version: ${{ matrix.python-version }}
@@ -42,7 +44,7 @@ jobs:
     steps:
       - uses: actions/checkout@v4
       - name: Set up Python 3.9
-        uses: actions/setup-python@v4
+        uses: actions/setup-python@v5
         with:
           python-version: 3.9
       - name: Install Nox-under-test
@@ -55,7 +57,7 @@ jobs:
     steps:
       - uses: actions/checkout@v4
       - name: Set up Python 3.9
-        uses: actions/setup-python@v4
+        uses: actions/setup-python@v5
         with:
           python-version: 3.9
       - name: Install Nox-under-test
diff --git a/action.yml b/action.yml
index 6b23016..f0392ba 100644
--- a/action.yml
+++ b/action.yml
@@ -4,7 +4,7 @@ inputs:
   python-versions:
     description: "comma-separated list of python versions to install"
     required: false
-    default: "3.7, 3.8, 3.9, 3.10, 3.11, 3.12, pypy-3.7, pypy-3.8, pypy-3.9"
+    default: "3.8, 3.9, 3.10, 3.11, 3.12, pypy-3.9, pypy-3.10"
 branding:
   icon: package
   color: blue
@@ -12,7 +12,7 @@ branding:
 runs:
   using: composite
   steps:
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       id: localpython
       with:
         python-version: "3.7 - 3.12"
@@ -24,7 +24,7 @@ runs:
         '${{ steps.localpython.outputs.python-path }}' '${{ github.action_path }}/.github/action_helper.py' '${{ inputs.python-versions }}' >>${GITHUB_OUTPUT}
       shell: bash
 
-    - uses: actions/setup-python@v4
+    - uses: actions/setup-python@v5
       id: allpython
       with:
         python-version: "${{ join(fromJSON(steps.helper.outputs.interpreters), '\n') }}"
diff --git a/nox/_parametrize.py b/nox/_parametrize.py
index 8b5d55c..ad83b53 100644
--- a/nox/_parametrize.py
+++ b/nox/_parametrize.py
@@ -78,7 +78,7 @@ class Param:
         elif isinstance(other, dict):
             return dict(zip(self.arg_names, self.args)) == other
 
-        raise NotImplementedError
+        return NotImplemented
 
 
 def _apply_param_specs(param_specs: Iterable[Param], f: Any) -> Any:
diff --git a/noxfile.py b/noxfile.py
index 3ebed4b..7fac569 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -132,15 +132,13 @@ def _check_python_version(session: nox.Session) -> None:
 
 @nox.session(
     python=[
-        "3.7",
         "3.8",
         "3.9",
         "3.10",
         "3.11",
         "3.12",
-        "pypy3.7",
-        "pypy3.8",
         "pypy3.9",
+        "pypy3.10",
     ]
 )
 def github_actions_default_tests(session: nox.Session) -> None:
@@ -161,6 +159,7 @@ def github_actions_default_tests(session: nox.Session) -> None:
         "pypy3.7",
         "pypy3.8",
         "pypy3.9",
+        "pypy3.10",
     ]
 )
 def github_actions_all_tests(session: nox.Session) -> None:
diff --git a/pyproject.toml b/pyproject.toml
index 23b9e49..585efc2 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -45,7 +45,7 @@ dependencies = [
   'importlib-metadata; python_version < "3.8"',
   "packaging>=20.9",
   'typing-extensions>=3.7.4; python_version < "3.8"',
-  "virtualenv>=14",
+  "virtualenv>=20.14.1",
 ]
 [project.optional-dependencies]
 tox_to_nox = [


Test patch:
diff --git a/requirements-conda-test.txt b/requirements-conda-test.txt
index 156a932..8dde50e 100644
--- a/requirements-conda-test.txt
+++ b/requirements-conda-test.txt
@@ -3,4 +3,4 @@ colorlog >=2.6.1,<7.0.0
 jinja2
 pytest
 tox<4.0.0
-virtualenv >=14.0.0
+virtualenv >=20.14.1
diff --git a/tests/test__parametrize.py b/tests/test__parametrize.py
index 1364087..41ea423 100644
--- a/tests/test__parametrize.py
+++ b/tests/test__parametrize.py
@@ -35,8 +35,7 @@ def test_param_eq(param, other, expected):
 
 
 def test_param_eq_fail():
-    with pytest.raises(NotImplementedError):
-        _parametrize.Param() == "a"  # noqa: B015
+    assert _parametrize.Param() != "a"
 
 
 def test_parametrize_decorator_one():