Простой пример Python-пакета
Project description
🚀 Скрипты для публикации пакета cupychecker
Этот документ описывает созданные скрипты для быстрой публикации пакета cupychecker в PyPI.
📁 Созданные файлы
Основные скрипты
publish.py- Python скрипт для публикации (основной)publish.sh- Bash скрипт с удобными командамиsetup_publishing.sh- Скрипт первоначальной настройки
Конфигурация
Makefile- Make команды для публикации.pypirc.example- Пример конфигурации twinePUBLISH.md- Подробная документация
🚀 Быстрый старт
1. Первоначальная настройка
# Запустите скрипт настройки
./setup_publishing.sh
# Или вручную:
pip3 install --upgrade setuptools wheel build twine
pip3 install -e .
pip3 install -r ../tests/requirements-test.txt
cp .pypirc.example .pypirc
# Отредактируйте .pypirc и вставьте ваши API токены
2. Настройка API токенов
# Скопируйте пример конфигурации
cp .pypirc.example .pypirc
# Отредактируйте .pypirc
nano .pypirc
Вставьте ваши токены:
[pypi]
username = __token__
password = pypi-your_token_here
[testpypi]
repository = https://test.pypi.org/legacy/
username = __token__
password = testpypi-your_token_here
3. Публикация
# Публикация patch версии (0.1.0 -> 0.1.1)
./publish.sh publish
# Публикация minor версии (0.1.0 -> 0.2.0)
./publish.sh publish-minor
# Публикация на TestPyPI
./publish.sh publish-test
🛠 Способы использования
1. Python скрипт (publish.py)
# Показать справку
python3 publish.py --help
# Публикация patch версии
python3 publish.py
# Публикация minor версии
python3 publish.py --version-type minor
# Публикация major версии
python3 publish.py --version-type major
# Публикация конкретной версии
python3 publish.py --version 1.2.3
# Публикация на TestPyPI
python3 publish.py --test-only
# Только сборка (без публикации)
python3 publish.py --build-only
# Пропустить тесты
python3 publish.py --skip-tests
2. Bash скрипт (publish.sh)
# Показать справку
./publish.sh help
# Основные команды
./publish.sh publish # Patch версия
./publish.sh publish-minor # Minor версия
./publish.sh publish-major # Major версия
./publish.sh publish-test # TestPyPI
./publish.sh publish-version 1.2.3 # Конкретная версия
# Алиасы
./publish.sh p # publish
./publish.sh pt # publish-test
./publish.sh pp # publish-patch
./publish.sh pm # publish-minor
./publish.sh pmj # publish-major
./publish.sh pv 1.2.3 # publish-version
# Утилиты
./publish.sh test # Запустить тесты
./publish.sh build # Собрать пакет
./publish.sh clean # Очистить сборки
./publish.sh dev # Быстрая разработка
3. Makefile
# Показать справку
make help
# Основные команды
make publish # Patch версия
make publish-minor # Minor версия
make publish-major # Major версия
make publish-test # TestPyPI
make publish-version VERSION=1.2.3 # Конкретная версия
# Алиасы
make p # publish
make pt # publish-test
make pp # publish-patch
make pm # publish-minor
make pmj # publish-major
make pv VERSION=1.2.3 # publish-version
# Утилиты
make test # Запустить тесты
make build # Собрать пакет
make clean # Очистить сборки
make dev-setup # Настроить окружение
📦 Процесс публикации
Скрипт publish.py выполняет следующие шаги:
- Обновление версии - автоматически увеличивает версию в
setup.cfg - Запуск тестов - проверяет, что все тесты проходят
- Очистка - удаляет предыдущие сборки
- Сборка пакета - создает wheel и source distribution
- Проверка пакета - проверяет пакет с помощью twine
- Создание git тега - создает тег для новой версии
- Публикация - загружает пакет в PyPI или TestPyPI
🧪 Рекомендуемый workflow
1. Разработка
# Настройка окружения
./setup_publishing.sh
# Быстрая разработка
./publish.sh dev
# Тестирование
./publish.sh test
2. Тестирование публикации
# Сначала TestPyPI
./publish.sh publish-test
# Установите с TestPyPI
pip3 install --index-url https://test.pypi.org/simple/ cupychecker
# Протестируйте
python3 -c "import cupychecker; print('OK')"
3. Публикация на PyPI
# Публикация на PyPI
./publish.sh publish
# Или конкретная версия
./publish.sh publish-version 1.2.3
🔧 Настройка окружения
Автоматическая настройка
# Полная настройка
./setup_publishing.sh
Ручная настройка
# 1. Установите зависимости
pip3 install --upgrade setuptools wheel build twine
# 2. Установите пакет в режиме разработки
pip3 install -e .
# 3. Установите зависимости для тестов
pip3 install -r ../tests/requirements-test.txt
# 4. Настройте .pypirc
cp .pypirc.example .pypirc
# Отредактируйте .pypirc и вставьте ваши токены
📝 Управление версиями
Семантическое версионирование
- MAJOR (1.0.0) - несовместимые изменения API
- MINOR (0.1.0) - новая функциональность с обратной совместимостью
- PATCH (0.0.1) - исправления ошибок с обратной совместимостью
Примеры
# Текущая версия: 0.1.0
# Patch версия (исправления)
./publish.sh publish-patch
# Результат: 0.1.1
# Minor версия (новая функциональность)
./publish.sh publish-minor
# Результат: 0.2.0
# Major версия (breaking changes)
./publish.sh publish-major
# Результат: 1.0.0
🔍 Проверка пакета
Локальная проверка
# Собрать пакет
./publish.sh build
# Проверить пакет
python3 -m twine check dist/*
# Установить локально
pip3 install dist/cupychecker-*.whl
Проверка на TestPyPI
# Публиковать на TestPyPI
./publish.sh publish-test
# Установить с TestPyPI
pip3 install --index-url https://test.pypi.org/simple/ cupychecker
# Проверить работу
python3 -c "from cupychecker.helpers import TestHelper; print('OK')"
🚨 Решение проблем
Ошибка "Invalid credentials"
# Проверьте .pypirc
cat .pypirc
# Убедитесь, что токены правильные
python3 -m twine check dist/*
Ошибка "Package already exists"
# Увеличьте версию
./publish.sh publish-patch
# Или укажите конкретную версию
./publish.sh publish-version 1.2.3
Ошибка "Tests failed"
# Запустите тесты отдельно
cd ../tests && python3 run_tests.py
# Исправьте ошибки и повторите
./publish.sh publish
📚 Полезные команды
Информация о пакете
# Показать текущую версию
./publish.sh version
# Показать файлы в dist
./publish.sh files
# Проверить пакет
python3 -m twine check dist/*
Отладка
# Подробный вывод
python3 publish.py --version-type patch -v
# Только сборка
python3 publish.py --build-only
# Пропустить тесты
python3 publish.py --skip-tests
🔗 Полезные ссылки
📞 Поддержка
Если у вас возникли проблемы:
- Проверьте этот документ
- Запустите тесты:
./publish.sh test - Проверьте настройки:
python3 -m twine check dist/* - Создайте issue в репозитории
🎉 Готово!
Теперь у вас есть полный набор инструментов для публикации пакета cupychecker:
- ✅ Автоматическое управление версиями
- ✅ Запуск тестов перед публикацией
- ✅ Сборка и проверка пакета
- ✅ Публикация на PyPI и TestPyPI
- ✅ Создание git тегов
- ✅ Множественные интерфейсы (Python, Bash, Make)
- ✅ Подробная документация
Начните с ./setup_publishing.sh и следуйте инструкциям! 🚀
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cupychecker-0.1.3.tar.gz.
File metadata
- Download URL: cupychecker-0.1.3.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac0b7a57ca88452f394074e4aa2e8aa68ca5ffab14718309d3f57b45cc78aa85
|
|
| MD5 |
1f3459d70ca45882b2677652fbb38a06
|
|
| BLAKE2b-256 |
937258f9f1540fb5f9b9ee92746c753be89e50e1d4572e122c248a72eeae3ea1
|
File details
Details for the file cupychecker-0.1.3-py3-none-any.whl.
File metadata
- Download URL: cupychecker-0.1.3-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa54c8034856fc0d85a3b2fb4db4908c350dd6961b7cebcea5c2a431fd7c459d
|
|
| MD5 |
8f69446a461ad5ed618c73a73486d827
|
|
| BLAKE2b-256 |
9bdb667dbcbe569e60b2c246ccf77e8bfb6df5cc30a6045aa77fb9253a0d0261
|