nimble_python 0.17.0__tar.gz → 0.19.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 (186) hide show
  1. nimble_python-0.19.0/.release-please-manifest.json +3 -0
  2. {nimble_python-0.17.0 → nimble_python-0.19.0}/CHANGELOG.md +23 -0
  3. {nimble_python-0.17.0 → nimble_python-0.19.0}/PKG-INFO +1 -1
  4. {nimble_python-0.17.0 → nimble_python-0.19.0}/api.md +91 -2
  5. {nimble_python-0.17.0 → nimble_python-0.19.0}/pyproject.toml +1 -1
  6. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_client.py +173 -1
  7. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_files.py +1 -1
  8. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_models.py +80 -0
  9. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_version.py +1 -1
  10. nimble_python-0.19.0/src/nimble_python/resources/__init__.py +117 -0
  11. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/resources/agent.py +8 -103
  12. nimble_python-0.19.0/src/nimble_python/resources/domain_knowledge.py +195 -0
  13. nimble_python-0.19.0/src/nimble_python/resources/media.py +336 -0
  14. nimble_python-0.19.0/src/nimble_python/resources/serp.py +644 -0
  15. nimble_python-0.19.0/src/nimble_python/resources/task_agent/__init__.py +47 -0
  16. nimble_python-0.19.0/src/nimble_python/resources/task_agent/runs.py +551 -0
  17. nimble_python-0.19.0/src/nimble_python/resources/task_agent/task_agent.py +758 -0
  18. nimble_python-0.19.0/src/nimble_python/resources/task_agent/templates.py +272 -0
  19. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/__init__.py +21 -2
  20. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_generate_params.py +3 -3
  21. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_generate_response.py +11 -7
  22. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_get_generation_response.py +11 -7
  23. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_get_response.py +2 -2
  24. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_run_batch_response.py +1 -1
  25. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/batch_get_response.py +1 -1
  26. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/client_extract_async_params.py +3 -0
  27. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/client_extract_batch_params.py +6 -0
  28. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/client_extract_params.py +3 -0
  29. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/client_search_params.py +4 -1
  30. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/crawl_run_params.py +3 -0
  31. nimble_python-0.19.0/src/nimble_python/types/domain_knowledge_get_driver_params.py +15 -0
  32. nimble_python-0.19.0/src/nimble_python/types/domain_knowledge_get_driver_response.py +27 -0
  33. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/extract_async_response.py +1 -1
  34. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/extract_batch_response.py +1 -1
  35. nimble_python-0.19.0/src/nimble_python/types/media_run_async_params.py +44 -0
  36. nimble_python-0.19.0/src/nimble_python/types/media_run_async_response.py +67 -0
  37. nimble_python-0.19.0/src/nimble_python/types/media_run_params.py +29 -0
  38. nimble_python-0.19.0/src/nimble_python/types/media_run_response.py +339 -0
  39. nimble_python-0.19.0/src/nimble_python/types/serp_run_async_params.py +79 -0
  40. nimble_python-0.19.0/src/nimble_python/types/serp_run_async_response.py +67 -0
  41. nimble_python-0.19.0/src/nimble_python/types/serp_run_batch_params.py +167 -0
  42. nimble_python-0.19.0/src/nimble_python/types/serp_run_batch_response.py +68 -0
  43. nimble_python-0.19.0/src/nimble_python/types/serp_run_params.py +64 -0
  44. nimble_python-0.19.0/src/nimble_python/types/serp_run_response.py +339 -0
  45. nimble_python-0.19.0/src/nimble_python/types/task_agent/__init__.py +11 -0
  46. nimble_python-0.19.0/src/nimble_python/types/task_agent/run_get_response.py +47 -0
  47. nimble_python-0.19.0/src/nimble_python/types/task_agent/run_get_result_response.py +188 -0
  48. nimble_python-0.19.0/src/nimble_python/types/task_agent/run_list_params.py +13 -0
  49. nimble_python-0.19.0/src/nimble_python/types/task_agent/run_list_response.py +50 -0
  50. nimble_python-0.19.0/src/nimble_python/types/task_agent/template_get_response.py +65 -0
  51. nimble_python-0.19.0/src/nimble_python/types/task_agent/template_list_params.py +18 -0
  52. nimble_python-0.19.0/src/nimble_python/types/task_agent/template_list_response.py +74 -0
  53. nimble_python-0.19.0/src/nimble_python/types/task_agent_create_params.py +52 -0
  54. nimble_python-0.19.0/src/nimble_python/types/task_agent_create_response.py +73 -0
  55. nimble_python-0.19.0/src/nimble_python/types/task_agent_get_response.py +73 -0
  56. nimble_python-0.19.0/src/nimble_python/types/task_agent_list_params.py +18 -0
  57. nimble_python-0.19.0/src/nimble_python/types/task_agent_list_response.py +82 -0
  58. nimble_python-0.19.0/src/nimble_python/types/task_agent_run_params.py +16 -0
  59. nimble_python-0.19.0/src/nimble_python/types/task_agent_run_response.py +47 -0
  60. nimble_python-0.19.0/src/nimble_python/types/task_agent_update_params.py +20 -0
  61. nimble_python-0.19.0/src/nimble_python/types/task_agent_update_response.py +73 -0
  62. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/task_get_response.py +1 -1
  63. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/task_list_response.py +1 -1
  64. nimble_python-0.19.0/tests/api_resources/task_agent/__init__.py +1 -0
  65. nimble_python-0.19.0/tests/api_resources/task_agent/test_runs.py +544 -0
  66. nimble_python-0.19.0/tests/api_resources/task_agent/test_templates.py +186 -0
  67. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/api_resources/test_agent.py +4 -109
  68. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/api_resources/test_client.py +10 -0
  69. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/api_resources/test_crawl.py +2 -0
  70. nimble_python-0.19.0/tests/api_resources/test_domain_knowledge.py +98 -0
  71. nimble_python-0.19.0/tests/api_resources/test_media.py +234 -0
  72. nimble_python-0.19.0/tests/api_resources/test_serp.py +412 -0
  73. nimble_python-0.19.0/tests/api_resources/test_task_agent.py +640 -0
  74. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_models.py +57 -3
  75. nimble_python-0.17.0/.release-please-manifest.json +0 -3
  76. nimble_python-0.17.0/src/nimble_python/resources/__init__.py +0 -61
  77. nimble_python-0.17.0/src/nimble_python/types/agent_publish_params.py +0 -11
  78. nimble_python-0.17.0/src/nimble_python/types/agent_publish_response.py +0 -11
  79. {nimble_python-0.17.0 → nimble_python-0.19.0}/.gitignore +0 -0
  80. {nimble_python-0.17.0 → nimble_python-0.19.0}/CONTRIBUTING.md +0 -0
  81. {nimble_python-0.17.0 → nimble_python-0.19.0}/LICENSE +0 -0
  82. {nimble_python-0.17.0 → nimble_python-0.19.0}/README.md +0 -0
  83. {nimble_python-0.17.0 → nimble_python-0.19.0}/SECURITY.md +0 -0
  84. {nimble_python-0.17.0 → nimble_python-0.19.0}/bin/check-release-environment +0 -0
  85. {nimble_python-0.17.0 → nimble_python-0.19.0}/bin/publish-pypi +0 -0
  86. {nimble_python-0.17.0 → nimble_python-0.19.0}/examples/.keep +0 -0
  87. {nimble_python-0.17.0 → nimble_python-0.19.0}/release-please-config.json +0 -0
  88. {nimble_python-0.17.0 → nimble_python-0.19.0}/requirements-dev.lock +0 -0
  89. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/__init__.py +0 -0
  90. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_base_client.py +0 -0
  91. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_compat.py +0 -0
  92. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_constants.py +0 -0
  93. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_exceptions.py +0 -0
  94. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_qs.py +0 -0
  95. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_resource.py +0 -0
  96. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_response.py +0 -0
  97. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_streaming.py +0 -0
  98. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_types.py +0 -0
  99. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/__init__.py +0 -0
  100. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_compat.py +0 -0
  101. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_datetime_parse.py +0 -0
  102. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_json.py +0 -0
  103. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_logs.py +0 -0
  104. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_path.py +0 -0
  105. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_proxy.py +0 -0
  106. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_reflection.py +0 -0
  107. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_resources_proxy.py +0 -0
  108. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_streams.py +0 -0
  109. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_sync.py +0 -0
  110. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_transform.py +0 -0
  111. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_typing.py +0 -0
  112. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/_utils/_utils.py +0 -0
  113. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/lib/.keep +0 -0
  114. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/py.typed +0 -0
  115. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/resources/batches.py +0 -0
  116. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/resources/crawl.py +0 -0
  117. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/resources/tasks.py +0 -0
  118. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_list_params.py +0 -0
  119. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_list_response.py +0 -0
  120. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_run_async_params.py +0 -0
  121. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_run_async_response.py +0 -0
  122. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_run_batch_params.py +0 -0
  123. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_run_params.py +0 -0
  124. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/agent_run_response.py +0 -0
  125. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/batch_progress_response.py +0 -0
  126. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/client_map_params.py +0 -0
  127. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/crawl_list_params.py +0 -0
  128. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/crawl_list_response.py +0 -0
  129. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/crawl_run_response.py +0 -0
  130. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/crawl_status_response.py +0 -0
  131. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/crawl_terminate_response.py +0 -0
  132. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/extract_response.py +0 -0
  133. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/map_response.py +0 -0
  134. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/search_response.py +0 -0
  135. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/__init__.py +0 -0
  136. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/auto_scroll_action.py +0 -0
  137. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/click_action.py +0 -0
  138. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/eval_action.py +0 -0
  139. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/fetch_action.py +0 -0
  140. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/fill_action.py +0 -0
  141. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/get_cookies_action.py +0 -0
  142. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/goto_action.py +0 -0
  143. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/press_action.py +0 -0
  144. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/screenshot_action.py +0 -0
  145. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/scroll_action.py +0 -0
  146. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/wait_action.py +0 -0
  147. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/wait_for_element_action.py +0 -0
  148. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared/wait_for_navigation_action.py +0 -0
  149. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/__init__.py +0 -0
  150. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/auto_scroll_action.py +0 -0
  151. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/click_action.py +0 -0
  152. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/eval_action.py +0 -0
  153. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/fetch_action.py +0 -0
  154. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/fill_action.py +0 -0
  155. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/get_cookies_action.py +0 -0
  156. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/goto_action.py +0 -0
  157. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/press_action.py +0 -0
  158. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/screenshot_action.py +0 -0
  159. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/scroll_action.py +0 -0
  160. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/wait_action.py +0 -0
  161. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/wait_for_element_action.py +0 -0
  162. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/shared_params/wait_for_navigation_action.py +0 -0
  163. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/task_list_params.py +0 -0
  164. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimble_python/types/task_results_response.py +0 -0
  165. {nimble_python-0.17.0 → nimble_python-0.19.0}/src/nimbleway/lib/.keep +0 -0
  166. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/__init__.py +0 -0
  167. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/api_resources/__init__.py +0 -0
  168. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/api_resources/test_batches.py +0 -0
  169. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/api_resources/test_tasks.py +0 -0
  170. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/conftest.py +0 -0
  171. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/sample_file.txt +0 -0
  172. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_client.py +0 -0
  173. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_extract_files.py +0 -0
  174. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_files.py +0 -0
  175. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_qs.py +0 -0
  176. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_required_args.py +0 -0
  177. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_response.py +0 -0
  178. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_streaming.py +0 -0
  179. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_transform.py +0 -0
  180. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_utils/test_datetime_parse.py +0 -0
  181. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_utils/test_json.py +0 -0
  182. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_utils/test_path.py +0 -0
  183. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_utils/test_proxy.py +0 -0
  184. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/test_utils/test_typing.py +0 -0
  185. {nimble_python-0.17.0 → nimble_python-0.19.0}/tests/utils.py +0 -0
  186. {nimble_python-0.17.0 → nimble_python-0.19.0}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.19.0"
3
+ }
@@ -1,5 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.19.0 (2026-06-11)
4
+
5
+ Full Changelog: [v0.18.0...v0.19.0](https://github.com/Nimbleway/nimble-python/compare/v0.18.0...v0.19.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** manually update openapi ([790af21](https://github.com/Nimbleway/nimble-python/commit/790af21dc4e08b66c5d64e2aa01c0814d1cc2fc6))
10
+ * **api:** Manually update OpenAPI spec ([cc790ea](https://github.com/Nimbleway/nimble-python/commit/cc790ea7a08ea9c84bb79397a6720d630a07eced))
11
+ * **internal/types:** support eagerly validating pydantic iterators ([0e7f8a9](https://github.com/Nimbleway/nimble-python/commit/0e7f8a99fc9d2c80c5eed1891b0e6b37187afc78))
12
+
13
+ ## 0.18.0 (2026-05-10)
14
+
15
+ Full Changelog: [v0.17.0...v0.18.0](https://github.com/Nimbleway/nimble-python/compare/v0.17.0...v0.18.0)
16
+
17
+ ### Features
18
+
19
+ * **api:** Add media, serp and domain_knowledge ([d1e33f1](https://github.com/Nimbleway/nimble-python/commit/d1e33f1e44507ba4a817532d58e25f109c58e776))
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **client:** add missing f-string prefix in file type error message ([972cbcd](https://github.com/Nimbleway/nimble-python/commit/972cbcd40b4e4091a7364288d3d0b6033983826c))
25
+
3
26
  ## 0.17.0 (2026-05-06)
4
27
 
5
28
  Full Changelog: [v0.16.0...v0.17.0](https://github.com/Nimbleway/nimble-python/compare/v0.16.0...v0.17.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: nimble_python
3
- Version: 0.17.0
3
+ Version: 0.19.0
4
4
  Summary: The official Python library for the nimble API
5
5
  Project-URL: Homepage, https://github.com/Nimbleway/nimble-python
6
6
  Project-URL: Repository, https://github.com/Nimbleway/nimble-python
@@ -50,7 +50,6 @@ from nimble_python.types import (
50
50
  AgentGenerateResponse,
51
51
  AgentGetResponse,
52
52
  AgentGetGenerationResponse,
53
- AgentPublishResponse,
54
53
  AgentRunResponse,
55
54
  AgentRunAsyncResponse,
56
55
  AgentRunBatchResponse,
@@ -63,7 +62,6 @@ Methods:
63
62
  - <code title="post /v1/agents/generations">client.agent.<a href="./src/nimble_python/resources/agent.py">generate</a>(\*\*<a href="src/nimble_python/types/agent_generate_params.py">params</a>) -> <a href="./src/nimble_python/types/agent_generate_response.py">AgentGenerateResponse</a></code>
64
63
  - <code title="get /v1/agents/{template_name}">client.agent.<a href="./src/nimble_python/resources/agent.py">get</a>(template_name) -> <a href="./src/nimble_python/types/agent_get_response.py">AgentGetResponse</a></code>
65
64
  - <code title="get /v1/agents/generations/{generation_id}">client.agent.<a href="./src/nimble_python/resources/agent.py">get_generation</a>(generation_id) -> <a href="./src/nimble_python/types/agent_get_generation_response.py">AgentGetGenerationResponse</a></code>
66
- - <code title="post /v1/agents/{agent_name}/publish">client.agent.<a href="./src/nimble_python/resources/agent.py">publish</a>(agent_name, \*\*<a href="src/nimble_python/types/agent_publish_params.py">params</a>) -> <a href="./src/nimble_python/types/agent_publish_response.py">AgentPublishResponse</a></code>
67
65
  - <code title="post /v1/agents/run">client.agent.<a href="./src/nimble_python/resources/agent.py">run</a>(\*\*<a href="src/nimble_python/types/agent_run_params.py">params</a>) -> <a href="./src/nimble_python/types/agent_run_response.py">AgentRunResponse</a></code>
68
66
  - <code title="post /v1/agents/async">client.agent.<a href="./src/nimble_python/resources/agent.py">run_async</a>(\*\*<a href="src/nimble_python/types/agent_run_async_params.py">params</a>) -> <a href="./src/nimble_python/types/agent_run_async_response.py">AgentRunAsyncResponse</a></code>
69
67
  - <code title="post /v1/agents/batch">client.agent.<a href="./src/nimble_python/resources/agent.py">run_batch</a>(\*\*<a href="src/nimble_python/types/agent_run_batch_params.py">params</a>) -> <a href="./src/nimble_python/types/agent_run_batch_response.py">AgentRunBatchResponse</a></code>
@@ -115,3 +113,94 @@ Methods:
115
113
  - <code title="get /v1/batches">client.batches.<a href="./src/nimble_python/resources/batches.py">list</a>() -> None</code>
116
114
  - <code title="get /v1/batches/{batch_id}">client.batches.<a href="./src/nimble_python/resources/batches.py">get</a>(batch_id) -> <a href="./src/nimble_python/types/batch_get_response.py">BatchGetResponse</a></code>
117
115
  - <code title="get /v1/batches/{batch_id}/progress">client.batches.<a href="./src/nimble_python/resources/batches.py">progress</a>(batch_id) -> <a href="./src/nimble_python/types/batch_progress_response.py">BatchProgressResponse</a></code>
116
+
117
+ # DomainKnowledge
118
+
119
+ Types:
120
+
121
+ ```python
122
+ from nimble_python.types import DomainKnowledgeGetDriverResponse
123
+ ```
124
+
125
+ Methods:
126
+
127
+ - <code title="get /v1/domain-knowledge/driver">client.domain_knowledge.<a href="./src/nimble_python/resources/domain_knowledge.py">get_driver</a>(\*\*<a href="src/nimble_python/types/domain_knowledge_get_driver_params.py">params</a>) -> <a href="./src/nimble_python/types/domain_knowledge_get_driver_response.py">DomainKnowledgeGetDriverResponse</a></code>
128
+
129
+ # Media
130
+
131
+ Types:
132
+
133
+ ```python
134
+ from nimble_python.types import MediaRunResponse, MediaRunAsyncResponse
135
+ ```
136
+
137
+ Methods:
138
+
139
+ - <code title="post /v1/media">client.media.<a href="./src/nimble_python/resources/media.py">run</a>(\*\*<a href="src/nimble_python/types/media_run_params.py">params</a>) -> <a href="./src/nimble_python/types/media_run_response.py">MediaRunResponse</a></code>
140
+ - <code title="post /v1/media/async">client.media.<a href="./src/nimble_python/resources/media.py">run_async</a>(\*\*<a href="src/nimble_python/types/media_run_async_params.py">params</a>) -> <a href="./src/nimble_python/types/media_run_async_response.py">MediaRunAsyncResponse</a></code>
141
+
142
+ # Serp
143
+
144
+ Types:
145
+
146
+ ```python
147
+ from nimble_python.types import SerpRunResponse, SerpRunAsyncResponse, SerpRunBatchResponse
148
+ ```
149
+
150
+ Methods:
151
+
152
+ - <code title="post /v1/serp">client.serp.<a href="./src/nimble_python/resources/serp.py">run</a>(\*\*<a href="src/nimble_python/types/serp_run_params.py">params</a>) -> <a href="./src/nimble_python/types/serp_run_response.py">SerpRunResponse</a></code>
153
+ - <code title="post /v1/serp/async">client.serp.<a href="./src/nimble_python/resources/serp.py">run_async</a>(\*\*<a href="src/nimble_python/types/serp_run_async_params.py">params</a>) -> <a href="./src/nimble_python/types/serp_run_async_response.py">SerpRunAsyncResponse</a></code>
154
+ - <code title="post /v1/serp/batch">client.serp.<a href="./src/nimble_python/resources/serp.py">run_batch</a>(\*\*<a href="src/nimble_python/types/serp_run_batch_params.py">params</a>) -> <a href="./src/nimble_python/types/serp_run_batch_response.py">SerpRunBatchResponse</a></code>
155
+
156
+ # TaskAgent
157
+
158
+ Types:
159
+
160
+ ```python
161
+ from nimble_python.types import (
162
+ TaskAgentCreateResponse,
163
+ TaskAgentUpdateResponse,
164
+ TaskAgentListResponse,
165
+ TaskAgentGetResponse,
166
+ TaskAgentRunResponse,
167
+ )
168
+ ```
169
+
170
+ Methods:
171
+
172
+ - <code title="post /v1/task-agents">client.task_agent.<a href="./src/nimble_python/resources/task_agent/task_agent.py">create</a>(\*\*<a href="src/nimble_python/types/task_agent_create_params.py">params</a>) -> <a href="./src/nimble_python/types/task_agent_create_response.py">TaskAgentCreateResponse</a></code>
173
+ - <code title="patch /v1/task-agents/{agent_id}">client.task_agent.<a href="./src/nimble_python/resources/task_agent/task_agent.py">update</a>(agent_id, \*\*<a href="src/nimble_python/types/task_agent_update_params.py">params</a>) -> <a href="./src/nimble_python/types/task_agent_update_response.py">TaskAgentUpdateResponse</a></code>
174
+ - <code title="get /v1/task-agents">client.task_agent.<a href="./src/nimble_python/resources/task_agent/task_agent.py">list</a>(\*\*<a href="src/nimble_python/types/task_agent_list_params.py">params</a>) -> <a href="./src/nimble_python/types/task_agent_list_response.py">TaskAgentListResponse</a></code>
175
+ - <code title="delete /v1/task-agents/{agent_id}">client.task_agent.<a href="./src/nimble_python/resources/task_agent/task_agent.py">deactivate</a>(agent_id) -> None</code>
176
+ - <code title="get /v1/task-agents/{agent_id}">client.task_agent.<a href="./src/nimble_python/resources/task_agent/task_agent.py">get</a>(agent_id) -> <a href="./src/nimble_python/types/task_agent_get_response.py">TaskAgentGetResponse</a></code>
177
+ - <code title="post /v1/task-agents/{agent_id}/runs">client.task_agent.<a href="./src/nimble_python/resources/task_agent/task_agent.py">run</a>(agent_id, \*\*<a href="src/nimble_python/types/task_agent_run_params.py">params</a>) -> <a href="./src/nimble_python/types/task_agent_run_response.py">TaskAgentRunResponse</a></code>
178
+
179
+ ## Templates
180
+
181
+ Types:
182
+
183
+ ```python
184
+ from nimble_python.types.task_agent import TemplateListResponse, TemplateGetResponse
185
+ ```
186
+
187
+ Methods:
188
+
189
+ - <code title="get /v1/task-agents/templates">client.task_agent.templates.<a href="./src/nimble_python/resources/task_agent/templates.py">list</a>(\*\*<a href="src/nimble_python/types/task_agent/template_list_params.py">params</a>) -> <a href="./src/nimble_python/types/task_agent/template_list_response.py">TemplateListResponse</a></code>
190
+ - <code title="get /v1/task-agents/templates/{template_name}">client.task_agent.templates.<a href="./src/nimble_python/resources/task_agent/templates.py">get</a>(template_name) -> <a href="./src/nimble_python/types/task_agent/template_get_response.py">TemplateGetResponse</a></code>
191
+
192
+ ## Runs
193
+
194
+ Types:
195
+
196
+ ```python
197
+ from nimble_python.types.task_agent import RunListResponse, RunGetResponse, RunGetResultResponse
198
+ ```
199
+
200
+ Methods:
201
+
202
+ - <code title="get /v1/task-agents/{agent_id}/runs">client.task_agent.runs.<a href="./src/nimble_python/resources/task_agent/runs.py">list</a>(agent_id, \*\*<a href="src/nimble_python/types/task_agent/run_list_params.py">params</a>) -> <a href="./src/nimble_python/types/task_agent/run_list_response.py">RunListResponse</a></code>
203
+ - <code title="post /v1/task-agents/{agent_id}/runs/{run_id}/cancel">client.task_agent.runs.<a href="./src/nimble_python/resources/task_agent/runs.py">cancel</a>(run_id, \*, agent_id) -> None</code>
204
+ - <code title="get /v1/task-agents/{agent_id}/runs/{run_id}">client.task_agent.runs.<a href="./src/nimble_python/resources/task_agent/runs.py">get</a>(run_id, \*, agent_id) -> <a href="./src/nimble_python/types/task_agent/run_get_response.py">RunGetResponse</a></code>
205
+ - <code title="get /v1/task-agents/{agent_id}/runs/{run_id}/result">client.task_agent.runs.<a href="./src/nimble_python/resources/task_agent/runs.py">get_result</a>(run_id, \*, agent_id) -> <a href="./src/nimble_python/types/task_agent/run_get_result_response.py">RunGetResultResponse</a></code>
206
+ - <code title="get /v1/task-agents/{agent_id}/runs/{run_id}/events">client.task_agent.runs.<a href="./src/nimble_python/resources/task_agent/runs.py">stream_events</a>(run_id, \*, agent_id) -> object</code>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nimble_python"
3
- version = "0.17.0"
3
+ version = "0.19.0"
4
4
  description = "The official Python library for the nimble API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -61,11 +61,15 @@ from .types.extract_async_response import ExtractAsyncResponse
61
61
  from .types.extract_batch_response import ExtractBatchResponse
62
62
 
63
63
  if TYPE_CHECKING:
64
- from .resources import agent, crawl, tasks, batches
64
+ from .resources import serp, agent, crawl, media, tasks, batches, task_agent, domain_knowledge
65
+ from .resources.serp import SerpResource, AsyncSerpResource
65
66
  from .resources.agent import AgentResource, AsyncAgentResource
66
67
  from .resources.crawl import CrawlResource, AsyncCrawlResource
68
+ from .resources.media import MediaResource, AsyncMediaResource
67
69
  from .resources.tasks import TasksResource, AsyncTasksResource
68
70
  from .resources.batches import BatchesResource, AsyncBatchesResource
71
+ from .resources.domain_knowledge import DomainKnowledgeResource, AsyncDomainKnowledgeResource
72
+ from .resources.task_agent.task_agent import TaskAgentResource, AsyncTaskAgentResource
69
73
 
70
74
  __all__ = ["Timeout", "Transport", "ProxiesTypes", "RequestOptions", "Nimble", "AsyncNimble", "Client", "AsyncClient"]
71
75
 
@@ -162,6 +166,30 @@ class Nimble(SyncAPIClient):
162
166
 
163
167
  return BatchesResource(self)
164
168
 
169
+ @cached_property
170
+ def domain_knowledge(self) -> DomainKnowledgeResource:
171
+ from .resources.domain_knowledge import DomainKnowledgeResource
172
+
173
+ return DomainKnowledgeResource(self)
174
+
175
+ @cached_property
176
+ def media(self) -> MediaResource:
177
+ from .resources.media import MediaResource
178
+
179
+ return MediaResource(self)
180
+
181
+ @cached_property
182
+ def serp(self) -> SerpResource:
183
+ from .resources.serp import SerpResource
184
+
185
+ return SerpResource(self)
186
+
187
+ @cached_property
188
+ def task_agent(self) -> TaskAgentResource:
189
+ from .resources.task_agent import TaskAgentResource
190
+
191
+ return TaskAgentResource(self)
192
+
165
193
  @cached_property
166
194
  def with_raw_response(self) -> NimbleWithRawResponse:
167
195
  return NimbleWithRawResponse(self)
@@ -259,6 +287,7 @@ class Nimble(SyncAPIClient):
259
287
  self,
260
288
  *,
261
289
  url: str,
290
+ body: object | Omit = omit,
262
291
  browser: client_extract_params.Browser | Omit = omit,
263
292
  browser_actions: Iterable[client_extract_params.BrowserAction] | Omit = omit,
264
293
  city: str | Omit = omit,
@@ -1148,6 +1177,8 @@ class Nimble(SyncAPIClient):
1148
1177
  Args:
1149
1178
  url: Target URL to scrape
1150
1179
 
1180
+ body: Request body for POST, PUT, PATCH methods
1181
+
1151
1182
  browser: Browser type to emulate
1152
1183
 
1153
1184
  browser_actions: Array of browser automation actions to execute sequentially
@@ -1215,6 +1246,7 @@ class Nimble(SyncAPIClient):
1215
1246
  body=maybe_transform(
1216
1247
  {
1217
1248
  "url": url,
1249
+ "body": body,
1218
1250
  "browser": browser,
1219
1251
  "browser_actions": browser_actions,
1220
1252
  "city": city,
@@ -1255,6 +1287,7 @@ class Nimble(SyncAPIClient):
1255
1287
  self,
1256
1288
  *,
1257
1289
  url: str,
1290
+ body: object | Omit = omit,
1258
1291
  browser: client_extract_async_params.Browser | Omit = omit,
1259
1292
  browser_actions: Iterable[client_extract_async_params.BrowserAction] | Omit = omit,
1260
1293
  callback_url: str | Omit = omit,
@@ -2149,6 +2182,8 @@ class Nimble(SyncAPIClient):
2149
2182
  Args:
2150
2183
  url: Target URL to scrape
2151
2184
 
2185
+ body: Request body for POST, PUT, PATCH methods
2186
+
2152
2187
  browser: Browser type to emulate
2153
2188
 
2154
2189
  browser_actions: Array of browser automation actions to execute sequentially
@@ -2226,6 +2261,7 @@ class Nimble(SyncAPIClient):
2226
2261
  body=maybe_transform(
2227
2262
  {
2228
2263
  "url": url,
2264
+ "body": body,
2229
2265
  "browser": browser,
2230
2266
  "browser_actions": browser_actions,
2231
2267
  "callback_url": callback_url,
@@ -3165,6 +3201,7 @@ class Nimble(SyncAPIClient):
3165
3201
  query: str,
3166
3202
  content_type: Optional[SequenceNotStr[str]] | Omit = omit,
3167
3203
  country: str | Omit = omit,
3204
+ debug_params: Optional[Dict[str, object]] | Omit = omit,
3168
3205
  deep_search: Optional[bool] | Omit = omit,
3169
3206
  end_date: Optional[str] | Omit = omit,
3170
3207
  exclude_domains: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -3197,6 +3234,8 @@ class Nimble(SyncAPIClient):
3197
3234
 
3198
3235
  country: Country code for geo-targeted results (e.g., 'US', 'GB', 'IL')
3199
3236
 
3237
+ debug_params: Internal-only. Gated to allowlisted accounts; ignored otherwise.
3238
+
3200
3239
  deep_search: Deprecated. Use search_depth instead. true maps to 'deep', false maps to 'lite'.
3201
3240
 
3202
3241
  end_date: Filter results before this date (format: YYYY-MM-DD or YYYY)
@@ -3246,6 +3285,7 @@ class Nimble(SyncAPIClient):
3246
3285
  "query": query,
3247
3286
  "content_type": content_type,
3248
3287
  "country": country,
3288
+ "debug_params": debug_params,
3249
3289
  "deep_search": deep_search,
3250
3290
  "end_date": end_date,
3251
3291
  "exclude_domains": exclude_domains,
@@ -3394,6 +3434,30 @@ class AsyncNimble(AsyncAPIClient):
3394
3434
 
3395
3435
  return AsyncBatchesResource(self)
3396
3436
 
3437
+ @cached_property
3438
+ def domain_knowledge(self) -> AsyncDomainKnowledgeResource:
3439
+ from .resources.domain_knowledge import AsyncDomainKnowledgeResource
3440
+
3441
+ return AsyncDomainKnowledgeResource(self)
3442
+
3443
+ @cached_property
3444
+ def media(self) -> AsyncMediaResource:
3445
+ from .resources.media import AsyncMediaResource
3446
+
3447
+ return AsyncMediaResource(self)
3448
+
3449
+ @cached_property
3450
+ def serp(self) -> AsyncSerpResource:
3451
+ from .resources.serp import AsyncSerpResource
3452
+
3453
+ return AsyncSerpResource(self)
3454
+
3455
+ @cached_property
3456
+ def task_agent(self) -> AsyncTaskAgentResource:
3457
+ from .resources.task_agent import AsyncTaskAgentResource
3458
+
3459
+ return AsyncTaskAgentResource(self)
3460
+
3397
3461
  @cached_property
3398
3462
  def with_raw_response(self) -> AsyncNimbleWithRawResponse:
3399
3463
  return AsyncNimbleWithRawResponse(self)
@@ -3491,6 +3555,7 @@ class AsyncNimble(AsyncAPIClient):
3491
3555
  self,
3492
3556
  *,
3493
3557
  url: str,
3558
+ body: object | Omit = omit,
3494
3559
  browser: client_extract_params.Browser | Omit = omit,
3495
3560
  browser_actions: Iterable[client_extract_params.BrowserAction] | Omit = omit,
3496
3561
  city: str | Omit = omit,
@@ -4380,6 +4445,8 @@ class AsyncNimble(AsyncAPIClient):
4380
4445
  Args:
4381
4446
  url: Target URL to scrape
4382
4447
 
4448
+ body: Request body for POST, PUT, PATCH methods
4449
+
4383
4450
  browser: Browser type to emulate
4384
4451
 
4385
4452
  browser_actions: Array of browser automation actions to execute sequentially
@@ -4447,6 +4514,7 @@ class AsyncNimble(AsyncAPIClient):
4447
4514
  body=await async_maybe_transform(
4448
4515
  {
4449
4516
  "url": url,
4517
+ "body": body,
4450
4518
  "browser": browser,
4451
4519
  "browser_actions": browser_actions,
4452
4520
  "city": city,
@@ -4487,6 +4555,7 @@ class AsyncNimble(AsyncAPIClient):
4487
4555
  self,
4488
4556
  *,
4489
4557
  url: str,
4558
+ body: object | Omit = omit,
4490
4559
  browser: client_extract_async_params.Browser | Omit = omit,
4491
4560
  browser_actions: Iterable[client_extract_async_params.BrowserAction] | Omit = omit,
4492
4561
  callback_url: str | Omit = omit,
@@ -5381,6 +5450,8 @@ class AsyncNimble(AsyncAPIClient):
5381
5450
  Args:
5382
5451
  url: Target URL to scrape
5383
5452
 
5453
+ body: Request body for POST, PUT, PATCH methods
5454
+
5384
5455
  browser: Browser type to emulate
5385
5456
 
5386
5457
  browser_actions: Array of browser automation actions to execute sequentially
@@ -5458,6 +5529,7 @@ class AsyncNimble(AsyncAPIClient):
5458
5529
  body=await async_maybe_transform(
5459
5530
  {
5460
5531
  "url": url,
5532
+ "body": body,
5461
5533
  "browser": browser,
5462
5534
  "browser_actions": browser_actions,
5463
5535
  "callback_url": callback_url,
@@ -6397,6 +6469,7 @@ class AsyncNimble(AsyncAPIClient):
6397
6469
  query: str,
6398
6470
  content_type: Optional[SequenceNotStr[str]] | Omit = omit,
6399
6471
  country: str | Omit = omit,
6472
+ debug_params: Optional[Dict[str, object]] | Omit = omit,
6400
6473
  deep_search: Optional[bool] | Omit = omit,
6401
6474
  end_date: Optional[str] | Omit = omit,
6402
6475
  exclude_domains: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -6429,6 +6502,8 @@ class AsyncNimble(AsyncAPIClient):
6429
6502
 
6430
6503
  country: Country code for geo-targeted results (e.g., 'US', 'GB', 'IL')
6431
6504
 
6505
+ debug_params: Internal-only. Gated to allowlisted accounts; ignored otherwise.
6506
+
6432
6507
  deep_search: Deprecated. Use search_depth instead. true maps to 'deep', false maps to 'lite'.
6433
6508
 
6434
6509
  end_date: Filter results before this date (format: YYYY-MM-DD or YYYY)
@@ -6478,6 +6553,7 @@ class AsyncNimble(AsyncAPIClient):
6478
6553
  "query": query,
6479
6554
  "content_type": content_type,
6480
6555
  "country": country,
6556
+ "debug_params": debug_params,
6481
6557
  "deep_search": deep_search,
6482
6558
  "end_date": end_date,
6483
6559
  "exclude_domains": exclude_domains,
@@ -6580,6 +6656,30 @@ class NimbleWithRawResponse:
6580
6656
 
6581
6657
  return BatchesResourceWithRawResponse(self._client.batches)
6582
6658
 
6659
+ @cached_property
6660
+ def domain_knowledge(self) -> domain_knowledge.DomainKnowledgeResourceWithRawResponse:
6661
+ from .resources.domain_knowledge import DomainKnowledgeResourceWithRawResponse
6662
+
6663
+ return DomainKnowledgeResourceWithRawResponse(self._client.domain_knowledge)
6664
+
6665
+ @cached_property
6666
+ def media(self) -> media.MediaResourceWithRawResponse:
6667
+ from .resources.media import MediaResourceWithRawResponse
6668
+
6669
+ return MediaResourceWithRawResponse(self._client.media)
6670
+
6671
+ @cached_property
6672
+ def serp(self) -> serp.SerpResourceWithRawResponse:
6673
+ from .resources.serp import SerpResourceWithRawResponse
6674
+
6675
+ return SerpResourceWithRawResponse(self._client.serp)
6676
+
6677
+ @cached_property
6678
+ def task_agent(self) -> task_agent.TaskAgentResourceWithRawResponse:
6679
+ from .resources.task_agent import TaskAgentResourceWithRawResponse
6680
+
6681
+ return TaskAgentResourceWithRawResponse(self._client.task_agent)
6682
+
6583
6683
 
6584
6684
  class AsyncNimbleWithRawResponse:
6585
6685
  _client: AsyncNimble
@@ -6627,6 +6727,30 @@ class AsyncNimbleWithRawResponse:
6627
6727
 
6628
6728
  return AsyncBatchesResourceWithRawResponse(self._client.batches)
6629
6729
 
6730
+ @cached_property
6731
+ def domain_knowledge(self) -> domain_knowledge.AsyncDomainKnowledgeResourceWithRawResponse:
6732
+ from .resources.domain_knowledge import AsyncDomainKnowledgeResourceWithRawResponse
6733
+
6734
+ return AsyncDomainKnowledgeResourceWithRawResponse(self._client.domain_knowledge)
6735
+
6736
+ @cached_property
6737
+ def media(self) -> media.AsyncMediaResourceWithRawResponse:
6738
+ from .resources.media import AsyncMediaResourceWithRawResponse
6739
+
6740
+ return AsyncMediaResourceWithRawResponse(self._client.media)
6741
+
6742
+ @cached_property
6743
+ def serp(self) -> serp.AsyncSerpResourceWithRawResponse:
6744
+ from .resources.serp import AsyncSerpResourceWithRawResponse
6745
+
6746
+ return AsyncSerpResourceWithRawResponse(self._client.serp)
6747
+
6748
+ @cached_property
6749
+ def task_agent(self) -> task_agent.AsyncTaskAgentResourceWithRawResponse:
6750
+ from .resources.task_agent import AsyncTaskAgentResourceWithRawResponse
6751
+
6752
+ return AsyncTaskAgentResourceWithRawResponse(self._client.task_agent)
6753
+
6630
6754
 
6631
6755
  class NimbleWithStreamedResponse:
6632
6756
  _client: Nimble
@@ -6674,6 +6798,30 @@ class NimbleWithStreamedResponse:
6674
6798
 
6675
6799
  return BatchesResourceWithStreamingResponse(self._client.batches)
6676
6800
 
6801
+ @cached_property
6802
+ def domain_knowledge(self) -> domain_knowledge.DomainKnowledgeResourceWithStreamingResponse:
6803
+ from .resources.domain_knowledge import DomainKnowledgeResourceWithStreamingResponse
6804
+
6805
+ return DomainKnowledgeResourceWithStreamingResponse(self._client.domain_knowledge)
6806
+
6807
+ @cached_property
6808
+ def media(self) -> media.MediaResourceWithStreamingResponse:
6809
+ from .resources.media import MediaResourceWithStreamingResponse
6810
+
6811
+ return MediaResourceWithStreamingResponse(self._client.media)
6812
+
6813
+ @cached_property
6814
+ def serp(self) -> serp.SerpResourceWithStreamingResponse:
6815
+ from .resources.serp import SerpResourceWithStreamingResponse
6816
+
6817
+ return SerpResourceWithStreamingResponse(self._client.serp)
6818
+
6819
+ @cached_property
6820
+ def task_agent(self) -> task_agent.TaskAgentResourceWithStreamingResponse:
6821
+ from .resources.task_agent import TaskAgentResourceWithStreamingResponse
6822
+
6823
+ return TaskAgentResourceWithStreamingResponse(self._client.task_agent)
6824
+
6677
6825
 
6678
6826
  class AsyncNimbleWithStreamedResponse:
6679
6827
  _client: AsyncNimble
@@ -6721,6 +6869,30 @@ class AsyncNimbleWithStreamedResponse:
6721
6869
 
6722
6870
  return AsyncBatchesResourceWithStreamingResponse(self._client.batches)
6723
6871
 
6872
+ @cached_property
6873
+ def domain_knowledge(self) -> domain_knowledge.AsyncDomainKnowledgeResourceWithStreamingResponse:
6874
+ from .resources.domain_knowledge import AsyncDomainKnowledgeResourceWithStreamingResponse
6875
+
6876
+ return AsyncDomainKnowledgeResourceWithStreamingResponse(self._client.domain_knowledge)
6877
+
6878
+ @cached_property
6879
+ def media(self) -> media.AsyncMediaResourceWithStreamingResponse:
6880
+ from .resources.media import AsyncMediaResourceWithStreamingResponse
6881
+
6882
+ return AsyncMediaResourceWithStreamingResponse(self._client.media)
6883
+
6884
+ @cached_property
6885
+ def serp(self) -> serp.AsyncSerpResourceWithStreamingResponse:
6886
+ from .resources.serp import AsyncSerpResourceWithStreamingResponse
6887
+
6888
+ return AsyncSerpResourceWithStreamingResponse(self._client.serp)
6889
+
6890
+ @cached_property
6891
+ def task_agent(self) -> task_agent.AsyncTaskAgentResourceWithStreamingResponse:
6892
+ from .resources.task_agent import AsyncTaskAgentResourceWithStreamingResponse
6893
+
6894
+ return AsyncTaskAgentResourceWithStreamingResponse(self._client.task_agent)
6895
+
6724
6896
 
6725
6897
  Client = Nimble
6726
6898
 
@@ -99,7 +99,7 @@ async def async_to_httpx_files(files: RequestFiles | None) -> HttpxRequestFiles
99
99
  elif is_sequence_t(files):
100
100
  files = [(key, await _async_transform_file(file)) for key, file in files]
101
101
  else:
102
- raise TypeError("Unexpected file type input {type(files)}, expected mapping or sequence")
102
+ raise TypeError(f"Unexpected file type input {type(files)}, expected mapping or sequence")
103
103
 
104
104
  return files
105
105
 
@@ -25,7 +25,9 @@ from typing_extensions import (
25
25
  ClassVar,
26
26
  Protocol,
27
27
  Required,
28
+ Annotated,
28
29
  ParamSpec,
30
+ TypeAlias,
29
31
  TypedDict,
30
32
  TypeGuard,
31
33
  final,
@@ -79,7 +81,15 @@ from ._compat import (
79
81
  from ._constants import RAW_RESPONSE_HEADER
80
82
 
81
83
  if TYPE_CHECKING:
84
+ from pydantic import GetCoreSchemaHandler, ValidatorFunctionWrapHandler
85
+ from pydantic_core import CoreSchema, core_schema
82
86
  from pydantic_core.core_schema import ModelField, ModelSchema, LiteralSchema, ModelFieldsSchema
87
+ else:
88
+ try:
89
+ from pydantic_core import CoreSchema, core_schema
90
+ except ImportError:
91
+ CoreSchema = None
92
+ core_schema = None
83
93
 
84
94
  __all__ = ["BaseModel", "GenericModel"]
85
95
 
@@ -396,6 +406,76 @@ class BaseModel(pydantic.BaseModel):
396
406
  )
397
407
 
398
408
 
409
+ class _EagerIterable(list[_T], Generic[_T]):
410
+ """
411
+ Accepts any Iterable[T] input (including generators), consumes it
412
+ eagerly, and validates all items upfront.
413
+
414
+ Validation preserves the original container type where possible
415
+ (e.g. a set[T] stays a set[T]). Serialization (model_dump / JSON)
416
+ always emits a list — round-tripping through model_dump() will not
417
+ restore the original container type.
418
+ """
419
+
420
+ @classmethod
421
+ def __get_pydantic_core_schema__(
422
+ cls,
423
+ source_type: Any,
424
+ handler: GetCoreSchemaHandler,
425
+ ) -> CoreSchema:
426
+ (item_type,) = get_args(source_type) or (Any,)
427
+ item_schema: CoreSchema = handler.generate_schema(item_type)
428
+ list_of_items_schema: CoreSchema = core_schema.list_schema(item_schema)
429
+
430
+ return core_schema.no_info_wrap_validator_function(
431
+ cls._validate,
432
+ list_of_items_schema,
433
+ serialization=core_schema.plain_serializer_function_ser_schema(
434
+ cls._serialize,
435
+ info_arg=False,
436
+ ),
437
+ )
438
+
439
+ @staticmethod
440
+ def _validate(v: Iterable[_T], handler: "ValidatorFunctionWrapHandler") -> Any:
441
+ original_type: type[Any] = type(v)
442
+
443
+ # Normalize to list so list_schema can validate each item
444
+ if isinstance(v, list):
445
+ items: list[_T] = v
446
+ else:
447
+ try:
448
+ items = list(v)
449
+ except TypeError as e:
450
+ raise TypeError("Value is not iterable") from e
451
+
452
+ # Validate items against the inner schema
453
+ validated: list[_T] = handler(items)
454
+
455
+ # Reconstruct original container type
456
+ if original_type is list:
457
+ return validated
458
+ # str(list) produces the list's repr, not a string built from items,
459
+ # so skip reconstruction for str and its subclasses.
460
+ if issubclass(original_type, str):
461
+ return validated
462
+ try:
463
+ return original_type(validated)
464
+ except (TypeError, ValueError):
465
+ # If the type cannot be reconstructed, just return the validated list
466
+ return validated
467
+
468
+ @staticmethod
469
+ def _serialize(v: Iterable[_T]) -> list[_T]:
470
+ """Always serialize as a list so Pydantic's JSON encoder is happy."""
471
+ if isinstance(v, list):
472
+ return v
473
+ return list(v)
474
+
475
+
476
+ EagerIterable: TypeAlias = Annotated[Iterable[_T], _EagerIterable]
477
+
478
+
399
479
  def _construct_field(value: object, field: FieldInfo, key: str) -> object:
400
480
  if value is None:
401
481
  return field_get_default(field)
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "nimble_python"
4
- __version__ = "0.17.0" # x-release-please-version
4
+ __version__ = "0.19.0" # x-release-please-version