Makefiles y clasificadores

Desarrollo de paquetes en Python

James Fulton

Climate informatics researcher

Clasificadores

  • Metadatos de tu paquete
  • Ayuda a encontrar tu paquete en PyPI
  • Deberías incluir
    • Estado del paquete
    • Público objetivo
    • Tipo de licencia
    • Idioma
    • Versiones de Python compatibles
  • Hay muchos más clasificadores: https://pypi.org/classifiers

Dentro de setup.py de mysklearn

setup(
    ...
    classifiers=[
        'Development Status :: 2 - Pre-Alpha',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Natural Language :: English',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.6',
        'Programming Language :: Python :: 3.7',
        'Programming Language :: Python :: 3.8',
    ],
    ...
)
Desarrollo de paquetes en Python

¿Para qué sirven los Makefiles?

  • Se usan para automatizar partes de la construcción de tu paquete
mysklearn/
...
|-- README.md
|-- setup.py
|-- Makefile  <---
...
Desarrollo de paquetes en Python

¿Qué hay en un Makefile?

Dentro de Makefile

...

dist: ## compila el paquete fuente y wheel
    python3 setup.py sdist bdist_wheel

clean-build: ## elimina artefactos de compilación rm -fr build/ rm -fr dist/ rm -fr .eggs/
test: ## ejecuta pruebas rápido con el Python por defecto pytest
release: dist ## empaqueta y sube una versión twine upload dist/*
Desarrollo de paquetes en Python

¿Cómo uso el Makefile?

make <function-name>
mysklearn/ <--- navega aquí
...
|-- README.md
|-- setup.py
|-- Makefile  
...
Desarrollo de paquetes en Python

¿Cómo uso el Makefile?

Para usar la función dist, escribe esto en la terminal

make dist

Dentro de Makefile

...

dist: ## compila el paquete fuente y wheel
    python3 setup.py sdist bdist_wheel

clean-build: ## elimina artefactos de compilación
    rm -fr build/
    rm -fr dist/
    rm -fr .eggs/

test: ## ejecuta pruebas rápido con el Python por defecto
    pytest

release: dist ## empaqueta y sube una versión
    twine upload dist/*
Desarrollo de paquetes en Python

Resumen de Makefile

make help
clean                elimina todos los artefactos de compilación, pruebas, cobertura y Python
clean-build          elimina artefactos de compilación
clean-pyc            elimina artefactos de archivos de Python
clean-test           elimina artefactos de pruebas y cobertura
lint                 comprueba el estilo con flake8
test                 ejecuta pruebas rápido con el Python por defecto
test-all             ejecuta pruebas en cada versión de Python con tox
release              empaqueta y sube una versión
dist                 compila el paquete fuente y wheel
install              instala el paquete en el site-packages del Python activo
Desarrollo de paquetes en Python

¡Vamos a practicar!

Desarrollo de paquetes en Python

Preparing Video For Download...