Helper to build and upload a project that used poetry to PyPi, with prechecks
Project description
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 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.8, 3.7, 3.6
PyPy3
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 poetry-publish via poetry 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* pytest Run pytest update-rst-readme update README.rst from README.creole publish Release new version to PyPi
history
dev - compare v0.2.3…master
TBC
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 released version cut out from python-creole
first source code was written 27.11.2008: Forum thread (de)
Project links
GitHub |
|
PyPi |
donation
Note: this file is generated from README.creole 2020-02-02 16:51:57 with "python-creole"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for poetry_publish-0.3.0rc3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06e262f30ac3fecee4bc3d9c297a4d1e31f71ac9b010f7b1354f540e5e0df16c |
|
MD5 | b4604d119e6a32681b9a6fa8c2f8e4ed |
|
BLAKE2b-256 | 43daf8fcc5a9cc8fb89e17922d067b04d78fa6e6762b7f908c8de69701b6938a |