Repository: carsongee/pytest-pylint (language: python)

Issue:
DeprecationWarning: BaseReporter using __implements__
When I run `pytest --pylint`, I get this warning:

```
../../../../../../.local/share/virtualenvs/server-IJExtVut/lib/python3.10/site-packages/pylint/reporters/base_reporter.py:35
  /home/rob/.local/share/virtualenvs/server-IJExtVut/lib/python3.10/site-packages/pylint/reporters/base_reporter.py:35: DeprecationWarning: Using the __implements__ inheritance pattern for BaseReporter is no longer supported. Child classes should only inherit BaseReporter
    warnings.warn(

-- Docs: https://docs.pytest.org/en/stable/warnings.html
```


Discussion / hints:
Here's the workaround I'm using for the moment:
`pytest --pylint -W ignore::DeprecationWarning:pylint.reporters.base_reporter:35`

The `-W` flag suppresses that `DeprecationWarning` until there's a fix.

Fix patch:
diff --git a/README.rst b/README.rst
index 6592c64..c3f65bb 100644
--- a/README.rst
+++ b/README.rst
@@ -54,6 +54,12 @@ If you want to help development, there is
 Releases
 ========
 
+0.20.0
+~~~~~~
+- Corrected issues introduced by deprecations in pylint
+- Added support for Python 3.12 and dropped support for Python 3.7
+- Last version that will support pytest < 7 and pylint < 2.6
+
 0.19.0
 ~~~~~~
 
diff --git a/setup.py b/setup.py
index 748a511..de7dba0 100644
--- a/setup.py
+++ b/setup.py
@@ -5,7 +5,7 @@
 
 Plugin for py.test for doing pylint tests
 """
-
+# pylint: disable=import-error
 from setuptools import setup
 
 with open("README.rst", encoding="utf-8") as f:
@@ -16,24 +16,24 @@
     description="pytest plugin to check source code with pylint",
     long_description=LONG_DESCRIPTION,
     license="MIT",
-    version="0.19.0",
+    version="0.20.0",
     author="Carson Gee",
     author_email="x@carsongee.com",
     url="https://github.com/carsongee/pytest-pylint",
     packages=["pytest_pylint"],
     entry_points={"pytest11": ["pylint = pytest_pylint.plugin"]},
     python_requires=">=3.7",
-    install_requires=["pytest>=5.4", "pylint>=2.3.0", "toml>=0.7.1"],
+    install_requires=["pytest>=5.4,<8.0", "pylint>=2.3.0", "toml>=0.7.1"],
     setup_requires=["pytest-runner"],
     tests_require=["coverage", "flake8", "black", "isort"],
     classifiers=[
         "Development Status :: 5 - Production/Stable",
         "Intended Audience :: Developers",
         "License :: OSI Approved :: MIT License",
-        "Programming Language :: Python :: 3.7",
         "Programming Language :: Python :: 3.8",
         "Programming Language :: Python :: 3.9",
         "Programming Language :: Python :: 3.10",
         "Programming Language :: Python :: 3.11",
+        "Programming Language :: Python :: 3.12",
     ],
 )
diff --git a/tox.ini b/tox.ini
index 9fbb084..4fe59f6 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,8 +1,9 @@
 [tox]
 envlist =
-    py3{7, 8, 9}-pylint{23}-pytest{54}
-    py3{7, 8, 9, 10}-pylint{213, 214}-pytest{71}
-    py3{7, 8, 9, 10, 11}-pylint{215, latest, main}-pytest{71, latest, main}
+    py3{8, 9}-pylint{26, 30}-pytest{54}
+    py3{8, 9, 10}-pylint{213, 214, 30}-pytest{71}
+    py3{8, 9, 10, 11}-pylint{215, latest, main}-pytest{71, latest}
+    py3{12}-pylint{latest, main}-pytest{71, latest}
     coverage
     qa
 skip_missing_interpreters = true
@@ -10,20 +11,20 @@ skip_missing_interpreters = true
 [testenv]
 usedevelop = true
 deps =
-    pylint23: pylint~=2.3.1
+    pylint30: pylint~=3.0
+    pylint26: pylint~=2.6.0
     pylint213: pylint~=2.13.9
     pylint214: pylint~=2.14.5
     pylint215: pylint~=2.15.0
     pylintlatest: pylint
     pylintmain: git+https://github.com/PyCQA/pylint.git@main#egg=pylint
     pylintmain: git+https://github.com/PyCQA/astroid.git@main#egg=astroid
-    pytest54: pytest~=5.4.3
-    pytest71: pytest~=7.1.2
+    pytest7: pytest~=7.1.2
     pytestlatest: pytest
     pytestmain: git+https://github.com/pytest-dev/pytest.git@main#egg=pytest
     coverage
 commands =
-    coverage run -m py.test {posargs}
+    coverage run -m pytest {posargs}
 
 [testenv:coverage]
 depends = py3{7, 8, 9, 10, 11}-pylint{215, latest, main}-pytest{71, latest, main}


Test patch:
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 6c99f08..97b182b 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -9,11 +9,11 @@ jobs:
       fail-fast: false
       matrix:
         python-version:
-        - "3.7"
         - "3.8"
         - "3.9"
         - "3.10"
-        - "3.11.0-rc - 3.11"
+        - "3.11"
+        - "3.12.0-rc - 3.12"
 
     steps:
       - uses: actions/checkout@v3
diff --git a/pytest_pylint/plugin.py b/pytest_pylint/plugin.py
index 7cc751d..a5c1b0a 100644
--- a/pytest_pylint/plugin.py
+++ b/pytest_pylint/plugin.py
@@ -111,6 +111,7 @@ def pytest_configure(self, config):
             try:
                 pylintrc_file = next(pylint_config.find_default_config_files(), None)
             except AttributeError:
+                # pylint: disable=no-member
                 pylintrc_file = pylint_config.PYLINTRC
 
         if pylintrc_file and not exists(pylintrc_file):
@@ -391,4 +392,5 @@ def repr_failure(self, excinfo, style=None):
 
     def reportinfo(self):
         """Generate our test report"""
+        # pylint: disable=no-member
         return self.fspath, None, f"[pylint] {self.parent.rel_path}"
diff --git a/pytest_pylint/pylint_util.py b/pytest_pylint/pylint_util.py
index d78f2c9..954acda 100644
--- a/pytest_pylint/pylint_util.py
+++ b/pytest_pylint/pylint_util.py
@@ -2,14 +2,12 @@
 """Pylint reporter classes."""
 import sys
 
-from pylint.interfaces import IReporter
 from pylint.reporters import BaseReporter
 
 
 class ProgrammaticReporter(BaseReporter):
     """Reporter that replaces output with storage in list of dictionaries"""
 
-    __implements__ = IReporter
     extension = "prog"
 
     def __init__(self, output=None):