runloop-api-client 0.50.0__tar.gz → 0.51.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 (289) hide show
  1. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/.gitignore +0 -1
  2. runloop_api_client-0.51.0/.release-please-manifest.json +3 -0
  3. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/CHANGELOG.md +20 -0
  4. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/PKG-INFO +1 -1
  5. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/pyproject.toml +1 -1
  6. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_models.py +24 -3
  7. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_version.py +1 -1
  8. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/devboxes/devboxes.py +122 -39
  9. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/__init__.py +13 -0
  10. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_upload_file_params.py +13 -0
  11. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_write_file_contents_params.py +13 -0
  12. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/code_segment_info_response.py +0 -8
  13. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/document_symbol.py +2 -8
  14. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/position.py +4 -1
  15. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/range.py +4 -1
  16. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/text_edit.py +2 -1
  17. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/repository_manifest_view.py +51 -7
  18. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/test_devboxes.py +26 -0
  19. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_models.py +28 -1
  20. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/uv.lock +1116 -1116
  21. runloop_api_client-0.50.0/.release-please-manifest.json +0 -3
  22. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/CONTRIBUTING.md +0 -0
  23. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/LICENSE +0 -0
  24. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/README.md +0 -0
  25. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/SECURITY.md +0 -0
  26. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/api.md +0 -0
  27. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/bin/check-release-environment +0 -0
  28. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/bin/publish-pypi +0 -0
  29. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/examples/.keep +0 -0
  30. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/mypy.ini +0 -0
  31. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/noxfile.py +0 -0
  32. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/release-please-config.json +0 -0
  33. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/requirements-dev.lock +0 -0
  34. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/requirements.lock +0 -0
  35. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop/lib/.keep +0 -0
  36. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/__init__.py +0 -0
  37. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_base_client.py +0 -0
  38. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_client.py +0 -0
  39. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_compat.py +0 -0
  40. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_constants.py +0 -0
  41. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_exceptions.py +0 -0
  42. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_files.py +0 -0
  43. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_qs.py +0 -0
  44. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_resource.py +0 -0
  45. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_response.py +0 -0
  46. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_streaming.py +0 -0
  47. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_types.py +0 -0
  48. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_utils/__init__.py +0 -0
  49. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_utils/_logs.py +0 -0
  50. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_utils/_proxy.py +0 -0
  51. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_utils/_reflection.py +0 -0
  52. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_utils/_resources_proxy.py +0 -0
  53. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_utils/_streams.py +0 -0
  54. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_utils/_sync.py +0 -0
  55. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_utils/_transform.py +0 -0
  56. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_utils/_typing.py +0 -0
  57. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/_utils/_utils.py +0 -0
  58. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/lib/.keep +0 -0
  59. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/lib/polling.py +0 -0
  60. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/lib/polling_async.py +0 -0
  61. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/pagination.py +0 -0
  62. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/py.typed +0 -0
  63. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/__init__.py +0 -0
  64. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/benchmarks/__init__.py +0 -0
  65. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/benchmarks/benchmarks.py +0 -0
  66. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/benchmarks/runs.py +0 -0
  67. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/blueprints.py +0 -0
  68. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/devboxes/__init__.py +0 -0
  69. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/devboxes/browsers.py +0 -0
  70. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/devboxes/computers.py +0 -0
  71. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/devboxes/disk_snapshots.py +0 -0
  72. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/devboxes/executions.py +0 -0
  73. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/devboxes/logs.py +0 -0
  74. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/devboxes/lsp.py +0 -0
  75. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/repositories.py +0 -0
  76. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/scenarios/__init__.py +0 -0
  77. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/scenarios/runs.py +0 -0
  78. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/scenarios/scenarios.py +0 -0
  79. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/scenarios/scorers.py +0 -0
  80. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/resources/secrets.py +0 -0
  81. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmark_create_params.py +0 -0
  82. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmark_definitions_params.py +0 -0
  83. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmark_list_params.py +0 -0
  84. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmark_list_public_params.py +0 -0
  85. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmark_run_list_view.py +0 -0
  86. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmark_run_view.py +0 -0
  87. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmark_start_run_params.py +0 -0
  88. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmark_update_params.py +0 -0
  89. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmark_view.py +0 -0
  90. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmarks/__init__.py +0 -0
  91. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmarks/run_list_params.py +0 -0
  92. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/benchmarks/run_list_scenario_runs_params.py +0 -0
  93. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/blueprint_build_log.py +0 -0
  94. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/blueprint_build_logs_list_view.py +0 -0
  95. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/blueprint_build_parameters.py +0 -0
  96. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/blueprint_create_params.py +0 -0
  97. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/blueprint_list_params.py +0 -0
  98. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/blueprint_list_view.py +0 -0
  99. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/blueprint_preview_params.py +0 -0
  100. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/blueprint_preview_view.py +0 -0
  101. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/blueprint_view.py +0 -0
  102. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_async_execution_detail_view.py +0 -0
  103. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_create_params.py +0 -0
  104. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_create_ssh_key_response.py +0 -0
  105. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_create_tunnel_params.py +0 -0
  106. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_download_file_params.py +0 -0
  107. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_execute_async_params.py +0 -0
  108. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_execute_sync_params.py +0 -0
  109. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_execution_detail_view.py +0 -0
  110. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_list_disk_snapshots_params.py +0 -0
  111. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_list_params.py +0 -0
  112. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_list_view.py +0 -0
  113. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_read_file_contents_params.py +0 -0
  114. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_read_file_contents_response.py +0 -0
  115. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_remove_tunnel_params.py +0 -0
  116. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_snapshot_disk_async_params.py +0 -0
  117. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_snapshot_disk_params.py +0 -0
  118. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_snapshot_list_view.py +0 -0
  119. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_snapshot_view.py +0 -0
  120. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_tunnel_view.py +0 -0
  121. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_update_params.py +0 -0
  122. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devbox_view.py +0 -0
  123. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/__init__.py +0 -0
  124. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_code_action.py +0 -0
  125. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_command.py +0 -0
  126. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_command_param.py +0 -0
  127. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_diagnostic.py +0 -0
  128. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_diagnostic_param.py +0 -0
  129. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_location.py +0 -0
  130. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_markup_content.py +0 -0
  131. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_parameter_information.py +0 -0
  132. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_range.py +0 -0
  133. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_range_param.py +0 -0
  134. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_signature.py +0 -0
  135. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_workspace_edit.py +0 -0
  136. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/base_workspace_edit_param.py +0 -0
  137. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/browser_create_params.py +0 -0
  138. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/browser_view.py +0 -0
  139. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/code_action_application_result.py +0 -0
  140. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/code_action_context_param.py +0 -0
  141. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/code_action_kind.py +0 -0
  142. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/code_action_trigger_kind.py +0 -0
  143. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/code_actions_response.py +0 -0
  144. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/code_description_param.py +0 -0
  145. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/computer_create_params.py +0 -0
  146. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_params.py +0 -0
  147. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/computer_keyboard_interaction_response.py +0 -0
  148. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_params.py +0 -0
  149. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/computer_mouse_interaction_response.py +0 -0
  150. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_params.py +0 -0
  151. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/computer_screen_interaction_response.py +0 -0
  152. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/computer_view.py +0 -0
  153. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/devbox_logs_list_view.py +0 -0
  154. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/devbox_snapshot_async_status_view.py +0 -0
  155. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/diagnostic_param.py +0 -0
  156. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/diagnostic_related_information_param.py +0 -0
  157. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/diagnostic_severity.py +0 -0
  158. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/diagnostic_tag.py +0 -0
  159. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/diagnostics_response.py +0 -0
  160. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/disk_snapshot_list_params.py +0 -0
  161. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/disk_snapshot_update_params.py +0 -0
  162. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/document_symbol_response.py +0 -0
  163. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/document_uri.py +0 -0
  164. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/execution_execute_async_params.py +0 -0
  165. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/execution_execute_sync_params.py +0 -0
  166. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/execution_retrieve_params.py +0 -0
  167. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/file_contents_response.py +0 -0
  168. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/file_definition_response.py +0 -0
  169. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/file_path.py +0 -0
  170. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/file_uri.py +0 -0
  171. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/formatting_response.py +0 -0
  172. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/health_status_response.py +0 -0
  173. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/integer.py +0 -0
  174. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/l_sp_any_param.py +0 -0
  175. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/location_param.py +0 -0
  176. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/log_list_params.py +0 -0
  177. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_apply_code_action_params.py +0 -0
  178. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_code_actions_params.py +0 -0
  179. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_diagnostics_params.py +0 -0
  180. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_document_symbols_params.py +0 -0
  181. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_file_definition_params.py +0 -0
  182. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_file_params.py +0 -0
  183. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_files_response.py +0 -0
  184. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_formatting_params.py +0 -0
  185. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_params.py +0 -0
  186. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_get_code_actions_for_diagnostic_response.py +0 -0
  187. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_get_code_segment_info_params.py +0 -0
  188. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_get_signature_help_params.py +0 -0
  189. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_references_params.py +0 -0
  190. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_params.py +0 -0
  191. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/lsp_set_watch_directory_response.py +0 -0
  192. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/position_param.py +0 -0
  193. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/range_param.py +0 -0
  194. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array.py +0 -0
  195. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/record_string_text_edit_array_param.py +0 -0
  196. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/references_response.py +0 -0
  197. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/signature_help_response.py +0 -0
  198. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/symbol_kind.py +0 -0
  199. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/symbol_tag.py +0 -0
  200. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/symbol_type.py +0 -0
  201. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/text_edit_param.py +0 -0
  202. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/u_ri.py +0 -0
  203. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/uinteger.py +0 -0
  204. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/devboxes/watched_file_response.py +0 -0
  205. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/input_context.py +0 -0
  206. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/input_context_param.py +0 -0
  207. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/input_context_update_param.py +0 -0
  208. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/repository_connection_list_view.py +0 -0
  209. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/repository_connection_view.py +0 -0
  210. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/repository_create_params.py +0 -0
  211. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/repository_inspection_details.py +0 -0
  212. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/repository_inspection_list_view.py +0 -0
  213. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/repository_list_params.py +0 -0
  214. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/repository_refresh_params.py +0 -0
  215. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenario_create_params.py +0 -0
  216. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenario_definition_list_view.py +0 -0
  217. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenario_environment.py +0 -0
  218. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenario_environment_param.py +0 -0
  219. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenario_list_params.py +0 -0
  220. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenario_list_public_params.py +0 -0
  221. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenario_run_list_view.py +0 -0
  222. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenario_run_view.py +0 -0
  223. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenario_start_run_params.py +0 -0
  224. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenario_update_params.py +0 -0
  225. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenario_view.py +0 -0
  226. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenarios/__init__.py +0 -0
  227. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenarios/run_list_params.py +0 -0
  228. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenarios/scorer_create_params.py +0 -0
  229. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenarios/scorer_create_response.py +0 -0
  230. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenarios/scorer_list_params.py +0 -0
  231. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenarios/scorer_list_response.py +0 -0
  232. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenarios/scorer_retrieve_response.py +0 -0
  233. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenarios/scorer_update_params.py +0 -0
  234. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenarios/scorer_update_response.py +0 -0
  235. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenarios/scorer_validate_params.py +0 -0
  236. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scenarios/scorer_validate_response.py +0 -0
  237. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scoring_contract.py +0 -0
  238. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scoring_contract_param.py +0 -0
  239. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scoring_contract_result_view.py +0 -0
  240. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scoring_contract_update_param.py +0 -0
  241. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scoring_function.py +0 -0
  242. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scoring_function_param.py +0 -0
  243. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/scoring_function_result_view.py +0 -0
  244. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/secret_create_params.py +0 -0
  245. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/secret_list_view.py +0 -0
  246. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/secret_update_params.py +0 -0
  247. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/secret_view.py +0 -0
  248. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/shared/__init__.py +0 -0
  249. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/shared/after_idle.py +0 -0
  250. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/shared/code_mount_parameters.py +0 -0
  251. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/shared/launch_parameters.py +0 -0
  252. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/shared_params/__init__.py +0 -0
  253. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/shared_params/after_idle.py +0 -0
  254. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/shared_params/code_mount_parameters.py +0 -0
  255. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/src/runloop_api_client/types/shared_params/launch_parameters.py +0 -0
  256. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/__init__.py +0 -0
  257. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/__init__.py +0 -0
  258. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/benchmarks/__init__.py +0 -0
  259. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/benchmarks/test_runs.py +0 -0
  260. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/devboxes/__init__.py +0 -0
  261. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/devboxes/test_browsers.py +0 -0
  262. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/devboxes/test_computers.py +0 -0
  263. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/devboxes/test_disk_snapshots.py +0 -0
  264. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/devboxes/test_executions.py +0 -0
  265. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/devboxes/test_logs.py +0 -0
  266. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/devboxes/test_lsp.py +0 -0
  267. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/scenarios/__init__.py +0 -0
  268. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/scenarios/test_runs.py +0 -0
  269. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/scenarios/test_scorers.py +0 -0
  270. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/test_benchmarks.py +0 -0
  271. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/test_blueprints.py +0 -0
  272. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/test_repositories.py +0 -0
  273. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/test_scenarios.py +0 -0
  274. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/api_resources/test_secrets.py +0 -0
  275. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/conftest.py +0 -0
  276. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/sample_file.txt +0 -0
  277. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_client.py +0 -0
  278. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_deepcopy.py +0 -0
  279. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_extract_files.py +0 -0
  280. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_files.py +0 -0
  281. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_polling.py +0 -0
  282. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_qs.py +0 -0
  283. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_required_args.py +0 -0
  284. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_response.py +0 -0
  285. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_streaming.py +0 -0
  286. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_transform.py +0 -0
  287. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_utils/test_proxy.py +0 -0
  288. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/test_utils/test_typing.py +0 -0
  289. {runloop_api_client-0.50.0 → runloop_api_client-0.51.0}/tests/utils.py +0 -0
@@ -1,5 +1,4 @@
1
1
  .prism.log
2
- .vscode
3
2
  _dev
4
3
 
5
4
  __pycache__
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.51.0"
3
+ }
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.51.0 (2025-07-29)
4
+
5
+ Full Changelog: [v0.50.0...v0.51.0](https://github.com/runloopai/api-client-python/compare/v0.50.0...v0.51.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([5d42629](https://github.com/runloopai/api-client-python/commit/5d426295ac258ede767c131a209b1deab4d746a6))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * **parsing:** ignore empty metadata ([10c81bd](https://github.com/runloopai/api-client-python/commit/10c81bd7e10ee82e1414aede07c6889630322f6b))
15
+ * **parsing:** parse extra field types ([9d2a5f0](https://github.com/runloopai/api-client-python/commit/9d2a5f01e3646d127dec75dca085c2168c35f48a))
16
+
17
+
18
+ ### Chores
19
+
20
+ * **project:** add settings file for vscode ([7a11210](https://github.com/runloopai/api-client-python/commit/7a1121066a7eeb7ca3acb9185834154556d52894))
21
+ * **types:** rebuild Pydantic models after all types are defined ([b1839c6](https://github.com/runloopai/api-client-python/commit/b1839c61f42496896ed58b90a983771902f2c26e))
22
+
3
23
  ## 0.50.0 (2025-07-15)
4
24
 
5
25
  Full Changelog: [v0.49.0...v0.50.0](https://github.com/runloopai/api-client-python/compare/v0.49.0...v0.50.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: runloop_api_client
3
- Version: 0.50.0
3
+ Version: 0.51.0
4
4
  Summary: The official Python library for the runloop API
5
5
  Project-URL: Homepage, https://github.com/runloopai/api-client-python
6
6
  Project-URL: Repository, https://github.com/runloopai/api-client-python
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "runloop_api_client"
3
- version = "0.50.0"
3
+ version = "0.51.0"
4
4
  description = "The official Python library for the runloop API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -208,14 +208,18 @@ class BaseModel(pydantic.BaseModel):
208
208
  else:
209
209
  fields_values[name] = field_get_default(field)
210
210
 
211
+ extra_field_type = _get_extra_fields_type(__cls)
212
+
211
213
  _extra = {}
212
214
  for key, value in values.items():
213
215
  if key not in model_fields:
216
+ parsed = construct_type(value=value, type_=extra_field_type) if extra_field_type is not None else value
217
+
214
218
  if PYDANTIC_V2:
215
- _extra[key] = value
219
+ _extra[key] = parsed
216
220
  else:
217
221
  _fields_set.add(key)
218
- fields_values[key] = value
222
+ fields_values[key] = parsed
219
223
 
220
224
  object.__setattr__(m, "__dict__", fields_values)
221
225
 
@@ -370,6 +374,23 @@ def _construct_field(value: object, field: FieldInfo, key: str) -> object:
370
374
  return construct_type(value=value, type_=type_, metadata=getattr(field, "metadata", None))
371
375
 
372
376
 
377
+ def _get_extra_fields_type(cls: type[pydantic.BaseModel]) -> type | None:
378
+ if not PYDANTIC_V2:
379
+ # TODO
380
+ return None
381
+
382
+ schema = cls.__pydantic_core_schema__
383
+ if schema["type"] == "model":
384
+ fields = schema["schema"]
385
+ if fields["type"] == "model-fields":
386
+ extras = fields.get("extras_schema")
387
+ if extras and "cls" in extras:
388
+ # mypy can't narrow the type
389
+ return extras["cls"] # type: ignore[no-any-return]
390
+
391
+ return None
392
+
393
+
373
394
  def is_basemodel(type_: type) -> bool:
374
395
  """Returns whether or not the given type is either a `BaseModel` or a union of `BaseModel`"""
375
396
  if is_union(type_):
@@ -439,7 +460,7 @@ def construct_type(*, value: object, type_: object, metadata: Optional[List[Any]
439
460
  type_ = type_.__value__ # type: ignore[unreachable]
440
461
 
441
462
  # unwrap `Annotated[T, ...]` -> `T`
442
- if metadata is not None:
463
+ if metadata is not None and len(metadata) > 0:
443
464
  meta: tuple[Any, ...] = tuple(metadata)
444
465
  elif is_annotated_type(type_):
445
466
  meta = get_args(type_)[1:]
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "runloop_api_client"
4
- __version__ = "0.50.0" # x-release-please-version
4
+ __version__ = "0.51.0" # x-release-please-version
@@ -426,17 +426,19 @@ class DevboxesResource(SyncAPIResource):
426
426
  def create_and_await_running(
427
427
  self,
428
428
  *,
429
- blueprint_id: str | NotGiven = NOT_GIVEN,
430
- blueprint_name: str | NotGiven = NOT_GIVEN,
429
+ blueprint_id: Optional[str] | NotGiven = NOT_GIVEN,
430
+ blueprint_name: Optional[str] | NotGiven = NOT_GIVEN,
431
431
  code_mounts: Optional[Iterable[CodeMountParameters]] | NotGiven = NOT_GIVEN,
432
- entrypoint: str | NotGiven = NOT_GIVEN,
433
- environment_variables: Dict[str, str] | NotGiven = NOT_GIVEN,
434
- file_mounts: Dict[str, str] | NotGiven = NOT_GIVEN,
435
- launch_parameters: LaunchParameters | NotGiven = NOT_GIVEN,
436
- metadata: Dict[str, str] | NotGiven = NOT_GIVEN,
437
- name: str | NotGiven = NOT_GIVEN,
438
- prebuilt: str | NotGiven = NOT_GIVEN,
439
- snapshot_id: str | NotGiven = NOT_GIVEN,
432
+ entrypoint: Optional[str] | NotGiven = NOT_GIVEN,
433
+ environment_variables: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
434
+ file_mounts: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
435
+ launch_parameters: Optional[LaunchParameters] | NotGiven = NOT_GIVEN,
436
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
437
+ name: Optional[str] | NotGiven = NOT_GIVEN,
438
+ prebuilt: Optional[str] | NotGiven = NOT_GIVEN,
439
+ repo_connection_id: Optional[str] | NotGiven = NOT_GIVEN,
440
+ secrets: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
441
+ snapshot_id: Optional[str] | NotGiven = NOT_GIVEN,
440
442
  polling_config: PollingConfig | None = None,
441
443
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
442
444
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -444,26 +446,41 @@ class DevboxesResource(SyncAPIResource):
444
446
  extra_query: Query | None = None,
445
447
  extra_body: Body | None = None,
446
448
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
449
+ idempotency_key: str | None = None,
447
450
  ) -> DevboxView:
448
451
  """Create a new devbox and wait for it to be in running state.
449
452
 
450
453
  Args:
451
- blueprint_id: The ID of the blueprint to use
452
- blueprint_name: The name of the blueprint to use
453
- code_mounts: Code mount parameters
454
- entrypoint: The entrypoint command
455
- environment_variables: Environment variables
456
- file_mounts: File mount parameters
457
- launch_parameters: Launch parameters
458
- metadata: Metadata key-value pairs
459
- name: The name of the devbox
460
- prebuilt: The prebuilt image to use
461
- snapshot_id: The ID of the snapshot to restore from
454
+ blueprint_id: Blueprint ID to use for the Devbox. If none set, the Devbox will be created with
455
+ the default Runloop Devbox image. Only one of (Snapshot ID, Blueprint ID,
456
+ Blueprint name) should be specified.
457
+ blueprint_name: Name of Blueprint to use for the Devbox. When set, this will load the latest
458
+ successfully built Blueprint with the given name. Only one of (Snapshot ID,
459
+ Blueprint ID, Blueprint name) should be specified.
460
+ code_mounts: A list of code mounts to be included in the Devbox.
461
+ entrypoint: (Optional) When specified, the Devbox will run this script as its main
462
+ executable. The devbox lifecycle will be bound to entrypoint, shutting down when
463
+ the process is complete.
464
+ environment_variables: (Optional) Environment variables used to configure your Devbox.
465
+ file_mounts: (Optional) Map of paths and file contents to write before setup.
466
+ launch_parameters: Parameters to configure the resources and launch time behavior of the Devbox.
467
+ metadata: User defined metadata to attach to the devbox for organization.
468
+ name: (Optional) A user specified name to give the Devbox.
469
+ prebuilt: Reference to prebuilt Blueprint to create the Devbox from. Should not be used
470
+ together with (Snapshot ID, Blueprint ID, or Blueprint name).
471
+ repo_connection_id: Repository connection id the devbox should source its base image from.
472
+ secrets: (Optional) Map of environment variable names to secret names. The secret values
473
+ will be securely injected as environment variables in the Devbox. Example:
474
+ {"DB_PASS": "DATABASE_PASSWORD"} sets environment variable 'DB_PASS' to the
475
+ value of secret 'DATABASE_PASSWORD'.
476
+ snapshot_id: Snapshot ID to use for the Devbox. Only one of (Snapshot ID, Blueprint ID,
477
+ Blueprint name) should be specified.
462
478
  polling_config: Optional polling configuration
463
479
  extra_headers: Send extra headers
464
480
  extra_query: Add additional query parameters to the request
465
481
  extra_body: Add additional JSON properties to the request
466
482
  timeout: Override the client-level default timeout for this request, in seconds
483
+ idempotency_key: Specify a custom idempotency key for this request
467
484
 
468
485
  Returns:
469
486
  The devbox in running state
@@ -483,11 +500,14 @@ class DevboxesResource(SyncAPIResource):
483
500
  metadata=metadata,
484
501
  name=name,
485
502
  prebuilt=prebuilt,
503
+ repo_connection_id=repo_connection_id,
504
+ secrets=secrets,
486
505
  snapshot_id=snapshot_id,
487
506
  extra_headers=extra_headers,
488
507
  extra_query=extra_query,
489
508
  extra_body=extra_body,
490
509
  timeout=timeout,
510
+ idempotency_key=idempotency_key,
491
511
  )
492
512
 
493
513
  return self.await_running(
@@ -1285,7 +1305,9 @@ class DevboxesResource(SyncAPIResource):
1285
1305
  id: str,
1286
1306
  *,
1287
1307
  path: str,
1308
+ chmod: Optional[str] | NotGiven = NOT_GIVEN,
1288
1309
  file: FileTypes | NotGiven = NOT_GIVEN,
1310
+ owner: Optional[str] | NotGiven = NOT_GIVEN,
1289
1311
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1290
1312
  # The extra values given here take precedence over values defined on the client or passed to this method.
1291
1313
  extra_headers: Headers | None = None,
@@ -1304,6 +1326,12 @@ class DevboxesResource(SyncAPIResource):
1304
1326
  path: The path to write the file to on the Devbox. Path is relative to user home
1305
1327
  directory.
1306
1328
 
1329
+ chmod: File permissions in octal format (e.g., "644", "1755"). Optional. If not
1330
+ specified, default system permissions will be used.
1331
+
1332
+ owner: File owner username. Optional. If not specified, the file will be owned by the
1333
+ current user.
1334
+
1307
1335
  extra_headers: Send extra headers
1308
1336
 
1309
1337
  extra_query: Add additional query parameters to the request
@@ -1321,7 +1349,9 @@ class DevboxesResource(SyncAPIResource):
1321
1349
  body = deepcopy_minimal(
1322
1350
  {
1323
1351
  "path": path,
1352
+ "chmod": chmod,
1324
1353
  "file": file,
1354
+ "owner": owner,
1325
1355
  }
1326
1356
  )
1327
1357
  files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
@@ -1349,6 +1379,8 @@ class DevboxesResource(SyncAPIResource):
1349
1379
  *,
1350
1380
  contents: str,
1351
1381
  file_path: str,
1382
+ chmod: Optional[str] | NotGiven = NOT_GIVEN,
1383
+ owner: Optional[str] | NotGiven = NOT_GIVEN,
1352
1384
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1353
1385
  # The extra values given here take precedence over values defined on the client or passed to this method.
1354
1386
  extra_headers: Headers | None = None,
@@ -1368,6 +1400,12 @@ class DevboxesResource(SyncAPIResource):
1368
1400
  file_path: The path to write the file to on the Devbox. Path is relative to user home
1369
1401
  directory.
1370
1402
 
1403
+ chmod: File permissions in octal format (e.g., "644", "1755"). Optional. If not
1404
+ specified, default system permissions will be used.
1405
+
1406
+ owner: File owner username. Optional. If not specified, the file will be owned by the
1407
+ current user.
1408
+
1371
1409
  extra_headers: Send extra headers
1372
1410
 
1373
1411
  extra_query: Add additional query parameters to the request
@@ -1388,6 +1426,8 @@ class DevboxesResource(SyncAPIResource):
1388
1426
  {
1389
1427
  "contents": contents,
1390
1428
  "file_path": file_path,
1429
+ "chmod": chmod,
1430
+ "owner": owner,
1391
1431
  },
1392
1432
  devbox_write_file_contents_params.DevboxWriteFileContentsParams,
1393
1433
  ),
@@ -1592,17 +1632,19 @@ class AsyncDevboxesResource(AsyncAPIResource):
1592
1632
  async def create_and_await_running(
1593
1633
  self,
1594
1634
  *,
1595
- blueprint_id: str | NotGiven = NOT_GIVEN,
1596
- blueprint_name: str | NotGiven = NOT_GIVEN,
1635
+ blueprint_id: Optional[str] | NotGiven = NOT_GIVEN,
1636
+ blueprint_name: Optional[str] | NotGiven = NOT_GIVEN,
1597
1637
  code_mounts: Optional[Iterable[CodeMountParameters]] | NotGiven = NOT_GIVEN,
1598
- entrypoint: str | NotGiven = NOT_GIVEN,
1599
- environment_variables: Dict[str, str] | NotGiven = NOT_GIVEN,
1600
- file_mounts: Dict[str, str] | NotGiven = NOT_GIVEN,
1601
- launch_parameters: LaunchParameters | NotGiven = NOT_GIVEN,
1602
- metadata: Dict[str, str] | NotGiven = NOT_GIVEN,
1603
- name: str | NotGiven = NOT_GIVEN,
1604
- prebuilt: str | NotGiven = NOT_GIVEN,
1605
- snapshot_id: str | NotGiven = NOT_GIVEN,
1638
+ entrypoint: Optional[str] | NotGiven = NOT_GIVEN,
1639
+ environment_variables: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
1640
+ file_mounts: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
1641
+ launch_parameters: Optional[LaunchParameters] | NotGiven = NOT_GIVEN,
1642
+ metadata: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
1643
+ name: Optional[str] | NotGiven = NOT_GIVEN,
1644
+ prebuilt: Optional[str] | NotGiven = NOT_GIVEN,
1645
+ repo_connection_id: Optional[str] | NotGiven = NOT_GIVEN,
1646
+ secrets: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
1647
+ snapshot_id: Optional[str] | NotGiven = NOT_GIVEN,
1606
1648
  polling_config: PollingConfig | None = None,
1607
1649
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1608
1650
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -1610,23 +1652,41 @@ class AsyncDevboxesResource(AsyncAPIResource):
1610
1652
  extra_query: Query | None = None,
1611
1653
  extra_body: Body | None = None,
1612
1654
  timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1655
+ idempotency_key: str | None = None,
1613
1656
  ) -> DevboxView:
1614
1657
  """Create a devbox and wait for it to be in running state.
1615
1658
 
1616
1659
  Args:
1617
- code_mount_parameters: Parameters for mounting code into the devbox
1618
- environment_variables: Environment variables to set in the devbox
1619
- file_mounts: Files to mount into the devbox
1620
- launch_parameters: Parameters for launching the devbox
1621
- metadata: Metadata to attach to the devbox
1622
- name: Name of the devbox
1623
- prebuilt: Whether to use a prebuilt image
1624
- snapshot_id: ID of snapshot to create devbox from
1660
+ blueprint_id: Blueprint ID to use for the Devbox. If none set, the Devbox will be created with
1661
+ the default Runloop Devbox image. Only one of (Snapshot ID, Blueprint ID,
1662
+ Blueprint name) should be specified.
1663
+ blueprint_name: Name of Blueprint to use for the Devbox. When set, this will load the latest
1664
+ successfully built Blueprint with the given name. Only one of (Snapshot ID,
1665
+ Blueprint ID, Blueprint name) should be specified.
1666
+ code_mounts: A list of code mounts to be included in the Devbox.
1667
+ entrypoint: (Optional) When specified, the Devbox will run this script as its main
1668
+ executable. The devbox lifecycle will be bound to entrypoint, shutting down when
1669
+ the process is complete.
1670
+ environment_variables: (Optional) Environment variables used to configure your Devbox.
1671
+ file_mounts: (Optional) Map of paths and file contents to write before setup.
1672
+ launch_parameters: Parameters to configure the resources and launch time behavior of the Devbox.
1673
+ metadata: User defined metadata to attach to the devbox for organization.
1674
+ name: (Optional) A user specified name to give the Devbox.
1675
+ prebuilt: Reference to prebuilt Blueprint to create the Devbox from. Should not be used
1676
+ together with (Snapshot ID, Blueprint ID, or Blueprint name).
1677
+ repo_connection_id: Repository connection id the devbox should source its base image from.
1678
+ secrets: (Optional) Map of environment variable names to secret names. The secret values
1679
+ will be securely injected as environment variables in the Devbox. Example:
1680
+ {"DB_PASS": "DATABASE_PASSWORD"} sets environment variable 'DB_PASS' to the
1681
+ value of secret 'DATABASE_PASSWORD'.
1682
+ snapshot_id: Snapshot ID to use for the Devbox. Only one of (Snapshot ID, Blueprint ID,
1683
+ Blueprint name) should be specified.
1625
1684
  polling_config: Optional polling configuration
1626
1685
  extra_headers: Send extra headers
1627
1686
  extra_query: Add additional query parameters to the request
1628
1687
  extra_body: Add additional JSON properties to the request
1629
1688
  timeout: Override the client-level default timeout for this request, in seconds
1689
+ idempotency_key: Specify a custom idempotency key for this request
1630
1690
 
1631
1691
  Returns:
1632
1692
  The devbox in running state
@@ -1646,11 +1706,14 @@ class AsyncDevboxesResource(AsyncAPIResource):
1646
1706
  metadata=metadata,
1647
1707
  name=name,
1648
1708
  prebuilt=prebuilt,
1709
+ repo_connection_id=repo_connection_id,
1710
+ secrets=secrets,
1649
1711
  snapshot_id=snapshot_id,
1650
1712
  extra_headers=extra_headers,
1651
1713
  extra_query=extra_query,
1652
1714
  extra_body=extra_body,
1653
1715
  timeout=timeout,
1716
+ idempotency_key=idempotency_key,
1654
1717
  )
1655
1718
 
1656
1719
  return await self.await_running(
@@ -2555,7 +2618,9 @@ class AsyncDevboxesResource(AsyncAPIResource):
2555
2618
  id: str,
2556
2619
  *,
2557
2620
  path: str,
2621
+ chmod: Optional[str] | NotGiven = NOT_GIVEN,
2558
2622
  file: FileTypes | NotGiven = NOT_GIVEN,
2623
+ owner: Optional[str] | NotGiven = NOT_GIVEN,
2559
2624
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2560
2625
  # The extra values given here take precedence over values defined on the client or passed to this method.
2561
2626
  extra_headers: Headers | None = None,
@@ -2574,6 +2639,12 @@ class AsyncDevboxesResource(AsyncAPIResource):
2574
2639
  path: The path to write the file to on the Devbox. Path is relative to user home
2575
2640
  directory.
2576
2641
 
2642
+ chmod: File permissions in octal format (e.g., "644", "1755"). Optional. If not
2643
+ specified, default system permissions will be used.
2644
+
2645
+ owner: File owner username. Optional. If not specified, the file will be owned by the
2646
+ current user.
2647
+
2577
2648
  extra_headers: Send extra headers
2578
2649
 
2579
2650
  extra_query: Add additional query parameters to the request
@@ -2591,7 +2662,9 @@ class AsyncDevboxesResource(AsyncAPIResource):
2591
2662
  body = deepcopy_minimal(
2592
2663
  {
2593
2664
  "path": path,
2665
+ "chmod": chmod,
2594
2666
  "file": file,
2667
+ "owner": owner,
2595
2668
  }
2596
2669
  )
2597
2670
  files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
@@ -2619,6 +2692,8 @@ class AsyncDevboxesResource(AsyncAPIResource):
2619
2692
  *,
2620
2693
  contents: str,
2621
2694
  file_path: str,
2695
+ chmod: Optional[str] | NotGiven = NOT_GIVEN,
2696
+ owner: Optional[str] | NotGiven = NOT_GIVEN,
2622
2697
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2623
2698
  # The extra values given here take precedence over values defined on the client or passed to this method.
2624
2699
  extra_headers: Headers | None = None,
@@ -2638,6 +2713,12 @@ class AsyncDevboxesResource(AsyncAPIResource):
2638
2713
  file_path: The path to write the file to on the Devbox. Path is relative to user home
2639
2714
  directory.
2640
2715
 
2716
+ chmod: File permissions in octal format (e.g., "644", "1755"). Optional. If not
2717
+ specified, default system permissions will be used.
2718
+
2719
+ owner: File owner username. Optional. If not specified, the file will be owned by the
2720
+ current user.
2721
+
2641
2722
  extra_headers: Send extra headers
2642
2723
 
2643
2724
  extra_query: Add additional query parameters to the request
@@ -2658,6 +2739,8 @@ class AsyncDevboxesResource(AsyncAPIResource):
2658
2739
  {
2659
2740
  "contents": contents,
2660
2741
  "file_path": file_path,
2742
+ "chmod": chmod,
2743
+ "owner": owner,
2661
2744
  },
2662
2745
  devbox_write_file_contents_params.DevboxWriteFileContentsParams,
2663
2746
  ),
@@ -2,6 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from . import devboxes
6
+ from .. import _compat
5
7
  from .shared import (
6
8
  AfterIdle as AfterIdle,
7
9
  LaunchParameters as LaunchParameters,
@@ -81,3 +83,14 @@ from .devbox_snapshot_disk_async_params import DevboxSnapshotDiskAsyncParams as
81
83
  from .devbox_write_file_contents_params import DevboxWriteFileContentsParams as DevboxWriteFileContentsParams
82
84
  from .devbox_async_execution_detail_view import DevboxAsyncExecutionDetailView as DevboxAsyncExecutionDetailView
83
85
  from .devbox_read_file_contents_response import DevboxReadFileContentsResponse as DevboxReadFileContentsResponse
86
+
87
+ # Rebuild cyclical models only after all modules are imported.
88
+ # This ensures that, when building the deferred (due to cyclical references) model schema,
89
+ # Pydantic can resolve the necessary references.
90
+ # See: https://github.com/pydantic/pydantic/issues/11250 for more context.
91
+ if _compat.PYDANTIC_V2:
92
+ devboxes.code_segment_info_response.CodeSegmentInfoResponse.model_rebuild(_parent_namespace_depth=0)
93
+ devboxes.document_symbol.DocumentSymbol.model_rebuild(_parent_namespace_depth=0)
94
+ else:
95
+ devboxes.code_segment_info_response.CodeSegmentInfoResponse.update_forward_refs() # type: ignore
96
+ devboxes.document_symbol.DocumentSymbol.update_forward_refs() # type: ignore
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from typing import Optional
5
6
  from typing_extensions import Required, TypedDict
6
7
 
7
8
  from .._types import FileTypes
@@ -16,4 +17,16 @@ class DevboxUploadFileParams(TypedDict, total=False):
16
17
  Path is relative to user home directory.
17
18
  """
18
19
 
20
+ chmod: Optional[str]
21
+ """File permissions in octal format (e.g., "644", "1755").
22
+
23
+ Optional. If not specified, default system permissions will be used.
24
+ """
25
+
19
26
  file: FileTypes
27
+
28
+ owner: Optional[str]
29
+ """File owner username.
30
+
31
+ Optional. If not specified, the file will be owned by the current user.
32
+ """
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from typing import Optional
5
6
  from typing_extensions import Required, TypedDict
6
7
 
7
8
  __all__ = ["DevboxWriteFileContentsParams"]
@@ -16,3 +17,15 @@ class DevboxWriteFileContentsParams(TypedDict, total=False):
16
17
 
17
18
  Path is relative to user home directory.
18
19
  """
20
+
21
+ chmod: Optional[str]
22
+ """File permissions in octal format (e.g., "644", "1755").
23
+
24
+ Optional. If not specified, default system permissions will be used.
25
+ """
26
+
27
+ owner: Optional[str]
28
+ """File owner username.
29
+
30
+ Optional. If not specified, the file will be owned by the current user.
31
+ """
@@ -5,7 +5,6 @@ from __future__ import annotations
5
5
  from typing import List, Optional
6
6
 
7
7
  from .file_uri import FileUri
8
- from ..._compat import PYDANTIC_V2
9
8
  from ..._models import BaseModel
10
9
  from .base_range import BaseRange
11
10
  from .base_location import BaseLocation
@@ -45,10 +44,3 @@ class CodeSegmentInfoResponse(BaseModel):
45
44
 
46
45
 
47
46
  from .document_symbol import DocumentSymbol
48
-
49
- if PYDANTIC_V2:
50
- CodeSegmentInfoResponse.model_rebuild()
51
- Hover.model_rebuild()
52
- else:
53
- CodeSegmentInfoResponse.update_forward_refs() # type: ignore
54
- Hover.update_forward_refs() # type: ignore
@@ -2,12 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import TYPE_CHECKING, List, Optional
5
+ from typing import TYPE_CHECKING, Dict, List, Optional
6
6
 
7
7
  from pydantic import Field as FieldInfo
8
8
 
9
9
  from .range import Range
10
- from ..._compat import PYDANTIC_V2
11
10
  from ..._models import BaseModel
12
11
  from .symbol_tag import SymbolTag
13
12
  from .symbol_kind import SymbolKind
@@ -51,14 +50,9 @@ class DocumentSymbol(BaseModel):
51
50
  tags: Optional[List[SymbolTag]] = None
52
51
  """Tags for this document symbol."""
53
52
 
53
+ __pydantic_extra__: Dict[str, object] = FieldInfo(init=False) # pyright: ignore[reportIncompatibleVariableOverride]
54
54
  if TYPE_CHECKING:
55
55
  # Stub to indicate that arbitrary properties are accepted.
56
56
  # To access properties that are not valid identifiers you can use `getattr`, e.g.
57
57
  # `getattr(obj, '$type')`
58
58
  def __getattr__(self, attr: str) -> object: ...
59
-
60
-
61
- if PYDANTIC_V2:
62
- DocumentSymbol.model_rebuild()
63
- else:
64
- DocumentSymbol.update_forward_refs() # type: ignore
@@ -1,6 +1,8 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- from typing import TYPE_CHECKING
3
+ from typing import TYPE_CHECKING, Dict
4
+
5
+ from pydantic import Field as FieldInfo
4
6
 
5
7
  from .uinteger import Uinteger
6
8
  from ..._models import BaseModel
@@ -27,6 +29,7 @@ class Position(BaseModel):
27
29
  defaults to 0.
28
30
  """
29
31
 
32
+ __pydantic_extra__: Dict[str, object] = FieldInfo(init=False) # pyright: ignore[reportIncompatibleVariableOverride]
30
33
  if TYPE_CHECKING:
31
34
  # Stub to indicate that arbitrary properties are accepted.
32
35
  # To access properties that are not valid identifiers you can use `getattr`, e.g.
@@ -1,6 +1,8 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- from typing import TYPE_CHECKING
3
+ from typing import TYPE_CHECKING, Dict
4
+
5
+ from pydantic import Field as FieldInfo
4
6
 
5
7
  from .position import Position
6
8
  from ..._models import BaseModel
@@ -15,6 +17,7 @@ class Range(BaseModel):
15
17
  start: Position
16
18
  """The range's start position."""
17
19
 
20
+ __pydantic_extra__: Dict[str, object] = FieldInfo(init=False) # pyright: ignore[reportIncompatibleVariableOverride]
18
21
  if TYPE_CHECKING:
19
22
  # Stub to indicate that arbitrary properties are accepted.
20
23
  # To access properties that are not valid identifiers you can use `getattr`, e.g.
@@ -1,6 +1,6 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- from typing import TYPE_CHECKING
3
+ from typing import TYPE_CHECKING, Dict
4
4
 
5
5
  from pydantic import Field as FieldInfo
6
6
 
@@ -20,6 +20,7 @@ class TextEdit(BaseModel):
20
20
  To insert text into a document create a range where start === end.
21
21
  """
22
22
 
23
+ __pydantic_extra__: Dict[str, object] = FieldInfo(init=False) # pyright: ignore[reportIncompatibleVariableOverride]
23
24
  if TYPE_CHECKING:
24
25
  # Stub to indicate that arbitrary properties are accepted.
25
26
  # To access properties that are not valid identifiers you can use `getattr`, e.g.