Non-empty container types
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Feature
It would be very helpful to have a way of specifying that a container type must be non-empty.
Pitch
As an example of why this feature would be helpful, consider the following function, average:
from typing import List
def average(numbers: List[float]) -> float:
"""Return the average of a non-empty list of numbers."""
return sum(numbers) / len(numbers)
Rather than relying on exceptions for handling the case when the number of numbers is zero, is seems like something along the lines of the following would be more convenient and more explicit:
from typing import List, NonEmpty
def average(numbers: NonEmpty[List[float]]) -> float:
"""Return the average of a non-empty list of numbers."""
return sum(numbers) / len(numbers)
I don't know anything about the way mypy is implemented so I'm not sure if this is a possible.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Der Issue schlägt einen NonEmpty-Typ für Python-Containerannotationen vor, veranschaulicht mit NonEmpty[List[float]] und der average-Funktion. Beginne mit der Prüfung der bestehenden Unterstützung von mypy für das Typsystem und Typkonstrukte; im Issue werden keine Dateien oder Tests genannt. Für den Abschluss wären ein abgestimmtes Design und eine Typprüfung erforderlich, die die Invariante nicht leerer Container bewahrt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100