Comment puis-je créer automatiquement le code passe-partout des fichiers pyi ?
Je veux créer un fichier pyi pour l'indication de type comme décrit dans pep484 qui contient tous les noms de méthode.
Je ne veux pas de magie. Je souhaite ajouter les informations de type après la création automatique du fichier.
Je veux éviter le travail de copier-coller.
Objectif: saisir des indications dans PyCharm pour Python2.
En ce qui me concerne, il n'y a pas un tel outil direct dans PyCharm. Il existe cependant des outils tiers pour cela.
.pyi
générateursOui, je suppose que quiconque souhaite utiliser la vérification de type à la compilation en Python finit probablement par utiliser MyPy. MyPy contient stubgen.py outil qui génère .pyi
des dossiers.
mkdir out
stubgen urllib.parse
génère out/urllib/parse.pyi
.
Vous pouvez également l'utiliser avec Python2:
stubgen --py2 textwrap
Et pour les modules C:
scripts/stubgen --docpath <DIR>/Python-3.4.2/Doc/library curses
Si vous souhaitez spécifier le chemin d'accès à votre package personnalisé, vous pouvez utiliser --search-path
option:
stubgen my-pkg --search-path=folder/path/to/the/package
Ce projet est dédié précisément à cet objectif.
Un très basique (mais il a une poignée d'options, il suffit de consulter README.md
ou make_stub_files -h
make_stub_files foo.py
.pyi
des dossiersVous n'avez donc pas à écrire le vôtre.
Oui, si vous utilisez .pyi
fichiers dans votre propre projet, vous souhaiterez probablement l'utiliser également lorsque vous utilisez du code externe. Typeshed contient .pyi
fichiers pour stdlib Python2 et Python3 et un tas de bibliothèques Python2 (comme redis , crypto , ...) et certaines bibliothèques Python3 (comme werkzeug ou requêtes ), tous joliment versionnés.
.pyi
des dossiersSi vous êtes paresseux ou si vous travaillez simplement sur un projet qui ne nécessite pas .pyi
fichiers et vous ne voulez pas être dérangé par l'utilisation d'outils tiers, PyCharm vous permet d'utiliser:
J'ai écrit un makefile pour cela:
package := example
sources := $(wildcard $(package)/*.py)
stub: $(sources)
stubgen --output . --package $(package)
dist: setup.py stub
python $< sdist bdist_wheel
publish: dist
twine upload dist/*
.PHONY += stub dist publish
Fonctionnement make publish
générera le .pyi
fichiers au même emplacement que leur .py
fichiers avant l'empaquetage et le téléchargement sur PyPI. Ils seront inclus dans le package à condition qu'ils fassent partie de package_data
.