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 main or 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 successful upload to PyPi:

  • create a git version tag

  • git push tag to remote server

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

  • 3.10, 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.5.0…master

    • TBC

  • v0.5.0 - 2022-07-19 - compare v0.4.1…v0.5.0

    • Test with Python 3.10

    • Fix twine check call.

    • Fix poetry publish call.

  • v0.4.1 - 2021-03-19 - compare v0.4.0…v0.4.1

    • Bugfix if git main branch is used, instead of master

  • 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 2022-07-19 12:48:48 with "python-creole"

Release files for poetry-publish 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for poetry-publish 0.5.0
File Size Uploaded
poetry-publish-0.5.0.tar.gz 27.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for poetry-publish 0.5.0
File Interpreter ABI Platform
poetry_publish-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 66.8 kB

Release files / poetry-publish-0.5.0.tar.gz

Download URL poetry-publish-0.5.0.tar.gz
Size 27.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7ebc7782ee318c099715518177446122e3a752347cebf8883828e110b7da0e9d
BLAKE2b-256 checksum
How to use checksums
43dc425df47bf99c5f5aaf8691539c9e89405c83e547f9813eedb69c1aae6098
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.8.3 requests/2.28.1 setuptools/62.3.2 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.9.5

Release files / poetry_publish-0.5.0-py3-none-any.whl

Download URL poetry_publish-0.5.0-py3-none-any.whl
Size 39.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
41db2e004595051b4bc0ccd09017f5f81e0fa9b5673bb718ab3d26c2da5dd8f3
BLAKE2b-256 checksum
How to use checksums
4aacb8c8a0492678b0c9d7582043ae99ddbb5090db911efbf9e04f2cb42cb083
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.8.3 requests/2.28.1 setuptools/62.3.2 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.9.5
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page