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.
- anchorbrowser-0.1.1/.release-please-manifest.json +3 -0
- anchorbrowser-0.1.1/CHANGELOG.md +49 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/PKG-INFO +8 -9
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/README.md +5 -6
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/api.md +39 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/pyproject.toml +104 -31
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/requirements-dev.lock +11 -26
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/requirements.lock +10 -36
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/__init__.py +3 -1
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_base_client.py +16 -13
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_client.py +21 -9
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_compat.py +48 -48
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_files.py +4 -4
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_models.py +51 -45
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_qs.py +7 -7
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_types.py +53 -12
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/__init__.py +9 -2
- anchorbrowser-0.1.1/src/anchorbrowser/_utils/_compat.py +45 -0
- anchorbrowser-0.1.1/src/anchorbrowser/_utils/_datetime_parse.py +136 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_transform.py +13 -3
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_typing.py +6 -1
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_utils.py +4 -5
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_version.py +1 -1
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/lib/browser.py +1 -1
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/__init__.py +14 -0
- anchorbrowser-0.1.1/src/anchorbrowser/resources/events.py +270 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/extensions.py +9 -9
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/profiles.py +31 -43
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/all.py +5 -5
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/clipboard.py +5 -5
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/keyboard.py +11 -13
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/mouse.py +19 -19
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/recordings/primary.py +3 -3
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/recordings/recordings.py +7 -7
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/sessions.py +307 -30
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/tools.py +107 -37
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/__init__.py +7 -0
- anchorbrowser-0.1.1/src/anchorbrowser/types/event_signal_params.py +13 -0
- anchorbrowser-0.1.1/src/anchorbrowser/types/event_wait_for_params.py +14 -0
- anchorbrowser-0.1.1/src/anchorbrowser/types/event_wait_for_response.py +12 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_manifest.py +6 -1
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/profile_create_params.py +3 -6
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/profile_list_response.py +0 -3
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/profile_retrieve_response.py +0 -3
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/profile_update_params.py +0 -6
- anchorbrowser-0.1.1/src/anchorbrowser/types/session_create_params.py +432 -0
- anchorbrowser-0.1.1/src/anchorbrowser/types/session_list_pages_response.py +25 -0
- anchorbrowser-0.1.1/src/anchorbrowser/types/session_retrieve_response.py +46 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_scroll_params.py +3 -0
- anchorbrowser-0.1.1/src/anchorbrowser/types/session_upload_file_params.py +14 -0
- anchorbrowser-0.1.1/src/anchorbrowser/types/session_upload_file_response.py +17 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/keyboard_shortcut_params.py +2 -2
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/recording_list_response.py +4 -8
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/tool_fetch_webpage_params.py +15 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/tool_perform_web_task_params.py +17 -1
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/tool_perform_web_task_response.py +3 -3
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/recordings/test_primary.py +0 -8
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/test_all.py +12 -12
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/test_clipboard.py +16 -16
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/test_keyboard.py +20 -20
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/test_mouse.py +48 -48
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/test_recordings.py +24 -24
- anchorbrowser-0.1.1/tests/api_resources/test_events.py +251 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/test_extensions.py +28 -28
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/test_profiles.py +42 -44
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/test_sessions.py +353 -84
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/test_tools.py +32 -24
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/conftest.py +1 -1
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_client.py +13 -54
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_models.py +24 -24
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_transform.py +17 -10
- anchorbrowser-0.1.1/tests/test_utils/test_datetime_parse.py +110 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/utils.py +13 -5
- anchorbrowser-0.1.0a3/.release-please-manifest.json +0 -3
- anchorbrowser-0.1.0a3/CHANGELOG.md +0 -74
- anchorbrowser-0.1.0a3/mypy.ini +0 -50
- anchorbrowser-0.1.0a3/src/anchorbrowser/types/session_create_params.py +0 -196
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/.gitignore +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/CONTRIBUTING.md +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/LICENSE +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/SECURITY.md +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/bin/check-release-environment +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/bin/publish-pypi +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/examples/.keep +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/noxfile.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/release-please-config.json +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_constants.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_exceptions.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_resource.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_streaming.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_logs.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_proxy.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_reflection.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_resources_proxy.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_streams.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/_utils/_sync.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/lib/.keep +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/lib/agent.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/py.typed +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/agent.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/browser.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/__init__.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/resources/sessions/recordings/__init__.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_delete_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_list_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_retrieve_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_upload_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/extension_upload_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_copy_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_create_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_drag_and_drop_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_drag_and_drop_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_goto_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_goto_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_paste_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_paste_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_retrieve_downloads_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/session_scroll_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/__init__.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/all_status_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/clipboard_get_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/clipboard_set_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/clipboard_set_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/keyboard_shortcut_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/keyboard_type_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/keyboard_type_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_click_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_click_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_double_click_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_double_click_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_down_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_down_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_move_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_move_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_up_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/mouse_up_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/recording_pause_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/recording_resume_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/sessions/recordings/__init__.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/shared/__init__.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/shared/success_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/tool_fetch_webpage_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/src/anchorbrowser/types/tool_screenshot_webpage_params.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/__init__.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/__init__.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/__init__.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/api_resources/sessions/recordings/__init__.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/sample_file.txt +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_deepcopy.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_extract_files.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_files.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_qs.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_required_args.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_response.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_streaming.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_utils/test_proxy.py +0 -0
- {anchorbrowser-0.1.0a3 → anchorbrowser-0.1.1}/tests/test_utils/test_typing.py +0 -0
|
@@ -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.
|
|
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
|
|
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="
|
|
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
|
|
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="
|
|
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.
|
|
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
|
|
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="
|
|
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
|
|
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="
|
|
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.
|
|
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.
|
|
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 = [
|
|
7
|
+
authors = [
|
|
8
|
+
{ name = "Anchorbrowser", email = "support@anchorbrowser.io" },
|
|
9
|
+
]
|
|
8
10
|
dependencies = [
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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 = [
|
|
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 = [
|
|
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 = [
|
|
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 = [
|
|
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 = [
|
|
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 = "
|
|
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.
|
|
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.
|
|
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.
|
|
94
|
-
# via
|
|
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.
|
|
95
|
+
pydantic==2.11.9
|
|
101
96
|
# via anchorbrowser
|
|
102
|
-
pydantic-core==2.
|
|
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
|
|
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
|
-
|
|
154
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
65
|
-
# via
|
|
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.
|
|
62
|
+
pydantic==2.11.9
|
|
74
63
|
# via anchorbrowser
|
|
75
|
-
pydantic-core==2.
|
|
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
|
-
|
|
107
|
-
|
|
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
|