recite


Namerecite JSON
Version 0.2.1 PyPI version JSON
download
home_pagehttps://github.com/dobraczka/recite
SummaryPublish your poetry-based projects, without missing important steps
upload_time2023-03-24 15:49:56
maintainer
docs_urlNone
authorDaniel Obraczka
requires_python>=3.10,<4.0
licenseMIT
keywords releasing publishing packaging
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
<img src="https://github.com/dobraczka/recite/raw/main/docs/assets/logo.png" alt="recite logo", width=200/>
</p>
<h2 align="center"> recite</h2>


<p align="center">
<a href="https://github.com/dobraczka/recite/actions/workflows/main.yml"><img alt="Actions Status" src="https://github.com/dobraczka/recite/actions/workflows/main.yml/badge.svg?branch=main"></a>
<a href='https://recite.readthedocs.io/en/latest/?badge=latest'><img src='https://readthedocs.org/projects/recite/badge/?version=latest' alt='Documentation Status' /></a>
<a href="https://codecov.io/gh/dobraczka/recite"><img src="https://codecov.io/gh/dobraczka/recite/branch/main/graph/badge.svg?token=TCMKS9U0MH"/></a>
<a href="https://pypi.org/project/recite"/><img alt="Stable python versions" src="https://img.shields.io/pypi/pyversions/recite"></a>
<a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
</p>

`recite` intends to make releasing [poetry](https://python-poetry.org/)-based libraries easier and avoid missing important steps (e.g. adapting the changelog (because [you should keep one](https://keepachangelog.com/))).

```console
$ recite release patch

recite > 👀 Checking everything to make sure you are ready to release 👀
recite > 1: ✓ Make sure you have a (non-empty) pyproject.toml
recite > 2: ✓ Make sure you're on main/master branch
recite > 3: ✓ Make sure git is clean
recite > 4: ✓ Run test-suite
recite > 5: ✓ Make sure changelog was updated
recite > 🤓 Everything looks perfect! 🤓
recite > I will perform the following steps:
recite >        * Would bump version from 0.1.0 to 0.1.1
recite >        * Commit version bump
recite >        * Create git tag 0.1.1
recite >        * Push git tag 0.1.1
recite >        * Remind you to upload build as github release
Do you want to proceed? [y/N]: y
recite > ✨ Performing release ✨
recite > 1: ✓ Bump version
recite >        * Bumped version from 0.1.0 to 0.1.1
recite > 2: ✓ Commit version bump
recite > 3: ✓ Create git tag 0.1.1
recite > 4: ✓ Push git tag 0.1.1
recite > 5: ✓ Build and publish with poetry
Please create a github release now! Did you do it? [y/N]: y
recite > 6: ✓ Remind you to upload build as github release
recite > 🚀 Congrats to your release! 🚀
```

# Installation

Since `recite` is a python application it is recommended to install it via [pipx](https://pypa.github.io/pipx/):
```console
$ pipx install recite
```

But you can also install it via pip:

```console
$ pip install recite
```

# Usage

You can perform e.g a patch release with the command:

```console
$ recite release patch
```

The classifiers are the same as poetry's bump rules of the it's [version command](https://python-poetry.org/docs/cli/#version).

To list the available checks use:

```console
$ recite list-checks
```

You can find more info in the [docs](https://recite.readthedocs.io)

# Why?

Previously I used a github action to automatically build and publish a new version of a library if a new tag was pushed. However, sometimes I forgot something crucial (e.g. to adapt the changelog). In this case I had to rush to stop the github action before it would publish the release to pypi (where it would lie forever unable to be rectified).
With `recite` it is ensured all the necessary checks are in place before any tags are created.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/dobraczka/recite",
    "name": "recite",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10,<4.0",
    "maintainer_email": "",
    "keywords": "releasing,publishing,packaging",
    "author": "Daniel Obraczka",
    "author_email": "obraczka@informatik.uni-leipzig.de",
    "download_url": "https://files.pythonhosted.org/packages/6a/38/fdf470160e8983bb45674dc8e1b17a0cf4cbb36cd266678c8794fcaad1f1/recite-0.2.1.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\n<img src=\"https://github.com/dobraczka/recite/raw/main/docs/assets/logo.png\" alt=\"recite logo\", width=200/>\n</p>\n<h2 align=\"center\"> recite</h2>\n\n\n<p align=\"center\">\n<a href=\"https://github.com/dobraczka/recite/actions/workflows/main.yml\"><img alt=\"Actions Status\" src=\"https://github.com/dobraczka/recite/actions/workflows/main.yml/badge.svg?branch=main\"></a>\n<a href='https://recite.readthedocs.io/en/latest/?badge=latest'><img src='https://readthedocs.org/projects/recite/badge/?version=latest' alt='Documentation Status' /></a>\n<a href=\"https://codecov.io/gh/dobraczka/recite\"><img src=\"https://codecov.io/gh/dobraczka/recite/branch/main/graph/badge.svg?token=TCMKS9U0MH\"/></a>\n<a href=\"https://pypi.org/project/recite\"/><img alt=\"Stable python versions\" src=\"https://img.shields.io/pypi/pyversions/recite\"></a>\n<a href=\"https://github.com/psf/black\"><img alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"></a>\n</p>\n\n`recite` intends to make releasing [poetry](https://python-poetry.org/)-based libraries easier and avoid missing important steps (e.g. adapting the changelog (because [you should keep one](https://keepachangelog.com/))).\n\n```console\n$ recite release patch\n\nrecite > \ud83d\udc40 Checking everything to make sure you are ready to release \ud83d\udc40\nrecite > 1: \u2713 Make sure you have a (non-empty) pyproject.toml\nrecite > 2: \u2713 Make sure you're on main/master branch\nrecite > 3: \u2713 Make sure git is clean\nrecite > 4: \u2713 Run test-suite\nrecite > 5: \u2713 Make sure changelog was updated\nrecite > \ud83e\udd13 Everything looks perfect! \ud83e\udd13\nrecite > I will perform the following steps:\nrecite >        * Would bump version from 0.1.0 to 0.1.1\nrecite >        * Commit version bump\nrecite >        * Create git tag 0.1.1\nrecite >        * Push git tag 0.1.1\nrecite >        * Remind you to upload build as github release\nDo you want to proceed? [y/N]: y\nrecite > \u2728 Performing release \u2728\nrecite > 1: \u2713 Bump version\nrecite >        * Bumped version from 0.1.0 to 0.1.1\nrecite > 2: \u2713 Commit version bump\nrecite > 3: \u2713 Create git tag 0.1.1\nrecite > 4: \u2713 Push git tag 0.1.1\nrecite > 5: \u2713 Build and publish with poetry\nPlease create a github release now! Did you do it? [y/N]: y\nrecite > 6: \u2713 Remind you to upload build as github release\nrecite > \ud83d\ude80 Congrats to your release! \ud83d\ude80\n```\n\n# Installation\n\nSince `recite` is a python application it is recommended to install it via [pipx](https://pypa.github.io/pipx/):\n```console\n$ pipx install recite\n```\n\nBut you can also install it via pip:\n\n```console\n$ pip install recite\n```\n\n# Usage\n\nYou can perform e.g a patch release with the command:\n\n```console\n$ recite release patch\n```\n\nThe classifiers are the same as poetry's bump rules of the it's [version command](https://python-poetry.org/docs/cli/#version).\n\nTo list the available checks use:\n\n```console\n$ recite list-checks\n```\n\nYou can find more info in the [docs](https://recite.readthedocs.io)\n\n# Why?\n\nPreviously I used a github action to automatically build and publish a new version of a library if a new tag was pushed. However, sometimes I forgot something crucial (e.g. to adapt the changelog). In this case I had to rush to stop the github action before it would publish the release to pypi (where it would lie forever unable to be rectified).\nWith `recite` it is ensured all the necessary checks are in place before any tags are created.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Publish your poetry-based projects, without missing important steps",
    "version": "0.2.1",
    "split_keywords": [
        "releasing",
        "publishing",
        "packaging"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "117c5edf34effcd24cbfa6f0d7dc31628a8fa6e09342186ceb839c8f0ad47c73",
                "md5": "6d90f14c3b82d0e197d5a5b1a68a0fcc",
                "sha256": "c98a575d110abaaa68bfa2c00171f676bc5d8caa946c992421f5cdd0dee6e21f"
            },
            "downloads": -1,
            "filename": "recite-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6d90f14c3b82d0e197d5a5b1a68a0fcc",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10,<4.0",
            "size": 9592,
            "upload_time": "2023-03-24T15:49:54",
            "upload_time_iso_8601": "2023-03-24T15:49:54.485188Z",
            "url": "https://files.pythonhosted.org/packages/11/7c/5edf34effcd24cbfa6f0d7dc31628a8fa6e09342186ceb839c8f0ad47c73/recite-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6a38fdf470160e8983bb45674dc8e1b17a0cf4cbb36cd266678c8794fcaad1f1",
                "md5": "55b367094d78342d6f9b51e5da71a1ee",
                "sha256": "08141f4ae081d89720c7e5b8e1fcb82154bff8d855417029fc32a340098ee84c"
            },
            "downloads": -1,
            "filename": "recite-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "55b367094d78342d6f9b51e5da71a1ee",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10,<4.0",
            "size": 10260,
            "upload_time": "2023-03-24T15:49:56",
            "upload_time_iso_8601": "2023-03-24T15:49:56.020263Z",
            "url": "https://files.pythonhosted.org/packages/6a/38/fdf470160e8983bb45674dc8e1b17a0cf4cbb36cd266678c8794fcaad1f1/recite-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-03-24 15:49:56",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "dobraczka",
    "github_project": "recite",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "recite"
}
        
Elapsed time: 0.12548s