kernel 0.44.0__tar.gz → 0.46.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.
- {kernel-0.44.0 → kernel-0.46.0}/.gitignore +1 -0
- kernel-0.46.0/.release-please-manifest.json +3 -0
- {kernel-0.44.0 → kernel-0.46.0}/CHANGELOG.md +24 -0
- {kernel-0.44.0 → kernel-0.46.0}/PKG-INFO +1 -1
- {kernel-0.44.0 → kernel-0.46.0}/api.md +1 -1
- {kernel-0.44.0 → kernel-0.46.0}/pyproject.toml +1 -1
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_qs.py +4 -1
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_version.py +1 -1
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/browser_pools.py +29 -1
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/browsers/browsers.py +10 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/proxies.py +43 -5
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/__init__.py +1 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_pool.py +9 -1
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_pool_create_params.py +9 -1
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_pool_update_params.py +9 -1
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_update_params.py +6 -0
- kernel-0.46.0/src/kernel/types/proxy_check_params.py +23 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/test_browser_pools.py +4 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/test_browsers.py +2 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/test_proxies.py +26 -8
- kernel-0.44.0/.release-please-manifest.json +0 -3
- {kernel-0.44.0 → kernel-0.46.0}/CONTRIBUTING.md +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/LICENSE +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/README.md +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/SECURITY.md +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/bin/check-release-environment +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/bin/publish-pypi +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/examples/.keep +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/noxfile.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/release-please-config.json +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/requirements-dev.lock +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/requirements.lock +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_base_client.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_client.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_compat.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_constants.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_exceptions.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_files.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_models.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_resource.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_streaming.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_types.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_compat.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_datetime_parse.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_json.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_logs.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_path.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_proxy.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_reflection.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_resources_proxy.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_streams.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_sync.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_transform.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_typing.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/_utils/_utils.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/app_framework.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/lib/.keep +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/pagination.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/py.typed +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/apps.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/auth/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/auth/auth.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/auth/connections.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/browsers/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/browsers/computer.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/browsers/fs/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/browsers/fs/fs.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/browsers/fs/watch.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/browsers/logs.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/browsers/playwright.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/browsers/process.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/browsers/replays.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/credential_providers.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/credentials.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/deployments.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/extensions.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/invocations.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/resources/profiles.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/app_list_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/app_list_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/auth/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/auth/connection_create_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/auth/connection_follow_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/auth/connection_list_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/auth/connection_login_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/auth/connection_submit_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/auth/connection_update_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/auth/login_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/auth/managed_auth.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/auth/submit_fields_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_create_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_create_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_delete_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_list_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_list_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_load_extensions_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_persistence.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_persistence_param.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_pool_acquire_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_pool_acquire_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_pool_delete_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_pool_list_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_pool_ref.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_pool_release_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_retrieve_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_retrieve_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_update_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browser_usage.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_batch_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_capture_screenshot_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_click_mouse_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_drag_mouse_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_get_mouse_position_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_move_mouse_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_press_key_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_read_clipboard_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_scroll_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_set_cursor_visibility_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_set_cursor_visibility_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_type_text_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/computer_write_clipboard_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_create_directory_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_delete_directory_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_delete_file_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_download_dir_zip_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_file_info_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_file_info_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_list_files_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_list_files_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_move_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_read_file_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_set_file_permissions_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_upload_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_upload_zip_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/f_write_file_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/fs/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/fs/watch_events_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/fs/watch_start_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/fs/watch_start_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/log_stream_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/playwright_execute_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/playwright_execute_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_exec_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_exec_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_kill_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_kill_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_resize_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_resize_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_spawn_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_spawn_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_status_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_stdin_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_stdin_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/process_stdout_stream_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/replay_list_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/replay_start_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/browsers/replay_start_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential_create_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential_list_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential_provider.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential_provider_create_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential_provider_item.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential_provider_list_items_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential_provider_list_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential_provider_test_result.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential_provider_update_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential_totp_code_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/credential_update_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/deployment_create_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/deployment_create_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/deployment_follow_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/deployment_follow_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/deployment_list_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/deployment_list_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/deployment_retrieve_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/deployment_state_event.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/extension_download_from_chrome_store_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/extension_list_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/extension_upload_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/extension_upload_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/invocation_create_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/invocation_create_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/invocation_follow_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/invocation_follow_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/invocation_list_browsers_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/invocation_list_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/invocation_list_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/invocation_retrieve_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/invocation_state_event.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/invocation_update_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/invocation_update_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/profile.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/profile_create_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/profile_list_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/proxy_check_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/proxy_create_params.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/proxy_create_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/proxy_list_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/proxy_retrieve_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared/app_action.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared/browser_extension.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared/browser_profile.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared/browser_viewport.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared/error_detail.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared/error_event.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared/error_model.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared/heartbeat_event.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared/log_event.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared_params/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared_params/browser_extension.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared_params/browser_profile.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/src/kernel/types/shared_params/browser_viewport.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/auth/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/auth/test_connections.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/browsers/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/browsers/fs/__init__.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/browsers/fs/test_watch.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/browsers/test_computer.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/browsers/test_fs.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/browsers/test_logs.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/browsers/test_playwright.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/browsers/test_process.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/browsers/test_replays.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/test_apps.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/test_credential_providers.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/test_credentials.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/test_deployments.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/test_extensions.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/test_invocations.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/api_resources/test_profiles.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/conftest.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/sample_file.txt +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_client.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_deepcopy.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_extract_files.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_files.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_models.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_qs.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_required_args.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_response.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_streaming.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_transform.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_utils/test_json.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_utils/test_path.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_utils/test_proxy.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/test_utils/test_typing.py +0 -0
- {kernel-0.44.0 → kernel-0.46.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.46.0 (2026-04-06)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.45.0...v0.46.0](https://github.com/kernel/kernel-python-sdk/compare/v0.45.0...v0.46.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* Add optional url parameter to proxy check endpoint ([cdd4b02](https://github.com/kernel/kernel-python-sdk/commit/cdd4b026fc01b1118cbc35cbc61890d15af3e021))
|
|
10
|
+
|
|
11
|
+
## 0.45.0 (2026-03-30)
|
|
12
|
+
|
|
13
|
+
Full Changelog: [v0.44.0...v0.45.0](https://github.com/kernel/kernel-python-sdk/compare/v0.44.0...v0.45.0)
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* [kernel-1008] browser pools add custom policy ([09f8520](https://github.com/kernel/kernel-python-sdk/commit/09f85209bc3c646d8a2a1231ed3925cad830f3dc))
|
|
18
|
+
* Add disable_default_proxy for stealth browsers ([3a75e81](https://github.com/kernel/kernel-python-sdk/commit/3a75e819e6e7caffdfba74a9627ed418de247de7))
|
|
19
|
+
* **internal:** implement indices array format for query and form serialization ([c798c39](https://github.com/kernel/kernel-python-sdk/commit/c798c39251def1447d61215c187f0e285f225f3d))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Chores
|
|
23
|
+
|
|
24
|
+
* **ci:** skip lint on metadata-only changes ([f0815a8](https://github.com/kernel/kernel-python-sdk/commit/f0815a8d36799444220552cb599a19b79c9b5e12))
|
|
25
|
+
* **internal:** update gitignore ([34b47ab](https://github.com/kernel/kernel-python-sdk/commit/34b47ab40aeb12ad9f78e923493caaca88a554b4))
|
|
26
|
+
|
|
3
27
|
## 0.44.0 (2026-03-20)
|
|
4
28
|
|
|
5
29
|
Full Changelog: [v0.43.0...v0.44.0](https://github.com/kernel/kernel-python-sdk/compare/v0.43.0...v0.44.0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: kernel
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.46.0
|
|
4
4
|
Summary: The official Python library for the kernel API
|
|
5
5
|
Project-URL: Homepage, https://github.com/kernel/kernel-python-sdk
|
|
6
6
|
Project-URL: Repository, https://github.com/kernel/kernel-python-sdk
|
|
@@ -282,7 +282,7 @@ Methods:
|
|
|
282
282
|
- <code title="get /proxies/{id}">client.proxies.<a href="./src/kernel/resources/proxies.py">retrieve</a>(id) -> <a href="./src/kernel/types/proxy_retrieve_response.py">ProxyRetrieveResponse</a></code>
|
|
283
283
|
- <code title="get /proxies">client.proxies.<a href="./src/kernel/resources/proxies.py">list</a>() -> <a href="./src/kernel/types/proxy_list_response.py">ProxyListResponse</a></code>
|
|
284
284
|
- <code title="delete /proxies/{id}">client.proxies.<a href="./src/kernel/resources/proxies.py">delete</a>(id) -> None</code>
|
|
285
|
-
- <code title="post /proxies/{id}/check">client.proxies.<a href="./src/kernel/resources/proxies.py">check</a>(id) -> <a href="./src/kernel/types/proxy_check_response.py">ProxyCheckResponse</a></code>
|
|
285
|
+
- <code title="post /proxies/{id}/check">client.proxies.<a href="./src/kernel/resources/proxies.py">check</a>(id, \*\*<a href="src/kernel/types/proxy_check_params.py">params</a>) -> <a href="./src/kernel/types/proxy_check_response.py">ProxyCheckResponse</a></code>
|
|
286
286
|
|
|
287
287
|
# Extensions
|
|
288
288
|
|
|
@@ -101,7 +101,10 @@ class Querystring:
|
|
|
101
101
|
items.extend(self._stringify_item(key, item, opts))
|
|
102
102
|
return items
|
|
103
103
|
elif array_format == "indices":
|
|
104
|
-
|
|
104
|
+
items = []
|
|
105
|
+
for i, item in enumerate(value):
|
|
106
|
+
items.extend(self._stringify_item(f"{key}[{i}]", item, opts))
|
|
107
|
+
return items
|
|
105
108
|
elif array_format == "brackets":
|
|
106
109
|
items = []
|
|
107
110
|
key = key + "[]"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Iterable
|
|
5
|
+
from typing import Dict, Iterable
|
|
6
6
|
|
|
7
7
|
import httpx
|
|
8
8
|
|
|
@@ -60,6 +60,7 @@ class BrowserPoolsResource(SyncAPIResource):
|
|
|
60
60
|
self,
|
|
61
61
|
*,
|
|
62
62
|
size: int,
|
|
63
|
+
chrome_policy: Dict[str, object] | Omit = omit,
|
|
63
64
|
extensions: Iterable[BrowserExtension] | Omit = omit,
|
|
64
65
|
fill_rate_per_minute: int | Omit = omit,
|
|
65
66
|
headless: bool | Omit = omit,
|
|
@@ -85,6 +86,11 @@ class BrowserPoolsResource(SyncAPIResource):
|
|
|
85
86
|
your organization's pooled sessions limit (the sum of all pool sizes cannot
|
|
86
87
|
exceed your limit).
|
|
87
88
|
|
|
89
|
+
chrome_policy: Custom Chrome enterprise policy overrides applied to all browsers in this pool.
|
|
90
|
+
Keys are Chrome enterprise policy names; values must match their expected types.
|
|
91
|
+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
|
|
92
|
+
https://chromeenterprise.google/policies/
|
|
93
|
+
|
|
88
94
|
extensions: List of browser extensions to load into the session. Provide each by id or name.
|
|
89
95
|
|
|
90
96
|
fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10%.
|
|
@@ -135,6 +141,7 @@ class BrowserPoolsResource(SyncAPIResource):
|
|
|
135
141
|
body=maybe_transform(
|
|
136
142
|
{
|
|
137
143
|
"size": size,
|
|
144
|
+
"chrome_policy": chrome_policy,
|
|
138
145
|
"extensions": extensions,
|
|
139
146
|
"fill_rate_per_minute": fill_rate_per_minute,
|
|
140
147
|
"headless": headless,
|
|
@@ -192,6 +199,7 @@ class BrowserPoolsResource(SyncAPIResource):
|
|
|
192
199
|
id_or_name: str,
|
|
193
200
|
*,
|
|
194
201
|
size: int,
|
|
202
|
+
chrome_policy: Dict[str, object] | Omit = omit,
|
|
195
203
|
discard_all_idle: bool | Omit = omit,
|
|
196
204
|
extensions: Iterable[BrowserExtension] | Omit = omit,
|
|
197
205
|
fill_rate_per_minute: int | Omit = omit,
|
|
@@ -218,6 +226,11 @@ class BrowserPoolsResource(SyncAPIResource):
|
|
|
218
226
|
your organization's pooled sessions limit (the sum of all pool sizes cannot
|
|
219
227
|
exceed your limit).
|
|
220
228
|
|
|
229
|
+
chrome_policy: Custom Chrome enterprise policy overrides applied to all browsers in this pool.
|
|
230
|
+
Keys are Chrome enterprise policy names; values must match their expected types.
|
|
231
|
+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
|
|
232
|
+
https://chromeenterprise.google/policies/
|
|
233
|
+
|
|
221
234
|
discard_all_idle: Whether to discard all idle browsers and rebuild the pool immediately. Defaults
|
|
222
235
|
to false.
|
|
223
236
|
|
|
@@ -273,6 +286,7 @@ class BrowserPoolsResource(SyncAPIResource):
|
|
|
273
286
|
body=maybe_transform(
|
|
274
287
|
{
|
|
275
288
|
"size": size,
|
|
289
|
+
"chrome_policy": chrome_policy,
|
|
276
290
|
"discard_all_idle": discard_all_idle,
|
|
277
291
|
"extensions": extensions,
|
|
278
292
|
"fill_rate_per_minute": fill_rate_per_minute,
|
|
@@ -508,6 +522,7 @@ class AsyncBrowserPoolsResource(AsyncAPIResource):
|
|
|
508
522
|
self,
|
|
509
523
|
*,
|
|
510
524
|
size: int,
|
|
525
|
+
chrome_policy: Dict[str, object] | Omit = omit,
|
|
511
526
|
extensions: Iterable[BrowserExtension] | Omit = omit,
|
|
512
527
|
fill_rate_per_minute: int | Omit = omit,
|
|
513
528
|
headless: bool | Omit = omit,
|
|
@@ -533,6 +548,11 @@ class AsyncBrowserPoolsResource(AsyncAPIResource):
|
|
|
533
548
|
your organization's pooled sessions limit (the sum of all pool sizes cannot
|
|
534
549
|
exceed your limit).
|
|
535
550
|
|
|
551
|
+
chrome_policy: Custom Chrome enterprise policy overrides applied to all browsers in this pool.
|
|
552
|
+
Keys are Chrome enterprise policy names; values must match their expected types.
|
|
553
|
+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
|
|
554
|
+
https://chromeenterprise.google/policies/
|
|
555
|
+
|
|
536
556
|
extensions: List of browser extensions to load into the session. Provide each by id or name.
|
|
537
557
|
|
|
538
558
|
fill_rate_per_minute: Percentage of the pool to fill per minute. Defaults to 10%.
|
|
@@ -583,6 +603,7 @@ class AsyncBrowserPoolsResource(AsyncAPIResource):
|
|
|
583
603
|
body=await async_maybe_transform(
|
|
584
604
|
{
|
|
585
605
|
"size": size,
|
|
606
|
+
"chrome_policy": chrome_policy,
|
|
586
607
|
"extensions": extensions,
|
|
587
608
|
"fill_rate_per_minute": fill_rate_per_minute,
|
|
588
609
|
"headless": headless,
|
|
@@ -640,6 +661,7 @@ class AsyncBrowserPoolsResource(AsyncAPIResource):
|
|
|
640
661
|
id_or_name: str,
|
|
641
662
|
*,
|
|
642
663
|
size: int,
|
|
664
|
+
chrome_policy: Dict[str, object] | Omit = omit,
|
|
643
665
|
discard_all_idle: bool | Omit = omit,
|
|
644
666
|
extensions: Iterable[BrowserExtension] | Omit = omit,
|
|
645
667
|
fill_rate_per_minute: int | Omit = omit,
|
|
@@ -666,6 +688,11 @@ class AsyncBrowserPoolsResource(AsyncAPIResource):
|
|
|
666
688
|
your organization's pooled sessions limit (the sum of all pool sizes cannot
|
|
667
689
|
exceed your limit).
|
|
668
690
|
|
|
691
|
+
chrome_policy: Custom Chrome enterprise policy overrides applied to all browsers in this pool.
|
|
692
|
+
Keys are Chrome enterprise policy names; values must match their expected types.
|
|
693
|
+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
|
|
694
|
+
https://chromeenterprise.google/policies/
|
|
695
|
+
|
|
669
696
|
discard_all_idle: Whether to discard all idle browsers and rebuild the pool immediately. Defaults
|
|
670
697
|
to false.
|
|
671
698
|
|
|
@@ -721,6 +748,7 @@ class AsyncBrowserPoolsResource(AsyncAPIResource):
|
|
|
721
748
|
body=await async_maybe_transform(
|
|
722
749
|
{
|
|
723
750
|
"size": size,
|
|
751
|
+
"chrome_policy": chrome_policy,
|
|
724
752
|
"discard_all_idle": discard_all_idle,
|
|
725
753
|
"extensions": extensions,
|
|
726
754
|
"fill_rate_per_minute": fill_rate_per_minute,
|
|
@@ -286,6 +286,7 @@ class BrowsersResource(SyncAPIResource):
|
|
|
286
286
|
self,
|
|
287
287
|
id: str,
|
|
288
288
|
*,
|
|
289
|
+
disable_default_proxy: bool | Omit = omit,
|
|
289
290
|
profile: BrowserProfile | Omit = omit,
|
|
290
291
|
proxy_id: Optional[str] | Omit = omit,
|
|
291
292
|
viewport: browser_update_params.Viewport | Omit = omit,
|
|
@@ -300,6 +301,9 @@ class BrowsersResource(SyncAPIResource):
|
|
|
300
301
|
Update a browser session.
|
|
301
302
|
|
|
302
303
|
Args:
|
|
304
|
+
disable_default_proxy: If true, stealth browsers connect directly instead of using the default stealth
|
|
305
|
+
proxy.
|
|
306
|
+
|
|
303
307
|
profile: Profile to load into the browser session. Only allowed if the session does not
|
|
304
308
|
already have a profile loaded.
|
|
305
309
|
|
|
@@ -322,6 +326,7 @@ class BrowsersResource(SyncAPIResource):
|
|
|
322
326
|
path_template("/browsers/{id}", id=id),
|
|
323
327
|
body=maybe_transform(
|
|
324
328
|
{
|
|
329
|
+
"disable_default_proxy": disable_default_proxy,
|
|
325
330
|
"profile": profile,
|
|
326
331
|
"proxy_id": proxy_id,
|
|
327
332
|
"viewport": viewport,
|
|
@@ -717,6 +722,7 @@ class AsyncBrowsersResource(AsyncAPIResource):
|
|
|
717
722
|
self,
|
|
718
723
|
id: str,
|
|
719
724
|
*,
|
|
725
|
+
disable_default_proxy: bool | Omit = omit,
|
|
720
726
|
profile: BrowserProfile | Omit = omit,
|
|
721
727
|
proxy_id: Optional[str] | Omit = omit,
|
|
722
728
|
viewport: browser_update_params.Viewport | Omit = omit,
|
|
@@ -731,6 +737,9 @@ class AsyncBrowsersResource(AsyncAPIResource):
|
|
|
731
737
|
Update a browser session.
|
|
732
738
|
|
|
733
739
|
Args:
|
|
740
|
+
disable_default_proxy: If true, stealth browsers connect directly instead of using the default stealth
|
|
741
|
+
proxy.
|
|
742
|
+
|
|
734
743
|
profile: Profile to load into the browser session. Only allowed if the session does not
|
|
735
744
|
already have a profile loaded.
|
|
736
745
|
|
|
@@ -753,6 +762,7 @@ class AsyncBrowsersResource(AsyncAPIResource):
|
|
|
753
762
|
path_template("/browsers/{id}", id=id),
|
|
754
763
|
body=await async_maybe_transform(
|
|
755
764
|
{
|
|
765
|
+
"disable_default_proxy": disable_default_proxy,
|
|
756
766
|
"profile": profile,
|
|
757
767
|
"proxy_id": proxy_id,
|
|
758
768
|
"viewport": viewport,
|
|
@@ -6,7 +6,7 @@ from typing_extensions import Literal
|
|
|
6
6
|
|
|
7
7
|
import httpx
|
|
8
8
|
|
|
9
|
-
from ..types import proxy_create_params
|
|
9
|
+
from ..types import proxy_check_params, proxy_create_params
|
|
10
10
|
from .._types import Body, Omit, Query, Headers, NoneType, NotGiven, SequenceNotStr, omit, not_given
|
|
11
11
|
from .._utils import path_template, maybe_transform, async_maybe_transform
|
|
12
12
|
from .._compat import cached_property
|
|
@@ -195,6 +195,7 @@ class ProxiesResource(SyncAPIResource):
|
|
|
195
195
|
self,
|
|
196
196
|
id: str,
|
|
197
197
|
*,
|
|
198
|
+
url: str | Omit = omit,
|
|
198
199
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
199
200
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
200
201
|
extra_headers: Headers | None = None,
|
|
@@ -202,10 +203,27 @@ class ProxiesResource(SyncAPIResource):
|
|
|
202
203
|
extra_body: Body | None = None,
|
|
203
204
|
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
204
205
|
) -> ProxyCheckResponse:
|
|
205
|
-
"""
|
|
206
|
-
|
|
206
|
+
"""Run a health check on the proxy to verify it's working.
|
|
207
|
+
|
|
208
|
+
Optionally specify a URL
|
|
209
|
+
to test reachability against a specific target. For ISP and datacenter proxies,
|
|
210
|
+
this reliably tests whether the target site is reachable from the proxy's stable
|
|
211
|
+
exit IP. For residential and mobile proxies, the exit node varies between
|
|
212
|
+
requests, so this validates proxy configuration and connectivity rather than
|
|
213
|
+
guaranteeing site-specific reachability.
|
|
207
214
|
|
|
208
215
|
Args:
|
|
216
|
+
url: An optional URL to test reachability against. If provided, the proxy check will
|
|
217
|
+
test connectivity to this URL instead of the default test URLs. Only HTTP and
|
|
218
|
+
HTTPS schemes are allowed, and the URL must resolve to a public IP address. For
|
|
219
|
+
ISP and datacenter proxies, the exit IP is stable, so a successful check
|
|
220
|
+
reliably indicates that subsequent browser sessions will reach the target site
|
|
221
|
+
with the same IP. For residential and mobile proxies, the exit node changes
|
|
222
|
+
between requests, so a successful check validates proxy configuration but does
|
|
223
|
+
not guarantee that a subsequent browser session will use the same exit IP or
|
|
224
|
+
reach the same site — it is useful for verifying credentials and connectivity,
|
|
225
|
+
not for predicting site-specific behavior.
|
|
226
|
+
|
|
209
227
|
extra_headers: Send extra headers
|
|
210
228
|
|
|
211
229
|
extra_query: Add additional query parameters to the request
|
|
@@ -218,6 +236,7 @@ class ProxiesResource(SyncAPIResource):
|
|
|
218
236
|
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
|
|
219
237
|
return self._post(
|
|
220
238
|
path_template("/proxies/{id}/check", id=id),
|
|
239
|
+
body=maybe_transform({"url": url}, proxy_check_params.ProxyCheckParams),
|
|
221
240
|
options=make_request_options(
|
|
222
241
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
223
242
|
),
|
|
@@ -394,6 +413,7 @@ class AsyncProxiesResource(AsyncAPIResource):
|
|
|
394
413
|
self,
|
|
395
414
|
id: str,
|
|
396
415
|
*,
|
|
416
|
+
url: str | Omit = omit,
|
|
397
417
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
398
418
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
399
419
|
extra_headers: Headers | None = None,
|
|
@@ -401,10 +421,27 @@ class AsyncProxiesResource(AsyncAPIResource):
|
|
|
401
421
|
extra_body: Body | None = None,
|
|
402
422
|
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
403
423
|
) -> ProxyCheckResponse:
|
|
404
|
-
"""
|
|
405
|
-
|
|
424
|
+
"""Run a health check on the proxy to verify it's working.
|
|
425
|
+
|
|
426
|
+
Optionally specify a URL
|
|
427
|
+
to test reachability against a specific target. For ISP and datacenter proxies,
|
|
428
|
+
this reliably tests whether the target site is reachable from the proxy's stable
|
|
429
|
+
exit IP. For residential and mobile proxies, the exit node varies between
|
|
430
|
+
requests, so this validates proxy configuration and connectivity rather than
|
|
431
|
+
guaranteeing site-specific reachability.
|
|
406
432
|
|
|
407
433
|
Args:
|
|
434
|
+
url: An optional URL to test reachability against. If provided, the proxy check will
|
|
435
|
+
test connectivity to this URL instead of the default test URLs. Only HTTP and
|
|
436
|
+
HTTPS schemes are allowed, and the URL must resolve to a public IP address. For
|
|
437
|
+
ISP and datacenter proxies, the exit IP is stable, so a successful check
|
|
438
|
+
reliably indicates that subsequent browser sessions will reach the target site
|
|
439
|
+
with the same IP. For residential and mobile proxies, the exit node changes
|
|
440
|
+
between requests, so a successful check validates proxy configuration but does
|
|
441
|
+
not guarantee that a subsequent browser session will use the same exit IP or
|
|
442
|
+
reach the same site — it is useful for verifying credentials and connectivity,
|
|
443
|
+
not for predicting site-specific behavior.
|
|
444
|
+
|
|
408
445
|
extra_headers: Send extra headers
|
|
409
446
|
|
|
410
447
|
extra_query: Add additional query parameters to the request
|
|
@@ -417,6 +454,7 @@ class AsyncProxiesResource(AsyncAPIResource):
|
|
|
417
454
|
raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
|
|
418
455
|
return await self._post(
|
|
419
456
|
path_template("/proxies/{id}/check", id=id),
|
|
457
|
+
body=await async_maybe_transform({"url": url}, proxy_check_params.ProxyCheckParams),
|
|
420
458
|
options=make_request_options(
|
|
421
459
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
422
460
|
),
|
|
@@ -20,6 +20,7 @@ from .browser_usage import BrowserUsage as BrowserUsage
|
|
|
20
20
|
from .app_list_params import AppListParams as AppListParams
|
|
21
21
|
from .browser_pool_ref import BrowserPoolRef as BrowserPoolRef
|
|
22
22
|
from .app_list_response import AppListResponse as AppListResponse
|
|
23
|
+
from .proxy_check_params import ProxyCheckParams as ProxyCheckParams
|
|
23
24
|
from .browser_list_params import BrowserListParams as BrowserListParams
|
|
24
25
|
from .browser_persistence import BrowserPersistence as BrowserPersistence
|
|
25
26
|
from .credential_provider import CredentialProvider as CredentialProvider
|
|
@@ -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 List, Optional
|
|
3
|
+
from typing import Dict, List, Optional
|
|
4
4
|
from datetime import datetime
|
|
5
5
|
|
|
6
6
|
from .._models import BaseModel
|
|
@@ -21,6 +21,14 @@ class BrowserPoolConfig(BaseModel):
|
|
|
21
21
|
sum of all pool sizes cannot exceed your limit).
|
|
22
22
|
"""
|
|
23
23
|
|
|
24
|
+
chrome_policy: Optional[Dict[str, object]] = None
|
|
25
|
+
"""Custom Chrome enterprise policy overrides applied to all browsers in this pool.
|
|
26
|
+
|
|
27
|
+
Keys are Chrome enterprise policy names; values must match their expected types.
|
|
28
|
+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
|
|
29
|
+
https://chromeenterprise.google/policies/
|
|
30
|
+
"""
|
|
31
|
+
|
|
24
32
|
extensions: Optional[List[BrowserExtension]] = None
|
|
25
33
|
"""List of browser extensions to load into the session.
|
|
26
34
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Iterable
|
|
5
|
+
from typing import Dict, Iterable
|
|
6
6
|
from typing_extensions import Required, TypedDict
|
|
7
7
|
|
|
8
8
|
from .shared_params.browser_profile import BrowserProfile
|
|
@@ -20,6 +20,14 @@ class BrowserPoolCreateParams(TypedDict, total=False):
|
|
|
20
20
|
sum of all pool sizes cannot exceed your limit).
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
+
chrome_policy: Dict[str, object]
|
|
24
|
+
"""Custom Chrome enterprise policy overrides applied to all browsers in this pool.
|
|
25
|
+
|
|
26
|
+
Keys are Chrome enterprise policy names; values must match their expected types.
|
|
27
|
+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
|
|
28
|
+
https://chromeenterprise.google/policies/
|
|
29
|
+
"""
|
|
30
|
+
|
|
23
31
|
extensions: Iterable[BrowserExtension]
|
|
24
32
|
"""List of browser extensions to load into the session.
|
|
25
33
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Iterable
|
|
5
|
+
from typing import Dict, Iterable
|
|
6
6
|
from typing_extensions import Required, TypedDict
|
|
7
7
|
|
|
8
8
|
from .shared_params.browser_profile import BrowserProfile
|
|
@@ -20,6 +20,14 @@ class BrowserPoolUpdateParams(TypedDict, total=False):
|
|
|
20
20
|
sum of all pool sizes cannot exceed your limit).
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
+
chrome_policy: Dict[str, object]
|
|
24
|
+
"""Custom Chrome enterprise policy overrides applied to all browsers in this pool.
|
|
25
|
+
|
|
26
|
+
Keys are Chrome enterprise policy names; values must match their expected types.
|
|
27
|
+
Blocked: kernel-managed policies (extensions, proxy, CDP/automation). See
|
|
28
|
+
https://chromeenterprise.google/policies/
|
|
29
|
+
"""
|
|
30
|
+
|
|
23
31
|
discard_all_idle: bool
|
|
24
32
|
"""Whether to discard all idle browsers and rebuild the pool immediately.
|
|
25
33
|
|
|
@@ -12,6 +12,12 @@ __all__ = ["BrowserUpdateParams", "Viewport"]
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class BrowserUpdateParams(TypedDict, total=False):
|
|
15
|
+
disable_default_proxy: bool
|
|
16
|
+
"""
|
|
17
|
+
If true, stealth browsers connect directly instead of using the default stealth
|
|
18
|
+
proxy.
|
|
19
|
+
"""
|
|
20
|
+
|
|
15
21
|
profile: BrowserProfile
|
|
16
22
|
"""Profile to load into the browser session.
|
|
17
23
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing_extensions import TypedDict
|
|
6
|
+
|
|
7
|
+
__all__ = ["ProxyCheckParams"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ProxyCheckParams(TypedDict, total=False):
|
|
11
|
+
url: str
|
|
12
|
+
"""An optional URL to test reachability against.
|
|
13
|
+
|
|
14
|
+
If provided, the proxy check will test connectivity to this URL instead of the
|
|
15
|
+
default test URLs. Only HTTP and HTTPS schemes are allowed, and the URL must
|
|
16
|
+
resolve to a public IP address. For ISP and datacenter proxies, the exit IP is
|
|
17
|
+
stable, so a successful check reliably indicates that subsequent browser
|
|
18
|
+
sessions will reach the target site with the same IP. For residential and mobile
|
|
19
|
+
proxies, the exit node changes between requests, so a successful check validates
|
|
20
|
+
proxy configuration but does not guarantee that a subsequent browser session
|
|
21
|
+
will use the same exit IP or reach the same site — it is useful for verifying
|
|
22
|
+
credentials and connectivity, not for predicting site-specific behavior.
|
|
23
|
+
"""
|
|
@@ -34,6 +34,7 @@ class TestBrowserPools:
|
|
|
34
34
|
def test_method_create_with_all_params(self, client: Kernel) -> None:
|
|
35
35
|
browser_pool = client.browser_pools.create(
|
|
36
36
|
size=10,
|
|
37
|
+
chrome_policy={"foo": "bar"},
|
|
37
38
|
extensions=[
|
|
38
39
|
{
|
|
39
40
|
"id": "id",
|
|
@@ -143,6 +144,7 @@ class TestBrowserPools:
|
|
|
143
144
|
browser_pool = client.browser_pools.update(
|
|
144
145
|
id_or_name="id_or_name",
|
|
145
146
|
size=10,
|
|
147
|
+
chrome_policy={"foo": "bar"},
|
|
146
148
|
discard_all_idle=False,
|
|
147
149
|
extensions=[
|
|
148
150
|
{
|
|
@@ -454,6 +456,7 @@ class TestAsyncBrowserPools:
|
|
|
454
456
|
async def test_method_create_with_all_params(self, async_client: AsyncKernel) -> None:
|
|
455
457
|
browser_pool = await async_client.browser_pools.create(
|
|
456
458
|
size=10,
|
|
459
|
+
chrome_policy={"foo": "bar"},
|
|
457
460
|
extensions=[
|
|
458
461
|
{
|
|
459
462
|
"id": "id",
|
|
@@ -563,6 +566,7 @@ class TestAsyncBrowserPools:
|
|
|
563
566
|
browser_pool = await async_client.browser_pools.update(
|
|
564
567
|
id_or_name="id_or_name",
|
|
565
568
|
size=10,
|
|
569
|
+
chrome_policy={"foo": "bar"},
|
|
566
570
|
discard_all_idle=False,
|
|
567
571
|
extensions=[
|
|
568
572
|
{
|
|
@@ -148,6 +148,7 @@ class TestBrowsers:
|
|
|
148
148
|
def test_method_update_with_all_params(self, client: Kernel) -> None:
|
|
149
149
|
browser = client.browsers.update(
|
|
150
150
|
id="htzv5orfit78e1m2biiifpbv",
|
|
151
|
+
disable_default_proxy=True,
|
|
151
152
|
profile={
|
|
152
153
|
"id": "id",
|
|
153
154
|
"name": "name",
|
|
@@ -512,6 +513,7 @@ class TestAsyncBrowsers:
|
|
|
512
513
|
async def test_method_update_with_all_params(self, async_client: AsyncKernel) -> None:
|
|
513
514
|
browser = await async_client.browsers.update(
|
|
514
515
|
id="htzv5orfit78e1m2biiifpbv",
|
|
516
|
+
disable_default_proxy=True,
|
|
515
517
|
profile={
|
|
516
518
|
"id": "id",
|
|
517
519
|
"name": "name",
|
|
@@ -184,7 +184,16 @@ class TestProxies:
|
|
|
184
184
|
@parametrize
|
|
185
185
|
def test_method_check(self, client: Kernel) -> None:
|
|
186
186
|
proxy = client.proxies.check(
|
|
187
|
-
"id",
|
|
187
|
+
id="id",
|
|
188
|
+
)
|
|
189
|
+
assert_matches_type(ProxyCheckResponse, proxy, path=["response"])
|
|
190
|
+
|
|
191
|
+
@pytest.mark.skip(reason="Mock server tests are disabled")
|
|
192
|
+
@parametrize
|
|
193
|
+
def test_method_check_with_all_params(self, client: Kernel) -> None:
|
|
194
|
+
proxy = client.proxies.check(
|
|
195
|
+
id="id",
|
|
196
|
+
url="url",
|
|
188
197
|
)
|
|
189
198
|
assert_matches_type(ProxyCheckResponse, proxy, path=["response"])
|
|
190
199
|
|
|
@@ -192,7 +201,7 @@ class TestProxies:
|
|
|
192
201
|
@parametrize
|
|
193
202
|
def test_raw_response_check(self, client: Kernel) -> None:
|
|
194
203
|
response = client.proxies.with_raw_response.check(
|
|
195
|
-
"id",
|
|
204
|
+
id="id",
|
|
196
205
|
)
|
|
197
206
|
|
|
198
207
|
assert response.is_closed is True
|
|
@@ -204,7 +213,7 @@ class TestProxies:
|
|
|
204
213
|
@parametrize
|
|
205
214
|
def test_streaming_response_check(self, client: Kernel) -> None:
|
|
206
215
|
with client.proxies.with_streaming_response.check(
|
|
207
|
-
"id",
|
|
216
|
+
id="id",
|
|
208
217
|
) as response:
|
|
209
218
|
assert not response.is_closed
|
|
210
219
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
@@ -219,7 +228,7 @@ class TestProxies:
|
|
|
219
228
|
def test_path_params_check(self, client: Kernel) -> None:
|
|
220
229
|
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
|
|
221
230
|
client.proxies.with_raw_response.check(
|
|
222
|
-
"",
|
|
231
|
+
id="",
|
|
223
232
|
)
|
|
224
233
|
|
|
225
234
|
|
|
@@ -390,7 +399,16 @@ class TestAsyncProxies:
|
|
|
390
399
|
@parametrize
|
|
391
400
|
async def test_method_check(self, async_client: AsyncKernel) -> None:
|
|
392
401
|
proxy = await async_client.proxies.check(
|
|
393
|
-
"id",
|
|
402
|
+
id="id",
|
|
403
|
+
)
|
|
404
|
+
assert_matches_type(ProxyCheckResponse, proxy, path=["response"])
|
|
405
|
+
|
|
406
|
+
@pytest.mark.skip(reason="Mock server tests are disabled")
|
|
407
|
+
@parametrize
|
|
408
|
+
async def test_method_check_with_all_params(self, async_client: AsyncKernel) -> None:
|
|
409
|
+
proxy = await async_client.proxies.check(
|
|
410
|
+
id="id",
|
|
411
|
+
url="url",
|
|
394
412
|
)
|
|
395
413
|
assert_matches_type(ProxyCheckResponse, proxy, path=["response"])
|
|
396
414
|
|
|
@@ -398,7 +416,7 @@ class TestAsyncProxies:
|
|
|
398
416
|
@parametrize
|
|
399
417
|
async def test_raw_response_check(self, async_client: AsyncKernel) -> None:
|
|
400
418
|
response = await async_client.proxies.with_raw_response.check(
|
|
401
|
-
"id",
|
|
419
|
+
id="id",
|
|
402
420
|
)
|
|
403
421
|
|
|
404
422
|
assert response.is_closed is True
|
|
@@ -410,7 +428,7 @@ class TestAsyncProxies:
|
|
|
410
428
|
@parametrize
|
|
411
429
|
async def test_streaming_response_check(self, async_client: AsyncKernel) -> None:
|
|
412
430
|
async with async_client.proxies.with_streaming_response.check(
|
|
413
|
-
"id",
|
|
431
|
+
id="id",
|
|
414
432
|
) as response:
|
|
415
433
|
assert not response.is_closed
|
|
416
434
|
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
@@ -425,5 +443,5 @@ class TestAsyncProxies:
|
|
|
425
443
|
async def test_path_params_check(self, async_client: AsyncKernel) -> None:
|
|
426
444
|
with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
|
|
427
445
|
await async_client.proxies.with_raw_response.check(
|
|
428
|
-
"",
|
|
446
|
+
id="",
|
|
429
447
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|