anchorbrowser 0.1.0a3__tar.gz → 0.1.1__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 (158) hide show
  1. anchorbrowser-0.1.1/.release-please-manifest.json +3 -0
  2. anchorbrowser-0.1.1/CHANGELOG.md +49 -0
  3. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/PKG-INFO +8 -9
  4. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/README.md +5 -6
  5. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/api.md +39 -0
  6. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/pyproject.toml +104 -31
  7. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/requirements-dev.lock +11 -26
  8. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/requirements.lock +10 -36
  9. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/__init__.py +3 -1
  10. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_base_client.py +16 -13
  11. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_client.py +21 -9
  12. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_compat.py +48 -48
  13. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_files.py +4 -4
  14. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_models.py +51 -45
  15. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_qs.py +7 -7
  16. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_types.py +53 -12
  17. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/__init__.py +9 -2
  18. anchorbrowser-0.1.1/src/anchorbrowser/_utils/_compat.py +45 -0
  19. anchorbrowser-0.1.1/src/anchorbrowser/_utils/_datetime_parse.py +136 -0
  20. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_transform.py +13 -3
  21. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_typing.py +6 -1
  22. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_utils.py +4 -5
  23. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_version.py +1 -1
  24. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/lib/browser.py +1 -1
  25. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/__init__.py +14 -0
  26. anchorbrowser-0.1.1/src/anchorbrowser/resources/events.py +270 -0
  27. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/extensions.py +9 -9
  28. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/profiles.py +31 -43
  29. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/all.py +5 -5
  30. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/clipboard.py +5 -5
  31. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/keyboard.py +11 -13
  32. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/mouse.py +19 -19
  33. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/recordings/primary.py +3 -3
  34. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/recordings/recordings.py +7 -7
  35. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/sessions.py +307 -30
  36. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/tools.py +107 -37
  37. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/__init__.py +7 -0
  38. anchorbrowser-0.1.1/src/anchorbrowser/types/event_signal_params.py +13 -0
  39. anchorbrowser-0.1.1/src/anchorbrowser/types/event_wait_for_params.py +14 -0
  40. anchorbrowser-0.1.1/src/anchorbrowser/types/event_wait_for_response.py +12 -0
  41. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_manifest.py +6 -1
  42. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/profile_create_params.py +3 -6
  43. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/profile_list_response.py +0 -3
  44. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/profile_retrieve_response.py +0 -3
  45. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/profile_update_params.py +0 -6
  46. anchorbrowser-0.1.1/src/anchorbrowser/types/session_create_params.py +432 -0
  47. anchorbrowser-0.1.1/src/anchorbrowser/types/session_list_pages_response.py +25 -0
  48. anchorbrowser-0.1.1/src/anchorbrowser/types/session_retrieve_response.py +46 -0
  49. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_scroll_params.py +3 -0
  50. anchorbrowser-0.1.1/src/anchorbrowser/types/session_upload_file_params.py +14 -0
  51. anchorbrowser-0.1.1/src/anchorbrowser/types/session_upload_file_response.py +17 -0
  52. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/keyboard_shortcut_params.py +2 -2
  53. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/recording_list_response.py +4 -8
  54. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/tool_fetch_webpage_params.py +15 -0
  55. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/tool_perform_web_task_params.py +17 -1
  56. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/tool_perform_web_task_response.py +3 -3
  57. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/recordings/test_primary.py +0 -8
  58. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/test_all.py +12 -12
  59. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/test_clipboard.py +16 -16
  60. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/test_keyboard.py +20 -20
  61. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/test_mouse.py +48 -48
  62. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/test_recordings.py +24 -24
  63. anchorbrowser-0.1.1/tests/api_resources/test_events.py +251 -0
  64. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/test_extensions.py +28 -28
  65. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/test_profiles.py +42 -44
  66. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/test_sessions.py +353 -84
  67. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/test_tools.py +32 -24
  68. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/conftest.py +1 -1
  69. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_client.py +13 -54
  70. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_models.py +24 -24
  71. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_transform.py +17 -10
  72. anchorbrowser-0.1.1/tests/test_utils/test_datetime_parse.py +110 -0
  73. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/utils.py +13 -5
  74. anchorbrowser-0.1.0a3/.release-please-manifest.json +0 -3
  75. anchorbrowser-0.1.0a3/CHANGELOG.md +0 -74
  76. anchorbrowser-0.1.0a3/mypy.ini +0 -50
  77. anchorbrowser-0.1.0a3/src/anchorbrowser/types/session_create_params.py +0 -196
  78. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/.gitignore +0 -0
  79. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/CONTRIBUTING.md +0 -0
  80. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/LICENSE +0 -0
  81. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/SECURITY.md +0 -0
  82. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/bin/check-release-environment +0 -0
  83. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/bin/publish-pypi +0 -0
  84. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/examples/.keep +0 -0
  85. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/noxfile.py +0 -0
  86. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/release-please-config.json +0 -0
  87. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_constants.py +0 -0
  88. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_exceptions.py +0 -0
  89. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_resource.py +0 -0
  90. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_response.py +0 -0
  91. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_streaming.py +0 -0
  92. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_logs.py +0 -0
  93. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_proxy.py +0 -0
  94. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_reflection.py +0 -0
  95. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_resources_proxy.py +0 -0
  96. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_streams.py +0 -0
  97. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_sync.py +0 -0
  98. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/lib/.keep +0 -0
  99. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/lib/agent.py +0 -0
  100. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/py.typed +0 -0
  101. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/agent.py +0 -0
  102. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/browser.py +0 -0
  103. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/__init__.py +0 -0
  104. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/recordings/__init__.py +0 -0
  105. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_delete_response.py +0 -0
  106. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_list_response.py +0 -0
  107. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_retrieve_response.py +0 -0
  108. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_upload_params.py +0 -0
  109. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_upload_response.py +0 -0
  110. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_copy_response.py +0 -0
  111. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_create_response.py +0 -0
  112. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_drag_and_drop_params.py +0 -0
  113. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_drag_and_drop_response.py +0 -0
  114. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_goto_params.py +0 -0
  115. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_goto_response.py +0 -0
  116. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_paste_params.py +0 -0
  117. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_paste_response.py +0 -0
  118. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_retrieve_downloads_response.py +0 -0
  119. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_scroll_response.py +0 -0
  120. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/__init__.py +0 -0
  121. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/all_status_response.py +0 -0
  122. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/clipboard_get_response.py +0 -0
  123. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/clipboard_set_params.py +0 -0
  124. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/clipboard_set_response.py +0 -0
  125. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/keyboard_shortcut_response.py +0 -0
  126. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/keyboard_type_params.py +0 -0
  127. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/keyboard_type_response.py +0 -0
  128. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_click_params.py +0 -0
  129. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_click_response.py +0 -0
  130. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_double_click_params.py +0 -0
  131. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_double_click_response.py +0 -0
  132. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_down_params.py +0 -0
  133. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_down_response.py +0 -0
  134. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_move_params.py +0 -0
  135. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_move_response.py +0 -0
  136. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_up_params.py +0 -0
  137. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_up_response.py +0 -0
  138. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/recording_pause_response.py +0 -0
  139. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/recording_resume_response.py +0 -0
  140. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/recordings/__init__.py +0 -0
  141. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/shared/__init__.py +0 -0
  142. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/shared/success_response.py +0 -0
  143. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/tool_fetch_webpage_response.py +0 -0
  144. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/tool_screenshot_webpage_params.py +0 -0
  145. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/__init__.py +0 -0
  146. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/__init__.py +0 -0
  147. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/__init__.py +0 -0
  148. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/recordings/__init__.py +0 -0
  149. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/sample_file.txt +0 -0
  150. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_deepcopy.py +0 -0
  151. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_extract_files.py +0 -0
  152. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_files.py +0 -0
  153. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_qs.py +0 -0
  154. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_required_args.py +0 -0
  155. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_response.py +0 -0
  156. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_streaming.py +0 -0
  157. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_utils/test_proxy.py +0 -0
  158. {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_utils/test_typing.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.1"
3
+ }
@@ -0,0 +1,49 @@
1
+ # Changelog
2
+
3
+ ## 0.1.1 (2025-10-11)
4
+
5
+ Full Changelog: [v0.1.0...v0.1.1](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/compare/v0.1.0...v0.1.1)
6
+
7
+ ### Features
8
+
9
+ * Add disable_web_security ([cefa8d4](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/cefa8d4ae15c0ec2d39543b67ac3dde4bc1da791))
10
+ * added additional fetch-webpage options ([c7eead2](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/c7eead27ece65dd5c41860d9080f2167017f9da2))
11
+ * added agent pause and continue ([49a1a49](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/49a1a49c98831a12d031064ff251c81a83932651))
12
+ * Added OpenAPI specification for file uploads to browser sessions, inc… ([205c296](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/205c29632e3a19a1555b37b83cf8b0e2fca88843))
13
+ * added use os for scroll ([71bc128](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/71bc128ffde6bdf309d56fbfb6f1d44e7b46c1bf))
14
+ * **api:** manual updates ([41b55e3](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/41b55e3455ee8543f057191346995ff6f2fbb4df))
15
+ * **api:** manual updates ([171046c](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/171046c5f8dfbcd3f632e15e0d5bdae2d478af31))
16
+ * **api:** manual updates ([342688b](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/342688b498fc4aba7fcb0eb4cc54ea5be9051f35))
17
+ * BRO-622 update openapi spec with session get ([3c5ee34](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/3c5ee34dca0be7b44be1e4977290f8cb80a847b7))
18
+ * BRO-764 City based proxy ([936ffb8](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/936ffb8d46ee08a7edd345323a7adc4271b58f75))
19
+ * improve future compat with pydantic v3 ([4e5c038](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/4e5c038e9edcad6b418a32846813f76f67ff47c0))
20
+ * **types:** replace List[str] with SequenceNotStr in params ([0c39bce](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/0c39bce296ccf2143b9cc8d89bab75d53d3f1acc))
21
+
22
+
23
+ ### Bug Fixes
24
+
25
+ * avoid newer type syntax ([f78c034](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/f78c034003d403087c556a4c18d9438637311a07))
26
+ * **compat:** compat with `pydantic<2.8.0` when using additional fields ([53b002f](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/53b002f642874a7518ffc4a49f822e25ec6c83a0))
27
+
28
+
29
+ ### Chores
30
+
31
+ * do not install brew dependencies in ./scripts/bootstrap by default ([75a97d0](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/75a97d04851d9cda1c1680c07efd24ed66b1bb6f))
32
+ * **internal:** add Sequence related utils ([d2c8ffc](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/d2c8ffc2d93043c6ef7b99d172542adb7c0bea0a))
33
+ * **internal:** change ci workflow machines ([31cfb87](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/31cfb877b7bd28f3726c996d778db040c27bda10))
34
+ * **internal:** codegen related update ([2103cfa](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/2103cfa93c032268d647554707d6bd11015e8ffd))
35
+ * **internal:** codegen related update ([bf5c542](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/bf5c5420a54af077edeb4c465254e39553859dc2))
36
+ * **internal:** detect missing future annotations with ruff ([8658af6](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/8658af6f33402b406e084607981a9fb0d052ec6f))
37
+ * **internal:** fix ruff target version ([3e2468a](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/3e2468a77261ccbf3420521293241253b269dd9d))
38
+ * **internal:** move mypy configurations to `pyproject.toml` file ([b42de93](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/b42de93096441c5b36b32bfeb36d8fd6383c3c55))
39
+ * **internal:** update comment in script ([a58dcb2](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/a58dcb25c04d22f93f495ff95dce45d15fd26571))
40
+ * **internal:** update pydantic dependency ([765c63f](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/765c63f233924e94f42d7b12a7d58341de6b8adb))
41
+ * **internal:** update pyright exclude list ([eeadbf8](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/eeadbf8cf3a12f552bb2ce88a64e15491815a1f8))
42
+ * **types:** change optional parameter type from NotGiven to Omit ([f84b4e0](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/f84b4e01b536f0f34703562c891d45a1b68ef9db))
43
+ * update @stainless-api/prism-cli to v5.15.0 ([88b661e](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/88b661e22651c660b72239df4a00f83a063e5e93))
44
+ * update github action ([bc5a5df](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/bc5a5df363f929149198bb713d26bb529c29d12d))
45
+
46
+
47
+ ### Documentation
48
+
49
+ * add reset_preferences option to session profile configuration i… ([a35fb22](https://github.com/anchorbrowser/AnchorBrowser-SDK-Python/commit/a35fb2285e3c1225512860c9f957450ddb4cf896))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: anchorbrowser
3
- Version: 0.1.0a3
3
+ Version: 0.1.1
4
4
  Summary: The official Python library for the anchorbrowser API
5
5
  Project-URL: Homepage, https://github.com/anchorbrowser/AnchorBrowser-SDK-Python
6
6
  Project-URL: Repository, https://github.com/anchorbrowser/AnchorBrowser-SDK-Python
@@ -25,11 +25,11 @@ Requires-Python: >=3.8
25
25
  Requires-Dist: anyio<5,>=3.5.0
26
26
  Requires-Dist: distro<2,>=1.7.0
27
27
  Requires-Dist: httpx<1,>=0.23.0
28
+ Requires-Dist: playwright>=1.55.0
28
29
  Requires-Dist: pydantic<3,>=1.9.0
29
- Requires-Dist: pytest-playwright
30
30
  Requires-Dist: sniffio
31
31
  Requires-Dist: typing-extensions<5,>=4.10
32
- Requires-Dist: websockets
32
+ Requires-Dist: websockets>=15.0.1
33
33
  Provides-Extra: aiohttp
34
34
  Requires-Dist: aiohttp; extra == 'aiohttp'
35
35
  Requires-Dist: httpx-aiohttp>=0.1.8; extra == 'aiohttp'
@@ -54,7 +54,7 @@ The REST API documentation can be found on [docs.anchorbrowser.io](https://docs.
54
54
 
55
55
  ```sh
56
56
  # install from PyPI
57
- pip install --pre anchorbrowser
57
+ pip install anchorbrowser
58
58
  ```
59
59
 
60
60
  ## Usage
@@ -77,7 +77,7 @@ print(success_response.data)
77
77
 
78
78
  While you can provide an `api_key` keyword argument,
79
79
  we recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)
80
- to add `ANCHORBROWSER_API_KEY="My API Key"` to your `.env` file
80
+ to add `ANCHORBROWSER_API_KEY="Your API Key"` to your `.env` file
81
81
  so that your API Key is not stored in source control.
82
82
 
83
83
  ## Async usage
@@ -114,7 +114,7 @@ You can enable this by installing `aiohttp`:
114
114
 
115
115
  ```sh
116
116
  # install from PyPI
117
- pip install --pre anchorbrowser[aiohttp]
117
+ pip install anchorbrowser[aiohttp]
118
118
  ```
119
119
 
120
120
  Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
@@ -127,7 +127,7 @@ from anchorbrowser import AsyncAnchorbrowser
127
127
 
128
128
  async def main() -> None:
129
129
  async with AsyncAnchorbrowser(
130
- api_key="My API Key",
130
+ api_key="Your API Key",
131
131
  http_client=DefaultAioHttpClient(),
132
132
  ) as client:
133
133
  success_response = await client.profiles.create(
@@ -173,9 +173,8 @@ from anchorbrowser import Anchorbrowser
173
173
 
174
174
  client = Anchorbrowser()
175
175
 
176
- client.extensions.upload(
176
+ client.sessions.upload_file(
177
177
  file=Path("/path/to/file"),
178
- name="My Custom Extension",
179
178
  )
180
179
  ```
181
180
 
@@ -17,7 +17,7 @@ The REST API documentation can be found on [docs.anchorbrowser.io](https://docs.
17
17
 
18
18
  ```sh
19
19
  # install from PyPI
20
- pip install --pre anchorbrowser
20
+ pip install anchorbrowser
21
21
  ```
22
22
 
23
23
  ## Usage
@@ -40,7 +40,7 @@ print(success_response.data)
40
40
 
41
41
  While you can provide an `api_key` keyword argument,
42
42
  we recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)
43
- to add `ANCHORBROWSER_API_KEY="My API Key"` to your `.env` file
43
+ to add `ANCHORBROWSER_API_KEY="Your API Key"` to your `.env` file
44
44
  so that your API Key is not stored in source control.
45
45
 
46
46
  ## Async usage
@@ -77,7 +77,7 @@ You can enable this by installing `aiohttp`:
77
77
 
78
78
  ```sh
79
79
  # install from PyPI
80
- pip install --pre anchorbrowser[aiohttp]
80
+ pip install anchorbrowser[aiohttp]
81
81
  ```
82
82
 
83
83
  Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
@@ -90,7 +90,7 @@ from anchorbrowser import AsyncAnchorbrowser
90
90
 
91
91
  async def main() -> None:
92
92
  async with AsyncAnchorbrowser(
93
- api_key="My API Key",
93
+ api_key="Your API Key",
94
94
  http_client=DefaultAioHttpClient(),
95
95
  ) as client:
96
96
  success_response = await client.profiles.create(
@@ -136,9 +136,8 @@ from anchorbrowser import Anchorbrowser
136
136
 
137
137
  client = Anchorbrowser()
138
138
 
139
- client.extensions.upload(
139
+ client.sessions.upload_file(
140
140
  file=Path("/path/to/file"),
141
- name="My Custom Extension",
142
141
  )
143
142
  ```
144
143
 
@@ -27,26 +27,32 @@ Types:
27
27
  ```python
28
28
  from anchorbrowser.types import (
29
29
  SessionCreateResponse,
30
+ SessionRetrieveResponse,
30
31
  SessionCopyResponse,
31
32
  SessionDragAndDropResponse,
32
33
  SessionGotoResponse,
34
+ SessionListPagesResponse,
33
35
  SessionPasteResponse,
34
36
  SessionRetrieveDownloadsResponse,
35
37
  SessionScrollResponse,
38
+ SessionUploadFileResponse,
36
39
  )
37
40
  ```
38
41
 
39
42
  Methods:
40
43
 
41
44
  - <code title="post /v1/sessions">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">create</a>(\*\*<a href="src/anchorbrowser/types/session_create_params.py">params</a>) -> <a href="./src/anchorbrowser/types/session_create_response.py">SessionCreateResponse</a></code>
45
+ - <code title="get /v1/sessions/{session_id}">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">retrieve</a>(session_id) -> <a href="./src/anchorbrowser/types/session_retrieve_response.py">SessionRetrieveResponse</a></code>
42
46
  - <code title="delete /v1/sessions/{session_id}">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">delete</a>(session_id) -> <a href="./src/anchorbrowser/types/shared/success_response.py">SuccessResponse</a></code>
43
47
  - <code title="post /v1/sessions/{sessionId}/copy">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">copy</a>(session_id) -> <a href="./src/anchorbrowser/types/session_copy_response.py">SessionCopyResponse</a></code>
44
48
  - <code title="post /v1/sessions/{sessionId}/drag-and-drop">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">drag_and_drop</a>(session_id, \*\*<a href="src/anchorbrowser/types/session_drag_and_drop_params.py">params</a>) -> <a href="./src/anchorbrowser/types/session_drag_and_drop_response.py">SessionDragAndDropResponse</a></code>
45
49
  - <code title="post /v1/sessions/{sessionId}/goto">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">goto</a>(session_id, \*\*<a href="src/anchorbrowser/types/session_goto_params.py">params</a>) -> <a href="./src/anchorbrowser/types/session_goto_response.py">SessionGotoResponse</a></code>
50
+ - <code title="get /v1/sessions/{session_id}/pages">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">list_pages</a>(session_id) -> <a href="./src/anchorbrowser/types/session_list_pages_response.py">SessionListPagesResponse</a></code>
46
51
  - <code title="post /v1/sessions/{sessionId}/paste">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">paste</a>(session_id, \*\*<a href="src/anchorbrowser/types/session_paste_params.py">params</a>) -> <a href="./src/anchorbrowser/types/session_paste_response.py">SessionPasteResponse</a></code>
47
52
  - <code title="get /v1/sessions/{session_id}/downloads">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">retrieve_downloads</a>(session_id) -> <a href="./src/anchorbrowser/types/session_retrieve_downloads_response.py">SessionRetrieveDownloadsResponse</a></code>
48
53
  - <code title="get /v1/sessions/{sessionId}/screenshot">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">retrieve_screenshot</a>(session_id) -> BinaryAPIResponse</code>
49
54
  - <code title="post /v1/sessions/{sessionId}/scroll">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">scroll</a>(session_id, \*\*<a href="src/anchorbrowser/types/session_scroll_params.py">params</a>) -> <a href="./src/anchorbrowser/types/session_scroll_response.py">SessionScrollResponse</a></code>
55
+ - <code title="post /v1/sessions/{sessionId}/uploads">client.sessions.<a href="./src/anchorbrowser/resources/sessions/sessions.py">upload_file</a>(session_id, \*\*<a href="src/anchorbrowser/types/session_upload_file_params.py">params</a>) -> <a href="./src/anchorbrowser/types/session_upload_file_response.py">SessionUploadFileResponse</a></code>
50
56
 
51
57
  ## All
52
58
 
@@ -133,6 +139,26 @@ Methods:
133
139
  - <code title="get /v1/sessions/{sessionId}/clipboard">client.sessions.clipboard.<a href="./src/anchorbrowser/resources/sessions/clipboard.py">get</a>(session_id) -> <a href="./src/anchorbrowser/types/sessions/clipboard_get_response.py">ClipboardGetResponse</a></code>
134
140
  - <code title="post /v1/sessions/{sessionId}/clipboard">client.sessions.clipboard.<a href="./src/anchorbrowser/resources/sessions/clipboard.py">set</a>(session_id, \*\*<a href="src/anchorbrowser/types/sessions/clipboard_set_params.py">params</a>) -> <a href="./src/anchorbrowser/types/sessions/clipboard_set_response.py">ClipboardSetResponse</a></code>
135
141
 
142
+ ## Agent
143
+
144
+ Methods:
145
+
146
+ - <code title="post /v1/sessions/{session_id}/agent/pause">client.sessions.agent.<a href="./src/anchorbrowser/resources/sessions/agent/agent.py">pause</a>(session_id) -> <a href="./src/anchorbrowser/types/shared/success_response.py">SuccessResponse</a></code>
147
+ - <code title="post /v1/sessions/{session_id}/agent/resume">client.sessions.agent.<a href="./src/anchorbrowser/resources/sessions/agent/agent.py">resume</a>(session_id) -> <a href="./src/anchorbrowser/types/shared/success_response.py">SuccessResponse</a></code>
148
+
149
+ ### Files
150
+
151
+ Types:
152
+
153
+ ```python
154
+ from anchorbrowser.types.sessions.agent import FileListResponse, FileUploadResponse
155
+ ```
156
+
157
+ Methods:
158
+
159
+ - <code title="get /v1/sessions/{sessionId}/agent/files">client.sessions.agent.files.<a href="./src/anchorbrowser/resources/sessions/agent/files.py">list</a>(session_id) -> <a href="./src/anchorbrowser/types/sessions/agent/file_list_response.py">FileListResponse</a></code>
160
+ - <code title="post /v1/sessions/{sessionId}/agent/files">client.sessions.agent.files.<a href="./src/anchorbrowser/resources/sessions/agent/files.py">upload</a>(session_id, \*\*<a href="src/anchorbrowser/types/sessions/agent/file_upload_params.py">params</a>) -> <a href="./src/anchorbrowser/types/sessions/agent/file_upload_response.py">FileUploadResponse</a></code>
161
+
136
162
  # Tools
137
163
 
138
164
  Types:
@@ -167,3 +193,16 @@ Methods:
167
193
  - <code title="get /v1/extensions">client.extensions.<a href="./src/anchorbrowser/resources/extensions.py">list</a>() -> <a href="./src/anchorbrowser/types/extension_list_response.py">ExtensionListResponse</a></code>
168
194
  - <code title="delete /v1/extensions/{id}">client.extensions.<a href="./src/anchorbrowser/resources/extensions.py">delete</a>(id) -> <a href="./src/anchorbrowser/types/extension_delete_response.py">ExtensionDeleteResponse</a></code>
169
195
  - <code title="post /v1/extensions">client.extensions.<a href="./src/anchorbrowser/resources/extensions.py">upload</a>(\*\*<a href="src/anchorbrowser/types/extension_upload_params.py">params</a>) -> <a href="./src/anchorbrowser/types/extension_upload_response.py">ExtensionUploadResponse</a></code>
196
+
197
+ # Events
198
+
199
+ Types:
200
+
201
+ ```python
202
+ from anchorbrowser.types import EventWaitForResponse
203
+ ```
204
+
205
+ Methods:
206
+
207
+ - <code title="post /v1/events/{event_name}">client.events.<a href="./src/anchorbrowser/resources/events.py">signal</a>(event_name, \*\*<a href="src/anchorbrowser/types/event_signal_params.py">params</a>) -> <a href="./src/anchorbrowser/types/shared/success_response.py">SuccessResponse</a></code>
208
+ - <code title="post /v1/events/{event_name}/wait">client.events.<a href="./src/anchorbrowser/resources/events.py">wait_for</a>(event_name, \*\*<a href="src/anchorbrowser/types/event_wait_for_params.py">params</a>) -> <a href="./src/anchorbrowser/types/event_wait_for_response.py">EventWaitForResponse</a></code>
@@ -1,19 +1,21 @@
1
1
  [project]
2
2
  name = "anchorbrowser"
3
- version = "0.1.0-alpha.3"
3
+ version = "0.1.1"
4
4
  description = "The official Python library for the anchorbrowser API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
7
- authors = [{ name = "Anchorbrowser", email = "support@anchorbrowser.io" }]
7
+ authors = [
8
+ { name = "Anchorbrowser", email = "support@anchorbrowser.io" },
9
+ ]
8
10
  dependencies = [
9
- "httpx>=0.23.0, <1",
10
- "pydantic>=1.9.0, <3",
11
- "typing-extensions>=4.10, <5",
12
- "anyio>=3.5.0, <5",
13
- "distro>=1.7.0, <2",
14
- "sniffio",
15
- "pytest-playwright",
16
- "websockets",
11
+ "httpx>=0.23.0, <1",
12
+ "pydantic>=1.9.0, <3",
13
+ "typing-extensions>=4.10, <5",
14
+ "anyio>=3.5.0, <5",
15
+ "distro>=1.7.0, <2",
16
+ "sniffio",
17
+ "websockets>=15.0.1",
18
+ "playwright>=1.55.0",
17
19
  ]
18
20
  requires-python = ">= 3.8"
19
21
  classifiers = [
@@ -31,7 +33,7 @@ classifiers = [
31
33
  "Operating System :: POSIX :: Linux",
32
34
  "Operating System :: Microsoft :: Windows",
33
35
  "Topic :: Software Development :: Libraries :: Python Modules",
34
- "License :: OSI Approved :: Apache Software License",
36
+ "License :: OSI Approved :: Apache Software License"
35
37
  ]
36
38
 
37
39
  [project.urls]
@@ -45,19 +47,18 @@ aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.8"]
45
47
  managed = true
46
48
  # version pins are in requirements-dev.lock
47
49
  dev-dependencies = [
48
- "pyright==1.1.399",
49
- "mypy",
50
- "respx",
51
- "pytest",
52
- "pytest-asyncio",
53
- "ruff",
54
- "time-machine",
55
- "nox",
56
- "dirty-equals>=0.6.0",
57
- "importlib-metadata>=6.7.0",
58
- "rich>=13.7.1",
59
- "nest_asyncio==1.6.0",
60
- "pytest-xdist>=3.6.1",
50
+ "pyright==1.1.399",
51
+ "mypy",
52
+ "respx",
53
+ "pytest",
54
+ "pytest-asyncio",
55
+ "ruff",
56
+ "time-machine",
57
+ "nox",
58
+ "dirty-equals>=0.6.0",
59
+ "importlib-metadata>=6.7.0",
60
+ "rich>=13.7.1",
61
+ "pytest-xdist>=3.6.1",
61
62
  ]
62
63
 
63
64
  [tool.rye.scripts]
@@ -67,17 +68,24 @@ format = { chain = [
67
68
  "fix:ruff",
68
69
  # run formatting again to fix any inconsistencies when imports are stripped
69
70
  "format:ruff",
70
- ] }
71
+ ]}
71
72
  "format:docs" = "python scripts/utils/ruffen-docs.py README.md api.md"
72
73
  "format:ruff" = "ruff format"
73
74
 
74
- "lint" = { chain = ["check:ruff", "typecheck", "check:importable"] }
75
+ "lint" = { chain = [
76
+ "check:ruff",
77
+ "typecheck",
78
+ "check:importable",
79
+ ]}
75
80
  "check:ruff" = "ruff check ."
76
81
  "fix:ruff" = "ruff check --fix ."
77
82
 
78
83
  "check:importable" = "python -c 'import anchorbrowser'"
79
84
 
80
- typecheck = { chain = ["typecheck:pyright", "typecheck:mypy"] }
85
+ typecheck = { chain = [
86
+ "typecheck:pyright",
87
+ "typecheck:mypy"
88
+ ]}
81
89
  "typecheck:pyright" = "pyright"
82
90
  "typecheck:verify-types" = "pyright --verifytypes anchorbrowser --ignoreexternal"
83
91
  "typecheck:mypy" = "mypy ."
@@ -87,7 +95,9 @@ requires = ["hatchling==1.26.3", "hatch-fancy-pypi-readme"]
87
95
  build-backend = "hatchling.build"
88
96
 
89
97
  [tool.hatch.build]
90
- include = ["src/*"]
98
+ include = [
99
+ "src/*"
100
+ ]
91
101
 
92
102
  [tool.hatch.build.targets.wheel]
93
103
  packages = ["src/anchorbrowser"]
@@ -124,7 +134,9 @@ addopts = "--tb=short -n auto"
124
134
  xfail_strict = true
125
135
  asyncio_mode = "auto"
126
136
  asyncio_default_fixture_loop_scope = "session"
127
- filterwarnings = ["error"]
137
+ filterwarnings = [
138
+ "error"
139
+ ]
128
140
 
129
141
  [tool.pyright]
130
142
  # this enables practically every flag given by pyright.
@@ -133,7 +145,12 @@ filterwarnings = ["error"]
133
145
  typeCheckingMode = "strict"
134
146
  pythonVersion = "3.8"
135
147
 
136
- exclude = ["_dev", ".venv", ".nox"]
148
+ exclude = [
149
+ "_dev",
150
+ ".venv",
151
+ ".nox",
152
+ ".git",
153
+ ]
137
154
 
138
155
  reportImplicitOverride = true
139
156
  reportOverlappingOverload = false
@@ -141,10 +158,62 @@ reportOverlappingOverload = false
141
158
  reportImportCycles = false
142
159
  reportPrivateUsage = false
143
160
 
161
+ [tool.mypy]
162
+ pretty = true
163
+ show_error_codes = true
164
+
165
+ # Exclude _files.py because mypy isn't smart enough to apply
166
+ # the correct type narrowing and as this is an internal module
167
+ # it's fine to just use Pyright.
168
+ #
169
+ # We also exclude our `tests` as mypy doesn't always infer
170
+ # types correctly and Pyright will still catch any type errors.
171
+ exclude = ['src/anchorbrowser/_files.py', '_dev/.*.py', 'tests/.*']
172
+
173
+ strict_equality = true
174
+ implicit_reexport = true
175
+ check_untyped_defs = true
176
+ no_implicit_optional = true
177
+
178
+ warn_return_any = true
179
+ warn_unreachable = true
180
+ warn_unused_configs = true
181
+
182
+ # Turn these options off as it could cause conflicts
183
+ # with the Pyright options.
184
+ warn_unused_ignores = false
185
+ warn_redundant_casts = false
186
+
187
+ disallow_any_generics = true
188
+ disallow_untyped_defs = true
189
+ disallow_untyped_calls = true
190
+ disallow_subclassing_any = true
191
+ disallow_incomplete_defs = true
192
+ disallow_untyped_decorators = true
193
+ cache_fine_grained = true
194
+
195
+ # By default, mypy reports an error if you assign a value to the result
196
+ # of a function call that doesn't return anything. We do this in our test
197
+ # cases:
198
+ # ```
199
+ # result = ...
200
+ # assert result is None
201
+ # ```
202
+ # Changing this codegen to make mypy happy would increase complexity
203
+ # and would not be worth it.
204
+ disable_error_code = "func-returns-value,overload-cannot-match"
205
+
206
+ # https://github.com/python/mypy/issues/12162
207
+ [[tool.mypy.overrides]]
208
+ module = "black.files.*"
209
+ ignore_errors = true
210
+ ignore_missing_imports = true
211
+
212
+
144
213
  [tool.ruff]
145
214
  line-length = 120
146
215
  output-format = "grouped"
147
- target-version = "py37"
216
+ target-version = "py38"
148
217
 
149
218
  [tool.ruff.format]
150
219
  docstring-code-format = true
@@ -157,6 +226,8 @@ select = [
157
226
  "B",
158
227
  # remove unused imports
159
228
  "F401",
229
+ # check for missing future annotations
230
+ "FA102",
160
231
  # bare except statements
161
232
  "E722",
162
233
  # unused arguments
@@ -179,6 +250,8 @@ unfixable = [
179
250
  "T203",
180
251
  ]
181
252
 
253
+ extend-safe-fixes = ["FA102"]
254
+
182
255
  [tool.ruff.lint.flake8-tidy-imports.banned-api]
183
256
  "functools.lru_cache".msg = "This function does not retain type information for the wrapped function's arguments; The `lru_cache` function from `_utils` should be used instead"
184
257
 
@@ -31,9 +31,6 @@ attrs==25.3.0
31
31
  certifi==2023.7.22
32
32
  # via httpcore
33
33
  # via httpx
34
- # via requests
35
- charset-normalizer==3.4.2
36
- # via requests
37
34
  colorlog==6.7.0
38
35
  # via nox
39
36
  dirty-equals==0.6.0
@@ -41,7 +38,7 @@ distlib==0.3.7
41
38
  # via virtualenv
42
39
  distro==1.8.0
43
40
  # via anchorbrowser
44
- exceptiongroup==1.2.2
41
+ exceptiongroup==1.3.0
45
42
  # via anyio
46
43
  # via pytest
47
44
  execnet==2.1.1
@@ -51,7 +48,7 @@ filelock==3.12.4
51
48
  frozenlist==1.6.2
52
49
  # via aiohttp
53
50
  # via aiosignal
54
- greenlet==3.2.3
51
+ greenlet==3.2.4
55
52
  # via playwright
56
53
  h11==0.16.0
57
54
  # via httpcore
@@ -66,7 +63,6 @@ httpx-aiohttp==0.1.8
66
63
  idna==3.4
67
64
  # via anyio
68
65
  # via httpx
69
- # via requests
70
66
  # via yarl
71
67
  importlib-metadata==7.0.0
72
68
  iniconfig==2.0.0
@@ -81,7 +77,6 @@ multidict==6.4.4
81
77
  mypy==1.14.1
82
78
  mypy-extensions==1.0.0
83
79
  # via mypy
84
- nest-asyncio==1.6.0
85
80
  nodeenv==1.8.0
86
81
  # via pyright
87
82
  nox==2023.4.22
@@ -90,16 +85,16 @@ packaging==23.2
90
85
  # via pytest
91
86
  platformdirs==3.11.0
92
87
  # via virtualenv
93
- playwright==1.53.0
94
- # via pytest-playwright
88
+ playwright==1.55.0
89
+ # via anchorbrowser
95
90
  pluggy==1.5.0
96
91
  # via pytest
97
92
  propcache==0.3.1
98
93
  # via aiohttp
99
94
  # via yarl
100
- pydantic==2.10.3
95
+ pydantic==2.11.9
101
96
  # via anchorbrowser
102
- pydantic-core==2.27.1
97
+ pydantic-core==2.33.2
103
98
  # via pydantic
104
99
  pyee==13.0.0
105
100
  # via playwright
@@ -108,23 +103,13 @@ pygments==2.18.0
108
103
  pyright==1.1.399
109
104
  pytest==8.3.3
110
105
  # via pytest-asyncio
111
- # via pytest-base-url
112
- # via pytest-playwright
113
106
  # via pytest-xdist
114
107
  pytest-asyncio==0.24.0
115
- pytest-base-url==2.1.0
116
- # via pytest-playwright
117
- pytest-playwright==0.7.0
118
- # via anchorbrowser
119
108
  pytest-xdist==3.7.0
120
109
  python-dateutil==2.8.2
121
110
  # via time-machine
122
- python-slugify==8.0.4
123
- # via pytest-playwright
124
111
  pytz==2023.3.post1
125
112
  # via dirty-equals
126
- requests==2.32.4
127
- # via pytest-base-url
128
113
  respx==0.22.0
129
114
  rich==13.7.1
130
115
  ruff==0.9.4
@@ -135,23 +120,23 @@ six==1.16.0
135
120
  sniffio==1.3.0
136
121
  # via anchorbrowser
137
122
  # via anyio
138
- text-unidecode==1.3
139
- # via python-slugify
140
123
  time-machine==2.9.0
141
- tomli==2.0.2
124
+ tomli==2.3.0
142
125
  # via mypy
143
126
  # via pytest
144
127
  typing-extensions==4.12.2
145
128
  # via anchorbrowser
146
129
  # via anyio
130
+ # via exceptiongroup
147
131
  # via multidict
148
132
  # via mypy
149
133
  # via pydantic
150
134
  # via pydantic-core
151
135
  # via pyee
152
136
  # via pyright
153
- urllib3==2.5.0
154
- # via requests
137
+ # via typing-inspection
138
+ typing-inspection==0.4.1
139
+ # via pydantic
155
140
  virtualenv==20.24.5
156
141
  # via nox
157
142
  websockets==15.0.1
@@ -29,18 +29,14 @@ attrs==25.3.0
29
29
  certifi==2023.7.22
30
30
  # via httpcore
31
31
  # via httpx
32
- # via requests
33
- charset-normalizer==3.4.2
34
- # via requests
35
32
  distro==1.8.0
36
33
  # via anchorbrowser
37
- exceptiongroup==1.2.2
34
+ exceptiongroup==1.3.0
38
35
  # via anyio
39
- # via pytest
40
36
  frozenlist==1.6.2
41
37
  # via aiohttp
42
38
  # via aiosignal
43
- greenlet==3.2.3
39
+ greenlet==3.2.4
44
40
  # via playwright
45
41
  h11==0.16.0
46
42
  # via httpcore
@@ -54,57 +50,35 @@ httpx-aiohttp==0.1.8
54
50
  idna==3.4
55
51
  # via anyio
56
52
  # via httpx
57
- # via requests
58
53
  # via yarl
59
- iniconfig==2.1.0
60
- # via pytest
61
54
  multidict==6.4.4
62
55
  # via aiohttp
63
56
  # via yarl
64
- packaging==25.0
65
- # via pytest
66
- playwright==1.53.0
67
- # via pytest-playwright
68
- pluggy==1.6.0
69
- # via pytest
57
+ playwright==1.55.0
58
+ # via anchorbrowser
70
59
  propcache==0.3.1
71
60
  # via aiohttp
72
61
  # via yarl
73
- pydantic==2.10.3
62
+ pydantic==2.11.9
74
63
  # via anchorbrowser
75
- pydantic-core==2.27.1
64
+ pydantic-core==2.33.2
76
65
  # via pydantic
77
66
  pyee==13.0.0
78
67
  # via playwright
79
- pygments==2.19.2
80
- # via pytest
81
- pytest==8.4.1
82
- # via pytest-base-url
83
- # via pytest-playwright
84
- pytest-base-url==2.1.0
85
- # via pytest-playwright
86
- pytest-playwright==0.7.0
87
- # via anchorbrowser
88
- python-slugify==8.0.4
89
- # via pytest-playwright
90
- requests==2.32.4
91
- # via pytest-base-url
92
68
  sniffio==1.3.0
93
69
  # via anchorbrowser
94
70
  # via anyio
95
- text-unidecode==1.3
96
- # via python-slugify
97
- tomli==2.2.1
98
- # via pytest
99
71
  typing-extensions==4.12.2
100
72
  # via anchorbrowser
101
73
  # via anyio
74
+ # via exceptiongroup
102
75
  # via multidict
103
76
  # via pydantic
104
77
  # via pydantic-core
105
78
  # via pyee
106
- urllib3==2.5.0
107
- # via requests
79
+ # via typing-inspection
80
+ typing-inspection==0.4.1
81
+ # via pydantic
108
82
  websockets==15.0.1
109
83
  # via anchorbrowser
110
84
  yarl==1.20.0