diff --git a/conformance/results/mypy/dataclasses_descriptors.toml b/conformance/results/mypy/dataclasses_descriptors.toml index e47310293..fb8cbefae 100644 --- a/conformance/results/mypy/dataclasses_descriptors.toml +++ b/conformance/results/mypy/dataclasses_descriptors.toml @@ -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]'] """ diff --git a/conformance/results/pycroscope/dataclasses_descriptors.toml b/conformance/results/pycroscope/dataclasses_descriptors.toml index 5b89c7ef9..cdd4d0cd9 100644 --- a/conformance/results/pycroscope/dataclasses_descriptors.toml +++ b/conformance/results/pycroscope/dataclasses_descriptors.toml @@ -1,23 +1,5 @@ -conformant = "Partial" -notes = """ -Conformance suite is questionable; see -""" -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: 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: 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: has no attribute 'x' [undefined_attribute] -./dataclasses_descriptors.py:62:12: Any[error] is not equivalent to list[str] -./dataclasses_descriptors.py:62:12: 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 """ diff --git a/conformance/results/pyrefly/dataclasses_descriptors.toml b/conformance/results/pyrefly/dataclasses_descriptors.toml index 21e34e3c3..cdd4d0cd9 100644 --- a/conformance/results/pyrefly/dataclasses_descriptors.toml +++ b/conformance/results/pyrefly/dataclasses_descriptors.toml @@ -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] """ diff --git a/conformance/results/results.html b/conformance/results/results.html index 94a105325..2525a3b81 100644 --- a/conformance/results/results.html +++ b/conformance/results/results.html @@ -1730,33 +1730,11 @@

Python Type System Conformance Test Results

dataclasses_descriptors - - Partial -
    -
  • Assumes descriptor behavior only when field is assigned in class body.
  • -
  • Does not correctly evaluate type of descriptor access.
  • -
- - - Partial - - - - Partial -
    -
  • 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
  • -
- Pass - - Partial -
    -
  • 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.
  • -
- + Pass + Pass + Pass + Pass Pass @@ -1935,11 +1913,11 @@

Python Type System Conformance Test Results

- 11.5 / 16 • 71.9% - 15.5 / 16 • 96.9% - 15.5 / 16 • 96.9% + 12 / 16 • 75.0% + 16 / 16 • 100.0% + 16 / 16 • 100.0% + 16 / 16 • 100.0% 16 / 16 • 100.0% - 15.5 / 16 • 96.9% 16 / 16 • 100.0% @@ -2532,11 +2510,11 @@

Python Type System Conformance Test Results

- 110 / 146 • 75.3% - 138.5 / 146 • 94.9% - 142 / 146 • 97.3% + 110.5 / 146 • 75.7% + 139 / 146 • 95.2% + 142.5 / 146 • 97.6% 140.5 / 146 • 96.2% - 141 / 146 • 96.6% + 141.5 / 146 • 96.9% 146 / 146 • 100.0% diff --git a/conformance/results/ty/dataclasses_descriptors.toml b/conformance/results/ty/dataclasses_descriptors.toml index 91ad20b90..cdd4d0cd9 100644 --- a/conformance/results/ty/dataclasses_descriptors.toml +++ b/conformance/results/ty/dataclasses_descriptors.toml @@ -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` """ diff --git a/conformance/tests/dataclasses_descriptors.py b/conformance/tests/dataclasses_descriptors.py index f2f30a623..beea1a0b7 100644 --- a/conformance/tests/dataclasses_descriptors.py +++ b/conformance/tests/dataclasses_descriptors.py @@ -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)