waldiez 0.1.18__tar.gz → 0.1.20__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 waldiez might be problematic. Click here for more details.

Files changed (91) hide show
  1. {waldiez-0.1.18 → waldiez-0.1.20}/PKG-INFO +1 -1
  2. {waldiez-0.1.18 → waldiez-0.1.20}/pyproject.toml +1 -0
  3. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/__init__.py +3 -0
  4. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/_version.py +1 -1
  5. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/model/__init__.py +2 -1
  6. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/model/model.py +37 -2
  7. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/runner.py +108 -19
  8. {waldiez-0.1.18 → waldiez-0.1.20}/.gitignore +0 -0
  9. {waldiez-0.1.18 → waldiez-0.1.20}/LICENSE +0 -0
  10. {waldiez-0.1.18 → waldiez-0.1.20}/README.md +0 -0
  11. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/__main__.py +0 -0
  12. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/cli.py +0 -0
  13. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/conflict_checker.py +0 -0
  14. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporter.py +0 -0
  15. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/__init__.py +0 -0
  16. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/__init__.py +0 -0
  17. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/agent.py +0 -0
  18. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/agent_skills.py +0 -0
  19. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/code_execution.py +0 -0
  20. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/group_manager.py +0 -0
  21. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/llm_config.py +0 -0
  22. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/rag_user/__init__.py +0 -0
  23. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/rag_user/chroma_utils.py +0 -0
  24. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/rag_user/mongo_utils.py +0 -0
  25. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/rag_user/pgvector_utils.py +0 -0
  26. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/rag_user/qdrant_utils.py +0 -0
  27. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/rag_user/rag_user.py +0 -0
  28. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/rag_user/vector_db.py +0 -0
  29. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/teachability.py +0 -0
  30. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/agents/termination_message.py +0 -0
  31. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/chats/__init__.py +0 -0
  32. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/chats/chats.py +0 -0
  33. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/chats/helpers.py +0 -0
  34. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/chats/nested.py +0 -0
  35. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/flow/__init__.py +0 -0
  36. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/flow/def_main.py +0 -0
  37. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/flow/flow.py +0 -0
  38. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/models/__init__.py +0 -0
  39. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/skills/__init__.py +0 -0
  40. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/utils/__init__.py +0 -0
  41. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/utils/comments.py +0 -0
  42. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/utils/importing.py +0 -0
  43. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/utils/logging_utils.py +0 -0
  44. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/utils/method_utils.py +0 -0
  45. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/utils/naming.py +0 -0
  46. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/utils/object_string.py +0 -0
  47. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/exporting/utils/path_check.py +0 -0
  48. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/__init__.py +0 -0
  49. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/__init__.py +0 -0
  50. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/agent/__init__.py +0 -0
  51. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/agent/agent.py +0 -0
  52. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/agent/agent_data.py +0 -0
  53. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/agent/code_execution.py +0 -0
  54. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/agent/linked_skill.py +0 -0
  55. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/agent/nested_chat.py +0 -0
  56. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/agent/teachability.py +0 -0
  57. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/agent/termination_message.py +0 -0
  58. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/agents.py +0 -0
  59. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/assistant/__init__.py +0 -0
  60. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/assistant/assistant.py +0 -0
  61. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/assistant/assistant_data.py +0 -0
  62. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/group_manager/__init__.py +0 -0
  63. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/group_manager/group_manager.py +0 -0
  64. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/group_manager/group_manager_data.py +0 -0
  65. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/group_manager/speakers.py +0 -0
  66. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/rag_user/__init__.py +0 -0
  67. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/rag_user/rag_user.py +0 -0
  68. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/rag_user/rag_user_data.py +0 -0
  69. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/rag_user/retrieve_config.py +0 -0
  70. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/rag_user/vector_db_config.py +0 -0
  71. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/user_proxy/__init__.py +0 -0
  72. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/user_proxy/user_proxy.py +0 -0
  73. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/agents/user_proxy/user_proxy_data.py +0 -0
  74. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/chat/__init__.py +0 -0
  75. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/chat/chat.py +0 -0
  76. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/chat/chat_data.py +0 -0
  77. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/chat/chat_message.py +0 -0
  78. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/chat/chat_nested.py +0 -0
  79. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/chat/chat_summary.py +0 -0
  80. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/common/__init__.py +0 -0
  81. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/common/base.py +0 -0
  82. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/common/method_utils.py +0 -0
  83. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/flow/__init__.py +0 -0
  84. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/flow/flow.py +0 -0
  85. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/flow/flow_data.py +0 -0
  86. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/model/model_data.py +0 -0
  87. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/skill/__init__.py +0 -0
  88. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/skill/skill.py +0 -0
  89. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/skill/skill_data.py +0 -0
  90. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/models/waldiez.py +0 -0
  91. {waldiez-0.1.18 → waldiez-0.1.20}/waldiez/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: waldiez
3
- Version: 0.1.18
3
+ Version: 0.1.20
4
4
  Summary: waldiez
5
5
  Project-URL: homepage, https://waldiez.github.io/waldiez/
6
6
  Project-URL: repository, https://github.com/waldiez/waldiez.git
@@ -314,6 +314,7 @@ python_files = [
314
314
  ]
315
315
  addopts = """
316
316
  -d \
317
+ -s \
317
318
  -n auto \
318
319
  --exitfirst \
319
320
  --durations=10 \
@@ -1,6 +1,7 @@
1
1
  """Waldiez package."""
2
2
 
3
3
  import logging
4
+ import warnings
4
5
 
5
6
  from ._version import __version__
6
7
  from .conflict_checker import check_conflicts
@@ -8,6 +9,8 @@ from .exporter import WaldiezExporter
8
9
  from .models import Waldiez
9
10
  from .runner import WaldiezRunner
10
11
 
12
+ warnings.filterwarnings("ignore", "flaml.automl is not available")
13
+
11
14
 
12
15
  # pylint: disable=too-few-public-methods
13
16
  class FlamlFilter(logging.Filter):
@@ -1,3 +1,3 @@
1
1
  """Version information for Waldiez."""
2
2
 
3
- __version__ = "0.1.18"
3
+ __version__ = "0.1.20"
@@ -1,9 +1,10 @@
1
1
  """Waldiez model."""
2
2
 
3
- from .model import WaldiezModel
3
+ from .model import DEFAULT_BASE_URLS, WaldiezModel
4
4
  from .model_data import WaldiezModelAPIType, WaldiezModelData, WaldiezModelPrice
5
5
 
6
6
  __all__ = [
7
+ "DEFAULT_BASE_URLS",
7
8
  "WaldiezModel",
8
9
  "WaldiezModelData",
9
10
  "WaldiezModelPrice",
@@ -7,7 +7,16 @@ from pydantic import Field
7
7
  from typing_extensions import Annotated, Literal
8
8
 
9
9
  from ..common import WaldiezBase, now
10
- from .model_data import WaldiezModelData
10
+ from .model_data import WaldiezModelAPIType, WaldiezModelData
11
+
12
+ DEFAULT_BASE_URLS: Dict[WaldiezModelAPIType, str] = {
13
+ "google": "https://generativelanguage.googleapis.com/v1beta",
14
+ "anthropic": "https://api.anthropic.com/v1",
15
+ "mistral": "https://api.mistral.ai/v1",
16
+ "groq": "https://api.groq.com/openai/v1",
17
+ "together": "https://api.together.xyz/v1",
18
+ "nim": "https://integrate.api.nvidia.com/v1",
19
+ }
11
20
 
12
21
 
13
22
  class WaldiezModel(WaldiezBase):
@@ -166,4 +175,30 @@ class WaldiezModel(WaldiezBase):
166
175
  value = getattr(self, attr)
167
176
  if value:
168
177
  _llm_config[attr] = value
169
- return _llm_config
178
+ return set_default_base_url(_llm_config, self.data.api_type)
179
+
180
+
181
+ def set_default_base_url(
182
+ llm_config: Dict[str, Any], api_type: WaldiezModelAPIType
183
+ ) -> Dict[str, Any]:
184
+ """Set the default base url if not provided.
185
+
186
+ Parameters
187
+ ----------
188
+ llm_config : Dict[str, Any]
189
+ The llm config dictionary.
190
+ api_type : str
191
+ The api type.
192
+
193
+ Returns
194
+ -------
195
+ Dict[str, Any]
196
+ The llm config dictionary with the default base url set.
197
+ """
198
+ if api_type in ("openai", "other", "azure"):
199
+ return llm_config
200
+ if "base_url" not in llm_config or not llm_config["base_url"]:
201
+ dict_copy = llm_config.copy()
202
+ dict_copy["base_url"] = DEFAULT_BASE_URLS.get(api_type, "")
203
+ return dict_copy
204
+ return llm_config
@@ -7,6 +7,8 @@ return the results. Before running the flow, any additional environment
7
7
  variables specified in the waldiez file are set.
8
8
  """
9
9
 
10
+ # pylint: disable=import-outside-toplevel,reimported
11
+
10
12
  import datetime
11
13
  import importlib.util
12
14
  import io
@@ -16,6 +18,7 @@ import site
16
18
  import subprocess # nosemgrep # nosec
17
19
  import sys
18
20
  import tempfile
21
+ import warnings
19
22
  from contextlib import contextmanager
20
23
  from pathlib import Path
21
24
  from types import TracebackType
@@ -26,6 +29,7 @@ from typing import (
26
29
  Iterator,
27
30
  List,
28
31
  Optional,
32
+ Tuple,
29
33
  Type,
30
34
  Union,
31
35
  )
@@ -59,11 +63,6 @@ def _chdir(to: Union[str, Path]) -> Iterator[None]:
59
63
  os.chdir(old_cwd)
60
64
 
61
65
 
62
- def refresh_site_packages() -> None:
63
- """Refresh the site packages."""
64
- site.main()
65
-
66
-
67
66
  class WaldiezRunner:
68
67
  """Waldiez runner class."""
69
68
 
@@ -75,6 +74,7 @@ class WaldiezRunner:
75
74
  self._running = False
76
75
  self._file_path = file_path
77
76
  self._exporter = WaldiezExporter(waldiez)
77
+ self._called_install_requirements = False
78
78
 
79
79
  @classmethod
80
80
  def load(
@@ -147,8 +147,10 @@ class WaldiezRunner:
147
147
  """Get the running status."""
148
148
  return self._running
149
149
 
150
- def _install_requirements(self, printer: Callable[..., None]) -> None:
150
+ def install_requirements(self) -> None:
151
151
  """Install the requirements for the flow."""
152
+ self._called_install_requirements = True
153
+ printer = get_printer()
152
154
  extra_requirements = set(
153
155
  req for req in self.waldiez.requirements if req not in sys.modules
154
156
  )
@@ -169,13 +171,7 @@ class WaldiezRunner:
169
171
  if proc.stderr:
170
172
  for line in io.TextIOWrapper(proc.stderr, encoding="utf-8"):
171
173
  printer(line.strip())
172
- printer("Refreshing site packages...")
173
- refresh_site_packages()
174
- printer(
175
- "Requirements installed.\n"
176
- "NOTE: If new packages were added and you are using Jupyter, "
177
- "you might need to restart the kernel."
178
- )
174
+ refresh_environment()
179
175
 
180
176
  @staticmethod
181
177
  def _after_run(
@@ -245,11 +241,16 @@ class WaldiezRunner:
245
241
  Union[ChatResult, List[ChatResult]]
246
242
  The result(s) of the chat(s).
247
243
  """
248
- # pylint: disable=import-outside-toplevel
249
- from autogen.io import IOStream # type: ignore
250
-
251
- printer = IOStream.get_default().print
252
- self._install_requirements(printer)
244
+ if not self._called_install_requirements:
245
+ self.install_requirements()
246
+ else:
247
+ refresh_environment()
248
+ printer = get_printer()
249
+ printer(
250
+ "Requirements installed.\n"
251
+ "NOTE: If new packages were added and you are using Jupyter, "
252
+ "you might need to restart the kernel."
253
+ )
253
254
  results: Union["ChatResult", List["ChatResult"]] = []
254
255
  if not uploads_root:
255
256
  uploads_root = Path(tempfile.mkdtemp())
@@ -277,7 +278,7 @@ class WaldiezRunner:
277
278
  old_vars = self._set_env_vars()
278
279
  module = importlib.util.module_from_spec(spec)
279
280
  spec.loader.exec_module(module)
280
- printer("Starting workflow...")
281
+ printer("<Waldiez> - Starting workflow...")
281
282
  results = module.main()
282
283
  sys.path.pop(0)
283
284
  self._reset_env_vars(old_vars)
@@ -329,3 +330,91 @@ def in_virtualenv() -> bool:
329
330
  return hasattr(sys, "real_prefix") or (
330
331
  hasattr(sys, "base_prefix") and sys.base_prefix != sys.prefix
331
332
  )
333
+
334
+
335
+ def refresh_environment() -> None:
336
+ """Refresh the environment."""
337
+ # backup the default IOStream
338
+ from autogen.io import IOStream # type: ignore
339
+
340
+ default_io_stream = IOStream.get_default()
341
+ site.main()
342
+ # pylint: disable=import-outside-toplevel
343
+ modules_to_reload = [
344
+ mod for mod in sys.modules if mod.startswith("autogen")
345
+ ]
346
+ for mod in modules_to_reload:
347
+ del sys.modules[mod]
348
+ import autogen
349
+ from autogen.io import IOStream
350
+
351
+ importlib.reload(autogen)
352
+ # restore the default IOStream
353
+ IOStream.set_global_default(default_io_stream)
354
+ warnings.filterwarnings("ignore", "flaml.automl is not available")
355
+
356
+
357
+ def get_printer() -> Callable[..., None]:
358
+ """Get the printer function.
359
+
360
+ Returns
361
+ -------
362
+ Callable[..., None]
363
+ The printer function.
364
+ """
365
+ from autogen.io import IOStream
366
+
367
+ printer = IOStream.get_default().print
368
+
369
+ def safe_printer(*args: object, **kwargs: object) -> None:
370
+ try:
371
+ printer(*args, **kwargs)
372
+ except UnicodeEncodeError:
373
+ # pylint: disable=too-many-try-statements
374
+ try:
375
+ msg, flush = get_what_to_print(*args, **kwargs)
376
+ printer(msg, end="", flush=flush)
377
+ except UnicodeEncodeError:
378
+ sys.stdout = io.TextIOWrapper(
379
+ sys.stdout.buffer, encoding="utf-8"
380
+ )
381
+ sys.stderr = io.TextIOWrapper(
382
+ sys.stderr.buffer, encoding="utf-8"
383
+ )
384
+ try:
385
+ printer(*args, **kwargs)
386
+ except UnicodeEncodeError:
387
+ sys.stderr.write(
388
+ "Could not print the message due to encoding issues.\n"
389
+ )
390
+
391
+ return safe_printer
392
+
393
+
394
+ def get_what_to_print(*args: object, **kwargs: object) -> Tuple[str, bool]:
395
+ """Get what to print.
396
+
397
+ Parameters
398
+ ----------
399
+ args : object
400
+ The arguments.
401
+ kwargs : object
402
+ The keyword arguments.
403
+
404
+ Returns
405
+ -------
406
+ Tuple[str, bool]
407
+ The message and whether to flush.
408
+ """
409
+ sep = kwargs.get("sep", " ")
410
+ if not isinstance(sep, str):
411
+ sep = " "
412
+ end = kwargs.get("end", "\n")
413
+ if not isinstance(end, str):
414
+ end = "\n"
415
+ flush = kwargs.get("flush", False)
416
+ if not isinstance(flush, bool):
417
+ flush = False
418
+ msg = sep.join(str(arg) for arg in args) + end
419
+ utf8_msg = msg.encode("utf-8", errors="replace").decode("utf-8")
420
+ return utf8_msg, flush
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes