Metadata-Version: 2.5
Name: aiomatic
Version: 0.1.0
Summary: Demo package for PyPI publication and package name availability checking
Project-URL: Homepage, https://github.com/yourusername/aiomatic
Project-URL: Repository, https://github.com/yourusername/aiomatic
Project-URL: Bug Tracker, https://github.com/yourusername/aiomatic/issues
Author-email: Your Name <you@example.com>
License: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# aiomatic 🚀

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

---

## 📌 О проекте

`aiomatic` решает две задачи:
1. **Шаблон современного Python-пакета** (PEP 517 / PEP 621 / `pyproject.toml` + `src`-layout), готовый к сборке и публикации на [PyPI](https://pypi.org).
2. **Готовая CLI-утилита и библиотека** для быстрой проверки занятости имени на PyPI и TestPyPI (с учетом нормализации имен по PEP 503).

---

## 🔍 Быстрая проверка занятости имени

### Через CLI:

```bash
# Проверить имя по умолчанию (aiomatic) на PyPI
aiomatic

# Проверить любое другое имя
aiomatic my-awesome-library

# Проверить сразу несколько имен
aiomatic aiomatic aiomatic-tools aiomatic-sdk

# Проверить на TestPyPI
aiomatic --test-pypi aiomatic

# Проверить одновременно на PyPI и TestPyPI
aiomatic --both aiomatic
```

### В коде Python:

```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`:
```bash
uv pip install -e .
```

Или через классический `venv` и `pip`:
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
```

### 2. Запуск тестов

```bash
PYTHONPATH=src python3 -m unittest discover -s tests
```

---

## 📦 Сборка и публикация в PyPI (Пошаговый гайд)

### Шаг 1. Проверьте занятость имени
Перед релизом убедитесь, что имя не занято:
```bash
python3 src/aiomatic/cli.py aiomatic --both
```

### Шаг 2. Зарегистрируйтесь на PyPI и TestPyPI
1. Создайте аккаунты на [PyPI](https://pypi.org) и [TestPyPI](https://test.pypi.org).
2. Включите двухфакторную аутентификацию (2FA) в настройках аккаунта (обязательно для PyPI).
3. Создайте API-токен:
   - Перейдите в **Account Settings** -> **API tokens** -> **Add API token**.
   - Скопируйте токен (начинается с `pypi-...`).

### Шаг 3. Сборка дистрибутива (Wheel и sdist)

С помощью `uv` (рекомендуется):
```bash
uv build
```

Или через `python-build`:
```bash
pip install build
python -m build
```
После сборки в папке `dist/` появятся файлы `.tar.gz` (исходный код) и `.whl` (готовый wheel).

### Шаг 4. Публикация в TestPyPI (для проверки)

Перед публикацией на боевой PyPI рекомендуется протестировать процесс на тестовом сервере:

**Через `uv`:**
```bash
uv publish --publish-url https://test.pypi.org/legacy/ --token pypi-ВАШ_ТЕСТОВЫЙ_ТОКЕН
```

**Через `twine`:**
```bash
pip install twine
twine upload --repository testpypi dist/*
```

Проверьте установку из TestPyPI:
```bash
pip install --index-url https://test.pypi.org/simple/ --no-deps aiomatic
```

### Шаг 5. Боевая публикация в PyPI

Когда все проверено:

**Через `uv`:**
```bash
uv publish --token pypi-ВАШ_БОЕВОЙ_ТОКЕН
```

**Через `twine`:**
```bash
twine upload dist/*
```

Поздравляем! Ваш пакет доступен всем пользователям через:
```bash
pip install aiomatic
```

---

## 📄 Лицензия

MIT License (см. [LICENSE](LICENSE)).
