Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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.feature
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