def iterate(
project: str,
environment: str,
*,
limit: int | None = None,
offset: int | None = None,
product: str | None = None,
timeout: float | None = None,
) -> Iterator[VariableResource]def iterate(
project: str,
environment: str,
*,
limit: int | None = None,
offset: int | None = None,
product: str | None = None,
timeout: float | None = None,
) -> AsyncIterator[VariableResource]Returns an iterator that yields variables one at a time and fetches the next page only when the current one is exhausted. Nothing is requested until you start consuming it, so calling it without a loop does no work.
Breaking out of the loop ends the walk and no further requests are made. The generator advances offset by the number of items it actually received, so a concurrent write between pages can shift rows and make the walk skip or repeat one. When you need a consistent picture, read with list_all and send every row to apply as the baseline, which turns a concurrent change into a 409 instead of a silent skip.
Example
from envless import envless
for variable in envless.variables.iterate(
'api', 'production'
):
print(variable['name'], variable['updatedAt'])import asyncio
from envless import AsyncEnvless
async def main() -> None:
async with AsyncEnvless() as envless:
async for variable in envless.variables.iterate(
'api', 'production'
):
print(variable['name'], variable['updatedAt'])
asyncio.run(main())Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
project | str | Yes | Project slug the environment belongs to. |
environment | str | Yes | Environment slug to read variables from. |
limit | int | No | Page size for each underlying request, clamped to 100. |
offset | int | No | Offset the walk starts from, defaults to 0. |
product | str | No | Product slug, needed when the project slug is not unique in the workspace. |
timeout | float | No | Seconds each attempt of this call may take, the response body included, before it raises EnvlessNetworkError with is_timeout set. Overrides the client's timeout for this call, and 0 turns the limit off. |
Returns
Iterator[VariableResource] yielding one variable per iteration.
Reads the variables collection. list returns one page as a dict with items and pagination, list_all collects every page into a list, and iterate yields one item at a time, fetching the next page only when the loop reaches it. On AsyncEnvless, iterate is an async iterator for async for.
Worth knowing
- Memory stays flat at one page, which is the reason to pick this over
list_allfor large environments.
Required scopes
variables:read
Underlying endpoint
GET /projects/{slug}/environments/{environmentSlug}/variables
Request and response schema, every error code, and a live playground.
In TypeScript
envless.variables.iterate()
The same method in @goenvless/sdk, with the same request, retries and errors.