Skip to main content

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

render_lab_tasks_github-0.1.1.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

render_lab_tasks_github-0.1.1-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

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

Hashes for render_lab_tasks_github-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7e422607df825e597ab1790afd11c117806d64a7ad0ca6357ceb517e6f524c7b
MD5 e4f258862b0e86e382cea6f550a12184
BLAKE2b-256 59f1a83598660997bef22cad48d4c5149b19fac932452670d8df6d09e475f367

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file render_lab_tasks_github-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for render_lab_tasks_github-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cb82dc8b67c8dfa7b691f5552fb5c430a40e8fa00a6b0e01b81c1965c67c2dce
MD5 588627037eae6456db8b4979bebd5946
BLAKE2b-256 54d9527a6fd560b13b1aafb7eb6d5cb84b448551800f4b71ca618647e761c0f3

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page