hyperbrowser 0.61.0__py3-none-any.whl → 0.62.0__py3-none-any.whl

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.

Potentially problematic release.


This version of hyperbrowser might be problematic. Click here for more details.

@@ -2,6 +2,7 @@ from .browser_use import BrowserUseManager
2
2
  from .cua import CuaManager
3
3
  from .claude_computer_use import ClaudeComputerUseManager
4
4
  from .hyper_agent import HyperAgentManager
5
+ from .gemini_computer_use import GeminiComputerUseManager
5
6
 
6
7
 
7
8
  class Agents:
@@ -10,3 +11,4 @@ class Agents:
10
11
  self.cua = CuaManager(client)
11
12
  self.claude_computer_use = ClaudeComputerUseManager(client)
12
13
  self.hyper_agent = HyperAgentManager(client)
14
+ self.gemini_computer_use = GeminiComputerUseManager(client)
@@ -0,0 +1,71 @@
1
+ import asyncio
2
+
3
+ from hyperbrowser.exceptions import HyperbrowserError
4
+
5
+ from .....models import (
6
+ POLLING_ATTEMPTS,
7
+ BasicResponse,
8
+ GeminiComputerUseTaskResponse,
9
+ GeminiComputerUseTaskStatusResponse,
10
+ StartGeminiComputerUseTaskParams,
11
+ StartGeminiComputerUseTaskResponse,
12
+ )
13
+
14
+
15
+ class GeminiComputerUseManager:
16
+ def __init__(self, client):
17
+ self._client = client
18
+
19
+ async def start(
20
+ self, params: StartGeminiComputerUseTaskParams
21
+ ) -> StartGeminiComputerUseTaskResponse:
22
+ response = await self._client.transport.post(
23
+ self._client._build_url("/task/gemini-computer-use"),
24
+ data=params.model_dump(exclude_none=True, by_alias=True),
25
+ )
26
+ return StartGeminiComputerUseTaskResponse(**response.data)
27
+
28
+ async def get(self, job_id: str) -> GeminiComputerUseTaskResponse:
29
+ response = await self._client.transport.get(
30
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}")
31
+ )
32
+ return GeminiComputerUseTaskResponse(**response.data)
33
+
34
+ async def get_status(self, job_id: str) -> GeminiComputerUseTaskStatusResponse:
35
+ response = await self._client.transport.get(
36
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}/status")
37
+ )
38
+ return GeminiComputerUseTaskStatusResponse(**response.data)
39
+
40
+ async def stop(self, job_id: str) -> BasicResponse:
41
+ response = await self._client.transport.put(
42
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}/stop")
43
+ )
44
+ return BasicResponse(**response.data)
45
+
46
+ async def start_and_wait(
47
+ self, params: StartGeminiComputerUseTaskParams
48
+ ) -> GeminiComputerUseTaskResponse:
49
+ job_start_resp = await self.start(params)
50
+ job_id = job_start_resp.job_id
51
+ if not job_id:
52
+ raise HyperbrowserError("Failed to start Gemini Computer Use task job")
53
+
54
+ failures = 0
55
+ while True:
56
+ try:
57
+ job_response = await self.get_status(job_id)
58
+ if (
59
+ job_response.status == "completed"
60
+ or job_response.status == "failed"
61
+ or job_response.status == "stopped"
62
+ ):
63
+ return await self.get(job_id)
64
+ failures = 0
65
+ except Exception as e:
66
+ failures += 1
67
+ if failures >= POLLING_ATTEMPTS:
68
+ raise HyperbrowserError(
69
+ f"Failed to poll Gemini Computer Use task job {job_id} after {POLLING_ATTEMPTS} attempts: {e}"
70
+ )
71
+ await asyncio.sleep(2)
@@ -2,6 +2,7 @@ from .browser_use import BrowserUseManager
2
2
  from .cua import CuaManager
3
3
  from .claude_computer_use import ClaudeComputerUseManager
4
4
  from .hyper_agent import HyperAgentManager
5
+ from .gemini_computer_use import GeminiComputerUseManager
5
6
 
6
7
 
7
8
  class Agents:
@@ -10,3 +11,4 @@ class Agents:
10
11
  self.cua = CuaManager(client)
11
12
  self.claude_computer_use = ClaudeComputerUseManager(client)
12
13
  self.hyper_agent = HyperAgentManager(client)
14
+ self.gemini_computer_use = GeminiComputerUseManager(client)
@@ -49,7 +49,7 @@ class ClaudeComputerUseManager:
49
49
  job_start_resp = self.start(params)
50
50
  job_id = job_start_resp.job_id
51
51
  if not job_id:
52
- raise HyperbrowserError("Failed to start CUA task job")
52
+ raise HyperbrowserError("Failed to start Claude Computer Use task job")
53
53
 
54
54
  failures = 0
55
55
  while True:
@@ -0,0 +1,71 @@
1
+ import time
2
+
3
+ from hyperbrowser.exceptions import HyperbrowserError
4
+
5
+ from .....models import (
6
+ POLLING_ATTEMPTS,
7
+ BasicResponse,
8
+ GeminiComputerUseTaskResponse,
9
+ GeminiComputerUseTaskStatusResponse,
10
+ StartGeminiComputerUseTaskParams,
11
+ StartGeminiComputerUseTaskResponse,
12
+ )
13
+
14
+
15
+ class GeminiComputerUseManager:
16
+ def __init__(self, client):
17
+ self._client = client
18
+
19
+ def start(
20
+ self, params: StartGeminiComputerUseTaskParams
21
+ ) -> StartGeminiComputerUseTaskResponse:
22
+ response = self._client.transport.post(
23
+ self._client._build_url("/task/gemini-computer-use"),
24
+ data=params.model_dump(exclude_none=True, by_alias=True),
25
+ )
26
+ return StartGeminiComputerUseTaskResponse(**response.data)
27
+
28
+ def get(self, job_id: str) -> GeminiComputerUseTaskResponse:
29
+ response = self._client.transport.get(
30
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}")
31
+ )
32
+ return GeminiComputerUseTaskResponse(**response.data)
33
+
34
+ def get_status(self, job_id: str) -> GeminiComputerUseTaskStatusResponse:
35
+ response = self._client.transport.get(
36
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}/status")
37
+ )
38
+ return GeminiComputerUseTaskStatusResponse(**response.data)
39
+
40
+ def stop(self, job_id: str) -> BasicResponse:
41
+ response = self._client.transport.put(
42
+ self._client._build_url(f"/task/gemini-computer-use/{job_id}/stop")
43
+ )
44
+ return BasicResponse(**response.data)
45
+
46
+ def start_and_wait(
47
+ self, params: StartGeminiComputerUseTaskParams
48
+ ) -> GeminiComputerUseTaskResponse:
49
+ job_start_resp = self.start(params)
50
+ job_id = job_start_resp.job_id
51
+ if not job_id:
52
+ raise HyperbrowserError("Failed to start Gemini Computer Use task job")
53
+
54
+ failures = 0
55
+ while True:
56
+ try:
57
+ job_response = self.get_status(job_id)
58
+ if (
59
+ job_response.status == "completed"
60
+ or job_response.status == "failed"
61
+ or job_response.status == "stopped"
62
+ ):
63
+ return self.get(job_id)
64
+ failures = 0
65
+ except Exception as e:
66
+ failures += 1
67
+ if failures >= POLLING_ATTEMPTS:
68
+ raise HyperbrowserError(
69
+ f"Failed to poll Gemini Computer Use task job {job_id} after {POLLING_ATTEMPTS} attempts: {e}"
70
+ )
71
+ time.sleep(2)
@@ -7,6 +7,8 @@ from .agents.browser_use import (
7
7
  BrowserUseApiKeys,
8
8
  )
9
9
  from .agents.claude_computer_use import (
10
+ ClaudeComputerUseTaskStatus,
11
+ ClaudeComputerUseStepResponse,
10
12
  ClaudeComputerUseTaskData,
11
13
  ClaudeComputerUseTaskResponse,
12
14
  ClaudeComputerUseTaskStatusResponse,
@@ -14,6 +16,16 @@ from .agents.claude_computer_use import (
14
16
  StartClaudeComputerUseTaskResponse,
15
17
  ClaudeComputerUseApiKeys,
16
18
  )
19
+ from .agents.gemini_computer_use import (
20
+ GeminiComputerUseTaskStatus,
21
+ GeminiComputerUseStepResponse,
22
+ GeminiComputerUseTaskData,
23
+ GeminiComputerUseTaskResponse,
24
+ GeminiComputerUseTaskStatusResponse,
25
+ StartGeminiComputerUseTaskParams,
26
+ StartGeminiComputerUseTaskResponse,
27
+ GeminiComputerUseApiKeys,
28
+ )
17
29
  from .agents.cua import (
18
30
  CuaTaskData,
19
31
  CuaTaskResponse,
@@ -51,6 +63,7 @@ from .consts import (
51
63
  ScrapeWaitUntil,
52
64
  SessionEventLogType,
53
65
  State,
66
+ SessionRegion,
54
67
  )
55
68
  from .crawl import (
56
69
  CrawledPage,
@@ -126,6 +139,7 @@ from .session import (
126
139
  SessionProfile,
127
140
  SessionLaunchState,
128
141
  UploadFileResponse,
142
+ ImageCaptchaParam,
129
143
  )
130
144
  from .team import TeamCreditInfo
131
145
 
@@ -147,6 +161,7 @@ __all__ = [
147
161
  "ScrapeWaitUntil",
148
162
  "SessionEventLogType",
149
163
  "State",
164
+ "SessionRegion",
150
165
  # agents
151
166
  "HyperAgentTaskStatus",
152
167
  "HyperAgentActionOutput",
@@ -164,11 +179,19 @@ __all__ = [
164
179
  "StartBrowserUseTaskParams",
165
180
  "StartBrowserUseTaskResponse",
166
181
  "ClaudeComputerUseTaskStatus",
182
+ "ClaudeComputerUseStepResponse",
167
183
  "ClaudeComputerUseTaskData",
168
184
  "ClaudeComputerUseTaskResponse",
169
185
  "ClaudeComputerUseTaskStatusResponse",
170
186
  "StartClaudeComputerUseTaskParams",
171
187
  "StartClaudeComputerUseTaskResponse",
188
+ "GeminiComputerUseTaskStatus",
189
+ "GeminiComputerUseStepResponse",
190
+ "GeminiComputerUseTaskData",
191
+ "GeminiComputerUseTaskResponse",
192
+ "GeminiComputerUseTaskStatusResponse",
193
+ "StartGeminiComputerUseTaskParams",
194
+ "StartGeminiComputerUseTaskResponse",
172
195
  "CuaTaskStatus",
173
196
  "CuaTaskData",
174
197
  "CuaTaskResponse",
@@ -177,6 +200,7 @@ __all__ = [
177
200
  "StartCuaTaskResponse",
178
201
  "BrowserUseApiKeys",
179
202
  "ClaudeComputerUseApiKeys",
203
+ "GeminiComputerUseApiKeys",
180
204
  "CuaApiKeys",
181
205
  "HyperAgentApiKeys",
182
206
  # crawl
@@ -238,6 +262,7 @@ __all__ = [
238
262
  "SessionProfile",
239
263
  "SessionLaunchState",
240
264
  "UploadFileResponse",
265
+ "ImageCaptchaParam",
241
266
  # team
242
267
  "TeamCreditInfo",
243
268
  # computer action
@@ -0,0 +1,117 @@
1
+ from typing import Any, Literal, Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+ from ..session import CreateSessionParams
6
+ from ..consts import GeminiComputerUseLlm
7
+
8
+ GeminiComputerUseTaskStatus = Literal[
9
+ "pending", "running", "completed", "failed", "stopped"
10
+ ]
11
+
12
+
13
+ class GeminiComputerUseApiKeys(BaseModel):
14
+ """
15
+ API keys for the Gemini Computer Use task.
16
+ """
17
+
18
+ model_config = ConfigDict(
19
+ populate_by_alias=True,
20
+ )
21
+
22
+ google: Optional[str] = Field(default=None, serialization_alias="google")
23
+
24
+
25
+ class StartGeminiComputerUseTaskParams(BaseModel):
26
+ """
27
+ Parameters for creating a new Gemini Computer Use task.
28
+ """
29
+
30
+ model_config = ConfigDict(
31
+ populate_by_alias=True,
32
+ )
33
+
34
+ task: str
35
+ llm: Optional[GeminiComputerUseLlm] = Field(default=None, serialization_alias="llm")
36
+ session_id: Optional[str] = Field(default=None, serialization_alias="sessionId")
37
+ max_failures: Optional[int] = Field(default=None, serialization_alias="maxFailures")
38
+ max_steps: Optional[int] = Field(default=None, serialization_alias="maxSteps")
39
+ keep_browser_open: Optional[bool] = Field(
40
+ default=None, serialization_alias="keepBrowserOpen"
41
+ )
42
+ session_options: Optional[CreateSessionParams] = Field(
43
+ default=None, serialization_alias="sessionOptions"
44
+ )
45
+ use_custom_api_keys: Optional[bool] = Field(
46
+ default=None, serialization_alias="useCustomApiKeys"
47
+ )
48
+ api_keys: Optional[GeminiComputerUseApiKeys] = Field(
49
+ default=None, serialization_alias="apiKeys"
50
+ )
51
+
52
+
53
+ class StartGeminiComputerUseTaskResponse(BaseModel):
54
+ """
55
+ Response from starting a Gemini Computer Use task.
56
+ """
57
+
58
+ model_config = ConfigDict(
59
+ populate_by_alias=True,
60
+ )
61
+
62
+ job_id: str = Field(alias="jobId")
63
+ live_url: Optional[str] = Field(default=None, alias="liveUrl")
64
+
65
+
66
+ class GeminiComputerUseTaskStatusResponse(BaseModel):
67
+ """
68
+ Response from getting a Gemini Computer Use task status.
69
+ """
70
+
71
+ model_config = ConfigDict(
72
+ populate_by_alias=True,
73
+ )
74
+
75
+ status: GeminiComputerUseTaskStatus
76
+
77
+
78
+ class GeminiComputerUseStepResponse(BaseModel):
79
+ """
80
+ Response from a single Gemini Computer Use step.
81
+ """
82
+
83
+ model_config = ConfigDict(
84
+ populate_by_alias=True,
85
+ )
86
+
87
+ candidates: Optional[list[Any]] = Field(
88
+ default=None, serialization_alias="candidates"
89
+ )
90
+ model_version: Optional[str] = Field(
91
+ default=None, serialization_alias="modelVersion"
92
+ )
93
+
94
+
95
+ class GeminiComputerUseTaskData(BaseModel):
96
+ model_config = ConfigDict(
97
+ populate_by_alias=True,
98
+ )
99
+
100
+ steps: list[GeminiComputerUseStepResponse]
101
+ final_result: Optional[str] = Field(default=None, alias="finalResult")
102
+
103
+
104
+ class GeminiComputerUseTaskResponse(BaseModel):
105
+ """
106
+ Response from a Gemini Computer Use task.
107
+ """
108
+
109
+ model_config = ConfigDict(
110
+ populate_by_alias=True,
111
+ )
112
+
113
+ job_id: str = Field(alias="jobId")
114
+ status: GeminiComputerUseTaskStatus
115
+ data: Optional[GeminiComputerUseTaskData] = Field(default=None, alias="data")
116
+ error: Optional[str] = Field(default=None, alias="error")
117
+ live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -43,6 +43,7 @@ ClaudeComputerUseLlm = Literal[
43
43
  "claude-sonnet-4-20250514",
44
44
  "claude-3-7-sonnet-20250219",
45
45
  ]
46
+ GeminiComputerUseLlm = Literal["gemini-2.5-computer-use-preview-10-2025",]
46
47
  SessionRegion = Literal[
47
48
  "us-central",
48
49
  "asia-south",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperbrowser
3
- Version: 0.61.0
3
+ Version: 0.62.0
4
4
  Summary: Python SDK for hyperbrowser
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -1,10 +1,11 @@
1
1
  hyperbrowser/__init__.py,sha256=zWGcLhqhvWy6BTwuNpzWK1-0LpIn311ks-4U9nrsb7Y,187
2
2
  hyperbrowser/client/async_client.py,sha256=CcgSBu3YbSZZ4jthRqXnOMlgMMGCJzAGAymyovL7n1k,1698
3
3
  hyperbrowser/client/base.py,sha256=2nkTdGfRWjW3grqAuYez-IuD69SAAJ5qklCKNeAYd6A,1268
4
- hyperbrowser/client/managers/async_manager/agents/__init__.py,sha256=GUkUBxoqW6vchz3-yNlUaE8TdEClNdp3RliHYMT1fsE,432
4
+ hyperbrowser/client/managers/async_manager/agents/__init__.py,sha256=tjHfycKN020IJsbuLh3iEhN0UDXp8TMz5141YTKIc5o,558
5
5
  hyperbrowser/client/managers/async_manager/agents/browser_use.py,sha256=wizo6f_GpZyP8z6nXbqgX57i2cJMm12GDt1yEmPXF1A,2863
6
6
  hyperbrowser/client/managers/async_manager/agents/claude_computer_use.py,sha256=gTnX8r3rETyLMsDy_4nO0oB5cDdHHN9s-y7xw-4ekqc,2657
7
7
  hyperbrowser/client/managers/async_manager/agents/cua.py,sha256=e43QgSLi0LvGd9cOirsRETcit0MXvvtLA2cNv16xH0s,2337
8
+ hyperbrowser/client/managers/async_manager/agents/gemini_computer_use.py,sha256=S3qYI9UYh0a35EfUNcUQ1hhZnMtOuyS1V7NkgLrtGkk,2657
8
9
  hyperbrowser/client/managers/async_manager/agents/hyper_agent.py,sha256=VzPTrvlYX_CZohoCD6Z8Cf1itDZ6BLKmrzpjv6YGs88,2501
9
10
  hyperbrowser/client/managers/async_manager/computer_action.py,sha256=W9Ezfe7vRt1xtAXI7nBxLsYC6iTT7wjg2jn0OFpF7E4,3711
10
11
  hyperbrowser/client/managers/async_manager/crawl.py,sha256=3EW-QauFPaW92XJk0mQU7f0-xgCdKKEc6WaPeM5exlA,4417
@@ -14,10 +15,11 @@ hyperbrowser/client/managers/async_manager/profile.py,sha256=cQ4cYVwL83heQwEnQiB
14
15
  hyperbrowser/client/managers/async_manager/scrape.py,sha256=akVgbatTTHDFkmxugxcQpIPEwjSPm7VloJVDdbAPRh0,6560
15
16
  hyperbrowser/client/managers/async_manager/session.py,sha256=2PLXcwvh38ouX3ctOtizhOlmK0NH4HEtH5rKXaxEH8w,4166
16
17
  hyperbrowser/client/managers/async_manager/team.py,sha256=DHRd7igcuMG16WfM1-nSnpqaSNvwEzBnTGv7wRuaRdI,353
17
- hyperbrowser/client/managers/sync_manager/agents/__init__.py,sha256=GUkUBxoqW6vchz3-yNlUaE8TdEClNdp3RliHYMT1fsE,432
18
+ hyperbrowser/client/managers/sync_manager/agents/__init__.py,sha256=tjHfycKN020IJsbuLh3iEhN0UDXp8TMz5141YTKIc5o,558
18
19
  hyperbrowser/client/managers/sync_manager/agents/browser_use.py,sha256=HXl8GM47DZuK4A-3DpwbLDJCnzEL8ndn9YfDAEljZFk,2765
19
- hyperbrowser/client/managers/sync_manager/agents/claude_computer_use.py,sha256=6mAaqDjKrLrxRaGZfZSgC7wYVyDQeWZEE6K6wLrnTXk,2557
20
+ hyperbrowser/client/managers/sync_manager/agents/claude_computer_use.py,sha256=p8zK7IgL6vHz7qzDZQoK2YswJjoKVwL2arIDC0Jdy50,2573
20
21
  hyperbrowser/client/managers/sync_manager/agents/cua.py,sha256=rh3JyXWzh9SvSLkDBtWGVUd2KMx27MyLMuNPnRwvbxk,2253
22
+ hyperbrowser/client/managers/sync_manager/agents/gemini_computer_use.py,sha256=qgNdoDASsh2XMM_oINawrKKpIXsITR3RzHZr3MfxsTs,2573
21
23
  hyperbrowser/client/managers/sync_manager/agents/hyper_agent.py,sha256=UgB_eEa7PODGoTegulJzJDPBr2VQ-hIT0yA0z7BfYtk,2403
22
24
  hyperbrowser/client/managers/sync_manager/computer_action.py,sha256=H-oD6A_dcmbrFrUQ8nw6QCNg4MV1jDy7cPeCJNfg_kY,3609
23
25
  hyperbrowser/client/managers/sync_manager/crawl.py,sha256=mk5G7NGrneU47P2lbOlI7dkAZ9PMMPwPjIYGSO5yR-Y,4349
@@ -30,13 +32,14 @@ hyperbrowser/client/managers/sync_manager/team.py,sha256=VKuKXpbGBZ-iwTDAlO0U0yv
30
32
  hyperbrowser/client/sync.py,sha256=Oi-d4upNRkAUS5T5LcJPun5hL6FPbODn_PcM1AERCrg,1519
31
33
  hyperbrowser/config.py,sha256=7P-sbcvqXVr8Qzubo5O6jJgzcCgB5DdwbeIgEjRZNlY,623
32
34
  hyperbrowser/exceptions.py,sha256=SUUkptK2OL36xDORYmSicaTYR7pMbxeWAjAgz35xnM8,1171
33
- hyperbrowser/models/__init__.py,sha256=VQtJpSZbVHrPIDmMDy1unJNrTbQHeF5dsJOS4O6oJYs,6231
35
+ hyperbrowser/models/__init__.py,sha256=eSXNPEx0jB6uehKIapIyB9Zn3hVgbbzm296pTbQtrGI,7050
34
36
  hyperbrowser/models/agents/browser_use.py,sha256=Na3av_EivqOCtEjd-Bfm68sp3H_tr_cE8q1oFCjagUU,6303
35
37
  hyperbrowser/models/agents/claude_computer_use.py,sha256=RflxYn2Js4TQQsAM3liTBoWJkIViYjOuBVFOPR4sTho,3311
36
38
  hyperbrowser/models/agents/cua.py,sha256=mDFC3hVWQ3OS9wpjRTPdJgXaIOLDw00GGPD_pURo8Tw,3609
39
+ hyperbrowser/models/agents/gemini_computer_use.py,sha256=54uM6G3hTsGiZ2xRFmSZ5TDiUsmRLxiE85N1iNfNPDM,3225
37
40
  hyperbrowser/models/agents/hyper_agent.py,sha256=tHca1Xw6sHekF0SAL1buKMjeUjwmm8qciKFCWsJ1q0g,3728
38
41
  hyperbrowser/models/computer_action.py,sha256=9CvnlfqwarBCjfek62_1gpRmeupU_3IhEnhkQ3iK8yw,3488
39
- hyperbrowser/models/consts.py,sha256=OhrEjpObj6pBaiKBh8r27T_K12c3nR0RQNplwqNPWQA,7175
42
+ hyperbrowser/models/consts.py,sha256=2jor-sjVM7WSMd4x5upN7YO1ABL-9EbNzes7NcS6qXk,7250
40
43
  hyperbrowser/models/crawl.py,sha256=XUS5Ja-Abl8gMyDtLIsRaEKa_taSOORMLOFCdAPgGaI,2820
41
44
  hyperbrowser/models/extension.py,sha256=nXjKXKt9R7RxyZ4hd3EvfqZsEGy_ufh1r5j2mqCLykQ,804
42
45
  hyperbrowser/models/extract.py,sha256=DXg0HtO44plAtcFOmqUpdp9P93tq45U2fLWxn5jdjAw,1745
@@ -51,7 +54,7 @@ hyperbrowser/tools/schema.py,sha256=YFUAoQjx_SpjezS3UQdTCCn4xMdN3CgEeKAlulkIATc,
51
54
  hyperbrowser/transport/async_transport.py,sha256=6HKoeM5TutIqraEscEWobvSPWF3iVKh2hPflGNKwykw,4128
52
55
  hyperbrowser/transport/base.py,sha256=ildpMrDiM8nvrSGrH2LTOafmB17T7PQB_NQ1ODA378U,1703
53
56
  hyperbrowser/transport/sync.py,sha256=aUVpxWF8sqSycLNKxVNEZvlsZSoqc1eHgPK1Y1QA1u8,3422
54
- hyperbrowser-0.61.0.dist-info/METADATA,sha256=MhLrLokjWnhXQMAeYCDZrORBZVm0SnogHw-FVbvNPzM,3651
55
- hyperbrowser-0.61.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
56
- hyperbrowser-0.61.0.dist-info/licenses/LICENSE,sha256=NbSXeOZ2JKnPpkyLBYkfPqt9eWNy-Lx3xb4sjsSR9mI,1069
57
- hyperbrowser-0.61.0.dist-info/RECORD,,
57
+ hyperbrowser-0.62.0.dist-info/METADATA,sha256=dlKq5gpbi0q4XETap69JJ1D278H4jyvi4ykbFNtoONA,3651
58
+ hyperbrowser-0.62.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
59
+ hyperbrowser-0.62.0.dist-info/licenses/LICENSE,sha256=NbSXeOZ2JKnPpkyLBYkfPqt9eWNy-Lx3xb4sjsSR9mI,1069
60
+ hyperbrowser-0.62.0.dist-info/RECORD,,