Makefile và classifiers

Phát triển gói Python

James Fulton

Climate informatics researcher

Classifiers

  • Metadata cho gói của bạn
  • Giúp người dùng tìm gói của bạn trên PyPI
  • Nên gồm
    • Trạng thái gói
    • Đối tượng người dùng mục tiêu
    • Loại giấy phép
    • Ngôn ngữ
    • Các phiên bản Python hỗ trợ
  • Còn nhiều classifier khác: https://pypi.org/classifiers

Trong setup.py của 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',
    ],
    ...
)
Phát triển gói Python

Makefile dùng để làm gì?

  • Dùng để tự động hóa các phần khi build gói
mysklearn/
...
|-- README.md
|-- setup.py
|-- Makefile  <---
...
Phát triển gói Python

Có gì trong Makefile?

Bên trong Makefile

...

dist: ## build gói source và wheel
    python3 setup.py sdist bdist_wheel

clean-build: ## xóa artifact build rm -fr build/ rm -fr dist/ rm -fr .eggs/
test: ## chạy test nhanh với Python mặc định pytest
release: dist ## đóng gói và tải bản phát hành lên twine upload dist/*
Phát triển gói Python

Cách dùng Makefile

make <function-name>
mysklearn/ <--- điều hướng đến đây
...
|-- README.md
|-- setup.py
|-- Makefile  
...
Phát triển gói Python

Cách dùng Makefile

Để dùng hàm dist, gõ trong terminal

make dist

Bên trong Makefile

...

dist: ## build gói source và wheel
    python3 setup.py sdist bdist_wheel

clean-build: ## xóa artifact build
    rm -fr build/
    rm -fr dist/
    rm -fr .eggs/

test: ## chạy test nhanh với Python mặc định
    pytest

release: dist ## đóng gói và tải bản phát hành lên
    twine upload dist/*
Phát triển gói Python

Tóm tắt Makefile

make help
clean                xóa mọi artifact build, test, coverage và Python
clean-build          xóa artifact build
clean-pyc            xóa artifact file Python
clean-test           xóa artifact test và coverage
lint                 kiểm tra style với flake8
test                 chạy test nhanh với Python mặc định
test-all             chạy test trên mọi phiên bản Python với tox
release              đóng gói và tải bản phát hành lên
dist                 build gói source và wheel
install              cài gói vào site-packages của Python đang dùng
Phát triển gói Python

Ayo berlatih!

Phát triển gói Python

Preparing Video For Download...