Python client for the Google Issue Tracker
Project description
Buganize
Python client for the Google Issue Tracker.
Table of Contents
Installation
pip install buganize
or
pip install buganise
Usage as a library
from buganize import Buganize
or
from buganise import Buganise
Search issues
async def search():
# Search across all public trackers (default)
async with Buganize() as client:
result = await client.search("status:open component:Blink", page_size=10)
print(f"{result.total_count} total matches")
for issue in result.issues:
print(f"#{issue.id} [{issue.status.name}] {issue.title}")
# Pagination
if result.has_more:
page2 = await client.next_page(result)
for issue in page2.issues:
print(f"#{issue.id} [{issue.status.name}] {issue.title}")
async def search_chromium():
# Search only within the Chromium tracker
async with Buganize(tracker_id="157") as client:
result = await client.search("status:open component:Blink")
Get a single issue
async def get_issue():
async with Buganize() as client:
issue = await client.issue(40060244)
print(issue.title)
print(issue.url) # https://issuetracker.google.com/issues/40060244
print(issue.status.name) # e.g. "FIXED"
print(issue.priority.name) # e.g. "P2"
print(issue.os) # e.g. ["Linux", "Mac", "Windows"]
print(issue.cve) # e.g. ["CVE-2024-1234"]
Batch get issues
async def batch_get():
async with Buganize() as client:
issues = await client.issues([40060244, 485912774, 486077869])
for issue in issues:
print(f"#{issue.id} - {issue.title}")
Get comments
async def get_comments():
async with Buganize() as client:
comments = await client.comments(486077869)
for comment in comments:
print(f"#{comment.comment_number} by {comment.author}")
print(comment.body)
Get full updates
Updates include both comments and field changes (status changes, priority changes, etc.):
async def get_updates():
async with Buganize() as client:
result = await client.issue_updates(486077869)
print(f"{result.total_count} total updates")
# Just the comments, in chronological order
for comment in result.comments:
print(f"#{comment.comment_number}: {comment.body[:80]}")
# All updates (newest first), including field changes
for update in result.updates:
if update.field_changes:
changed = ", ".join(fc.field for fc in update.field_changes)
print(f" Fields changed: {changed}")
if update.comment:
print(f" Comment: {update.comment.body[:80]}")
CLI usage
Run with python -m buganize <command> or just buganize <command>.
Search
# Search across all public trackers (default)
buganize search "status:open"
# Combined filters
buganize search "status:open component:Blink"
# Results per page (choices: 25, 50, 100, 250)
buganize search "type:bug" -n 100
# Fetch a total of 200 results, paginating as needed
buganize search "status:open" -l 200
Tracker selection
By default, buganize searches across all public trackers on issuetracker.google.com. Use -t/--tracker to narrow to a
specific tracker:
# Search only Chromium issues
buganize -t chromium search "status:open"
# Search only Fuchsia issues
buganize -t fuchsia search "status:open"
# Use a numeric tracker ID directly
buganize -t 157 search "status:open"
Issue
buganize issue 486077869
Issues (batch)
buganize issues 40060244 485912774 486077869
Comments
buganize comments 486077869
Extra fields
By default, the table output only shows ID, Status, Priority, and Title. You can show additional columns:
# Show specific extra fields
buganize search "status:open" -f owner os milestone
# Show all available fields
buganize search "status:open" -F
# Works with issue and issues too
buganize issue 486077869 --fields cve tags labels
buganize issue 486077869 --all-fields
Available extra field names: owner, reporter, verifier, type, component, tags, ancestor_tags, labels,
os, milestone, ccs, hotlists, blocking, cve, cwe, build, introduced_in, merge, merge_request,
release_block, notice, flaky_test, est_days, next_action, vrp_reward, irm_link, sec_release, fixed_by,
created, modified, verified, comments, stars, last_modifier.
Export
All commands support -e/--export for exporting to CSV or JSON files. Exported files are named with a timestamp (e.g.
buganize-20260223_012345.csv):
buganize -e csv search "status:open" -n 50
buganize -e json issue 486077869
# Multiple formats in one command
buganize -e csv json search "status:open"
Debug logging
Use --debug to see HTTP request/response details:
buganize --debug search "status:open"
Timeout
Use --timeout to set the HTTP request timeout in seconds (default: 30):
buganize --timeout 60 search "status:open"
[!Tip] British English spelling
buganisewill also work.
See API Reference for details about limitations, and how the API works
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file buganize-1.0.1.tar.gz.
File metadata
- Download URL: buganize-1.0.1.tar.gz
- Upload date:
- Size: 26.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ce4e0e32b91660d239536f170dd7eeca5251a0e8540dc8efc20e89b5542e260
|
|
| MD5 |
1a051095d9719c05582bfe12985b04f8
|
|
| BLAKE2b-256 |
408d6492f07c1c3fe3e1677228dde7d4ade0f06de6d036677fd9f7c785e243c6
|
Provenance
The following attestation bundles were made for buganize-1.0.1.tar.gz:
Publisher:
publish-python.yml on rly0nheart/buganize
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
buganize-1.0.1.tar.gz -
Subject digest:
7ce4e0e32b91660d239536f170dd7eeca5251a0e8540dc8efc20e89b5542e260 - Sigstore transparency entry: 977449274
- Sigstore integration time:
-
Permalink:
rly0nheart/buganize@757dde4a361491c0856b7119a018525e15019bc6 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/rly0nheart
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@757dde4a361491c0856b7119a018525e15019bc6 -
Trigger Event:
push
-
Statement type:
File details
Details for the file buganize-1.0.1-py3-none-any.whl.
File metadata
- Download URL: buganize-1.0.1-py3-none-any.whl
- Upload date:
- Size: 31.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
325ddb75d1ec3edf63cbb08cd2558567713db81ead94355067199b123622f289
|
|
| MD5 |
856108180de2ea3b0d2410bc23b29ab1
|
|
| BLAKE2b-256 |
aafe5d335347b0fd320501dd95f8604549aaf84cda88511f2243b868377e5646
|
Provenance
The following attestation bundles were made for buganize-1.0.1-py3-none-any.whl:
Publisher:
publish-python.yml on rly0nheart/buganize
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
buganize-1.0.1-py3-none-any.whl -
Subject digest:
325ddb75d1ec3edf63cbb08cd2558567713db81ead94355067199b123622f289 - Sigstore transparency entry: 977449293
- Sigstore integration time:
-
Permalink:
rly0nheart/buganize@757dde4a361491c0856b7119a018525e15019bc6 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/rly0nheart
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@757dde4a361491c0856b7119a018525e15019bc6 -
Trigger Event:
push
-
Statement type: