waldiez 0.5.10__py3-none-any.whl → 0.6.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 waldiez might be problematic. Click here for more details.
- waldiez/_version.py +1 -1
- waldiez/cli.py +1 -0
- waldiez/exporting/agent/exporter.py +6 -6
- waldiez/exporting/agent/extras/group_manager_agent_extas.py +6 -1
- waldiez/exporting/agent/extras/handoffs/after_work.py +1 -0
- waldiez/exporting/agent/extras/handoffs/available.py +1 -0
- waldiez/exporting/agent/extras/handoffs/handoff.py +1 -0
- waldiez/exporting/agent/extras/handoffs/target.py +1 -0
- waldiez/exporting/agent/termination.py +1 -0
- waldiez/exporting/core/constants.py +3 -1
- waldiez/exporting/core/extras/serializer.py +12 -10
- waldiez/exporting/core/types.py +1 -0
- waldiez/exporting/core/utils/llm_config.py +2 -2
- waldiez/exporting/flow/execution_generator.py +1 -0
- waldiez/exporting/flow/utils/common.py +1 -1
- waldiez/exporting/flow/utils/importing.py +1 -1
- waldiez/exporting/flow/utils/logging.py +3 -75
- waldiez/io/__init__.py +3 -1
- waldiez/io/_ws.py +2 -0
- waldiez/io/structured.py +81 -28
- waldiez/io/utils.py +16 -10
- waldiez/io/ws.py +2 -2
- waldiez/models/agents/agent/agent.py +2 -1
- waldiez/models/chat/chat.py +1 -0
- waldiez/models/chat/chat_data.py +0 -2
- waldiez/models/common/base.py +2 -0
- waldiez/models/common/handoff.py +2 -0
- waldiez/models/common/method_utils.py +2 -0
- waldiez/models/model/_llm.py +3 -0
- waldiez/models/tool/predefined/_email.py +3 -0
- waldiez/models/tool/predefined/_perplexity.py +1 -1
- waldiez/models/tool/predefined/_searxng.py +1 -1
- waldiez/models/tool/predefined/_wikipedia.py +1 -1
- waldiez/running/base_runner.py +81 -20
- waldiez/running/post_run.py +6 -0
- waldiez/running/pre_run.py +167 -45
- waldiez/running/standard_runner.py +5 -5
- waldiez/running/step_by_step/breakpoints_mixin.py +368 -44
- waldiez/running/step_by_step/command_handler.py +151 -0
- waldiez/running/step_by_step/events_processor.py +199 -0
- waldiez/running/step_by_step/step_by_step_models.py +358 -41
- waldiez/running/step_by_step/step_by_step_runner.py +358 -353
- waldiez/running/subprocess_runner/__base__.py +4 -7
- waldiez/running/subprocess_runner/_async_runner.py +1 -1
- waldiez/running/subprocess_runner/_sync_runner.py +5 -4
- waldiez/running/subprocess_runner/runner.py +9 -0
- waldiez/running/utils.py +116 -2
- waldiez/ws/__init__.py +8 -7
- waldiez/ws/_file_handler.py +0 -2
- waldiez/ws/_mock.py +74 -0
- waldiez/ws/cli.py +27 -3
- waldiez/ws/client_manager.py +45 -29
- waldiez/ws/models.py +18 -1
- waldiez/ws/reloader.py +23 -2
- waldiez/ws/server.py +47 -8
- waldiez/ws/utils.py +29 -4
- {waldiez-0.5.10.dist-info → waldiez-0.6.0.dist-info}/METADATA +53 -44
- {waldiez-0.5.10.dist-info → waldiez-0.6.0.dist-info}/RECORD +62 -59
- {waldiez-0.5.10.dist-info → waldiez-0.6.0.dist-info}/WHEEL +0 -0
- {waldiez-0.5.10.dist-info → waldiez-0.6.0.dist-info}/entry_points.txt +0 -0
- {waldiez-0.5.10.dist-info → waldiez-0.6.0.dist-info}/licenses/LICENSE +0 -0
- {waldiez-0.5.10.dist-info → waldiez-0.6.0.dist-info}/licenses/NOTICE.md +0 -0
waldiez/ws/server.py
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0.
|
|
2
2
|
# Copyright (c) 2024 - 2025 Waldiez and contributors.
|
|
3
|
+
# pyright: reportMissingImports=false,reportUnknownVariableType=false
|
|
4
|
+
# pyright: reportPossiblyUnboundVariable=false,reportUnknownMemberType=false
|
|
5
|
+
# pyright: reportUnknownParameterType=false,reportUnknownArgumentType=false
|
|
6
|
+
# pyright: reportAttributeAccessIssue=false
|
|
7
|
+
# pylint: disable=import-error,line-too-long
|
|
8
|
+
# flake8: noqa: E501
|
|
3
9
|
"""WebSocket server implementation for Waldiez."""
|
|
4
10
|
|
|
5
11
|
import asyncio
|
|
@@ -12,16 +18,42 @@ import uuid
|
|
|
12
18
|
from pathlib import Path
|
|
13
19
|
from typing import Any, Sequence
|
|
14
20
|
|
|
15
|
-
import websockets
|
|
16
|
-
from websockets.exceptions import ConnectionClosed, WebSocketException
|
|
17
|
-
|
|
18
21
|
from .client_manager import ClientManager
|
|
19
22
|
from .errors import ErrorHandler, MessageParsingError, ServerOverloadError
|
|
20
23
|
from .models import ConnectionNotification
|
|
21
|
-
from .reloader import create_file_watcher
|
|
22
24
|
from .session_manager import SessionManager
|
|
23
25
|
from .utils import get_available_port, is_port_available
|
|
24
26
|
|
|
27
|
+
HAS_WATCHDOG = False
|
|
28
|
+
try:
|
|
29
|
+
from .reloader import create_file_watcher
|
|
30
|
+
|
|
31
|
+
HAS_WATCHDOG = True # pyright: ignore
|
|
32
|
+
except ImportError:
|
|
33
|
+
# pylint: disable=unused-argument,missing-param-doc,missing-return-doc
|
|
34
|
+
# noinspection PyUnusedLocal
|
|
35
|
+
def create_file_watcher(*args: Any, **kwargs: Any) -> Any: # type: ignore
|
|
36
|
+
"""No file watcher available."""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
HAS_WEBSOCKETS = False
|
|
40
|
+
try:
|
|
41
|
+
import websockets # type: ignore[unused-ignore, unused-import, import-not-found, import-untyped]
|
|
42
|
+
from websockets.exceptions import ( # type: ignore[unused-ignore, unused-import, import-not-found, import-untyped]
|
|
43
|
+
ConnectionClosed,
|
|
44
|
+
WebSocketException,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
HAS_WEBSOCKETS = True # pyright: ignore
|
|
48
|
+
except ImportError:
|
|
49
|
+
from ._mock import ( # type: ignore[no-redef, unused-ignore, unused-import, import-not-found, import-untyped]
|
|
50
|
+
websockets,
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
ConnectionClosed = websockets.ConnectionClosed # type: ignore[no-redef,unused-ignore,unused-import,import-not-found,import-untyped,misc]
|
|
54
|
+
WebSocketException = websockets.WebSocketException # type: ignore[no-redef,unused-ignore,unused-import,import-not-found,import-untyped,misc]
|
|
55
|
+
|
|
56
|
+
|
|
25
57
|
logger = logging.getLogger(__name__)
|
|
26
58
|
|
|
27
59
|
CWD = Path.cwd()
|
|
@@ -35,6 +67,7 @@ class WaldiezWsServer:
|
|
|
35
67
|
self,
|
|
36
68
|
host: str = "localhost",
|
|
37
69
|
port: int = 8765,
|
|
70
|
+
auto_reload: bool = False,
|
|
38
71
|
workspace_dir: Path = CWD,
|
|
39
72
|
max_clients: int = 1,
|
|
40
73
|
allowed_origins: Sequence[re.Pattern[str]] | None = None,
|
|
@@ -48,11 +81,13 @@ class WaldiezWsServer:
|
|
|
48
81
|
Server host address
|
|
49
82
|
port : int
|
|
50
83
|
Server port
|
|
84
|
+
auto_reload : bool
|
|
85
|
+
Enable automatic reloading of the server on code changes
|
|
51
86
|
workspace_dir : Path
|
|
52
87
|
Path to the workspace directory
|
|
53
88
|
max_clients : int
|
|
54
89
|
Maximum number of concurrent clients (default: 1)
|
|
55
|
-
allowed_origins :
|
|
90
|
+
allowed_origins : Sequence[re.Pattern[str]] | None
|
|
56
91
|
List of allowed origins for CORS (default: None)
|
|
57
92
|
ping_interval : float | None
|
|
58
93
|
Ping interval in seconds
|
|
@@ -69,6 +104,7 @@ class WaldiezWsServer:
|
|
|
69
104
|
"""
|
|
70
105
|
self.host = host
|
|
71
106
|
self.port = port
|
|
107
|
+
self.auto_reload = auto_reload and HAS_WATCHDOG
|
|
72
108
|
self.workspace_dir = workspace_dir
|
|
73
109
|
self.max_clients = max_clients
|
|
74
110
|
self.allowed_origins = allowed_origins
|
|
@@ -148,7 +184,8 @@ class WaldiezWsServer:
|
|
|
148
184
|
)
|
|
149
185
|
|
|
150
186
|
# Message handling loop
|
|
151
|
-
|
|
187
|
+
# noinspection PyTypeChecker
|
|
188
|
+
async for raw_message in websocket: # pyright: ignore
|
|
152
189
|
try:
|
|
153
190
|
# Parse message
|
|
154
191
|
if isinstance(raw_message, bytes):
|
|
@@ -230,7 +267,7 @@ class WaldiezWsServer:
|
|
|
230
267
|
|
|
231
268
|
await self.session_manager.start()
|
|
232
269
|
# Check port availability
|
|
233
|
-
if not is_port_available(self.port):
|
|
270
|
+
if not self.auto_reload and not is_port_available(self.port):
|
|
234
271
|
logger.warning("Port %d is not available", self.port)
|
|
235
272
|
self.port = get_available_port()
|
|
236
273
|
logger.info("Using port %d", self.port)
|
|
@@ -239,6 +276,7 @@ class WaldiezWsServer:
|
|
|
239
276
|
# pylint: disable=too-many-try-statements,broad-exception-caught
|
|
240
277
|
try:
|
|
241
278
|
# Create server
|
|
279
|
+
# noinspection PyTypeChecker
|
|
242
280
|
self.server = await websockets.serve(
|
|
243
281
|
self._handle_client,
|
|
244
282
|
self.host,
|
|
@@ -401,6 +439,7 @@ async def run_server(
|
|
|
401
439
|
server = WaldiezWsServer(
|
|
402
440
|
host=host,
|
|
403
441
|
port=port,
|
|
442
|
+
auto_reload=auto_reload,
|
|
404
443
|
workspace_dir=workspace_dir,
|
|
405
444
|
**server_kwargs,
|
|
406
445
|
)
|
|
@@ -420,7 +459,7 @@ async def run_server(
|
|
|
420
459
|
|
|
421
460
|
# Set up auto-reload if requested
|
|
422
461
|
file_watcher = None
|
|
423
|
-
if auto_reload:
|
|
462
|
+
if auto_reload and HAS_WATCHDOG:
|
|
424
463
|
# pylint: disable=import-outside-toplevel,too-many-try-statements
|
|
425
464
|
try:
|
|
426
465
|
# Determine watch directories
|
waldiez/ws/utils.py
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0.
|
|
2
2
|
# Copyright (c) 2024 - 2025 Waldiez and contributors.
|
|
3
|
+
# pylint: disable=import-error,line-too-long
|
|
4
|
+
# pyright: reportUnknownMemberType=false,reportUnknownVariableType=false
|
|
5
|
+
# pyright: reportUnknownArgumentType=false,reportAttributeAccessIssue=false
|
|
6
|
+
# flake8: noqa: E501
|
|
3
7
|
"""Utilities for WebSocket server management."""
|
|
4
8
|
|
|
5
9
|
import asyncio
|
|
@@ -11,7 +15,11 @@ from contextlib import closing
|
|
|
11
15
|
from dataclasses import asdict, dataclass
|
|
12
16
|
from typing import TYPE_CHECKING, Any
|
|
13
17
|
|
|
14
|
-
|
|
18
|
+
try:
|
|
19
|
+
import websockets # type: ignore[unused-ignore, unused-import, import-not-found, import-untyped] # noqa
|
|
20
|
+
except ImportError: # pragma: no cover
|
|
21
|
+
from ._mock import websockets # type: ignore[no-redef,unused-ignore]
|
|
22
|
+
|
|
15
23
|
|
|
16
24
|
if TYPE_CHECKING:
|
|
17
25
|
from .server import WaldiezWsServer
|
|
@@ -329,7 +337,10 @@ async def test_server_connection(
|
|
|
329
337
|
try:
|
|
330
338
|
uri = f"ws://{host}:{port}"
|
|
331
339
|
|
|
332
|
-
async with websockets.connect(
|
|
340
|
+
async with websockets.connect(
|
|
341
|
+
uri,
|
|
342
|
+
ping_interval=None,
|
|
343
|
+
) as websocket:
|
|
333
344
|
# Send ping message
|
|
334
345
|
ping_msg = {"action": "ping"}
|
|
335
346
|
await websocket.send(json.dumps(ping_msg))
|
|
@@ -350,6 +361,7 @@ async def test_server_connection(
|
|
|
350
361
|
return result
|
|
351
362
|
|
|
352
363
|
|
|
364
|
+
# noinspection PyBroadException
|
|
353
365
|
def is_port_available(port: int) -> bool:
|
|
354
366
|
"""Check if the port is available.
|
|
355
367
|
|
|
@@ -363,13 +375,26 @@ def is_port_available(port: int) -> bool:
|
|
|
363
375
|
bool
|
|
364
376
|
True if port is available
|
|
365
377
|
"""
|
|
378
|
+
# Check IPv4
|
|
366
379
|
try:
|
|
367
380
|
with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock:
|
|
368
381
|
sock.bind(("", port))
|
|
369
|
-
|
|
370
|
-
except OSError:
|
|
382
|
+
except BaseException: # pylint: disable=broad-exception-caught
|
|
371
383
|
return False
|
|
372
384
|
|
|
385
|
+
# Check IPv6
|
|
386
|
+
try: # pragma: no cover
|
|
387
|
+
with closing(
|
|
388
|
+
socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
|
|
389
|
+
) as sock:
|
|
390
|
+
# Disable dual-stack to only check IPv6
|
|
391
|
+
sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 1)
|
|
392
|
+
sock.bind(("", port))
|
|
393
|
+
except BaseException: # pylint: disable=broad-exception-caught
|
|
394
|
+
return False
|
|
395
|
+
|
|
396
|
+
return True
|
|
397
|
+
|
|
373
398
|
|
|
374
399
|
def get_available_port() -> int:
|
|
375
400
|
"""Get an available port.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: waldiez
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Dynamic: Keywords
|
|
5
5
|
Summary: Make AG2 Agents Collaborate: Drag, Drop, and Orchestrate with Waldiez.
|
|
6
6
|
Project-URL: Homepage, https://waldiez.io
|
|
7
7
|
Project-URL: Bug Tracker, https://github.com/waldiez/waldiez/issues
|
|
8
8
|
Project-URL: Repository, https://github.com/waldiez/waldiez.git
|
|
9
|
-
Author-email: Panagiotis Kasnesis <pkasnesis@waldiez.io>, Lazaros Toumanidis <laztoum@waldiez.io>,
|
|
9
|
+
Author-email: Panagiotis Kasnesis <pkasnesis@waldiez.io>, Lazaros Toumanidis <laztoum@waldiez.io>, Christos Chatzigeorgiou <chrihatz@waldiez.io>
|
|
10
10
|
License-File: LICENSE
|
|
11
11
|
License-File: NOTICE.md
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -36,18 +36,16 @@ Requires-Dist: graphviz<=0.21
|
|
|
36
36
|
Requires-Dist: httpx<1
|
|
37
37
|
Requires-Dist: jupytext
|
|
38
38
|
Requires-Dist: nest-asyncio==1.6.0
|
|
39
|
-
Requires-Dist: numpy<=2.3.
|
|
39
|
+
Requires-Dist: numpy<=2.3.3
|
|
40
40
|
Requires-Dist: pandas>=2
|
|
41
|
-
Requires-Dist: parso==0.8.
|
|
41
|
+
Requires-Dist: parso==0.8.5
|
|
42
42
|
Requires-Dist: pillow
|
|
43
43
|
Requires-Dist: pip>=25.1.1
|
|
44
|
-
Requires-Dist: platformdirs==4.
|
|
44
|
+
Requires-Dist: platformdirs==4.4.0
|
|
45
45
|
Requires-Dist: psutil==7.0.0
|
|
46
46
|
Requires-Dist: pydantic<3,>=2.10.2
|
|
47
|
-
Requires-Dist: rpds-py==0.27.
|
|
47
|
+
Requires-Dist: rpds-py==0.27.1
|
|
48
48
|
Requires-Dist: typer<1,>=0.9.0
|
|
49
|
-
Requires-Dist: watchdog==6.0.0
|
|
50
|
-
Requires-Dist: websockets==15.0.1
|
|
51
49
|
Provides-Extra: ag2-extras
|
|
52
50
|
Requires-Dist: ag2[anthropic]==0.9.9; extra == 'ag2-extras'
|
|
53
51
|
Requires-Dist: ag2[autobuild]==0.9.9; extra == 'ag2-extras'
|
|
@@ -92,12 +90,13 @@ Requires-Dist: llama-index-vector-stores-chroma; extra == 'ag2-extras'
|
|
|
92
90
|
Requires-Dist: llama-index-vector-stores-mongodb; extra == 'ag2-extras'
|
|
93
91
|
Requires-Dist: llama-index<1,>=0.12; extra == 'ag2-extras'
|
|
94
92
|
Requires-Dist: pgvector>=0.4.0; extra == 'ag2-extras'
|
|
95
|
-
Requires-Dist: psycopg>=3.2.
|
|
96
|
-
Requires-Dist: psycopg>=3.2.
|
|
97
|
-
Requires-Dist: psycopg>=3.2.
|
|
98
|
-
Requires-Dist: psycopg>=3.2.
|
|
99
|
-
Requires-Dist: psycopg>=3.2.
|
|
100
|
-
Requires-Dist: psycopg[binary]>=3.2.
|
|
93
|
+
Requires-Dist: psycopg>=3.2.9; (sys_platform == 'linux') and extra == 'ag2-extras'
|
|
94
|
+
Requires-Dist: psycopg>=3.2.9; (sys_platform == 'win32' and platform_machine == 'AARCH64') and extra == 'ag2-extras'
|
|
95
|
+
Requires-Dist: psycopg>=3.2.9; (sys_platform == 'win32' and platform_machine == 'ARM64') and extra == 'ag2-extras'
|
|
96
|
+
Requires-Dist: psycopg>=3.2.9; (sys_platform == 'win32' and platform_machine == 'aarch64') and extra == 'ag2-extras'
|
|
97
|
+
Requires-Dist: psycopg>=3.2.9; (sys_platform == 'win32' and platform_machine == 'arm64') and extra == 'ag2-extras'
|
|
98
|
+
Requires-Dist: psycopg[binary]>=3.2.9; (sys_platform == 'darwin') and extra == 'ag2-extras'
|
|
99
|
+
Requires-Dist: psycopg[binary]>=3.2.9; (sys_platform == 'win32' and platform_machine != 'arm64' and platform_machine != 'ARM64' and platform_machine != 'aarch64' and platform_machine != 'AARCH64') and extra == 'ag2-extras'
|
|
101
100
|
Requires-Dist: pydantic-ai>=0.0.21; extra == 'ag2-extras'
|
|
102
101
|
Requires-Dist: pymongo>=4.11; extra == 'ag2-extras'
|
|
103
102
|
Requires-Dist: qdrant-client[fastembed]; (sys_platform != 'win32') and extra == 'ag2-extras'
|
|
@@ -107,86 +106,96 @@ Requires-Dist: selenium<5,>=4.28.1; extra == 'ag2-extras'
|
|
|
107
106
|
Requires-Dist: webdriver-manager==4.0.2; extra == 'ag2-extras'
|
|
108
107
|
Provides-Extra: dev
|
|
109
108
|
Requires-Dist: ag2[redis]==0.9.9; extra == 'dev'
|
|
110
|
-
Requires-Dist: ag2[websockets]==0.9.9; extra == 'dev'
|
|
111
109
|
Requires-Dist: autoflake==2.3.1; extra == 'dev'
|
|
112
110
|
Requires-Dist: bandit==1.8.6; extra == 'dev'
|
|
113
111
|
Requires-Dist: black[jupyter]==25.1.0; extra == 'dev'
|
|
114
112
|
Requires-Dist: build==1.3.0; extra == 'dev'
|
|
115
|
-
Requires-Dist: fakeredis==2.31.
|
|
113
|
+
Requires-Dist: fakeredis==2.31.1; extra == 'dev'
|
|
116
114
|
Requires-Dist: fastjsonschema>=2.21.2; extra == 'dev'
|
|
117
115
|
Requires-Dist: flake8==7.3.0; extra == 'dev'
|
|
118
116
|
Requires-Dist: hatchling==1.27.0; extra == 'dev'
|
|
119
117
|
Requires-Dist: jsonschema==4.25.1; extra == 'dev'
|
|
120
|
-
Requires-Dist: jupyter-server==2.
|
|
121
|
-
Requires-Dist: jupyterlab==4.4.
|
|
118
|
+
Requires-Dist: jupyter-server==2.17.0; extra == 'dev'
|
|
119
|
+
Requires-Dist: jupyterlab==4.4.7; extra == 'dev'
|
|
122
120
|
Requires-Dist: mypy-extensions>=1.1.0; extra == 'dev'
|
|
123
|
-
Requires-Dist: mypy==1.
|
|
121
|
+
Requires-Dist: mypy==1.18.1; extra == 'dev'
|
|
124
122
|
Requires-Dist: nbclient>=0.10.2; extra == 'dev'
|
|
125
123
|
Requires-Dist: nbconvert>=7.16.6; extra == 'dev'
|
|
126
124
|
Requires-Dist: nbformat>=5.10.4; extra == 'dev'
|
|
127
125
|
Requires-Dist: nodeenv>=1.9.1; extra == 'dev'
|
|
128
126
|
Requires-Dist: notebook-shim>=0.2.4; extra == 'dev'
|
|
129
127
|
Requires-Dist: paho-mqtt<3.0,>=2.1.0; extra == 'dev'
|
|
130
|
-
Requires-Dist: pandas-stubs==2.3.
|
|
128
|
+
Requires-Dist: pandas-stubs==2.3.2.250827; extra == 'dev'
|
|
131
129
|
Requires-Dist: pre-commit==4.3.0; extra == 'dev'
|
|
132
130
|
Requires-Dist: pydocstyle==6.3.0; extra == 'dev'
|
|
133
131
|
Requires-Dist: pylint==3.3.8; extra == 'dev'
|
|
134
132
|
Requires-Dist: python-dotenv>=1.1.1; extra == 'dev'
|
|
135
|
-
Requires-Dist: ruff==0.
|
|
133
|
+
Requires-Dist: ruff==0.13.0; extra == 'dev'
|
|
136
134
|
Requires-Dist: toml==0.10.2; (python_version <= '3.10') and extra == 'dev'
|
|
137
|
-
Requires-Dist: types-aiofiles==24.1.0.
|
|
138
|
-
Requires-Dist: types-jsonschema==4.25.
|
|
139
|
-
Requires-Dist: types-psutil==7.0.0.
|
|
140
|
-
Requires-Dist: types-pyyaml==6.0.12.
|
|
135
|
+
Requires-Dist: types-aiofiles==24.1.0.20250822; extra == 'dev'
|
|
136
|
+
Requires-Dist: types-jsonschema==4.25.1.20250822; extra == 'dev'
|
|
137
|
+
Requires-Dist: types-psutil==7.0.0.20250822; extra == 'dev'
|
|
138
|
+
Requires-Dist: types-pyyaml==6.0.12.20250822; extra == 'dev'
|
|
141
139
|
Requires-Dist: types-redis==4.6.0.20241004; extra == 'dev'
|
|
142
|
-
Requires-Dist: types-requests==2.32.4.
|
|
140
|
+
Requires-Dist: types-requests==2.32.4.20250913; extra == 'dev'
|
|
143
141
|
Requires-Dist: types-toml==0.10.8.20240310; extra == 'dev'
|
|
144
|
-
Requires-Dist: watchdog
|
|
142
|
+
Requires-Dist: watchdog>=5.0.0; extra == 'dev'
|
|
143
|
+
Requires-Dist: websockets<16,>=14.0; extra == 'dev'
|
|
145
144
|
Requires-Dist: yamllint==1.37.1; extra == 'dev'
|
|
146
145
|
Provides-Extra: docs
|
|
147
146
|
Requires-Dist: markdown-callouts==0.4.0; extra == 'docs'
|
|
148
147
|
Requires-Dist: mdx-include==1.4.2; extra == 'docs'
|
|
149
148
|
Requires-Dist: mdx-truly-sane-lists==1.3; extra == 'docs'
|
|
150
|
-
Requires-Dist: mkdocs-autorefs==1.4.
|
|
151
|
-
Requires-Dist: mkdocs-awesome-nav==3.
|
|
149
|
+
Requires-Dist: mkdocs-autorefs==1.4.3; extra == 'docs'
|
|
150
|
+
Requires-Dist: mkdocs-awesome-nav==3.2.0; extra == 'docs'
|
|
152
151
|
Requires-Dist: mkdocs-jupyter==0.25.1; extra == 'docs'
|
|
153
152
|
Requires-Dist: mkdocs-macros-plugin==1.3.9; extra == 'docs'
|
|
154
|
-
Requires-Dist: mkdocs-material==9.6.
|
|
155
|
-
Requires-Dist: mkdocs-minify-html-plugin
|
|
153
|
+
Requires-Dist: mkdocs-material==9.6.19; extra == 'docs'
|
|
154
|
+
Requires-Dist: mkdocs-minify-html-plugin; (python_version >= '3.13' and sys_platform == 'win32' and platform_machine == 'AARCH64') and extra == 'docs'
|
|
155
|
+
Requires-Dist: mkdocs-minify-html-plugin; (python_version >= '3.13' and sys_platform == 'win32' and platform_machine == 'ARM64') and extra == 'docs'
|
|
156
|
+
Requires-Dist: mkdocs-minify-html-plugin; (python_version >= '3.13' and sys_platform == 'win32' and platform_machine == 'aarch64') and extra == 'docs'
|
|
157
|
+
Requires-Dist: mkdocs-minify-html-plugin; (python_version >= '3.13' and sys_platform == 'win32' and platform_machine == 'arm64') and extra == 'docs'
|
|
158
|
+
Requires-Dist: mkdocs-minify-html-plugin==0.3.4; (python_version < '3.13') and extra == 'docs'
|
|
159
|
+
Requires-Dist: mkdocs-minify-html-plugin==0.3.4; (python_version >= '3.13' and sys_platform != 'win32') and extra == 'docs'
|
|
160
|
+
Requires-Dist: mkdocs-minify-html-plugin==0.3.4; (python_version >= '3.13' and sys_platform == 'win32' and platform_machine != 'arm64' and platform_machine != 'aarch64' and platform_machine != 'ARM64' and platform_machine != 'AARCH64') and extra == 'docs'
|
|
156
161
|
Requires-Dist: mkdocs-open-in-new-tab==1.0.8; extra == 'docs'
|
|
157
162
|
Requires-Dist: mkdocs==1.6.1; extra == 'docs'
|
|
158
163
|
Requires-Dist: mkdocstrings-crystal==0.3.7; extra == 'docs'
|
|
159
|
-
Requires-Dist: mkdocstrings-python==1.
|
|
164
|
+
Requires-Dist: mkdocstrings-python==1.18.2; extra == 'docs'
|
|
160
165
|
Requires-Dist: mkdocstrings[crystal,python]==0.30.0; extra == 'docs'
|
|
161
166
|
Requires-Dist: natsort==8.4.0; extra == 'docs'
|
|
162
167
|
Provides-Extra: jupyter
|
|
163
168
|
Requires-Dist: ipywidgets==8.1.7; extra == 'jupyter'
|
|
164
|
-
Requires-Dist: jupyter-server==2.
|
|
165
|
-
Requires-Dist: jupyterlab==4.4.
|
|
166
|
-
Requires-Dist: waldiez-jupyter==0.
|
|
169
|
+
Requires-Dist: jupyter-server==2.17.0; extra == 'jupyter'
|
|
170
|
+
Requires-Dist: jupyterlab==4.4.7; extra == 'jupyter'
|
|
171
|
+
Requires-Dist: waldiez-jupyter==0.6.0; extra == 'jupyter'
|
|
167
172
|
Provides-Extra: mqtt
|
|
168
173
|
Requires-Dist: paho-mqtt<3.0,>=2.1.0; extra == 'mqtt'
|
|
169
174
|
Provides-Extra: redis
|
|
170
175
|
Requires-Dist: ag2[redis]==0.9.9; extra == 'redis'
|
|
176
|
+
Provides-Extra: reload
|
|
177
|
+
Requires-Dist: watchdog>=5.0.0; extra == 'reload'
|
|
171
178
|
Provides-Extra: runner
|
|
172
|
-
Requires-Dist: waldiez-runner==0.
|
|
179
|
+
Requires-Dist: waldiez-runner==0.6.0; (python_version >= '3.11') and extra == 'runner'
|
|
173
180
|
Provides-Extra: studio
|
|
174
|
-
Requires-Dist: waldiez-studio==0.
|
|
181
|
+
Requires-Dist: waldiez-studio==0.6.0; extra == 'studio'
|
|
175
182
|
Provides-Extra: test
|
|
176
183
|
Requires-Dist: ag2[redis]==0.9.9; extra == 'test'
|
|
177
184
|
Requires-Dist: ag2[websockets]==0.9.9; extra == 'test'
|
|
178
|
-
Requires-Dist: fakeredis==2.31.
|
|
185
|
+
Requires-Dist: fakeredis==2.31.1; extra == 'test'
|
|
179
186
|
Requires-Dist: paho-mqtt<3.0,>=2.1.0; extra == 'test'
|
|
180
|
-
Requires-Dist: pytest-asyncio==1.
|
|
181
|
-
Requires-Dist: pytest-cov==
|
|
187
|
+
Requires-Dist: pytest-asyncio==1.2.0; extra == 'test'
|
|
188
|
+
Requires-Dist: pytest-cov==7.0.0; extra == 'test'
|
|
182
189
|
Requires-Dist: pytest-env==1.1.5; extra == 'test'
|
|
183
190
|
Requires-Dist: pytest-html==4.1.1; extra == 'test'
|
|
184
|
-
Requires-Dist: pytest-sugar==1.1.
|
|
191
|
+
Requires-Dist: pytest-sugar==1.1.1; extra == 'test'
|
|
185
192
|
Requires-Dist: pytest-timeout==2.4.0; extra == 'test'
|
|
186
193
|
Requires-Dist: pytest-xdist==3.8.0; extra == 'test'
|
|
187
|
-
Requires-Dist: pytest==8.4.
|
|
194
|
+
Requires-Dist: pytest==8.4.2; extra == 'test'
|
|
195
|
+
Requires-Dist: watchdog>=5.0.0; extra == 'test'
|
|
196
|
+
Requires-Dist: websockets<16,>=14.0; extra == 'test'
|
|
188
197
|
Provides-Extra: websockets
|
|
189
|
-
Requires-Dist:
|
|
198
|
+
Requires-Dist: websockets<16,>=14.0; extra == 'websockets'
|
|
190
199
|
Description-Content-Type: text/markdown
|
|
191
200
|
|
|
192
201
|
# Waldiez
|
|
@@ -300,7 +309,7 @@ docker run --rm `
|
|
|
300
309
|
|
|
301
310
|
```shell
|
|
302
311
|
CONTAINER_COMMAND=docker # or podman
|
|
303
|
-
#
|
|
312
|
+
# Assuming ./flow.waldiez exists
|
|
304
313
|
HOST_INPUT="$(pwd)/flow.waldiez"
|
|
305
314
|
CONTAINER_INPUT="/home/waldiez/workspace/flow.waldiez"
|
|
306
315
|
HOST_OUTPUT_DIR="$(pwd)/output"
|