python / python/cpython

Generic class with broken `__eq__` cannot be specialized

Offen
#119,972 0 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

@JelleZijlstra arbeitet bereits daran.

Seit 03.6.2024.

3.12 3.13 3.14 topic-typing type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
36k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug report

Bug description:

This test case currently fails:

    def test_buggy_eq(self):
        class BrokenEq(abc.ABCMeta):
            def __eq__(self, other):
                raise TypeError("I'm broken")

        class G(Generic[T], metaclass=BrokenEq):
            pass

        alias = G[int]
        self.assertIs(get_origin(alias), G)
        self.assertEqual(get_args(alias), (int,))

See python/typing_extensions#422 for a real-world example.

CPython versions tested on:

CPython main branch

Operating systems tested on:

macOS

Linked PRs
  • gh-119973

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.