pylint-dev / pylint-pytest

A Pylint plugin to suppress pytest-related false positives.
https://pypi.org/project/pylint-pytest/
MIT License
14 stars 3 forks source link

Directory src/scriv used to be processed, now: command not found #67

Closed nedbat closed 1 month ago

nedbat commented 1 month ago

Bug description

In scriv, I was using src/scriv as an argument to pylint:

https://github.com/nedbat/scriv/blob/main/tox.ini#L57

With pylint==3.1.0, this worked, and violations were found in files like src/scriv/config.py.

Updating to pylint==3.2.2, it now seems to be running the scriv command, or one of its files that implements the command?:

Command used

pylint src/scriv tests docs setup.py

Pylint output

quality: commands[3]> pylint src/scriv tests docs setup.py
Usage: scriv [OPTIONS] COMMAND [ARGS]...
Try 'scriv --help' for help.

Error: No such command 'src/scriv'.

Expected behavior

I expect the code in src/scriv to be linted.

Pylint version

pylint 3.2.2
astroid 3.2.2
Python 3.8.19 (default, Mar 21 2024, 07:16:56)
[Clang 15.0.0 (clang-1500.3.9.4)]

OS / Environment

Mac 14.5

jacobtylerwalls commented 1 month ago

I'm eager to reproduce this if I can. I cloned scriv and ran python -m tox -e quality and it passed, without any output suggesting the scriv command ran.

I ran without tox as pylint src/scriv tests docs setup.py after installing pylint_pytest, and with pytest 7.4.2, and the files linted, although they threw lots of errors like:

************* Module scriv.util
src/scriv/util.py:12:0: E0401: Unable to import 'click_log' (import-error)
************* Module scriv.cli
src/scriv/cli.py:6:0: E0401: Unable to import 'click_log' (import-error)
************* Module scriv.linkcheck
src/scriv/linkcheck.py:7:0: E0401: Unable to import 'markdown_it' (import-error)
...
************* Module tests.test_ghrel
tests/test_ghrel.py:1:0: F6401: pylint-pytest plugin cannot enumerate and collect pytest fixtures. Please run `pytest --fixtures --collect-only tests/test_ghrel.py` and resolve any potential syntax error or package dependency issues. stdout: . stderr: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/_pytest/config/__init__.py:324: PluggyTeardownRaisedWarning: A plugin raised an exception during an old-style hookwrapper teardown.
Plugin: helpconfig, Hook: pytest_cmdline_parse
ConftestImportFailure: ModuleNotFoundError: No module named 'responses' (from /Users/jwalls/scriv/tests/conftest.py)
For more information see https://pluggy.readthedocs.io/en/stable/api_reference.html#pluggy.PluggyTeardownRaisedWarning
  config = pluginmanager.hook.pytest_cmdline_parse(
ImportError while loading conftest '/Users/jwalls/scriv/tests/conftest.py'.
tests/conftest.py:10: in <module>
    import responses
E   ModuleNotFoundError: No module named 'responses'
. (cannot-enumerate-pytest-fixtures)

Once I can reproduce, I'm happy to bisect the pylint or astroid changes that could be to blame. I wonder if knowing your installed version of pytest would help. Any other tips for reproducing would be appreciated. Thanks.

nedbat commented 1 month ago

Thanks. I don't see how pytest is involved though.

The main branch of scriv has pylint==3.1.0, and will pass. You can checkout the nedbat/make-upgrade branch, which has pylint==3.2.2, and should fail as shown.

jacobtylerwalls commented 1 month ago

Thanks, I can reproduce now, but also on pylint 3.1 and 3.0. I added a pylint --version to the quality command. I must be missing something else.

quality: commands[0]> pylint --version
pylint 3.0.0
astroid 3.0.0
Python 3.8.10 (v3.8.10:3d8993a744, May  3 2021, 09:09:08) 
[Clang 12.0.5 (clang-1205.0.22.9)]
quality: commands[1]> pylint src/scriv tests docs setup.py
Usage: scriv [OPTIONS] COMMAND [ARGS]...
Try 'scriv --help' for help.

Error: No such command 'src/scriv'.
nedbat commented 1 month ago

Great that you can reproduce it. What did you mean by "I must be missing something else"? Do you mean you don't understand what's causing the behavior yet?

jacobtylerwalls commented 1 month ago

Sorry, I meant that I could reproduce on pylint 3.0 and 3.1, but you report that it was working fine on 3.1, so I'm not sure I've reproduced your specific problem.

Pierre-Sassoulas commented 1 month ago

I've been able to reproduce with:

git clone git@github.com:nedbat/scriv.git
cd scriv
git switch nedbat/make-upgrade
python3 -m venv venv
source venv/bin/activate
pip3 install -e .
pip3 install tox
python -m tox -e quality
git switch main
python -m tox -e quality

(Python 3.10.12, pylint installed/used through tox)

The upgrade for pytest is:

-pytest==8.2.0
+pytest==8.2.1

So probably not linked to pylint-dev/pylint#9576

Pierre-Sassoulas commented 1 month ago

After further investigation and with the following diff:

diff --git a/requirements/quality.txt b/requirements/quality.txt
index 7fdf51c..3ca3d56 100644
--- a/requirements/quality.txt
+++ b/requirements/quality.txt
@@ -8,8 +8,6 @@ alabaster==0.7.13
     # via
     #   -r requirements/doc.txt
     #   sphinx
-astroid==3.2.2
-    # via pylint
 attrs==23.2.0
     # via
     #   -r requirements/doc.txt
@@ -195,7 +193,7 @@ pygments==2.18.0
     #   readme-renderer
     #   rich
     #   sphinx
-pylint==3.2.2
+pylint==2.17.7
     # via
     #   -r requirements/quality.in
     #   pylint-pytest

or

diff --git a/requirements/quality.txt b/requirements/quality.txt
index 7fdf51c..3ca3d56 100644
--- a/requirements/quality.txt
+++ b/requirements/quality.txt
@@ -8,8 +8,6 @@ alabaster==0.7.13
     # via
     #   -r requirements/doc.txt
     #   sphinx
-astroid==3.2.2
-    # via pylint
 attrs==23.2.0
     # via
     #   -r requirements/doc.txt
@@ -195,7 +193,7 @@ pygments==2.18.0
     #   readme-renderer
     #   rich
     #   sphinx
-pylint==3.2.2
+pylint==3.1.1
     # via
     #   -r requirements/quality.in
     #   pylint-pytest

I still have the error, so I suppose the problem come from something else than pylint.

Pierre-Sassoulas commented 1 month ago

By patch adding each dependencies from requirements/quality.txt one by one and bisecting with python -m tox -e quality I blame the pytest upgrade from 8.2.0 to 8.2.1.

Pierre-Sassoulas commented 1 month ago

Thank you for opening the issue though @nedbat ! :)

nedbat commented 1 month ago

What am I missing? How is pytest related to pylint?

Pierre-Sassoulas commented 1 month ago

We also have an issue with pytest's upgrade that I don't understand (I'm bisecting a lot without understanding anything these days πŸ˜„) in pylint-dev/pylint#9576 (https://github.com/pytest-dev/pytest/pull/11138#issuecomment-2088404446). So I'm not sure how, but you have a similar issue and the pytest upgrade is what's making your script start failing . Created https://github.com/Pierre-Sassoulas/scriv/tree/pytest-upgrade-to-blame, which reproduce the issue. Here's the log if it makes the way I bisected the issue clearer: scriv.log

jacobtylerwalls commented 1 month ago

Your repo has the pylint-pytest plugin installed. I don't know or use that plugin, but my assumption is that it uses runtime features of pytest.

nedbat commented 1 month ago

OK, if I remove pylint-pytest, then pylint runs, though it complains about the names of fixtures in the tests, which is the problem the plugin fixes.

jacobtylerwalls commented 1 month ago

It's worth polling the pylint-pytest maintainers if there's a pytest bound to document, so reopening & moving this there.

stdedos commented 1 month ago

If it is so that pytest 8.2.x is causing this problem, I'd be happy to add a roadblock for that.

Can you @nedbat confirm that pytest <= 8.2.0 works for you?

Earliest I could meaningfully test would be tomorrow.

nedbat commented 1 month ago

Hi, I have two commits. The first updated everything, bringing pytest to 8.2.1. That causes the failure. The second commit pins pytest==8.2.0 and succeeds. Here is the full workflow:

mktmpenv -p python3.10 -n ``` created virtual environment CPython3.10.14.final.0-64 in 156ms creator CPython3Posix(dest=/usr/local/virtualenvs/tmp-4458675de985627, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/ned/Library/Application Support/virtualenv) added seed packages: pip==24.0, setuptools==69.5.1, wheel==0.43.0 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator virtualenvwrapper.user_scripts creating /usr/local/virtualenvs/tmp-4458675de985627/bin/predeactivate virtualenvwrapper.user_scripts creating /usr/local/virtualenvs/tmp-4458675de985627/bin/postdeactivate virtualenvwrapper.user_scripts creating /usr/local/virtualenvs/tmp-4458675de985627/bin/preactivate virtualenvwrapper.user_scripts creating /usr/local/virtualenvs/tmp-4458675de985627/bin/postactivate virtualenvwrapper.user_scripts creating /usr/local/virtualenvs/tmp-4458675de985627/bin/get_env_details ```
pip install tox ``` Collecting tox Using cached tox-4.15.0-py3-none-any.whl.metadata (5.0 kB) Collecting cachetools>=5.3.2 (from tox) Using cached cachetools-5.3.3-py3-none-any.whl.metadata (5.3 kB) Collecting chardet>=5.2 (from tox) Using cached chardet-5.2.0-py3-none-any.whl.metadata (3.4 kB) Collecting colorama>=0.4.6 (from tox) Using cached colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB) Collecting filelock>=3.13.1 (from tox) Using cached filelock-3.14.0-py3-none-any.whl.metadata (2.8 kB) Collecting packaging>=23.2 (from tox) Using cached packaging-24.0-py3-none-any.whl.metadata (3.2 kB) Collecting platformdirs>=4.1 (from tox) Using cached platformdirs-4.2.2-py3-none-any.whl.metadata (11 kB) Collecting pluggy>=1.3 (from tox) Using cached pluggy-1.5.0-py3-none-any.whl.metadata (4.8 kB) Collecting pyproject-api>=1.6.1 (from tox) Using cached pyproject_api-1.6.1-py3-none-any.whl.metadata (2.8 kB) Collecting tomli>=2.0.1 (from tox) Using cached tomli-2.0.1-py3-none-any.whl.metadata (8.9 kB) Collecting virtualenv>=20.25 (from tox) Using cached virtualenv-20.26.2-py3-none-any.whl.metadata (4.4 kB) Collecting distlib<1,>=0.3.7 (from virtualenv>=20.25->tox) Using cached distlib-0.3.8-py2.py3-none-any.whl.metadata (5.1 kB) Using cached tox-4.15.0-py3-none-any.whl (155 kB) Using cached cachetools-5.3.3-py3-none-any.whl (9.3 kB) Using cached chardet-5.2.0-py3-none-any.whl (199 kB) Using cached colorama-0.4.6-py2.py3-none-any.whl (25 kB) Using cached filelock-3.14.0-py3-none-any.whl (12 kB) Using cached packaging-24.0-py3-none-any.whl (53 kB) Using cached platformdirs-4.2.2-py3-none-any.whl (18 kB) Using cached pluggy-1.5.0-py3-none-any.whl (20 kB) Using cached pyproject_api-1.6.1-py3-none-any.whl (12 kB) Using cached tomli-2.0.1-py3-none-any.whl (12 kB) Using cached virtualenv-20.26.2-py3-none-any.whl (3.9 MB) Using cached distlib-0.3.8-py2.py3-none-any.whl (468 kB) Installing collected packages: distlib, tomli, pluggy, platformdirs, packaging, filelock, colorama, chardet, cachetools, virtualenv, pyproject-api, tox ```
git clone https://github.com/nedbat/scriv ``` Cloning into 'scriv'... remote: Enumerating objects: 3302, done. remote: Counting objects: 100% (1427/1427), done. remote: Compressing objects: 100% (297/297), done. remote: Total 3302 (delta 1139), reused 1285 (delta 1057), pack-reused 1875 Receiving objects: 100% (3302/3302), 552.14 KiB | 4.28 MiB/s, done. ```
cd scriv ``` ```
git checkout 6b5a105 ``` Note: switching to '6b5a105'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false ```
tox -e quality ``` quality: install_deps> python -I -m pip install -r /private/tmp/pytest-bug/scriv/requirements/quality.txt .pkg: install_requires> python -I -m pip install 'setuptools>=40.8.0' wheel .pkg: _optional_hooks> python /usr/local/virtualenvs/tmp-4458675de985627/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ .pkg: get_requires_for_build_wheel> python /usr/local/virtualenvs/tmp-4458675de985627/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ .pkg: install_requires_for_build_wheel> python -I -m pip install wheel .pkg: build_wheel> python /usr/local/virtualenvs/tmp-4458675de985627/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ quality: install_package_deps> python -I -m pip install attrs click click-log jinja2 markdown-it-py pyyaml requests 'tomli; python_version < "3.11"' quality: install_package> python -I -m pip install --force-reinstall --no-deps /private/tmp/pytest-bug/scriv/.tox/.tmp/package/1/scriv-1.5.1-py3-none-any.whl quality: commands[0]> pylint src/scriv tests docs setup.py Usage: scriv [OPTIONS] COMMAND [ARGS]... Try 'scriv --help' for help. Error: No such command 'src/scriv'. quality: OK (17.31=setup[11.17]+cmd[6.14] seconds) ```
.tox/quality/bin/pip list | grep py ``` markdown-it-py 3.0.0 mypy 1.10.0 mypy-extensions 1.0.0 pycodestyle 2.11.1 pydocstyle 6.3.0 pylint 3.2.2 pylint-pytest 1.1.7 pyproject_hooks 1.1.0 pytest 8.2.1 pytest-mock 3.14.0 python-dateutil 2.9.0.post0 ```
git checkout bab53e4 ``` Previous HEAD position was 6b5a105 chore: make upgrade ```
tox -e quality ``` quality: recreate env because requirements removed: pytest==8.2.1 quality: remove tox env folder /private/tmp/pytest-bug/scriv/.tox/quality quality: install_deps> python -I -m pip install -r /private/tmp/pytest-bug/scriv/requirements/quality.txt .pkg: _optional_hooks> python /usr/local/virtualenvs/tmp-4458675de985627/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ .pkg: get_requires_for_build_wheel> python /usr/local/virtualenvs/tmp-4458675de985627/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ .pkg: build_wheel> python /usr/local/virtualenvs/tmp-4458675de985627/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__ quality: install_package_deps> python -I -m pip install attrs click click-log jinja2 markdown-it-py pyyaml requests 'tomli; python_version < "3.11"' quality: install_package> python -I -m pip install --force-reinstall --no-deps /private/tmp/pytest-bug/scriv/.tox/.tmp/package/2/scriv-1.5.1-py3-none-any.whl quality: commands[0]> pylint src/scriv tests docs setup.py quality: OK (16.66=setup[10.64]+cmd[6.02] seconds) ```
.tox/quality/bin/pip list | grep py ``` markdown-it-py 3.0.0 mypy 1.10.0 mypy-extensions 1.0.0 pycodestyle 2.11.1 pydocstyle 6.3.0 pylint 3.2.2 pylint-pytest 1.1.7 pyproject_hooks 1.1.0 pytest 8.2.0 ```
stdedos commented 1 month ago

The second commit pins pytest==8.2.0 and succeeds.

Amazing! While not the solution I/you want long-term, I will push / publish the pytest<=8.2.0 roadblock in a couple of hours

stdedos commented 1 month ago

I'm eager to reproduce this if I can. I cloned scriv and ran python -m tox -e quality and it passed, without any output suggesting the scriv command ran.

I ran without tox as pylint src/scriv tests docs setup.py after installing pylint_pytest, and with pytest 7.4.2, and the files linted, although they threw lots of errors like:

************* Module scriv.util
src/scriv/util.py:12:0: E0401: Unable to import 'click_log' (import-error)
************* Module scriv.cli
src/scriv/cli.py:6:0: E0401: Unable to import 'click_log' (import-error)
************* Module scriv.linkcheck
src/scriv/linkcheck.py:7:0: E0401: Unable to import 'markdown_it' (import-error)
...
************* Module tests.test_ghrel
tests/test_ghrel.py:1:0: F6401: pylint-pytest plugin cannot enumerate and collect pytest fixtures. Please run `pytest --fixtures --collect-only tests/test_ghrel.py` and resolve any potential syntax error or package dependency issues. stdout: . stderr: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/_pytest/config/__init__.py:324: PluggyTeardownRaisedWarning: A plugin raised an exception during an old-style hookwrapper teardown.
Plugin: helpconfig, Hook: pytest_cmdline_parse
ConftestImportFailure: ModuleNotFoundError: No module named 'responses' (from /Users/jwalls/scriv/tests/conftest.py)
For more information see https://pluggy.readthedocs.io/en/stable/api_reference.html#pluggy.PluggyTeardownRaisedWarning
  config = pluginmanager.hook.pytest_cmdline_parse(
ImportError while loading conftest '/Users/jwalls/scriv/tests/conftest.py'.
tests/conftest.py:10: in <module>
    import responses
E   ModuleNotFoundError: No module named 'responses'
. (cannot-enumerate-pytest-fixtures)

Once I can reproduce, I'm happy to bisect the pylint or astroid changes that could be to blame. I wonder if knowing your installed version of pytest would help. Any other tips for reproducing would be appreciated. Thanks.

This is also a nice reproducer. I have been having a similar issue in a proprietary code that threw more or less the same cannot-enumerate-pytest-fixtures error.

I have been trying to troubleshoot it with https://github.com/pylint-dev/pylint-pytest/tree/playground/impr/cannot-enumerate-pytest-fixtures. In any case - I don't get how is it possible that the current environment "disappears" and neither requests nor this.namespace.package.sub.module "exist" anymore.

Funny thing is that, pytest alone is able to figure the issue out (no variant of pytest --fixtures --collect-only ... reveals any issue, nor does it fail pytest).

To be honest, I have been blocking v2 behind tl;dr this issue and pytest v8 πŸ˜Άβ€πŸŒ«οΈ (my time being limited, and no progress in figuring out the logic behind this :confused:)

stdedos commented 1 month ago

Stop-gap has been deployed:

nedbat commented 1 month ago

Thanks. The changelog has no entry for it.

Should we write an issue against pytest? I think they would be surprised to hear that pytest==8.2.0 works and 8.2.1 fails.

nedbat commented 1 month ago

Sorry, I'm confused: I don't see a commit on the main branch. And for some reason pip-tools won't pull in version 1.1.8.

stdedos commented 1 month ago

Sorry, I'm confused: I don't see a commit on the main branch

Main branch has been "for a long time" on https://github.com/pylint-dev/pylint-pytest/releases/tag/v2.0.0a0, and therefore not suitable for this fix :sweat_smile: (my wish is that v2 will support the current-at-that-time pytest v8 "no matter what").

The branch you are looking for is https://github.com/pylint-dev/pylint-pytest/tree/maint/1.1.x. (I am not planning to make this a habit, but a maintenance branch was "just the thing" for this situation, and the current state)

stdedos commented 1 month ago

And for some reason pip-tools won't pull in version 1.1.8

That is super-weird though. On a new venv:

ua@ha [2024-05-2313:48:47]:/tmp/stdedos/t$ virtualenv .venv
created virtual environment CPython3.8.10.final.0-64 in 272ms
  creator CPython3Posix(dest=/tmp/stdedos/t/.venv, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/stdedos/.local/share/virtualenv)
    added seed packages: pip==24.0, setuptools==69.5.1, wheel==0.43.0
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
ua@ha [2024-05-2313:48:54]:/tmp/stdedos/t$ . .venv/bin/ac
activate          activate.csh      activate.fish     activate.nu       activate.ps1      activate_this.py  
ua@ha [2024-05-2313:48:54]:/tmp/stdedos/t$ . .venv/bin/activate
(.venv) ua@h [2024-05-2313:49:05]:/tmp/stdedos/t$ pip install pylint-pytest
Collecting pylint-pytest
  Downloading pylint_pytest-1.1.8-py3-none-any.whl.metadata (6.0 kB)
Collecting pylint>=2 (from pylint-pytest)
  Using cached pylint-3.2.2-py3-none-any.whl.metadata (12 kB)
Collecting pytest<=8.2.0,>=4.6 (from pylint-pytest)
  Using cached pytest-8.2.0-py3-none-any.whl.metadata (7.5 kB)
Collecting platformdirs>=2.2.0 (from pylint>=2->pylint-pytest)
  Using cached platformdirs-4.2.2-py3-none-any.whl.metadata (11 kB)
Collecting astroid<=3.3.0-dev0,>=3.2.2 (from pylint>=2->pylint-pytest)
  Using cached astroid-3.2.2-py3-none-any.whl.metadata (4.5 kB)
Collecting isort!=5.13.0,<6,>=4.2.5 (from pylint>=2->pylint-pytest)
  Using cached isort-5.13.2-py3-none-any.whl.metadata (12 kB)
Collecting mccabe<0.8,>=0.6 (from pylint>=2->pylint-pytest)
  Using cached mccabe-0.7.0-py2.py3-none-any.whl.metadata (5.0 kB)
Collecting tomlkit>=0.10.1 (from pylint>=2->pylint-pytest)
  Downloading tomlkit-0.12.5-py3-none-any.whl.metadata (2.7 kB)
Collecting typing-extensions>=3.10.0 (from pylint>=2->pylint-pytest)
  Using cached typing_extensions-4.11.0-py3-none-any.whl.metadata (3.0 kB)
Collecting dill>=0.2 (from pylint>=2->pylint-pytest)
  Using cached dill-0.3.8-py3-none-any.whl.metadata (10 kB)
Collecting tomli>=1.1.0 (from pylint>=2->pylint-pytest)
  Using cached tomli-2.0.1-py3-none-any.whl.metadata (8.9 kB)
Collecting iniconfig (from pytest<=8.2.0,>=4.6->pylint-pytest)
  Using cached iniconfig-2.0.0-py3-none-any.whl.metadata (2.6 kB)
Collecting packaging (from pytest<=8.2.0,>=4.6->pylint-pytest)
  Using cached packaging-24.0-py3-none-any.whl.metadata (3.2 kB)
Collecting pluggy<2.0,>=1.5 (from pytest<=8.2.0,>=4.6->pylint-pytest)
  Using cached pluggy-1.5.0-py3-none-any.whl.metadata (4.8 kB)
Collecting exceptiongroup>=1.0.0rc8 (from pytest<=8.2.0,>=4.6->pylint-pytest)
  Using cached exceptiongroup-1.2.1-py3-none-any.whl.metadata (6.6 kB)
Downloading pylint_pytest-1.1.8-py3-none-any.whl (10 kB)
Using cached pylint-3.2.2-py3-none-any.whl (519 kB)
Using cached pytest-8.2.0-py3-none-any.whl (339 kB)
Using cached astroid-3.2.2-py3-none-any.whl (276 kB)
Using cached dill-0.3.8-py3-none-any.whl (116 kB)
Using cached exceptiongroup-1.2.1-py3-none-any.whl (16 kB)
Using cached isort-5.13.2-py3-none-any.whl (92 kB)
Using cached mccabe-0.7.0-py2.py3-none-any.whl (7.3 kB)
Using cached platformdirs-4.2.2-py3-none-any.whl (18 kB)
Using cached pluggy-1.5.0-py3-none-any.whl (20 kB)
Using cached tomli-2.0.1-py3-none-any.whl (12 kB)
Downloading tomlkit-0.12.5-py3-none-any.whl (37 kB)
Using cached typing_extensions-4.11.0-py3-none-any.whl (34 kB)
Using cached iniconfig-2.0.0-py3-none-any.whl (5.9 kB)
Using cached packaging-24.0-py3-none-any.whl (53 kB)
Installing collected packages: typing-extensions, tomlkit, tomli, pluggy, platformdirs, packaging, mccabe, isort, iniconfig, exceptiongroup, dill, pytest, astroid, pylint, pylint-pytest
Successfully installed astroid-3.2.2 dill-0.3.8 exceptiongroup-1.2.1 iniconfig-2.0.0 isort-5.13.2 mccabe-0.7.0 packaging-24.0 platformdirs-4.2.2 pluggy-1.5.0 pylint-3.2.2 pylint-pytest-1.1.8 pytest-8.2.0 tomli-2.0.1 tomlkit-0.12.5 typing-extensions-4.11.0
ua@ha [2024-05-2313:49:12]:/tmp/stdedos/t$

"Anything you can think of" that could be the problem?

nedbat commented 1 month ago

I solved the pinning problem: I have a multi-phase run of pip-tools. Adding pylint-pytest into the same phase as pytest solved the problem.

stdedos commented 1 month ago

Oh yeah, I see the problem (https://github.com/nedbat/scriv/commit/4fdfbcebb14b923dc49e9cb6a5ec1ff0c8222169). I didn't fully dug that out, but maybe it's a pip-tools feature? or maybe all test[x]-co-dependencies need to be "resolved" together? idk

Since the stop-gap is "good enough" for now, I think I'll go ahead and close this.

Do feel comfortable continuing discussion here, and/or pass by https://github.com/pylint-dev/pylint-pytest/issues/68 and give debugging hints πŸ™

pzelnip commented 1 month ago

Is there a plan to fix pylint-pytest to be able to be compatible with pytest 8.2.1? As it stands my dependency management tool keeps trying to update pytest (with pylint-pytest downgraded to 1.1.7), then it sees that there's a new version of pylint-pytest, upgrades it and downgrades pytest back to 8.2.0, then repeats the cycle. 😞

stdedos commented 1 month ago

Yeah - I think that renovatebot should have updated pylint-pytest to 1.1.8, which should've blocked you from updating to pytest 8.2.1. I am not sure why renovatebot cannot handle that πŸ˜•

If you open a discussion at https://github.com/renovatebot/renovate/discussions/, feel free to mention me

Is there a plan to fix pylint-pytest to be able to be compatible with pytest 8.2.1?

Yes, there are plans: https://github.com/pylint-dev/pylint-pytest/milestone/2 Right now, though, I don't have enough time to debug https://github.com/pylint-dev/pylint-pytest/issues/68 - which troubles me very much from releasing v2

pzelnip commented 1 month ago

Opened https://github.com/renovatebot/renovate/discussions/29469 on Renovate's repo. Thanks!