Рубрики
Без рубрики

Проверьте и опубликуйте пакет Python для PYPI, используя поэзию и действия GitHub

Мой рабочий процесс я создал Python Package CookieCutter, демонстрирующий два действия GitHub Workflow … Tagged with Actionshackathon, Python, Github.

Мой рабочий процесс

Я создал Python Package CookieCutter, демонстрирующий два файла рабочего процесса GitHub, которые я видел, и успешно использовал для тестирования и публикации пакета Python в PYPI с использованием действий GitHub.

Подробное объяснение и обертка Python CookieCutter – это новые дополнения. 🎉 Мне было трудно просто осмотреть работу проектов с открытым исходным кодом и собрать кусочки вместе.

Поэтому я надеюсь, что это поможет вам (независимо от вашего предыдущего опыта).

Пожалуйста, дайте мне знать, что не ясно!

Начало работы с этим шаблоном

Есть два файла рабочего процесса, каждый с их названной целью:

  • Тест
  • Публиковать

Если у вас есть существующий проект Python или вы запускаете новый, вы можете использовать свое имя пользователя GitHub и название своего проекта в качестве входных данных в мой шаблон кулинарного летательного аппарата!

Во -первых, что такое CookieCutter?

CookieCutter

CookieCutter/CookieCutter

Утилита командной строки, которая создает проекты из CookieCutters (шаблоны проекта), например, Python Package Projects, Vuejs Projects.

Утилита командной строки, которая создает проекты из CookieCutters (Шаблоны проекта), например, Создание проекта Python Package из шаблона проекта Python Package.

Мы гордимся тем, что являемся спонсором с открытым исходным кодом Pycon 2016 Анкет

Функции

Кто -то сказал функции?

  • Кроссплатформные: Windows, Mac и Linux официально поддерживаются.
  • Вам не нужно знать/писать код Python, чтобы использовать CookieCutter.
  • Работает с Python 3.6, 3.7, 3.8, 3.9 и PYPY3.
  • Шаблоны проекта могут находиться в любом языке программирования или формате разметки Python, JavaScript, Ruby, CoffeeScript, RST, Markdown, CSS, HTML, вы называете его, вы можете использовать несколько языков в одном шаблоне проекта.
  • Простое использование командной строки:
# Create project from the cookiecutter-pypackage.git repo template
# You'll be prompted to enter values.
# Then it'll create your Python package in the current working directory,
# based on those values.
$

Убедитесь, что у вас есть Python3 установлены!

Инструкции по использованию iancleary/pypackage

python3 -m pip install cookiecutter
# you can add the flag `--user` if you'd like

$ cookiecutter https://github.com/iancleary/pypackage
# For the sake of brevity, repos on GitHub can just use the 'gh' prefix
$ cookiecutter gh:iancleary/pypackage

Функции

  • Поэзия (виртуальная среда и публиковать в PYPI, все с одним инструментом)
  • Черный (лининг/форматер)
  • Автофляк (удаление неиспользованных пакетов)
  • Изорт (организация зависимости)
  • Mypy (проверка статического типа)
  • Pytest (включая тестовое покрытие)
  • Предварительный Коммит (крючки на коммите)
  • Действия GitHub для CI/CD
  • MKDOCS для документации (с материальной темой)

Только Python 3.6+ поддерживается по мере того, как требуется черные, пиджанские пакеты

Категория представления: Содействие обязательно сдерживает

Ямл файл или ссылка на код

Янлери/Пипакей

Пакет CookieCutter Python с использованием поэзии, Mypy, Black, Isort, Autoflake, Pytest, Mkdocs и Github Action

Я больше не могу поддерживать этот кулинарный, см. Br3ndonland/Template-Python шаблон. Хотя это и не кулинарная пьеса на момент написания этой статьи, у него есть инструмент, на который я собирался:)

Настройка пакета Phyd Python с современными Венвами, зависимостями, тестированием, документами и CI

Основная мысль

Это шаблонный модуль, собирающий множество утилит, которые мне нравились в других проектах, чтобы служить личной ссылкой.

Начало работы с этим шаблоном

pip install --user cookiecutter
$ cookiecutter https://github.com/iancleary/pypackage
# For the sake of brevity, repos on GitHub can just use the 'gh' prefix
$ cookiecutter gh:iancleary/pypackage

Функции

  • Поэзия (виртуальная среда и публиковать в PYPI, все с одним инструментом)
  • Черный (лининг/форматер)
  • Автофляк (удаление неиспользованных пакетов)
  • Изорт (организация зависимости)
  • Mypy (проверка статического типа)
  • Pytest (включая тестовое покрытие)
  • Предварительный Коммит (крючки на коммите)
  • Действия GitHub для CI/CD
  • MKDOCS для документации (с материальной темой)

Только Python 3.6+ поддерживается как…

Тест

name: Test

on:
  push:
  pull_request:
    types: [opened, synchronize]

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.6, 3.7, 3.8]
      fail-fast: false

    steps:
      - uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v1
        with:
          python-version: ${{ matrix.python-version }}
      - name: Get full python version
        id: full-python-version
        run: echo ::set-output name=version::$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))")
      - name: Install poetry
        run: |
          curl -fsS -o get-poetry.py https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py
          python get-poetry.py -y
          echo "::set-env name=PATH::$HOME/.poetry/bin:$PATH"
      - name: Configure poetry
        run: poetry config virtualenvs.in-project true
      - name: Set up cache
        uses: actions/cache@v1
        id: cache
        with:
          path: .venv
          key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }}
      - name: Ensure cache is healthy
        if: steps.cache.outputs.cache-hit == 'true'
        run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv
      - name: Install Dependencies
        run: poetry install
      - name: Test
        run: poetry run bash scripts/test.sh
      - name: Upload coverage
        uses: codecov/codecov-action@v1

Публиковать

Репо секреты

Перейдите в настройки репо и добавьте Pypi_token переменная среды:

name: Publish

on:
  release:
    types:
      - created

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v1
        with:
          python-version: "3.7"
      - name: Install poetry
        run: |
          curl -fsS -o get-poetry.py https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py
          python get-poetry.py -y
          echo "::set-env name=PATH::$HOME/.poetry/bin:$PATH"
      - name: Configure poetry
        run: poetry config virtualenvs.in-project true
      - name: Set up cache
        uses: actions/cache@v1
        id: cache
        with:
          path: .venv
          key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.version }}-${{ hashFiles('**/poetry.lock') }}
      - name: Ensure cache is healthy
        if: steps.cache.outputs.cache-hit == 'true'
        run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv
      - name: Install Dependencies
        run: poetry install
      - name: Publish
        env:
          PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
        run: |
          poetry config pypi-token.pypi $PYPI_TOKEN
          bash scripts/publish.sh

Вот и все!

Когда вы выпустите релиз на GitHub, Publish Workflow будет работать и развернуться в PYPI! 🚀🎉😎

Дополнительные ресурсы/информация

Я успешно использовал кусочек в своем проекте Fastrf

Янлери/Фастрф

RF Design Server

Fastrf – это приложение для создания и отслеживания ключевых метрик системы

Основная мысль

Fastrf – это веб -сервер, который позволяет легко создавать радиочастотные (РЧ) 📡 , Бюджеты ссылок 🌎 📡 🛰 и модели симуляции 🧪 🧮 Чтобы захватить производительность радиочастотной системы.

Этот проект будет стоять на плечах некоторых гигантов:

Установка FASTRF

Установите последний релиз:

pip install fastrf

Документация

Документация размещена в fastrf.org Анкет

Зависимости

pyproject.toml Файл используется Поэзия установить зависимости в виртуальную среду.

Поэзия командная строка интерфейс Documnetation: https://python-poetry.org/docs/cli/

Только Python 3.6+ поддерживается по мере того, как требуется черные, Fastapi, Pydantic Packages

Этот пакет был создан с iAncleary/pypackage CookieCutter.

Ссылка источника для значения баннера: https://medium.com/swlh/automate-python-testing-with-github-actions-7926b5d8a865

Оригинал: “https://dev.to/iancleary/test-and-publish-a-python-package-to-pypi-using-poetry-and-github-actions-186a”