diff --git a/pyproject.toml b/pyproject.toml index 84eda73..a8f3cce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "scrapybara" [tool.poetry] name = "scrapybara" -version = "2.4.3" +version = "2.4.4" description = "" readme = "README.md" authors = [] diff --git a/reference.md b/reference.md index 5cf384f..65bcb0a 100644 --- a/reference.md +++ b/reference.md @@ -466,6 +466,22 @@ client.instance.bash(
+**get_background_processes:** `typing.Optional[bool]` + +
+
+ +
+
+ +**kill_pid:** `typing.Optional[int]` + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
diff --git a/src/scrapybara/__init__.py b/src/scrapybara/__init__.py index 3787602..a31d4ea 100644 --- a/src/scrapybara/__init__.py +++ b/src/scrapybara/__init__.py @@ -1,6 +1,16 @@ # This file was auto-generated by Fern from our API Definition. from .types import ( + Action, + Action_ClickMouse, + Action_DragMouse, + Action_GetCursorPosition, + Action_MoveMouse, + Action_PressKey, + Action_Scroll, + Action_TakeScreenshot, + Action_TypeText, + Action_Wait, AuthStateResponse, BashResponse, BrowserAuthenticateResponse, @@ -10,6 +20,7 @@ CellType, ClickMouseAction, ClickMouseActionClickType, + ComputerRequest, ComputerResponse, DeploymentConfigInstanceType, DragMouseAction, @@ -19,6 +30,8 @@ ExecuteCellRequest, FileDownloadResponse, FileReadResponse, + FilesystemRequest, + FilesystemResponse, GetCursorPositionAction, GetInstanceResponse, GetInstanceResponseInstanceType, @@ -63,6 +76,16 @@ from .version import __version__ __all__ = [ + "Action", + "Action_ClickMouse", + "Action_DragMouse", + "Action_GetCursorPosition", + "Action_MoveMouse", + "Action_PressKey", + "Action_Scroll", + "Action_TakeScreenshot", + "Action_TypeText", + "Action_Wait", "AsyncScrapybara", "AuthStateResponse", "BashResponse", @@ -74,6 +97,7 @@ "ClickMouseAction", "ClickMouseActionClickType", "Command", + "ComputerRequest", "ComputerResponse", "DeploymentConfigInstanceType", "DragMouseAction", @@ -83,6 +107,8 @@ "ExecuteCellRequest", "FileDownloadResponse", "FileReadResponse", + "FilesystemRequest", + "FilesystemResponse", "GetCursorPositionAction", "GetInstanceResponse", "GetInstanceResponseInstanceType", diff --git a/src/scrapybara/core/client_wrapper.py b/src/scrapybara/core/client_wrapper.py index f03289d..0ead1a3 100644 --- a/src/scrapybara/core/client_wrapper.py +++ b/src/scrapybara/core/client_wrapper.py @@ -16,7 +16,7 @@ def get_headers(self) -> typing.Dict[str, str]: headers: typing.Dict[str, str] = { "X-Fern-Language": "Python", "X-Fern-SDK-Name": "scrapybara", - "X-Fern-SDK-Version": "2.4.3", + "X-Fern-SDK-Version": "2.4.4", } headers["x-api-key"] = self.api_key return headers diff --git a/src/scrapybara/instance/client.py b/src/scrapybara/instance/client.py index 78e8799..4c54193 100644 --- a/src/scrapybara/instance/client.py +++ b/src/scrapybara/instance/client.py @@ -211,6 +211,8 @@ def bash( *, command: typing.Optional[str] = OMIT, restart: typing.Optional[bool] = OMIT, + get_background_processes: typing.Optional[bool] = OMIT, + kill_pid: typing.Optional[int] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> BashResponse: """ @@ -222,6 +224,10 @@ def bash( restart : typing.Optional[bool] + get_background_processes : typing.Optional[bool] + + kill_pid : typing.Optional[int] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -247,6 +253,8 @@ def bash( json={ "command": command, "restart": restart, + "get_background_processes": get_background_processes, + "kill_pid": kill_pid, }, headers={ "content-type": "application/json", @@ -761,6 +769,8 @@ async def bash( *, command: typing.Optional[str] = OMIT, restart: typing.Optional[bool] = OMIT, + get_background_processes: typing.Optional[bool] = OMIT, + kill_pid: typing.Optional[int] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> BashResponse: """ @@ -772,6 +782,10 @@ async def bash( restart : typing.Optional[bool] + get_background_processes : typing.Optional[bool] + + kill_pid : typing.Optional[int] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -805,6 +819,8 @@ async def main() -> None: json={ "command": command, "restart": restart, + "get_background_processes": get_background_processes, + "kill_pid": kill_pid, }, headers={ "content-type": "application/json", diff --git a/src/scrapybara/types/action.py b/src/scrapybara/types/action.py new file mode 100644 index 0000000..5627fc5 --- /dev/null +++ b/src/scrapybara/types/action.py @@ -0,0 +1,157 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from .button import Button +from .click_mouse_action_click_type import ClickMouseActionClickType +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class Action_ClickMouse(UniversalBaseModel): + action: typing.Literal["click_mouse"] = "click_mouse" + button: Button + click_type: typing.Optional[ClickMouseActionClickType] = None + coordinates: typing.Optional[typing.List[int]] = None + num_clicks: typing.Optional[int] = None + hold_keys: typing.Optional[typing.List[str]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class Action_DragMouse(UniversalBaseModel): + action: typing.Literal["drag_mouse"] = "drag_mouse" + path: typing.List[typing.List[int]] + hold_keys: typing.Optional[typing.List[str]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class Action_GetCursorPosition(UniversalBaseModel): + action: typing.Literal["get_cursor_position"] = "get_cursor_position" + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class Action_MoveMouse(UniversalBaseModel): + action: typing.Literal["move_mouse"] = "move_mouse" + coordinates: typing.List[int] + hold_keys: typing.Optional[typing.List[str]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class Action_PressKey(UniversalBaseModel): + action: typing.Literal["press_key"] = "press_key" + keys: typing.List[str] + duration: typing.Optional[float] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class Action_Scroll(UniversalBaseModel): + action: typing.Literal["scroll"] = "scroll" + coordinates: typing.Optional[typing.List[int]] = None + delta_x: typing.Optional[float] = None + delta_y: typing.Optional[float] = None + hold_keys: typing.Optional[typing.List[str]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class Action_TakeScreenshot(UniversalBaseModel): + action: typing.Literal["take_screenshot"] = "take_screenshot" + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class Action_TypeText(UniversalBaseModel): + action: typing.Literal["type_text"] = "type_text" + text: str + hold_keys: typing.Optional[typing.List[str]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class Action_Wait(UniversalBaseModel): + action: typing.Literal["wait"] = "wait" + duration: float + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +Action = typing.Union[ + Action_ClickMouse, + Action_DragMouse, + Action_GetCursorPosition, + Action_MoveMouse, + Action_PressKey, + Action_Scroll, + Action_TakeScreenshot, + Action_TypeText, + Action_Wait, +] diff --git a/src/scrapybara/types/computer_request.py b/src/scrapybara/types/computer_request.py new file mode 100644 index 0000000..471a91b --- /dev/null +++ b/src/scrapybara/types/computer_request.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +from .action import Action +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class ComputerRequest(UniversalBaseModel): + action: Action + screenshot: typing.Optional[bool] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/scrapybara/types/filesystem_request.py b/src/scrapybara/types/filesystem_request.py new file mode 100644 index 0000000..f22520a --- /dev/null +++ b/src/scrapybara/types/filesystem_request.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class FilesystemRequest(UniversalBaseModel): + command: str + path: typing.Optional[str] = None + content: typing.Optional[str] = None + mode: typing.Optional[str] = None + encoding: typing.Optional[str] = None + view_range: typing.Optional[typing.List[int]] = None + recursive: typing.Optional[bool] = None + src: typing.Optional[str] = None + dst: typing.Optional[str] = None + old_str: typing.Optional[str] = None + new_str: typing.Optional[str] = None + line: typing.Optional[int] = None + text: typing.Optional[str] = None + lines: typing.Optional[typing.List[int]] = None + all_occurrences: typing.Optional[bool] = None + pattern: typing.Optional[str] = None + case_sensitive: typing.Optional[bool] = None + line_numbers: typing.Optional[bool] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/scrapybara/types/filesystem_response.py b/src/scrapybara/types/filesystem_response.py new file mode 100644 index 0000000..a9d9f8b --- /dev/null +++ b/src/scrapybara/types/filesystem_response.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +import typing_extensions +from ..core.serialization import FieldMetadata +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class FilesystemResponse(UniversalBaseModel): + """ + Response model for filesystem actions. + """ + + output: typing.Optional[str] = None + error: typing.Optional[str] = None + base_64_image: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="base64_image")] = None + system: typing.Optional[str] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/scrapybara/types/get_instance_response.py b/src/scrapybara/types/get_instance_response.py index a0b60c4..d7850c4 100644 --- a/src/scrapybara/types/get_instance_response.py +++ b/src/scrapybara/types/get_instance_response.py @@ -4,8 +4,8 @@ import datetime as dt from .get_instance_response_instance_type import GetInstanceResponseInstanceType from .status import Status -from ..core.pydantic_utilities import IS_PYDANTIC_V2 import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 import pydantic @@ -14,6 +14,7 @@ class GetInstanceResponse(UniversalBaseModel): launch_time: dt.datetime instance_type: GetInstanceResponseInstanceType status: Status + resolution: typing.Optional[typing.List[int]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2