nimble_python 0.10.0__tar.gz → 0.12.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 (130) hide show
  1. nimble_python-0.12.0/.release-please-manifest.json +3 -0
  2. {nimble_python-0.10.0 → nimble_python-0.12.0}/CHANGELOG.md +39 -0
  3. {nimble_python-0.10.0 → nimble_python-0.12.0}/PKG-INFO +2 -2
  4. {nimble_python-0.10.0 → nimble_python-0.12.0}/api.md +8 -1
  5. {nimble_python-0.10.0 → nimble_python-0.12.0}/pyproject.toml +2 -2
  6. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_client.py +134 -9
  7. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_compat.py +9 -2
  8. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_version.py +1 -1
  9. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/resources/agent.py +14 -6
  10. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/__init__.py +2 -0
  11. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/agent_get_response.py +2 -2
  12. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/agent_list_params.py +6 -3
  13. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/client_extract_async_params.py +1 -4
  14. nimble_python-0.12.0/src/nimble_python/types/client_extract_batch_params.py +1084 -0
  15. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/client_extract_params.py +1 -4
  16. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/client_search_params.py +12 -4
  17. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/crawl_run_params.py +1 -4
  18. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/extract_async_response.py +1 -1
  19. nimble_python-0.12.0/src/nimble_python/types/extract_batch_response.py +68 -0
  20. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/get_cookies_action.py +2 -4
  21. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/task_get_response.py +1 -1
  22. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/task_list_response.py +1 -1
  23. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/api_resources/test_agent.py +2 -0
  24. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/api_resources/test_client.py +331 -0
  25. {nimble_python-0.10.0 → nimble_python-0.12.0}/uv.lock +1 -1
  26. nimble_python-0.10.0/.release-please-manifest.json +0 -3
  27. {nimble_python-0.10.0 → nimble_python-0.12.0}/.gitignore +0 -0
  28. {nimble_python-0.10.0 → nimble_python-0.12.0}/CONTRIBUTING.md +0 -0
  29. {nimble_python-0.10.0 → nimble_python-0.12.0}/LICENSE +0 -0
  30. {nimble_python-0.10.0 → nimble_python-0.12.0}/README.md +0 -0
  31. {nimble_python-0.10.0 → nimble_python-0.12.0}/SECURITY.md +0 -0
  32. {nimble_python-0.10.0 → nimble_python-0.12.0}/bin/check-release-environment +0 -0
  33. {nimble_python-0.10.0 → nimble_python-0.12.0}/bin/publish-pypi +0 -0
  34. {nimble_python-0.10.0 → nimble_python-0.12.0}/examples/.keep +0 -0
  35. {nimble_python-0.10.0 → nimble_python-0.12.0}/release-please-config.json +0 -0
  36. {nimble_python-0.10.0 → nimble_python-0.12.0}/requirements-dev.lock +0 -0
  37. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/__init__.py +0 -0
  38. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_base_client.py +0 -0
  39. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_constants.py +0 -0
  40. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_exceptions.py +0 -0
  41. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_files.py +0 -0
  42. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_models.py +0 -0
  43. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_qs.py +0 -0
  44. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_resource.py +0 -0
  45. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_response.py +0 -0
  46. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_streaming.py +0 -0
  47. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_types.py +0 -0
  48. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/__init__.py +0 -0
  49. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_compat.py +0 -0
  50. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_datetime_parse.py +0 -0
  51. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_json.py +0 -0
  52. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_logs.py +0 -0
  53. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_proxy.py +0 -0
  54. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_reflection.py +0 -0
  55. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_resources_proxy.py +0 -0
  56. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_streams.py +0 -0
  57. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_sync.py +0 -0
  58. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_transform.py +0 -0
  59. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_typing.py +0 -0
  60. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/_utils/_utils.py +0 -0
  61. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/lib/.keep +0 -0
  62. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/py.typed +0 -0
  63. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/resources/__init__.py +0 -0
  64. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/resources/crawl.py +0 -0
  65. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/resources/tasks.py +0 -0
  66. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/agent_list_response.py +0 -0
  67. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/agent_run_async_params.py +0 -0
  68. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/agent_run_async_response.py +0 -0
  69. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/agent_run_params.py +0 -0
  70. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/agent_run_response.py +0 -0
  71. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/client_map_params.py +0 -0
  72. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/crawl_list_params.py +0 -0
  73. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/crawl_list_response.py +0 -0
  74. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/crawl_run_response.py +0 -0
  75. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/crawl_status_response.py +0 -0
  76. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/crawl_terminate_response.py +0 -0
  77. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/extract_response.py +0 -0
  78. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/map_response.py +0 -0
  79. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/search_response.py +0 -0
  80. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/__init__.py +0 -0
  81. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/auto_scroll_action.py +0 -0
  82. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/click_action.py +0 -0
  83. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/eval_action.py +0 -0
  84. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/fetch_action.py +0 -0
  85. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/fill_action.py +0 -0
  86. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/get_cookies_action.py +0 -0
  87. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/goto_action.py +0 -0
  88. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/press_action.py +0 -0
  89. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/screenshot_action.py +0 -0
  90. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/scroll_action.py +0 -0
  91. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/wait_action.py +0 -0
  92. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/wait_for_element_action.py +0 -0
  93. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared/wait_for_navigation_action.py +0 -0
  94. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/__init__.py +0 -0
  95. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/auto_scroll_action.py +0 -0
  96. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/click_action.py +0 -0
  97. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/eval_action.py +0 -0
  98. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/fetch_action.py +0 -0
  99. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/fill_action.py +0 -0
  100. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/goto_action.py +0 -0
  101. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/press_action.py +0 -0
  102. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/screenshot_action.py +0 -0
  103. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/scroll_action.py +0 -0
  104. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/wait_action.py +0 -0
  105. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/wait_for_element_action.py +0 -0
  106. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/shared_params/wait_for_navigation_action.py +0 -0
  107. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/task_list_params.py +0 -0
  108. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimble_python/types/task_results_response.py +0 -0
  109. {nimble_python-0.10.0 → nimble_python-0.12.0}/src/nimbleway/lib/.keep +0 -0
  110. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/__init__.py +0 -0
  111. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/api_resources/__init__.py +0 -0
  112. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/api_resources/test_crawl.py +0 -0
  113. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/api_resources/test_tasks.py +0 -0
  114. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/conftest.py +0 -0
  115. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/sample_file.txt +0 -0
  116. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_client.py +0 -0
  117. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_deepcopy.py +0 -0
  118. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_extract_files.py +0 -0
  119. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_files.py +0 -0
  120. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_models.py +0 -0
  121. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_qs.py +0 -0
  122. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_required_args.py +0 -0
  123. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_response.py +0 -0
  124. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_streaming.py +0 -0
  125. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_transform.py +0 -0
  126. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_utils/test_datetime_parse.py +0 -0
  127. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_utils/test_json.py +0 -0
  128. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_utils/test_proxy.py +0 -0
  129. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/test_utils/test_typing.py +0 -0
  130. {nimble_python-0.10.0 → nimble_python-0.12.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.12.0"
3
+ }
@@ -1,5 +1,44 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.12.0 (2026-03-18)
4
+
5
+ Full Changelog: [v0.11.0...v0.12.0](https://github.com/Nimbleway/nimble-python/compare/v0.11.0...v0.12.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** manual updates ([2ea15a2](https://github.com/Nimbleway/nimble-python/commit/2ea15a25dbbaecd0d19f81900c09b3cafc66aa56))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * **deps:** bump minimum typing-extensions version ([05fce2b](https://github.com/Nimbleway/nimble-python/commit/05fce2b345c4758ec79c97b11f3ed92d53036b61))
15
+ * **pydantic:** do not pass `by_alias` unless set ([1700093](https://github.com/Nimbleway/nimble-python/commit/170009336ff559e375736dbee881002fc4d5c0fe))
16
+
17
+
18
+ ### Chores
19
+
20
+ * **internal:** tweak CI branches ([8f134ca](https://github.com/Nimbleway/nimble-python/commit/8f134ca188d5af80631adf9865f5799ca8fe0f93))
21
+
22
+ ## 0.11.0 (2026-03-10)
23
+
24
+ Full Changelog: [v0.10.0...v0.11.0](https://github.com/Nimbleway/nimble-python/compare/v0.10.0...v0.11.0)
25
+
26
+ ### Features
27
+
28
+ * **api:** api update ([5920fac](https://github.com/Nimbleway/nimble-python/commit/5920facd8a20c83c88ef893e7dafef6dea115239))
29
+ * **api:** api update ([802ba25](https://github.com/Nimbleway/nimble-python/commit/802ba250e6e4681b18259305b7f9d9fac28569b6))
30
+
31
+
32
+ ### Chores
33
+
34
+ * **ci:** bump uv version ([146ce46](https://github.com/Nimbleway/nimble-python/commit/146ce4600e65bd53d9dfaed8faa27483d0b13b2c))
35
+ * **ci:** skip uploading artifacts on stainless-internal branches ([0367a98](https://github.com/Nimbleway/nimble-python/commit/0367a9816cb6178e9c769d09eff4b26bd4b8cd29))
36
+
37
+
38
+ ### Refactors
39
+
40
+ * **types:** use `extra_items` from PEP 728 ([4c233b7](https://github.com/Nimbleway/nimble-python/commit/4c233b70e9763d97f5e03d196d28d951a37d1609))
41
+
3
42
  ## 0.10.0 (2026-02-25)
4
43
 
5
44
  Full Changelog: [v0.9.1...v0.10.0](https://github.com/Nimbleway/nimble-python/compare/v0.9.1...v0.10.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: nimble_python
3
- Version: 0.10.0
3
+ Version: 0.12.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
@@ -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'
@@ -23,13 +23,20 @@ from nimble_python.types import (
23
23
  Types:
24
24
 
25
25
  ```python
26
- from nimble_python.types import ExtractResponse, ExtractAsyncResponse, MapResponse, SearchResponse
26
+ from nimble_python.types import (
27
+ ExtractResponse,
28
+ ExtractAsyncResponse,
29
+ ExtractBatchResponse,
30
+ MapResponse,
31
+ SearchResponse,
32
+ )
27
33
  ```
28
34
 
29
35
  Methods:
30
36
 
31
37
  - <code title="post /v1/extract">client.<a href="./src/nimble_python/_client.py">extract</a>(\*\*<a href="src/nimble_python/types/client_extract_params.py">params</a>) -> <a href="./src/nimble_python/types/extract_response.py">ExtractResponse</a></code>
32
38
  - <code title="post /v1/extract/async">client.<a href="./src/nimble_python/_client.py">extract_async</a>(\*\*<a href="src/nimble_python/types/client_extract_async_params.py">params</a>) -> <a href="./src/nimble_python/types/extract_async_response.py">ExtractAsyncResponse</a></code>
39
+ - <code title="post /v1/extract/batch">client.<a href="./src/nimble_python/_client.py">extract_batch</a>(\*\*<a href="src/nimble_python/types/client_extract_batch_params.py">params</a>) -> <a href="./src/nimble_python/types/extract_batch_response.py">ExtractBatchResponse</a></code>
33
40
  - <code title="post /v1/map">client.<a href="./src/nimble_python/_client.py">map</a>(\*\*<a href="src/nimble_python/types/client_map_params.py">params</a>) -> <a href="./src/nimble_python/types/map_response.py">MapResponse</a></code>
34
41
  - <code title="post /v1/search">client.<a href="./src/nimble_python/_client.py">search</a>(\*\*<a href="src/nimble_python/types/client_search_params.py">params</a>) -> <a href="./src/nimble_python/types/search_response.py">SearchResponse</a></code>
35
42
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nimble_python"
3
- version = "0.10.0"
3
+ version = "0.12.0"
4
4
  description = "The official Python library for the nimble 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",
@@ -10,7 +10,13 @@ import httpx
10
10
 
11
11
  from . import _exceptions
12
12
  from ._qs import Querystring
13
- from .types import client_map_params, client_search_params, client_extract_params, client_extract_async_params
13
+ from .types import (
14
+ client_map_params,
15
+ client_search_params,
16
+ client_extract_params,
17
+ client_extract_async_params,
18
+ client_extract_batch_params,
19
+ )
14
20
  from ._types import (
15
21
  Body,
16
22
  Omit,
@@ -51,6 +57,7 @@ from .types.map_response import MapResponse
51
57
  from .types.search_response import SearchResponse
52
58
  from .types.extract_response import ExtractResponse
53
59
  from .types.extract_async_response import ExtractAsyncResponse
60
+ from .types.extract_batch_response import ExtractBatchResponse
54
61
 
55
62
  if TYPE_CHECKING:
56
63
  from .resources import agent, crawl, tasks
@@ -2220,6 +2227,52 @@ class Nimble(SyncAPIClient):
2220
2227
  cast_to=ExtractAsyncResponse,
2221
2228
  )
2222
2229
 
2230
+ def extract_batch(
2231
+ self,
2232
+ *,
2233
+ params: Iterable[client_extract_batch_params.Param],
2234
+ shared_params: client_extract_batch_params.SharedParams | Omit = omit,
2235
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
2236
+ # The extra values given here take precedence over values defined on the client or passed to this method.
2237
+ extra_headers: Headers | None = None,
2238
+ extra_query: Query | None = None,
2239
+ extra_body: Body | None = None,
2240
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
2241
+ ) -> ExtractBatchResponse:
2242
+ """Extract Batch Endpoint
2243
+
2244
+ Args:
2245
+ params: Array of extraction requests.
2246
+
2247
+ Each object represents one extraction with its own
2248
+ parameters.
2249
+
2250
+ shared_params: Shared parameters applied to the entire batch, such as storage and callback
2251
+ configuration.
2252
+
2253
+ extra_headers: Send extra headers
2254
+
2255
+ extra_query: Add additional query parameters to the request
2256
+
2257
+ extra_body: Add additional JSON properties to the request
2258
+
2259
+ timeout: Override the client-level default timeout for this request, in seconds
2260
+ """
2261
+ return self.post(
2262
+ "/v1/extract/batch",
2263
+ body=maybe_transform(
2264
+ {
2265
+ "params": params,
2266
+ "shared_params": shared_params,
2267
+ },
2268
+ client_extract_batch_params.ClientExtractBatchParams,
2269
+ ),
2270
+ options=make_request_options(
2271
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
2272
+ ),
2273
+ cast_to=ExtractBatchResponse,
2274
+ )
2275
+
2223
2276
  def map(
2224
2277
  self,
2225
2278
  *,
@@ -3072,7 +3125,7 @@ class Nimble(SyncAPIClient):
3072
3125
  query: str,
3073
3126
  content_type: Optional[SequenceNotStr[str]] | Omit = omit,
3074
3127
  country: str | Omit = omit,
3075
- deep_search: bool | Omit = omit,
3128
+ deep_search: Optional[bool] | Omit = omit,
3076
3129
  end_date: Optional[str] | Omit = omit,
3077
3130
  exclude_domains: Optional[SequenceNotStr[str]] | Omit = omit,
3078
3131
  focus: Union[str, SequenceNotStr[str]] | Omit = omit,
@@ -3082,6 +3135,7 @@ class Nimble(SyncAPIClient):
3082
3135
  max_results: int | Omit = omit,
3083
3136
  max_subagents: int | Omit = omit,
3084
3137
  output_format: Literal["plain_text", "markdown", "simplified_html"] | Omit = omit,
3138
+ search_depth: Optional[Literal["lite", "fast", "deep"]] | Omit = omit,
3085
3139
  start_date: Optional[str] | Omit = omit,
3086
3140
  time_range: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit,
3087
3141
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -3103,9 +3157,7 @@ class Nimble(SyncAPIClient):
3103
3157
 
3104
3158
  country: Country code for geo-targeted results (e.g., 'US', 'GB', 'IL')
3105
3159
 
3106
- deep_search: Deep Mode (true, default): fetches full-page content for deeper analysis. Fast
3107
- Mode (false): returns metadata only (title, snippet, URL) for quick,
3108
- token-efficient results.
3160
+ deep_search: Deprecated. Use search_depth instead. true maps to 'deep', false maps to 'lite'.
3109
3161
 
3110
3162
  end_date: Filter results before this date (format: YYYY-MM-DD or YYYY)
3111
3163
 
@@ -3128,6 +3180,13 @@ class Nimble(SyncAPIClient):
3128
3180
 
3129
3181
  output_format: Output format: plain_text, markdown, or simplified_html
3130
3182
 
3183
+ search_depth: Controls content richness and latency of search results.
3184
+
3185
+ - lite: Token-efficient metadata for high-volume pipelines (title, URL,
3186
+ description only)
3187
+ - fast: Rich content (~2K chars) optimized for AI agents
3188
+ - deep: Full page content via Webit scraping for comprehensive analysis
3189
+
3131
3190
  start_date: Filter results after this date (format: YYYY-MM-DD or YYYY)
3132
3191
 
3133
3192
  time_range: Time range filters passed to Webit SERP API as 'time' parameter.
@@ -3157,6 +3216,7 @@ class Nimble(SyncAPIClient):
3157
3216
  "max_results": max_results,
3158
3217
  "max_subagents": max_subagents,
3159
3218
  "output_format": output_format,
3219
+ "search_depth": search_depth,
3160
3220
  "start_date": start_date,
3161
3221
  "time_range": time_range,
3162
3222
  },
@@ -5361,6 +5421,52 @@ class AsyncNimble(AsyncAPIClient):
5361
5421
  cast_to=ExtractAsyncResponse,
5362
5422
  )
5363
5423
 
5424
+ async def extract_batch(
5425
+ self,
5426
+ *,
5427
+ params: Iterable[client_extract_batch_params.Param],
5428
+ shared_params: client_extract_batch_params.SharedParams | Omit = omit,
5429
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
5430
+ # The extra values given here take precedence over values defined on the client or passed to this method.
5431
+ extra_headers: Headers | None = None,
5432
+ extra_query: Query | None = None,
5433
+ extra_body: Body | None = None,
5434
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
5435
+ ) -> ExtractBatchResponse:
5436
+ """Extract Batch Endpoint
5437
+
5438
+ Args:
5439
+ params: Array of extraction requests.
5440
+
5441
+ Each object represents one extraction with its own
5442
+ parameters.
5443
+
5444
+ shared_params: Shared parameters applied to the entire batch, such as storage and callback
5445
+ configuration.
5446
+
5447
+ extra_headers: Send extra headers
5448
+
5449
+ extra_query: Add additional query parameters to the request
5450
+
5451
+ extra_body: Add additional JSON properties to the request
5452
+
5453
+ timeout: Override the client-level default timeout for this request, in seconds
5454
+ """
5455
+ return await self.post(
5456
+ "/v1/extract/batch",
5457
+ body=await async_maybe_transform(
5458
+ {
5459
+ "params": params,
5460
+ "shared_params": shared_params,
5461
+ },
5462
+ client_extract_batch_params.ClientExtractBatchParams,
5463
+ ),
5464
+ options=make_request_options(
5465
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
5466
+ ),
5467
+ cast_to=ExtractBatchResponse,
5468
+ )
5469
+
5364
5470
  async def map(
5365
5471
  self,
5366
5472
  *,
@@ -6213,7 +6319,7 @@ class AsyncNimble(AsyncAPIClient):
6213
6319
  query: str,
6214
6320
  content_type: Optional[SequenceNotStr[str]] | Omit = omit,
6215
6321
  country: str | Omit = omit,
6216
- deep_search: bool | Omit = omit,
6322
+ deep_search: Optional[bool] | Omit = omit,
6217
6323
  end_date: Optional[str] | Omit = omit,
6218
6324
  exclude_domains: Optional[SequenceNotStr[str]] | Omit = omit,
6219
6325
  focus: Union[str, SequenceNotStr[str]] | Omit = omit,
@@ -6223,6 +6329,7 @@ class AsyncNimble(AsyncAPIClient):
6223
6329
  max_results: int | Omit = omit,
6224
6330
  max_subagents: int | Omit = omit,
6225
6331
  output_format: Literal["plain_text", "markdown", "simplified_html"] | Omit = omit,
6332
+ search_depth: Optional[Literal["lite", "fast", "deep"]] | Omit = omit,
6226
6333
  start_date: Optional[str] | Omit = omit,
6227
6334
  time_range: Optional[Literal["hour", "day", "week", "month", "year"]] | Omit = omit,
6228
6335
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -6244,9 +6351,7 @@ class AsyncNimble(AsyncAPIClient):
6244
6351
 
6245
6352
  country: Country code for geo-targeted results (e.g., 'US', 'GB', 'IL')
6246
6353
 
6247
- deep_search: Deep Mode (true, default): fetches full-page content for deeper analysis. Fast
6248
- Mode (false): returns metadata only (title, snippet, URL) for quick,
6249
- token-efficient results.
6354
+ deep_search: Deprecated. Use search_depth instead. true maps to 'deep', false maps to 'lite'.
6250
6355
 
6251
6356
  end_date: Filter results before this date (format: YYYY-MM-DD or YYYY)
6252
6357
 
@@ -6269,6 +6374,13 @@ class AsyncNimble(AsyncAPIClient):
6269
6374
 
6270
6375
  output_format: Output format: plain_text, markdown, or simplified_html
6271
6376
 
6377
+ search_depth: Controls content richness and latency of search results.
6378
+
6379
+ - lite: Token-efficient metadata for high-volume pipelines (title, URL,
6380
+ description only)
6381
+ - fast: Rich content (~2K chars) optimized for AI agents
6382
+ - deep: Full page content via Webit scraping for comprehensive analysis
6383
+
6272
6384
  start_date: Filter results after this date (format: YYYY-MM-DD or YYYY)
6273
6385
 
6274
6386
  time_range: Time range filters passed to Webit SERP API as 'time' parameter.
@@ -6298,6 +6410,7 @@ class AsyncNimble(AsyncAPIClient):
6298
6410
  "max_results": max_results,
6299
6411
  "max_subagents": max_subagents,
6300
6412
  "output_format": output_format,
6413
+ "search_depth": search_depth,
6301
6414
  "start_date": start_date,
6302
6415
  "time_range": time_range,
6303
6416
  },
@@ -6355,6 +6468,9 @@ class NimbleWithRawResponse:
6355
6468
  self.extract_async = to_raw_response_wrapper(
6356
6469
  client.extract_async,
6357
6470
  )
6471
+ self.extract_batch = to_raw_response_wrapper(
6472
+ client.extract_batch,
6473
+ )
6358
6474
  self.map = to_raw_response_wrapper(
6359
6475
  client.map,
6360
6476
  )
@@ -6393,6 +6509,9 @@ class AsyncNimbleWithRawResponse:
6393
6509
  self.extract_async = async_to_raw_response_wrapper(
6394
6510
  client.extract_async,
6395
6511
  )
6512
+ self.extract_batch = async_to_raw_response_wrapper(
6513
+ client.extract_batch,
6514
+ )
6396
6515
  self.map = async_to_raw_response_wrapper(
6397
6516
  client.map,
6398
6517
  )
@@ -6431,6 +6550,9 @@ class NimbleWithStreamedResponse:
6431
6550
  self.extract_async = to_streamed_response_wrapper(
6432
6551
  client.extract_async,
6433
6552
  )
6553
+ self.extract_batch = to_streamed_response_wrapper(
6554
+ client.extract_batch,
6555
+ )
6434
6556
  self.map = to_streamed_response_wrapper(
6435
6557
  client.map,
6436
6558
  )
@@ -6469,6 +6591,9 @@ class AsyncNimbleWithStreamedResponse:
6469
6591
  self.extract_async = async_to_streamed_response_wrapper(
6470
6592
  client.extract_async,
6471
6593
  )
6594
+ self.extract_batch = async_to_streamed_response_wrapper(
6595
+ client.extract_batch,
6596
+ )
6472
6597
  self.map = async_to_streamed_response_wrapper(
6473
6598
  client.map,
6474
6599
  )
@@ -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]",
@@ -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.10.0" # x-release-please-version
4
+ __version__ = "0.12.0" # x-release-please-version
@@ -51,9 +51,10 @@ class AgentResource(SyncAPIResource):
51
51
  self,
52
52
  *,
53
53
  limit: int | Omit = omit,
54
- managed_by: Optional[Literal["nimble", "community"]] | Omit = omit,
54
+ managed_by: Optional[Literal["nimble", "community", "self_managed"]] | Omit = omit,
55
55
  offset: int | Omit = omit,
56
- privacy: Literal["public", "private", "all"] | Omit = omit,
56
+ privacy: Optional[Literal["public", "private", "all"]] | Omit = omit,
57
+ search: Optional[str] | Omit = omit,
57
58
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
58
59
  # The extra values given here take precedence over values defined on the client or passed to this method.
59
60
  extra_headers: Headers | None = None,
@@ -67,12 +68,14 @@ class AgentResource(SyncAPIResource):
67
68
  Args:
68
69
  limit: Number of results per page
69
70
 
70
- managed_by: Filter public templates by attribution
71
+ managed_by: Filter templates by attribution
71
72
 
72
73
  offset: Pagination offset
73
74
 
74
75
  privacy: Filter by privacy level
75
76
 
77
+ search: Search templates by name, domain, or vertical
78
+
76
79
  extra_headers: Send extra headers
77
80
 
78
81
  extra_query: Add additional query parameters to the request
@@ -94,6 +97,7 @@ class AgentResource(SyncAPIResource):
94
97
  "managed_by": managed_by,
95
98
  "offset": offset,
96
99
  "privacy": privacy,
100
+ "search": search,
97
101
  },
98
102
  agent_list_params.AgentListParams,
99
103
  ),
@@ -261,9 +265,10 @@ class AsyncAgentResource(AsyncAPIResource):
261
265
  self,
262
266
  *,
263
267
  limit: int | Omit = omit,
264
- managed_by: Optional[Literal["nimble", "community"]] | Omit = omit,
268
+ managed_by: Optional[Literal["nimble", "community", "self_managed"]] | Omit = omit,
265
269
  offset: int | Omit = omit,
266
- privacy: Literal["public", "private", "all"] | Omit = omit,
270
+ privacy: Optional[Literal["public", "private", "all"]] | Omit = omit,
271
+ search: Optional[str] | Omit = omit,
267
272
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
268
273
  # The extra values given here take precedence over values defined on the client or passed to this method.
269
274
  extra_headers: Headers | None = None,
@@ -277,12 +282,14 @@ class AsyncAgentResource(AsyncAPIResource):
277
282
  Args:
278
283
  limit: Number of results per page
279
284
 
280
- managed_by: Filter public templates by attribution
285
+ managed_by: Filter templates by attribution
281
286
 
282
287
  offset: Pagination offset
283
288
 
284
289
  privacy: Filter by privacy level
285
290
 
291
+ search: Search templates by name, domain, or vertical
292
+
286
293
  extra_headers: Send extra headers
287
294
 
288
295
  extra_query: Add additional query parameters to the request
@@ -304,6 +311,7 @@ class AsyncAgentResource(AsyncAPIResource):
304
311
  "managed_by": managed_by,
305
312
  "offset": offset,
306
313
  "privacy": privacy,
314
+ "search": search,
307
315
  },
308
316
  agent_list_params.AgentListParams,
309
317
  ),
@@ -39,6 +39,8 @@ from .crawl_status_response import CrawlStatusResponse as CrawlStatusResponse
39
39
  from .task_results_response import TaskResultsResponse as TaskResultsResponse
40
40
  from .agent_run_async_params import AgentRunAsyncParams as AgentRunAsyncParams
41
41
  from .extract_async_response import ExtractAsyncResponse as ExtractAsyncResponse
42
+ from .extract_batch_response import ExtractBatchResponse as ExtractBatchResponse
42
43
  from .agent_run_async_response import AgentRunAsyncResponse as AgentRunAsyncResponse
43
44
  from .crawl_terminate_response import CrawlTerminateResponse as CrawlTerminateResponse
44
45
  from .client_extract_async_params import ClientExtractAsyncParams as ClientExtractAsyncParams
46
+ from .client_extract_batch_params import ClientExtractBatchParams as ClientExtractBatchParams
@@ -1,6 +1,6 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- from typing import Dict, List, Optional
3
+ from typing import List, Optional
4
4
 
5
5
  from .._models import BaseModel
6
6
 
@@ -50,6 +50,6 @@ class AgentGetResponse(BaseModel):
50
50
 
51
51
  managed_by: Optional[str] = None
52
52
 
53
- output_schema: Optional[Dict[str, object]] = None
53
+ output_schema: Optional[object] = None
54
54
 
55
55
  vertical: Optional[str] = None
@@ -12,11 +12,14 @@ class AgentListParams(TypedDict, total=False):
12
12
  limit: int
13
13
  """Number of results per page"""
14
14
 
15
- managed_by: Optional[Literal["nimble", "community"]]
16
- """Filter public templates by attribution"""
15
+ managed_by: Optional[Literal["nimble", "community", "self_managed"]]
16
+ """Filter templates by attribution"""
17
17
 
18
18
  offset: int
19
19
  """Pagination offset"""
20
20
 
21
- privacy: Literal["public", "private", "all"]
21
+ privacy: Optional[Literal["public", "private", "all"]]
22
22
  """Filter by privacy level"""
23
+
24
+ search: Optional[str]
25
+ """Search templates by name, domain, or vertical"""
@@ -999,7 +999,7 @@ BrowserAction: TypeAlias = Union[
999
999
  ]
1000
1000
 
1001
1001
 
1002
- class CookiesUnionMember0Typed(TypedDict, total=False):
1002
+ class CookiesUnionMember0(TypedDict, total=False, extra_items=object): # type: ignore[call-arg]
1003
1003
  creation: Optional[str]
1004
1004
 
1005
1005
  domain: Optional[str]
@@ -1029,9 +1029,6 @@ class CookiesUnionMember0Typed(TypedDict, total=False):
1029
1029
  value: str
1030
1030
 
1031
1031
 
1032
- CookiesUnionMember0: TypeAlias = Union[CookiesUnionMember0Typed, Dict[str, object]]
1033
-
1034
-
1035
1032
  class NetworkCaptureURL(TypedDict, total=False):
1036
1033
  value: Required[str]
1037
1034