From 65e950e42bdad4fca73ac23f42f40ecaa5d9bbee Mon Sep 17 00:00:00 2001
From: guitvcer <abdrakhman.galaxy.s2@gmail.com>
Date: Thu, 27 Mar 2025 11:31:38 +0500
Subject: [PATCH 1/4] rm non-existing _DT from ordered dataclass

---
 mypy/plugins/dataclasses.py           |  6 +-----
 test-data/unit/check-dataclasses.test | 12 ++++++++++++
 test-data/unit/fixtures/tuple.pyi     |  1 +
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/mypy/plugins/dataclasses.py b/mypy/plugins/dataclasses.py
index 90c983b0bacd..57d3b5208f48 100644
--- a/mypy/plugins/dataclasses.py
+++ b/mypy/plugins/dataclasses.py
@@ -291,11 +291,7 @@ def transform(self) -> bool:
                 self._api, self._cls, "__init__", args=args, return_type=NoneType()
             )
 
-        if (
-            decorator_arguments["eq"]
-            and info.get("__eq__") is None
-            or decorator_arguments["order"]
-        ):
+        if decorator_arguments["eq"] and info.get("__eq__") is None:
             # Type variable for self types in generated methods.
             obj_type = self._api.named_type("builtins.object")
             self_tvar_expr = TypeVarExpr(
diff --git a/test-data/unit/check-dataclasses.test b/test-data/unit/check-dataclasses.test
index 887a9052d0b9..e51a66b953a7 100644
--- a/test-data/unit/check-dataclasses.test
+++ b/test-data/unit/check-dataclasses.test
@@ -2594,3 +2594,15 @@ class B2(B1):  # E: A NamedTuple cannot be a dataclass
     pass
 
 [builtins fixtures/tuple.pyi]
+
+[case testOrderedDataclassSelfTVARNotExist]
+from dataclasses import dataclass
+
+@dataclass(order=True)
+class A:
+    b: int
+
+a = A(1)
+a._DT  # E: "A" has no attribute "_DT"
+
+[builtins fixtures/tuple.pyi]
diff --git a/test-data/unit/fixtures/tuple.pyi b/test-data/unit/fixtures/tuple.pyi
index d01cd0034d26..544ef12e94ed 100644
--- a/test-data/unit/fixtures/tuple.pyi
+++ b/test-data/unit/fixtures/tuple.pyi
@@ -9,6 +9,7 @@ _Tco = TypeVar('_Tco', covariant=True)
 class object:
     def __init__(self) -> None: pass
     def __new__(cls) -> Self: ...
+    def __eq__(self, other) -> bool: pass
 
 class type:
     def __init__(self, *a: object) -> None: pass

From bd56e277df55d96e51aaa856b767e7ef233d28d7 Mon Sep 17 00:00:00 2001
From: Shantanu <12621235+hauntsaninja@users.noreply.github.com>
Date: Thu, 27 Mar 2025 00:18:07 -0700
Subject: [PATCH 2/4] Update test-data/unit/fixtures/tuple.pyi

---
 test-data/unit/fixtures/tuple.pyi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test-data/unit/fixtures/tuple.pyi b/test-data/unit/fixtures/tuple.pyi
index 544ef12e94ed..22462023aad4 100644
--- a/test-data/unit/fixtures/tuple.pyi
+++ b/test-data/unit/fixtures/tuple.pyi
@@ -9,7 +9,7 @@ _Tco = TypeVar('_Tco', covariant=True)
 class object:
     def __init__(self) -> None: pass
     def __new__(cls) -> Self: ...
-    def __eq__(self, other) -> bool: pass
+    def __eq__(self, other: object) -> bool: pass
 
 class type:
     def __init__(self, *a: object) -> None: pass

From 259e0e14e0a86f38b44aad545e0e80ee34d87398 Mon Sep 17 00:00:00 2001
From: guitvcer <abdrakhman.galaxy.s2@gmail.com>
Date: Mon, 31 Mar 2025 17:13:10 +0500
Subject: [PATCH 3/4] rm non-existing _DT from eq=True dataclass

---
 mypy/plugins/dataclasses.py | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/mypy/plugins/dataclasses.py b/mypy/plugins/dataclasses.py
index 57d3b5208f48..ae063b81b7fb 100644
--- a/mypy/plugins/dataclasses.py
+++ b/mypy/plugins/dataclasses.py
@@ -291,18 +291,6 @@ def transform(self) -> bool:
                 self._api, self._cls, "__init__", args=args, return_type=NoneType()
             )
 
-        if decorator_arguments["eq"] and info.get("__eq__") is None:
-            # Type variable for self types in generated methods.
-            obj_type = self._api.named_type("builtins.object")
-            self_tvar_expr = TypeVarExpr(
-                SELF_TVAR_NAME,
-                info.fullname + "." + SELF_TVAR_NAME,
-                [],
-                obj_type,
-                AnyType(TypeOfAny.from_omitted_generics),
-            )
-            info.names[SELF_TVAR_NAME] = SymbolTableNode(MDEF, self_tvar_expr)
-
         # Add <, >, <=, >=, but only if the class has an eq method.
         if decorator_arguments["order"]:
             if not decorator_arguments["eq"]:

From a5e4c77fe7da5a534202f1745d5013e8a5a90c80 Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
 <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Mon, 31 Mar 2025 12:16:55 +0000
Subject: [PATCH 4/4] [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
---
 mypy/plugins/dataclasses.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/mypy/plugins/dataclasses.py b/mypy/plugins/dataclasses.py
index ae063b81b7fb..50e9c927df9d 100644
--- a/mypy/plugins/dataclasses.py
+++ b/mypy/plugins/dataclasses.py
@@ -40,7 +40,6 @@
     TempNode,
     TypeAlias,
     TypeInfo,
-    TypeVarExpr,
     Var,
 )
 from mypy.plugin import ClassDefContext, FunctionSigContext, SemanticAnalyzerPluginInterface