render-lab-tasks-github
GitHub tasks for Render Workflows. Version 0.1.1 implements all 26 registered tasks and the registration-free webhook adapter. Version 0.1.0 contained only the original issue-list/label subset.
Install from PyPI with Python 3.12+:
pip install render-lab-tasks-github==0.1.1
from render import TaskContext, Workflows
from render_lab_tasks_github.tasks import app as github_app, list_new_issues
app = Workflows.from_workflows(github_app)
@app.task(name="example.readIssues")
async def read_issues(ctx: TaskContext):
return await ctx.run(list_new_issues, {"repo": "render-oss/sdk", "limit": 5})
Call app.start() from the workflow entry point. Raw list_new_issues_impl and
apply_labels_impl are also exported from .tasks; inject GitHubDeps with a
GitHubPort fake to test or wrap under your own task name. Do not call a wrapped
task directly. Use await ctx.run(task, input).
Contract
list_new_issues takes repo (owner/name), optional sinceISO, and optional
nonnegative integer limit (default 50; explicit null also selects 50, matching
TypeScript). Returns plain issue dictionaries with
number, title, body, url, labels, createdAt, and nullable author.
Lists open issues newest-created first, skips pull requests, and follows pages
until the requested issue count or the end. sinceISO filters by GitHub's
updated-since behavior, matching the TS adapter. Zero limit performs no request.
apply_labels takes repo, issueNumber, and labels. Returns issueNumber
and the requested labels. An empty label list makes no HTTP request. This task
writes when called; dry-run decisions belong to the workflow caller.
Environment
| Variable | Required | Purpose |
|---|---|---|
| GITHUB_TOKEN | For writes/private repos; optional for public reads | GitHub token with permissions for the requested repository/operation |
Credentials are read during calls, never at import. GitHub responses determine permission failures. HTTPX uses a 30-second timeout and no automatic retries. Render retries failed tasks up to three times with a 1000 ms base delay and 2x backoff. Pagination may make multiple requests within an attempt; writes may be retried and callers must account for vendor idempotency.
Render SDK 1.0.1 result limitation
The raw implementation always returns a list. The pinned SDK unwraps a singleton list after a durable child run, so consumers should normalize the result:
issues = await ctx.run(list_new_issues, {"repo": "owner/repo", "limit": 5})
if isinstance(issues, dict):
issues = [issues]
Both examples include this workaround. See ADR-0005.
Repository and PR operations
The expanded pack covers repositories, organization inventory, branches, file
reads/writes, atomic multi-file commits, PRs/reviews/merges, workflow dispatch,
search, and issue comments/updates. Raw implementations accept GitHubDeps.
GITHUB_TOKEN remains lazy; public reads can run unauthenticated. Search and
writes require the appropriate token permissions.
commit_files rejects empty/duplicate/traversing paths, limits decoded content
to 3,500,000 bytes, and optionally checks the expected branch head. It creates
blobs/tree/commit before updating the branch without forcing it. Branch creation
and deletion handle already-existing/missing resources. merge_when_green
performs one checks/status read per attempt before merging. No live repository
writes or merges were used for this port.
Webhook adapter
render_lab_tasks_github.webhooks.github_adapter(on_event, ...) returns a
registration-free adapter for render_lab_triggers. The callback receives the
verified event and returns {"task": "namespace.task", "args": [event]} or None.
The signing credential GITHUB_WEBHOOK_SECRET is read inside verification unless
provided explicitly. Importing this module does not register tasks. Signature
checks use the raw body; live delivery remains in the testing backlog.
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 render_lab_tasks_github-0.1.1.tar.gz.
File metadata
- Download URL: render_lab_tasks_github-0.1.1.tar.gz
- Upload date:
- Size: 16.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e422607df825e597ab1790afd11c117806d64a7ad0ca6357ceb517e6f524c7b
|
|
| MD5 |
e4f258862b0e86e382cea6f550a12184
|
|
| BLAKE2b-256 |
59f1a83598660997bef22cad48d4c5149b19fac932452670d8df6d09e475f367
|
Provenance
The following attestation bundles were made for render_lab_tasks_github-0.1.1.tar.gz:
Publisher:
publish.yml on render-lab/render-tasks-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
render_lab_tasks_github-0.1.1.tar.gz -
Subject digest:
7e422607df825e597ab1790afd11c117806d64a7ad0ca6357ceb517e6f524c7b - Sigstore transparency entry: 2768028611
- Sigstore integration time:
-
Permalink:
render-lab/render-tasks-python@b601664587ba5882dd7c8efabfc8908151008df6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/render-lab
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b601664587ba5882dd7c8efabfc8908151008df6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file render_lab_tasks_github-0.1.1-py3-none-any.whl.
File metadata
- Download URL: render_lab_tasks_github-0.1.1-py3-none-any.whl
- Upload date:
- Size: 27.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb82dc8b67c8dfa7b691f5552fb5c430a40e8fa00a6b0e01b81c1965c67c2dce
|
|
| MD5 |
588627037eae6456db8b4979bebd5946
|
|
| BLAKE2b-256 |
54d9527a6fd560b13b1aafb7eb6d5cb84b448551800f4b71ca618647e761c0f3
|
Provenance
The following attestation bundles were made for render_lab_tasks_github-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on render-lab/render-tasks-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
render_lab_tasks_github-0.1.1-py3-none-any.whl -
Subject digest:
cb82dc8b67c8dfa7b691f5552fb5c430a40e8fa00a6b0e01b81c1965c67c2dce - Sigstore transparency entry: 2768028695
- Sigstore integration time:
-
Permalink:
render-lab/render-tasks-python@b601664587ba5882dd7c8efabfc8908151008df6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/render-lab
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b601664587ba5882dd7c8efabfc8908151008df6 -
Trigger Event:
workflow_dispatch
-
Statement type: