pyqtProperty setter always raises an error
Offen
Dieses Issue hat noch niemand übernommen.
bug
topic-descriptors
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
It seems that Mypy is not enjoying pyqtProperty setters. Someone already asked on the Qt mailing-list.
To Reproduce
from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal
class FeatureModel(QObject):
stateChanged = pyqtSignal()
def __init__(self, enabled: bool, /) -> None:
super().__init__()
self._enabled = enabled
@pyqtProperty(bool, notify=stateChanged)
def enabled(self):
return self._enabled
@enabled.setter
def enabled(self, enabled):
self._enabled = enabled
self.stateChanged.emit()
Expected Behavior
Mypy should be happy.
Actual Behavior
$ python -m mypy file.py
file.py:16: error: Name 'enabled' already defined on line 12
Found 1 error in 1 file (checked 1 source file)
Your Environment
- Mypy version used: 0.790
- Mypy command-line flags: None
- Mypy configuration options from
mypy.ini(and other config files): None - Python version used: 3.8.6
- Operating system and version: macOS Big Sur (arm64) and Windows 10.
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
Beginne mit der bereitgestellten Datei file.py und führe python -m mypy file.py aus, um den Fehler duplicate-definition zu bestätigen. Untersuche anschließend, wie mypy pyqtProperty und seine .setter-Form behandelt; erledigt ist die Aufgabe, wenn das Beispiel ohne den gemeldeten Fehler die Typprüfung besteht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 38/100