Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Mypy plugin generates incompatible type overloads for @curry decorated functions with TypeVar

Offen
#1,071 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
tooling

Rechercherichtung

Beginne mit dem Reproducer unter Verwendung von TypeVar, @curry, IO und mypy und vergleiche die für _union_sets und _concat_objs generierten Overloads mit den gemeldeten Fehlern. Verfolge den Einstiegspunkt für die Overload-Generierung des Curry-Plugins und füge eine Regression-Prüfung hinzu, die zeigt, dass beide Curry-Funktionen mit den erwarteten Callable-Signaturen typgeprüft werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug

Bug report

What's wrong

returns mypy plugin generate incorrect type overloads for curry decorated function with TypeVar arguments

Code to reproduce issue:

from typing import TypeVar

from returns.curry import curry
from returns.io import IO

_T = TypeVar('_T', int, str)

@curry
def _union_sets(first_set: set[_T], second_set: set[_T]) -> set[_T]:
    return first_set.union(second_set)
    
@curry
def _concat_objs(first: _T, second: _T) -> _T:
    return first + second

set_1 = IO({1, 2, 3})
set_2 = IO({3, 4, 5})

union = set_1.apply(set_2.apply(IO(_union_sets)))

string_1 = IO('a')
string_2 = IO('b')

concat = string_1.apply(string_2.apply(IO(_concat_objs)))

Mypy gives incompatible type overloaded function error for both curried functions:

error: Argument 1 to "IO" has incompatible type overloaded function; expected "Callable[[Set[int]], Callable[..., Set[_T]]]"  [arg-type]
error: Argument 1 to "IO" has incompatible type overloaded function; expected "Callable[[Set[int]], Callable[[Set[int]], Set[_T]]]"  [arg-type]
error: Argument 1 to "IO" has incompatible type overloaded function; expected "Callable[[str], Callable[..., _T]]"  [arg-type]
error: Argument 1 to "IO" has incompatible type overloaded function; expected "Callable[[str], Callable[[str], _T]]"  [arg-type]

How is that should be

Type overloads for functions with TypeVar's should be generated correctly

System information

  • python version: 3.9.7

  • returns version: 0.16.0

  • mypy version: 0.910

  • hypothesis version (if any):

  • pytest version (if any):

Vorherrschende Sprache
Python
Sterne
4.4k
Forks
156
Ø Merge
3 Std. 44 Min.
Gemergte PRs (30 T.)
22

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus dry-python/returns

Alle Issues in dry-python/returns

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

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