kernel 0.43.0__tar.gz → 0.45.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 (257) hide show
  1. {kernel-0.43.0 → kernel-0.45.0}/.gitignore +1 -0
  2. kernel-0.45.0/.release-please-manifest.json +3 -0
  3. {kernel-0.43.0 → kernel-0.45.0}/CHANGELOG.md +41 -0
  4. {kernel-0.43.0 → kernel-0.45.0}/PKG-INFO +2 -2
  5. {kernel-0.43.0 → kernel-0.45.0}/api.md +2 -0
  6. {kernel-0.43.0 → kernel-0.45.0}/pyproject.toml +2 -2
  7. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_compat.py +9 -2
  8. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_qs.py +4 -1
  9. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/__init__.py +1 -0
  10. kernel-0.45.0/src/kernel/_utils/_path.py +127 -0
  11. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_version.py +1 -1
  12. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/auth/connections.py +188 -15
  13. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/browser_pools.py +70 -26
  14. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/browsers/browsers.py +37 -19
  15. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/browsers/computer.py +53 -29
  16. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/browsers/fs/fs.py +25 -25
  17. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/browsers/fs/watch.py +7 -7
  18. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/browsers/logs.py +3 -3
  19. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/browsers/playwright.py +3 -3
  20. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/browsers/process.py +15 -15
  21. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/browsers/replays.py +9 -9
  22. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/credential_providers.py +11 -11
  23. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/credentials.py +9 -9
  24. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/deployments.py +7 -7
  25. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/extensions.py +5 -5
  26. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/invocations.py +11 -11
  27. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/profiles.py +7 -7
  28. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/proxies.py +7 -7
  29. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/auth/__init__.py +1 -0
  30. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/auth/connection_follow_response.py +23 -0
  31. kernel-0.45.0/src/kernel/types/auth/connection_submit_params.py +31 -0
  32. kernel-0.45.0/src/kernel/types/auth/connection_update_params.py +72 -0
  33. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/auth/managed_auth.py +23 -1
  34. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_create_params.py +15 -11
  35. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_create_response.py +17 -10
  36. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_list_response.py +17 -10
  37. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_pool.py +22 -10
  38. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_pool_acquire_response.py +17 -10
  39. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_pool_create_params.py +22 -10
  40. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_pool_update_params.py +22 -10
  41. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_retrieve_response.py +17 -10
  42. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_update_params.py +6 -0
  43. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_update_response.py +17 -10
  44. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_batch_params.py +20 -2
  45. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_drag_mouse_params.py +12 -0
  46. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_scroll_params.py +8 -2
  47. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/invocation_list_browsers_response.py +17 -10
  48. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared/browser_viewport.py +7 -3
  49. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared_params/browser_viewport.py +7 -3
  50. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/auth/test_connections.py +132 -0
  51. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/browsers/test_computer.py +4 -0
  52. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/test_browser_pools.py +4 -0
  53. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/test_browsers.py +2 -0
  54. kernel-0.45.0/tests/test_utils/test_path.py +89 -0
  55. kernel-0.43.0/.release-please-manifest.json +0 -3
  56. kernel-0.43.0/src/kernel/types/auth/connection_submit_params.py +0 -19
  57. {kernel-0.43.0 → kernel-0.45.0}/CONTRIBUTING.md +0 -0
  58. {kernel-0.43.0 → kernel-0.45.0}/LICENSE +0 -0
  59. {kernel-0.43.0 → kernel-0.45.0}/README.md +0 -0
  60. {kernel-0.43.0 → kernel-0.45.0}/SECURITY.md +0 -0
  61. {kernel-0.43.0 → kernel-0.45.0}/bin/check-release-environment +0 -0
  62. {kernel-0.43.0 → kernel-0.45.0}/bin/publish-pypi +0 -0
  63. {kernel-0.43.0 → kernel-0.45.0}/examples/.keep +0 -0
  64. {kernel-0.43.0 → kernel-0.45.0}/noxfile.py +0 -0
  65. {kernel-0.43.0 → kernel-0.45.0}/release-please-config.json +0 -0
  66. {kernel-0.43.0 → kernel-0.45.0}/requirements-dev.lock +0 -0
  67. {kernel-0.43.0 → kernel-0.45.0}/requirements.lock +0 -0
  68. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/__init__.py +0 -0
  69. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_base_client.py +0 -0
  70. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_client.py +0 -0
  71. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_constants.py +0 -0
  72. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_exceptions.py +0 -0
  73. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_files.py +0 -0
  74. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_models.py +0 -0
  75. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_resource.py +0 -0
  76. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_response.py +0 -0
  77. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_streaming.py +0 -0
  78. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_types.py +0 -0
  79. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_compat.py +0 -0
  80. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_datetime_parse.py +0 -0
  81. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_json.py +0 -0
  82. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_logs.py +0 -0
  83. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_proxy.py +0 -0
  84. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_reflection.py +0 -0
  85. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_resources_proxy.py +0 -0
  86. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_streams.py +0 -0
  87. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_sync.py +0 -0
  88. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_transform.py +0 -0
  89. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_typing.py +0 -0
  90. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/_utils/_utils.py +0 -0
  91. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/app_framework.py +0 -0
  92. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/lib/.keep +0 -0
  93. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/pagination.py +0 -0
  94. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/py.typed +0 -0
  95. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/__init__.py +0 -0
  96. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/apps.py +0 -0
  97. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/auth/__init__.py +0 -0
  98. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/auth/auth.py +0 -0
  99. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/browsers/__init__.py +0 -0
  100. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/resources/browsers/fs/__init__.py +0 -0
  101. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/__init__.py +0 -0
  102. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/app_list_params.py +0 -0
  103. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/app_list_response.py +0 -0
  104. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/auth/connection_create_params.py +0 -0
  105. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/auth/connection_list_params.py +0 -0
  106. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/auth/connection_login_params.py +0 -0
  107. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/auth/login_response.py +0 -0
  108. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/auth/submit_fields_response.py +0 -0
  109. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_delete_params.py +0 -0
  110. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_list_params.py +0 -0
  111. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_load_extensions_params.py +0 -0
  112. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_persistence.py +0 -0
  113. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_persistence_param.py +0 -0
  114. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_pool_acquire_params.py +0 -0
  115. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_pool_delete_params.py +0 -0
  116. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_pool_list_response.py +0 -0
  117. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_pool_ref.py +0 -0
  118. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_pool_release_params.py +0 -0
  119. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_retrieve_params.py +0 -0
  120. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browser_usage.py +0 -0
  121. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/__init__.py +0 -0
  122. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_capture_screenshot_params.py +0 -0
  123. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_click_mouse_params.py +0 -0
  124. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_get_mouse_position_response.py +0 -0
  125. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_move_mouse_params.py +0 -0
  126. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_press_key_params.py +0 -0
  127. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_read_clipboard_response.py +0 -0
  128. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_set_cursor_visibility_params.py +0 -0
  129. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_set_cursor_visibility_response.py +0 -0
  130. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_type_text_params.py +0 -0
  131. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/computer_write_clipboard_params.py +0 -0
  132. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_create_directory_params.py +0 -0
  133. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_delete_directory_params.py +0 -0
  134. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_delete_file_params.py +0 -0
  135. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_download_dir_zip_params.py +0 -0
  136. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_file_info_params.py +0 -0
  137. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_file_info_response.py +0 -0
  138. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_list_files_params.py +0 -0
  139. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_list_files_response.py +0 -0
  140. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_move_params.py +0 -0
  141. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_read_file_params.py +0 -0
  142. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_set_file_permissions_params.py +0 -0
  143. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_upload_params.py +0 -0
  144. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_upload_zip_params.py +0 -0
  145. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/f_write_file_params.py +0 -0
  146. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/fs/__init__.py +0 -0
  147. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/fs/watch_events_response.py +0 -0
  148. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/fs/watch_start_params.py +0 -0
  149. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/fs/watch_start_response.py +0 -0
  150. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/log_stream_params.py +0 -0
  151. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/playwright_execute_params.py +0 -0
  152. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/playwright_execute_response.py +0 -0
  153. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_exec_params.py +0 -0
  154. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_exec_response.py +0 -0
  155. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_kill_params.py +0 -0
  156. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_kill_response.py +0 -0
  157. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_resize_params.py +0 -0
  158. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_resize_response.py +0 -0
  159. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_spawn_params.py +0 -0
  160. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_spawn_response.py +0 -0
  161. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_status_response.py +0 -0
  162. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_stdin_params.py +0 -0
  163. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_stdin_response.py +0 -0
  164. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/process_stdout_stream_response.py +0 -0
  165. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/replay_list_response.py +0 -0
  166. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/replay_start_params.py +0 -0
  167. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/browsers/replay_start_response.py +0 -0
  168. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential.py +0 -0
  169. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential_create_params.py +0 -0
  170. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential_list_params.py +0 -0
  171. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential_provider.py +0 -0
  172. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential_provider_create_params.py +0 -0
  173. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential_provider_item.py +0 -0
  174. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential_provider_list_items_response.py +0 -0
  175. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential_provider_list_response.py +0 -0
  176. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential_provider_test_result.py +0 -0
  177. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential_provider_update_params.py +0 -0
  178. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential_totp_code_response.py +0 -0
  179. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/credential_update_params.py +0 -0
  180. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/deployment_create_params.py +0 -0
  181. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/deployment_create_response.py +0 -0
  182. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/deployment_follow_params.py +0 -0
  183. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/deployment_follow_response.py +0 -0
  184. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/deployment_list_params.py +0 -0
  185. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/deployment_list_response.py +0 -0
  186. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/deployment_retrieve_response.py +0 -0
  187. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/deployment_state_event.py +0 -0
  188. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/extension_download_from_chrome_store_params.py +0 -0
  189. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/extension_list_response.py +0 -0
  190. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/extension_upload_params.py +0 -0
  191. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/extension_upload_response.py +0 -0
  192. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/invocation_create_params.py +0 -0
  193. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/invocation_create_response.py +0 -0
  194. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/invocation_follow_params.py +0 -0
  195. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/invocation_follow_response.py +0 -0
  196. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/invocation_list_params.py +0 -0
  197. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/invocation_list_response.py +0 -0
  198. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/invocation_retrieve_response.py +0 -0
  199. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/invocation_state_event.py +0 -0
  200. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/invocation_update_params.py +0 -0
  201. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/invocation_update_response.py +0 -0
  202. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/profile.py +0 -0
  203. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/profile_create_params.py +0 -0
  204. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/profile_list_params.py +0 -0
  205. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/proxy_check_response.py +0 -0
  206. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/proxy_create_params.py +0 -0
  207. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/proxy_create_response.py +0 -0
  208. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/proxy_list_response.py +0 -0
  209. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/proxy_retrieve_response.py +0 -0
  210. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared/__init__.py +0 -0
  211. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared/app_action.py +0 -0
  212. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared/browser_extension.py +0 -0
  213. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared/browser_profile.py +0 -0
  214. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared/error_detail.py +0 -0
  215. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared/error_event.py +0 -0
  216. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared/error_model.py +0 -0
  217. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared/heartbeat_event.py +0 -0
  218. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared/log_event.py +0 -0
  219. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared_params/__init__.py +0 -0
  220. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared_params/browser_extension.py +0 -0
  221. {kernel-0.43.0 → kernel-0.45.0}/src/kernel/types/shared_params/browser_profile.py +0 -0
  222. {kernel-0.43.0 → kernel-0.45.0}/tests/__init__.py +0 -0
  223. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/__init__.py +0 -0
  224. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/auth/__init__.py +0 -0
  225. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/browsers/__init__.py +0 -0
  226. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/browsers/fs/__init__.py +0 -0
  227. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/browsers/fs/test_watch.py +0 -0
  228. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/browsers/test_fs.py +0 -0
  229. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/browsers/test_logs.py +0 -0
  230. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/browsers/test_playwright.py +0 -0
  231. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/browsers/test_process.py +0 -0
  232. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/browsers/test_replays.py +0 -0
  233. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/test_apps.py +0 -0
  234. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/test_credential_providers.py +0 -0
  235. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/test_credentials.py +0 -0
  236. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/test_deployments.py +0 -0
  237. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/test_extensions.py +0 -0
  238. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/test_invocations.py +0 -0
  239. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/test_profiles.py +0 -0
  240. {kernel-0.43.0 → kernel-0.45.0}/tests/api_resources/test_proxies.py +0 -0
  241. {kernel-0.43.0 → kernel-0.45.0}/tests/conftest.py +0 -0
  242. {kernel-0.43.0 → kernel-0.45.0}/tests/sample_file.txt +0 -0
  243. {kernel-0.43.0 → kernel-0.45.0}/tests/test_client.py +0 -0
  244. {kernel-0.43.0 → kernel-0.45.0}/tests/test_deepcopy.py +0 -0
  245. {kernel-0.43.0 → kernel-0.45.0}/tests/test_extract_files.py +0 -0
  246. {kernel-0.43.0 → kernel-0.45.0}/tests/test_files.py +0 -0
  247. {kernel-0.43.0 → kernel-0.45.0}/tests/test_models.py +0 -0
  248. {kernel-0.43.0 → kernel-0.45.0}/tests/test_qs.py +0 -0
  249. {kernel-0.43.0 → kernel-0.45.0}/tests/test_required_args.py +0 -0
  250. {kernel-0.43.0 → kernel-0.45.0}/tests/test_response.py +0 -0
  251. {kernel-0.43.0 → kernel-0.45.0}/tests/test_streaming.py +0 -0
  252. {kernel-0.43.0 → kernel-0.45.0}/tests/test_transform.py +0 -0
  253. {kernel-0.43.0 → kernel-0.45.0}/tests/test_utils/test_datetime_parse.py +0 -0
  254. {kernel-0.43.0 → kernel-0.45.0}/tests/test_utils/test_json.py +0 -0
  255. {kernel-0.43.0 → kernel-0.45.0}/tests/test_utils/test_proxy.py +0 -0
  256. {kernel-0.43.0 → kernel-0.45.0}/tests/test_utils/test_typing.py +0 -0
  257. {kernel-0.43.0 → kernel-0.45.0}/tests/utils.py +0 -0
@@ -1,4 +1,5 @@
1
1
  .prism.log
2
+ .stdy.log
2
3
  _dev
3
4
 
4
5
  __pycache__
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.45.0"
3
+ }
@@ -1,5 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.45.0 (2026-03-30)
4
+
5
+ Full Changelog: [v0.44.0...v0.45.0](https://github.com/kernel/kernel-python-sdk/compare/v0.44.0...v0.45.0)
6
+
7
+ ### Features
8
+
9
+ * [kernel-1008] browser pools add custom policy ([09f8520](https://github.com/kernel/kernel-python-sdk/commit/09f85209bc3c646d8a2a1231ed3925cad830f3dc))
10
+ * Add disable_default_proxy for stealth browsers ([3a75e81](https://github.com/kernel/kernel-python-sdk/commit/3a75e819e6e7caffdfba74a9627ed418de247de7))
11
+ * **internal:** implement indices array format for query and form serialization ([c798c39](https://github.com/kernel/kernel-python-sdk/commit/c798c39251def1447d61215c187f0e285f225f3d))
12
+
13
+
14
+ ### Chores
15
+
16
+ * **ci:** skip lint on metadata-only changes ([f0815a8](https://github.com/kernel/kernel-python-sdk/commit/f0815a8d36799444220552cb599a19b79c9b5e12))
17
+ * **internal:** update gitignore ([34b47ab](https://github.com/kernel/kernel-python-sdk/commit/34b47ab40aeb12ad9f78e923493caaca88a554b4))
18
+
19
+ ## 0.44.0 (2026-03-20)
20
+
21
+ Full Changelog: [v0.43.0...v0.44.0](https://github.com/kernel/kernel-python-sdk/compare/v0.43.0...v0.44.0)
22
+
23
+ ### Features
24
+
25
+ * Add GPU viewport presets and GPU encoder defaults ([0735b45](https://github.com/kernel/kernel-python-sdk/commit/0735b45fc92950cef3afea92a879712ea0ebdf0f))
26
+ * Adds description to OAS spec for docs about delta_x, delta_y ([9841aac](https://github.com/kernel/kernel-python-sdk/commit/9841aac21588beb0c6a22baf5c5b0bf8e8cdd024))
27
+ * Drop headless GPU support and disable pooling ([cda8f94](https://github.com/kernel/kernel-python-sdk/commit/cda8f94f6cebabc3b3b6f95aff765816255a9270))
28
+ * Enhance managed authentication with CUA support and new features ([ece76c2](https://github.com/kernel/kernel-python-sdk/commit/ece76c2f7d2a20af7c00988d161c4e275623aaac))
29
+ * expose smooth drag mouse movement via public API ([c6f6862](https://github.com/kernel/kernel-python-sdk/commit/c6f6862d03620bb218a99c85431e384c5c8e5e4c))
30
+ * Rename hardware acceleration UI/docs wording to GPU acceleration ([9ee4d0c](https://github.com/kernel/kernel-python-sdk/commit/9ee4d0c080da7f649a3bde63640593f33d5d0f6b))
31
+
32
+
33
+ ### Bug Fixes
34
+
35
+ * **deps:** bump minimum typing-extensions version ([fd55947](https://github.com/kernel/kernel-python-sdk/commit/fd55947f1776b43cca804622d0c771ebe99ead60))
36
+ * **pydantic:** do not pass `by_alias` unless set ([a815a82](https://github.com/kernel/kernel-python-sdk/commit/a815a8237cce2098b2f5d6a8ad5def400d418fbb))
37
+ * sanitize endpoint path params ([9b55d2b](https://github.com/kernel/kernel-python-sdk/commit/9b55d2be9472f779fe20d7d863dacae1030d2b49))
38
+
39
+
40
+ ### Chores
41
+
42
+ * **internal:** tweak CI branches ([8781c7d](https://github.com/kernel/kernel-python-sdk/commit/8781c7d9aa8759e487e5d86cbb82bfb7eb3d314e))
43
+
3
44
  ## 0.43.0 (2026-03-10)
4
45
 
5
46
  Full Changelog: [v0.42.1...v0.43.0](https://github.com/kernel/kernel-python-sdk/compare/v0.42.1...v0.43.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: kernel
3
- Version: 0.43.0
3
+ Version: 0.45.0
4
4
  Summary: The official Python library for the kernel API
5
5
  Project-URL: Homepage, https://github.com/kernel/kernel-python-sdk
6
6
  Project-URL: Repository, https://github.com/kernel/kernel-python-sdk
@@ -27,7 +27,7 @@ Requires-Dist: distro<2,>=1.7.0
27
27
  Requires-Dist: httpx<1,>=0.23.0
28
28
  Requires-Dist: pydantic<3,>=1.9.0
29
29
  Requires-Dist: sniffio
30
- Requires-Dist: typing-extensions<5,>=4.10
30
+ Requires-Dist: typing-extensions<5,>=4.14
31
31
  Provides-Extra: aiohttp
32
32
  Requires-Dist: aiohttp; extra == 'aiohttp'
33
33
  Requires-Dist: httpx-aiohttp>=0.1.9; extra == 'aiohttp'
@@ -245,6 +245,7 @@ from kernel.types.auth import (
245
245
  LoginResponse,
246
246
  ManagedAuth,
247
247
  ManagedAuthCreateRequest,
248
+ ManagedAuthUpdateRequest,
248
249
  SubmitFieldsRequest,
249
250
  SubmitFieldsResponse,
250
251
  ConnectionFollowResponse,
@@ -255,6 +256,7 @@ Methods:
255
256
 
256
257
  - <code title="post /auth/connections">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">create</a>(\*\*<a href="src/kernel/types/auth/connection_create_params.py">params</a>) -> <a href="./src/kernel/types/auth/managed_auth.py">ManagedAuth</a></code>
257
258
  - <code title="get /auth/connections/{id}">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">retrieve</a>(id) -> <a href="./src/kernel/types/auth/managed_auth.py">ManagedAuth</a></code>
259
+ - <code title="patch /auth/connections/{id}">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">update</a>(id, \*\*<a href="src/kernel/types/auth/connection_update_params.py">params</a>) -> <a href="./src/kernel/types/auth/managed_auth.py">ManagedAuth</a></code>
258
260
  - <code title="get /auth/connections">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">list</a>(\*\*<a href="src/kernel/types/auth/connection_list_params.py">params</a>) -> <a href="./src/kernel/types/auth/managed_auth.py">SyncOffsetPagination[ManagedAuth]</a></code>
259
261
  - <code title="delete /auth/connections/{id}">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">delete</a>(id) -> None</code>
260
262
  - <code title="get /auth/connections/{id}/events">client.auth.connections.<a href="./src/kernel/resources/auth/connections.py">follow</a>(id) -> <a href="./src/kernel/types/auth/connection_follow_response.py">ConnectionFollowResponse</a></code>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kernel"
3
- version = "0.43.0"
3
+ version = "0.45.0"
4
4
  description = "The official Python library for the kernel API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -11,7 +11,7 @@ authors = [
11
11
  dependencies = [
12
12
  "httpx>=0.23.0, <1",
13
13
  "pydantic>=1.9.0, <3",
14
- "typing-extensions>=4.10, <5",
14
+ "typing-extensions>=4.14, <5",
15
15
  "anyio>=3.5.0, <5",
16
16
  "distro>=1.7.0, <2",
17
17
  "sniffio",
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING, Any, Union, Generic, TypeVar, Callable, cast, overload
4
4
  from datetime import date, datetime
5
- from typing_extensions import Self, Literal
5
+ from typing_extensions import Self, Literal, TypedDict
6
6
 
7
7
  import pydantic
8
8
  from pydantic.fields import FieldInfo
@@ -131,6 +131,10 @@ def model_json(model: pydantic.BaseModel, *, indent: int | None = None) -> str:
131
131
  return model.model_dump_json(indent=indent)
132
132
 
133
133
 
134
+ class _ModelDumpKwargs(TypedDict, total=False):
135
+ by_alias: bool
136
+
137
+
134
138
  def model_dump(
135
139
  model: pydantic.BaseModel,
136
140
  *,
@@ -142,6 +146,9 @@ def model_dump(
142
146
  by_alias: bool | None = None,
143
147
  ) -> dict[str, Any]:
144
148
  if (not PYDANTIC_V1) or hasattr(model, "model_dump"):
149
+ kwargs: _ModelDumpKwargs = {}
150
+ if by_alias is not None:
151
+ kwargs["by_alias"] = by_alias
145
152
  return model.model_dump(
146
153
  mode=mode,
147
154
  exclude=exclude,
@@ -149,7 +156,7 @@ def model_dump(
149
156
  exclude_defaults=exclude_defaults,
150
157
  # warnings are not supported in Pydantic v1
151
158
  warnings=True if PYDANTIC_V1 else warnings,
152
- by_alias=by_alias,
159
+ **kwargs,
153
160
  )
154
161
  return cast(
155
162
  "dict[str, Any]",
@@ -101,7 +101,10 @@ class Querystring:
101
101
  items.extend(self._stringify_item(key, item, opts))
102
102
  return items
103
103
  elif array_format == "indices":
104
- raise NotImplementedError("The array indices format is not supported yet")
104
+ items = []
105
+ for i, item in enumerate(value):
106
+ items.extend(self._stringify_item(f"{key}[{i}]", item, opts))
107
+ return items
105
108
  elif array_format == "brackets":
106
109
  items = []
107
110
  key = key + "[]"
@@ -1,3 +1,4 @@
1
+ from ._path import path_template as path_template
1
2
  from ._sync import asyncify as asyncify
2
3
  from ._proxy import LazyProxy as LazyProxy
3
4
  from ._utils import (
@@ -0,0 +1,127 @@
1
+ from __future__ import annotations
2
+
3
+ import re
4
+ from typing import (
5
+ Any,
6
+ Mapping,
7
+ Callable,
8
+ )
9
+ from urllib.parse import quote
10
+
11
+ # Matches '.' or '..' where each dot is either literal or percent-encoded (%2e / %2E).
12
+ _DOT_SEGMENT_RE = re.compile(r"^(?:\.|%2[eE]){1,2}$")
13
+
14
+ _PLACEHOLDER_RE = re.compile(r"\{(\w+)\}")
15
+
16
+
17
+ def _quote_path_segment_part(value: str) -> str:
18
+ """Percent-encode `value` for use in a URI path segment.
19
+
20
+ Considers characters not in `pchar` set from RFC 3986 §3.3 to be unsafe.
21
+ https://datatracker.ietf.org/doc/html/rfc3986#section-3.3
22
+ """
23
+ # quote() already treats unreserved characters (letters, digits, and -._~)
24
+ # as safe, so we only need to add sub-delims, ':', and '@'.
25
+ # Notably, unlike the default `safe` for quote(), / is unsafe and must be quoted.
26
+ return quote(value, safe="!$&'()*+,;=:@")
27
+
28
+
29
+ def _quote_query_part(value: str) -> str:
30
+ """Percent-encode `value` for use in a URI query string.
31
+
32
+ Considers &, = and characters not in `query` set from RFC 3986 §3.4 to be unsafe.
33
+ https://datatracker.ietf.org/doc/html/rfc3986#section-3.4
34
+ """
35
+ return quote(value, safe="!$'()*+,;:@/?")
36
+
37
+
38
+ def _quote_fragment_part(value: str) -> str:
39
+ """Percent-encode `value` for use in a URI fragment.
40
+
41
+ Considers characters not in `fragment` set from RFC 3986 §3.5 to be unsafe.
42
+ https://datatracker.ietf.org/doc/html/rfc3986#section-3.5
43
+ """
44
+ return quote(value, safe="!$&'()*+,;=:@/?")
45
+
46
+
47
+ def _interpolate(
48
+ template: str,
49
+ values: Mapping[str, Any],
50
+ quoter: Callable[[str], str],
51
+ ) -> str:
52
+ """Replace {name} placeholders in `template`, quoting each value with `quoter`.
53
+
54
+ Placeholder names are looked up in `values`.
55
+
56
+ Raises:
57
+ KeyError: If a placeholder is not found in `values`.
58
+ """
59
+ # re.split with a capturing group returns alternating
60
+ # [text, name, text, name, ..., text] elements.
61
+ parts = _PLACEHOLDER_RE.split(template)
62
+
63
+ for i in range(1, len(parts), 2):
64
+ name = parts[i]
65
+ if name not in values:
66
+ raise KeyError(f"a value for placeholder {{{name}}} was not provided")
67
+ val = values[name]
68
+ if val is None:
69
+ parts[i] = "null"
70
+ elif isinstance(val, bool):
71
+ parts[i] = "true" if val else "false"
72
+ else:
73
+ parts[i] = quoter(str(values[name]))
74
+
75
+ return "".join(parts)
76
+
77
+
78
+ def path_template(template: str, /, **kwargs: Any) -> str:
79
+ """Interpolate {name} placeholders in `template` from keyword arguments.
80
+
81
+ Args:
82
+ template: The template string containing {name} placeholders.
83
+ **kwargs: Keyword arguments to interpolate into the template.
84
+
85
+ Returns:
86
+ The template with placeholders interpolated and percent-encoded.
87
+
88
+ Safe characters for percent-encoding are dependent on the URI component.
89
+ Placeholders in path and fragment portions are percent-encoded where the `segment`
90
+ and `fragment` sets from RFC 3986 respectively are considered safe.
91
+ Placeholders in the query portion are percent-encoded where the `query` set from
92
+ RFC 3986 §3.3 is considered safe except for = and & characters.
93
+
94
+ Raises:
95
+ KeyError: If a placeholder is not found in `kwargs`.
96
+ ValueError: If resulting path contains /./ or /../ segments (including percent-encoded dot-segments).
97
+ """
98
+ # Split the template into path, query, and fragment portions.
99
+ fragment_template: str | None = None
100
+ query_template: str | None = None
101
+
102
+ rest = template
103
+ if "#" in rest:
104
+ rest, fragment_template = rest.split("#", 1)
105
+ if "?" in rest:
106
+ rest, query_template = rest.split("?", 1)
107
+ path_template = rest
108
+
109
+ # Interpolate each portion with the appropriate quoting rules.
110
+ path_result = _interpolate(path_template, kwargs, _quote_path_segment_part)
111
+
112
+ # Reject dot-segments (. and ..) in the final assembled path. The check
113
+ # runs after interpolation so that adjacent placeholders or a mix of static
114
+ # text and placeholders that together form a dot-segment are caught.
115
+ # Also reject percent-encoded dot-segments to protect against incorrectly
116
+ # implemented normalization in servers/proxies.
117
+ for segment in path_result.split("/"):
118
+ if _DOT_SEGMENT_RE.match(segment):
119
+ raise ValueError(f"Constructed path {path_result!r} contains dot-segment {segment!r} which is not allowed")
120
+
121
+ result = path_result
122
+ if query_template is not None:
123
+ result += "?" + _interpolate(query_template, kwargs, _quote_query_part)
124
+ if fragment_template is not None:
125
+ result += "#" + _interpolate(fragment_template, kwargs, _quote_fragment_part)
126
+
127
+ return result
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "kernel"
4
- __version__ = "0.43.0" # x-release-please-version
4
+ __version__ = "0.45.0" # x-release-please-version
@@ -7,7 +7,7 @@ from typing import Any, Dict, cast
7
7
  import httpx
8
8
 
9
9
  from ..._types import Body, Omit, Query, Headers, NoneType, NotGiven, SequenceNotStr, omit, not_given
10
- from ..._utils import maybe_transform, async_maybe_transform
10
+ from ..._utils import path_template, maybe_transform, async_maybe_transform
11
11
  from ..._compat import cached_property
12
12
  from ..._resource import SyncAPIResource, AsyncAPIResource
13
13
  from ..._response import (
@@ -23,6 +23,7 @@ from ...types.auth import (
23
23
  connection_login_params,
24
24
  connection_create_params,
25
25
  connection_submit_params,
26
+ connection_update_params,
26
27
  )
27
28
  from ..._base_client import AsyncPaginator, make_request_options
28
29
  from ...types.auth.managed_auth import ManagedAuth
@@ -179,7 +180,77 @@ class ConnectionsResource(SyncAPIResource):
179
180
  if not id:
180
181
  raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
181
182
  return self._get(
182
- f"/auth/connections/{id}",
183
+ path_template("/auth/connections/{id}", id=id),
184
+ options=make_request_options(
185
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
186
+ ),
187
+ cast_to=ManagedAuth,
188
+ )
189
+
190
+ def update(
191
+ self,
192
+ id: str,
193
+ *,
194
+ allowed_domains: SequenceNotStr[str] | Omit = omit,
195
+ credential: connection_update_params.Credential | Omit = omit,
196
+ health_check_interval: int | Omit = omit,
197
+ login_url: str | Omit = omit,
198
+ proxy: connection_update_params.Proxy | Omit = omit,
199
+ save_credentials: bool | Omit = omit,
200
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
201
+ # The extra values given here take precedence over values defined on the client or passed to this method.
202
+ extra_headers: Headers | None = None,
203
+ extra_query: Query | None = None,
204
+ extra_body: Body | None = None,
205
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
206
+ ) -> ManagedAuth:
207
+ """Update an auth connection's configuration.
208
+
209
+ Only the fields provided will be
210
+ updated.
211
+
212
+ Args:
213
+ allowed_domains: Additional domains valid for this auth flow (replaces existing list)
214
+
215
+ credential:
216
+ Reference to credentials for the auth connection. Use one of:
217
+
218
+ - { name } for Kernel credentials
219
+ - { provider, path } for external provider item
220
+ - { provider, auto: true } for external provider domain lookup
221
+
222
+ health_check_interval: Interval in seconds between automatic health checks
223
+
224
+ login_url: Login page URL. Set to empty string to clear.
225
+
226
+ proxy: Proxy selection. Provide either id or name. The proxy must belong to the
227
+ caller's org.
228
+
229
+ save_credentials: Whether to save credentials after every successful login
230
+
231
+ extra_headers: Send extra headers
232
+
233
+ extra_query: Add additional query parameters to the request
234
+
235
+ extra_body: Add additional JSON properties to the request
236
+
237
+ timeout: Override the client-level default timeout for this request, in seconds
238
+ """
239
+ if not id:
240
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
241
+ return self._patch(
242
+ path_template("/auth/connections/{id}", id=id),
243
+ body=maybe_transform(
244
+ {
245
+ "allowed_domains": allowed_domains,
246
+ "credential": credential,
247
+ "health_check_interval": health_check_interval,
248
+ "login_url": login_url,
249
+ "proxy": proxy,
250
+ "save_credentials": save_credentials,
251
+ },
252
+ connection_update_params.ConnectionUpdateParams,
253
+ ),
183
254
  options=make_request_options(
184
255
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
185
256
  ),
@@ -273,7 +344,7 @@ class ConnectionsResource(SyncAPIResource):
273
344
  raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
274
345
  extra_headers = {"Accept": "*/*", **(extra_headers or {})}
275
346
  return self._delete(
276
- f"/auth/connections/{id}",
347
+ path_template("/auth/connections/{id}", id=id),
277
348
  options=make_request_options(
278
349
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
279
350
  ),
@@ -309,7 +380,7 @@ class ConnectionsResource(SyncAPIResource):
309
380
  raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
310
381
  extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
311
382
  return self._get(
312
- f"/auth/connections/{id}/events",
383
+ path_template("/auth/connections/{id}/events", id=id),
313
384
  options=make_request_options(
314
385
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
315
386
  ),
@@ -353,7 +424,7 @@ class ConnectionsResource(SyncAPIResource):
353
424
  if not id:
354
425
  raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
355
426
  return self._post(
356
- f"/auth/connections/{id}/login",
427
+ path_template("/auth/connections/{id}/login", id=id),
357
428
  body=maybe_transform({"proxy": proxy}, connection_login_params.ConnectionLoginParams),
358
429
  options=make_request_options(
359
430
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
@@ -367,7 +438,9 @@ class ConnectionsResource(SyncAPIResource):
367
438
  *,
368
439
  fields: Dict[str, str] | Omit = omit,
369
440
  mfa_option_id: str | Omit = omit,
441
+ sign_in_option_id: str | Omit = omit,
370
442
  sso_button_selector: str | Omit = omit,
443
+ sso_provider: str | Omit = omit,
371
444
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
372
445
  # The extra values given here take precedence over values defined on the client or passed to this method.
373
446
  extra_headers: Headers | None = None,
@@ -383,9 +456,15 @@ class ConnectionsResource(SyncAPIResource):
383
456
  Args:
384
457
  fields: Map of field name to value
385
458
 
386
- mfa_option_id: Optional MFA option ID if user selected an MFA method
459
+ mfa_option_id: The MFA method type to select (when mfa_options were returned)
460
+
461
+ sign_in_option_id: The sign-in option ID to select (when sign_in_options were returned)
387
462
 
388
- sso_button_selector: Optional XPath selector if user chose to click an SSO button instead
463
+ sso_button_selector: XPath selector for the SSO button to click (ODA). Use sso_provider instead for
464
+ CUA.
465
+
466
+ sso_provider: SSO provider to click, matching the provider field from pending_sso_buttons
467
+ (e.g., "google", "github"). Cannot be used with sso_button_selector.
389
468
 
390
469
  extra_headers: Send extra headers
391
470
 
@@ -398,12 +477,14 @@ class ConnectionsResource(SyncAPIResource):
398
477
  if not id:
399
478
  raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
400
479
  return self._post(
401
- f"/auth/connections/{id}/submit",
480
+ path_template("/auth/connections/{id}/submit", id=id),
402
481
  body=maybe_transform(
403
482
  {
404
483
  "fields": fields,
405
484
  "mfa_option_id": mfa_option_id,
485
+ "sign_in_option_id": sign_in_option_id,
406
486
  "sso_button_selector": sso_button_selector,
487
+ "sso_provider": sso_provider,
407
488
  },
408
489
  connection_submit_params.ConnectionSubmitParams,
409
490
  ),
@@ -560,7 +641,77 @@ class AsyncConnectionsResource(AsyncAPIResource):
560
641
  if not id:
561
642
  raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
562
643
  return await self._get(
563
- f"/auth/connections/{id}",
644
+ path_template("/auth/connections/{id}", id=id),
645
+ options=make_request_options(
646
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
647
+ ),
648
+ cast_to=ManagedAuth,
649
+ )
650
+
651
+ async def update(
652
+ self,
653
+ id: str,
654
+ *,
655
+ allowed_domains: SequenceNotStr[str] | Omit = omit,
656
+ credential: connection_update_params.Credential | Omit = omit,
657
+ health_check_interval: int | Omit = omit,
658
+ login_url: str | Omit = omit,
659
+ proxy: connection_update_params.Proxy | Omit = omit,
660
+ save_credentials: bool | Omit = omit,
661
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
662
+ # The extra values given here take precedence over values defined on the client or passed to this method.
663
+ extra_headers: Headers | None = None,
664
+ extra_query: Query | None = None,
665
+ extra_body: Body | None = None,
666
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
667
+ ) -> ManagedAuth:
668
+ """Update an auth connection's configuration.
669
+
670
+ Only the fields provided will be
671
+ updated.
672
+
673
+ Args:
674
+ allowed_domains: Additional domains valid for this auth flow (replaces existing list)
675
+
676
+ credential:
677
+ Reference to credentials for the auth connection. Use one of:
678
+
679
+ - { name } for Kernel credentials
680
+ - { provider, path } for external provider item
681
+ - { provider, auto: true } for external provider domain lookup
682
+
683
+ health_check_interval: Interval in seconds between automatic health checks
684
+
685
+ login_url: Login page URL. Set to empty string to clear.
686
+
687
+ proxy: Proxy selection. Provide either id or name. The proxy must belong to the
688
+ caller's org.
689
+
690
+ save_credentials: Whether to save credentials after every successful login
691
+
692
+ extra_headers: Send extra headers
693
+
694
+ extra_query: Add additional query parameters to the request
695
+
696
+ extra_body: Add additional JSON properties to the request
697
+
698
+ timeout: Override the client-level default timeout for this request, in seconds
699
+ """
700
+ if not id:
701
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
702
+ return await self._patch(
703
+ path_template("/auth/connections/{id}", id=id),
704
+ body=await async_maybe_transform(
705
+ {
706
+ "allowed_domains": allowed_domains,
707
+ "credential": credential,
708
+ "health_check_interval": health_check_interval,
709
+ "login_url": login_url,
710
+ "proxy": proxy,
711
+ "save_credentials": save_credentials,
712
+ },
713
+ connection_update_params.ConnectionUpdateParams,
714
+ ),
564
715
  options=make_request_options(
565
716
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
566
717
  ),
@@ -654,7 +805,7 @@ class AsyncConnectionsResource(AsyncAPIResource):
654
805
  raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
655
806
  extra_headers = {"Accept": "*/*", **(extra_headers or {})}
656
807
  return await self._delete(
657
- f"/auth/connections/{id}",
808
+ path_template("/auth/connections/{id}", id=id),
658
809
  options=make_request_options(
659
810
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
660
811
  ),
@@ -690,7 +841,7 @@ class AsyncConnectionsResource(AsyncAPIResource):
690
841
  raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
691
842
  extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
692
843
  return await self._get(
693
- f"/auth/connections/{id}/events",
844
+ path_template("/auth/connections/{id}/events", id=id),
694
845
  options=make_request_options(
695
846
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
696
847
  ),
@@ -734,7 +885,7 @@ class AsyncConnectionsResource(AsyncAPIResource):
734
885
  if not id:
735
886
  raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
736
887
  return await self._post(
737
- f"/auth/connections/{id}/login",
888
+ path_template("/auth/connections/{id}/login", id=id),
738
889
  body=await async_maybe_transform({"proxy": proxy}, connection_login_params.ConnectionLoginParams),
739
890
  options=make_request_options(
740
891
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
@@ -748,7 +899,9 @@ class AsyncConnectionsResource(AsyncAPIResource):
748
899
  *,
749
900
  fields: Dict[str, str] | Omit = omit,
750
901
  mfa_option_id: str | Omit = omit,
902
+ sign_in_option_id: str | Omit = omit,
751
903
  sso_button_selector: str | Omit = omit,
904
+ sso_provider: str | Omit = omit,
752
905
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
753
906
  # The extra values given here take precedence over values defined on the client or passed to this method.
754
907
  extra_headers: Headers | None = None,
@@ -764,9 +917,15 @@ class AsyncConnectionsResource(AsyncAPIResource):
764
917
  Args:
765
918
  fields: Map of field name to value
766
919
 
767
- mfa_option_id: Optional MFA option ID if user selected an MFA method
920
+ mfa_option_id: The MFA method type to select (when mfa_options were returned)
921
+
922
+ sign_in_option_id: The sign-in option ID to select (when sign_in_options were returned)
768
923
 
769
- sso_button_selector: Optional XPath selector if user chose to click an SSO button instead
924
+ sso_button_selector: XPath selector for the SSO button to click (ODA). Use sso_provider instead for
925
+ CUA.
926
+
927
+ sso_provider: SSO provider to click, matching the provider field from pending_sso_buttons
928
+ (e.g., "google", "github"). Cannot be used with sso_button_selector.
770
929
 
771
930
  extra_headers: Send extra headers
772
931
 
@@ -779,12 +938,14 @@ class AsyncConnectionsResource(AsyncAPIResource):
779
938
  if not id:
780
939
  raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
781
940
  return await self._post(
782
- f"/auth/connections/{id}/submit",
941
+ path_template("/auth/connections/{id}/submit", id=id),
783
942
  body=await async_maybe_transform(
784
943
  {
785
944
  "fields": fields,
786
945
  "mfa_option_id": mfa_option_id,
946
+ "sign_in_option_id": sign_in_option_id,
787
947
  "sso_button_selector": sso_button_selector,
948
+ "sso_provider": sso_provider,
788
949
  },
789
950
  connection_submit_params.ConnectionSubmitParams,
790
951
  ),
@@ -805,6 +966,9 @@ class ConnectionsResourceWithRawResponse:
805
966
  self.retrieve = to_raw_response_wrapper(
806
967
  connections.retrieve,
807
968
  )
969
+ self.update = to_raw_response_wrapper(
970
+ connections.update,
971
+ )
808
972
  self.list = to_raw_response_wrapper(
809
973
  connections.list,
810
974
  )
@@ -832,6 +996,9 @@ class AsyncConnectionsResourceWithRawResponse:
832
996
  self.retrieve = async_to_raw_response_wrapper(
833
997
  connections.retrieve,
834
998
  )
999
+ self.update = async_to_raw_response_wrapper(
1000
+ connections.update,
1001
+ )
835
1002
  self.list = async_to_raw_response_wrapper(
836
1003
  connections.list,
837
1004
  )
@@ -859,6 +1026,9 @@ class ConnectionsResourceWithStreamingResponse:
859
1026
  self.retrieve = to_streamed_response_wrapper(
860
1027
  connections.retrieve,
861
1028
  )
1029
+ self.update = to_streamed_response_wrapper(
1030
+ connections.update,
1031
+ )
862
1032
  self.list = to_streamed_response_wrapper(
863
1033
  connections.list,
864
1034
  )
@@ -886,6 +1056,9 @@ class AsyncConnectionsResourceWithStreamingResponse:
886
1056
  self.retrieve = async_to_streamed_response_wrapper(
887
1057
  connections.retrieve,
888
1058
  )
1059
+ self.update = async_to_streamed_response_wrapper(
1060
+ connections.update,
1061
+ )
889
1062
  self.list = async_to_streamed_response_wrapper(
890
1063
  connections.list,
891
1064
  )