python / python/typeshed

More flexible type support for `math.prod` and `math.sumprod`

Offen
#13,501 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

stubs: improvement
Vorherrschende Sprache
Python
Sterne
5.1k
Forks
2.1k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
82

Beschreibung

Also related to https://github.com/python/typeshed/issues/11913

Currently, math.prod and math.sumprod do not properly support Decimal, Fraction, complex, or possibly other numeric types. This makes it inconvenient to replace builtins.sum with math.prod in a straightforward manner.

from typing import reveal_type
from fractions import Fraction
from math import prod

a = prod([Fraction(1), Fraction(2)])
reveal_type(a)  # it should be Fraction | Literal[1], but float for now

prod([complex(1, 0), complex(1, 2)])

Mypy Playground Link

I believe it should be followed the type stub of builtins.sum, but I’m not sure what breaking changes this might cause.

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.

Rechercherichtung

Beginne mit der Untersuchung der Type Stubs für math.prod und math.sumprod und vergleiche anschließend ihr Verhalten mit dem Stub von builtins.sum. Verwende die verlinkten Mypy Playground-Beispiele, um die Inferenz für Decimal, Fraction und complex zu überprüfen, und bestätige die resultierenden Typen sowie etwaige Kompatibilitätsbedenken, bevor du das Issue als erledigt betrachtest.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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