diff --git a/pyproject.toml b/pyproject.toml index 3e073e2ade..a8efe1e096 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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.0b0,<=3.1.0-dev0", + "astroid>=3.0.0,<=3.1.0-dev0", "isort>=4.2.5,<6", "mccabe>=0.6,<0.8", "tomli>=1.1.0;python_version<'3.11'", diff --git a/requirements_test_min.txt b/requirements_test_min.txt index ce0aaab376..4ebc9c2878 100644 --- a/requirements_test_min.txt +++ b/requirements_test_min.txt @@ -1,6 +1,6 @@ .[testutils,spelling] # astroid dependency is also defined in pyproject.toml -astroid==3.0.0b0 # Pinned to a specific version for tests +astroid==3.0.0 # Pinned to a specific version for tests typing-extensions~=4.8 py~=1.11.0 pytest~=7.4 diff --git a/tests/functional/n/no/no_member_typevar.py b/tests/functional/n/no/no_member_typevar.py new file mode 100644 index 0000000000..1cf59dd39c --- /dev/null +++ b/tests/functional/n/no/no_member_typevar.py @@ -0,0 +1,25 @@ +# pylint: disable=missing-module-docstring, invalid-name, missing-class-docstring, unused-variable + + +from dataclasses import dataclass +from typing import Generic, TypeVar + + +T_Inner = TypeVar("T_Inner", bound="Inner") + + +@dataclass +class Inner: + inner_attribute: str + + +@dataclass +class Outer(Generic[T_Inner]): + inner: T_Inner + + +x = Outer(inner=Inner(inner_attribute="magic xylophone")) + +# Test `no-member` is not emitted here. +# https://github.com/pylint-dev/pylint/issues/9069 +print(x.inner.inner_attribute) diff --git a/tests/functional/u/unsubscriptable_object.py b/tests/functional/u/unsubscriptable_object.py index 4f21871d05..464895c68a 100644 --- a/tests/functional/u/unsubscriptable_object.py +++ b/tests/functional/u/unsubscriptable_object.py @@ -1,7 +1,34 @@ """Tests for unscubscriptable-object""" -# Test for typing.NamedTuple -# See: https://github.com/pylint-dev/pylint/issues/1295 +# pylint: disable=unused-variable, too-few-public-methods + import typing +from collections.abc import Mapping +from typing import Generic, TypeVar, TypedDict +from dataclasses import dataclass + +# Test for typing.NamedTuple +# See: https://github.com/pylint-dev/pylint/issues/1295 MyType = typing.Tuple[str, str] + + +# https://github.com/pylint-dev/astroid/issues/2305 +class Identity(TypedDict): + """It's the identity.""" + + name: str + +T = TypeVar("T", bound=Mapping) + +@dataclass +class Animal(Generic[T]): + """It's an animal.""" + + identity: T + +class Dog(Animal[Identity]): + """It's a Dog.""" + +dog = Dog(identity=Identity(name="Dog")) +print(dog.identity["name"])