Skip to main content

about poetry-publish

Helper to build and upload a project that used poetry to PyPi, with prechecks:

  • User must confirm:

    • If __version__ contains ‘dev’ or ‘rc’

    • If git repository is not on master

  • Abort publish if git repository contains changes

  • Abort if git repository is not up-to-date

  • Abort if poetry check fails

  • Abort if twine check fails

  • Abort if git version tag already exists

After a successfull upload to PyPi:

  • create a git version tag

  • git push tag to remote server

Compatible Python Versions (see tox.ini or .travis.yml):

  • 3.9, 3.8, 3.7, 3.6

  • PyPy3

Build Status on github

github.com/jedie/poetry-publish/actions

Build Status on travis-ci.org

travis-ci.org/jedie/poetry-publish

Coverage Status on codecov.io

codecov.io/gh/jedie/poetry-publish

Status on landscape.io

landscape.io/github/jedie/poetry-publish/master

PyPi version

pypi.org/project/poetry-publish/

example

~/repos/python-creole$ poetry run publish

Check if we are on "master" branch:
    Call: 'git branch --no-color'
OK

Set version in "pyproject.toml" to: v1.4.3
    Call: 'poetry version 1.4.3'

Bumping version from 1.4.3 to 1.4.3

check if if git repro is clean:
    Call: 'git status --porcelain'
OK

Run "poetry check":
OK

check if pull is needed
    Call: 'git fetch --all'

Fordere an von origin
    Call: 'git log HEAD..origin/master --oneline'
OK
    Call: 'git push'

Everything up-to-date

Cleanup old builds:
    remove tree: /home/jens/repos/python-creole/dist

build but do not upload...
    Call: 'poetry build'
Build log file is here: 'publish.log'

check git tag
OK

Upload to PyPi via poetry:
    Call: 'poetry publish'


Publishing python-creole (1.4.3) to PyPI
 - Uploading python-creole-1.4.3.tar.gz 100%
 - Uploading python_creole-1.4.3-py3-none-any.whl 100%

git tag version
    Call: 'git tag v1.4.3'


git push tag to server
    Call: 'git push --tags'

Total 0 (delta 0), reused 0 (delta 0)
To github.com:jedie/python-creole.git
 * [new tag]         v1.4.3 -> v1.4.3

setup usage in projects

Create a publish hook in you project, e.g. create your_project/publish.py with:

from pathlib import Path

import your_project
from poetry_publish.publish import poetry_publish


def publish():
    poetry_publish(
        package_root=Path(your_project.__file__).parent.parent,
        version=your_project.__version__,
    )

Add this to your poetry pyproject.toml, e.g.:

[tool.poetry.scripts]
publish = 'your_project:publish'

To publish do this:

~$ cd your_project
~/your_project$ poetry run publish

Note: Don’t miss the run ! It’s not the same as poetry publish

based on: https://github.com/jedie/python-code-snippets/blob/master/CodeSnippets/setup_publish.py

unittests

# clone repository (or use your fork):
~$ git clone https://github.com/jedie/poetry-publish.git
~$ cd poetry-publish

# install or update poetry:
~/poetry-publish$ make install-poetry

# install poetry-publish via poetry:
~/poetry-publish$ make install

# Run pytest:
~/poetry-publish$ make pytest

# Run pytest via tox with all environments:
~/poetry-publish$ make tox

# Run pytest via tox with one Python version:
~/poetry-publish$ make tox-py38
~/poetry-publish$ make tox-py37
~/poetry-publish$ make tox-py36

make targets

To see all make targets, just call make:

~/poetry-publish$ make
help                 List all commands
install-poetry       install or update poetry
install              install python-poetry_publish via poetry
update               Update the dependencies as according to the pyproject.toml file
lint                 Run code formatters and linter
fix-code-style       Fix code formatting
tox-listenvs         List all tox test environments
tox                  Run pytest via tox with all environments
tox-py36             Run pytest via tox with *python v3.6*
tox-py37             Run pytest via tox with *python v3.7*
tox-py38             Run pytest via tox with *python v3.8*
tox-py39             Run pytest via tox with *python v3.9*
pytest               Run pytest
update-rst-readme    update README.rst from README.creole
publish              Release new version to PyPi

history

  • dev - compare v0.4.0…master

    • TBC

  • v0.4.0 - 2020-10-17 - compare v0.3.2…v0.4.0

    • Call twine check dist/*.*, too.

    • Some meta updates to project setup

  • v0.3.2 - 2020-10-16 - compare v0.3.1…v0.3.2

    • Create git annotated tags instead of a lightweight tag. Contributed by sebhmg in #9

    • Make python-creole to an optional dependency. Based on a contribution by sebhmg

    • Allow main beside master as stable branch.

    • Add make update

    • Update pytest.ini

    • Change supported Python version in pyproject.toml

    • Run tests with Python 3.9, too

  • v0.3.1 - 2020-02-19 - compare v0.3.0…v0.3.1

    • less restricted dependency specification

    • Add: poetry_publish.tests.test_project_setup.test_assert_rst_readme}

  • v0.3.0 - 2020-02-10 - compare v0.2.3…v0.3.0

    • Poetry publish error -> fallback and use twine

    • call poetry publish with -vvv

    • call git push with origin <current-branch>

    • add isort config

  • v0.2.3 - 2020-02-02 - compare v0.2.2…v0.2.3

    • make poetry_publish.tests.test_project_setup usable for external packages

  • v0.2.2 - 2020-02-01 - compare v0.2.1…v0.2.2

    • Fix missing project description on PyPi

  • v0.2.1 - 2020-02-01 - compare v0.2.0…v0.2.1

    • call “poetry version” after “branch is master” check

    • add many tests

    • test with PyPy v3, too

    • Upload coverage reports

    • fix code style

    • update README

  • v0.2.0 - 2020-02-01 - compare 92e584…v0.2.0

first source code was written 27.11.2008: Forum thread (de)

donation


Note: this file is generated from README.creole 2020-10-17 23:24:17 with "python-creole"

Download files

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

Source Distribution

poetry-publish-0.4.0.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

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

poetry_publish-0.4.0-py3-none-any.whl (37.1 kB view details)

Uploaded Python 3

File details

Details for the file poetry-publish-0.4.0.tar.gz.

File metadata

  • Download URL: poetry-publish-0.4.0.tar.gz
  • Upload date:
  • Size: 25.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5

File hashes

Hashes for poetry-publish-0.4.0.tar.gz
Algorithm Hash digest
SHA256 9936ac587d9b94fa735ef53226f5f21242c8ecb0321195cc3c5cc55d4fda4bae
MD5 5808d3e59ce09c6679826eb40ab99b46
BLAKE2b-256 0aad1fefb14d31d57c16cc44565bf4f7da314b7ca6c98e91cb7931e3fbce9cf8

See more details on using hashes here.

File details

Details for the file poetry_publish-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: poetry_publish-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 37.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5

File hashes

Hashes for poetry_publish-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 de449fe0ff24f753e2d62e7dc7812b328b32df6fd3f3e6e84ec3d8cf352239f5
MD5 206605fc56e4b194c957cd9e3bf3ad14
BLAKE2b-256 493a29cf1d548fcdefb11fdbd48a7be1a86f8ffb07039be66068aa378cb4831e

See more details on using hashes here.

Release history Release notifications | RSS feed

0.5.0

2 files

0.4.1

2 files

This release

0.4.0 This release

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.3

2 files

0.2.2

2 files

0.2.0

2 files

Supported by

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