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.
Metadata
Release files for render-lab-tasks-github 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| render_lab_tasks_github-0.1.1.tar.gz | 16.1 kB | With provenance | Details for render_lab_tasks_github-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| render_lab_tasks_github-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for render_lab_tasks_github-0.1.1-py3-none-any.whl |
Total release size: 44.0 kB
Release files / render_lab_tasks_github-0.1.1.tar.gz
| Download URL | render_lab_tasks_github-0.1.1.tar.gz |
|---|---|
| Size | 16.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7e422607df825e597ab1790afd11c117806d64a7ad0ca6357ceb517e6f524c7b
|
|
BLAKE2b-256 checksum How to use checksums |
59f1a83598660997bef22cad48d4c5149b19fac932452670d8df6d09e475f367
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / render_lab_tasks_github-0.1.1-py3-none-any.whl
| Download URL | render_lab_tasks_github-0.1.1-py3-none-any.whl |
|---|---|
| Size | 27.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cb82dc8b67c8dfa7b691f5552fb5c430a40e8fa00a6b0e01b81c1965c67c2dce
|
|
BLAKE2b-256 checksum How to use checksums |
54d9527a6fd560b13b1aafb7eb6d5cb84b448551800f4b71ca618647e761c0f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logSecurity for render-lab-tasks-github 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for render_lab_tasks_github-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.