Skip to main content

Простой пример Python-пакета

Project description

🚀 Скрипты для публикации пакета cupychecker

Этот документ описывает созданные скрипты для быстрой публикации пакета cupychecker в PyPI.

📁 Созданные файлы

Основные скрипты

  • publish.py - Python скрипт для публикации (основной)
  • publish.sh - Bash скрипт с удобными командами
  • setup_publishing.sh - Скрипт первоначальной настройки

Конфигурация

  • Makefile - Make команды для публикации
  • .pypirc.example - Пример конфигурации twine
  • PUBLISH.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 выполняет следующие шаги:

  1. Обновление версии - автоматически увеличивает версию в setup.cfg
  2. Запуск тестов - проверяет, что все тесты проходят
  3. Очистка - удаляет предыдущие сборки
  4. Сборка пакета - создает wheel и source distribution
  5. Проверка пакета - проверяет пакет с помощью twine
  6. Создание git тега - создает тег для новой версии
  7. Публикация - загружает пакет в 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

🔗 Полезные ссылки

📞 Поддержка

Если у вас возникли проблемы:

  1. Проверьте этот документ
  2. Запустите тесты: ./publish.sh test
  3. Проверьте настройки: python3 -m twine check dist/*
  4. Создайте issue в репозитории

🎉 Готово!

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

  • ✅ Автоматическое управление версиями
  • ✅ Запуск тестов перед публикацией
  • ✅ Сборка и проверка пакета
  • ✅ Публикация на PyPI и TestPyPI
  • ✅ Создание git тегов
  • ✅ Множественные интерфейсы (Python, Bash, Make)
  • ✅ Подробная документация

Начните с ./setup_publishing.sh и следуйте инструкциям! 🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cupychecker-0.1.2.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cupychecker-0.1.2-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file cupychecker-0.1.2.tar.gz.

File metadata

  • Download URL: cupychecker-0.1.2.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

Hashes for cupychecker-0.1.2.tar.gz
Algorithm Hash digest
SHA256 73d9d1075ef0d3dad974777ba2f1abd4f8636985db04a231d3e75b11a009c3e4
MD5 ada990e19139ce7e1fb0423553b250db
BLAKE2b-256 190087c6b0a6bf8a1733a4cfce3be6d3d61c7b0e516381ea42b935684c96065c

See more details on using hashes here.

File details

Details for the file cupychecker-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: cupychecker-0.1.2-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

Hashes for cupychecker-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 64f1c2dc5ea88c3b5dc4d43b83c750972c039aa47aa9faed32aed8576f13a801
MD5 70f02f2d6112208d64b94d3f978a44a0
BLAKE2b-256 bd999e6fa47b849696ea250468f710a8e5f69bbc80db90194ad8b2c86d6f63cf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page