Skip to main content

aiomatic 🚀

Демо-проект для публикации Python-пакетов в PyPI и утилита для проверки занятости имен пакетов.


📌 О проекте

aiomatic решает две задачи:

  1. Шаблон современного Python-пакета (PEP 517 / PEP 621 / pyproject.toml + src-layout), готовый к сборке и публикации на PyPI.
  2. Готовая 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

  1. Создайте аккаунты на PyPI и TestPyPI.
  2. Включите двухфакторную аутентификацию (2FA) в настройках аккаунта (обязательно для PyPI).
  3. Создайте 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)

Source distribution for aiomatic 0.1.0
File Size Uploaded
aiomatic-0.1.0.tar.gz 5.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aiomatic 0.1.0
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page