matplotlib / matplotlib/cmocean
Static type checkers can't recognize colormaps
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 269
- Forks
- 54
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Static type checkers like MyPy or Pylance can't recognize variables created dynamically with [`locals().update(cmap_d)`](https://github.com/matplotlib/cmocean/blob/59c35002c3aa5296b65d9646e52604c627441eb6/cmocean/cm.py#L84). Past just type checking, Pylance can't even recognize that colormaps exist, e.g., `cmocean.cm.balance` produces an [attribute access issue error](https://github.com/microsoft/pylance-release/blob/main/docs/diagnostics/reportAttributeAccessIssue.md) in Pylance.
Matplotlib colormaps have the same issue, which they solve by including a stub file [cm.pyi](https://github.com/matplotlib/matplotlib/blob/main/lib/matplotlib/cm.pyi) that defines the attributes and types.
If there's interest in include a cm.pyi file here, it is straightforward to generate one automatically based on the colormaps defined in `cmap_d` and I'd be happy to make a PR with the details.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
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.
Piste de recherche
Inspectez cmocean/cm.py et la définition de cmap_d pour voir comment les palettes de couleurs sont créées dynamiquement. Comparez le stub cm.pyi de Matplotlib référencé et déterminez comment un stub généré exposerait les attributs et les types des palettes de couleurs ; le travail est terminé lorsque MyPy et Pylance reconnaissent des entrées telles que cmocean.cm.balance.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- data-visualization
- Type d'issue
- Fonctionnalité
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100