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
15 changes: 1 addition & 14 deletions conformance/results/mypy/dataclasses_descriptors.toml
Original file line number Diff line number Diff line change
@@ -1,18 +1,5 @@
conformant = "Partial"
notes = """
Assumes descriptor behavior only when field is assigned in class body.
Does not correctly evaluate type of descriptor access.
"""
output = """
dataclasses_descriptors.py:61: error: Cannot access instance-only attribute "x" on class object [misc]
dataclasses_descriptors.py:62: error: Cannot access instance-only attribute "y" on class object [misc]
dataclasses_descriptors.py:66: error: Expression is of type "Desc2[int]", not "int" [assert-type]
dataclasses_descriptors.py:67: error: Expression is of type "Desc2[str]", not "str" [assert-type]
"""
conformance_automated = "Fail"
conformance_automated = "Pass"
errors_diff = """
Line 61: Unexpected errors ['dataclasses_descriptors.py:61: error: Cannot access instance-only attribute "x" on class object [misc]']
Line 62: Unexpected errors ['dataclasses_descriptors.py:62: error: Cannot access instance-only attribute "y" on class object [misc]']
Line 66: Unexpected errors ['dataclasses_descriptors.py:66: error: Expression is of type "Desc2[int]", not "int" [assert-type]']
Line 67: Unexpected errors ['dataclasses_descriptors.py:67: error: Expression is of type "Desc2[str]", not "str" [assert-type]']
"""
20 changes: 1 addition & 19 deletions conformance/results/pycroscope/dataclasses_descriptors.toml
Original file line number Diff line number Diff line change
@@ -1,23 +1,5 @@
conformant = "Partial"
notes = """
Conformance suite is questionable; see <https://github.com/python/typing/issues/2259>
"""
conformance_automated = "Fail"
conformance_automated = "Pass"
errors_diff = """
Line 61: Unexpected errors ['./dataclasses_descriptors.py:61:12: Any[error] is not equivalent to list[int]', "./dataclasses_descriptors.py:61:12: <class 'DC2'> has no attribute 'x' [undefined_attribute]"]
Line 62: Unexpected errors ['./dataclasses_descriptors.py:62:12: Any[error] is not equivalent to list[str]', "./dataclasses_descriptors.py:62:12: <class 'DC2'> has no attribute 'y' [undefined_attribute]"]
Line 63: Unexpected errors ['./dataclasses_descriptors.py:63:12: list[Any[generic_argument]] is not equivalent to list[str]']
Line 66: Unexpected errors ['./dataclasses_descriptors.py:66:12: ./dataclasses_descriptors.py.Desc2[int] is not equivalent to int']
Line 67: Unexpected errors ['./dataclasses_descriptors.py:67:12: ./dataclasses_descriptors.py.Desc2[str] is not equivalent to str']
Line 68: Unexpected errors ['./dataclasses_descriptors.py:68:12: Any[generic_argument] is not equivalent to str']
"""
output = """
./dataclasses_descriptors.py:61:12: Any[error] is not equivalent to list[int]
./dataclasses_descriptors.py:61:12: <class 'DC2'> has no attribute 'x' [undefined_attribute]
./dataclasses_descriptors.py:62:12: Any[error] is not equivalent to list[str]
./dataclasses_descriptors.py:62:12: <class 'DC2'> has no attribute 'y' [undefined_attribute]
./dataclasses_descriptors.py:63:12: list[Any[generic_argument]] is not equivalent to list[str]
./dataclasses_descriptors.py:66:12: ./dataclasses_descriptors.py.Desc2[int] is not equivalent to int
./dataclasses_descriptors.py:67:12: ./dataclasses_descriptors.py.Desc2[str] is not equivalent to str
./dataclasses_descriptors.py:68:12: Any[generic_argument] is not equivalent to str
"""
9 changes: 1 addition & 8 deletions conformance/results/pyrefly/dataclasses_descriptors.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
conformant = "Partial"
notes = """
Assumes descriptor behavior only when field is assigned in class body
Doesn't allow non-data descriptors or data descriptors with differing `__get__` and `__set__` types
"""
conformance_automated = "Fail"
conformance_automated = "Pass"
errors_diff = """
Line 58: Unexpected errors ['Cannot set field `z` to non-data descriptor `Desc2` [bad-dataclass-descriptor]']
"""
output = """
ERROR dataclasses_descriptors.py:58:5-6: Cannot set field `z` to non-data descriptor `Desc2` [bad-dataclass-descriptor]
"""
46 changes: 12 additions & 34 deletions conformance/results/results.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 1 addition & 9 deletions conformance/results/ty/dataclasses_descriptors.toml
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
conformance_automated = "Fail"
conformant = "Partial"
notes = """
Only infers a descriptor `__get__` method as being called when a descriptor attribute is accessed on an instance if the descriptor attribute is present in the class namespace.
"""
conformance_automated = "Pass"
errors_diff = """
Line 66: Unexpected errors ['dataclasses_descriptors.py:66:1: error[type-assertion-failure] Type `int | Desc2[int]` does not match asserted type `int`']
Line 67: Unexpected errors ['dataclasses_descriptors.py:67:1: error[type-assertion-failure] Type `str | Desc2[str]` does not match asserted type `str`']
"""
output = """
dataclasses_descriptors.py:66:1: error[type-assertion-failure] Type `int | Desc2[int]` does not match asserted type `int`
dataclasses_descriptors.py:67:1: error[type-assertion-failure] Type `str | Desc2[str]` does not match asserted type `str`
"""
30 changes: 0 additions & 30 deletions conformance/tests/dataclasses_descriptors.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,33 +36,3 @@ class DC1:

assert_type(dc1.y, int)
assert_type(DC1.y, Desc1)


class Desc2(Generic[T]):
@overload
def __get__(self, instance: None, owner: Any) -> list[T]:
...

@overload
def __get__(self, instance: object, owner: Any) -> T:
...

def __get__(self, instance: object | None, owner: Any) -> list[T] | T:
raise NotImplementedError


@dataclass
class DC2:
x: Desc2[int]
y: Desc2[str]
z: Desc2[str] = Desc2()


assert_type(DC2.x, list[int])
assert_type(DC2.y, list[str])
assert_type(DC2.z, list[str])

dc2 = DC2(Desc2(), Desc2(), Desc2())
assert_type(dc2.x, int)
assert_type(dc2.y, str)
assert_type(dc2.z, str)
Loading