{"id":18985026,"url":"https://github.com/dobraczka/recite","last_synced_at":"2026-03-08T21:39:27.839Z","repository":{"id":65627723,"uuid":"590962764","full_name":"dobraczka/recite","owner":"dobraczka","description":"📖 Publish your poetry-based projects, without missing important steps","archived":false,"fork":false,"pushed_at":"2023-03-27T15:04:59.000Z","size":254,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-05T10:54:25.625Z","etag":null,"topics":["packaging","poetry","publishing","release-automation"],"latest_commit_sha":null,"homepage":"https://recite.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dobraczka.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-19T16:11:12.000Z","updated_at":"2025-01-22T03:11:45.000Z","dependencies_parsed_at":"2024-11-08T16:37:16.622Z","dependency_job_id":null,"html_url":"https://github.com/dobraczka/recite","commit_stats":{"total_commits":44,"total_committers":1,"mean_commits":44.0,"dds":0.0,"last_synced_commit":"4d00ffef397ac34a566b752b33e5ef677e74b00e"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/dobraczka/recite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dobraczka%2Frecite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dobraczka%2Frecite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dobraczka%2Frecite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dobraczka%2Frecite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dobraczka","download_url":"https://codeload.github.com/dobraczka/recite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dobraczka%2Frecite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30274842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T20:45:49.896Z","status":"ssl_error","status_checked_at":"2026-03-08T20:45:49.525Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["packaging","poetry","publishing","release-automation"],"created_at":"2024-11-08T16:24:08.586Z","updated_at":"2026-03-08T21:39:27.823Z","avatar_url":"https://github.com/dobraczka.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/dobraczka/recite/raw/main/docs/assets/logo.png\" alt=\"recite logo\", width=200/\u003e\n\u003c/p\u003e\n\u003ch2 align=\"center\"\u003e recite\u003c/h2\u003e\n\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/dobraczka/recite/actions/workflows/main.yml\"\u003e\u003cimg alt=\"Actions Status\" src=\"https://github.com/dobraczka/recite/actions/workflows/main.yml/badge.svg?branch=main\"\u003e\u003c/a\u003e\n\u003ca href='https://recite.readthedocs.io/en/latest/?badge=latest'\u003e\u003cimg src='https://readthedocs.org/projects/recite/badge/?version=latest' alt='Documentation Status' /\u003e\u003c/a\u003e\n\u003ca href=\"https://codecov.io/gh/dobraczka/recite\"\u003e\u003cimg src=\"https://codecov.io/gh/dobraczka/recite/branch/main/graph/badge.svg?token=TCMKS9U0MH\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/recite\"/\u003e\u003cimg alt=\"Stable python versions\" src=\"https://img.shields.io/pypi/pyversions/recite\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/psf/black\"\u003e\u003cimg alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\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 \u003e 👀 Checking everything to make sure you are ready to release 👀\nrecite \u003e 1: ✓ Make sure you have a (non-empty) pyproject.toml\nrecite \u003e 2: ✓ Make sure you're on main/master branch\nrecite \u003e 3: ✓ Make sure git is clean\nrecite \u003e 4: ✓ Run test-suite\nrecite \u003e 5: ✓ Make sure changelog was updated\nrecite \u003e 🤓 Everything looks perfect! 🤓\nrecite \u003e I will perform the following steps:\nrecite \u003e        * Would bump version from 0.1.0 to 0.1.1\nrecite \u003e        * Commit version bump\nrecite \u003e        * Create git tag 0.1.1\nrecite \u003e        * Push git tag 0.1.1\nrecite \u003e        * Remind you to upload build as github release\nDo you want to proceed? [y/N]: y\nrecite \u003e ✨ Performing release ✨\nrecite \u003e 1: ✓ Bump version\nrecite \u003e        * Bumped version from 0.1.0 to 0.1.1\nrecite \u003e 2: ✓ Commit version bump\nrecite \u003e 3: ✓ Create git tag 0.1.1\nrecite \u003e 4: ✓ Push git tag 0.1.1\nrecite \u003e 5: ✓ Build and publish with poetry\nPlease create a github release now! Did you do it? [y/N]: y\nrecite \u003e 6: ✓ Remind you to upload build as github release\nrecite \u003e 🚀 Congrats to your release! 🚀\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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdobraczka%2Frecite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdobraczka%2Frecite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdobraczka%2Frecite/lists"}