Metadata-Version: 2.5
Name: render-lab-tasks-sentry
Version: 0.1.0
Summary: sentry tasks for Render Workflows
Project-URL: Repository, https://github.com/render-lab/render-tasks-python
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.12
Requires-Dist: httpx<0.29,>=0.28
Requires-Dist: render-lab-tasks-core<0.2,>=0.1.1
Requires-Dist: render-lab-triggers<0.2,>=0.1.0
Requires-Dist: render==1.0.1
Description-Content-Type: text/markdown

# render-lab-tasks-sentry

Python port of all 9 registered tasks in the pinned TypeScript pack at
`45f9c2d44bd28e01ae9813e0d2ff56ee6c533816`. Python 3.12+.

From the repository, install this pack and its supporting core together:

```sh
pip install render-lab-tasks-sentry==0.1.0
```

Import task definitions from `render_lab_tasks_sentry.tasks`. Combine its `app` with
other pack apps using `Workflows.from_workflows(...)` and call tasks with
`await ctx.run(task, input)`. Package roots do not register tasks. JSON fields
retain the TS spelling; Python functions use snake_case.

## Tasks

| Registered name | Python export (also exposes `_impl`) |
| --- | --- |
| `sentry.addComment` | `add_comment` |
| `sentry.assignIssue` | `assign_issue` |
| `sentry.getIssue` | `get_issue` |
| `sentry.getLatestEvent` | `get_latest_event` |
| `sentry.ignoreIssue` | `ignore_issue` |
| `sentry.listEvents` | `list_events` |
| `sentry.listNewErrors` | `list_new_errors` |
| `sentry.listProjects` | `list_projects` |
| `sentry.resolveIssue` | `resolve_issue` |

## Dependencies and retries

Raw implementations accept context first and keyword-only `deps`. The `.client`
module exports typed `Port`, `Deps`, and `Client` classes (also vendor-named aliases).
Inject a fake port, or pass a caller-owned `httpx.AsyncClient` to `Client` for custom
transport/configuration. Default dependencies close their HTTP clients after the
operation. Credentials resolve at first use. HTTP and SDK retries are disabled;
`retry.py` owns durable retry settings. DTO types live in `.types`.

## Environment

| Variable | Contract |
| --- | --- |
| `SENTRY_AUTH_TOKEN` | Required on API calls. |
| `SENTRY_ORG` | Required only for listNewErrors and listProjects. |
| `SENTRY_HOST` | Optional hostname, defaults to sentry.io; HTTPS is used. |

## Verification and limitations

Issue counts and flattened exception frames follow the TS JSON output. Non-finite counts become null, matching JSON serialization of JS NaN/Infinity. List endpoints preserve the TS single-response behavior.

Shared JSON fixtures compare the Python task output with the actual pinned TS
implementation. REST fixtures also compare HTTP requests; HubSpot and Linear
fixtures compare source SDK arguments with HTTP payloads/GraphQL variables.
No live vendor calls were made for this batch. Registered-task parity does not
claim live readiness or all supporting TS exports. See the root verification
tracker and docs/porting-batches.md. Licensed under MIT.

## Webhook adapter

`render_lab_tasks_sentry.webhooks.sentry_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 `SENTRY_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.
