Skip to content

Commit 284f383

Browse files
authored
Merge pull request #995 from UiPath/akshaya/instantiate
fix(instantiation): improving instantiation
2 parents 8d52109 + 43c653e commit 284f383

File tree

4 files changed

+25
-36
lines changed

4 files changed

+25
-36
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "uipath"
3-
version = "2.2.22"
3+
version = "2.2.23"
44
description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools."
55
readme = { file = "README.md", content-type = "text/markdown" }
66
requires-python = ">=3.11"

src/uipath/_cli/_evals/mocks/mockito_mocker.py

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
"""Mockito mocker implementation. https://mockito-python.readthedocs.io/en/latest ."""
22

3+
import importlib
34
from typing import Any, Callable
45

56
from mockito import ( # type: ignore[import-untyped] # explicit ignore
67
invocation,
78
mocking,
89
)
10+
from pydantic import JsonValue
911

1012
from uipath._cli._evals._models._evaluation_set import (
1113
EvaluationItem,
@@ -32,43 +34,30 @@ def func(*_args, **_kwargs):
3234
return func
3335

3436

35-
def _resolve_value(config: Any) -> Any:
36-
# Handle {"_attr_": "mockito.any"}
37-
if isinstance(config, dict) and "_attr_" in config:
38-
attr = config["_attr_"]
39-
if attr == "mockito.any":
40-
from mockito import any as mockito_any
41-
42-
return mockito_any()
43-
44-
# Handle {"_target_": "..."}
45-
if isinstance(config, dict) and "_target_" in config:
46-
target = config["_target_"]
47-
module_path, name = target.rsplit(".", 1)
48-
49-
import importlib
50-
51-
module = importlib.import_module(module_path)
52-
obj = getattr(module, name)
37+
def _resolve_value(config: JsonValue) -> Any:
38+
if isinstance(config, dict):
39+
if "_target_" in config:
40+
target = config["_target_"]
41+
assert isinstance(target, str), (
42+
"Please check mocking configuration -- _target_ must be a string."
43+
)
44+
module_path, name = target.rsplit(".", 1)
5345

54-
args = [_resolve_value(v) for v in config.get("_args_", [])]
55-
kwargs = {
56-
k: _resolve_value(v)
57-
for k, v in config.items()
58-
if k not in ("_target_", "_args_")
59-
}
60-
return obj(*args, **kwargs)
46+
module = importlib.import_module(module_path)
47+
obj = getattr(module, name)
6148

62-
if isinstance(config, dict):
63-
return {k: _resolve_value(v) for k, v in config.items()}
49+
kwargs = {
50+
k: _resolve_value(v) for k, v in config.items() if k != "_target_"
51+
}
52+
return obj(**kwargs)
53+
else:
54+
return {k: _resolve_value(v) for k, v in config.items()}
6455

65-
if isinstance(config, list):
56+
elif isinstance(config, list):
6657
return [_resolve_value(v) for v in config]
6758

68-
if isinstance(config, tuple):
69-
return tuple(_resolve_value(v) for v in config)
70-
71-
return config
59+
else:
60+
return config
7261

7362

7463
class MockitoMocker(Mocker):

tests/cli/eval/mocks/test_mocks.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def foofoo(*args, **kwargs):
7171
assert foo(x=1) == "bar1"
7272

7373
evaluation.mocking_strategy.behaviors[0].arguments.kwargs = {
74-
"x": {"_attr_": "mockito.any"}
74+
"x": {"_target_": "mockito.any"}
7575
}
7676
set_execution_context(evaluation, _mock_span_collector, "test-execution-id")
7777
assert foo(x=2) == "bar1"
@@ -129,7 +129,7 @@ async def foofoo(*args, **kwargs):
129129
assert await foo(x=1) == "bar1"
130130

131131
evaluation.mocking_strategy.behaviors[0].arguments.kwargs = {
132-
"x": {"_attr_": "mockito.any"}
132+
"x": {"_target_": "mockito.any"}
133133
}
134134
set_execution_context(evaluation, _mock_span_collector, "test-execution-id")
135135
assert await foo(x=2) == "bar1"

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)