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

# render-lab-tasks-render

Fifteen Render control-plane tasks for services, deploys, Postgres, Key Value,
projects, and diagnostics. Import `render_lab_tasks_render.tasks` to register;
every operation also exports injectable async `*_impl(ctx, input, *, deps=...)`.

`RENDER_API_KEY` is read lazily. Provision/create operations accept `ownerId` or
use `RENDER_OWNER_ID`. Pass explicit ownerId for name-based lookup scoping and
`environmentId` for project placement. Names are not a concurrency-safe unique
key: simultaneous creators or matches beyond the first 20 results need care.

`render.provisionService` uses ctx.run on the wrapped `render.ensureService`
child. The checkpointed ensure phase does not repeat on every deploy poll.
Terminal deploy failure returns live=false; pending states throw to drive the
durable retry. Inject a context runner plus the read port for composition tests.
Other awaiters retain source error-message/retry behavior, including source
messages built before status reads (created/undefined in progress messages).

Service reconciliation checks managed serviceDetails fields. Environment-only,
repository, or branch drift does not trigger reconciliation, matching TS. Docker
commands use envSpecificDetails; image sources are top-level and exclude repo.

Python uses durable retries only; the source's in-process 429/5xx exception is
not reproduced. This matches the Python repository's single retry owner rule.
Diagnostics actually clips UTF-8 log message bytes to maxBytes rather than the
source's ineffective drop-one-line heuristic. These deviations and required live
checks are recorded in ADR-0013 and the shared testing backlog.

No resources are created by importing the package. Live control-plane writes,
project placement, quota handling, and durable checkpoint replay remain unverified.
Any new Render-DX test services must belong to taskpack-test/testing.

`Deps.ensure_service` can inject the provisioning creation collaborator. If omitted
on custom dependencies, the injected port handles creation. Default wrapped calls
continue to checkpoint `render.ensureService` through `ctx.run`.

## Installation

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