render 1.1.0__tar.gz → 1.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (871) hide show
  1. {render-1.1.0 → render-1.3.0}/CHANGELOG.md +26 -0
  2. {render-1.1.0 → render-1.3.0}/PKG-INFO +25 -1
  3. {render-1.1.0 → render-1.3.0}/README.md +24 -0
  4. {render-1.1.0 → render-1.3.0}/pyproject.toml +1 -1
  5. {render-1.1.0 → render-1.3.0}/render/__init__.py +8 -1
  6. render-1.3.0/render/_startup.py +34 -0
  7. {render-1.1.0 → render-1.3.0}/render/client/tests/test_client.py +56 -0
  8. {render-1.1.0 → render-1.3.0}/render/client/tests/test_workflows_sync.py +52 -0
  9. {render-1.1.0 → render-1.3.0}/render/client/workflows.py +24 -3
  10. {render-1.1.0 → render-1.3.0}/render/client/workflows_sync.py +22 -3
  11. render-1.3.0/render/experimental/object/tests/rate_limit.py +59 -0
  12. {render-1.1.0 → render-1.3.0}/render/experimental/object/tests/test_e2e.py +14 -12
  13. render-1.3.0/render/experimental/object/tests/test_rate_limit.py +75 -0
  14. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/__init__.py +4 -0
  15. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/api.py +56 -10
  16. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/api_sync.py +56 -10
  17. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/client.py +21 -7
  18. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/client_sync.py +21 -7
  19. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/tests/test_client.py +132 -3
  20. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/tests/test_e2e.py +181 -0
  21. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/tests/test_snapshots.py +116 -4
  22. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/tests/test_types.py +10 -2
  23. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/types.py +27 -1
  24. {render-1.1.0 → render-1.3.0}/render/public_api/api/blueprints/list_blueprint_syncs.py +4 -0
  25. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/list_build_sources.py +15 -0
  26. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/list_builds_in_build_source.py +20 -16
  27. render-1.3.0/render/public_api/api/build_sources/retrieve_build_source_build.py +213 -0
  28. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/create_sandbox.py +20 -0
  29. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/create_sandbox_snapshot.py +8 -4
  30. render-1.3.0/render/public_api/api/workflow_flows/cancel_flow_run.py +193 -0
  31. render-1.3.0/render/public_api/api/workflow_flows/get_flow.py +190 -0
  32. render-1.3.0/render/public_api/api/workflow_flows/get_flow_run.py +195 -0
  33. render-1.3.0/render/public_api/api/workflow_flows/get_flow_run_step.py +208 -0
  34. render-1.3.0/render/public_api/api/workflow_flows/list_flow_run_steps.py +236 -0
  35. render-1.3.0/render/public_api/api/workflow_flows/list_flow_runs.py +345 -0
  36. render-1.3.0/render/public_api/api/workflow_flows/list_flows.py +303 -0
  37. render-1.3.0/render/public_api/api/workflow_flows/start_flow_run.py +204 -0
  38. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflow_tasks/cancel_task_run.py +5 -0
  39. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflow_tasks/get_task_run.py +5 -0
  40. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflow_tasks/list_task_runs.py +5 -0
  41. render-1.3.0/render/public_api/api/workspaces/__init__.py +1 -0
  42. {render-1.1.0 → render-1.3.0}/render/public_api/models/__init__.py +40 -2
  43. {render-1.1.0 → render-1.3.0}/render/public_api/models/audit_log_event.py +2 -0
  44. {render-1.1.0 → render-1.3.0}/render/public_api/models/auto_deploy_disabled.py +6 -2
  45. {render-1.1.0 → render-1.3.0}/render/public_api/models/auto_deploy_enabled.py +6 -2
  46. {render-1.1.0 → render-1.3.0}/render/public_api/models/background_worker_details_post.py +17 -12
  47. {render-1.1.0 → render-1.3.0}/render/public_api/models/blueprint.py +6 -2
  48. {render-1.1.0 → render-1.3.0}/render/public_api/models/blueprint_detail.py +6 -2
  49. {render-1.1.0 → render-1.3.0}/render/public_api/models/blueprint_patch.py +5 -1
  50. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_git.py +10 -9
  51. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_patch_git.py +10 -9
  52. render-1.3.0/render/public_api/models/build_with_cursor.py +73 -0
  53. {render-1.1.0 → render-1.3.0}/render/public_api/models/create_deploy_body.py +6 -4
  54. {render-1.1.0 → render-1.3.0}/render/public_api/models/cron_job_details_post.py +16 -8
  55. {render-1.1.0 → render-1.3.0}/render/public_api/models/cron_job_run.py +1 -1
  56. {render-1.1.0 → render-1.3.0}/render/public_api/models/deploy.py +0 -9
  57. {render-1.1.0 → render-1.3.0}/render/public_api/models/error_code.py +1 -0
  58. render-1.3.0/render/public_api/models/flow.py +97 -0
  59. render-1.3.0/render/public_api/models/flow_input_type_1.py +44 -0
  60. render-1.3.0/render/public_api/models/flow_run.py +112 -0
  61. render-1.3.0/render/public_api/models/flow_run_attempt.py +113 -0
  62. render-1.3.0/render/public_api/models/flow_run_details.py +183 -0
  63. render-1.3.0/render/public_api/models/flow_run_status.py +13 -0
  64. render-1.3.0/render/public_api/models/flow_run_step.py +158 -0
  65. render-1.3.0/render/public_api/models/flow_run_step_attempt.py +93 -0
  66. render-1.3.0/render/public_api/models/flow_run_step_details.py +209 -0
  67. render-1.3.0/render/public_api/models/flow_run_step_status.py +10 -0
  68. render-1.3.0/render/public_api/models/flow_run_step_type.py +10 -0
  69. render-1.3.0/render/public_api/models/flow_run_step_with_cursor.py +73 -0
  70. render-1.3.0/render/public_api/models/flow_run_with_cursor.py +73 -0
  71. render-1.3.0/render/public_api/models/flow_with_cursor.py +73 -0
  72. {render-1.1.0 → render-1.3.0}/render/public_api/models/private_service_details_post.py +17 -12
  73. {render-1.1.0 → render-1.3.0}/render/public_api/models/run_task.py +15 -0
  74. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox.py +1 -1
  75. render-1.3.0/render/public_api/models/sandbox_egress_rule.py +83 -0
  76. render-1.3.0/render/public_api/models/sandbox_egress_rule_protocol.py +8 -0
  77. render-1.3.0/render/public_api/models/sandbox_network_policy.py +106 -0
  78. render-1.3.0/render/public_api/models/sandbox_network_policy_post.py +113 -0
  79. render-1.1.0/render/public_api/models/sandbox_network_policy_default.py → render-1.3.0/render/public_api/models/sandbox_network_policy_type.py +2 -1
  80. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_post.py +23 -8
  81. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_snapshot.py +20 -0
  82. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_snapshot_post.py +13 -0
  83. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_status.py +1 -0
  84. {render-1.1.0 → render-1.3.0}/render/public_api/models/service.py +11 -3
  85. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_event_with_cursor.py +8 -0
  86. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_patch.py +11 -3
  87. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_post.py +11 -3
  88. render-1.3.0/render/public_api/models/start_flow_run.py +111 -0
  89. {render-1.1.0 → render-1.3.0}/render/public_api/models/web_service_details_post.py +17 -12
  90. {render-1.1.0 → render-1.3.0}/render/workflows/__init__.py +2 -1
  91. {render-1.1.0 → render-1.3.0}/render/workflows/_callback_models.py +10 -1
  92. {render-1.1.0 → render-1.3.0}/render/workflows/client.py +2 -1
  93. {render-1.1.0 → render-1.3.0}/render/workflows/context.py +48 -1
  94. {render-1.1.0 → render-1.3.0}/render/workflows/executor.py +12 -4
  95. {render-1.1.0 → render-1.3.0}/render/workflows/runner.py +3 -1
  96. {render-1.1.0 → render-1.3.0}/render/workflows/tests/test_client.py +30 -0
  97. {render-1.1.0 → render-1.3.0}/render/workflows/tests/test_context.py +29 -1
  98. {render-1.1.0 → render-1.3.0}/render/workflows/tests/test_end_to_end.py +100 -1
  99. render-1.3.0/render/workflows/tests/test_startup.py +43 -0
  100. {render-1.1.0 → render-1.3.0}/typing_tests/run_inference.py +14 -1
  101. render-1.3.0/uv.lock +2055 -0
  102. render-1.1.0/render/public_api/models/sandbox_network_policy.py +0 -61
  103. render-1.1.0/uv.lock +0 -1902
  104. {render-1.1.0 → render-1.3.0}/.gitignore +0 -0
  105. {render-1.1.0 → render-1.3.0}/.python-version +0 -0
  106. {render-1.1.0 → render-1.3.0}/LICENSE +0 -0
  107. {render-1.1.0 → render-1.3.0}/example/__init__.py +0 -0
  108. {render-1.1.0 → render-1.3.0}/example/client/__init__.py +0 -0
  109. {render-1.1.0 → render-1.3.0}/example/client/async_main.py +0 -0
  110. {render-1.1.0 → render-1.3.0}/example/client/main.py +0 -0
  111. {render-1.1.0 → render-1.3.0}/example/sandbox/__init__.py +0 -0
  112. {render-1.1.0 → render-1.3.0}/example/sandbox/main.py +0 -0
  113. {render-1.1.0 → render-1.3.0}/example/task/__init__.py +0 -0
  114. {render-1.1.0 → render-1.3.0}/example/task/main.py +0 -0
  115. {render-1.1.0 → render-1.3.0}/render/client/__init__.py +0 -0
  116. {render-1.1.0 → render-1.3.0}/render/client/client.py +0 -0
  117. {render-1.1.0 → render-1.3.0}/render/client/errors.py +0 -0
  118. {render-1.1.0 → render-1.3.0}/render/client/sse.py +0 -0
  119. {render-1.1.0 → render-1.3.0}/render/client/sse_sync.py +0 -0
  120. {render-1.1.0 → render-1.3.0}/render/client/tests/__init__.py +0 -0
  121. {render-1.1.0 → render-1.3.0}/render/client/tests/test_method_parity.py +0 -0
  122. {render-1.1.0 → render-1.3.0}/render/client/tests/test_render.py +0 -0
  123. {render-1.1.0 → render-1.3.0}/render/client/tests/test_sse.py +0 -0
  124. {render-1.1.0 → render-1.3.0}/render/client/tests/test_util.py +0 -0
  125. {render-1.1.0 → render-1.3.0}/render/client/tests/test_util_sync.py +0 -0
  126. {render-1.1.0 → render-1.3.0}/render/client/types.py +0 -0
  127. {render-1.1.0 → render-1.3.0}/render/client/util.py +0 -0
  128. {render-1.1.0 → render-1.3.0}/render/client/util_sync.py +0 -0
  129. {render-1.1.0 → render-1.3.0}/render/experimental/__init__.py +0 -0
  130. {render-1.1.0 → render-1.3.0}/render/experimental/experimental.py +0 -0
  131. {render-1.1.0 → render-1.3.0}/render/experimental/experimental_sync.py +0 -0
  132. {render-1.1.0 → render-1.3.0}/render/experimental/key_value/__init__.py +0 -0
  133. {render-1.1.0 → render-1.3.0}/render/experimental/key_value/api.py +0 -0
  134. {render-1.1.0 → render-1.3.0}/render/experimental/key_value/compare.py +0 -0
  135. {render-1.1.0 → render-1.3.0}/render/experimental/key_value/provider.py +0 -0
  136. {render-1.1.0 → render-1.3.0}/render/experimental/key_value/tests/__init__.py +0 -0
  137. {render-1.1.0 → render-1.3.0}/render/experimental/key_value/tests/test_api.py +0 -0
  138. {render-1.1.0 → render-1.3.0}/render/experimental/key_value/tests/test_compare.py +0 -0
  139. {render-1.1.0 → render-1.3.0}/render/experimental/key_value/tests/test_provider.py +0 -0
  140. {render-1.1.0 → render-1.3.0}/render/experimental/key_value/tests/test_types.py +0 -0
  141. {render-1.1.0 → render-1.3.0}/render/experimental/key_value/types.py +0 -0
  142. {render-1.1.0 → render-1.3.0}/render/experimental/key_value/utils.py +0 -0
  143. {render-1.1.0 → render-1.3.0}/render/experimental/object/__init__.py +0 -0
  144. {render-1.1.0 → render-1.3.0}/render/experimental/object/api.py +0 -0
  145. {render-1.1.0 → render-1.3.0}/render/experimental/object/api_sync.py +0 -0
  146. {render-1.1.0 → render-1.3.0}/render/experimental/object/client.py +0 -0
  147. {render-1.1.0 → render-1.3.0}/render/experimental/object/client_sync.py +0 -0
  148. {render-1.1.0 → render-1.3.0}/render/experimental/object/e2e_helpers.py +0 -0
  149. {render-1.1.0 → render-1.3.0}/render/experimental/object/tests/__init__.py +0 -0
  150. {render-1.1.0 → render-1.3.0}/render/experimental/object/tests/test_client.py +0 -0
  151. {render-1.1.0 → render-1.3.0}/render/experimental/object/types.py +0 -0
  152. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/_tar.py +0 -0
  153. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/errors.py +0 -0
  154. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/files.py +0 -0
  155. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/tests/__init__.py +0 -0
  156. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/tests/test_download.py +0 -0
  157. {render-1.1.0 → render-1.3.0}/render/experimental/sandbox/tests/test_tar.py +0 -0
  158. {render-1.1.0 → render-1.3.0}/render/public_api/__init__.py +0 -0
  159. {render-1.1.0 → render-1.3.0}/render/public_api/api/__init__.py +0 -0
  160. {render-1.1.0 → render-1.3.0}/render/public_api/api/audit_logs/__init__.py +0 -0
  161. {render-1.1.0 → render-1.3.0}/render/public_api/api/audit_logs/list_organization_audit_logs.py +0 -0
  162. {render-1.1.0 → render-1.3.0}/render/public_api/api/audit_logs/list_owner_audit_logs.py +0 -0
  163. {render-1.1.0 → render-1.3.0}/render/public_api/api/blueprints/__init__.py +0 -0
  164. {render-1.1.0 → render-1.3.0}/render/public_api/api/blueprints/disconnect_blueprint.py +0 -0
  165. {render-1.1.0 → render-1.3.0}/render/public_api/api/blueprints/list_blueprints.py +0 -0
  166. {render-1.1.0 → render-1.3.0}/render/public_api/api/blueprints/retrieve_blueprint.py +0 -0
  167. {render-1.1.0 → render-1.3.0}/render/public_api/api/blueprints/update_blueprint.py +0 -0
  168. {render-1.1.0 → render-1.3.0}/render/public_api/api/blueprints/validate_blueprint.py +0 -0
  169. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/__init__.py +0 -0
  170. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/add_or_update_build_source_secret_file.py +0 -0
  171. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/create_build_source.py +0 -0
  172. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/delete_build_source.py +0 -0
  173. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/delete_build_source_env_var.py +0 -0
  174. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/delete_build_source_secret_file.py +0 -0
  175. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/get_build_source.py +0 -0
  176. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/get_env_vars_for_build_source.py +0 -0
  177. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/link_env_group_to_build_source.py +0 -0
  178. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/list_secret_files_for_build_source.py +0 -0
  179. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/retrieve_build_source_env_var.py +0 -0
  180. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/retrieve_build_source_secret_file.py +0 -0
  181. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/trigger_build_source_build.py +0 -0
  182. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/unlink_env_group_from_build_source.py +0 -0
  183. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/update_build_source.py +0 -0
  184. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/update_build_source_env_var.py +0 -0
  185. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/update_env_vars_for_build_source.py +0 -0
  186. {render-1.1.0 → render-1.3.0}/render/public_api/api/build_sources/update_secret_files_for_build_source.py +0 -0
  187. {render-1.1.0 → render-1.3.0}/render/public_api/api/custom_domains/__init__.py +0 -0
  188. {render-1.1.0 → render-1.3.0}/render/public_api/api/custom_domains/create_custom_domain.py +0 -0
  189. {render-1.1.0 → render-1.3.0}/render/public_api/api/custom_domains/delete_custom_domain.py +0 -0
  190. {render-1.1.0 → render-1.3.0}/render/public_api/api/custom_domains/list_custom_domains.py +0 -0
  191. {render-1.1.0 → render-1.3.0}/render/public_api/api/custom_domains/refresh_custom_domain.py +0 -0
  192. {render-1.1.0 → render-1.3.0}/render/public_api/api/custom_domains/retrieve_custom_domain.py +0 -0
  193. {render-1.1.0 → render-1.3.0}/render/public_api/api/dedicated_i_ps/__init__.py +0 -0
  194. {render-1.1.0 → render-1.3.0}/render/public_api/api/dedicated_i_ps/create_dedicated_ip.py +0 -0
  195. {render-1.1.0 → render-1.3.0}/render/public_api/api/dedicated_i_ps/delete_dedicated_ip.py +0 -0
  196. {render-1.1.0 → render-1.3.0}/render/public_api/api/dedicated_i_ps/list_dedicated_ips.py +0 -0
  197. {render-1.1.0 → render-1.3.0}/render/public_api/api/dedicated_i_ps/retrieve_dedicated_ip.py +0 -0
  198. {render-1.1.0 → render-1.3.0}/render/public_api/api/dedicated_i_ps/update_dedicated_ip.py +0 -0
  199. {render-1.1.0 → render-1.3.0}/render/public_api/api/deploys/__init__.py +0 -0
  200. {render-1.1.0 → render-1.3.0}/render/public_api/api/deploys/cancel_deploy.py +0 -0
  201. {render-1.1.0 → render-1.3.0}/render/public_api/api/deploys/create_deploy.py +0 -0
  202. {render-1.1.0 → render-1.3.0}/render/public_api/api/deploys/list_deploys.py +0 -0
  203. {render-1.1.0 → render-1.3.0}/render/public_api/api/deploys/retrieve_deploy.py +0 -0
  204. {render-1.1.0 → render-1.3.0}/render/public_api/api/deploys/rollback_deploy.py +0 -0
  205. {render-1.1.0 → render-1.3.0}/render/public_api/api/disks/__init__.py +0 -0
  206. {render-1.1.0 → render-1.3.0}/render/public_api/api/disks/add_disk.py +0 -0
  207. {render-1.1.0 → render-1.3.0}/render/public_api/api/disks/delete_disk.py +0 -0
  208. {render-1.1.0 → render-1.3.0}/render/public_api/api/disks/list_disks.py +0 -0
  209. {render-1.1.0 → render-1.3.0}/render/public_api/api/disks/list_snapshots.py +0 -0
  210. {render-1.1.0 → render-1.3.0}/render/public_api/api/disks/restore_snapshot.py +0 -0
  211. {render-1.1.0 → render-1.3.0}/render/public_api/api/disks/retrieve_disk.py +0 -0
  212. {render-1.1.0 → render-1.3.0}/render/public_api/api/disks/update_disk.py +0 -0
  213. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/__init__.py +0 -0
  214. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/create_env_group.py +0 -0
  215. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/delete_env_group.py +0 -0
  216. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/delete_env_group_env_var.py +0 -0
  217. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/delete_env_group_secret_file.py +0 -0
  218. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/link_service_to_env_group.py +0 -0
  219. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/list_env_groups.py +0 -0
  220. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/retrieve_env_group.py +0 -0
  221. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/retrieve_env_group_env_var.py +0 -0
  222. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/retrieve_env_group_secret_file.py +0 -0
  223. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/unlink_service_from_env_group.py +0 -0
  224. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/update_env_group.py +0 -0
  225. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/update_env_group_env_var.py +0 -0
  226. {render-1.1.0 → render-1.3.0}/render/public_api/api/environment_groups/update_env_group_secret_file.py +0 -0
  227. {render-1.1.0 → render-1.3.0}/render/public_api/api/events/__init__.py +0 -0
  228. {render-1.1.0 → render-1.3.0}/render/public_api/api/events/retrieve_event.py +0 -0
  229. {render-1.1.0 → render-1.3.0}/render/public_api/api/key_value/__init__.py +0 -0
  230. {render-1.1.0 → render-1.3.0}/render/public_api/api/key_value/create_key_value.py +0 -0
  231. {render-1.1.0 → render-1.3.0}/render/public_api/api/key_value/delete_key_value.py +0 -0
  232. {render-1.1.0 → render-1.3.0}/render/public_api/api/key_value/list_key_value.py +0 -0
  233. {render-1.1.0 → render-1.3.0}/render/public_api/api/key_value/resume_key_value.py +0 -0
  234. {render-1.1.0 → render-1.3.0}/render/public_api/api/key_value/retrieve_key_value.py +0 -0
  235. {render-1.1.0 → render-1.3.0}/render/public_api/api/key_value/retrieve_key_value_connection_info.py +0 -0
  236. {render-1.1.0 → render-1.3.0}/render/public_api/api/key_value/suspend_key_value.py +0 -0
  237. {render-1.1.0 → render-1.3.0}/render/public_api/api/key_value/update_key_value.py +0 -0
  238. {render-1.1.0 → render-1.3.0}/render/public_api/api/logs/__init__.py +0 -0
  239. {render-1.1.0 → render-1.3.0}/render/public_api/api/logs/delete_owner_log_stream.py +0 -0
  240. {render-1.1.0 → render-1.3.0}/render/public_api/api/logs/delete_resource_log_stream.py +0 -0
  241. {render-1.1.0 → render-1.3.0}/render/public_api/api/logs/get_owner_log_stream.py +0 -0
  242. {render-1.1.0 → render-1.3.0}/render/public_api/api/logs/get_resource_log_stream.py +0 -0
  243. {render-1.1.0 → render-1.3.0}/render/public_api/api/logs/list_logs.py +0 -0
  244. {render-1.1.0 → render-1.3.0}/render/public_api/api/logs/list_logs_values.py +0 -0
  245. {render-1.1.0 → render-1.3.0}/render/public_api/api/logs/list_resource_log_streams.py +0 -0
  246. {render-1.1.0 → render-1.3.0}/render/public_api/api/logs/subscribe_logs.py +0 -0
  247. {render-1.1.0 → render-1.3.0}/render/public_api/api/logs/update_owner_log_stream.py +0 -0
  248. {render-1.1.0 → render-1.3.0}/render/public_api/api/logs/update_resource_log_stream.py +0 -0
  249. {render-1.1.0 → render-1.3.0}/render/public_api/api/maintenance/__init__.py +0 -0
  250. {render-1.1.0 → render-1.3.0}/render/public_api/api/maintenance/list_maintenance.py +0 -0
  251. {render-1.1.0 → render-1.3.0}/render/public_api/api/maintenance/retrieve_maintenance.py +0 -0
  252. {render-1.1.0 → render-1.3.0}/render/public_api/api/maintenance/trigger_maintenance.py +0 -0
  253. {render-1.1.0 → render-1.3.0}/render/public_api/api/maintenance/update_maintenance.py +0 -0
  254. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/__init__.py +0 -0
  255. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/delete_owner_metrics_stream.py +0 -0
  256. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_active_connections.py +0 -0
  257. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_bandwidth.py +0 -0
  258. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_bandwidth_sources.py +0 -0
  259. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_cpu.py +0 -0
  260. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_cpu_limit.py +0 -0
  261. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_cpu_target.py +0 -0
  262. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_disk_capacity.py +0 -0
  263. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_disk_usage.py +0 -0
  264. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_http_latency.py +0 -0
  265. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_http_requests.py +0 -0
  266. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_instance_count.py +0 -0
  267. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_memory.py +0 -0
  268. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_memory_limit.py +0 -0
  269. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_memory_target.py +0 -0
  270. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_owner_metrics_stream.py +0 -0
  271. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_replication_lag.py +0 -0
  272. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_task_runs_completed.py +0 -0
  273. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/get_task_runs_queued.py +0 -0
  274. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/list_application_filter_values.py +0 -0
  275. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/list_http_filter_values.py +0 -0
  276. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/list_path_filter_values.py +0 -0
  277. {render-1.1.0 → render-1.3.0}/render/public_api/api/metrics/upsert_owner_metrics_stream.py +0 -0
  278. {render-1.1.0 → render-1.3.0}/render/public_api/api/notification_settings/__init__.py +0 -0
  279. {render-1.1.0 → render-1.3.0}/render/public_api/api/notification_settings/list_notification_overrides.py +0 -0
  280. {render-1.1.0 → render-1.3.0}/render/public_api/api/notification_settings/patch_owner_notification_settings.py +0 -0
  281. {render-1.1.0 → render-1.3.0}/render/public_api/api/notification_settings/patch_service_notification_overrides.py +0 -0
  282. {render-1.1.0 → render-1.3.0}/render/public_api/api/notification_settings/retrieve_owner_notification_settings.py +0 -0
  283. {render-1.1.0 → render-1.3.0}/render/public_api/api/notification_settings/retrieve_service_notification_overrides.py +0 -0
  284. {render-1.1.0 → render-1.3.0}/render/public_api/api/object_storage/__init__.py +0 -0
  285. {render-1.1.0 → render-1.3.0}/render/public_api/api/object_storage/delete_object.py +0 -0
  286. {render-1.1.0 → render-1.3.0}/render/public_api/api/object_storage/get_object.py +0 -0
  287. {render-1.1.0 → render-1.3.0}/render/public_api/api/object_storage/list_objects.py +0 -0
  288. {render-1.1.0 → render-1.3.0}/render/public_api/api/object_storage/put_object.py +0 -0
  289. {render-1.1.0 → render-1.3.0}/render/public_api/api/one_off_jobs/__init__.py +0 -0
  290. {render-1.1.0 → render-1.3.0}/render/public_api/api/one_off_jobs/cancel_job.py +0 -0
  291. {render-1.1.0 → render-1.3.0}/render/public_api/api/one_off_jobs/list_job.py +0 -0
  292. {render-1.1.0 → render-1.3.0}/render/public_api/api/one_off_jobs/post_job.py +0 -0
  293. {render-1.1.0 → render-1.3.0}/render/public_api/api/one_off_jobs/retrieve_job.py +0 -0
  294. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/__init__.py +0 -0
  295. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/create_postgres.py +0 -0
  296. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/create_postgres_export.py +0 -0
  297. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/create_postgres_user.py +0 -0
  298. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/delete_postgres.py +0 -0
  299. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/delete_postgres_user.py +0 -0
  300. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/failover_postgres.py +0 -0
  301. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/list_available_postgres_parameter_overrides.py +0 -0
  302. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/list_postgres.py +0 -0
  303. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/list_postgres_export.py +0 -0
  304. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/list_postgres_parameter_overrides.py +0 -0
  305. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/list_postgres_processes.py +0 -0
  306. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/list_postgres_sizes.py +0 -0
  307. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/list_postgres_table_scans.py +0 -0
  308. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/list_postgres_top_queries.py +0 -0
  309. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/list_postgres_users.py +0 -0
  310. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/promote_postgres.py +0 -0
  311. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/recover_postgres.py +0 -0
  312. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/restart_postgres.py +0 -0
  313. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/resume_postgres.py +0 -0
  314. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/retrieve_postgres.py +0 -0
  315. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/retrieve_postgres_connection_info.py +0 -0
  316. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/retrieve_postgres_recovery_info.py +0 -0
  317. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/setup_postgres_replication.py +0 -0
  318. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/suspend_postgres.py +0 -0
  319. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/update_postgres.py +0 -0
  320. {render-1.1.0 → render-1.3.0}/render/public_api/api/postgres/update_postgres_parameter_overrides.py +0 -0
  321. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/__init__.py +0 -0
  322. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/add_resources_to_environment.py +0 -0
  323. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/create_environment.py +0 -0
  324. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/create_project.py +0 -0
  325. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/delete_environment.py +0 -0
  326. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/delete_project.py +0 -0
  327. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/list_environments.py +0 -0
  328. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/list_projects.py +0 -0
  329. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/remove_resources_from_environment.py +0 -0
  330. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/retrieve_environment.py +0 -0
  331. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/retrieve_project.py +0 -0
  332. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/update_environment.py +0 -0
  333. {render-1.1.0 → render-1.3.0}/render/public_api/api/projects_environments/update_project.py +0 -0
  334. {render-1.1.0 → render-1.3.0}/render/public_api/api/redis_deprecated/__init__.py +0 -0
  335. {render-1.1.0 → render-1.3.0}/render/public_api/api/redis_deprecated/create_redis.py +0 -0
  336. {render-1.1.0 → render-1.3.0}/render/public_api/api/redis_deprecated/delete_redis.py +0 -0
  337. {render-1.1.0 → render-1.3.0}/render/public_api/api/redis_deprecated/list_redis.py +0 -0
  338. {render-1.1.0 → render-1.3.0}/render/public_api/api/redis_deprecated/resume_redis.py +0 -0
  339. {render-1.1.0 → render-1.3.0}/render/public_api/api/redis_deprecated/retrieve_redis.py +0 -0
  340. {render-1.1.0 → render-1.3.0}/render/public_api/api/redis_deprecated/retrieve_redis_connection_info.py +0 -0
  341. {render-1.1.0 → render-1.3.0}/render/public_api/api/redis_deprecated/suspend_redis.py +0 -0
  342. {render-1.1.0 → render-1.3.0}/render/public_api/api/redis_deprecated/update_redis.py +0 -0
  343. {render-1.1.0 → render-1.3.0}/render/public_api/api/registry_credentials/__init__.py +0 -0
  344. {render-1.1.0 → render-1.3.0}/render/public_api/api/registry_credentials/create_registry_credential.py +0 -0
  345. {render-1.1.0 → render-1.3.0}/render/public_api/api/registry_credentials/delete_registry_credential.py +0 -0
  346. {render-1.1.0 → render-1.3.0}/render/public_api/api/registry_credentials/list_registry_credentials.py +0 -0
  347. {render-1.1.0 → render-1.3.0}/render/public_api/api/registry_credentials/retrieve_registry_credential.py +0 -0
  348. {render-1.1.0 → render-1.3.0}/render/public_api/api/registry_credentials/update_registry_credential.py +0 -0
  349. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/__init__.py +0 -0
  350. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/connect_sandbox_files.py +0 -0
  351. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/connect_sandbox_run.py +0 -0
  352. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/delete_sandbox_snapshot.py +0 -0
  353. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/list_sandbox_executions.py +0 -0
  354. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/list_sandbox_files.py +0 -0
  355. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/list_sandbox_groups.py +0 -0
  356. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/list_sandbox_snapshots.py +0 -0
  357. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/list_sandboxes.py +0 -0
  358. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/retrieve_sandbox.py +0 -0
  359. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/retrieve_sandbox_execution.py +0 -0
  360. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/retrieve_sandbox_snapshot.py +0 -0
  361. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/stream_sandbox_logs.py +0 -0
  362. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/terminate_sandbox.py +0 -0
  363. {render-1.1.0 → render-1.3.0}/render/public_api/api/sandboxes/update_sandbox_exec.py +0 -0
  364. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/__init__.py +0 -0
  365. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/add_or_update_secret_file.py +0 -0
  366. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/autoscale_service.py +0 -0
  367. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/create_ephemeral_shell.py +0 -0
  368. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/create_service.py +0 -0
  369. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/delete_autoscaling_config.py +0 -0
  370. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/delete_env_var.py +0 -0
  371. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/delete_secret_file.py +0 -0
  372. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/delete_service.py +0 -0
  373. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/get_env_vars_for_service.py +0 -0
  374. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/list_events.py +0 -0
  375. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/list_instances.py +0 -0
  376. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/list_secret_files_for_service.py +0 -0
  377. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/list_services.py +0 -0
  378. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/preview_service.py +0 -0
  379. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/purge_cache.py +0 -0
  380. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/restart_service.py +0 -0
  381. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/resume_service.py +0 -0
  382. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/retrieve_env_var.py +0 -0
  383. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/retrieve_secret_file.py +0 -0
  384. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/retrieve_service.py +0 -0
  385. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/retrieve_service_outbound_ips.py +0 -0
  386. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/scale_service.py +0 -0
  387. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/suspend_service.py +0 -0
  388. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/update_env_var.py +0 -0
  389. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/update_env_vars_for_service.py +0 -0
  390. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/update_secret_files_for_service.py +0 -0
  391. {render-1.1.0 → render-1.3.0}/render/public_api/api/services/update_service.py +0 -0
  392. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_cron_jobs/__init__.py +0 -0
  393. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_cron_jobs/cancel_cron_job_run.py +0 -0
  394. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_cron_jobs/run_cron_job.py +0 -0
  395. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_headers/__init__.py +0 -0
  396. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_headers/add_headers.py +0 -0
  397. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_headers/delete_header.py +0 -0
  398. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_headers/list_headers.py +0 -0
  399. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_headers/update_headers.py +0 -0
  400. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_routes/__init__.py +0 -0
  401. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_routes/add_route.py +0 -0
  402. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_routes/delete_route.py +0 -0
  403. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_routes/list_routes.py +0 -0
  404. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_routes/patch_route.py +0 -0
  405. {render-1.1.0 → render-1.3.0}/render/public_api/api/services_routes/put_routes.py +0 -0
  406. {render-1.1.0 → render-1.3.0}/render/public_api/api/users/__init__.py +0 -0
  407. {render-1.1.0 → render-1.3.0}/render/public_api/api/users/get_user.py +0 -0
  408. {render-1.1.0 → render-1.3.0}/render/public_api/api/webhooks/__init__.py +0 -0
  409. {render-1.1.0 → render-1.3.0}/render/public_api/api/webhooks/create_webhook.py +0 -0
  410. {render-1.1.0 → render-1.3.0}/render/public_api/api/webhooks/delete_webhook.py +0 -0
  411. {render-1.1.0 → render-1.3.0}/render/public_api/api/webhooks/list_webhook_events.py +0 -0
  412. {render-1.1.0 → render-1.3.0}/render/public_api/api/webhooks/list_webhooks.py +0 -0
  413. {render-1.1.0 → render-1.3.0}/render/public_api/api/webhooks/retrieve_webhook.py +0 -0
  414. {render-1.1.0 → render-1.3.0}/render/public_api/api/webhooks/update_webhook.py +0 -0
  415. {render-1.1.0/render/public_api/api/workflow_tasks → render-1.3.0/render/public_api/api/workflow_flows}/__init__.py +0 -0
  416. {render-1.1.0/render/public_api/api/workflows → render-1.3.0/render/public_api/api/workflow_tasks}/__init__.py +0 -0
  417. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflow_tasks/create_task.py +0 -0
  418. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflow_tasks/get_task.py +0 -0
  419. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflow_tasks/list_tasks.py +0 -0
  420. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflow_tasks/stream_task_runs_events.py +0 -0
  421. {render-1.1.0/render/public_api/api/workspaces → render-1.3.0/render/public_api/api/workflows}/__init__.py +0 -0
  422. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflows/create_workflow.py +0 -0
  423. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflows/create_workflow_version.py +0 -0
  424. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflows/delete_workflow.py +0 -0
  425. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflows/get_workflow.py +0 -0
  426. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflows/get_workflow_version.py +0 -0
  427. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflows/list_workflow_versions.py +0 -0
  428. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflows/list_workflows.py +0 -0
  429. {render-1.1.0 → render-1.3.0}/render/public_api/api/workflows/update_workflow.py +0 -0
  430. {render-1.1.0 → render-1.3.0}/render/public_api/api/workspaces/list_owners.py +0 -0
  431. {render-1.1.0 → render-1.3.0}/render/public_api/api/workspaces/remove_workspace_member.py +0 -0
  432. {render-1.1.0 → render-1.3.0}/render/public_api/api/workspaces/retrieve_owner.py +0 -0
  433. {render-1.1.0 → render-1.3.0}/render/public_api/api/workspaces/retrieve_owner_members.py +0 -0
  434. {render-1.1.0 → render-1.3.0}/render/public_api/api/workspaces/update_workspace_member.py +0 -0
  435. {render-1.1.0 → render-1.3.0}/render/public_api/client.py +0 -0
  436. {render-1.1.0 → render-1.3.0}/render/public_api/errors.py +0 -0
  437. {render-1.1.0 → render-1.3.0}/render/public_api/models/add_headers_response_201.py +0 -0
  438. {render-1.1.0 → render-1.3.0}/render/public_api/models/add_or_update_build_source_secret_file_body.py +0 -0
  439. {render-1.1.0 → render-1.3.0}/render/public_api/models/add_or_update_secret_file_body.py +0 -0
  440. {render-1.1.0 → render-1.3.0}/render/public_api/models/artifact_fetch_failed.py +0 -0
  441. {render-1.1.0 → render-1.3.0}/render/public_api/models/artifact_source_changed.py +0 -0
  442. {render-1.1.0 → render-1.3.0}/render/public_api/models/audit_log.py +0 -0
  443. {render-1.1.0 → render-1.3.0}/render/public_api/models/audit_log_actor.py +0 -0
  444. {render-1.1.0 → render-1.3.0}/render/public_api/models/audit_log_actor_type.py +0 -0
  445. {render-1.1.0 → render-1.3.0}/render/public_api/models/audit_log_metadata.py +0 -0
  446. {render-1.1.0 → render-1.3.0}/render/public_api/models/audit_log_status.py +0 -0
  447. {render-1.1.0 → render-1.3.0}/render/public_api/models/audit_log_with_cursor.py +0 -0
  448. {render-1.1.0 → render-1.3.0}/render/public_api/models/auto_deploy.py +0 -0
  449. {render-1.1.0 → render-1.3.0}/render/public_api/models/auto_deploy_trigger.py +0 -0
  450. {render-1.1.0 → render-1.3.0}/render/public_api/models/autoscaling_config.py +0 -0
  451. {render-1.1.0 → render-1.3.0}/render/public_api/models/autoscaling_config_changed.py +0 -0
  452. {render-1.1.0 → render-1.3.0}/render/public_api/models/autoscaling_criteria.py +0 -0
  453. {render-1.1.0 → render-1.3.0}/render/public_api/models/autoscaling_criteria_percentage.py +0 -0
  454. {render-1.1.0 → render-1.3.0}/render/public_api/models/autoscaling_ended.py +0 -0
  455. {render-1.1.0 → render-1.3.0}/render/public_api/models/autoscaling_started.py +0 -0
  456. {render-1.1.0 → render-1.3.0}/render/public_api/models/background_worker_details.py +0 -0
  457. {render-1.1.0 → render-1.3.0}/render/public_api/models/background_worker_details_patch.py +0 -0
  458. {render-1.1.0 → render-1.3.0}/render/public_api/models/blueprint_with_cursor.py +0 -0
  459. {render-1.1.0 → render-1.3.0}/render/public_api/models/branch_deleted.py +0 -0
  460. {render-1.1.0 → render-1.3.0}/render/public_api/models/build.py +0 -0
  461. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_config.py +0 -0
  462. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_config_update.py +0 -0
  463. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_deploy_end_reason.py +0 -0
  464. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_deploy_end_reason_id.py +0 -0
  465. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_deploy_trigger.py +0 -0
  466. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_ended.py +0 -0
  467. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_filter.py +0 -0
  468. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_plan.py +0 -0
  469. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_run.py +0 -0
  470. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_run_runtime.py +0 -0
  471. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_run_status.py +0 -0
  472. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source.py +0 -0
  473. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_git_region.py +0 -0
  474. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_git_runtime.py +0 -0
  475. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_image.py +0 -0
  476. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_patch_git_region.py +0 -0
  477. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_patch_git_runtime.py +0 -0
  478. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_patch_image.py +0 -0
  479. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_patch_input.py +0 -0
  480. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_post_input.py +0 -0
  481. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_service_link.py +0 -0
  482. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_source_with_cursor.py +0 -0
  483. {render-1.1.0 → render-1.3.0}/render/public_api/models/build_started.py +0 -0
  484. {render-1.1.0 → render-1.3.0}/render/public_api/models/cache.py +0 -0
  485. {render-1.1.0 → render-1.3.0}/render/public_api/models/cache_profile.py +0 -0
  486. {render-1.1.0 → render-1.3.0}/render/public_api/models/cidr_block_and_description.py +0 -0
  487. {render-1.1.0 → render-1.3.0}/render/public_api/models/commit_ignored.py +0 -0
  488. {render-1.1.0 → render-1.3.0}/render/public_api/models/commit_ref.py +0 -0
  489. {render-1.1.0 → render-1.3.0}/render/public_api/models/connect_sandbox_files_operation.py +0 -0
  490. {render-1.1.0 → render-1.3.0}/render/public_api/models/connect_sandbox_run_operation.py +0 -0
  491. {render-1.1.0 → render-1.3.0}/render/public_api/models/create_custom_domain_body.py +0 -0
  492. {render-1.1.0 → render-1.3.0}/render/public_api/models/create_deploy_body_clear_cache.py +0 -0
  493. {render-1.1.0 → render-1.3.0}/render/public_api/models/create_ephemeral_shell_body.py +0 -0
  494. {render-1.1.0 → render-1.3.0}/render/public_api/models/create_ephemeral_shell_response_201.py +0 -0
  495. {render-1.1.0 → render-1.3.0}/render/public_api/models/create_registry_credential_body.py +0 -0
  496. {render-1.1.0 → render-1.3.0}/render/public_api/models/create_version.py +0 -0
  497. {render-1.1.0 → render-1.3.0}/render/public_api/models/credential_create_input.py +0 -0
  498. {render-1.1.0 → render-1.3.0}/render/public_api/models/cron_job_details.py +0 -0
  499. {render-1.1.0 → render-1.3.0}/render/public_api/models/cron_job_details_patch.py +0 -0
  500. {render-1.1.0 → render-1.3.0}/render/public_api/models/cron_job_run_ended.py +0 -0
  501. {render-1.1.0 → render-1.3.0}/render/public_api/models/cron_job_run_started.py +0 -0
  502. {render-1.1.0 → render-1.3.0}/render/public_api/models/cron_job_run_status.py +0 -0
  503. {render-1.1.0 → render-1.3.0}/render/public_api/models/custom_domain.py +0 -0
  504. {render-1.1.0 → render-1.3.0}/render/public_api/models/custom_domain_domain_type.py +0 -0
  505. {render-1.1.0 → render-1.3.0}/render/public_api/models/custom_domain_server.py +0 -0
  506. {render-1.1.0 → render-1.3.0}/render/public_api/models/custom_domain_verification_status.py +0 -0
  507. {render-1.1.0 → render-1.3.0}/render/public_api/models/custom_domain_with_cursor.py +0 -0
  508. {render-1.1.0 → render-1.3.0}/render/public_api/models/database_role.py +0 -0
  509. {render-1.1.0 → render-1.3.0}/render/public_api/models/database_status.py +0 -0
  510. {render-1.1.0 → render-1.3.0}/render/public_api/models/dedicated_ip.py +0 -0
  511. {render-1.1.0 → render-1.3.0}/render/public_api/models/dedicated_ip_status.py +0 -0
  512. {render-1.1.0 → render-1.3.0}/render/public_api/models/dedicated_ippatch.py +0 -0
  513. {render-1.1.0 → render-1.3.0}/render/public_api/models/dedicated_ippost.py +0 -0
  514. {render-1.1.0 → render-1.3.0}/render/public_api/models/deploy_commit.py +0 -0
  515. {render-1.1.0 → render-1.3.0}/render/public_api/models/deploy_ended.py +0 -0
  516. {render-1.1.0 → render-1.3.0}/render/public_api/models/deploy_image.py +0 -0
  517. {render-1.1.0 → render-1.3.0}/render/public_api/models/deploy_mode.py +0 -0
  518. {render-1.1.0 → render-1.3.0}/render/public_api/models/deploy_started.py +0 -0
  519. {render-1.1.0 → render-1.3.0}/render/public_api/models/deploy_status.py +0 -0
  520. {render-1.1.0 → render-1.3.0}/render/public_api/models/deploy_trigger.py +0 -0
  521. {render-1.1.0 → render-1.3.0}/render/public_api/models/deploy_with_cursor.py +0 -0
  522. {render-1.1.0 → render-1.3.0}/render/public_api/models/disk.py +0 -0
  523. {render-1.1.0 → render-1.3.0}/render/public_api/models/disk_created.py +0 -0
  524. {render-1.1.0 → render-1.3.0}/render/public_api/models/disk_deleted.py +0 -0
  525. {render-1.1.0 → render-1.3.0}/render/public_api/models/disk_details.py +0 -0
  526. {render-1.1.0 → render-1.3.0}/render/public_api/models/disk_patch.py +0 -0
  527. {render-1.1.0 → render-1.3.0}/render/public_api/models/disk_post.py +0 -0
  528. {render-1.1.0 → render-1.3.0}/render/public_api/models/disk_snapshot.py +0 -0
  529. {render-1.1.0 → render-1.3.0}/render/public_api/models/disk_updated.py +0 -0
  530. {render-1.1.0 → render-1.3.0}/render/public_api/models/disk_with_cursor.py +0 -0
  531. {render-1.1.0 → render-1.3.0}/render/public_api/models/docker_details.py +0 -0
  532. {render-1.1.0 → render-1.3.0}/render/public_api/models/docker_details_patch.py +0 -0
  533. {render-1.1.0 → render-1.3.0}/render/public_api/models/docker_details_post.py +0 -0
  534. {render-1.1.0 → render-1.3.0}/render/public_api/models/edge_cache_disabled.py +0 -0
  535. {render-1.1.0 → render-1.3.0}/render/public_api/models/edge_cache_enabled.py +0 -0
  536. {render-1.1.0 → render-1.3.0}/render/public_api/models/edge_cache_purged.py +0 -0
  537. {render-1.1.0 → render-1.3.0}/render/public_api/models/edge_cache_trigger.py +0 -0
  538. {render-1.1.0 → render-1.3.0}/render/public_api/models/env_group.py +0 -0
  539. {render-1.1.0 → render-1.3.0}/render/public_api/models/env_group_link.py +0 -0
  540. {render-1.1.0 → render-1.3.0}/render/public_api/models/env_group_meta.py +0 -0
  541. {render-1.1.0 → render-1.3.0}/render/public_api/models/env_group_patch_input.py +0 -0
  542. {render-1.1.0 → render-1.3.0}/render/public_api/models/env_group_post_input.py +0 -0
  543. {render-1.1.0 → render-1.3.0}/render/public_api/models/env_var.py +0 -0
  544. {render-1.1.0 → render-1.3.0}/render/public_api/models/env_var_generate_value.py +0 -0
  545. {render-1.1.0 → render-1.3.0}/render/public_api/models/env_var_key_generate_value.py +0 -0
  546. {render-1.1.0 → render-1.3.0}/render/public_api/models/env_var_key_value.py +0 -0
  547. {render-1.1.0 → render-1.3.0}/render/public_api/models/env_var_value.py +0 -0
  548. {render-1.1.0 → render-1.3.0}/render/public_api/models/env_var_with_cursor.py +0 -0
  549. {render-1.1.0 → render-1.3.0}/render/public_api/models/environment.py +0 -0
  550. {render-1.1.0 → render-1.3.0}/render/public_api/models/environment_patch_input.py +0 -0
  551. {render-1.1.0 → render-1.3.0}/render/public_api/models/environment_post_input.py +0 -0
  552. {render-1.1.0 → render-1.3.0}/render/public_api/models/environment_resources_post_input.py +0 -0
  553. {render-1.1.0 → render-1.3.0}/render/public_api/models/environment_with_cursor.py +0 -0
  554. {render-1.1.0 → render-1.3.0}/render/public_api/models/error.py +0 -0
  555. {render-1.1.0 → render-1.3.0}/render/public_api/models/event.py +0 -0
  556. {render-1.1.0 → render-1.3.0}/render/public_api/models/event_status.py +0 -0
  557. {render-1.1.0 → render-1.3.0}/render/public_api/models/event_type.py +0 -0
  558. {render-1.1.0 → render-1.3.0}/render/public_api/models/execution.py +0 -0
  559. {render-1.1.0 → render-1.3.0}/render/public_api/models/execution_operation.py +0 -0
  560. {render-1.1.0 → render-1.3.0}/render/public_api/models/execution_type.py +0 -0
  561. {render-1.1.0 → render-1.3.0}/render/public_api/models/execution_with_cursor.py +0 -0
  562. {render-1.1.0 → render-1.3.0}/render/public_api/models/failure_reason.py +0 -0
  563. {render-1.1.0 → render-1.3.0}/render/public_api/models/filter_application_values_collection_item.py +0 -0
  564. {render-1.1.0 → render-1.3.0}/render/public_api/models/filter_application_values_collection_item_filter.py +0 -0
  565. {render-1.1.0 → render-1.3.0}/render/public_api/models/filter_http_values_collection_item.py +0 -0
  566. {render-1.1.0 → render-1.3.0}/render/public_api/models/filter_http_values_collection_item_filter.py +0 -0
  567. {render-1.1.0 → render-1.3.0}/render/public_api/models/get_bandwidth_sources_response_200.py +0 -0
  568. {render-1.1.0 → render-1.3.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item.py +0 -0
  569. {render-1.1.0 → render-1.3.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item_labels.py +0 -0
  570. {render-1.1.0 → render-1.3.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item_labels_traffic_source.py +0 -0
  571. {render-1.1.0 → render-1.3.0}/render/public_api/models/get_bandwidth_sources_response_200_data_item_values_item.py +0 -0
  572. {render-1.1.0 → render-1.3.0}/render/public_api/models/get_cpu_aggregation_method.py +0 -0
  573. {render-1.1.0 → render-1.3.0}/render/public_api/models/get_http_requests_aggregate_by.py +0 -0
  574. {render-1.1.0 → render-1.3.0}/render/public_api/models/get_object_output.py +0 -0
  575. {render-1.1.0 → render-1.3.0}/render/public_api/models/get_task_runs_completed_aggregate_by.py +0 -0
  576. {render-1.1.0 → render-1.3.0}/render/public_api/models/get_task_runs_completed_state.py +0 -0
  577. {render-1.1.0 → render-1.3.0}/render/public_api/models/header.py +0 -0
  578. {render-1.1.0 → render-1.3.0}/render/public_api/models/header_input.py +0 -0
  579. {render-1.1.0 → render-1.3.0}/render/public_api/models/header_with_cursor.py +0 -0
  580. {render-1.1.0 → render-1.3.0}/render/public_api/models/image.py +0 -0
  581. {render-1.1.0 → render-1.3.0}/render/public_api/models/image_pull_failed.py +0 -0
  582. {render-1.1.0 → render-1.3.0}/render/public_api/models/initial_deploy_hook_ended.py +0 -0
  583. {render-1.1.0 → render-1.3.0}/render/public_api/models/initial_deploy_hook_started.py +0 -0
  584. {render-1.1.0 → render-1.3.0}/render/public_api/models/instance_count_changed.py +0 -0
  585. {render-1.1.0 → render-1.3.0}/render/public_api/models/instance_type_changed.py +0 -0
  586. {render-1.1.0 → render-1.3.0}/render/public_api/models/internal_routing.py +0 -0
  587. {render-1.1.0 → render-1.3.0}/render/public_api/models/job.py +0 -0
  588. {render-1.1.0 → render-1.3.0}/render/public_api/models/job_run_ended.py +0 -0
  589. {render-1.1.0 → render-1.3.0}/render/public_api/models/job_status.py +0 -0
  590. {render-1.1.0 → render-1.3.0}/render/public_api/models/job_with_cursor.py +0 -0
  591. {render-1.1.0 → render-1.3.0}/render/public_api/models/key_value.py +0 -0
  592. {render-1.1.0 → render-1.3.0}/render/public_api/models/key_value_available.py +0 -0
  593. {render-1.1.0 → render-1.3.0}/render/public_api/models/key_value_config_restart.py +0 -0
  594. {render-1.1.0 → render-1.3.0}/render/public_api/models/key_value_connection_info.py +0 -0
  595. {render-1.1.0 → render-1.3.0}/render/public_api/models/key_value_detail.py +0 -0
  596. {render-1.1.0 → render-1.3.0}/render/public_api/models/key_value_options.py +0 -0
  597. {render-1.1.0 → render-1.3.0}/render/public_api/models/key_value_patch_input.py +0 -0
  598. {render-1.1.0 → render-1.3.0}/render/public_api/models/key_value_plan.py +0 -0
  599. {render-1.1.0 → render-1.3.0}/render/public_api/models/key_value_post_input.py +0 -0
  600. {render-1.1.0 → render-1.3.0}/render/public_api/models/key_value_unhealthy.py +0 -0
  601. {render-1.1.0 → render-1.3.0}/render/public_api/models/key_value_with_cursor.py +0 -0
  602. {render-1.1.0 → render-1.3.0}/render/public_api/models/label.py +0 -0
  603. {render-1.1.0 → render-1.3.0}/render/public_api/models/list_custom_domains_domain_type.py +0 -0
  604. {render-1.1.0 → render-1.3.0}/render/public_api/models/list_custom_domains_verification_status.py +0 -0
  605. {render-1.1.0 → render-1.3.0}/render/public_api/models/list_logs_response_200.py +0 -0
  606. {render-1.1.0 → render-1.3.0}/render/public_api/models/list_logs_values_label.py +0 -0
  607. {render-1.1.0 → render-1.3.0}/render/public_api/models/list_objects_response.py +0 -0
  608. {render-1.1.0 → render-1.3.0}/render/public_api/models/list_postgres_suspended_item.py +0 -0
  609. {render-1.1.0 → render-1.3.0}/render/public_api/models/list_postgres_users_response_200_item.py +0 -0
  610. {render-1.1.0 → render-1.3.0}/render/public_api/models/list_routes_type_item.py +0 -0
  611. {render-1.1.0 → render-1.3.0}/render/public_api/models/list_services_suspended_item.py +0 -0
  612. {render-1.1.0 → render-1.3.0}/render/public_api/models/log.py +0 -0
  613. {render-1.1.0 → render-1.3.0}/render/public_api/models/log_direction.py +0 -0
  614. {render-1.1.0 → render-1.3.0}/render/public_api/models/log_label.py +0 -0
  615. {render-1.1.0 → render-1.3.0}/render/public_api/models/log_label_name.py +0 -0
  616. {render-1.1.0 → render-1.3.0}/render/public_api/models/log_stream_owner_update.py +0 -0
  617. {render-1.1.0 → render-1.3.0}/render/public_api/models/log_stream_preview_setting.py +0 -0
  618. {render-1.1.0 → render-1.3.0}/render/public_api/models/log_stream_resource_update.py +0 -0
  619. {render-1.1.0 → render-1.3.0}/render/public_api/models/log_stream_setting.py +0 -0
  620. {render-1.1.0 → render-1.3.0}/render/public_api/models/maintenance_ended.py +0 -0
  621. {render-1.1.0 → render-1.3.0}/render/public_api/models/maintenance_mode.py +0 -0
  622. {render-1.1.0 → render-1.3.0}/render/public_api/models/maintenance_mode_enabled.py +0 -0
  623. {render-1.1.0 → render-1.3.0}/render/public_api/models/maintenance_mode_uri_updated.py +0 -0
  624. {render-1.1.0 → render-1.3.0}/render/public_api/models/maintenance_run.py +0 -0
  625. {render-1.1.0 → render-1.3.0}/render/public_api/models/maintenance_run_patch.py +0 -0
  626. {render-1.1.0 → render-1.3.0}/render/public_api/models/maintenance_run_with_resource.py +0 -0
  627. {render-1.1.0 → render-1.3.0}/render/public_api/models/maintenance_started.py +0 -0
  628. {render-1.1.0 → render-1.3.0}/render/public_api/models/maintenance_state.py +0 -0
  629. {render-1.1.0 → render-1.3.0}/render/public_api/models/maintenance_trigger.py +0 -0
  630. {render-1.1.0 → render-1.3.0}/render/public_api/models/maxmemory_policy.py +0 -0
  631. {render-1.1.0 → render-1.3.0}/render/public_api/models/metrics_stream.py +0 -0
  632. {render-1.1.0 → render-1.3.0}/render/public_api/models/metrics_stream_input.py +0 -0
  633. {render-1.1.0 → render-1.3.0}/render/public_api/models/native_environment_details.py +0 -0
  634. {render-1.1.0 → render-1.3.0}/render/public_api/models/native_environment_details_patch.py +0 -0
  635. {render-1.1.0 → render-1.3.0}/render/public_api/models/native_environment_details_post.py +0 -0
  636. {render-1.1.0 → render-1.3.0}/render/public_api/models/notification_override.py +0 -0
  637. {render-1.1.0 → render-1.3.0}/render/public_api/models/notification_override_with_cursor.py +0 -0
  638. {render-1.1.0 → render-1.3.0}/render/public_api/models/notification_service_override.py +0 -0
  639. {render-1.1.0 → render-1.3.0}/render/public_api/models/notification_service_override_patch.py +0 -0
  640. {render-1.1.0 → render-1.3.0}/render/public_api/models/notification_setting.py +0 -0
  641. {render-1.1.0 → render-1.3.0}/render/public_api/models/notification_setting_patch.py +0 -0
  642. {render-1.1.0 → render-1.3.0}/render/public_api/models/notify_override.py +0 -0
  643. {render-1.1.0 → render-1.3.0}/render/public_api/models/notify_preview_override.py +0 -0
  644. {render-1.1.0 → render-1.3.0}/render/public_api/models/notify_setting.py +0 -0
  645. {render-1.1.0 → render-1.3.0}/render/public_api/models/notify_setting_v2.py +0 -0
  646. {render-1.1.0 → render-1.3.0}/render/public_api/models/object_metadata.py +0 -0
  647. {render-1.1.0 → render-1.3.0}/render/public_api/models/object_with_cursor.py +0 -0
  648. {render-1.1.0 → render-1.3.0}/render/public_api/models/oom_killed.py +0 -0
  649. {render-1.1.0 → render-1.3.0}/render/public_api/models/otel_provider_type.py +0 -0
  650. {render-1.1.0 → render-1.3.0}/render/public_api/models/outbound_ips.py +0 -0
  651. {render-1.1.0 → render-1.3.0}/render/public_api/models/outbound_ips_type.py +0 -0
  652. {render-1.1.0 → render-1.3.0}/render/public_api/models/owner.py +0 -0
  653. {render-1.1.0 → render-1.3.0}/render/public_api/models/owner_log_stream_setting.py +0 -0
  654. {render-1.1.0 → render-1.3.0}/render/public_api/models/owner_type.py +0 -0
  655. {render-1.1.0 → render-1.3.0}/render/public_api/models/owner_with_cursor.py +0 -0
  656. {render-1.1.0 → render-1.3.0}/render/public_api/models/paid_plan.py +0 -0
  657. {render-1.1.0 → render-1.3.0}/render/public_api/models/patch_route_response_200.py +0 -0
  658. {render-1.1.0 → render-1.3.0}/render/public_api/models/persistence_mode.py +0 -0
  659. {render-1.1.0 → render-1.3.0}/render/public_api/models/pipeline_minutes_exhausted.py +0 -0
  660. {render-1.1.0 → render-1.3.0}/render/public_api/models/plan.py +0 -0
  661. {render-1.1.0 → render-1.3.0}/render/public_api/models/post_job_body.py +0 -0
  662. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres.py +0 -0
  663. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_available.py +0 -0
  664. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_available_parameter_override.py +0 -0
  665. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_available_parameter_overrides_result.py +0 -0
  666. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_backup_completed.py +0 -0
  667. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_backup_failed.py +0 -0
  668. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_backup_started.py +0 -0
  669. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_cluster_leader_changed.py +0 -0
  670. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_connection_info.py +0 -0
  671. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_connection_pool_changed.py +0 -0
  672. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_connection_pool_enabled_changed.py +0 -0
  673. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_created.py +0 -0
  674. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_detail.py +0 -0
  675. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_detail_suspended.py +0 -0
  676. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_disk_size_changed.py +0 -0
  677. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_export.py +0 -0
  678. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_ha_status_changed.py +0 -0
  679. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_parameter_overrides.py +0 -0
  680. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_parameter_overrides_wrapper.py +0 -0
  681. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_patch_input.py +0 -0
  682. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_pitr_checkpoint_completed.py +0 -0
  683. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_pitr_checkpoint_failed.py +0 -0
  684. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_pitr_checkpoint_started.py +0 -0
  685. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_plans.py +0 -0
  686. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_post_input.py +0 -0
  687. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_process.py +0 -0
  688. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_processes_result.py +0 -0
  689. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_put_parameter_overrides_result.py +0 -0
  690. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_query_statistic.py +0 -0
  691. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_read_replica_stale.py +0 -0
  692. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_read_replicas_changed.py +0 -0
  693. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_replication_setup_input.py +0 -0
  694. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_restarted.py +0 -0
  695. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_size.py +0 -0
  696. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_sizes_result.py +0 -0
  697. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_suspended.py +0 -0
  698. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_table_scan.py +0 -0
  699. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_table_scans_result.py +0 -0
  700. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_top_queries_result.py +0 -0
  701. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_unavailable.py +0 -0
  702. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_upgrade_failed.py +0 -0
  703. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_upgrade_started.py +0 -0
  704. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_upgrade_succeeded.py +0 -0
  705. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_version.py +0 -0
  706. {render-1.1.0 → render-1.3.0}/render/public_api/models/postgres_with_cursor.py +0 -0
  707. {render-1.1.0 → render-1.3.0}/render/public_api/models/pre_deploy_ended.py +0 -0
  708. {render-1.1.0 → render-1.3.0}/render/public_api/models/pre_deploy_started.py +0 -0
  709. {render-1.1.0 → render-1.3.0}/render/public_api/models/preview_input.py +0 -0
  710. {render-1.1.0 → render-1.3.0}/render/public_api/models/previews.py +0 -0
  711. {render-1.1.0 → render-1.3.0}/render/public_api/models/previews_generation.py +0 -0
  712. {render-1.1.0 → render-1.3.0}/render/public_api/models/private_service_details.py +0 -0
  713. {render-1.1.0 → render-1.3.0}/render/public_api/models/private_service_details_patch.py +0 -0
  714. {render-1.1.0 → render-1.3.0}/render/public_api/models/project.py +0 -0
  715. {render-1.1.0 → render-1.3.0}/render/public_api/models/project_patch_input.py +0 -0
  716. {render-1.1.0 → render-1.3.0}/render/public_api/models/project_post_environment_input.py +0 -0
  717. {render-1.1.0 → render-1.3.0}/render/public_api/models/project_post_input.py +0 -0
  718. {render-1.1.0 → render-1.3.0}/render/public_api/models/project_with_cursor.py +0 -0
  719. {render-1.1.0 → render-1.3.0}/render/public_api/models/protected_status.py +0 -0
  720. {render-1.1.0 → render-1.3.0}/render/public_api/models/pull_request_previews_enabled.py +0 -0
  721. {render-1.1.0 → render-1.3.0}/render/public_api/models/put_object_input.py +0 -0
  722. {render-1.1.0 → render-1.3.0}/render/public_api/models/put_object_output.py +0 -0
  723. {render-1.1.0 → render-1.3.0}/render/public_api/models/read_replica.py +0 -0
  724. {render-1.1.0 → render-1.3.0}/render/public_api/models/read_replica_input.py +0 -0
  725. {render-1.1.0 → render-1.3.0}/render/public_api/models/recovery_info.py +0 -0
  726. {render-1.1.0 → render-1.3.0}/render/public_api/models/recovery_info_recovery_status.py +0 -0
  727. {render-1.1.0 → render-1.3.0}/render/public_api/models/recovery_input.py +0 -0
  728. {render-1.1.0 → render-1.3.0}/render/public_api/models/redis.py +0 -0
  729. {render-1.1.0 → render-1.3.0}/render/public_api/models/redis_connection_info.py +0 -0
  730. {render-1.1.0 → render-1.3.0}/render/public_api/models/redis_detail.py +0 -0
  731. {render-1.1.0 → render-1.3.0}/render/public_api/models/redis_options.py +0 -0
  732. {render-1.1.0 → render-1.3.0}/render/public_api/models/redis_patch_input.py +0 -0
  733. {render-1.1.0 → render-1.3.0}/render/public_api/models/redis_plan.py +0 -0
  734. {render-1.1.0 → render-1.3.0}/render/public_api/models/redis_post_input.py +0 -0
  735. {render-1.1.0 → render-1.3.0}/render/public_api/models/redis_with_cursor.py +0 -0
  736. {render-1.1.0 → render-1.3.0}/render/public_api/models/region.py +0 -0
  737. {render-1.1.0 → render-1.3.0}/render/public_api/models/registry_credential.py +0 -0
  738. {render-1.1.0 → render-1.3.0}/render/public_api/models/registry_credential_registry.py +0 -0
  739. {render-1.1.0 → render-1.3.0}/render/public_api/models/registry_credential_summary.py +0 -0
  740. {render-1.1.0 → render-1.3.0}/render/public_api/models/render_subdomain_policy.py +0 -0
  741. {render-1.1.0 → render-1.3.0}/render/public_api/models/resource.py +0 -0
  742. {render-1.1.0 → render-1.3.0}/render/public_api/models/resource_log_stream_setting.py +0 -0
  743. {render-1.1.0 → render-1.3.0}/render/public_api/models/resource_ref.py +0 -0
  744. {render-1.1.0 → render-1.3.0}/render/public_api/models/resource_ref_type.py +0 -0
  745. {render-1.1.0 → render-1.3.0}/render/public_api/models/rollback_deploy_body.py +0 -0
  746. {render-1.1.0 → render-1.3.0}/render/public_api/models/route.py +0 -0
  747. {render-1.1.0 → render-1.3.0}/render/public_api/models/route_patch.py +0 -0
  748. {render-1.1.0 → render-1.3.0}/render/public_api/models/route_post.py +0 -0
  749. {render-1.1.0 → render-1.3.0}/render/public_api/models/route_put.py +0 -0
  750. {render-1.1.0 → render-1.3.0}/render/public_api/models/route_type.py +0 -0
  751. {render-1.1.0 → render-1.3.0}/render/public_api/models/route_with_cursor.py +0 -0
  752. {render-1.1.0 → render-1.3.0}/render/public_api/models/runtime.py +0 -0
  753. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_connect_request.py +0 -0
  754. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_connect_response.py +0 -0
  755. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_directory_listing.py +0 -0
  756. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_exec_update_request.py +0 -0
  757. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_exec_update_response.py +0 -0
  758. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_file_entry.py +0 -0
  759. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_file_entry_type.py +0 -0
  760. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_group.py +0 -0
  761. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_group_with_cursor.py +0 -0
  762. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_plan.py +0 -0
  763. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_post_env.py +0 -0
  764. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_snapshot_kind.py +0 -0
  765. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_snapshot_status.py +0 -0
  766. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_snapshot_with_cursor.py +0 -0
  767. {render-1.1.0 → render-1.3.0}/render/public_api/models/sandbox_with_cursor.py +0 -0
  768. {render-1.1.0 → render-1.3.0}/render/public_api/models/scale_service_body.py +0 -0
  769. {render-1.1.0 → render-1.3.0}/render/public_api/models/schemas_build_filter.py +0 -0
  770. {render-1.1.0 → render-1.3.0}/render/public_api/models/schemas_image.py +0 -0
  771. {render-1.1.0 → render-1.3.0}/render/public_api/models/schemas_user.py +0 -0
  772. {render-1.1.0 → render-1.3.0}/render/public_api/models/secret_file.py +0 -0
  773. {render-1.1.0 → render-1.3.0}/render/public_api/models/secret_file_input.py +0 -0
  774. {render-1.1.0 → render-1.3.0}/render/public_api/models/secret_file_with_cursor.py +0 -0
  775. {render-1.1.0 → render-1.3.0}/render/public_api/models/server_available.py +0 -0
  776. {render-1.1.0 → render-1.3.0}/render/public_api/models/server_failed.py +0 -0
  777. {render-1.1.0 → render-1.3.0}/render/public_api/models/server_hardware_failure.py +0 -0
  778. {render-1.1.0 → render-1.3.0}/render/public_api/models/server_port.py +0 -0
  779. {render-1.1.0 → render-1.3.0}/render/public_api/models/server_port_protocol.py +0 -0
  780. {render-1.1.0 → render-1.3.0}/render/public_api/models/server_restarted.py +0 -0
  781. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_and_deploy.py +0 -0
  782. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_disk.py +0 -0
  783. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_disk_usage_high.py +0 -0
  784. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_disk_usage_recovered.py +0 -0
  785. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_env.py +0 -0
  786. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_event.py +0 -0
  787. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_event_type.py +0 -0
  788. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_instance.py +0 -0
  789. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_resumed.py +0 -0
  790. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_runtime.py +0 -0
  791. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_service_suspended_state.py +0 -0
  792. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_suspended.py +0 -0
  793. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_type.py +0 -0
  794. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_type_short.py +0 -0
  795. {render-1.1.0 → render-1.3.0}/render/public_api/models/service_with_cursor.py +0 -0
  796. {render-1.1.0 → render-1.3.0}/render/public_api/models/setup_postgres_replication_response_201.py +0 -0
  797. {render-1.1.0 → render-1.3.0}/render/public_api/models/snapshot_restore_post.py +0 -0
  798. {render-1.1.0 → render-1.3.0}/render/public_api/models/static_site_details.py +0 -0
  799. {render-1.1.0 → render-1.3.0}/render/public_api/models/static_site_details_patch.py +0 -0
  800. {render-1.1.0 → render-1.3.0}/render/public_api/models/static_site_details_post.py +0 -0
  801. {render-1.1.0 → render-1.3.0}/render/public_api/models/status.py +0 -0
  802. {render-1.1.0 → render-1.3.0}/render/public_api/models/stream_sandbox_logs_accept.py +0 -0
  803. {render-1.1.0 → render-1.3.0}/render/public_api/models/stream_task_runs_events_accept.py +0 -0
  804. {render-1.1.0 → render-1.3.0}/render/public_api/models/suspender_added.py +0 -0
  805. {render-1.1.0 → render-1.3.0}/render/public_api/models/suspender_removed.py +0 -0
  806. {render-1.1.0 → render-1.3.0}/render/public_api/models/suspender_type.py +0 -0
  807. {render-1.1.0 → render-1.3.0}/render/public_api/models/sync.py +0 -0
  808. {render-1.1.0 → render-1.3.0}/render/public_api/models/sync_state.py +0 -0
  809. {render-1.1.0 → render-1.3.0}/render/public_api/models/sync_with_cursor.py +0 -0
  810. {render-1.1.0 → render-1.3.0}/render/public_api/models/task.py +0 -0
  811. {render-1.1.0 → render-1.3.0}/render/public_api/models/task_attempt.py +0 -0
  812. {render-1.1.0 → render-1.3.0}/render/public_api/models/task_attempt_details.py +0 -0
  813. {render-1.1.0 → render-1.3.0}/render/public_api/models/task_data_type_1.py +0 -0
  814. {render-1.1.0 → render-1.3.0}/render/public_api/models/task_run.py +0 -0
  815. {render-1.1.0 → render-1.3.0}/render/public_api/models/task_run_details.py +0 -0
  816. {render-1.1.0 → render-1.3.0}/render/public_api/models/task_run_status.py +0 -0
  817. {render-1.1.0 → render-1.3.0}/render/public_api/models/task_run_with_cursor.py +0 -0
  818. {render-1.1.0 → render-1.3.0}/render/public_api/models/task_with_cursor.py +0 -0
  819. {render-1.1.0 → render-1.3.0}/render/public_api/models/team_member.py +0 -0
  820. {render-1.1.0 → render-1.3.0}/render/public_api/models/team_member_role.py +0 -0
  821. {render-1.1.0 → render-1.3.0}/render/public_api/models/team_member_status.py +0 -0
  822. {render-1.1.0 → render-1.3.0}/render/public_api/models/time_series.py +0 -0
  823. {render-1.1.0 → render-1.3.0}/render/public_api/models/time_series_value.py +0 -0
  824. {render-1.1.0 → render-1.3.0}/render/public_api/models/update_env_group_secret_file_body.py +0 -0
  825. {render-1.1.0 → render-1.3.0}/render/public_api/models/update_registry_credential_body.py +0 -0
  826. {render-1.1.0 → render-1.3.0}/render/public_api/models/update_workspace_member_body.py +0 -0
  827. {render-1.1.0 → render-1.3.0}/render/public_api/models/user.py +0 -0
  828. {render-1.1.0 → render-1.3.0}/render/public_api/models/validate_blueprint_request.py +0 -0
  829. {render-1.1.0 → render-1.3.0}/render/public_api/models/validate_blueprint_response.py +0 -0
  830. {render-1.1.0 → render-1.3.0}/render/public_api/models/validation_error.py +0 -0
  831. {render-1.1.0 → render-1.3.0}/render/public_api/models/validation_plan_summary.py +0 -0
  832. {render-1.1.0 → render-1.3.0}/render/public_api/models/web_service_details.py +0 -0
  833. {render-1.1.0 → render-1.3.0}/render/public_api/models/web_service_details_patch.py +0 -0
  834. {render-1.1.0 → render-1.3.0}/render/public_api/models/webhook.py +0 -0
  835. {render-1.1.0 → render-1.3.0}/render/public_api/models/webhook_event.py +0 -0
  836. {render-1.1.0 → render-1.3.0}/render/public_api/models/webhook_event_with_cursor.py +0 -0
  837. {render-1.1.0 → render-1.3.0}/render/public_api/models/webhook_patch_input.py +0 -0
  838. {render-1.1.0 → render-1.3.0}/render/public_api/models/webhook_post_input.py +0 -0
  839. {render-1.1.0 → render-1.3.0}/render/public_api/models/webhook_with_cursor.py +0 -0
  840. {render-1.1.0 → render-1.3.0}/render/public_api/models/workflow.py +0 -0
  841. {render-1.1.0 → render-1.3.0}/render/public_api/models/workflow_create.py +0 -0
  842. {render-1.1.0 → render-1.3.0}/render/public_api/models/workflow_update.py +0 -0
  843. {render-1.1.0 → render-1.3.0}/render/public_api/models/workflow_version.py +0 -0
  844. {render-1.1.0 → render-1.3.0}/render/public_api/models/workflow_version_status.py +0 -0
  845. {render-1.1.0 → render-1.3.0}/render/public_api/models/workflow_version_with_cursor.py +0 -0
  846. {render-1.1.0 → render-1.3.0}/render/public_api/models/workflow_with_cursor.py +0 -0
  847. {render-1.1.0 → render-1.3.0}/render/public_api/models/zero_downtime_redeploy_ended.py +0 -0
  848. {render-1.1.0 → render-1.3.0}/render/public_api/models/zero_downtime_redeploy_started.py +0 -0
  849. {render-1.1.0 → render-1.3.0}/render/public_api/py.typed +0 -0
  850. {render-1.1.0 → render-1.3.0}/render/public_api/types.py +0 -0
  851. {render-1.1.0 → render-1.3.0}/render/py.typed +0 -0
  852. {render-1.1.0 → render-1.3.0}/render/render.py +0 -0
  853. {render-1.1.0 → render-1.3.0}/render/render_async.py +0 -0
  854. {render-1.1.0 → render-1.3.0}/render/version.py +0 -0
  855. {render-1.1.0 → render-1.3.0}/render/workflows/_uds_http.py +0 -0
  856. {render-1.1.0 → render-1.3.0}/render/workflows/app.py +0 -0
  857. {render-1.1.0 → render-1.3.0}/render/workflows/cli.py +0 -0
  858. {render-1.1.0 → render-1.3.0}/render/workflows/task.py +0 -0
  859. {render-1.1.0 → render-1.3.0}/render/workflows/tests/__init__.py +0 -0
  860. {render-1.1.0 → render-1.3.0}/render/workflows/tests/test_app.py +0 -0
  861. {render-1.1.0 → render-1.3.0}/render/workflows/tests/test_cli.py +0 -0
  862. {render-1.1.0 → render-1.3.0}/render/workflows/tests/test_executor.py +0 -0
  863. {render-1.1.0 → render-1.3.0}/render/workflows/tests/test_lazy_imports.py +0 -0
  864. {render-1.1.0 → render-1.3.0}/render/workflows/tests/test_registration.py +0 -0
  865. {render-1.1.0 → render-1.3.0}/render/workflows/tests/test_translate_errors.py +0 -0
  866. {render-1.1.0 → render-1.3.0}/render/workflows/tests/test_uds_http.py +0 -0
  867. {render-1.1.0 → render-1.3.0}/render/workflows/tests/test_version.py +0 -0
  868. {render-1.1.0 → render-1.3.0}/scripts/unasync.py +0 -0
  869. {render-1.1.0 → render-1.3.0}/tox.ini +0 -0
  870. {render-1.1.0 → render-1.3.0}/typing_tests/README.md +0 -0
  871. {render-1.1.0 → render-1.3.0}/typing_tests/client_decorators.py +0 -0
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.3.0] - 2026-10-17
4
+
5
+ ### Added
6
+
7
+ - (Sandboxes) `sandboxes.create()` accepts `network_policy=NetworkPolicy(type="allow-list", rules=[EgressRule(domain="pypi.org")])` to restrict outbound traffic. Rules support domain names and wildcard domains such as `*.pypi.org`. `EgressRule.protocol` defaults to `"https"`. Both the sync and async clients support these rules.
8
+ - (REST API) Generated clients include flows, flow runs, run steps, and individual build retrieval.
9
+
10
+ ### Changed
11
+
12
+ - **Breaking:** (Sandboxes) `Sandbox.network_policy` is a `NetworkPolicy` object with `type` and `rules` instead of a string. Read `sandbox.network_policy.type` to get the policy type. String inputs such as `network_policy="deny-all"` still work when you create a sandbox.
13
+ - **Breaking:** (REST API) Removed `create_blueprint` and its request and response models. Build source Git fields use `docker_context` instead of `base_dir`. Build lists return `BuildWithCursor` entries with `build` and `cursor` fields instead of bare `Build` entries.
14
+ - (REST API) Service creation can omit `runtime` when `build_source_id` is set. `auto_deploy` is deprecated; use `auto_deploy_trigger`. Sandbox status includes `suspending`. Service event list entries include a `cursor`.
15
+ - (Workflows) The SDK sends import and startup timestamps with the initial input request. The runtime can use these timestamps to measure SDK import and startup time.
16
+
17
+ ## [1.2.0] - 2026-09-23
18
+
19
+ ### Added
20
+
21
+ - (Workflows) `start_task()` and `run_task()` accept a keyword-only `idempotency_key`, which makes starting a run safe to retry: repeating a call with the same key within 24 hours returns the run the first call started
22
+ - (Workflows) `ctx.metadata` exposes `task_run_id`, `root_task_run_id` and `parent_task_run_id` for the running task. The IDs come from the task's initial input, so reading them does not make a network request; each is `None` when unavailable
23
+ - (Sandboxes) Snapshot names: `snapshots.create()` accepts `name`, `sandboxes.create()` accepts `snapshot_name` to start from the snapshot that name resolves to, and `Snapshot` exposes `name`. Passing both `snapshot_id` and `snapshot_name` raises `ValueError`
24
+
25
+ ### Changed
26
+
27
+ - Regenerated the REST client from the latest OpenAPI schema: blueprint creation, `include_previews` when listing build sources, and allowed domains on sandbox network policies. `Deploy` no longer has a `build_id` field
28
+
3
29
  ## [1.1.0] - 2026-09-10
4
30
 
5
31
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: render
3
- Version: 1.1.0
3
+ Version: 1.3.0
4
4
  Summary: Python SDK for Render Workflows
5
5
  Author-email: Render <support@render.com>
6
6
  License-File: LICENSE
@@ -102,6 +102,17 @@ from tasks_b import app as app_b
102
102
  combined = Workflows.from_workflows(app_a, app_b)
103
103
  ```
104
104
 
105
+ ### Task run IDs
106
+
107
+ The task context exposes a read-only `ctx.metadata` object with
108
+ `task_run_id`, `root_task_run_id`, and `parent_task_run_id` fields. The SDK reads
109
+ them from the initial input response and keeps them for that execution, so
110
+ accessing metadata does not make a network request.
111
+
112
+ For a root run, `ctx.metadata.root_task_run_id` equals
113
+ `ctx.metadata.task_run_id` and `ctx.metadata.parent_task_run_id` is `None`.
114
+ IDs are `None` when unavailable.
115
+
105
116
  ### Running the Local Task Server
106
117
 
107
118
  For local development, use the Render CLI:
@@ -159,6 +170,19 @@ for event in render.workflows.task_run_events([task_run.id]):
159
170
  runs = render.workflows.list_task_runs(ListTaskRunsParams(limit=10))
160
171
  ```
161
172
 
173
+ #### Idempotency Keys
174
+
175
+ Pass an `idempotency_key` to make starting a run safe to retry. Repeating a call
176
+ with the same key within 24 hours returns the run the first call started instead
177
+ of starting another one, so a client that retries after a timeout does not run
178
+ the task twice. Keys are scoped to a single workflow version.
179
+
180
+ ```python
181
+ task_run = render.workflows.start_task(
182
+ "my-workflow/charge", [order_id], idempotency_key=f"charge-{order_id}"
183
+ )
184
+ ```
185
+
162
186
  #### Async Usage
163
187
 
164
188
  For async contexts (e.g. FastAPI), use `RenderAsync`:
@@ -77,6 +77,17 @@ from tasks_b import app as app_b
77
77
  combined = Workflows.from_workflows(app_a, app_b)
78
78
  ```
79
79
 
80
+ ### Task run IDs
81
+
82
+ The task context exposes a read-only `ctx.metadata` object with
83
+ `task_run_id`, `root_task_run_id`, and `parent_task_run_id` fields. The SDK reads
84
+ them from the initial input response and keeps them for that execution, so
85
+ accessing metadata does not make a network request.
86
+
87
+ For a root run, `ctx.metadata.root_task_run_id` equals
88
+ `ctx.metadata.task_run_id` and `ctx.metadata.parent_task_run_id` is `None`.
89
+ IDs are `None` when unavailable.
90
+
80
91
  ### Running the Local Task Server
81
92
 
82
93
  For local development, use the Render CLI:
@@ -134,6 +145,19 @@ for event in render.workflows.task_run_events([task_run.id]):
134
145
  runs = render.workflows.list_task_runs(ListTaskRunsParams(limit=10))
135
146
  ```
136
147
 
148
+ #### Idempotency Keys
149
+
150
+ Pass an `idempotency_key` to make starting a run safe to retry. Repeating a call
151
+ with the same key within 24 hours returns the run the first call started instead
152
+ of starting another one, so a client that retries after a timeout does not run
153
+ the task twice. Keys are scoped to a single workflow version.
154
+
155
+ ```python
156
+ task_run = render.workflows.start_task(
157
+ "my-workflow/charge", [order_id], idempotency_key=f"charge-{order_id}"
158
+ )
159
+ ```
160
+
137
161
  #### Async Usage
138
162
 
139
163
  For async contexts (e.g. FastAPI), use `RenderAsync`:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "render"
7
- version = "1.1.0"
7
+ version = "1.3.0"
8
8
  description = "Python SDK for Render Workflows"
9
9
  authors = [{ name = "Render", email = "support@render.com" }]
10
10
  readme = "README.md"
@@ -33,7 +33,10 @@ Async REST API access:
33
33
  result = await task_run
34
34
  """
35
35
 
36
- __version__ = "1.1.0"
36
+ # Must stay the first import: it records when SDK import began.
37
+ from render import _startup
38
+
39
+ __version__ = "1.3.0"
37
40
 
38
41
  # Render/RenderAsync are lazy-loaded so the workflow worker path stays fast.
39
42
  from typing import TYPE_CHECKING
@@ -42,6 +45,7 @@ from render.workflows import (
42
45
  Options,
43
46
  Retry,
44
47
  TaskContext,
48
+ TaskRunMetadata,
45
49
  Workflows,
46
50
  start,
47
51
  task,
@@ -58,6 +62,7 @@ __all__ = [
58
62
  "RenderAsync", # Async REST API client
59
63
  "Workflows", # Task definition
60
64
  "TaskContext", # First parameter of every task
65
+ "TaskRunMetadata",
61
66
  # Configuration
62
67
  "Options",
63
68
  "Retry",
@@ -96,3 +101,5 @@ def __dir__() -> list[str]:
96
101
  #
97
102
  # Raw API access available via:
98
103
  # from render.public_api import AuthenticatedClient
104
+
105
+ _startup.mark_import_finished()
@@ -0,0 +1,34 @@
1
+ """Wall-clock startup timestamps reported to the server on ``GET /input``.
2
+
3
+ Imported first by ``render/__init__.py`` so the import start is the earliest
4
+ point SDK code runs. Stdlib only, to stay cheap.
5
+ """
6
+
7
+ import time
8
+
9
+ _import_started_ns: int | None = time.time_ns()
10
+ _import_finished_ns: int | None = None
11
+ _sdk_started_ns: int | None = None
12
+
13
+
14
+ def mark_import_finished() -> None:
15
+ global _import_finished_ns
16
+ if _import_finished_ns is None:
17
+ _import_finished_ns = time.time_ns()
18
+
19
+
20
+ def mark_sdk_started() -> None:
21
+ global _sdk_started_ns
22
+ if _sdk_started_ns is None:
23
+ _sdk_started_ns = time.time_ns()
24
+
25
+
26
+ def input_query() -> str:
27
+ """Return ``?k=v&...`` for the timestamps that were captured, or ``""``."""
28
+ params = (
29
+ ("sdk_import_started_at", _import_started_ns),
30
+ ("sdk_import_finished_at", _import_finished_ns),
31
+ ("sdk_started_at", _sdk_started_ns),
32
+ )
33
+ parts = [f"{name}={value}" for name, value in params if value]
34
+ return "?" + "&".join(parts) if parts else ""
@@ -118,6 +118,62 @@ async def test_start_task_success(
118
118
  mock_create_task_asyncio.assert_called_once()
119
119
 
120
120
 
121
+ @pytest.mark.asyncio
122
+ async def test_start_task_omits_idempotency_key_when_not_given(
123
+ mock_create_task_asyncio, workflows_service, mock_task_run
124
+ ):
125
+ mock_create_task_asyncio.return_value = Response(
126
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
127
+ )
128
+
129
+ await workflows_service.start_task("test-task", {"input": "data"})
130
+
131
+ body = mock_create_task_asyncio.call_args.kwargs["body"]
132
+ assert "idempotencyKey" not in body.to_dict()
133
+
134
+
135
+ @pytest.mark.asyncio
136
+ async def test_start_task_sends_idempotency_key(
137
+ mock_create_task_asyncio, workflows_service, mock_task_run
138
+ ):
139
+ mock_create_task_asyncio.return_value = Response(
140
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
141
+ )
142
+
143
+ await workflows_service.start_task(
144
+ "test-task", {"input": "data"}, idempotency_key="order-42"
145
+ )
146
+
147
+ body = mock_create_task_asyncio.call_args.kwargs["body"]
148
+ assert body.to_dict()["idempotencyKey"] == "order-42"
149
+
150
+
151
+ @pytest.mark.asyncio
152
+ async def test_run_task_sends_idempotency_key(
153
+ mocker,
154
+ mock_create_task_asyncio,
155
+ workflows_service,
156
+ mock_task_run,
157
+ mock_task_run_details,
158
+ ):
159
+ mock_create_task_asyncio.return_value = Response(
160
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
161
+ )
162
+ mocker.patch.object(
163
+ AwaitableTaskRun,
164
+ "_wait_for_completion",
165
+ new_callable=mocker.AsyncMock,
166
+ return_value=mock_task_run_details,
167
+ )
168
+
169
+ await workflows_service.run_task(
170
+ "test-task", {"input": "data"}, idempotency_key="order-42"
171
+ )
172
+
173
+ body = mock_create_task_asyncio.call_args.kwargs["body"]
174
+ assert body.idempotency_key == "order-42"
175
+
176
+
121
177
  @pytest.mark.asyncio
122
178
  async def test_start_task_failure(mock_create_task_asyncio, workflows_service):
123
179
  """Test task start failure."""
@@ -117,6 +117,58 @@ def test_start_task_success(
117
117
  mock_create_task_sync.assert_called_once()
118
118
 
119
119
 
120
+ def test_start_task_omits_idempotency_key_when_not_given(
121
+ mock_create_task_sync, sync_workflows_service, mock_task_run
122
+ ):
123
+ mock_create_task_sync.return_value = Response(
124
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
125
+ )
126
+
127
+ sync_workflows_service.start_task("test-task", {"input": "data"})
128
+
129
+ body = mock_create_task_sync.call_args.kwargs["body"]
130
+ assert "idempotencyKey" not in body.to_dict()
131
+
132
+
133
+ def test_start_task_sends_idempotency_key(
134
+ mock_create_task_sync, sync_workflows_service, mock_task_run
135
+ ):
136
+ mock_create_task_sync.return_value = Response(
137
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
138
+ )
139
+
140
+ sync_workflows_service.start_task(
141
+ "test-task", {"input": "data"}, idempotency_key="order-42"
142
+ )
143
+
144
+ body = mock_create_task_sync.call_args.kwargs["body"]
145
+ assert body.to_dict()["idempotencyKey"] == "order-42"
146
+
147
+
148
+ def test_run_task_sends_idempotency_key(
149
+ mocker,
150
+ mock_create_task_sync,
151
+ sync_workflows_service,
152
+ mock_task_run,
153
+ mock_task_run_details,
154
+ ):
155
+ mock_create_task_sync.return_value = Response(
156
+ status_code=202, content=b"", headers={}, parsed=mock_task_run
157
+ )
158
+ mocker.patch.object(
159
+ sync_workflows_service,
160
+ "_task_run_completed_with_sse",
161
+ return_value=mock_task_run_details,
162
+ )
163
+
164
+ sync_workflows_service.run_task(
165
+ "test-task", {"input": "data"}, idempotency_key="order-42"
166
+ )
167
+
168
+ body = mock_create_task_sync.call_args.kwargs["body"]
169
+ assert body.idempotency_key == "order-42"
170
+
171
+
120
172
  def test_start_task_failure(mock_create_task_sync, sync_workflows_service):
121
173
  """Test task start failure."""
122
174
 
@@ -184,6 +184,8 @@ class WorkflowsService:
184
184
  self,
185
185
  task_slug: TaskSlug,
186
186
  input_data: TaskData,
187
+ *,
188
+ idempotency_key: str | None = None,
187
189
  ) -> AwaitableTaskRun:
188
190
  """Start a task and return an awaitable task run without waiting for completion.
189
191
 
@@ -203,6 +205,9 @@ class WorkflowsService:
203
205
  input_data: The input data for the task. Can be either:
204
206
  - A list for positional arguments: [arg1, arg2, arg3]
205
207
  - A dict for named parameters: {"param1": value1, "param2": value2}
208
+ idempotency_key: Optional client-generated key that makes this call safe
209
+ to retry. Repeating a call with the same key within 24 hours returns
210
+ the task run the first call started instead of starting another one.
206
211
 
207
212
  Returns:
208
213
  AwaitableTaskRun: A task run that can be awaited for the result
@@ -212,7 +217,11 @@ class WorkflowsService:
212
217
  ServerError: For 5xx server errors and network failures
213
218
  TimeoutError: If the request times out
214
219
  """
215
- response = (await self._create_task_api_call(task_slug, input_data)).parsed
220
+ response = (
221
+ await self._create_task_api_call(
222
+ task_slug, input_data, idempotency_key=idempotency_key
223
+ )
224
+ ).parsed
216
225
 
217
226
  return AwaitableTaskRun(response, self)
218
227
 
@@ -220,6 +229,8 @@ class WorkflowsService:
220
229
  self,
221
230
  task_slug: TaskSlug,
222
231
  input_data: TaskData,
232
+ *,
233
+ idempotency_key: str | None = None,
223
234
  ) -> TaskRunDetails:
224
235
  """Start a task and wait for it to complete, returning the result.
225
236
 
@@ -231,6 +242,9 @@ class WorkflowsService:
231
242
  input_data: The input data for the task. Can be either:
232
243
  - A list for positional arguments: [arg1, arg2, arg3]
233
244
  - A dict for named parameters: {"param1": value1, "param2": value2}
245
+ idempotency_key: Optional client-generated key that makes this call safe
246
+ to retry. Repeating a call with the same key within 24 hours returns
247
+ the task run the first call started instead of starting another one.
234
248
 
235
249
  Returns:
236
250
  TaskRunDetails: The completed task run details
@@ -241,12 +255,18 @@ class WorkflowsService:
241
255
  TimeoutError: If the request times out
242
256
  TaskRunError: If the task run fails with an error
243
257
  """
244
- task_run = await self.start_task(task_slug, input_data)
258
+ task_run = await self.start_task(
259
+ task_slug, input_data, idempotency_key=idempotency_key
260
+ )
245
261
  return await task_run
246
262
 
247
263
  @handle_http_errors("create task")
248
264
  async def _create_task_api_call(
249
- self, task_slug: TaskSlug, input_data: TaskData
265
+ self,
266
+ task_slug: TaskSlug,
267
+ input_data: TaskData,
268
+ *,
269
+ idempotency_key: str | None = None,
250
270
  ) -> Response[Error | TaskRun]:
251
271
  """Internal method to make the create task API call."""
252
272
  # Convert dict to TaskDataType1 for named parameters
@@ -260,6 +280,7 @@ class WorkflowsService:
260
280
  run_task = RunTask(
261
281
  task=task_slug,
262
282
  input_=task_data_input,
283
+ idempotency_key=idempotency_key if idempotency_key is not None else UNSET,
263
284
  )
264
285
 
265
286
  # Make the API call
@@ -105,6 +105,8 @@ class SyncWorkflowsService:
105
105
  self,
106
106
  task_slug: TaskSlug,
107
107
  input_data: TaskData,
108
+ *,
109
+ idempotency_key: str | None = None,
108
110
  ) -> TaskRun:
109
111
  """Start a task and return the task run without waiting for completion.
110
112
 
@@ -118,6 +120,9 @@ class SyncWorkflowsService:
118
120
  input_data: The input data for the task. Can be either:
119
121
  - A list for positional arguments: [arg1, arg2, arg3]
120
122
  - A dict for named parameters: {"param1": value1, "param2": value2}
123
+ idempotency_key: Optional client-generated key that makes this call safe
124
+ to retry. Repeating a call with the same key within 24 hours returns
125
+ the task run the first call started instead of starting another one.
121
126
 
122
127
  Returns:
123
128
  TaskRun: The created task run
@@ -127,12 +132,16 @@ class SyncWorkflowsService:
127
132
  ServerError: For 5xx server errors and network failures
128
133
  TimeoutError: If the request times out
129
134
  """
130
- return self._create_task_api_call(task_slug, input_data).parsed
135
+ return self._create_task_api_call(
136
+ task_slug, input_data, idempotency_key=idempotency_key
137
+ ).parsed
131
138
 
132
139
  def run_task(
133
140
  self,
134
141
  task_slug: TaskSlug,
135
142
  input_data: TaskData,
143
+ *,
144
+ idempotency_key: str | None = None,
136
145
  ) -> TaskRunDetails:
137
146
  """Start a task and wait for it to complete, returning the result.
138
147
 
@@ -143,6 +152,9 @@ class SyncWorkflowsService:
143
152
  input_data: The input data for the task. Can be either:
144
153
  - A list for positional arguments: [arg1, arg2, arg3]
145
154
  - A dict for named parameters: {"param1": value1, "param2": value2}
155
+ idempotency_key: Optional client-generated key that makes this call safe
156
+ to retry. Repeating a call with the same key within 24 hours returns
157
+ the task run the first call started instead of starting another one.
146
158
 
147
159
  Returns:
148
160
  TaskRunDetails: The completed task run details
@@ -153,7 +165,9 @@ class SyncWorkflowsService:
153
165
  TimeoutError: If the request times out
154
166
  TaskRunError: If the task run fails with an error
155
167
  """
156
- task_run = self.start_task(task_slug, input_data)
168
+ task_run = self.start_task(
169
+ task_slug, input_data, idempotency_key=idempotency_key
170
+ )
157
171
 
158
172
  # If already in a terminal state, just get the details
159
173
  status = task_run.status.value
@@ -183,7 +197,11 @@ class SyncWorkflowsService:
183
197
 
184
198
  @handle_http_errors("create task")
185
199
  def _create_task_api_call(
186
- self, task_slug: TaskSlug, input_data: TaskData
200
+ self,
201
+ task_slug: TaskSlug,
202
+ input_data: TaskData,
203
+ *,
204
+ idempotency_key: str | None = None,
187
205
  ) -> Response[Error | TaskRun]:
188
206
  """Internal method to make the create task API call."""
189
207
  # Convert dict to TaskDataType1 for named parameters
@@ -197,6 +215,7 @@ class SyncWorkflowsService:
197
215
  run_task = RunTask(
198
216
  task=task_slug,
199
217
  input_=task_data_input,
218
+ idempotency_key=idempotency_key if idempotency_key is not None else UNSET,
200
219
  )
201
220
 
202
221
  # Make the API call
@@ -0,0 +1,59 @@
1
+ """Retry 429s in the object storage e2e tests.
2
+
3
+ Every PR's E2E job shares one staging account, so concurrent runs trip the API
4
+ rate limit. RateLimitError doesn't carry the Retry-After header, so back off
5
+ exponentially with jitter instead.
6
+ """
7
+
8
+ import asyncio
9
+ import functools
10
+ import random
11
+ from collections.abc import Awaitable, Callable
12
+ from typing import ParamSpec, TypeVar
13
+
14
+ from render.client.errors import RateLimitError
15
+ from render.experimental.object.client import ObjectClient
16
+
17
+ P = ParamSpec("P")
18
+ R = TypeVar("R")
19
+
20
+ # Total window is ~60 seconds before jitter
21
+ MAX_ATTEMPTS = 7
22
+ INITIAL_DELAY_S = 1.0
23
+ MAX_DELAY_S = 16.0
24
+
25
+
26
+ def retry_rate_limited(
27
+ func: Callable[P, Awaitable[R]],
28
+ *,
29
+ initial_delay_s: float = INITIAL_DELAY_S,
30
+ ) -> Callable[P, Awaitable[R]]:
31
+ @functools.wraps(func)
32
+ async def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
33
+ for attempt in range(MAX_ATTEMPTS):
34
+ try:
35
+ return await func(*args, **kwargs)
36
+ except RateLimitError:
37
+ if attempt >= MAX_ATTEMPTS - 1:
38
+ raise
39
+ delay = min(initial_delay_s * 2**attempt, MAX_DELAY_S)
40
+ await asyncio.sleep(delay * random.uniform(0.5, 1.5)) # noqa: S311
41
+ raise AssertionError("unreachable") # pragma: no cover
42
+
43
+ return wrapper
44
+
45
+
46
+ def patch_rate_limit_retries(
47
+ client: ObjectClient, *, initial_delay_s: float = INITIAL_DELAY_S
48
+ ) -> None:
49
+ """Wrap the client's API methods in place.
50
+
51
+ ScopedObjectClient delegates to these, so scoped() is covered too.
52
+ """
53
+ for name in ("put", "get", "delete", "list"):
54
+ method = getattr(client, name)
55
+ setattr(
56
+ client,
57
+ name,
58
+ retry_rate_limited(method, initial_delay_s=initial_delay_s),
59
+ )
@@ -14,7 +14,9 @@ import uuid
14
14
 
15
15
  import pytest
16
16
 
17
+ from render.experimental.object.client import ObjectClient
17
18
  from render.experimental.object.e2e_helpers import object_storage_crud_check
19
+ from render.experimental.object.tests.rate_limit import patch_rate_limit_retries
18
20
  from render.render_async import RenderAsync
19
21
 
20
22
  # ---------------------------------------------------------------------------
@@ -42,6 +44,13 @@ def render():
42
44
  )
43
45
 
44
46
 
47
+ @pytest.fixture
48
+ def objects(render) -> ObjectClient:
49
+ client = render.client.experimental.storage.objects
50
+ patch_rate_limit_retries(client)
51
+ return client
52
+
53
+
45
54
  @pytest.fixture
46
55
  def owner_id():
47
56
  return os.environ["RENDER_E2E_OWNER_ID"]
@@ -57,20 +66,14 @@ def region():
57
66
  # ---------------------------------------------------------------------------
58
67
  class TestObjectClientE2E:
59
68
  @pytest.mark.asyncio
60
- async def test_crud_cycle(self, render, owner_id, region):
69
+ async def test_crud_cycle(self, objects, owner_id, region):
61
70
  """Full PUT → LIST → GET → DELETE → verify-deletion cycle."""
62
- await object_storage_crud_check(
63
- render.client.experimental.storage.objects,
64
- owner_id,
65
- region,
66
- )
71
+ await object_storage_crud_check(objects, owner_id, region)
67
72
 
68
73
  @pytest.mark.asyncio
69
- async def test_scoped_accessor(self, render, owner_id, region):
74
+ async def test_scoped_accessor(self, objects, owner_id, region):
70
75
  """Verify scoped() wiring with a simple PUT/GET/DELETE."""
71
- scoped = render.client.experimental.storage.objects.scoped(
72
- owner_id=owner_id, region=region
73
- )
76
+ scoped = objects.scoped(owner_id=owner_id, region=region)
74
77
  key = f"e2e-test/{uuid.uuid4()}/scoped-test.txt"
75
78
 
76
79
  try:
@@ -93,11 +96,10 @@ class TestObjectClientE2E:
93
96
  )
94
97
  class TestObjectClientPagination:
95
98
  @pytest.mark.asyncio
96
- async def test_pagination(self, render):
99
+ async def test_pagination(self, objects):
97
100
  """Walk all pages with limit=2, verify multiple pages returned."""
98
101
  owner_id = os.environ["RENDER_E2E_PAGINATION_OWNER_ID"]
99
102
  region = os.environ.get("RENDER_E2E_REGION", "oregon")
100
- objects = render.client.experimental.storage.objects
101
103
 
102
104
  page_size = 2
103
105
  cursor = None
@@ -0,0 +1,75 @@
1
+ """Tests for the e2e rate-limit retry wrapper."""
2
+
3
+ from types import SimpleNamespace
4
+
5
+ import pytest
6
+
7
+ from render.client.errors import ClientError, RateLimitError
8
+ from render.experimental.object.client import ObjectClient
9
+ from render.experimental.object.tests.rate_limit import (
10
+ MAX_ATTEMPTS,
11
+ patch_rate_limit_retries,
12
+ retry_rate_limited,
13
+ )
14
+ from render.experimental.object.types import ListObjectsResponse
15
+
16
+
17
+ @pytest.mark.asyncio
18
+ async def test_retries_rate_limit_until_success():
19
+ calls = 0
20
+
21
+ async def fn() -> str:
22
+ nonlocal calls
23
+ calls += 1
24
+ if calls < 3:
25
+ raise RateLimitError("list objects failed: rate limit exceeded")
26
+ return "ok"
27
+
28
+ assert await retry_rate_limited(fn, initial_delay_s=0)() == "ok"
29
+ assert calls == 3
30
+
31
+
32
+ @pytest.mark.asyncio
33
+ async def test_reraises_after_max_attempts():
34
+ calls = 0
35
+
36
+ async def fn() -> None:
37
+ nonlocal calls
38
+ calls += 1
39
+ raise RateLimitError("rate limit exceeded")
40
+
41
+ with pytest.raises(RateLimitError):
42
+ await retry_rate_limited(fn, initial_delay_s=0)()
43
+ assert calls == MAX_ATTEMPTS
44
+
45
+
46
+ @pytest.mark.asyncio
47
+ async def test_does_not_retry_other_client_errors():
48
+ calls = 0
49
+
50
+ async def fn() -> None:
51
+ nonlocal calls
52
+ calls += 1
53
+ raise ClientError("object not found")
54
+
55
+ with pytest.raises(ClientError):
56
+ await retry_rate_limited(fn, initial_delay_s=0)()
57
+ assert calls == 1
58
+
59
+
60
+ @pytest.mark.asyncio
61
+ async def test_patch_covers_scoped_client(mocker):
62
+ client = ObjectClient(SimpleNamespace())
63
+ list_mock = mocker.AsyncMock(
64
+ side_effect=[
65
+ RateLimitError("rate limit exceeded"),
66
+ ListObjectsResponse(objects=[], next_cursor=None, has_next=False),
67
+ ]
68
+ )
69
+ mocker.patch.object(client, "list", new=list_mock)
70
+
71
+ patch_rate_limit_retries(client, initial_delay_s=0)
72
+ response = await client.scoped(owner_id="tea-test", region="oregon").list()
73
+
74
+ assert response.objects == []
75
+ assert list_mock.await_count == 2