Makefiles en classifiers

Python-pakketten ontwikkelen

James Fulton

Climate informatics researcher

Classifiers

  • Metadata voor je pakket
  • Helpt gebruikers je pakket op PyPI te vinden
  • Neem op
    • Pakketstatus
    • Doelgroep
    • Licentietype
    • Taal
    • Ondersteunde Python-versies
  • Er zijn veel meer classifiers: https://pypi.org/classifiers

In setup.py van 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',
    ],
    ...
)
Python-pakketten ontwikkelen

Waarvoor zijn Makefiles?

  • Automatiseren delen van het buildproces van je pakket
mysklearn/
...
|-- README.md
|-- setup.py
|-- Makefile  <---
...
Python-pakketten ontwikkelen

Wat staat er in een Makefile?

In Makefile

...

dist: ## bouwt source- en wheel-package
    python3 setup.py sdist bdist_wheel

clean-build: ## verwijdert build-artifacts rm -fr build/ rm -fr dist/ rm -fr .eggs/
test: ## voert snel tests uit met de standaard-Python pytest
release: dist ## pakt en uploadt een release twine upload dist/*
Python-pakketten ontwikkelen

Hoe gebruik ik de Makefile?

make <function-name>
mysklearn/ <--- navigeer hierheen
...
|-- README.md
|-- setup.py
|-- Makefile  
...
Python-pakketten ontwikkelen

Hoe gebruik ik de Makefile?

Gebruik in de terminal

make dist

In Makefile

...

dist: ## bouwt source- en wheel-package
    python3 setup.py sdist bdist_wheel

clean-build: ## verwijdert build-artifacts
    rm -fr build/
    rm -fr dist/
    rm -fr .eggs/

test: ## voert snel tests uit met de standaard-Python
    pytest

release: dist ## pakt en uploadt een release
    twine upload dist/*
Python-pakketten ontwikkelen

Samenvatting Makefile

make help
clean                verwijder alle build-, test-, coverage- en Python-artifacts
clean-build          verwijder build-artifacts
clean-pyc            verwijder Python-bestandsartifacts
clean-test           verwijder test- en coverage-artifacts
lint                 controleer style met flake8
test                 voer snel tests uit met de standaard-Python
test-all             voer tests uit op elke Python-versie met tox
release              pakket en upload een release
dist                 bouwt source- en wheel-package
install              installeer het pakket in de actieve Python site-packages
Python-pakketten ontwikkelen

Laten we oefenen!

Python-pakketten ontwikkelen

Preparing Video For Download...