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.3.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.3-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

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

Hashes for cupychecker-0.1.3.tar.gz
Algorithm Hash digest
SHA256 ac0b7a57ca88452f394074e4aa2e8aa68ca5ffab14718309d3f57b45cc78aa85
MD5 1f3459d70ca45882b2677652fbb38a06
BLAKE2b-256 937258f9f1540fb5f9b9ee92746c753be89e50e1d4572e122c248a72eeae3ea1

See more details on using hashes here.

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

Hashes for cupychecker-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 aa54c8034856fc0d85a3b2fb4db4908c350dd6961b7cebcea5c2a431fd7c459d
MD5 8f69446a461ad5ed618c73a73486d827
BLAKE2b-256 9bdb667dbcbe569e60b2c246ccf77e8bfb6df5cc30a6045aa77fb9253a0d0261

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