diff --git a/poetry.lock b/poetry.lock index b284569..f13c117 100644 --- a/poetry.lock +++ b/poetry.lock @@ -38,13 +38,13 @@ trio = ["trio (>=0.26.1)"] [[package]] name = "certifi" -version = "2025.1.31" +version = "2025.4.26" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, - {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, + {file = "certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3"}, + {file = "certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6"}, ] [[package]] @@ -60,43 +60,46 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.2.2" +version = "1.3.0" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, + {file = "exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10"}, + {file = "exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88"}, ] +[package.dependencies] +typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} + [package.extras] test = ["pytest (>=6)"] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "httpcore" -version = "1.0.8" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.8-py3-none-any.whl", hash = "sha256:5254cf149bcb5f75e9d1b2b9f729ea4a4b883d1ad7379fc632b727cec23674be"}, - {file = "httpcore-1.0.8.tar.gz", hash = "sha256:86e94505ed24ea06514883fd44d2bc02d90e77e7979c8eb71b90f41d364a1bad"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] @@ -201,24 +204,24 @@ reports = ["lxml"] [[package]] name = "mypy-extensions" -version = "1.0.0" +version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] [[package]] name = "packaging" -version = "24.2" +version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, - {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index dfe0372..a54d352 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "scrapybara" [tool.poetry] name = "scrapybara" -version = "2.5.1" +version = "2.5.2" description = "" readme = "README.md" authors = [] diff --git a/reference.md b/reference.md index 624134c..cad20ce 100644 --- a/reference.md +++ b/reference.md @@ -490,6 +490,14 @@ client.instance.bash(
+**timeout:** `typing.Optional[float]` + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
diff --git a/src/scrapybara/client.py b/src/scrapybara/client.py index 71c1358..29d433e 100644 --- a/src/scrapybara/client.py +++ b/src/scrapybara/client.py @@ -887,6 +887,7 @@ def bash( restart: Optional[bool] = OMIT, list_sessions: Optional[bool] = OMIT, check_session: Optional[int] = OMIT, + timeout: Optional[float] = None, request_options: Optional[RequestOptions] = None, ) -> Optional[Any]: return self._client.instance.bash( @@ -896,6 +897,7 @@ def bash( restart=restart, list_sessions=list_sessions, check_session=check_session, + timeout=timeout, request_options=request_options ) @@ -1411,6 +1413,7 @@ async def bash( restart: Optional[bool] = OMIT, list_sessions: Optional[bool] = OMIT, check_session: Optional[int] = OMIT, + timeout: Optional[float] = None, request_options: Optional[RequestOptions] = None, ) -> Optional[Any]: return await self._client.instance.bash( @@ -1420,6 +1423,7 @@ async def bash( restart=restart, list_sessions=list_sessions, check_session=check_session, + timeout=timeout, request_options=request_options ) diff --git a/src/scrapybara/core/client_wrapper.py b/src/scrapybara/core/client_wrapper.py index 7f289d0..7121f16 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.5.1", + "X-Fern-SDK-Version": "2.5.2", } headers["x-api-key"] = self.api_key return headers diff --git a/src/scrapybara/instance/client.py b/src/scrapybara/instance/client.py index 8a964c1..e656524 100644 --- a/src/scrapybara/instance/client.py +++ b/src/scrapybara/instance/client.py @@ -217,6 +217,7 @@ def bash( restart: typing.Optional[bool] = OMIT, list_sessions: typing.Optional[bool] = OMIT, check_session: typing.Optional[int] = OMIT, + timeout: typing.Optional[float] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> BashResponse: """ @@ -234,6 +235,8 @@ def bash( check_session : typing.Optional[int] + timeout : typing.Optional[float] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -262,6 +265,7 @@ def bash( "restart": restart, "list_sessions": list_sessions, "check_session": check_session, + "timeout": timeout, }, headers={ "content-type": "application/json", @@ -988,6 +992,7 @@ async def bash( restart: typing.Optional[bool] = OMIT, list_sessions: typing.Optional[bool] = OMIT, check_session: typing.Optional[int] = OMIT, + timeout: typing.Optional[float] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> BashResponse: """ @@ -1005,6 +1010,8 @@ async def bash( check_session : typing.Optional[int] + timeout : typing.Optional[float] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1041,6 +1048,7 @@ async def main() -> None: "restart": restart, "list_sessions": list_sessions, "check_session": check_session, + "timeout": timeout, }, headers={ "content-type": "application/json", diff --git a/src/scrapybara/tools/__init__.py b/src/scrapybara/tools/__init__.py index 63eb214..980f5e9 100644 --- a/src/scrapybara/tools/__init__.py +++ b/src/scrapybara/tools/__init__.py @@ -169,6 +169,7 @@ class BashToolParameters(BaseModel): restart: Optional[bool] = Field(False, description="Whether to restart the shell") list_sessions: Optional[bool] = Field(None, description="Whether to list all bash sessions") check_session: Optional[int] = Field(None, description="Session ID to check status") + timeout: Optional[float] = Field(None, description="Timeout for the command") class BashTool(Tool): @@ -193,6 +194,7 @@ def __call__(self, **kwargs: Any) -> Any: session=params.session, restart=params.restart, list_sessions=params.list_sessions, - check_session=params.check_session + check_session=params.check_session, + timeout=params.timeout, )