waldiez 0.4.3__py3-none-any.whl → 0.4.5__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.

Files changed (50) hide show
  1. waldiez/__init__.py +21 -2
  2. waldiez/_version.py +5 -2
  3. waldiez/cli.py +19 -4
  4. waldiez/exporter.py +8 -4
  5. waldiez/exporting/agent/utils/captain_agent.py +4 -1
  6. waldiez/exporting/agent/utils/group_manager.py +0 -1
  7. waldiez/exporting/agent/utils/rag_user/rag_user.py +1 -0
  8. waldiez/exporting/agent/utils/swarm_agent.py +1 -0
  9. waldiez/exporting/base/base_exporter.py +2 -2
  10. waldiez/exporting/base/mixin.py +3 -0
  11. waldiez/exporting/base/utils/comments.py +2 -0
  12. waldiez/exporting/chats/utils/sequential.py +1 -1
  13. waldiez/exporting/chats/utils/single_chat.py +3 -0
  14. waldiez/exporting/chats/utils/swarm.py +3 -0
  15. waldiez/exporting/flow/flow_exporter.py +2 -0
  16. waldiez/exporting/flow/utils/def_main.py +1 -0
  17. waldiez/exporting/flow/utils/flow_content.py +3 -0
  18. waldiez/exporting/flow/utils/flow_names.py +1 -0
  19. waldiez/exporting/flow/utils/importing_utils.py +1 -0
  20. waldiez/exporting/flow/utils/logging_utils.py +8 -8
  21. waldiez/exporting/skills/skills_exporter.py +1 -1
  22. waldiez/exporting/skills/utils.py +5 -3
  23. waldiez/models/__init__.py +1 -0
  24. waldiez/models/agents/agent/agent.py +1 -1
  25. waldiez/models/agents/agent/termination_message.py +1 -0
  26. waldiez/models/agents/group_manager/speakers.py +1 -1
  27. waldiez/models/agents/rag_user/retrieve_config.py +1 -0
  28. waldiez/models/agents/swarm_agent/after_work.py +0 -1
  29. waldiez/models/agents/swarm_agent/on_condition.py +1 -0
  30. waldiez/models/agents/swarm_agent/on_condition_available.py +1 -0
  31. waldiez/models/chat/chat.py +2 -0
  32. waldiez/models/chat/chat_message.py +1 -0
  33. waldiez/models/common/method_utils.py +11 -2
  34. waldiez/models/flow/flow.py +1 -0
  35. waldiez/models/skill/extra_requirements.py +1 -0
  36. waldiez/models/waldiez.py +5 -5
  37. waldiez/runner.py +4 -2
  38. waldiez/running/environment.py +4 -3
  39. waldiez/running/gen_seq_diagram.py +3 -2
  40. waldiez/running/running.py +48 -24
  41. waldiez/utils/check_rdps.py +18 -0
  42. waldiez/utils/cli_extras/__init__.py +2 -0
  43. waldiez/utils/cli_extras/runner.py +37 -0
  44. {waldiez-0.4.3.dist-info → waldiez-0.4.5.dist-info}/METADATA +119 -38
  45. {waldiez-0.4.3.dist-info → waldiez-0.4.5.dist-info}/RECORD +49 -47
  46. {waldiez-0.4.3.dist-info → waldiez-0.4.5.dist-info}/licenses/LICENSE +2 -2
  47. waldiez-0.4.5.dist-info/licenses/NOTICE.md +14 -0
  48. waldiez-0.4.3.dist-info/licenses/NOTICE.md +0 -5
  49. {waldiez-0.4.3.dist-info → waldiez-0.4.5.dist-info}/WHEEL +0 -0
  50. {waldiez-0.4.3.dist-info → waldiez-0.4.5.dist-info}/entry_points.txt +0 -0
waldiez/models/waldiez.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # SPDX-License-Identifier: Apache-2.0.
2
2
  # Copyright (c) 2024 - 2025 Waldiez and contributors.
3
- """Waldiez
3
+ """Waldiez data class.
4
4
 
5
5
  A Waldiez class contains all the information that is needed to generate
6
6
  and run an autogen workflow. It has the model/LLM configurations, the agent
@@ -167,7 +167,7 @@ class Waldiez:
167
167
  """Get the agents.
168
168
 
169
169
  Yields
170
- -------
170
+ ------
171
171
  WaldiezAgent
172
172
  The flow agents.
173
173
  """
@@ -178,7 +178,7 @@ class Waldiez:
178
178
  """Get the flow skills.
179
179
 
180
180
  Yields
181
- -------
181
+ ------
182
182
  WaldiezSkill
183
183
  The skills.
184
184
  """
@@ -189,7 +189,7 @@ class Waldiez:
189
189
  """Get the models.
190
190
 
191
191
  Yields
192
- -------
192
+ ------
193
193
  WaldiezModel
194
194
  The flow models.
195
195
  """
@@ -276,7 +276,7 @@ class Waldiez:
276
276
  autogen_version=autogen_version,
277
277
  )
278
278
  )
279
- return sorted(list(requirements))
279
+ return sorted(requirements)
280
280
 
281
281
  def get_flow_env_vars(self) -> List[Tuple[str, str]]:
282
282
  """Get the flow environment variables.
waldiez/runner.py CHANGED
@@ -1,6 +1,7 @@
1
1
  # SPDX-License-Identifier: Apache-2.0.
2
2
  # Copyright (c) 2024 - 2025 Waldiez and contributors.
3
3
  """Run a waldiez flow.
4
+
4
5
  The flow is first converted to an autogen flow with agents, chats and skills.
5
6
  We then chown to temporary directory, call the flow's `main()` and
6
7
  return the results. Before running the flow, any additional environment
@@ -144,9 +145,9 @@ class WaldiezRunner:
144
145
  Set[str]
145
146
  The extra requirements.
146
147
  """
147
- extra_requirements = set(
148
+ extra_requirements = {
148
149
  req for req in self.waldiez.requirements if req not in sys.modules
149
- )
150
+ }
150
151
  if self.waldiez.has_captain_agents:
151
152
  check_pysqlite3()
152
153
  return extra_requirements
@@ -185,6 +186,7 @@ class WaldiezRunner:
185
186
  The runtime uploads root.
186
187
  skip_mmd : bool
187
188
  Whether to skip the Mermaid diagram generation.
189
+
188
190
  Returns
189
191
  -------
190
192
  Union[ChatResult, List[ChatResult]]
@@ -3,7 +3,7 @@
3
3
  # pylint: disable=import-outside-toplevel,reimported
4
4
  """Environment related utilities."""
5
5
 
6
- import importlib.util
6
+ import importlib
7
7
  import os
8
8
  import site
9
9
  import sys
@@ -20,7 +20,8 @@ def in_virtualenv() -> bool:
20
20
  True if inside a virtualenv, False otherwise.
21
21
  """
22
22
  return hasattr(sys, "real_prefix") or (
23
- hasattr(sys, "base_prefix") and sys.base_prefix != sys.prefix
23
+ hasattr(sys, "base_prefix")
24
+ and os.path.realpath(sys.base_prefix) != os.path.realpath(sys.prefix)
24
25
  )
25
26
 
26
27
 
@@ -69,7 +70,7 @@ def refresh_environment() -> None:
69
70
 
70
71
  @contextlib.contextmanager
71
72
  def _np_no_nep50_warning() -> Generator[None, None, None]:
72
- """Dummy function to avoid the warning.
73
+ """Avoid no_nep50 warning.
73
74
 
74
75
  Yields
75
76
  ------
@@ -69,12 +69,12 @@ def process_events(df_events: pd.DataFrame) -> str:
69
69
  ----------
70
70
  df_events : pd.DataFrame
71
71
  The DataFrame containing the events data.
72
+
72
73
  Returns
73
74
  -------
74
75
  str
75
76
  The Mermaid sequence diagram text.
76
77
  """
77
-
78
78
  # Set to store participants (senders and recipients)
79
79
  participants: Set[str] = set()
80
80
  recipient: str
@@ -150,7 +150,7 @@ def save_diagram(mermaid_text: str, output_path: Union[str, Path]) -> None:
150
150
  def generate_sequence_diagram(
151
151
  file_path: Union[str, Path], output_path: Union[str, Path]
152
152
  ) -> None:
153
- """Main function to generate the Mermaid diagram.
153
+ """Generate the Mermaid diagram.
154
154
 
155
155
  Parameters
156
156
  ----------
@@ -163,6 +163,7 @@ def generate_sequence_diagram(
163
163
  ------
164
164
  FileNotFoundError
165
165
  If the input file is not found.
166
+
166
167
  ValueError
167
168
  If the input file is not a JSON or CSV file.
168
169
  """
@@ -120,20 +120,34 @@ def install_requirements(
120
120
  requirements_string = ", ".join(extra_requirements)
121
121
  printer(f"Installing requirements: {requirements_string}")
122
122
  pip_install = [sys.executable, "-m", "pip", "install"]
123
- if not in_virtualenv():
123
+ if not in_virtualenv(): # it should
124
+ # if not, let's try to install as user
125
+ # not sure if --break-system-packages is safe
126
+ # but it might fail if we don't
127
+ break_system_packages = os.environ.get("PIP_BREAK_SYSTEM_PACKAGES", "")
128
+ os.environ["PIP_BREAK_SYSTEM_PACKAGES"] = "1"
124
129
  pip_install.append("--user")
125
130
  pip_install.extend(extra_requirements)
126
- with subprocess.Popen(
127
- pip_install,
128
- stdout=subprocess.PIPE,
129
- stderr=subprocess.PIPE,
130
- ) as proc:
131
- if proc.stdout:
132
- for line in io.TextIOWrapper(proc.stdout, encoding="utf-8"):
133
- printer(line.strip())
134
- if proc.stderr:
135
- for line in io.TextIOWrapper(proc.stderr, encoding="utf-8"):
136
- printer(line.strip())
131
+ # pylint: disable=too-many-try-statements
132
+ try:
133
+ with subprocess.Popen(
134
+ pip_install,
135
+ stdout=subprocess.PIPE,
136
+ stderr=subprocess.PIPE,
137
+ ) as proc:
138
+ if proc.stdout:
139
+ for line in io.TextIOWrapper(proc.stdout, encoding="utf-8"):
140
+ printer(line.strip())
141
+ if proc.stderr:
142
+ for line in io.TextIOWrapper(proc.stderr, encoding="utf-8"):
143
+ printer(line.strip())
144
+ finally:
145
+ if not in_virtualenv():
146
+ # restore the old env var
147
+ if break_system_packages:
148
+ os.environ["PIP_BREAK_SYSTEM_PACKAGES"] = break_system_packages
149
+ else:
150
+ del os.environ["PIP_BREAK_SYSTEM_PACKAGES"]
137
151
 
138
152
 
139
153
  async def a_install_requirements(
@@ -152,19 +166,29 @@ async def a_install_requirements(
152
166
  printer(f"Installing requirements: {requirements_string}")
153
167
  pip_install = [sys.executable, "-m", "pip", "install"]
154
168
  if not in_virtualenv():
155
- pip_install.extend(["--user", "--break-system-packages"])
169
+ break_system_packages = os.environ.get("PIP_BREAK_SYSTEM_PACKAGES", "")
170
+ os.environ["PIP_BREAK_SYSTEM_PACKAGES"] = "1"
171
+ pip_install.extend(["--user"])
156
172
  pip_install.extend(extra_requirements)
157
- proc = await asyncio.create_subprocess_exec(
158
- *pip_install,
159
- stdout=asyncio.subprocess.PIPE,
160
- stderr=asyncio.subprocess.PIPE,
161
- )
162
- if proc.stdout:
163
- async for line in proc.stdout:
164
- printer(line.decode().strip())
165
- if proc.stderr:
166
- async for line in proc.stderr:
167
- printer(line.decode().strip())
173
+ # pylint: disable=too-many-try-statements
174
+ try:
175
+ proc = await asyncio.create_subprocess_exec(
176
+ *pip_install,
177
+ stdout=asyncio.subprocess.PIPE,
178
+ stderr=asyncio.subprocess.PIPE,
179
+ )
180
+ if proc.stdout:
181
+ async for line in proc.stdout:
182
+ printer(line.decode().strip())
183
+ if proc.stderr:
184
+ async for line in proc.stderr:
185
+ printer(line.decode().strip())
186
+ finally:
187
+ if not in_virtualenv():
188
+ if break_system_packages:
189
+ os.environ["PIP_BREAK_SYSTEM_PACKAGES"] = break_system_packages
190
+ else:
191
+ del os.environ["PIP_BREAK_SYSTEM_PACKAGES"]
168
192
 
169
193
 
170
194
  def after_run(
@@ -0,0 +1,18 @@
1
+ # SPDX-License-Identifier: Apache-2.0.
2
+ # Copyright (c) 2024 - 2025 Waldiez and contributors.
3
+ """
4
+ Check for rpds-py on Windows ARM64.
5
+
6
+ Since we cannot use direct git dependency on `rpds-py` in `pyproject.toml`,
7
+ let's check it here.
8
+
9
+ NOTE: We should regularly check if this is still needed.
10
+ """
11
+ # "rpds-py @ git+https://github.com/crate-py/rpds.git@v0.24.0 ;
12
+ # sys_platform == "win32" and platform_machine == "arm64"",
13
+ # "rpds-py @ git+https://github.com/crate-py/rpds.git@v0.24.0 ;
14
+ # sys_platform == "win32" and platform_machine == "ARM64"",
15
+ # "rpds-py @ git+https://github.com/crate-py/rpds.git@v0.24.0 ;
16
+ # sys_platform == "win32" and platform_machine == "aarch64"",
17
+ # "rpds-py @ git+https://github.com/crate-py/rpds.git@v0.24.0 ;
18
+ # sys_platform == "win32" and platform_machine == "AARCH64"",
@@ -7,6 +7,7 @@
7
7
  import typer
8
8
 
9
9
  from .jupyter import add_jupyter_cli
10
+ from .runner import add_runner_cli
10
11
  from .studio import add_studio_cli
11
12
 
12
13
 
@@ -24,6 +25,7 @@ def add_cli_extras(app: typer.Typer) -> None:
24
25
  The app with the extra commands added
25
26
  """
26
27
  add_jupyter_cli(app)
28
+ add_runner_cli(app)
27
29
  add_studio_cli(app)
28
30
 
29
31
 
@@ -0,0 +1,37 @@
1
+ # SPDX-License-Identifier: Apache-2.0.
2
+ # Copyright (c) 2024 - 2025 Waldiez and contributors.
3
+ # pylint: skip-file
4
+ # isort: skip_file
5
+ # flake8: noqa: E501,E402
6
+ """Waldiez-runner extra typer commands for CLI."""
7
+
8
+ from typing import Any, Callable
9
+
10
+ import typer
11
+ from typer.models import CommandInfo
12
+
13
+ HAVE_RUNNER = False
14
+ runner_app: Callable[..., Any] | None = None
15
+
16
+ try:
17
+ from waldiez_runner.cli import run # type: ignore[unused-ignore, import-not-found, import-untyped]
18
+
19
+ runner_app = run
20
+
21
+ HAVE_RUNNER = True
22
+ except BaseException:
23
+ pass
24
+
25
+
26
+ def add_runner_cli(app: typer.Typer) -> None:
27
+ """Add runner command to the app if available.
28
+
29
+ Parameters
30
+ ----------
31
+ app : typer.Typer
32
+ The Typer app to add the runner command to.
33
+ """
34
+ if HAVE_RUNNER:
35
+ app.registered_commands.append(
36
+ CommandInfo(name="serve", callback=runner_app)
37
+ )
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: waldiez
3
- Version: 0.4.3
4
- Summary: waldiez
5
- Project-URL: homepage, https://waldiez.io
6
- Project-URL: repository, https://github.com/waldiez/python.git
7
- Project-URL: documentation, https://waldiez.github.io/python/
8
- Project-URL: issues, https://github.com/waldiez/python/issues
9
- Author-email: Panagiotis Kasnesis <pkasnesis@waldiez.io>, Lazaros Toumanidis <laztoum@waldiez.io>, Stella Ioannidou <stella@humancentered.gr>
3
+ Version: 0.4.5
4
+ Dynamic: Keywords
5
+ Summary: Make AI Agents Collaborate: Drag, Drop, and Orchestrate with Waldiez.
6
+ Project-URL: Homepage, https://waldiez.io
7
+ Project-URL: Bug Tracker, https://github.com/waldiez/waldiez/issues
8
+ Project-URL: Repository, https://github.com/waldiez/waldiez.git
9
+ Author-email: Panagiotis Kasnesis <pkasnesis@waldiez.io>, Lazaros Toumanidis <laztoum@waldiez.io>, Stella Ioannidou <stella@waldiez.io>
10
10
  License-File: LICENSE
11
11
  License-File: NOTICE.md
12
12
  Classifier: Development Status :: 3 - Alpha
@@ -28,20 +28,27 @@ Requires-Dist: asyncer==0.0.8
28
28
  Requires-Dist: graphviz==0.20.3
29
29
  Requires-Dist: httpx<1
30
30
  Requires-Dist: jupytext
31
- Requires-Dist: numpy<=2.2.4
31
+ Requires-Dist: nest-asyncio==1.6.0
32
+ Requires-Dist: numpy<=2.2.5
32
33
  Requires-Dist: pandas>=2
33
34
  Requires-Dist: parso==0.8.4
34
- Requires-Dist: pyautogen[openai]==0.8.6
35
+ Requires-Dist: pyautogen[openai]==0.8.7
35
36
  Requires-Dist: pydantic<3,>=2.10.2
36
37
  Requires-Dist: typer<0.16,>=0.9
37
38
  Provides-Extra: ag2-extras
38
39
  Requires-Dist: beautifulsoup4; extra == 'ag2-extras'
39
- Requires-Dist: chromadb>=0.5.10; extra == 'ag2-extras'
40
- Requires-Dist: embedchain; extra == 'ag2-extras'
40
+ Requires-Dist: chromadb>=0.5.10; (sys_platform != 'win32') and extra == 'ag2-extras'
41
+ Requires-Dist: chromadb>=0.5.10; (sys_platform == 'win32' and platform_machine != 'arm64' and platform_machine != 'aarch64' and platform_machine != 'ARM64' and platform_machine != 'AARCH64') and extra == 'ag2-extras'
42
+ Requires-Dist: embedchain; (sys_platform != 'win32') and extra == 'ag2-extras'
43
+ Requires-Dist: embedchain; (sys_platform == 'win32' and platform_machine != 'arm64' and platform_machine != 'aarch64' and platform_machine != 'ARM64' and platform_machine != 'AARCH64') and extra == 'ag2-extras'
44
+ Requires-Dist: google-api-python-client<3.0,>=2.163.0; extra == 'ag2-extras'
45
+ Requires-Dist: google-auth-httplib2<0.3,>=0.2.0; extra == 'ag2-extras'
46
+ Requires-Dist: google-auth-oauthlib<2.0,>=1.2.1; extra == 'ag2-extras'
41
47
  Requires-Dist: huggingface-hub; extra == 'ag2-extras'
42
48
  Requires-Dist: ipython; extra == 'ag2-extras'
43
49
  Requires-Dist: langchain-community<1,>=0.3.12; extra == 'ag2-extras'
44
50
  Requires-Dist: markdownify; extra == 'ag2-extras'
51
+ Requires-Dist: mcp<1.6,>=1.4.0; extra == 'ag2-extras'
45
52
  Requires-Dist: pgvector>=0.4.0; extra == 'ag2-extras'
46
53
  Requires-Dist: protobuf>=4.25.3; extra == 'ag2-extras'
47
54
  Requires-Dist: psycopg==3.2.6; (sys_platform == 'linux') and extra == 'ag2-extras'
@@ -49,59 +56,73 @@ Requires-Dist: psycopg==3.2.6; (sys_platform == 'win32' and platform_machine ==
49
56
  Requires-Dist: psycopg==3.2.6; (sys_platform == 'win32' and platform_machine == 'ARM64') and extra == 'ag2-extras'
50
57
  Requires-Dist: psycopg==3.2.6; (sys_platform == 'win32' and platform_machine == 'aarch64') and extra == 'ag2-extras'
51
58
  Requires-Dist: psycopg==3.2.6; (sys_platform == 'win32' and platform_machine == 'arm64') and extra == 'ag2-extras'
59
+ Requires-Dist: psycopg>=3.2.6; (sys_platform == 'win32') and extra == 'ag2-extras'
52
60
  Requires-Dist: psycopg[binary]==3.2.6; (sys_platform != 'linux' and platform_machine != 'arm64' and platform_machine != 'ARM64' and platform_machine != 'aarch64' and platform_machine != 'AARCH64') and extra == 'ag2-extras'
53
- Requires-Dist: psycopg[binary]>=3.2.6; extra == 'ag2-extras'
54
- Requires-Dist: pyautogen[anthropic]==0.8.6; extra == 'ag2-extras'
55
- Requires-Dist: pyautogen[bedrock]==0.8.6; extra == 'ag2-extras'
56
- Requires-Dist: pyautogen[cohere]==0.8.6; extra == 'ag2-extras'
57
- Requires-Dist: pyautogen[gemini]==0.8.6; extra == 'ag2-extras'
58
- Requires-Dist: pyautogen[groq]==0.8.6; extra == 'ag2-extras'
59
- Requires-Dist: pyautogen[interop-crewai]==0.8.6; extra == 'ag2-extras'
60
- Requires-Dist: pyautogen[interop-langchain]==0.8.6; extra == 'ag2-extras'
61
- Requires-Dist: pyautogen[lmm]==0.8.6; extra == 'ag2-extras'
62
- Requires-Dist: pyautogen[mistral]==0.8.6; extra == 'ag2-extras'
63
- Requires-Dist: pyautogen[neo4j]==0.8.6; extra == 'ag2-extras'
64
- Requires-Dist: pyautogen[ollama]==0.8.6; extra == 'ag2-extras'
65
- Requires-Dist: pyautogen[together]==0.8.6; extra == 'ag2-extras'
66
- Requires-Dist: pyautogen[websurfer]==0.8.6; extra == 'ag2-extras'
61
+ Requires-Dist: psycopg[binary]>=3.2.6; (sys_platform != 'win32') and extra == 'ag2-extras'
62
+ Requires-Dist: pyautogen[anthropic]==0.8.7; extra == 'ag2-extras'
63
+ Requires-Dist: pyautogen[bedrock]==0.8.7; extra == 'ag2-extras'
64
+ Requires-Dist: pyautogen[cohere]==0.8.7; extra == 'ag2-extras'
65
+ Requires-Dist: pyautogen[gemini]==0.8.7; (sys_platform != 'win32') and extra == 'ag2-extras'
66
+ Requires-Dist: pyautogen[gemini]==0.8.7; (sys_platform == 'win32' and platform_machine != 'arm64' and platform_machine != 'aarch64' and platform_machine != 'ARM64' and platform_machine != 'AARCH64') and extra == 'ag2-extras'
67
+ Requires-Dist: pyautogen[groq]==0.8.7; extra == 'ag2-extras'
68
+ Requires-Dist: pyautogen[interop-crewai]==0.8.7; extra == 'ag2-extras'
69
+ Requires-Dist: pyautogen[interop-langchain]==0.8.7; extra == 'ag2-extras'
70
+ Requires-Dist: pyautogen[lmm]==0.8.7; extra == 'ag2-extras'
71
+ Requires-Dist: pyautogen[mistral]==0.8.7; extra == 'ag2-extras'
72
+ Requires-Dist: pyautogen[neo4j]==0.8.7; (sys_platform != 'win32') and extra == 'ag2-extras'
73
+ Requires-Dist: pyautogen[neo4j]==0.8.7; (sys_platform == 'win32' and platform_machine != 'arm64' and platform_machine != 'aarch64' and platform_machine != 'ARM64' and platform_machine != 'AARCH64') and extra == 'ag2-extras'
74
+ Requires-Dist: pyautogen[ollama]==0.8.7; extra == 'ag2-extras'
75
+ Requires-Dist: pyautogen[together]==0.8.7; (sys_platform != 'win32') and extra == 'ag2-extras'
76
+ Requires-Dist: pyautogen[together]==0.8.7; (sys_platform == 'win32' and platform_machine != 'arm64' and platform_machine != 'aarch64' and platform_machine != 'ARM64' and platform_machine != 'AARCH64') and extra == 'ag2-extras'
77
+ Requires-Dist: pyautogen[websurfer]==0.8.7; extra == 'ag2-extras'
67
78
  Requires-Dist: pydantic-ai>=0.0.21; extra == 'ag2-extras'
68
79
  Requires-Dist: pymongo>=4.11; extra == 'ag2-extras'
69
80
  Requires-Dist: pypdf; extra == 'ag2-extras'
70
81
  Requires-Dist: pysqlite3-binary==0.5.4; (sys_platform == 'linux' and platform_machine != 'arm64' and platform_machine != 'aarch64' and platform_machine != 'ARM64' and platform_machine != 'AARCH64') and extra == 'ag2-extras'
71
- Requires-Dist: qdrant-client[fastembed]; extra == 'ag2-extras'
72
- Requires-Dist: sentence-transformers; extra == 'ag2-extras'
82
+ Requires-Dist: qdrant-client[fastembed]; (sys_platform != 'win32') and extra == 'ag2-extras'
83
+ Requires-Dist: qdrant-client[fastembed]; (sys_platform == 'win32' and platform_machine != 'arm64' and platform_machine != 'aarch64' and platform_machine != 'ARM64' and platform_machine != 'AARCH64') and extra == 'ag2-extras'
84
+ Requires-Dist: sentence-transformers; (sys_platform == 'linux') and extra == 'ag2-extras'
85
+ Requires-Dist: wikipedia-api<1.0,>=0.8.1; extra == 'ag2-extras'
73
86
  Provides-Extra: dev
74
87
  Requires-Dist: autoflake==2.3.1; extra == 'dev'
75
88
  Requires-Dist: bandit==1.8.3; extra == 'dev'
76
89
  Requires-Dist: black[jupyter]==25.1.0; extra == 'dev'
77
90
  Requires-Dist: flake8==7.2.0; extra == 'dev'
78
- Requires-Dist: isort==6.0.1; extra == 'dev'
91
+ Requires-Dist: hatchling==1.27.0; extra == 'dev'
92
+ Requires-Dist: jupyter-server==2.15.0; extra == 'dev'
93
+ Requires-Dist: jupyterlab>=4.3.0; extra == 'dev'
79
94
  Requires-Dist: mypy==1.15.0; extra == 'dev'
80
95
  Requires-Dist: pandas-stubs==2.2.3.250308; extra == 'dev'
81
96
  Requires-Dist: pre-commit==4.2.0; extra == 'dev'
82
97
  Requires-Dist: pydocstyle==6.3.0; extra == 'dev'
83
98
  Requires-Dist: pylint==3.3.6; extra == 'dev'
84
99
  Requires-Dist: python-dotenv==1.1.0; extra == 'dev'
85
- Requires-Dist: ruff==0.11.5; extra == 'dev'
100
+ Requires-Dist: ruff==0.11.7; extra == 'dev'
86
101
  Requires-Dist: toml==0.10.2; (python_version <= '3.10') and extra == 'dev'
87
102
  Requires-Dist: types-pyyaml==6.0.12.20250402; extra == 'dev'
103
+ Requires-Dist: types-requests==2.32.0.20250328; extra == 'dev'
88
104
  Requires-Dist: types-toml==0.10.8.20240310; extra == 'dev'
89
105
  Requires-Dist: yamllint==1.37.0; extra == 'dev'
90
106
  Provides-Extra: docs
91
107
  Requires-Dist: mdx-include==1.4.2; extra == 'docs'
92
108
  Requires-Dist: mdx-truly-sane-lists==1.3; extra == 'docs'
109
+ Requires-Dist: mkdocs-awesome-nav; extra == 'docs'
93
110
  Requires-Dist: mkdocs-jupyter==0.25.1; extra == 'docs'
94
111
  Requires-Dist: mkdocs-macros-plugin==1.3.7; extra == 'docs'
95
- Requires-Dist: mkdocs-material==9.6.11; extra == 'docs'
112
+ Requires-Dist: mkdocs-material==9.6.12; extra == 'docs'
96
113
  Requires-Dist: mkdocs-minify-html-plugin==0.3.1; extra == 'docs'
114
+ Requires-Dist: mkdocs-open-in-new-tab==1.0.8; extra == 'docs'
97
115
  Requires-Dist: mkdocs==1.6.1; extra == 'docs'
98
116
  Requires-Dist: mkdocstrings-python==1.16.10; extra == 'docs'
99
117
  Requires-Dist: mkdocstrings[crystal,python]==0.29.1; extra == 'docs'
100
118
  Provides-Extra: jupyter
119
+ Requires-Dist: jupyter-server==2.15.0; extra == 'jupyter'
101
120
  Requires-Dist: jupyterlab>=4.3.0; extra == 'jupyter'
102
- Requires-Dist: waldiez-jupyter==0.4.3; extra == 'jupyter'
121
+ Requires-Dist: waldiez-jupyter==0.4.5; extra == 'jupyter'
122
+ Provides-Extra: runner
123
+ Requires-Dist: waldiez-runner==0.4.5; (python_version >= '3.11') and extra == 'runner'
103
124
  Provides-Extra: studio
104
- Requires-Dist: waldiez-studio==0.4.3; extra == 'studio'
125
+ Requires-Dist: waldiez-studio==0.4.5; extra == 'studio'
105
126
  Provides-Extra: test
106
127
  Requires-Dist: pytest-asyncio==0.26.0; extra == 'test'
107
128
  Requires-Dist: pytest-cov==6.1.1; extra == 'test'
@@ -114,7 +135,7 @@ Description-Content-Type: text/markdown
114
135
 
115
136
  # Waldiez
116
137
 
117
- ![CI Build](https://github.com/waldiez/python/actions/workflows/main.yaml/badge.svg) [![Coverage Status](https://coveralls.io/repos/github/waldiez/python/badge.svg)](https://coveralls.io/github/waldiez/python) [![PyPI version](https://badge.fury.io/py/waldiez.svg?icon=si%3Apython)](https://badge.fury.io/py/waldiez)
138
+ ![CI Build](https://github.com/waldiez/python/actions/workflows/main.yaml/badge.svg) [![Coverage Status](https://coveralls.io/repos/github/waldiez/python/badge.svg)](https://coveralls.io/github/waldiez/python) [![PyPI version](https://badge.fury.io/py/waldiez.svg?icon=si%3Apython)](https://badge.fury.io/py/waldiez) [![npm version](https://badge.fury.io/js/@waldiez%2Freact.svg)](https://badge.fury.io/js/@waldiez%2Freact)
118
139
 
119
140
  Translate a Waldiez flow:
120
141
 
@@ -130,16 +151,36 @@ To a python script or a jupyter notebook with the corresponding [ag2](https://gi
130
151
 
131
152
  ## Installation
132
153
 
154
+ ### Python
155
+
133
156
  On PyPI:
134
157
 
135
- ```bash
158
+ ```shell
136
159
  python -m pip install waldiez
137
160
  ```
138
161
 
139
162
  From the repository:
140
163
 
141
- ```bash
142
- python -m pip install git+https://github.com/waldiez/python.git
164
+ ```shell
165
+ python -m pip install git+https://github.com/waldiez/waldiez.git
166
+ ```
167
+
168
+ ### React Component
169
+
170
+ If you’re looking for the React component, please refer to [README.npm](https://github.com/waldiez/waldiez/blob/main/README.npm.md).
171
+
172
+ > Note: The React component is only for creating and editing flows — it is not needed to convert or run flows (that functionality is handled by the Python package).
173
+
174
+ Quick install:
175
+
176
+ ```shell
177
+ npm install @waldiez/react
178
+ # or
179
+ yarn add @waldiez/react
180
+ # or
181
+ pnpm add @waldiez/react
182
+ # or
183
+ bun add @waldiez/react
143
184
  ```
144
185
 
145
186
  ## Usage
@@ -147,7 +188,6 @@ python -m pip install git+https://github.com/waldiez/python.git
147
188
  ### UI Options
148
189
 
149
190
  - For creating-only (no exporting or running) waldiez flows, you can use the playground at <https://waldiez.github.io>.
150
- The repo for the js library is [here](https://github.com/waldiez/react).
151
191
  - There is also a jupyterlab extension [here](https://github.com/waldiez/jupyter)
152
192
  - You also can use the vscode extension:
153
193
  - [repo](https://github.com/waldiez/vscode)
@@ -250,6 +290,47 @@ runner.run(output_path=output_path)
250
290
  pip install --force --no-cache waldiez pyautogen
251
291
  ```
252
292
 
293
+ ## See also
294
+
295
+ - [Waldiez Playground](https://waldiez.github.io)
296
+ - [React Component](https://github.com/waldiez/waldiez/blob/main/README.npm.md)
297
+ - [Waldiez Studio](https://github.com/waldiez/studio)
298
+ - [Waldiez JupyterLab Extension](htttps://github.com/waldiez/jupyter)
299
+ - [Waldiez VSCode Extension](https://github.com/waldiez/vscode)
300
+
301
+ ## Contributors ✨
302
+
303
+ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
304
+
305
+ <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
306
+ <!-- prettier-ignore-start -->
307
+ <!-- markdownlint-disable -->
308
+ <table>
309
+ <tbody>
310
+ <tr>
311
+ <td align="center" valign="top" width="14.28%"><a href="https://scholar.google.com/citations?user=JmW9DwkAAAAJ"><img src="https://avatars.githubusercontent.com/u/29335277?v=4?s=100" width="100px;" alt="Panagiotis Kasnesis"/><br /><sub><b>Panagiotis Kasnesis</b></sub></a><br /><a href="#projectManagement-ounospanas" title="Project Management">📆</a> <a href="#research-ounospanas" title="Research">🔬</a></td>
312
+ <td align="center" valign="top" width="14.28%"><a href="https://humancentered.gr/"><img src="https://avatars.githubusercontent.com/u/3456066?v=4?s=100" width="100px;" alt="Stella Ioannidou"/><br /><sub><b>Stella Ioannidou</b></sub></a><br /><a href="#promotion-siioannidou" title="Promotion">📣</a> <a href="#design-siioannidou" title="Design">🎨</a></td>
313
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/lazToum"><img src="https://avatars.githubusercontent.com/u/4764837?v=4?s=100" width="100px;" alt="Lazaros Toumanidis"/><br /><sub><b>Lazaros Toumanidis</b></sub></a><br /><a href="https://github.com/waldiez/react/commits?author=lazToum" title="Code">💻</a></td>
314
+ </tr>
315
+ </tbody>
316
+ <tfoot>
317
+ <tr>
318
+ <td align="center" size="13px" colspan="7">
319
+ <img src="https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg">
320
+ <a href="https://all-contributors.js.org/docs/en/bot/usage">Add your contributions</a>
321
+ </img>
322
+ </td>
323
+ </tr>
324
+ </tfoot>
325
+ </table>
326
+
327
+ <!-- markdownlint-restore -->
328
+ <!-- prettier-ignore-end -->
329
+
330
+ <!-- ALL-CONTRIBUTORS-LIST:END -->
331
+
332
+ This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
333
+
253
334
  ## License
254
335
 
255
- This project is licensed under the [Apache License, Version 2.0 (Apache-2.0)](https://github.com/waldiez/python/blob/main/LICENSE).
336
+ This project is licensed under the [Apache License, Version 2.0 (Apache-2.0)](https://github.com/waldiez/waldiez/blob/main/LICENSE).