Esta es una plantilla de CookieCutter para crear un proyecto de Python para distribuir en PYPI. Incluye integración con acciones de GitHub, readthedocs.io y coverls.io.
La estructura del proyecto sigue el patrón del proyecto de demostración de disculpas. La poesía se usa Management Python Packaging and Dependies, y la mayoría de las tareas diarias (como ejecutar pruebas unitarias desde la línea de comandos) se orquestan a través de la poesía utilizando mi trabajo de rango-script. Se aplica un estándar de codificación usando negro, isort y pylint. El tipo de insintura de tipo Python 3 se valida usando mypy. El flujo de trabajo de GitHub Actions es una construcción de matriz implementada utilizando mis flujos de trabajo compartidos GHA. También hay ganchos previos al comercio para hacer cumplir las verificaciones de estilo de código. Un archivo Generado DEVELOPER.md proporciona notas sobre cómo está estructurado el código, cómo configurar un entorno de desarrollo, etc.
Para usar esta plantilla, debe instalar CookieCutter:
pip install cookiecutter
El proyecto resultante depende de la herramienta de compilación de poesía. Debe instalar solo un intérprete y poesía de Python 3. La poesía en sí se encarga de todo lo demás. Ver las instrucciones.
El proceso de desarrollador descrito en el archivo de DEVELOPER.md resultante supone que está trabajando en un shell de estilo UNIX, como Bash. En Windows, se espera que use el emulador Git Bash instalado con Git para Windows.
De manera predeterminada, el proceso de lanzamiento en el flujo de trabajo .github/workflows/test-suite.yml generado se configura para publicar artefactos al conectarlos a una versión en el repositorio de GitHub. (El archivo Generado DEVELOPER.md contiene instrucciones.) Opcionalmente, también puede publicar en PYPI. Para hacer esto, cree una cuenta en PYPI para usted y registre su proyecto. Una vez que exista el proyecto, vaya a la configuración de su cuenta PYPI y cree un token API con permisos de carga para el nuevo proyecto. En su repositorio de GitHub, agregue un secreto de GitHub Actions llamado PYPI_TOKEN para sostener el token. Luego, ajuste test-suite.yml para establecer publish-pypi: true .
Use cookiecutter para ejecutar la plantilla:
cookiecutter gh:pronovic/cookiecutter-pypi
Cuando se le solicite, proporcione valores para todos los parámetros de plantilla:
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]:
El proyecto Slug es el nombre del directorio resultante, por lo que en este ejemplo el proyecto se generará en sample-project :
cd sample-project
Luego, inicialice el repositorio de git:
git init . && git add . && git commit -m "Initial revision based on pronovic/cookiecutter-pypi"
Suponiendo que ya haya instalado poetry (según las instrucciones), puede comenzar a usar las cosas con el script run . Primero, instale las dependencias y configure los ganchos previos al comercio:
./run install
Finalmente, ejecute la suite de prueba:
./run suite
Suponiendo que pase la suite de prueba, tendrá que verificar en poetry.lock con la versión actual de todas las dependencias:
git add poetry.lock && git commit -m "Add initial poetry.lock" poetry.lock
Luego, puede empujar a su repositorio y probar el proceso de acciones de GitHub.
Nota: Para ver qué otros comandos están disponibles, use
./run --help. Consulte el archivo GeneradoDEVELOPER.mdpara obtener más información sobre el entorno de desarrollo, incluida la integración con Pycharm, etc.
Deberá ajustar manualmente .github/workflows/test-suite.yml para reflejar las plataformas y las versiones de Python que desea probar. El flujo de trabajo sugerido ejecuta una construcción de matriz en Linux para todas las versiones de Python compatibles, y una compilación en Windows y macOS solo para la última versión de Python. En las acciones de GitHub, los corredores de Linux son mucho más rápidos y confiables, por lo que esta estrategia parece producir los mejores resultados.