Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update astroid version to 3.1.0 #9457

Merged
merged 7 commits into from
Feb 23, 2024
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions doc/whatsnew/fragments/9196.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Check ``TypeAlias`` and ``TypeVar`` (PEP 695) nodes for ``invalid-name``.

Refs #9196
3 changes: 3 additions & 0 deletions doc/whatsnew/fragments/9457.internal
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Update astroid version to 3.1.0.

Refs #9457
9 changes: 9 additions & 0 deletions pylint/checkers/base/name_checker/checker.py
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,12 @@ def visit_assignname( # pylint: disable=too-many-branches
if isinstance(assign_type, nodes.Comprehension):
self._check_name("inlinevar", node.name, node)

elif isinstance(assign_type, nodes.TypeVar):
self._check_name("typevar", node.name, node)

elif isinstance(assign_type, nodes.TypeAlias):
self._check_name("typealias", node.name, node)

# Check names defined in module scope
elif isinstance(frame, nodes.Module):
# Check names defined in Assign nodes
Expand Down Expand Up @@ -625,6 +631,9 @@ def _check_typevar(self, name: str, node: nodes.AssignName) -> None:
node.assign_type().value.elts[node.parent.elts.index(node)].keywords
)
args = node.assign_type().value.elts[node.parent.elts.index(node)].args
else: # PEP 695 generic type nodes
keywords = ()
args = ()

variance = TypeVarVariance.invariant
name_arg = None
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,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>=3.0.3,<=3.1.0-dev0",
"astroid>=3.1.0,<=3.2.0-dev0",
"isort>=4.2.5,<6,!=5.13.0",
"mccabe>=0.6,<0.8",
"tomli>=1.1.0;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==3.0.3 # Pinned to a specific version for tests
astroid==3.1.0 # Pinned to a specific version for tests
typing-extensions~=4.9
py~=1.11.0
pytest~=7.4
Expand Down
2 changes: 1 addition & 1 deletion tests/functional/i/import_error.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import-error:3:0:3:22::Unable to import 'totally_missing':UNDEFINED
import-error:21:4:21:26::Unable to import 'maybe_missing_2':UNDEFINED
no-name-in-module:33:0:33:49::No name 'syntax_error' in module 'functional.s.syntax':UNDEFINED
syntax-error:33:0:None:None::Cannot import 'functional.s.syntax.syntax_error' due to 'invalid syntax (<unknown>, line 1)':HIGH
syntax-error:33:0:None:None::Cannot import 'functional.s.syntax.syntax_error' due to 'invalid syntax (functional.s.syntax.syntax_error, line 1)':HIGH
multiple-imports:78:0:78:15::Multiple imports on one line (foo, bar):UNDEFINED
import-error:96:4:96:15::Unable to import 'foo2':UNDEFINED
2 changes: 1 addition & 1 deletion tests/functional/s/syntax/syntax_error.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
syntax-error:1:5:None:None::"Parsing failed: 'invalid syntax (<unknown>, line 1)'":HIGH
syntax-error:1:5:None:None::"Parsing failed: 'invalid syntax (syntax_error, line 1)'":HIGH
Empty file.
4 changes: 4 additions & 0 deletions tests/functional/t/type/typealias_naming_style_py312.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
"""PEP 695 generic typing nodes"""

type Point[T] = tuple[T, ...]
type point[T] = tuple[T, ...] # [invalid-name]
2 changes: 2 additions & 0 deletions tests/functional/t/type/typealias_naming_style_py312.rc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[testoptions]
min_pyver=3.12
1 change: 1 addition & 0 deletions tests/functional/t/type/typealias_naming_style_py312.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
invalid-name:4:5:4:10::"Type alias name ""point"" doesn't conform to predefined naming style":HIGH
File renamed without changes.
4 changes: 4 additions & 0 deletions tests/functional/t/type/typevar_naming_style_py312.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
"""PEP 695 generic typing nodes"""

type Point[T] = tuple[T, ...]
type Point[t] = tuple[t, ...] # [invalid-name]
2 changes: 2 additions & 0 deletions tests/functional/t/type/typevar_naming_style_py312.rc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[testoptions]
min_pyver=3.12
1 change: 1 addition & 0 deletions tests/functional/t/type/typevar_naming_style_py312.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
invalid-name:4:11:4:12::"Type variable name ""t"" doesn't conform to predefined naming style":HIGH
6 changes: 3 additions & 3 deletions tests/functional/u/used/used_before_assignment.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,15 +132,15 @@ def turn_on2(**kwargs):
# Variables guarded by the same test when used.

# Always false
if __name__ == "__main__":
if 1 in []:
PERCENT = 20
SALE = True

if __name__ == "__main__":
if 1 in []:
print(PERCENT)

# Different test
if __name__ is None:
if 1 in [1]:
print(SALE) # [used-before-assignment]


Expand Down
4 changes: 2 additions & 2 deletions tests/test_self.py
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ def test_json_report_when_file_has_syntax_error(self) -> None:
assert message[key] == value
msg = message["message"].lower()
assert any(x in msg for x in ("expected ':'", "invalid syntax"))
assert "<unknown>" in msg
assert "syntax_error" in msg
assert "line 1" in msg

def test_json_report_when_file_is_missing(self) -> None:
Expand Down Expand Up @@ -610,7 +610,7 @@ def foobar(arg):

def test_stdin_syntax_error(self) -> None:
expected_output = """************* Module a
a.py:1:4: E0001: Parsing failed: 'invalid syntax (<unknown>, line 1)' (syntax-error)"""
a.py:1:4: E0001: Parsing failed: 'invalid syntax (a, line 1)' (syntax-error)"""
with mock.patch(
"pylint.lint.pylinter._read_stdin", return_value="for\n"
) as mock_stdin:
Expand Down