Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/primer-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
timeout-minutes: 5
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14-dev"]
outputs:
python-key: ${{ steps.generate-python-key.outputs.key }}
steps:
Expand Down Expand Up @@ -72,7 +72,7 @@ jobs:
needs: prepare-tests-linux
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14-dev"]
steps:
- name: Check out code from GitHub
uses: actions/[email protected]
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.10", "3.11", "3.12", "3.13"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14-dev"]
include:
- os: macos-latest
python-version: "3.10"
Expand Down Expand Up @@ -188,7 +188,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14-dev"]
steps:
- name: Set temp directory
run: echo "TEMP=$env:USERPROFILE\AppData\Local\Temp" >> $env:GITHUB_ENV
Expand Down
3 changes: 3 additions & 0 deletions doc/whatsnew/fragments/10467.other
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Add support for Python 3.14.

Refs #10467
4 changes: 2 additions & 2 deletions pylint/checkers/base/basic_error_checker.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
ABC_METACLASSES = {"_py_abc.ABCMeta", "abc.ABCMeta"} # Python 3.7+,
# List of methods which can be redefined
REDEFINABLE_METHODS = frozenset(("__module__",))
TYPING_FORWARD_REF_QNAME = "typing.ForwardRef"
FORWARD_REF_QNAME = {"typing.ForwardRef", "annotationlib.ForwardRef"}


def _get_break_loop_node(break_node: nodes.Break) -> nodes.For | nodes.While | None:
Expand Down Expand Up @@ -575,7 +575,7 @@ def _check_redefinition(
if (
inferred
and isinstance(inferred, astroid.Instance)
and inferred.qname() == TYPING_FORWARD_REF_QNAME
and inferred.qname() in FORWARD_REF_QNAME
):
return

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ dependencies = [
# Also upgrade requirements_test_min.txt.
# Pinned to dev of second minor update to allow editable installs and fix primer issues,
# see https://github.com/pylint-dev/astroid/issues/1341
"astroid>=4.0.0b0,<=4.1.0.dev0",
"astroid>=4.0.0b2,<=4.1.0.dev0",
"colorama>=0.4.5; sys_platform=='win32'",
"dill>=0.2; python_version<'3.11'",
"dill>=0.3.6; python_version>='3.11'",
Expand Down
2 changes: 1 addition & 1 deletion requirements_test_min.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.[testutils,spelling]
# astroid dependency is also defined in pyproject.toml
astroid==4.0.0b0 # Pinned to a specific version for tests
astroid==4.0.0b2 # Pinned to a specific version for tests
typing-extensions~=4.14
py~=1.11.0
pytest~=8.4
Expand Down
8 changes: 7 additions & 1 deletion tests/functional/c/consider/consider_using_with.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,20 @@
import multiprocessing
import pathlib
import subprocess
import sys
import tarfile
import tempfile
import threading
import urllib
import zipfile
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
from pathlib import Path

if sys.version_info >= (3, 14):
from concurrent.futures.process import ProcessPoolExecutor
from concurrent.futures.thread import ThreadPoolExecutor
else:
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor


def test_pathlib_open():
_ = pathlib.Path("foo").open(encoding="utf8") # [consider-using-with]
Expand Down
52 changes: 26 additions & 26 deletions tests/functional/c/consider/consider_using_with.txt
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
consider-using-with:17:8:17:49:test_pathlib_open:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:18:8:18:41:test_pathlib_open:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:20:8:20:34:test_pathlib_open:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:26:9:26:40:test_codecs_open:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:31:8:31:55:test_urlopen:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:39:8:39:40:test_named_temporary_file:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:43:8:43:42:test_spooled_temporary_file:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:47:8:47:37:test_temporary_directory:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:51:12:51:44:test_zipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:52:8:52:30:test_zipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:56:12:56:46:test_pyzipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:61:8:61:30:test_pyzipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:68:9:68:43:test_tarfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:74:9:74:47:test_tarfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:83:4:83:18:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:90:4:90:19:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:97:4:97:18:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:104:4:104:26:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:140:8:140:30:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:145:4:145:19:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:150:4:150:19:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:156:8:156:30:test_popen:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:210:4:210:26::Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:211:4:211:26::Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:23:8:23:49:test_pathlib_open:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:24:8:24:41:test_pathlib_open:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:26:8:26:34:test_pathlib_open:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:32:9:32:40:test_codecs_open:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:37:8:37:55:test_urlopen:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:45:8:45:40:test_named_temporary_file:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:49:8:49:42:test_spooled_temporary_file:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:53:8:53:37:test_temporary_directory:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:57:12:57:44:test_zipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:58:8:58:30:test_zipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:62:12:62:46:test_pyzipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:67:8:67:30:test_pyzipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:74:9:74:43:test_tarfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:80:9:80:47:test_tarfile:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:89:4:89:18:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:96:4:96:19:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:103:4:103:18:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:110:4:110:26:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:146:8:146:30:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:151:4:151:19:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:156:4:156:19:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:162:8:162:30:test_popen:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:216:4:216:26::Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:217:4:217:26::Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:222:4:222:26::Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:238:18:238:40:test_subscript_assignment:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:240:24:240:46:test_subscript_assignment:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:228:4:228:26::Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:244:18:244:40:test_subscript_assignment:Consider using 'with' for resource-allocating operations:UNDEFINED
consider-using-with:246:24:246:46:test_subscript_assignment:Consider using 'with' for resource-allocating operations:UNDEFINED
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
var_iterable: collections.abc.Iterable[int]
var_awaitable: collections.abc.Awaitable[int]
var_pattern: re.Pattern[int]
var_bytestring: collections.abc.ByteString
var_hashable: collections.abc.Hashable
var_context_manager: contextlib.AbstractContextManager[int]

Expand Down
10 changes: 5 additions & 5 deletions tests/functional/g/generic_alias/generic_alias_mixed_py39.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
abstract-method:29:0:29:21:DerivedHashable:Method '__hash__' is abstract in class 'Hashable' but is not overridden in child class 'DerivedHashable':INFERENCE
abstract-method:32:0:32:21:DerivedIterable:Method '__iter__' is abstract in class 'Iterable' but is not overridden in child class 'DerivedIterable':INFERENCE
abstract-method:35:0:35:23:DerivedCollection:Method '__contains__' is abstract in class 'Container' but is not overridden in child class 'DerivedCollection':INFERENCE
abstract-method:35:0:35:23:DerivedCollection:Method '__iter__' is abstract in class 'Iterable' but is not overridden in child class 'DerivedCollection':INFERENCE
abstract-method:35:0:35:23:DerivedCollection:Method '__len__' is abstract in class 'Sized' but is not overridden in child class 'DerivedCollection':INFERENCE
abstract-method:28:0:28:21:DerivedHashable:Method '__hash__' is abstract in class 'Hashable' but is not overridden in child class 'DerivedHashable':INFERENCE
abstract-method:31:0:31:21:DerivedIterable:Method '__iter__' is abstract in class 'Iterable' but is not overridden in child class 'DerivedIterable':INFERENCE
abstract-method:34:0:34:23:DerivedCollection:Method '__contains__' is abstract in class 'Container' but is not overridden in child class 'DerivedCollection':INFERENCE
abstract-method:34:0:34:23:DerivedCollection:Method '__iter__' is abstract in class 'Iterable' but is not overridden in child class 'DerivedCollection':INFERENCE
abstract-method:34:0:34:23:DerivedCollection:Method '__len__' is abstract in class 'Sized' but is not overridden in child class 'DerivedCollection':INFERENCE
Loading