mirror of https://github.com/ansible/ansible.git
[stable-2.16] Update default test container Python to 3.12 and support for PyLint 3.0.1 (#81953) (#81955)
* temporary PyLint plugin to mask 3.12 finalizer noise
* ansible-test - Default to Python 3.12 for base/default
* ansible-test - Update pylint requirements
* ansible-test - Remove obsoleted changelog entry
* Add changelog fragment for pylint work-around.
(cherry picked from commit d8484f0af7
)
pull/81956/head
parent
9c91e578d0
commit
f9dfd28cff
@ -1,2 +0,0 @@
|
||||
known_issues:
|
||||
- ansible-test - The ``pylint`` sanity test is not supported on Python 3.12. Use Python 3.10 or 3.11 instead.
|
@ -0,0 +1,3 @@
|
||||
bugfixes:
|
||||
- ansible-test - Update ``pylint`` to version 3.0.1.
|
||||
- ansible-test - Include missing ``pylint`` requirements for Python 3.10.
|
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- ansible-test - Add a ``pylint`` plugin to work around a known issue on Python 3.12.
|
@ -0,0 +1,2 @@
|
||||
minor_changes:
|
||||
- ansible-test - Make Python 3.12 the default version used in the ``base`` and ``default`` containers.
|
@ -0,0 +1,24 @@
|
||||
"""Temporary plugin to prevent stdout noise pollution from finalization of abandoned generators under Python 3.12"""
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
import typing as t
|
||||
|
||||
if t.TYPE_CHECKING:
|
||||
from pylint.lint import PyLinter
|
||||
|
||||
|
||||
def _mask_finalizer_valueerror(ur: t.Any) -> None:
|
||||
"""Mask only ValueErrors from finalizing abandoned generators; delegate everything else"""
|
||||
# work around Py3.12 finalizer changes that sometimes spews this error message to stdout
|
||||
# see https://github.com/pylint-dev/pylint/issues/9138
|
||||
if ur.exc_type is ValueError and 'generator already executing' in str(ur.exc_value):
|
||||
return
|
||||
|
||||
sys.__unraisablehook__(ur)
|
||||
|
||||
|
||||
def register(linter: PyLinter) -> None: # pylint: disable=unused-argument
|
||||
"""PyLint plugin registration entrypoint"""
|
||||
if sys.version_info >= (3, 12):
|
||||
sys.unraisablehook = _mask_finalizer_valueerror
|
Loading…
Reference in New Issue