uipath 2.0.22__tar.gz → 2.0.24__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 uipath might be problematic. Click here for more details.

Files changed (129) hide show
  1. {uipath-2.0.22 → uipath-2.0.24}/PKG-INFO +1 -1
  2. {uipath-2.0.22 → uipath-2.0.24}/pyproject.toml +1 -1
  3. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/cli_invoke.py +2 -3
  4. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/cli_publish.py +55 -18
  5. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/actions_service.py +4 -4
  6. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/assets_service.py +14 -6
  7. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/buckets_service.py +16 -7
  8. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/connections_service.py +20 -4
  9. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/context_grounding_service.py +12 -12
  10. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/folder_service.py +1 -1
  11. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/jobs_service.py +1 -1
  12. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/llm_gateway_service.py +5 -5
  13. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/processes_service.py +2 -2
  14. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/queues_service.py +12 -12
  15. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_utils/_user_agent.py +4 -1
  16. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/tracing/_traced.py +9 -4
  17. {uipath-2.0.22 → uipath-2.0.24}/uv.lock +1 -1
  18. {uipath-2.0.22 → uipath-2.0.24}/.cursorrules +0 -0
  19. {uipath-2.0.22 → uipath-2.0.24}/.editorconfig +0 -0
  20. {uipath-2.0.22 → uipath-2.0.24}/.gitattributes +0 -0
  21. {uipath-2.0.22 → uipath-2.0.24}/.github/workflows/build.yml +0 -0
  22. {uipath-2.0.22 → uipath-2.0.24}/.github/workflows/cd.yml +0 -0
  23. {uipath-2.0.22 → uipath-2.0.24}/.github/workflows/ci.yml +0 -0
  24. {uipath-2.0.22 → uipath-2.0.24}/.github/workflows/commitlint.yml +0 -0
  25. {uipath-2.0.22 → uipath-2.0.24}/.github/workflows/lint.yml +0 -0
  26. {uipath-2.0.22 → uipath-2.0.24}/.github/workflows/publish-dev.yml +0 -0
  27. {uipath-2.0.22 → uipath-2.0.24}/.github/workflows/test.yml +0 -0
  28. {uipath-2.0.22 → uipath-2.0.24}/.gitignore +0 -0
  29. {uipath-2.0.22 → uipath-2.0.24}/.pre-commit-config.yaml +0 -0
  30. {uipath-2.0.22 → uipath-2.0.24}/.python-version +0 -0
  31. {uipath-2.0.22 → uipath-2.0.24}/.vscode/extensions.json +0 -0
  32. {uipath-2.0.22 → uipath-2.0.24}/.vscode/settings.json +0 -0
  33. {uipath-2.0.22 → uipath-2.0.24}/CONTRIBUTING.md +0 -0
  34. {uipath-2.0.22 → uipath-2.0.24}/LICENSE +0 -0
  35. {uipath-2.0.22 → uipath-2.0.24}/README.md +0 -0
  36. {uipath-2.0.22 → uipath-2.0.24}/docs/CONTRIBUTING.md +0 -0
  37. {uipath-2.0.22 → uipath-2.0.24}/docs/actions.md +0 -0
  38. {uipath-2.0.22 → uipath-2.0.24}/docs/assets/uipath-logo.svg +0 -0
  39. {uipath-2.0.22 → uipath-2.0.24}/docs/assets.md +0 -0
  40. {uipath-2.0.22 → uipath-2.0.24}/docs/buckets.md +0 -0
  41. {uipath-2.0.22 → uipath-2.0.24}/docs/connections.md +0 -0
  42. {uipath-2.0.22 → uipath-2.0.24}/docs/context_grounding.md +0 -0
  43. {uipath-2.0.22 → uipath-2.0.24}/docs/getting_started_agent.md +0 -0
  44. {uipath-2.0.22 → uipath-2.0.24}/docs/getting_started_cli.md +0 -0
  45. {uipath-2.0.22 → uipath-2.0.24}/docs/getting_started_sdk.md +0 -0
  46. {uipath-2.0.22 → uipath-2.0.24}/docs/index.md +0 -0
  47. {uipath-2.0.22 → uipath-2.0.24}/docs/jobs.md +0 -0
  48. {uipath-2.0.22 → uipath-2.0.24}/docs/processes.md +0 -0
  49. {uipath-2.0.22 → uipath-2.0.24}/docs/queues.md +0 -0
  50. {uipath-2.0.22 → uipath-2.0.24}/docs/sdk.md +0 -0
  51. {uipath-2.0.22 → uipath-2.0.24}/justfile +0 -0
  52. {uipath-2.0.22 → uipath-2.0.24}/mkdocs.yml +0 -0
  53. {uipath-2.0.22 → uipath-2.0.24}/py.typed +0 -0
  54. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/__init__.py +0 -0
  55. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/README.md +0 -0
  56. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/__init__.py +0 -0
  57. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  58. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_auth/_models.py +0 -0
  59. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  60. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  61. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_auth/_utils.py +0 -0
  62. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_auth/auth_config.json +0 -0
  63. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_auth/index.html +0 -0
  64. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_auth/localhost.crt +0 -0
  65. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_auth/localhost.key +0 -0
  66. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  67. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_runtime/_logging.py +0 -0
  68. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  69. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  70. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_templates/.rels.template +0 -0
  71. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  72. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_templates/main.py.template +0 -0
  73. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  74. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_utils/_common.py +0 -0
  75. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_utils/_folders.py +0 -0
  76. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_utils/_input_args.py +0 -0
  77. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  78. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/_utils/_processes.py +0 -0
  79. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/cli_auth.py +0 -0
  80. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/cli_deploy.py +0 -0
  81. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/cli_init.py +0 -0
  82. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/cli_new.py +0 -0
  83. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/cli_pack.py +0 -0
  84. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/cli_run.py +0 -0
  85. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/middlewares.py +0 -0
  86. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_cli/spinner.py +0 -0
  87. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_config.py +0 -0
  88. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_execution_context.py +0 -0
  89. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_folder_context.py +0 -0
  90. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/__init__.py +0 -0
  91. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/_base_service.py +0 -0
  92. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/api_client.py +0 -0
  93. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_services/connections_service.pyi +0 -0
  94. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_uipath.py +0 -0
  95. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_utils/__init__.py +0 -0
  96. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_utils/_endpoint.py +0 -0
  97. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_utils/_infer_bindings.py +0 -0
  98. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_utils/_logs.py +0 -0
  99. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_utils/_request_override.py +0 -0
  100. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_utils/_request_spec.py +0 -0
  101. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/_utils/constants.py +0 -0
  102. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/__init__.py +0 -0
  103. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/action_schema.py +0 -0
  104. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/actions.py +0 -0
  105. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/assets.py +0 -0
  106. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/connections.py +0 -0
  107. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/context_grounding.py +0 -0
  108. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/context_grounding_index.py +0 -0
  109. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/exceptions.py +0 -0
  110. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/interrupt_models.py +0 -0
  111. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/job.py +0 -0
  112. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/llm_gateway.py +0 -0
  113. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/processes.py +0 -0
  114. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/models/queues.py +0 -0
  115. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/py.typed +0 -0
  116. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/tracing/__init__.py +0 -0
  117. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/tracing/_otel_exporters.py +0 -0
  118. {uipath-2.0.22 → uipath-2.0.24}/src/uipath/tracing/_utils.py +0 -0
  119. {uipath-2.0.22 → uipath-2.0.24}/tests/__init__.py +0 -0
  120. {uipath-2.0.22 → uipath-2.0.24}/tests/cli/test_init.py +0 -0
  121. {uipath-2.0.22 → uipath-2.0.24}/tests/conftest.py +0 -0
  122. {uipath-2.0.22 → uipath-2.0.24}/tests/sdk/services/test_llm_integration.py +0 -0
  123. {uipath-2.0.22 → uipath-2.0.24}/tests/sdk/services/test_llm_service.py +0 -0
  124. {uipath-2.0.22 → uipath-2.0.24}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  125. {uipath-2.0.22 → uipath-2.0.24}/tests/sdk/test_config.py +0 -0
  126. {uipath-2.0.22 → uipath-2.0.24}/tests/tracing/test_otel_exporters.py +0 -0
  127. {uipath-2.0.22 → uipath-2.0.24}/tests/tracing/test_span_utils.py +0 -0
  128. {uipath-2.0.22 → uipath-2.0.24}/tests/tracing/test_traced.py +0 -0
  129. {uipath-2.0.22 → uipath-2.0.24}/tests/tracing/test_tracing_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath
3
- Version: 2.0.22
3
+ Version: 2.0.24
4
4
  Summary: Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools.
5
5
  Project-URL: Homepage, https://uipath.com
6
6
  Project-URL: Repository, https://github.com/UiPath/uipath-python
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.0.22"
3
+ version = "2.0.24"
4
4
  description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools."
5
5
  readme = { file = "README.md", content-type = "text/markdown" }
6
6
  requires-python = ">=3.10"
@@ -86,15 +86,14 @@ def invoke(entrypoint: Optional[str], input: Optional[str]) -> None:
86
86
  click.Abort()
87
87
  if job_key:
88
88
  job_url = f"{base_url}/orchestrator_/jobs(sidepanel:sidepanel/jobs/{job_key}/details)?fid={personal_workspace_folder_id}"
89
- click.echo("\n✨ Job started successfully!")
89
+ click.echo("✨ Job started successfully!")
90
90
  click.echo(
91
- "\n🔗 Monitor your job here: "
91
+ "🔗 Monitor your job here: "
92
92
  + click.style(
93
93
  f"\u001b]8;;{job_url}\u001b\\{job_url}\u001b]8;;\u001b\\",
94
94
  fg="bright_blue",
95
95
  bold=True,
96
96
  )
97
- + "\n"
98
97
  )
99
98
  else:
100
99
  click.echo(f"\n❌ Error starting job: {response.text}")
@@ -30,6 +30,31 @@ def get_most_recent_package():
30
30
  return nupkg_files_with_time[0][0]
31
31
 
32
32
 
33
+ def get_available_feeds(
34
+ base_url: str, headers: dict[str, str]
35
+ ) -> list[tuple[str, str]]:
36
+ url = f"{base_url}/orchestrator_/api/PackageFeeds/GetFeeds"
37
+ response = requests.get(url, headers=headers)
38
+ if response.status_code != 200:
39
+ click.echo(
40
+ f"❌ Failed to fetch available feeds. Status code: {response.status_code}"
41
+ )
42
+ if response.text:
43
+ click.echo(response.text)
44
+ click.get_current_context().exit(1)
45
+ try:
46
+ available_feeds = [
47
+ feed for feed in response.json() if feed["purpose"] == "Processes"
48
+ ]
49
+ return [(feed["name"], feed["id"]) for feed in available_feeds]
50
+ except Exception as e:
51
+ click.echo(
52
+ "❌ Failed to deserialize available feeds.",
53
+ )
54
+ click.echo(e)
55
+ click.get_current_context().exit(1)
56
+
57
+
33
58
  @click.command()
34
59
  @click.option(
35
60
  "--tenant",
@@ -39,8 +64,8 @@ def get_most_recent_package():
39
64
  help="Whether to publish to the tenant package feed",
40
65
  )
41
66
  @click.option(
42
- "--personal-workspace",
43
- "-p",
67
+ "--my-workspace",
68
+ "-w",
44
69
  "feed",
45
70
  flag_value="personal",
46
71
  help="Whether to publish to the personal workspace",
@@ -49,13 +74,25 @@ def publish(feed):
49
74
  spinner = Spinner()
50
75
  current_path = os.getcwd()
51
76
  load_dotenv(os.path.join(current_path, ".env"), override=True)
77
+ [base_url, token] = get_env_vars()
78
+ headers = {"Authorization": f"Bearer {token}"}
52
79
  if feed is None:
53
- click.echo("Select feed type:")
54
- click.echo(" 0: Tenant package feed")
55
- click.echo(" 1: Personal workspace")
80
+ available_feeds = get_available_feeds(base_url, headers)
81
+ click.echo("👇 Select package feed:")
82
+ for idx, feed in enumerate(available_feeds, start=0):
83
+ click.echo(f" {idx}: {feed[0]}")
56
84
  feed_idx = click.prompt("Select feed", type=int)
57
- feed = "tenant" if feed_idx == 0 else "personal"
58
- click.echo(f"Selected feed: {feed}")
85
+ if feed_idx < 0:
86
+ click.echo(" Invalid input")
87
+ click.get_current_context().exit(1)
88
+ try:
89
+ selected_feed = available_feeds[feed_idx]
90
+ feed = selected_feed[1]
91
+ except IndexError:
92
+ click.echo("❌ Invalid feed selected")
93
+ click.get_current_context().exit(1)
94
+
95
+ click.echo(f"Selected feed: {click.style(str(selected_feed[0]), fg='cyan')}")
59
96
 
60
97
  os.makedirs(".uipath", exist_ok=True)
61
98
 
@@ -71,19 +108,19 @@ def publish(feed):
71
108
 
72
109
  package_to_publish_path = os.path.join(".uipath", most_recent)
73
110
 
74
- [base_url, token] = get_env_vars(spinner)
75
-
76
111
  url = f"{base_url}/orchestrator_/odata/Processes/UiPath.Server.Configuration.OData.UploadPackage()"
112
+ is_personal_workspace = False
77
113
 
78
- if feed == "personal":
79
- # Get current user extended info to get personal workspace ID
114
+ if feed and feed != "tenant":
115
+ # Check user personal workspace
80
116
  personal_workspace_feed_id, personal_workspace_folder_id = (
81
117
  get_personal_workspace_info(base_url, token, spinner)
82
118
  )
83
-
84
- url = url + "?feedId=" + personal_workspace_feed_id
85
-
86
- headers = {"Authorization": f"Bearer {token}"}
119
+ if feed == "personal" or feed == personal_workspace_feed_id:
120
+ is_personal_workspace = True
121
+ url = url + "?feedId=" + personal_workspace_feed_id
122
+ else:
123
+ url = url + "?feedId=" + feed
87
124
 
88
125
  with open(package_to_publish_path, "rb") as f:
89
126
  files = {"file": (package_to_publish_path, f, "application/octet-stream")}
@@ -95,7 +132,7 @@ def publish(feed):
95
132
  click.echo(
96
133
  click.style("✓ ", fg="green", bold=True) + "Package published successfully!"
97
134
  )
98
- if feed == "personal":
135
+ if is_personal_workspace:
99
136
  try:
100
137
  data = json.loads(response.text)
101
138
  package_name = json.loads(data["value"][0]["Body"])["Id"]
@@ -108,7 +145,7 @@ def publish(feed):
108
145
  if release_id:
109
146
  process_url = f"{base_url}/orchestrator_/processes/{release_id}/edit?fid={personal_workspace_folder_id}"
110
147
  click.echo(
111
- "\n🔧 Configure your process: "
148
+ "🔧 Configure your process: "
112
149
  + click.style(
113
150
  f"\u001b]8;;{process_url}\u001b\\{process_url}\u001b]8;;\u001b\\",
114
151
  fg="bright_blue",
@@ -116,7 +153,7 @@ def publish(feed):
116
153
  )
117
154
  )
118
155
  click.echo(
119
- "\n💡 Use the link above to configure any environment variables\n"
156
+ "💡 Use the link above to configure any environment variables"
120
157
  )
121
158
  else:
122
159
  click.echo("⚠️ Warning: Failed to compose process url")
@@ -176,7 +176,7 @@ class ActionsService(FolderContext, BaseService):
176
176
  """
177
177
  super().__init__(config=config, execution_context=execution_context)
178
178
 
179
- @traced(run_type="uipath", hide_input=True, hide_output=True)
179
+ @traced(name="actions_create", run_type="uipath")
180
180
  async def create_async(
181
181
  self,
182
182
  title: str,
@@ -234,7 +234,7 @@ class ActionsService(FolderContext, BaseService):
234
234
  await self.request_async(spec.method, spec.endpoint, content=spec.content)
235
235
  return Action.model_validate(json_response)
236
236
 
237
- @traced(run_type="uipath", hide_input=True, hide_output=True)
237
+ @traced(name="actions_create", run_type="uipath")
238
238
  def create(
239
239
  self,
240
240
  title: str,
@@ -292,7 +292,7 @@ class ActionsService(FolderContext, BaseService):
292
292
  self.request(spec.method, spec.endpoint, content=spec.content)
293
293
  return Action.model_validate(json_response)
294
294
 
295
- @traced(run_type="uipath", hide_input=True, hide_output=True)
295
+ @traced(name="actions_retrieve", run_type="uipath")
296
296
  def retrieve(
297
297
  self, action_key: str, app_folder_path: str = "", app_folder_key: str = ""
298
298
  ) -> Action:
@@ -317,7 +317,7 @@ class ActionsService(FolderContext, BaseService):
317
317
 
318
318
  return Action.model_validate(response.json())
319
319
 
320
- @traced(run_type="uipath", hide_input=True, hide_output=True)
320
+ @traced(name="actions_retrieve", run_type="uipath")
321
321
  async def retrieve_async(
322
322
  self, action_key: str, app_folder_path: str = "", app_folder_key: str = ""
323
323
  ) -> Action:
@@ -22,7 +22,9 @@ class AssetsService(FolderContext, BaseService):
22
22
  super().__init__(config=config, execution_context=execution_context)
23
23
 
24
24
  @infer_bindings()
25
- @traced(run_type="uipath", hide_input=True, hide_output=True)
25
+ @traced(
26
+ name="assets_retrieve", run_type="uipath", hide_input=True, hide_output=True
27
+ )
26
28
  def retrieve(
27
29
  self,
28
30
  name: str,
@@ -58,7 +60,9 @@ class AssetsService(FolderContext, BaseService):
58
60
 
59
61
  return UserAsset.model_validate(response.json())
60
62
 
61
- @traced(run_type="uipath", hide_input=True, hide_output=True)
63
+ @traced(
64
+ name="assets_retrieve", run_type="uipath", hide_input=True, hide_output=True
65
+ )
62
66
  async def retrieve_async(
63
67
  self,
64
68
  name: str,
@@ -86,7 +90,9 @@ class AssetsService(FolderContext, BaseService):
86
90
  return UserAsset.model_validate(response.json())
87
91
 
88
92
  @infer_bindings()
89
- @traced(run_type="uipath", hide_input=True, hide_output=True)
93
+ @traced(
94
+ name="assets_credential", run_type="uipath", hide_input=True, hide_output=True
95
+ )
90
96
  def retrieve_credential(
91
97
  self,
92
98
  name: str,
@@ -122,7 +128,9 @@ class AssetsService(FolderContext, BaseService):
122
128
  return user_asset.credential_password
123
129
 
124
130
  @infer_bindings()
125
- @traced(run_type="uipath", hide_input=True, hide_output=True)
131
+ @traced(
132
+ name="assets_credential", run_type="uipath", hide_input=True, hide_output=True
133
+ )
126
134
  async def retrieve_credential_async(
127
135
  self,
128
136
  name: str,
@@ -158,7 +166,7 @@ class AssetsService(FolderContext, BaseService):
158
166
 
159
167
  return user_asset.credential_password
160
168
 
161
- @traced(run_type="uipath", hide_input=True, hide_output=True)
169
+ @traced(name="assets_update", run_type="uipath", hide_input=True, hide_output=True)
162
170
  def update(
163
171
  self,
164
172
  robot_asset: UserAsset,
@@ -187,7 +195,7 @@ class AssetsService(FolderContext, BaseService):
187
195
  headers=spec.headers,
188
196
  )
189
197
 
190
- @traced(run_type="uipath", hide_input=True, hide_output=True)
198
+ @traced(name="assets_update", run_type="uipath", hide_input=True, hide_output=True)
191
199
  async def update_async(
192
200
  self,
193
201
  robot_asset: UserAsset,
@@ -10,6 +10,11 @@ from ..tracing._traced import traced
10
10
  from ._base_service import BaseService
11
11
 
12
12
 
13
+ def _upload_from_memory_input_processor(inputs: Dict[str, Any]) -> Dict[str, Any]:
14
+ inputs["content"] = "<Redacted>"
15
+ return inputs
16
+
17
+
13
18
  class BucketsService(FolderContext, BaseService):
14
19
  """Service for managing UiPath storage buckets.
15
20
 
@@ -20,7 +25,7 @@ class BucketsService(FolderContext, BaseService):
20
25
  def __init__(self, config: Config, execution_context: ExecutionContext) -> None:
21
26
  super().__init__(config=config, execution_context=execution_context)
22
27
 
23
- @traced(run_type="uipath", hide_input=True, hide_output=True)
28
+ @traced(name="buckets_download", run_type="uipath")
24
29
  def download(
25
30
  self,
26
31
  bucket_key: str,
@@ -59,7 +64,7 @@ class BucketsService(FolderContext, BaseService):
59
64
  file_content = request("GET", read_uri, headers=headers).content
60
65
  file.write(file_content)
61
66
 
62
- @traced(run_type="uipath", hide_input=True, hide_output=True)
67
+ @traced(name="buckets_upload", run_type="uipath")
63
68
  def upload(
64
69
  self,
65
70
  *,
@@ -111,7 +116,11 @@ class BucketsService(FolderContext, BaseService):
111
116
  else:
112
117
  request("PUT", write_uri, headers=headers, files={"file": file})
113
118
 
114
- @traced(run_type="uipath", hide_input=True, hide_output=True)
119
+ @traced(
120
+ name="buckets_upload_from_memory",
121
+ run_type="uipath",
122
+ input_processor=_upload_from_memory_input_processor,
123
+ )
115
124
  def upload_from_memory(
116
125
  self,
117
126
  *,
@@ -167,7 +176,7 @@ class BucketsService(FolderContext, BaseService):
167
176
  request("PUT", write_uri, headers=headers, content=content)
168
177
 
169
178
  @infer_bindings()
170
- @traced(run_type="uipath", hide_input=True, hide_output=True)
179
+ @traced(name="buckets_retrieve", run_type="uipath")
171
180
  def retrieve(self, name: str) -> Any:
172
181
  """Retrieve bucket information by its name.
173
182
 
@@ -192,7 +201,7 @@ class BucketsService(FolderContext, BaseService):
192
201
  return response.json()["value"][0]
193
202
 
194
203
  @infer_bindings()
195
- @traced(run_type="uipath", hide_input=True, hide_output=True)
204
+ @traced(name="buckets_retrieve", run_type="uipath")
196
205
  async def retrieve_async(self, name: str) -> Any:
197
206
  """Asynchronously retrieve bucket information by its name.
198
207
 
@@ -216,7 +225,7 @@ class BucketsService(FolderContext, BaseService):
216
225
 
217
226
  return response.json()["value"][0]
218
227
 
219
- @traced(run_type="uipath", hide_input=True, hide_output=True)
228
+ @traced(name="buckets_retrieve_by_key", run_type="uipath")
220
229
  def retrieve_by_key(self, key: str) -> Any:
221
230
  """Retrieve bucket information by its key.
222
231
 
@@ -236,7 +245,7 @@ class BucketsService(FolderContext, BaseService):
236
245
 
237
246
  return response.json()
238
247
 
239
- @traced(run_type="uipath", hide_input=True, hide_output=True)
248
+ @traced(name="buckets_retrieve_by_key", run_type="uipath")
240
249
  async def retrieve_by_key_async(self, key: str) -> Any:
241
250
  """Asynchronously retrieve bucket information by its key.
242
251
 
@@ -73,7 +73,11 @@ class ConnectionsService(BaseService):
73
73
  except AttributeError as e:
74
74
  raise PluginNotFoundError(f"Plugin '{name}' is not installed") from e
75
75
 
76
- @traced(run_type="uipath", hide_input=True, hide_output=True)
76
+ @traced(
77
+ name="connections_retrieve",
78
+ run_type="uipath",
79
+ hide_output=True,
80
+ )
77
81
  def retrieve(self, key: str) -> Connection:
78
82
  """Retrieve connection details by its key.
79
83
 
@@ -91,7 +95,11 @@ class ConnectionsService(BaseService):
91
95
  response = self.request(spec.method, url=spec.endpoint)
92
96
  return Connection.model_validate(response.json())
93
97
 
94
- @traced(run_type="uipath", hide_input=True, hide_output=True)
98
+ @traced(
99
+ name="connections_retrieve",
100
+ run_type="uipath",
101
+ hide_output=True,
102
+ )
95
103
  async def retrieve_async(self, key: str) -> Connection:
96
104
  """Asynchronously retrieve connection details by its key.
97
105
 
@@ -109,7 +117,11 @@ class ConnectionsService(BaseService):
109
117
  response = await self.request_async(spec.method, url=spec.endpoint)
110
118
  return Connection.model_validate(response.json())
111
119
 
112
- @traced(run_type="uipath", hide_input=True, hide_output=True)
120
+ @traced(
121
+ name="connections_retrieve_token",
122
+ run_type="uipath",
123
+ hide_output=True,
124
+ )
113
125
  def retrieve_token(self, key: str) -> ConnectionToken:
114
126
  """Retrieve an authentication token for a connection.
115
127
 
@@ -128,7 +140,11 @@ class ConnectionsService(BaseService):
128
140
  response = self.request(spec.method, url=spec.endpoint, params=spec.params)
129
141
  return ConnectionToken.model_validate(response.json())
130
142
 
131
- @traced(run_type="uipath", hide_input=True, hide_output=True)
143
+ @traced(
144
+ name="connections_retrieve_token",
145
+ run_type="uipath",
146
+ hide_output=True,
147
+ )
132
148
  async def retrieve_token_async(self, key: str) -> ConnectionToken:
133
149
  """Asynchronously retrieve an authentication token for a connection.
134
150
 
@@ -42,7 +42,7 @@ class ContextGroundingService(FolderContext, BaseService):
42
42
  self._folders_service = folders_service
43
43
  super().__init__(config=config, execution_context=execution_context)
44
44
 
45
- @traced(run_type="uipath", hide_input=True, hide_output=True)
45
+ @traced(name="contextgrounding_retrieve", run_type="uipath")
46
46
  def retrieve(
47
47
  self,
48
48
  name: str,
@@ -82,7 +82,7 @@ class ContextGroundingService(FolderContext, BaseService):
82
82
  None,
83
83
  )
84
84
 
85
- @traced(run_type="uipath", hide_input=True, hide_output=True)
85
+ @traced(name="contextgrounding_retrieve", run_type="uipath")
86
86
  async def retrieve_async(
87
87
  self,
88
88
  name: str,
@@ -124,7 +124,7 @@ class ContextGroundingService(FolderContext, BaseService):
124
124
  None,
125
125
  )
126
126
 
127
- @traced(run_type="uipath", hide_input=True, hide_output=True)
127
+ @traced(name="contextgrounding_retrieve_by_id", run_type="uipath")
128
128
  def retrieve_by_id(
129
129
  self,
130
130
  id: str,
@@ -154,7 +154,7 @@ class ContextGroundingService(FolderContext, BaseService):
154
154
  params=spec.params,
155
155
  ).json()
156
156
 
157
- @traced(run_type="uipath", hide_input=True, hide_output=True)
157
+ @traced(name="contextgrounding_retrieve_by_id", run_type="uipath")
158
158
  async def retrieve_by_id_async(
159
159
  self,
160
160
  id: str,
@@ -187,7 +187,7 @@ class ContextGroundingService(FolderContext, BaseService):
187
187
 
188
188
  return response.json()
189
189
 
190
- @traced(run_type="uipath", hide_input=True, hide_output=True)
190
+ @traced(name="contextgrounding_search", run_type="uipath")
191
191
  def search(
192
192
  self,
193
193
  name: str,
@@ -234,7 +234,7 @@ class ContextGroundingService(FolderContext, BaseService):
234
234
  response.json()
235
235
  )
236
236
 
237
- @traced(run_type="uipath", hide_input=True, hide_output=True)
237
+ @traced(name="contextgrounding_search", run_type="uipath")
238
238
  async def search_async(
239
239
  self,
240
240
  name: str,
@@ -284,7 +284,7 @@ class ContextGroundingService(FolderContext, BaseService):
284
284
  response.json()
285
285
  )
286
286
 
287
- @traced(run_type="uipath", hide_input=True, hide_output=True)
287
+ @traced(name="contextgrounding_get_or_create_index", run_type="uipath")
288
288
  def get_or_create_index(
289
289
  self,
290
290
  name: str,
@@ -321,7 +321,7 @@ class ContextGroundingService(FolderContext, BaseService):
321
321
  ).json()
322
322
  return ContextGroundingIndex.model_validate(response)
323
323
 
324
- @traced(run_type="uipath", hide_input=True, hide_output=True)
324
+ @traced(name="contextgrounding_get_or_create_index", run_type="uipath")
325
325
  async def get_or_create_index_async(
326
326
  self,
327
327
  name: str,
@@ -360,7 +360,7 @@ class ContextGroundingService(FolderContext, BaseService):
360
360
  ).json()
361
361
  return ContextGroundingIndex.model_validate(response)
362
362
 
363
- @traced(run_type="uipath", hide_input=True, hide_output=True)
363
+ @traced(name="contextgrounding_ingest_data", run_type="uipath")
364
364
  def ingest_data(
365
365
  self,
366
366
  index: ContextGroundingIndex,
@@ -380,7 +380,7 @@ class ContextGroundingService(FolderContext, BaseService):
380
380
  headers=spec.headers,
381
381
  )
382
382
 
383
- @traced(run_type="uipath", hide_input=True, hide_output=True)
383
+ @traced(name="contextgrounding_ingest_data", run_type="uipath")
384
384
  async def ingest_data_async(
385
385
  self,
386
386
  index: ContextGroundingIndex,
@@ -400,7 +400,7 @@ class ContextGroundingService(FolderContext, BaseService):
400
400
  headers=spec.headers,
401
401
  )
402
402
 
403
- @traced(run_type="uipath", hide_input=True, hide_output=True)
403
+ @traced(name="contextgrounding_delete_index", run_type="uipath")
404
404
  def delete_index(
405
405
  self,
406
406
  index: ContextGroundingIndex,
@@ -420,7 +420,7 @@ class ContextGroundingService(FolderContext, BaseService):
420
420
  headers=spec.headers,
421
421
  )
422
422
 
423
- @traced(run_type="uipath", hide_input=True, hide_output=True)
423
+ @traced(name="contextgrounding_delete_index", run_type="uipath")
424
424
  async def delete_index_async(
425
425
  self,
426
426
  index: ContextGroundingIndex,
@@ -33,7 +33,7 @@ class FolderService(BaseService):
33
33
  def __init__(self, config: Config, execution_context: ExecutionContext) -> None:
34
34
  super().__init__(config=config, execution_context=execution_context)
35
35
 
36
- @traced(run_type="uipath")
36
+ @traced(name="folder_retrieve_key_by_folder_path", run_type="uipath")
37
37
  def retrieve_key_by_folder_path(self, folder_path: str) -> Optional[str]:
38
38
  spec = _retrieve_spec(folder_path)
39
39
  response = self.request(
@@ -27,7 +27,7 @@ class JobsService(FolderContext, BaseService):
27
27
  @overload
28
28
  def resume(self, *, job_id: str, payload: Any) -> None: ...
29
29
 
30
- @traced(run_type="uipath", hide_input=True, hide_output=True)
30
+ @traced(name="jobs_resume", run_type="uipath")
31
31
  def resume(
32
32
  self,
33
33
  *,
@@ -54,7 +54,7 @@ class UiPathOpenAIService(BaseService):
54
54
  def __init__(self, config: Config, execution_context: ExecutionContext) -> None:
55
55
  super().__init__(config=config, execution_context=execution_context)
56
56
 
57
- @traced(run_type="uipath", hide_input=True, hide_output=True)
57
+ @traced(name="llm_embeddings_usage", run_type="uipath")
58
58
  async def embeddings_usage(
59
59
  self, input: str, embedding_model: str = EmbeddingModels.text_embedding_ada_002
60
60
  ):
@@ -81,7 +81,7 @@ class UiPathOpenAIService(BaseService):
81
81
 
82
82
  return UsageInfo.model_validate(response.json())
83
83
 
84
- @traced(run_type="uipath", hide_input=True, hide_output=True)
84
+ @traced(name="llm_embeddings", run_type="uipath")
85
85
  async def embeddings(
86
86
  self, input: str, embedding_model: str = EmbeddingModels.text_embedding_ada_002
87
87
  ):
@@ -107,7 +107,7 @@ class UiPathOpenAIService(BaseService):
107
107
 
108
108
  return TextEmbedding.model_validate(response.json())
109
109
 
110
- @traced(run_type="uipath", hide_input=True, hide_output=True)
110
+ @traced(name="llm_chat_completions", run_type="uipath")
111
111
  async def chat_completions(
112
112
  self,
113
113
  messages: List[Dict[str, str]],
@@ -157,7 +157,7 @@ class UiPathOpenAIService(BaseService):
157
157
 
158
158
  return ChatCompletion.model_validate(response.json())
159
159
 
160
- @traced(run_type="uipath", hide_input=True, hide_output=True)
160
+ @traced(name="llm_chat_completions_usage", run_type="uipath")
161
161
  async def chat_completions_usage(
162
162
  self,
163
163
  messages: List[Dict[str, str]],
@@ -216,7 +216,7 @@ class UiPathLlmChatService(BaseService):
216
216
  def __init__(self, config: Config, execution_context: ExecutionContext) -> None:
217
217
  super().__init__(config=config, execution_context=execution_context)
218
218
 
219
- @traced(run_type="uipath", hide_input=True, hide_output=True)
219
+ @traced(name="llm_chat_completions", run_type="uipath")
220
220
  async def chat_completions(
221
221
  self,
222
222
  messages: List[Dict[str, str]],
@@ -23,7 +23,7 @@ class ProcessesService(FolderContext, BaseService):
23
23
  def __init__(self, config: Config, execution_context: ExecutionContext) -> None:
24
24
  super().__init__(config=config, execution_context=execution_context)
25
25
 
26
- @traced(run_type="uipath", hide_input=True, hide_output=True)
26
+ @traced(name="processes_invoke", run_type="uipath")
27
27
  def invoke(
28
28
  self,
29
29
  name: str,
@@ -81,7 +81,7 @@ class ProcessesService(FolderContext, BaseService):
81
81
  return Job.model_validate(response.json()["value"][0])
82
82
 
83
83
  @infer_bindings()
84
- @traced(run_type="uipath", hide_input=True, hide_output=True)
84
+ @traced(name="processes_invoke", run_type="uipath")
85
85
  async def invoke_async(
86
86
  self,
87
87
  name: str,
@@ -21,7 +21,7 @@ class QueuesService(FolderContext, BaseService):
21
21
  def __init__(self, config: Config, execution_context: ExecutionContext) -> None:
22
22
  super().__init__(config=config, execution_context=execution_context)
23
23
 
24
- @traced(run_type="uipath", hide_input=True, hide_output=True)
24
+ @traced(name="queues_list_items", run_type="uipath")
25
25
  def list_items(self) -> Response:
26
26
  """Retrieves a list of queue items from the Orchestrator.
27
27
 
@@ -31,7 +31,7 @@ class QueuesService(FolderContext, BaseService):
31
31
  spec = self._list_items_spec()
32
32
  return self.request(spec.method, url=spec.endpoint)
33
33
 
34
- @traced(run_type="uipath", hide_input=True, hide_output=True)
34
+ @traced(name="queues_list_items", run_type="uipath")
35
35
  async def list_items_async(self) -> Response:
36
36
  """Asynchronously retrieves a list of queue items from the Orchestrator.
37
37
 
@@ -41,7 +41,7 @@ class QueuesService(FolderContext, BaseService):
41
41
  spec = self._list_items_spec()
42
42
  return await self.request_async(spec.method, url=spec.endpoint)
43
43
 
44
- @traced(run_type="uipath", hide_input=True, hide_output=True)
44
+ @traced(name="queues_create_item", run_type="uipath")
45
45
  def create_item(self, item: Union[Dict[str, Any], QueueItem]) -> Response:
46
46
  """Creates a new queue item in the Orchestrator.
47
47
 
@@ -56,7 +56,7 @@ class QueuesService(FolderContext, BaseService):
56
56
  spec = self._create_item_spec(item)
57
57
  return self.request(spec.method, url=spec.endpoint, json=spec.json)
58
58
 
59
- @traced(run_type="uipath", hide_input=True, hide_output=True)
59
+ @traced(name="queues_create_item", run_type="uipath")
60
60
  async def create_item_async(
61
61
  self, item: Union[Dict[str, Any], QueueItem]
62
62
  ) -> Response:
@@ -73,7 +73,7 @@ class QueuesService(FolderContext, BaseService):
73
73
  spec = self._create_item_spec(item)
74
74
  return await self.request_async(spec.method, url=spec.endpoint, json=spec.json)
75
75
 
76
- @traced(run_type="uipath", hide_input=True, hide_output=True)
76
+ @traced(name="queues_create_items", run_type="uipath")
77
77
  def create_items(
78
78
  self,
79
79
  items: List[Union[Dict[str, Any], QueueItem]],
@@ -93,7 +93,7 @@ class QueuesService(FolderContext, BaseService):
93
93
  spec = self._create_items_spec(items, queue_name, commit_type)
94
94
  return self.request(spec.method, url=spec.endpoint, json=spec.json)
95
95
 
96
- @traced(run_type="uipath", hide_input=True, hide_output=True)
96
+ @traced(name="queues_create_items", run_type="uipath")
97
97
  async def create_items_async(
98
98
  self,
99
99
  items: List[Union[Dict[str, Any], QueueItem]],
@@ -113,7 +113,7 @@ class QueuesService(FolderContext, BaseService):
113
113
  spec = self._create_items_spec(items, queue_name, commit_type)
114
114
  return await self.request_async(spec.method, url=spec.endpoint, json=spec.json)
115
115
 
116
- @traced(run_type="uipath", hide_input=True, hide_output=True)
116
+ @traced(name="queues_create_transaction_item", run_type="uipath")
117
117
  def create_transaction_item(
118
118
  self, item: Union[Dict[str, Any], TransactionItem], no_robot: bool = False
119
119
  ) -> Response:
@@ -129,7 +129,7 @@ class QueuesService(FolderContext, BaseService):
129
129
  spec = self._create_transaction_item_spec(item, no_robot)
130
130
  return self.request(spec.method, url=spec.endpoint, json=spec.json)
131
131
 
132
- @traced(run_type="uipath", hide_input=True, hide_output=True)
132
+ @traced(name="queues_create_transaction_item", run_type="uipath")
133
133
  async def create_transaction_item_async(
134
134
  self, item: Union[Dict[str, Any], TransactionItem], no_robot: bool = False
135
135
  ) -> Response:
@@ -145,7 +145,7 @@ class QueuesService(FolderContext, BaseService):
145
145
  spec = self._create_transaction_item_spec(item, no_robot)
146
146
  return await self.request_async(spec.method, url=spec.endpoint, json=spec.json)
147
147
 
148
- @traced(run_type="uipath", hide_input=True, hide_output=True)
148
+ @traced(name="queues_update_progress_of_transaction_item", run_type="uipath")
149
149
  def update_progress_of_transaction_item(
150
150
  self, transaction_key: str, progress: str
151
151
  ) -> Response:
@@ -163,7 +163,7 @@ class QueuesService(FolderContext, BaseService):
163
163
  spec = self._update_progress_of_transaction_item_spec(transaction_key, progress)
164
164
  return self.request(spec.method, url=spec.endpoint, json=spec.json)
165
165
 
166
- @traced(run_type="uipath", hide_input=True, hide_output=True)
166
+ @traced(name="queues_update_progress_of_transaction_item", run_type="uipath")
167
167
  async def update_progress_of_transaction_item_async(
168
168
  self, transaction_key: str, progress: str
169
169
  ) -> Response:
@@ -181,7 +181,7 @@ class QueuesService(FolderContext, BaseService):
181
181
  spec = self._update_progress_of_transaction_item_spec(transaction_key, progress)
182
182
  return await self.request_async(spec.method, url=spec.endpoint, json=spec.json)
183
183
 
184
- @traced(run_type="uipath", hide_input=True, hide_output=True)
184
+ @traced(name="queues_complete_transaction_item", run_type="uipath")
185
185
  def complete_transaction_item(
186
186
  self, transaction_key: str, result: Union[Dict[str, Any], TransactionItemResult]
187
187
  ) -> Response:
@@ -199,7 +199,7 @@ class QueuesService(FolderContext, BaseService):
199
199
  spec = self._complete_transaction_item_spec(transaction_key, result)
200
200
  return self.request(spec.method, url=spec.endpoint, json=spec.json)
201
201
 
202
- @traced(run_type="uipath", hide_input=True, hide_output=True)
202
+ @traced(name="queues_complete_transaction_item", run_type="uipath")
203
203
  async def complete_transaction_item_async(
204
204
  self, transaction_key: str, result: Union[Dict[str, Any], TransactionItemResult]
205
205
  ) -> Response:
@@ -7,7 +7,10 @@ def user_agent_value(specific_component: str) -> str:
7
7
  product = "UiPath.Python.Sdk"
8
8
  product_component = f"UiPath.Python.Sdk.Activities.{specific_component}"
9
9
 
10
- version = importlib.metadata.version("uipath")
10
+ try:
11
+ version = importlib.metadata.version("uipath")
12
+ except importlib.metadata.PackageNotFoundError:
13
+ version = "unknown"
11
14
 
12
15
  return f"{product}/{product_component}/{version}"
13
16
 
@@ -125,6 +125,7 @@ def wait_for_tracers():
125
125
 
126
126
 
127
127
  def _opentelemetry_traced(
128
+ name: Optional[str] = None,
128
129
  run_type: Optional[str] = None,
129
130
  span_type: Optional[str] = None,
130
131
  input_processor: Optional[Callable[..., Any]] = None,
@@ -133,9 +134,11 @@ def _opentelemetry_traced(
133
134
  """Default tracer implementation using OpenTelemetry."""
134
135
 
135
136
  def decorator(func):
137
+ trace_name = name if name is not None else func.__name__
138
+
136
139
  @wraps(func)
137
140
  def sync_wrapper(*args, **kwargs):
138
- with tracer.start_as_current_span(func.__name__) as span:
141
+ with tracer.start_as_current_span(trace_name) as span:
139
142
  default_span_type = "function_call_sync"
140
143
  span.set_attribute(
141
144
  "span_type",
@@ -170,7 +173,7 @@ def _opentelemetry_traced(
170
173
 
171
174
  @wraps(func)
172
175
  async def async_wrapper(*args, **kwargs):
173
- with tracer.start_as_current_span(func.__name__) as span:
176
+ with tracer.start_as_current_span(trace_name) as span:
174
177
  default_span_type = "function_call_async"
175
178
  span.set_attribute(
176
179
  "span_type",
@@ -205,7 +208,7 @@ def _opentelemetry_traced(
205
208
 
206
209
  @wraps(func)
207
210
  def generator_wrapper(*args, **kwargs):
208
- with tracer.start_as_current_span(func.__name__) as span:
211
+ with tracer.start_as_current_span(trace_name) as span:
209
212
  default_span_type = "function_call_generator_sync"
210
213
  span.set_attribute(
211
214
  "span_type",
@@ -246,7 +249,7 @@ def _opentelemetry_traced(
246
249
 
247
250
  @wraps(func)
248
251
  async def async_generator_wrapper(*args, **kwargs):
249
- with tracer.start_as_current_span(func.__name__) as span:
252
+ with tracer.start_as_current_span(trace_name) as span:
250
253
  default_span_type = "function_call_generator_async"
251
254
  span.set_attribute(
252
255
  "span_type",
@@ -298,6 +301,7 @@ def _opentelemetry_traced(
298
301
 
299
302
 
300
303
  def traced(
304
+ name: Optional[str] = None,
301
305
  run_type: Optional[str] = None,
302
306
  span_type: Optional[str] = None,
303
307
  input_processor: Optional[Callable[..., Any]] = None,
@@ -325,6 +329,7 @@ def traced(
325
329
 
326
330
  # Store the parameters for later reapplication
327
331
  params = {
332
+ "name": name,
328
333
  "run_type": run_type,
329
334
  "span_type": span_type,
330
335
  "input_processor": input_processor,
@@ -2393,7 +2393,7 @@ wheels = [
2393
2393
 
2394
2394
  [[package]]
2395
2395
  name = "uipath"
2396
- version = "2.0.22"
2396
+ version = "2.0.24"
2397
2397
  source = { editable = "." }
2398
2398
  dependencies = [
2399
2399
  { name = "click" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes