Add typed attribute to third party class.
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
Piste de recherche
Commencez par reproduire les résultats de reveal_type dans airflow/www/views.py:850 ainsi que la tentative avec TYPE_CHECKING autour de la ligne 115. Examinez comment les types de Flask's flask.globals et stubgen gèrent les attributs de bibliothèques tierces. Le travail sera considéré comme terminé lorsque l’issue disposera d’une approche documentée et maintenable, ou d’une fonctionnalité de type-checker clairement délimitée permettant de typer ces attributs sans un stub de remplacement complet.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Feature
I would like to be able to add a (typed) attribute to a third-party class instance.
To give a specific example, Flask's current_app, and Flask-AppBuilder. Some example code:
def my_view(self):
reveal_type(current_app.appbuilder)
if current_app.appbuilder.sm.has_access(...):
...
The reveal_type here shows Any: airflow/www/views.py:850: note: Revealed type is 'Any'
Things I tried:
-
To add a typed attribute myself:
if TYPE_CHECKING: current_app.appbuilder = AppBuilder(None) reveal_type(current_app.appbuilder)Didn't work:
airflow/www/views.py:115: note: Revealed type is 'Any' -
A partial type stub file
I could use
stubgenetc to create a stub file for all offlaskand then edit the type inflask.globals, but this presents a maintenance burden that I don't want (keeping it in sync).I searched for any way I could to have a "partial" stub file -- if I could have a
stubs/flask/globals.pyiwith out neededing all the rest of the type stubs for this module, but couldn't get it working - likely not supported.
Pitch
I don't know what the feature would look like, but for the flask ecosystem it is fairly common to add properties on to the global flask object, or the g global variable, and I would love to be able to type-check my use of them, without needing to cast it at each use.
This issue is mostly a request for help/ "is there any sensible way of doing this?"
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Merge moyen
- 1 j 18 h
- PR mergées (30 j)
- 54
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de python/mypy
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
bug topic-configuration topic-error-reporting
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Toutes les issues de python/mypy
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
zostera/django-bootstrap4#894 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
use-agent-os/agent-os#3276 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
NousResearch/hermes-agent#117848 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
zilliztech/memsearch#759 ·