{"adoption": {"forks": 120, "observed_at": "2026-08-28T04:03:54.761886+00:00", "stars": 1184}, "canonical_url": "https://ross.abutalabs.com/products/gh-action-pypi-publish", "card": {"archived": false, "artifact_type": "plugin", "description": "The blessed :octocat: GitHub Action, for publishing your :package: distribution files to PyPI, the tokenless way: https://github.com/marketplace/actions/pypi-publish", "domain": ["developer-tools"], "enriched": true, "function": ["deployment", "ci-cd", "package-manager", "secrets-management", "workflow-automation"], "health_score": 97, "homepage": "https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/", "language": "Python", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "active", "member_repos": ["pypa/gh-action-pypi-publish"], "name": "pypa/gh-action-pypi-publish", "platform": ["python", "cloud"], "pushed_at": "2026-07-29T17:03:45+00:00", "repo": "pypa/gh-action-pypi-publish", "stars": 1184, "tags": ["pypi", "trusted-publishing", "oidc", "github-action", "release-automation", "twine", "python-packaging", "tokenless-authentication", "testpypi", "automation", "github-actions"], "topics": ["github-action", "python", "workflow", "workflow-automation", "pypi", "python-packaging", "twine", "secrets", "upload", "release", "release-automation", "release-helper", "workflows", "github-actions", "pypa-guide", "github-actions-python", "actions", "testpypi", "hacktoberfest", "oidc"], "urls": [], "use_cases": ["publish python package to pypi from github actions", "upload dist files to pypi in ci", "tokenless pypi publishing with oidc", "automate python package releases", "publish to testpypi for testing", "release python package without storing api tokens"], "what_it_is": "The official PyPA GitHub Action for publishing Python distribution packages to PyPI and TestPyPI directly from CI/CD workflows. It supports tokenless authentication via PyPI's Trusted Publishing (OIDC) as well as traditional API token and username/password methods.", "when_to_avoid": ["You need to publish from a reusable workflow with trusted publishing (not currently supported; use tokens instead)", "You publish to non-PyPI package indexes with custom authentication flows", "You need highly customized publishing scenarios outside the supported usage patterns"], "when_to_choose": ["You want to publish Python packages to PyPI or TestPyPI from GitHub Actions workflows", "You want to avoid managing long-lived API tokens by using OIDC-based Trusted Publishing", "You want the officially supported PyPA-recommended publishing action"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/gh-action-pypi-publish", "repo": "pypa/gh-action-pypi-publish", "role": "main", "score": 96}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:24:29.488201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a4196f4da6261c036c1a629faadac590488308765a28049dfd2aafb59785f49", "fetched_at": "2026-08-28T04:03:54.761886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pypa/gh-action-pypi-publish"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:24:29.488201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a4196f4da6261c036c1a629faadac590488308765a28049dfd2aafb59785f49", "fetched_at": "2026-08-28T04:03:54.761886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pypa/gh-action-pypi-publish"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:24:29.488201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a4196f4da6261c036c1a629faadac590488308765a28049dfd2aafb59785f49", "fetched_at": "2026-08-28T04:03:54.761886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pypa/gh-action-pypi-publish"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:24:29.488201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a4196f4da6261c036c1a629faadac590488308765a28049dfd2aafb59785f49", "fetched_at": "2026-08-28T04:03:54.761886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pypa/gh-action-pypi-publish"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:24:29.488201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a4196f4da6261c036c1a629faadac590488308765a28049dfd2aafb59785f49", "fetched_at": "2026-08-28T04:03:54.761886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pypa/gh-action-pypi-publish"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:24:29.488201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a4196f4da6261c036c1a629faadac590488308765a28049dfd2aafb59785f49", "fetched_at": "2026-08-28T04:03:54.761886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pypa/gh-action-pypi-publish"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:54.761886+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:24:29.488201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a4196f4da6261c036c1a629faadac590488308765a28049dfd2aafb59785f49", "fetched_at": "2026-08-28T04:03:54.761886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pypa/gh-action-pypi-publish"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:24:29.488201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a4196f4da6261c036c1a629faadac590488308765a28049dfd2aafb59785f49", "fetched_at": "2026-08-28T04:03:54.761886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pypa/gh-action-pypi-publish"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:24:29.488201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a4196f4da6261c036c1a629faadac590488308765a28049dfd2aafb59785f49", "fetched_at": "2026-08-28T04:03:54.761886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pypa/gh-action-pypi-publish"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:24:29.488201+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5a4196f4da6261c036c1a629faadac590488308765a28049dfd2aafb59785f49", "fetched_at": "2026-08-28T04:03:54.761886+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pypa/gh-action-pypi-publish"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "longevity": 100, "rhythm": 95}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2716, "days_push": 35, "days_rel": 35, "gap_med": 21.5, "n_releases_24m": 13}, "score": 96, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}