googleapis / googleapis/google-cloud-python

automated release fails due to missing PyPI history anchor

Open
#16,188 2 comments 2 reactions 1 assignee Claimed by @gkevinzheng View on GitHub
Dominant language
Python
Stars
5.4k
Forks
1.8k
Avg merge
3d 4h
Merged PRs (30d)
122

Description

### Description

The release automation script (`cli.py`) fails with a `ValueError` when trying to update a library's `CHANGELOG.md` if the file doesn't use the exact hardcoded PyPI history anchor. This blocks releases for any package that has a malformed or missing header.

### Affected Code

In `.generator/cli.py` (lines 1533-1540):

```python
anchor_pattern = re.compile(
rf"(\[1\]: https://pypi\.org/project/{library_id}/#history)",
re.MULTILINE,
)
...
if num_subs == 0:
raise ValueError("Changelog anchor '[1]: ...#history' not found.")
```

### Root Cause

The regular expression is too strict:
1. It expects `[1]:` literally. If a package uses `[2]:` or similar, it fails.
2. It expects the PyPI project name to match the folder name `{library_id}` exactly.
3. It has strict spacing requirements.

### Proposed Solution

Make `_process_changelog` more robust by:
- Falling back to a less strict regex (e.g., searching for any link containing `pypi.org/project/` and `#history`).
- If no anchor is found, auto-prepend it to the file instead of raising a fatal error.

### Culprit Found

During investigation, `packages/google-cloud-documentai-toolbox/CHANGELOG.md` was found to be missing this anchor, which was blocking its release. I will create a PR to add this shortly.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.