uipath 2.0.41__tar.gz → 2.0.43__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 (143) hide show
  1. {uipath-2.0.41 → uipath-2.0.43}/PKG-INFO +1 -1
  2. {uipath-2.0.41 → uipath-2.0.43}/docs/javascripts/extra.js +6 -0
  3. {uipath-2.0.41 → uipath-2.0.43}/docs/stylesheets/extra.css +35 -4
  4. {uipath-2.0.41 → uipath-2.0.43}/mkdocs.yml +3 -0
  5. {uipath-2.0.41 → uipath-2.0.43}/pyproject.toml +2 -1
  6. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/cli_pack.py +14 -2
  7. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/_base_service.py +3 -0
  8. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/actions_service.py +12 -5
  9. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/assets_service.py +109 -60
  10. uipath-2.0.43/src/uipath/_services/buckets_service.py +518 -0
  11. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/context_grounding_service.py +205 -112
  12. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_uipath.py +13 -1
  13. uipath-2.0.43/src/uipath/_utils/_read_overwrites.py +141 -0
  14. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/context_grounding_index.py +1 -0
  15. uipath-2.0.43/src/uipath/models/exceptions.py +13 -0
  16. uipath-2.0.43/tests/sdk/test_overwrites.py +122 -0
  17. {uipath-2.0.41 → uipath-2.0.43}/uv.lock +17 -1
  18. uipath-2.0.41/src/uipath/_services/buckets_service.py +0 -285
  19. uipath-2.0.41/src/uipath/models/exceptions.py +0 -6
  20. {uipath-2.0.41 → uipath-2.0.43}/.cursorrules +0 -0
  21. {uipath-2.0.41 → uipath-2.0.43}/.editorconfig +0 -0
  22. {uipath-2.0.41 → uipath-2.0.43}/.gitattributes +0 -0
  23. {uipath-2.0.41 → uipath-2.0.43}/.github/workflows/build.yml +0 -0
  24. {uipath-2.0.41 → uipath-2.0.43}/.github/workflows/cd.yml +0 -0
  25. {uipath-2.0.41 → uipath-2.0.43}/.github/workflows/ci.yml +0 -0
  26. {uipath-2.0.41 → uipath-2.0.43}/.github/workflows/commitlint.yml +0 -0
  27. {uipath-2.0.41 → uipath-2.0.43}/.github/workflows/lint.yml +0 -0
  28. {uipath-2.0.41 → uipath-2.0.43}/.github/workflows/publish-dev.yml +0 -0
  29. {uipath-2.0.41 → uipath-2.0.43}/.github/workflows/publish-docs.yml +0 -0
  30. {uipath-2.0.41 → uipath-2.0.43}/.github/workflows/slack.yml +0 -0
  31. {uipath-2.0.41 → uipath-2.0.43}/.github/workflows/test.yml +0 -0
  32. {uipath-2.0.41 → uipath-2.0.43}/.gitignore +0 -0
  33. {uipath-2.0.41 → uipath-2.0.43}/.pre-commit-config.yaml +0 -0
  34. {uipath-2.0.41 → uipath-2.0.43}/.python-version +0 -0
  35. {uipath-2.0.41 → uipath-2.0.43}/.vscode/extensions.json +0 -0
  36. {uipath-2.0.41 → uipath-2.0.43}/.vscode/settings.json +0 -0
  37. {uipath-2.0.41 → uipath-2.0.43}/CONTRIBUTING.md +0 -0
  38. {uipath-2.0.41 → uipath-2.0.43}/LICENSE +0 -0
  39. {uipath-2.0.41 → uipath-2.0.43}/README.md +0 -0
  40. {uipath-2.0.41 → uipath-2.0.43}/docs/CONTRIBUTING.md +0 -0
  41. {uipath-2.0.41 → uipath-2.0.43}/docs/assets/favicon.png +0 -0
  42. {uipath-2.0.41 → uipath-2.0.43}/docs/assets/logo-dark.svg +0 -0
  43. {uipath-2.0.41 → uipath-2.0.43}/docs/assets/logo-light.svg +0 -0
  44. {uipath-2.0.41 → uipath-2.0.43}/docs/cli/index.md +0 -0
  45. {uipath-2.0.41 → uipath-2.0.43}/docs/core/actions.md +0 -0
  46. {uipath-2.0.41 → uipath-2.0.43}/docs/core/assets.md +0 -0
  47. {uipath-2.0.41 → uipath-2.0.43}/docs/core/buckets.md +0 -0
  48. {uipath-2.0.41 → uipath-2.0.43}/docs/core/connections.md +0 -0
  49. {uipath-2.0.41 → uipath-2.0.43}/docs/core/context_grounding.md +0 -0
  50. {uipath-2.0.41 → uipath-2.0.43}/docs/core/getting_started.md +0 -0
  51. {uipath-2.0.41 → uipath-2.0.43}/docs/core/jobs.md +0 -0
  52. {uipath-2.0.41 → uipath-2.0.43}/docs/core/processes.md +0 -0
  53. {uipath-2.0.41 → uipath-2.0.43}/docs/core/queues.md +0 -0
  54. {uipath-2.0.41 → uipath-2.0.43}/docs/hooks.py +0 -0
  55. {uipath-2.0.41 → uipath-2.0.43}/docs/langchain/chat_models.md +0 -0
  56. {uipath-2.0.41 → uipath-2.0.43}/docs/langchain/context_grounding.md +0 -0
  57. {uipath-2.0.41 → uipath-2.0.43}/docs/langchain/human_in_the_loop.md +0 -0
  58. {uipath-2.0.41 → uipath-2.0.43}/docs/overrides/partials/logo.html +0 -0
  59. {uipath-2.0.41 → uipath-2.0.43}/docs/release_policy.md +0 -0
  60. {uipath-2.0.41 → uipath-2.0.43}/justfile +0 -0
  61. {uipath-2.0.41 → uipath-2.0.43}/py.typed +0 -0
  62. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/__init__.py +0 -0
  63. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/README.md +0 -0
  64. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/__init__.py +0 -0
  65. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  66. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_auth/_models.py +0 -0
  67. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  68. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  69. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_auth/_utils.py +0 -0
  70. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_auth/auth_config.json +0 -0
  71. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_auth/index.html +0 -0
  72. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_auth/localhost.crt +0 -0
  73. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_auth/localhost.key +0 -0
  74. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  75. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_runtime/_logging.py +0 -0
  76. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  77. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  78. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_templates/.rels.template +0 -0
  79. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  80. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_templates/main.py.template +0 -0
  81. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  82. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_utils/_common.py +0 -0
  83. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_utils/_console.py +0 -0
  84. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_utils/_folders.py +0 -0
  85. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_utils/_input_args.py +0 -0
  86. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  87. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/_utils/_processes.py +0 -0
  88. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/cli_auth.py +0 -0
  89. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/cli_deploy.py +0 -0
  90. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/cli_init.py +0 -0
  91. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/cli_invoke.py +0 -0
  92. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/cli_new.py +0 -0
  93. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/cli_publish.py +0 -0
  94. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/cli_run.py +0 -0
  95. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/middlewares.py +0 -0
  96. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_cli/spinner.py +0 -0
  97. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_config.py +0 -0
  98. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_execution_context.py +0 -0
  99. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_folder_context.py +0 -0
  100. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/__init__.py +0 -0
  101. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/api_client.py +0 -0
  102. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/connections_service.py +0 -0
  103. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/folder_service.py +0 -0
  104. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/jobs_service.py +0 -0
  105. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/llm_gateway_service.py +0 -0
  106. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/processes_service.py +0 -0
  107. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_services/queues_service.py +0 -0
  108. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_utils/__init__.py +0 -0
  109. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_utils/_endpoint.py +0 -0
  110. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_utils/_infer_bindings.py +0 -0
  111. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_utils/_logs.py +0 -0
  112. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_utils/_request_override.py +0 -0
  113. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_utils/_request_spec.py +0 -0
  114. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_utils/_user_agent.py +0 -0
  115. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/_utils/constants.py +0 -0
  116. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/__init__.py +0 -0
  117. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/action_schema.py +0 -0
  118. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/actions.py +0 -0
  119. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/assets.py +0 -0
  120. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/connections.py +0 -0
  121. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/context_grounding.py +0 -0
  122. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/errors.py +0 -0
  123. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/interrupt_models.py +0 -0
  124. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/job.py +0 -0
  125. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/llm_gateway.py +0 -0
  126. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/processes.py +0 -0
  127. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/models/queues.py +0 -0
  128. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/py.typed +0 -0
  129. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/tracing/__init__.py +0 -0
  130. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/tracing/_otel_exporters.py +0 -0
  131. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/tracing/_traced.py +0 -0
  132. {uipath-2.0.41 → uipath-2.0.43}/src/uipath/tracing/_utils.py +0 -0
  133. {uipath-2.0.41 → uipath-2.0.43}/tests/__init__.py +0 -0
  134. {uipath-2.0.41 → uipath-2.0.43}/tests/cli/test_init.py +0 -0
  135. {uipath-2.0.41 → uipath-2.0.43}/tests/conftest.py +0 -0
  136. {uipath-2.0.41 → uipath-2.0.43}/tests/sdk/services/test_llm_integration.py +0 -0
  137. {uipath-2.0.41 → uipath-2.0.43}/tests/sdk/services/test_llm_service.py +0 -0
  138. {uipath-2.0.41 → uipath-2.0.43}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  139. {uipath-2.0.41 → uipath-2.0.43}/tests/sdk/test_config.py +0 -0
  140. {uipath-2.0.41 → uipath-2.0.43}/tests/tracing/test_otel_exporters.py +0 -0
  141. {uipath-2.0.41 → uipath-2.0.43}/tests/tracing/test_span_utils.py +0 -0
  142. {uipath-2.0.41 → uipath-2.0.43}/tests/tracing/test_traced.py +0 -0
  143. {uipath-2.0.41 → uipath-2.0.43}/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.41
3
+ Version: 2.0.43
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
@@ -33,3 +33,9 @@ observer.observe(document.body, {
33
33
  attributes: true,
34
34
  attributeFilter: ["data-md-color-media"],
35
35
  });
36
+
37
+ document$.subscribe(() => {
38
+ document.querySelectorAll(".headerlink").forEach((link) => {
39
+ link.setAttribute("data-clipboard-text", link.href);
40
+ });
41
+ });
@@ -17,6 +17,16 @@
17
17
  background-color: #ffffff !important;
18
18
  color: #182027 !important;
19
19
  }
20
+
21
+ .md-nav__item--section {
22
+ &:after {
23
+ background-color: #182027 !important;
24
+ }
25
+
26
+ &>.md-nav__link[for] {
27
+ color: #182027 !important;
28
+ }
29
+ }
20
30
  }
21
31
 
22
32
  [data-md-color-scheme=slate] {
@@ -41,7 +51,15 @@
41
51
  color: #ffffff !important;
42
52
  }
43
53
 
54
+ .md-nav__item--section {
55
+ &:after {
56
+ background-color: #ffffff !important;
57
+ }
44
58
 
59
+ &>.md-nav__link[for] {
60
+ color: #ffffff !important;
61
+ }
62
+ }
45
63
  }
46
64
 
47
65
  .md-header {
@@ -62,8 +80,7 @@
62
80
  a[href^="https://"]:not(.md-source) {
63
81
  &::after {
64
82
  content: "↗";
65
- font-size: 0.8em;
66
- margin-left: 0.2em;
83
+ font-size: 1em;
67
84
  }
68
85
  }
69
86
 
@@ -103,9 +120,23 @@ a[href^="https://"]:not(.md-source) {
103
120
 
104
121
 
105
122
  @media (min-width: 1220px) {
106
- .md-sidebar {
123
+ .md-sidebar--primary {
107
124
  .md-nav__title {
108
125
  display: none;
109
126
  }
110
127
  }
111
- }
128
+
129
+ .md-nav__item--section {
130
+ position: relative;
131
+
132
+ &:after {
133
+ content: "";
134
+ position: absolute;
135
+ bottom: 0;
136
+ left: 0;
137
+ display: block;
138
+ height: 1px;
139
+ width: 25%;
140
+ }
141
+ }
142
+ }
@@ -99,6 +99,8 @@ plugins:
99
99
  - "$"
100
100
  - ">"
101
101
  - social
102
+ - open-in-new-tab
103
+
102
104
  markdown_extensions:
103
105
  - attr_list
104
106
  - md_in_html
@@ -132,3 +134,4 @@ markdown_extensions:
132
134
  alternate_style: true
133
135
  - toc:
134
136
  title: On this page
137
+ permalink: true
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.0.41"
3
+ version = "2.0.43"
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"
@@ -57,6 +57,7 @@ dev = [
57
57
  "mkdocs-simple-hooks>=0.1.5",
58
58
  "mkdocs-click>=0.9.0",
59
59
  "pytest-asyncio>=0.26.0",
60
+ "mkdocs-open-in-new-tab>=1.0.8",
60
61
  ]
61
62
 
62
63
  [project.optional-dependencies]
@@ -201,6 +201,14 @@ def generate_package_descriptor_content(entryPoints):
201
201
  return package_descriptor_content
202
202
 
203
203
 
204
+ def is_venv_dir(d):
205
+ return (
206
+ os.path.exists(os.path.join(d, "Scripts", "activate"))
207
+ if os.name == "nt"
208
+ else os.path.exists(os.path.join(d, "bin", "activate"))
209
+ )
210
+
211
+
204
212
  def pack_fn(projectName, description, entryPoints, version, authors, directory):
205
213
  operate_file = generate_operate_file(entryPoints)
206
214
  entrypoints_file = generate_entrypoints_file(entryPoints)
@@ -264,8 +272,12 @@ def pack_fn(projectName, description, entryPoints, version, authors, directory):
264
272
 
265
273
  # Walk through directory and add all files with extensions in the allowlist
266
274
  for root, dirs, files in os.walk(directory):
267
- # Skip all directories that start with .
268
- dirs[:] = [d for d in dirs if not d.startswith(".")]
275
+ # Skip all directories that start with . or are a venv
276
+ dirs[:] = [
277
+ d
278
+ for d in dirs
279
+ if not d.startswith(".") and not is_venv_dir(os.path.join(root, d))
280
+ ]
269
281
 
270
282
  for file in files:
271
283
  file_extension = os.path.splitext(file)[1].lower()
@@ -18,6 +18,8 @@ from tenacity import (
18
18
  wait_exponential,
19
19
  )
20
20
 
21
+ from uipath._utils._read_overwrites import OverwritesManager
22
+
21
23
  from .._config import Config
22
24
  from .._execution_context import ExecutionContext
23
25
  from .._utils import user_agent_value
@@ -51,6 +53,7 @@ class BaseService:
51
53
  base_url=org_scope_base_url, headers=self.default_headers
52
54
  )
53
55
 
56
+ self._overwrites_manager = OverwritesManager()
54
57
  self._logger.debug(f"HEADERS: {self.default_headers}")
55
58
 
56
59
  super().__init__()
@@ -415,11 +415,18 @@ class ActionsService(FolderContext, BaseService):
415
415
  if len(deployed_apps) > 1 and not app_folder_path:
416
416
  raise Exception("Multiple app schemas found")
417
417
  try:
418
- return next(
419
- app
420
- for app in deployed_apps
421
- if app["deploymentFolder"]["fullyQualifiedName"] == app_folder_path
422
- )
418
+ if app_folder_path:
419
+ return next(
420
+ app
421
+ for app in deployed_apps
422
+ if app["deploymentFolder"]["fullyQualifiedName"] == app_folder_path
423
+ )
424
+ else:
425
+ return next(
426
+ app
427
+ for app in deployed_apps
428
+ if app["deploymentFolder"]["key"] == self._folder_key
429
+ )
423
430
  except StopIteration:
424
431
  raise KeyError from StopIteration
425
432
 
@@ -6,6 +6,7 @@ from .._config import Config
6
6
  from .._execution_context import ExecutionContext
7
7
  from .._folder_context import FolderContext
8
8
  from .._utils import Endpoint, RequestSpec, header_folder, infer_bindings
9
+ from .._utils._read_overwrites import OverwritesManager, read_resource_overwrites
9
10
  from ..models import UserAsset
10
11
  from ..tracing._traced import traced
11
12
  from ._base_service import BaseService
@@ -20,6 +21,8 @@ class AssetsService(FolderContext, BaseService):
20
21
 
21
22
  def __init__(self, config: Config, execution_context: ExecutionContext) -> None:
22
23
  super().__init__(config=config, execution_context=execution_context)
24
+ self._overwrites_manager = OverwritesManager()
25
+ self._base_url = "assets"
23
26
 
24
27
  @infer_bindings()
25
28
  @traced(
@@ -53,12 +56,23 @@ class AssetsService(FolderContext, BaseService):
53
56
  client.assets.retrieve(name="MyAsset")
54
57
  ```
55
58
  """
56
- spec = self._retrieve_spec(name, folder_key=folder_key, folder_path=folder_path)
57
- response = self.request(
58
- spec.method, url=spec.endpoint, content=spec.content, headers=spec.headers
59
- )
60
-
61
- return UserAsset.model_validate(response.json())
59
+ with read_resource_overwrites("asset", name, folder_path) as (
60
+ overwritten_name,
61
+ overwritten_folder_path,
62
+ ):
63
+ spec = self._retrieve_spec(
64
+ overwritten_name,
65
+ folder_key=folder_key,
66
+ folder_path=overwritten_folder_path,
67
+ )
68
+ response = self.request(
69
+ spec.method,
70
+ url=spec.endpoint,
71
+ content=spec.content,
72
+ headers=spec.headers,
73
+ )
74
+
75
+ return UserAsset.model_validate(response.json())
62
76
 
63
77
  @traced(
64
78
  name="assets_retrieve", run_type="uipath", hide_input=True, hide_output=True
@@ -82,12 +96,23 @@ class AssetsService(FolderContext, BaseService):
82
96
  Returns:
83
97
  UserAsset: The asset data.
84
98
  """
85
- spec = self._retrieve_spec(name, folder_key=folder_key, folder_path=folder_path)
86
- response = await self.request_async(
87
- spec.method, url=spec.endpoint, content=spec.content, headers=spec.headers
88
- )
89
-
90
- return UserAsset.model_validate(response.json())
99
+ with read_resource_overwrites("asset", name, folder_path) as (
100
+ overwritten_name,
101
+ overwritten_folder_path,
102
+ ):
103
+ spec = self._retrieve_spec(
104
+ overwritten_name,
105
+ folder_key=folder_key,
106
+ folder_path=overwritten_folder_path,
107
+ )
108
+ response = await self.request_async(
109
+ spec.method,
110
+ url=spec.endpoint,
111
+ content=spec.content,
112
+ headers=spec.headers,
113
+ )
114
+
115
+ return UserAsset.model_validate(response.json())
91
116
 
92
117
  @infer_bindings()
93
118
  @traced(
@@ -114,18 +139,26 @@ class AssetsService(FolderContext, BaseService):
114
139
  Returns:
115
140
  Optional[str]: The decrypted credential password.
116
141
  """
117
- spec = self._retrieve_spec(name, folder_key=folder_key, folder_path=folder_path)
118
-
119
- response = self.request(
120
- spec.method,
121
- url=spec.endpoint,
122
- content=spec.content,
123
- headers=spec.headers,
124
- )
125
-
126
- user_asset = UserAsset.model_validate(response.json())
127
-
128
- return user_asset.credential_password
142
+ with read_resource_overwrites("asset", name, folder_path) as (
143
+ overwritten_name,
144
+ overwritten_folder_path,
145
+ ):
146
+ spec = self._retrieve_spec(
147
+ overwritten_name,
148
+ folder_key=folder_key,
149
+ folder_path=overwritten_folder_path,
150
+ )
151
+
152
+ response = self.request(
153
+ spec.method,
154
+ url=spec.endpoint,
155
+ content=spec.content,
156
+ headers=spec.headers,
157
+ )
158
+
159
+ user_asset = UserAsset.model_validate(response.json())
160
+
161
+ return user_asset.credential_password
129
162
 
130
163
  @infer_bindings()
131
164
  @traced(
@@ -153,18 +186,26 @@ class AssetsService(FolderContext, BaseService):
153
186
  Optional[str]: The decrypted credential password.
154
187
 
155
188
  """
156
- spec = self._retrieve_spec(name, folder_key=folder_key, folder_path=folder_path)
157
-
158
- response = await self.request_async(
159
- spec.method,
160
- url=spec.endpoint,
161
- content=spec.content,
162
- headers=spec.headers,
163
- )
164
-
165
- user_asset = UserAsset.model_validate(response.json())
166
-
167
- return user_asset.credential_password
189
+ with read_resource_overwrites("asset", name, folder_path) as (
190
+ overwritten_name,
191
+ overwritten_folder_path,
192
+ ):
193
+ spec = self._retrieve_spec(
194
+ overwritten_name,
195
+ folder_key=folder_key,
196
+ folder_path=overwritten_folder_path,
197
+ )
198
+
199
+ response = await self.request_async(
200
+ spec.method,
201
+ url=spec.endpoint,
202
+ content=spec.content,
203
+ headers=spec.headers,
204
+ )
205
+
206
+ user_asset = UserAsset.model_validate(response.json())
207
+
208
+ return user_asset.credential_password
168
209
 
169
210
  @traced(name="assets_update", run_type="uipath", hide_input=True, hide_output=True)
170
211
  def update(
@@ -184,18 +225,22 @@ class AssetsService(FolderContext, BaseService):
184
225
  Returns:
185
226
  Response: The HTTP response confirming the update.
186
227
  """
187
- spec = self._update_spec(
188
- robot_asset, folder_key=folder_key, folder_path=folder_path
189
- )
190
-
191
- response = self.request(
192
- spec.method,
193
- url=spec.endpoint,
194
- content=spec.content,
195
- headers=spec.headers,
196
- )
197
-
198
- return response.json()
228
+ with read_resource_overwrites("asset", robot_asset.name or "", folder_path) as (
229
+ overwritten_name,
230
+ overwritten_folder_path,
231
+ ):
232
+ spec = self._update_spec(
233
+ robot_asset, folder_key=folder_key, folder_path=overwritten_folder_path
234
+ )
235
+
236
+ response = self.request(
237
+ spec.method,
238
+ url=spec.endpoint,
239
+ content=spec.content,
240
+ headers=spec.headers,
241
+ )
242
+
243
+ return response.json()
199
244
 
200
245
  @traced(name="assets_update", run_type="uipath", hide_input=True, hide_output=True)
201
246
  async def update_async(
@@ -215,18 +260,22 @@ class AssetsService(FolderContext, BaseService):
215
260
  Returns:
216
261
  Response: The HTTP response confirming the update.
217
262
  """
218
- spec = self._update_spec(
219
- robot_asset, folder_key=folder_key, folder_path=folder_path
220
- )
221
-
222
- response = await self.request_async(
223
- spec.method,
224
- url=spec.endpoint,
225
- content=spec.content,
226
- headers=spec.headers,
227
- )
228
-
229
- return response.json()
263
+ with read_resource_overwrites("asset", robot_asset.name or "", folder_path) as (
264
+ overwritten_name,
265
+ overwritten_folder_path,
266
+ ):
267
+ spec = self._update_spec(
268
+ robot_asset, folder_key=folder_key, folder_path=overwritten_folder_path
269
+ )
270
+
271
+ response = await self.request_async(
272
+ spec.method,
273
+ url=spec.endpoint,
274
+ content=spec.content,
275
+ headers=spec.headers,
276
+ )
277
+
278
+ return response.json()
230
279
 
231
280
  @property
232
281
  def custom_headers(self) -> Dict[str, str]: