Il s'agit d'un modèle Cookietter pour créer un projet Python à distribuer chez PYPI. Il comprend l'intégration avec les actions GitHub, readthedocs.io et couverts.io.
La structure du projet suit le schéma du projet de démonstration de Excuses. La poésie est utilisée Gérer les emballages et les dépendances Python, et la plupart des tâches quotidiennes (telles que les tests unitaires exécutées à partir de la ligne de commande) sont orchestrés via la poésie à l'aide de mon travail de script-script. Une norme de codage est appliquée à l'aide du noir, de l'isort et du pylint. L'arrière de type Python 3 est validée à l'aide de mypy. Le workflow GitHub Actions est une construction de matrice implémentée à l'aide de mes flux de travail-shared gha. Il existe également des crochets pré-engagés pour appliquer les vérifications du style de code. Un fichier DEVELOPER.md généré.md fournit des notes sur la façon dont le code est structuré, comment configurer un environnement de développement, etc.
Pour utiliser ce modèle, vous devez installer Cookietter:
pip install cookiecutter
Le projet résultant dépend de l'outil de construction de poésie. Vous devez installer uniquement un interprète Python 3 et une poésie. La poésie elle-même s'occupe de tout le reste. Voir les instructions.
Le processus de développeur décrit dans le fichier DEVELOPER.md résultant suppose que vous travaillez un shell de style Unix, comme Bash. Sur Windows, vous devez utiliser l'émulateur Git Bash installé avec GIT pour Windows.
Par défaut, le processus de publication dans le flux de travail .github/workflows/test-suite.yml généré est configuré pour publier des artefacts en les attachant à une version dans le référentiel GitHub. (Le fichier DEVELOPER.md généré contient des instructions.) Éventuellement, vous pouvez également publier sur PYPI. Pour ce faire, créez un compte chez PYPI pour vous-même et enregistrez votre projet. Une fois que le projet existe, accédez à vos paramètres de compte PYPI et créez un jeton API avec des autorisations de téléchargement pour le nouveau projet. Dans votre référentiel GitHub, ajoutez un secret d'action GitHub appelé PYPI_TOKEN pour tenir le jeton. Ensuite, ajustez test-suite.yml pour définir publish-pypi: true .
Utilisez cookiecutter pour exécuter le modèle:
cookiecutter gh:pronovic/cookiecutter-pypi
Lorsque vous êtes invité, fournissez des valeurs pour tous les paramètres de modèle:
project_slug [sample-project]:
project_name [Sample Project]:
short_description [Short description]:
author_name [First Last]:
author_email [[email protected]]:
github_owner [owner]:
github_repo [samplerepo]:
default_branch [master]:
package [sample]:
python_version [>=3.9,<4]:
black_target ['py39', 'py310']:
copyright_year [2022]:
Le SLUG du projet est le nom du répertoire résultant, donc dans cet exemple, le projet sera généré dans sample-project :
cd sample-project
Ensuite, initialisez le référentiel GIT:
git init . && git add . && git commit -m "Initial revision based on pronovic/cookiecutter-pypi"
En supposant que vous avez déjà installé poetry (selon les instructions), vous pouvez commencer les choses à utiliser le script run . Tout d'abord, installez les dépendances et configurez les crochets pré-Commiss:
./run install
Enfin, exécutez la suite de tests:
./run suite
En supposant que la suite de test passe, vous devrez vérifier poetry.lock avec la version actuelle de toutes les dépendances:
git add poetry.lock && git commit -m "Add initial poetry.lock" poetry.lock
Ensuite, vous pouvez pousser vers votre référentiel et tester le processus des actions GitHub.
Remarque: Pour voir quelles autres commandes sont disponibles, utilisez
./run --help. Voir le fichierDEVELOPER.mdgénéré pour plus d'informations sur l'environnement de développement, y compris l'intégration avec PyCharm, etc.
Vous devrez ajuster manuellement .github/workflows/test-suite.yml pour refléter les plates-formes et les versions Python que vous souhaitez tester. Le flux de travail suggéré exécute une construction matricielle sur Linux pour toutes les versions Python prises en charge, et une construction sur Windows et MacOS uniquement pour la dernière version Python. Dans les actions GitHub, les coureurs Linux sont beaucoup plus rapides et plus fiables, donc cette stratégie semble donner les meilleurs résultats.