Metadata-Version: 2.5
Name: render-lab-tasks-figma
Version: 0.1.0
Summary: figma 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.0
Requires-Dist: render==1.0.1
Description-Content-Type: text/markdown

# render-lab-tasks-figma

Python port of all 8 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-figma==0.1.0
```

Import task definitions from `render_lab_tasks_figma.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`) |
| --- | --- |
| `figma.exportFrame` | `export_frame` |
| `figma.getComponents` | `get_components` |
| `figma.getFile` | `get_file` |
| `figma.getFileNodes` | `get_file_nodes` |
| `figma.getStyles` | `get_styles` |
| `figma.getVersions` | `get_versions` |
| `figma.listComments` | `list_comments` |
| `figma.postComment` | `post_comment` |

## 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 |
| --- | --- |
| `FIGMA_TOKEN` | Required on API calls. |

## Verification and limitations

Lists preserve the TS single-response behavior, including missing-node filtering and requested-node order. Image exports return URLs, not image bytes.

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.
