{"id":15969928,"url":"https://github.com/thombashi/releasecmd","last_synced_at":"2025-07-14T17:33:42.100Z","repository":{"id":57460986,"uuid":"130445252","full_name":"thombashi/releasecmd","owner":"thombashi","description":"releasecmd is a release subcommand for setup.py (setuptools.setup). The subcommand create a git tag and push, and upload packages to PyPI.","archived":false,"fork":false,"pushed_at":"2024-07-15T16:45:37.000Z","size":158,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-02T03:05:05.317Z","etag":null,"topics":["python-library","release-automation","release-helper","setuptools"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/releasecmd/","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/thombashi.png","metadata":{"files":{"readme":"README.rst","changelog":null,"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,"zenodo":null}},"created_at":"2018-04-21T06:08:17.000Z","updated_at":"2024-05-31T16:03:53.000Z","dependencies_parsed_at":"2024-04-08T21:01:23.563Z","dependency_job_id":"8fdd0b70-14ce-4dd8-b9c5-98f614e21e1b","html_url":"https://github.com/thombashi/releasecmd","commit_stats":{"total_commits":321,"total_committers":3,"mean_commits":107.0,"dds":0.006230529595015577,"last_synced_commit":"4c02ab5a8acc15b1a49ff84279077c591fe7d001"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/thombashi/releasecmd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thombashi%2Freleasecmd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thombashi%2Freleasecmd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thombashi%2Freleasecmd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thombashi%2Freleasecmd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thombashi","download_url":"https://codeload.github.com/thombashi/releasecmd/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thombashi%2Freleasecmd/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265324440,"owners_count":23747077,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["python-library","release-automation","release-helper","setuptools"],"created_at":"2024-10-07T19:42:29.868Z","updated_at":"2025-07-14T17:33:42.079Z","avatar_url":"https://github.com/thombashi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"releasecmd\n============================================\n\n|PyPI pkg ver| |Supported Python versions| |CI status| |CodeQL|\n\n.. |PyPI pkg ver| image:: https://badge.fury.io/py/releasecmd.svg\n    :target: https://badge.fury.io/py/releasecmd\n    :alt: PyPI package version\n\n.. |Supported Python versions| image:: https://img.shields.io/pypi/pyversions/releasecmd.svg\n    :target: https://pypi.org/project/releasecmd\n    :alt: Supported Python versions\n\n.. |CI status| image:: https://github.com/thombashi/releasecmd/actions/workflows/ci.yml/badge.svg\n    :target: https://github.com/thombashi/releasecmd/actions/workflows/ci.yml\n    :alt: CI status\n\n.. |CodeQL| image:: https://github.com/thombashi/releasecmd/actions/workflows/github-code-scanning/codeql/badge.svg\n    :target: https://github.com/thombashi/releasecmd/actions/workflows/github-code-scanning/codeql\n    :alt: CodeQL\n\nSummary\n---------\n``releasecmd`` is a ``release`` subcommand for ``setup.py`` (``setuptools.setup``).\nThe subcommand creates a git tag and pushes and uploads packages to ``PyPI``.\n\nThe subcommand class (``releasecmd.ReleaseCommand``) is implemented as a subclass of ``setuptools.Command`` class.\nThe ``release`` subcommand performs the following tasks:\n\n1. Detect the package version\n    1. If specified with the ``--version`` option, use that version\n    2. Retrieve the package version from an installed package if the ``--use-installed-version`` option is specified\n    3. Find a file that defines the package version (``__version__`` variable)\n2. Creates a git tag using the package version information\n    - Optionally signs the git tag with GPG if the ``--sign`` option is specified\n3. Pushes the git tag\n4. Upload package files to PyPI using ``twine``.\n \nInstallation\n============================================\n::\n\n    pip install releasecmd\n\n\nUsage\n============================================\n\n:setup.py:\n    .. code-block:: python\n\n        import setuptools\n\n        from releasecmd import ReleaseCommand\n\n        setuptools.setup(\n            ...\n            cmdclass={\"release\": ReleaseCommand},\n        )\n\n\nExample\n============================================\n.. code-block::\n\n    $ python3 setup.py release\n    running release\n    [get the version from ./releasecmd/__version__.py]\n    [pull git tags]\n    Already up to date.\n    [check existing git tags]\n    [create a git tag: v0.0.15]\n    [push git tags]\n    [upload the package to PyPI]\n    ...\n\nprerequisite: package binaries must be in the ``dist/`` directory.\n\n\nSpecify version manually\n------------------------------------------------------\nYou can specify a version manually by ``--version`` option:\n\n.. code-block::\n\n    $ python3 setup.py release --version 0.1.0\n    [create a git tag: v0.1.0]\n    [pull git tags]\n    Already up to date.\n    [check existing git tags]\n    [push git tags]\n    [upload packages to PyPI]\n\n\nCreate a GPG signed tag and upload packages\n------------------------------------------------------\n.. code-block::\n\n    $ python3 setup.py release --sign\n    running release\n    [get the version from ./releasecmd/__version__.py]\n    [pull git tags]\n    Already up to date.\n    [check existing git tags]\n    [create a git tag with gpg signing: v0.1.0]\n    [push git tags]\n    [upload packages to PyPI]\n    ...\n\nSkip create a git tag and upload packages\n------------------------------------------------------\n.. code-block::\n\n    $ python3 setup.py release --skip-tagging\n    running release\n    [get the version from ./releasecmd/__version__.py]\n    skip git tagging\n    [upload packages to PyPI]\n    ...\n\n\nrelease command options\n============================================\n::\n\n    Options for 'ReleaseCommand' command:\n      --skip-tagging           skip a git tag creation\n      --skip-uploading         skip uploading packages to PyPI\n      --dry-run                don't actually do anything\n      --sign                   make a GPG-signed git tag\n      --verbose                show verbose output\n      --search-dir             specify a root directory path to search a version\n                               file. defaults to the current directory.\n      --tag-template           specify git tag format. defaults to 'v{version}'\n      --use-installed-version  use an installed package version as a release\n                               version\n      --version                specify release version\n\nDependencies\n============================================\n- Python 3.8+\n- `Git \u003chttps://git-scm.com/\u003e`__\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthombashi%2Freleasecmd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthombashi%2Freleasecmd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthombashi%2Freleasecmd/lists"}