tzafon 0.1.1__tar.gz → 0.1.2__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.
Potentially problematic release.
This version of tzafon might be problematic. Click here for more details.
- tzafon-0.1.2/.gitignore +2 -0
- {tzafon-0.1.1 → tzafon-0.1.2}/PKG-INFO +5 -1
- tzafon-0.1.2/examples/demo001.py +28 -0
- {tzafon-0.1.1 → tzafon-0.1.2}/pyproject.toml +8 -5
- {tzafon-0.1.1 → tzafon-0.1.2}/src/tzafon/_connection.py +1 -2
- {tzafon-0.1.1 → tzafon-0.1.2}/src/tzafon/client.py +23 -1
- {tzafon-0.1.1 → tzafon-0.1.2}/src/tzafon/models.py +21 -1
- tzafon-0.1.2/tests/test_connection.py +18 -0
- tzafon-0.1.2/tests/test_models.py +11 -0
- tzafon-0.1.2/tests/test_waypoint_api.py +35 -0
- {tzafon-0.1.1 → tzafon-0.1.2}/uv.lock +225 -40
- tzafon-0.1.1/.gitignore +0 -54
- {tzafon-0.1.1 → tzafon-0.1.2}/.python-version +0 -0
- {tzafon-0.1.1 → tzafon-0.1.2}/README.md +0 -0
- {tzafon-0.1.1 → tzafon-0.1.2}/src/tzafon/__init__.py +0 -0
- {tzafon-0.1.1 → tzafon-0.1.2}/src/tzafon/exceptions.py +0 -0
tzafon-0.1.2/.gitignore
ADDED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tzafon
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Tzafon Waypoint – browser automation
|
|
5
5
|
License: MIT
|
|
6
6
|
Requires-Python: >=3.10
|
|
7
|
+
Requires-Dist: httpx>=0.26.0
|
|
8
|
+
Requires-Dist: pytest-asyncio>=0.24.0
|
|
9
|
+
Requires-Dist: pytest>=8.3.4
|
|
10
|
+
Requires-Dist: python-dotenv>=1.1.0
|
|
7
11
|
Requires-Dist: twine>=6.1.0
|
|
8
12
|
Requires-Dist: websockets>=15.0.1
|
|
9
13
|
Description-Content-Type: text/markdown
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from tzafon import Waypoint
|
|
2
|
+
from dotenv import load_dotenv
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
load_dotenv()
|
|
6
|
+
|
|
7
|
+
client = Waypoint(token=os.getenv("WAYPOINT_TOKEN"))
|
|
8
|
+
|
|
9
|
+
image_path = "screenshot.jpg"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
async def main():
|
|
13
|
+
async with client:
|
|
14
|
+
await client.goto("https://www.tzafon.ai")
|
|
15
|
+
|
|
16
|
+
# Get URL to image
|
|
17
|
+
url = await client.screenshot(return_url=True)
|
|
18
|
+
print("Image url:", url)
|
|
19
|
+
|
|
20
|
+
# Save image to file
|
|
21
|
+
await client.screenshot(path=image_path)
|
|
22
|
+
print("Image saved to:", image_path)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
if __name__ == "__main__":
|
|
26
|
+
import asyncio
|
|
27
|
+
|
|
28
|
+
asyncio.run(main())
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "tzafon"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.2"
|
|
4
4
|
description = "Tzafon Waypoint – browser automation"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
7
7
|
dependencies = [
|
|
8
8
|
"twine>=6.1.0",
|
|
9
9
|
"websockets>=15.0.1",
|
|
10
|
+
"pytest>=8.3.4",
|
|
11
|
+
"pytest-asyncio>=0.24.0",
|
|
12
|
+
"python-dotenv>=1.1.0",
|
|
13
|
+
"httpx>=0.26.0",
|
|
10
14
|
]
|
|
11
15
|
license = { text = "MIT"}
|
|
12
16
|
|
|
@@ -14,12 +18,11 @@ license = { text = "MIT"}
|
|
|
14
18
|
requires = ["hatchling"]
|
|
15
19
|
build-backend = "hatchling.build"
|
|
16
20
|
|
|
17
|
-
[tool.rye]
|
|
18
|
-
managed = true
|
|
19
|
-
dev-dependencies = []
|
|
20
|
-
|
|
21
21
|
[tool.hatch.metadata]
|
|
22
22
|
allow-direct-references = true
|
|
23
23
|
|
|
24
24
|
[tool.hatch.build.targets.wheel]
|
|
25
25
|
packages = ["src/tzafon"]
|
|
26
|
+
|
|
27
|
+
[tool.pytest.ini_options]
|
|
28
|
+
asyncio_default_fixture_loop_scope = "function"
|
|
@@ -56,7 +56,8 @@ class Waypoint:
|
|
|
56
56
|
path: str | os.PathLike | None = None,
|
|
57
57
|
*,
|
|
58
58
|
mkdir: bool = True,
|
|
59
|
-
|
|
59
|
+
return_url: bool = False,
|
|
60
|
+
) -> bytes | str:
|
|
60
61
|
"""
|
|
61
62
|
Grab a **JPEG** screenshot.
|
|
62
63
|
|
|
@@ -66,8 +67,29 @@ class Waypoint:
|
|
|
66
67
|
*and* the raw bytes are still returned.
|
|
67
68
|
mkdir:
|
|
68
69
|
Automatically create parent folders if they do not exist.
|
|
70
|
+
return_url:
|
|
71
|
+
If True, return the remote URL instead of the image bytes.
|
|
69
72
|
"""
|
|
70
73
|
res = await self._send(Command(ActionType.SCREENSHOT))
|
|
74
|
+
|
|
75
|
+
if return_url:
|
|
76
|
+
if res.image_url:
|
|
77
|
+
return res.image_url
|
|
78
|
+
if path is not None:
|
|
79
|
+
from pathlib import Path
|
|
80
|
+
|
|
81
|
+
p = Path(path)
|
|
82
|
+
if mkdir:
|
|
83
|
+
p.parent.mkdir(parents=True, exist_ok=True)
|
|
84
|
+
p.write_bytes(res.image)
|
|
85
|
+
return str(p.resolve())
|
|
86
|
+
raise ScreenshotFailed(
|
|
87
|
+
"Server did not provide image_url; set return_url=False to get bytes"
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
if res.success and res.image is None and res.image_url is not None:
|
|
91
|
+
await res.download_image()
|
|
92
|
+
|
|
71
93
|
if not (res.success and res.image):
|
|
72
94
|
raise ScreenshotFailed(res.error_message or "unknown error")
|
|
73
95
|
|
|
@@ -52,8 +52,23 @@ class Command:
|
|
|
52
52
|
class Result:
|
|
53
53
|
success: bool
|
|
54
54
|
image: Optional[bytes] = None # jpeg bytes
|
|
55
|
+
image_url: Optional[str] = None # remote location if bytes omitted
|
|
55
56
|
error_message: Optional[str] = None
|
|
56
57
|
|
|
58
|
+
async def download_image(self) -> None:
|
|
59
|
+
"""If `image` is None but `image_url` present, fetch the bytes (async)."""
|
|
60
|
+
if self.image is None and self.image_url is not None:
|
|
61
|
+
try:
|
|
62
|
+
import httpx
|
|
63
|
+
|
|
64
|
+
async with httpx.AsyncClient(timeout=20.0, follow_redirects=True) as c:
|
|
65
|
+
resp = await c.get(self.image_url)
|
|
66
|
+
resp.raise_for_status()
|
|
67
|
+
self.image = resp.content
|
|
68
|
+
except Exception:
|
|
69
|
+
# keep silent – caller will treat as missing image later
|
|
70
|
+
pass
|
|
71
|
+
|
|
57
72
|
@classmethod
|
|
58
73
|
def load(cls, body: bytes) -> Self:
|
|
59
74
|
data = json.loads(body.decode("utf-8"))
|
|
@@ -62,6 +77,7 @@ class Result:
|
|
|
62
77
|
return cls(
|
|
63
78
|
success=data.get("success", False),
|
|
64
79
|
image=img,
|
|
80
|
+
image_url=data.get("image_url"),
|
|
65
81
|
error_message=data.get("error_message"),
|
|
66
82
|
)
|
|
67
83
|
|
|
@@ -69,8 +85,12 @@ class Result:
|
|
|
69
85
|
d: Dict[str, Any] = {
|
|
70
86
|
"success": self.success,
|
|
71
87
|
"error_message": self.error_message,
|
|
72
|
-
"image": base64.b64encode(self.image).decode() if self.image else None,
|
|
73
88
|
}
|
|
89
|
+
|
|
90
|
+
if self.image is not None:
|
|
91
|
+
d["image"] = base64.b64encode(self.image).decode()
|
|
92
|
+
if self.image_url is not None:
|
|
93
|
+
d["image_url"] = self.image_url
|
|
74
94
|
return json.dumps({k: v for k, v in d.items() if v is not None}).encode()
|
|
75
95
|
|
|
76
96
|
def __str__(self) -> str:
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import websockets
|
|
2
|
+
import pytest
|
|
3
|
+
from tzafon._connection import _WsConnection
|
|
4
|
+
from tzafon.models import Command, Result, ActionType
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@pytest.mark.asyncio
|
|
8
|
+
async def test_send_roundtrip():
|
|
9
|
+
async def handler(ws):
|
|
10
|
+
_ = await ws.recv()
|
|
11
|
+
await ws.send(Result(success=True).dump())
|
|
12
|
+
|
|
13
|
+
async with websockets.serve(handler, "localhost", 8765):
|
|
14
|
+
conn = _WsConnection("ws://localhost:8765")
|
|
15
|
+
await conn.connect()
|
|
16
|
+
res = await conn.send(Command(ActionType.GOTO, url="about:blank"))
|
|
17
|
+
assert res.success is True
|
|
18
|
+
await conn.close()
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from tzafon.models import ActionType, Command, Result
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def test_command_roundtrip():
|
|
5
|
+
cmd = Command(ActionType.GOTO, url="https://example.com", timeout=1234)
|
|
6
|
+
assert Command.load(cmd.dump()) == cmd
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def test_result_roundtrip():
|
|
10
|
+
r1 = Result(success=True, image=b"\xff\xd8")
|
|
11
|
+
assert Result.load(r1.dump()) == r1
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from tzafon.client import Waypoint
|
|
3
|
+
from tzafon.models import Command, Result, ActionType
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DummyConn:
|
|
7
|
+
def __init__(self):
|
|
8
|
+
self.sent = []
|
|
9
|
+
|
|
10
|
+
async def connect(self):
|
|
11
|
+
...
|
|
12
|
+
|
|
13
|
+
async def close(self):
|
|
14
|
+
...
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def is_open(self):
|
|
18
|
+
return True
|
|
19
|
+
|
|
20
|
+
async def send(self, cmd: Command):
|
|
21
|
+
self.sent.append(cmd)
|
|
22
|
+
return Result(
|
|
23
|
+
success=True,
|
|
24
|
+
image=b"\xff\xd8" if cmd.action_type == ActionType.SCREENSHOT else None,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@pytest.mark.asyncio
|
|
29
|
+
async def test_screenshot_happy_path(monkeypatch, tmp_path):
|
|
30
|
+
dummy = DummyConn()
|
|
31
|
+
monkeypatch.setattr("tzafon.client._WsConnection", lambda *a, **k: dummy)
|
|
32
|
+
async with Waypoint(token="wpk_dummy") as wp:
|
|
33
|
+
img = await wp.screenshot(tmp_path / "shot.jpg")
|
|
34
|
+
assert img.startswith(b"\xff\xd8")
|
|
35
|
+
assert (tmp_path / "shot.jpg").exists()
|
|
@@ -2,6 +2,21 @@ version = 1
|
|
|
2
2
|
revision = 1
|
|
3
3
|
requires-python = ">=3.10"
|
|
4
4
|
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "anyio"
|
|
7
|
+
version = "4.9.0"
|
|
8
|
+
source = { registry = "https://pypi.org/simple" }
|
|
9
|
+
dependencies = [
|
|
10
|
+
{ name = "exceptiongroup", marker = "python_full_version < '3.11'" },
|
|
11
|
+
{ name = "idna" },
|
|
12
|
+
{ name = "sniffio" },
|
|
13
|
+
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
|
14
|
+
]
|
|
15
|
+
sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 }
|
|
16
|
+
wheels = [
|
|
17
|
+
{ url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 },
|
|
18
|
+
]
|
|
19
|
+
|
|
5
20
|
[[package]]
|
|
6
21
|
name = "backports-tarfile"
|
|
7
22
|
version = "1.2.0"
|
|
@@ -122,41 +137,50 @@ wheels = [
|
|
|
122
137
|
{ url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 },
|
|
123
138
|
]
|
|
124
139
|
|
|
140
|
+
[[package]]
|
|
141
|
+
name = "colorama"
|
|
142
|
+
version = "0.4.6"
|
|
143
|
+
source = { registry = "https://pypi.org/simple" }
|
|
144
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 }
|
|
145
|
+
wheels = [
|
|
146
|
+
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
|
|
147
|
+
]
|
|
148
|
+
|
|
125
149
|
[[package]]
|
|
126
150
|
name = "cryptography"
|
|
127
|
-
version = "
|
|
151
|
+
version = "45.0.2"
|
|
128
152
|
source = { registry = "https://pypi.org/simple" }
|
|
129
153
|
dependencies = [
|
|
130
154
|
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
|
|
131
155
|
]
|
|
132
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
133
|
-
wheels = [
|
|
134
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
135
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
136
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
137
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
138
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
139
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
140
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
141
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
142
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
143
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
144
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
145
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
146
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
147
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
148
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
149
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
150
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
151
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
152
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
153
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
154
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
155
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
156
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
157
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
158
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
159
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
156
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f6/47/92a8914716f2405f33f1814b97353e3cfa223cd94a77104075d42de3099e/cryptography-45.0.2.tar.gz", hash = "sha256:d784d57b958ffd07e9e226d17272f9af0c41572557604ca7554214def32c26bf", size = 743865 }
|
|
157
|
+
wheels = [
|
|
158
|
+
{ url = "https://files.pythonhosted.org/packages/90/52/49e6c86278e1b5ec226e96b62322538ccc466306517bf9aad8854116a088/cryptography-45.0.2-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cc31c66411e14dd70e2f384a9204a859dc25b05e1f303df0f5326691061b839", size = 4201098 },
|
|
159
|
+
{ url = "https://files.pythonhosted.org/packages/7b/3a/201272539ac5b66b4cb1af89021e423fc0bfacb73498950280c51695fb78/cryptography-45.0.2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:463096533acd5097f8751115bc600b0b64620c4aafcac10c6d0041e6e68f88fe", size = 4429839 },
|
|
160
|
+
{ url = "https://files.pythonhosted.org/packages/99/89/fa1a84832b8f8f3917875cb15324bba98def5a70175a889df7d21a45dc75/cryptography-45.0.2-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:cdafb86eb673c3211accffbffdb3cdffa3aaafacd14819e0898d23696d18e4d3", size = 4205154 },
|
|
161
|
+
{ url = "https://files.pythonhosted.org/packages/1c/c5/5225d5230d538ab461725711cf5220560a813d1eb68bafcfb00131b8f631/cryptography-45.0.2-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:05c2385b1f5c89a17df19900cfb1345115a77168f5ed44bdf6fd3de1ce5cc65b", size = 3897145 },
|
|
162
|
+
{ url = "https://files.pythonhosted.org/packages/fe/24/f19aae32526cc55ae17d473bc4588b1234af2979483d99cbfc57e55ffea6/cryptography-45.0.2-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e9e4bdcd70216b08801e267c0b563316b787f957a46e215249921f99288456f9", size = 4462192 },
|
|
163
|
+
{ url = "https://files.pythonhosted.org/packages/19/18/4a69ac95b0b3f03355970baa6c3f9502bbfc54e7df81fdb179654a00f48e/cryptography-45.0.2-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b2de529027579e43b6dc1f805f467b102fb7d13c1e54c334f1403ee2b37d0059", size = 4208093 },
|
|
164
|
+
{ url = "https://files.pythonhosted.org/packages/7c/54/2dea55ccc9558b8fa14f67156250b6ee231e31765601524e4757d0b5db6b/cryptography-45.0.2-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10d68763892a7b19c22508ab57799c4423c7c8cd61d7eee4c5a6a55a46511949", size = 4461819 },
|
|
165
|
+
{ url = "https://files.pythonhosted.org/packages/37/f1/1b220fcd5ef4b1f0ff3e59e733b61597505e47f945606cc877adab2c1a17/cryptography-45.0.2-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2a90ce2f0f5b695e4785ac07c19a58244092f3c85d57db6d8eb1a2b26d2aad6", size = 4329202 },
|
|
166
|
+
{ url = "https://files.pythonhosted.org/packages/6d/e0/51d1dc4f96f819a56db70f0b4039b4185055bbb8616135884c3c3acc4c6d/cryptography-45.0.2-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:59c0c8f043dd376bbd9d4f636223836aed50431af4c5a467ed9bf61520294627", size = 4570412 },
|
|
167
|
+
{ url = "https://files.pythonhosted.org/packages/31/a3/a3e4a298d3db4a04085728f5ae6c8cda157e49c5bb784886d463b9fbff70/cryptography-45.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e328357b6bbf79928363dbf13f4635b7aac0306afb7e5ad24d21d0c5761c3253", size = 4189148 },
|
|
168
|
+
{ url = "https://files.pythonhosted.org/packages/53/90/100dfadd4663b389cb56972541ec1103490a19ebad0132af284114ba0868/cryptography-45.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49af56491473231159c98c2c26f1a8f3799a60e5cf0e872d00745b858ddac9d2", size = 4424113 },
|
|
169
|
+
{ url = "https://files.pythonhosted.org/packages/0d/40/e2b9177dbed6f3fcbbf1942e1acea2fd15b17007204b79d675540dd053af/cryptography-45.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f169469d04a23282de9d0be349499cb6683b6ff1b68901210faacac9b0c24b7d", size = 4189696 },
|
|
170
|
+
{ url = "https://files.pythonhosted.org/packages/70/ae/ec29c79f481e1767c2ff916424ba36f3cf7774de93bbd60428a3c52d1357/cryptography-45.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9cfd1399064b13043082c660ddd97a0358e41c8b0dc7b77c1243e013d305c344", size = 3881498 },
|
|
171
|
+
{ url = "https://files.pythonhosted.org/packages/5f/4a/72937090e5637a232b2f73801c9361cd08404a2d4e620ca4ec58c7ea4b70/cryptography-45.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:18f8084b7ca3ce1b8d38bdfe33c48116edf9a08b4d056ef4a96dceaa36d8d965", size = 4451678 },
|
|
172
|
+
{ url = "https://files.pythonhosted.org/packages/d3/fa/1377fced81fd67a4a27514248261bb0d45c3c1e02169411fe231583088c8/cryptography-45.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2cb03a944a1a412724d15a7c051d50e63a868031f26b6a312f2016965b661942", size = 4192296 },
|
|
173
|
+
{ url = "https://files.pythonhosted.org/packages/d1/cf/b6fe837c83a08b9df81e63299d75fc5b3c6d82cf24b3e1e0e331050e9e5c/cryptography-45.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a9727a21957d3327cf6b7eb5ffc9e4b663909a25fea158e3fcbc49d4cdd7881b", size = 4451749 },
|
|
174
|
+
{ url = "https://files.pythonhosted.org/packages/af/d8/5a655675cc635c7190bfc8cffb84bcdc44fc62ce945ad1d844adaa884252/cryptography-45.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ddb8d01aa900b741d6b7cc585a97aff787175f160ab975e21f880e89d810781a", size = 4317601 },
|
|
175
|
+
{ url = "https://files.pythonhosted.org/packages/b9/d4/75d2375a20d80aa262a8adee77bf56950e9292929e394b9fae2481803f11/cryptography-45.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:c0c000c1a09f069632d8a9eb3b610ac029fcc682f1d69b758e625d6ee713f4ed", size = 4560535 },
|
|
176
|
+
{ url = "https://files.pythonhosted.org/packages/ac/7b/00e18d24f08bc642e4018e0066a6f872d85c744e3265910c3beabb1f4d73/cryptography-45.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:965611880c3fa8e504b7458484c0697e00ae6e937279cd6734fdaa2bc954dc49", size = 4135515 },
|
|
177
|
+
{ url = "https://files.pythonhosted.org/packages/29/9f/ea7ad5239c33c36f0e2cbdf631a0e3b7633466e87e55923f5b5ea1b0b92d/cryptography-45.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d891942592789fa0ab71b502550bbadb12f540d7413d7d7c4cef4b02af0f5bc6", size = 4378133 },
|
|
178
|
+
{ url = "https://files.pythonhosted.org/packages/47/f8/b4e29d87fbc4d2cf46b36e01fcb98305bf76699f34de6b877cddd8bc3a64/cryptography-45.0.2-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b19f4b28dd2ef2e6d600307fee656c00825a2980c4356a7080bd758d633c3a6f", size = 4136787 },
|
|
179
|
+
{ url = "https://files.pythonhosted.org/packages/dc/7c/ac19bbf24d261667a67aac712d8aa3bb740f94bc2391f06ccc90e783f3ff/cryptography-45.0.2-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:7c73968fbb7698a4c5d6160859db560d3aac160edde89c751edd5a8bc6560c88", size = 4377741 },
|
|
180
|
+
{ url = "https://files.pythonhosted.org/packages/8a/18/57bc98fa5d93e74c2c2b16a3c5383f7ec218f957aa44559c0008a46c3629/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc7693573f16535428183de8fd27f0ca1ca37a51baa0b41dc5ed7b3d68fe80e2", size = 4143347 },
|
|
181
|
+
{ url = "https://files.pythonhosted.org/packages/84/6f/d015e7e7bd7f3a6c538973005de5a780d93b68138c2d88c804422cf46b1c/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:614bca7c6ed0d8ad1dce683a6289afae1f880675b4090878a0136c3da16bc693", size = 4387414 },
|
|
182
|
+
{ url = "https://files.pythonhosted.org/packages/de/9e/fa5ec89cce7e4b86e430438da4d66b79113bdf321d0a00167d34b61daf19/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:4142e20c29224cec63e9e32eb1e6014fb285fe39b7be66b3564ca978a3a8afe9", size = 4145849 },
|
|
183
|
+
{ url = "https://files.pythonhosted.org/packages/7c/09/5887d4fcc6f9c6fb19920789d094c4e25c2f604cc1b10b7e69d6f56187fe/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:9a900036b42f7324df7c7ad9569eb92ba0b613cf699160dd9c2154b24fd02f8e", size = 4387449 },
|
|
160
184
|
]
|
|
161
185
|
|
|
162
186
|
[[package]]
|
|
@@ -168,6 +192,55 @@ wheels = [
|
|
|
168
192
|
{ url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408 },
|
|
169
193
|
]
|
|
170
194
|
|
|
195
|
+
[[package]]
|
|
196
|
+
name = "exceptiongroup"
|
|
197
|
+
version = "1.3.0"
|
|
198
|
+
source = { registry = "https://pypi.org/simple" }
|
|
199
|
+
dependencies = [
|
|
200
|
+
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
|
201
|
+
]
|
|
202
|
+
sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749 }
|
|
203
|
+
wheels = [
|
|
204
|
+
{ url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674 },
|
|
205
|
+
]
|
|
206
|
+
|
|
207
|
+
[[package]]
|
|
208
|
+
name = "h11"
|
|
209
|
+
version = "0.16.0"
|
|
210
|
+
source = { registry = "https://pypi.org/simple" }
|
|
211
|
+
sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 }
|
|
212
|
+
wheels = [
|
|
213
|
+
{ url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 },
|
|
214
|
+
]
|
|
215
|
+
|
|
216
|
+
[[package]]
|
|
217
|
+
name = "httpcore"
|
|
218
|
+
version = "1.0.9"
|
|
219
|
+
source = { registry = "https://pypi.org/simple" }
|
|
220
|
+
dependencies = [
|
|
221
|
+
{ name = "certifi" },
|
|
222
|
+
{ name = "h11" },
|
|
223
|
+
]
|
|
224
|
+
sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 }
|
|
225
|
+
wheels = [
|
|
226
|
+
{ url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 },
|
|
227
|
+
]
|
|
228
|
+
|
|
229
|
+
[[package]]
|
|
230
|
+
name = "httpx"
|
|
231
|
+
version = "0.28.1"
|
|
232
|
+
source = { registry = "https://pypi.org/simple" }
|
|
233
|
+
dependencies = [
|
|
234
|
+
{ name = "anyio" },
|
|
235
|
+
{ name = "certifi" },
|
|
236
|
+
{ name = "httpcore" },
|
|
237
|
+
{ name = "idna" },
|
|
238
|
+
]
|
|
239
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 }
|
|
240
|
+
wheels = [
|
|
241
|
+
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 },
|
|
242
|
+
]
|
|
243
|
+
|
|
171
244
|
[[package]]
|
|
172
245
|
name = "id"
|
|
173
246
|
version = "1.5.0"
|
|
@@ -201,6 +274,15 @@ wheels = [
|
|
|
201
274
|
{ url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 },
|
|
202
275
|
]
|
|
203
276
|
|
|
277
|
+
[[package]]
|
|
278
|
+
name = "iniconfig"
|
|
279
|
+
version = "2.1.0"
|
|
280
|
+
source = { registry = "https://pypi.org/simple" }
|
|
281
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 }
|
|
282
|
+
wheels = [
|
|
283
|
+
{ url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 },
|
|
284
|
+
]
|
|
285
|
+
|
|
204
286
|
[[package]]
|
|
205
287
|
name = "jaraco-classes"
|
|
206
288
|
version = "3.4.0"
|
|
@@ -334,6 +416,15 @@ wheels = [
|
|
|
334
416
|
{ url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 },
|
|
335
417
|
]
|
|
336
418
|
|
|
419
|
+
[[package]]
|
|
420
|
+
name = "pluggy"
|
|
421
|
+
version = "1.6.0"
|
|
422
|
+
source = { registry = "https://pypi.org/simple" }
|
|
423
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 }
|
|
424
|
+
wheels = [
|
|
425
|
+
{ url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 },
|
|
426
|
+
]
|
|
427
|
+
|
|
337
428
|
[[package]]
|
|
338
429
|
name = "pycparser"
|
|
339
430
|
version = "2.22"
|
|
@@ -352,6 +443,44 @@ wheels = [
|
|
|
352
443
|
{ url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 },
|
|
353
444
|
]
|
|
354
445
|
|
|
446
|
+
[[package]]
|
|
447
|
+
name = "pytest"
|
|
448
|
+
version = "8.3.5"
|
|
449
|
+
source = { registry = "https://pypi.org/simple" }
|
|
450
|
+
dependencies = [
|
|
451
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
452
|
+
{ name = "exceptiongroup", marker = "python_full_version < '3.11'" },
|
|
453
|
+
{ name = "iniconfig" },
|
|
454
|
+
{ name = "packaging" },
|
|
455
|
+
{ name = "pluggy" },
|
|
456
|
+
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
|
457
|
+
]
|
|
458
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 }
|
|
459
|
+
wheels = [
|
|
460
|
+
{ url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 },
|
|
461
|
+
]
|
|
462
|
+
|
|
463
|
+
[[package]]
|
|
464
|
+
name = "pytest-asyncio"
|
|
465
|
+
version = "0.26.0"
|
|
466
|
+
source = { registry = "https://pypi.org/simple" }
|
|
467
|
+
dependencies = [
|
|
468
|
+
{ name = "pytest" },
|
|
469
|
+
]
|
|
470
|
+
sdist = { url = "https://files.pythonhosted.org/packages/8e/c4/453c52c659521066969523e87d85d54139bbd17b78f09532fb8eb8cdb58e/pytest_asyncio-0.26.0.tar.gz", hash = "sha256:c4df2a697648241ff39e7f0e4a73050b03f123f760673956cf0d72a4990e312f", size = 54156 }
|
|
471
|
+
wheels = [
|
|
472
|
+
{ url = "https://files.pythonhosted.org/packages/20/7f/338843f449ace853647ace35870874f69a764d251872ed1b4de9f234822c/pytest_asyncio-0.26.0-py3-none-any.whl", hash = "sha256:7b51ed894f4fbea1340262bdae5135797ebbe21d8638978e35d31c6d19f72fb0", size = 19694 },
|
|
473
|
+
]
|
|
474
|
+
|
|
475
|
+
[[package]]
|
|
476
|
+
name = "python-dotenv"
|
|
477
|
+
version = "1.1.0"
|
|
478
|
+
source = { registry = "https://pypi.org/simple" }
|
|
479
|
+
sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 }
|
|
480
|
+
wheels = [
|
|
481
|
+
{ url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 },
|
|
482
|
+
]
|
|
483
|
+
|
|
355
484
|
[[package]]
|
|
356
485
|
name = "pywin32-ctypes"
|
|
357
486
|
version = "0.2.3"
|
|
@@ -438,6 +567,54 @@ wheels = [
|
|
|
438
567
|
{ url = "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", size = 15221 },
|
|
439
568
|
]
|
|
440
569
|
|
|
570
|
+
[[package]]
|
|
571
|
+
name = "sniffio"
|
|
572
|
+
version = "1.3.1"
|
|
573
|
+
source = { registry = "https://pypi.org/simple" }
|
|
574
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
|
575
|
+
wheels = [
|
|
576
|
+
{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 },
|
|
577
|
+
]
|
|
578
|
+
|
|
579
|
+
[[package]]
|
|
580
|
+
name = "tomli"
|
|
581
|
+
version = "2.2.1"
|
|
582
|
+
source = { registry = "https://pypi.org/simple" }
|
|
583
|
+
sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 }
|
|
584
|
+
wheels = [
|
|
585
|
+
{ url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 },
|
|
586
|
+
{ url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 },
|
|
587
|
+
{ url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 },
|
|
588
|
+
{ url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 },
|
|
589
|
+
{ url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 },
|
|
590
|
+
{ url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 },
|
|
591
|
+
{ url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 },
|
|
592
|
+
{ url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 },
|
|
593
|
+
{ url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 },
|
|
594
|
+
{ url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 },
|
|
595
|
+
{ url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 },
|
|
596
|
+
{ url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 },
|
|
597
|
+
{ url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 },
|
|
598
|
+
{ url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 },
|
|
599
|
+
{ url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 },
|
|
600
|
+
{ url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 },
|
|
601
|
+
{ url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 },
|
|
602
|
+
{ url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 },
|
|
603
|
+
{ url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 },
|
|
604
|
+
{ url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 },
|
|
605
|
+
{ url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 },
|
|
606
|
+
{ url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 },
|
|
607
|
+
{ url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 },
|
|
608
|
+
{ url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 },
|
|
609
|
+
{ url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 },
|
|
610
|
+
{ url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 },
|
|
611
|
+
{ url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 },
|
|
612
|
+
{ url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 },
|
|
613
|
+
{ url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 },
|
|
614
|
+
{ url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 },
|
|
615
|
+
{ url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 },
|
|
616
|
+
]
|
|
617
|
+
|
|
441
618
|
[[package]]
|
|
442
619
|
name = "twine"
|
|
443
620
|
version = "6.1.0"
|
|
@@ -468,29 +645,37 @@ wheels = [
|
|
|
468
645
|
]
|
|
469
646
|
|
|
470
647
|
[[package]]
|
|
471
|
-
name = "
|
|
472
|
-
version = "
|
|
473
|
-
source = { registry = "https://pypi.org/simple" }
|
|
474
|
-
sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 }
|
|
475
|
-
wheels = [
|
|
476
|
-
{ url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 },
|
|
477
|
-
]
|
|
478
|
-
|
|
479
|
-
[[package]]
|
|
480
|
-
name = "waypoint"
|
|
481
|
-
version = "0.1.0"
|
|
648
|
+
name = "tzafon"
|
|
649
|
+
version = "0.1.2"
|
|
482
650
|
source = { editable = "." }
|
|
483
651
|
dependencies = [
|
|
652
|
+
{ name = "httpx" },
|
|
653
|
+
{ name = "pytest" },
|
|
654
|
+
{ name = "pytest-asyncio" },
|
|
655
|
+
{ name = "python-dotenv" },
|
|
484
656
|
{ name = "twine" },
|
|
485
657
|
{ name = "websockets" },
|
|
486
658
|
]
|
|
487
659
|
|
|
488
660
|
[package.metadata]
|
|
489
661
|
requires-dist = [
|
|
662
|
+
{ name = "httpx", specifier = ">=0.26.0" },
|
|
663
|
+
{ name = "pytest", specifier = ">=8.3.4" },
|
|
664
|
+
{ name = "pytest-asyncio", specifier = ">=0.24.0" },
|
|
665
|
+
{ name = "python-dotenv", specifier = ">=1.1.0" },
|
|
490
666
|
{ name = "twine", specifier = ">=6.1.0" },
|
|
491
667
|
{ name = "websockets", specifier = ">=15.0.1" },
|
|
492
668
|
]
|
|
493
669
|
|
|
670
|
+
[[package]]
|
|
671
|
+
name = "urllib3"
|
|
672
|
+
version = "2.4.0"
|
|
673
|
+
source = { registry = "https://pypi.org/simple" }
|
|
674
|
+
sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 }
|
|
675
|
+
wheels = [
|
|
676
|
+
{ url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 },
|
|
677
|
+
]
|
|
678
|
+
|
|
494
679
|
[[package]]
|
|
495
680
|
name = "websockets"
|
|
496
681
|
version = "15.0.1"
|
tzafon-0.1.1/.gitignore
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
./gke-cluster-structure.md
|
|
2
|
-
./health.txt
|
|
3
|
-
|
|
4
|
-
health.txt
|
|
5
|
-
gke-cluster-structure.md
|
|
6
|
-
|
|
7
|
-
.ruff_cache
|
|
8
|
-
|
|
9
|
-
secrets/prod.yaml
|
|
10
|
-
.DS_Store
|
|
11
|
-
|
|
12
|
-
node_modules/
|
|
13
|
-
.env
|
|
14
|
-
# all .venv and venv and .env
|
|
15
|
-
.venv/
|
|
16
|
-
venv/
|
|
17
|
-
.env
|
|
18
|
-
|
|
19
|
-
__pycache__/
|
|
20
|
-
target/
|
|
21
|
-
*.egg-info/
|
|
22
|
-
dist/
|
|
23
|
-
apps/v2/browser-agent/src/safer_test.py.terraform/
|
|
24
|
-
*.tfstate
|
|
25
|
-
*.tfstate.backup
|
|
26
|
-
*.tfplan
|
|
27
|
-
|
|
28
|
-
# Local .terraform directories
|
|
29
|
-
**/.terraform/*
|
|
30
|
-
|
|
31
|
-
# .tfstate files
|
|
32
|
-
*.tfstate
|
|
33
|
-
*.tfstate.*
|
|
34
|
-
|
|
35
|
-
# Crash log files
|
|
36
|
-
crash.log
|
|
37
|
-
crash.*.log
|
|
38
|
-
|
|
39
|
-
# Exclude all .tfvars files, which are likely to contain sensitive data
|
|
40
|
-
!terraform/environments/prod/terraform.tfvars
|
|
41
|
-
!terraform/environments/staging/terraform.tfvars
|
|
42
|
-
|
|
43
|
-
# Ignore override files
|
|
44
|
-
override.tf
|
|
45
|
-
override.tf.json
|
|
46
|
-
*_override.tf
|
|
47
|
-
*_override.tf.json
|
|
48
|
-
|
|
49
|
-
# Ignore CLI configuration files
|
|
50
|
-
.terraformrc
|
|
51
|
-
terraform.rc
|
|
52
|
-
|
|
53
|
-
# Ignore plan output files
|
|
54
|
-
*tfplan*
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|