aiomatic 🚀
Демо-проект для публикации Python-пакетов в PyPI и утилита для проверки занятости имен пакетов.
📌 О проекте
aiomatic решает две задачи:
- Шаблон современного Python-пакета (PEP 517 / PEP 621 /
pyproject.toml+src-layout), готовый к сборке и публикации на PyPI. - Готовая CLI-утилита и библиотека для быстрой проверки занятости имени на PyPI и TestPyPI (с учетом нормализации имен по PEP 503).
🔍 Быстрая проверка занятости имени
Через CLI:
# Проверить имя по умолчанию (aiomatic) на PyPI
aiomatic
# Проверить любое другое имя
aiomatic my-awesome-library
# Проверить сразу несколько имен
aiomatic aiomatic aiomatic-tools aiomatic-sdk
# Проверить на TestPyPI
aiomatic --test-pypi aiomatic
# Проверить одновременно на PyPI и TestPyPI
aiomatic --both aiomatic
В коде Python:
from aiomatic import check_pypi_availability
res = check_pypi_availability("aiomatic")
if res["available"]:
print("Имя свободно для регистрации!")
else:
print(f"Имя занято! Последняя версия: {res['details']['latest_version']}")
🛠️ Локальная разработка и тестирование
1. Установка в режиме разработки (Editable)
С использованием uv:
uv pip install -e .
Или через классический venv и pip:
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
2. Запуск тестов
PYTHONPATH=src python3 -m unittest discover -s tests
📦 Сборка и публикация в PyPI (Пошаговый гайд)
Шаг 1. Проверьте занятость имени
Перед релизом убедитесь, что имя не занято:
python3 src/aiomatic/cli.py aiomatic --both
Шаг 2. Зарегистрируйтесь на PyPI и TestPyPI
- Создайте аккаунты на PyPI и TestPyPI.
- Включите двухфакторную аутентификацию (2FA) в настройках аккаунта (обязательно для PyPI).
- Создайте API-токен:
- Перейдите в Account Settings -> API tokens -> Add API token.
- Скопируйте токен (начинается с
pypi-...).
Шаг 3. Сборка дистрибутива (Wheel и sdist)
С помощью uv (рекомендуется):
uv build
Или через python-build:
pip install build
python -m build
После сборки в папке dist/ появятся файлы .tar.gz (исходный код) и .whl (готовый wheel).
Шаг 4. Публикация в TestPyPI (для проверки)
Перед публикацией на боевой PyPI рекомендуется протестировать процесс на тестовом сервере:
Через uv:
uv publish --publish-url https://test.pypi.org/legacy/ --token pypi-ВАШ_ТЕСТОВЫЙ_ТОКЕН
Через twine:
pip install twine
twine upload --repository testpypi dist/*
Проверьте установку из TestPyPI:
pip install --index-url https://test.pypi.org/simple/ --no-deps aiomatic
Шаг 5. Боевая публикация в PyPI
Когда все проверено:
Через uv:
uv publish --token pypi-ВАШ_БОЕВОЙ_ТОКЕН
Через twine:
twine upload dist/*
Поздравляем! Ваш пакет доступен всем пользователям через:
pip install aiomatic
📄 Лицензия
MIT License (см. LICENSE).
Metadata
Release files for aiomatic 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aiomatic-0.1.0.tar.gz | 5.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aiomatic-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.0 kB
Release files / aiomatic-0.1.0.tar.gz
| Download URL | aiomatic-0.1.0.tar.gz |
|---|---|
| Size | 5.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
66efbde94214024c70ce8dce81c170cef81a092feb150b2303b371d1a919288e
|
|
BLAKE2b-256 checksum How to use checksums |
2b7619cb31d7b91d68fbeb61948a0dfba9d93163dc1002adc0c2f1368c5d078b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Gentoo","version":"2.18","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / aiomatic-0.1.0-py3-none-any.whl
| Download URL | aiomatic-0.1.0-py3-none-any.whl |
|---|---|
| Size | 6.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
858d3be55db12a5b919943a419f9e645008a56a97e842c0afb46441857847921
|
|
BLAKE2b-256 checksum How to use checksums |
139c0dcb108c326df4aedd182f44908b3f060321476f6e6b60e3ffabed94cd4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Gentoo","version":"2.18","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|