uipath 2.0.54__tar.gz → 2.0.55__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 (188) hide show
  1. {uipath-2.0.54 → uipath-2.0.55}/PKG-INFO +1 -1
  2. uipath-2.0.55/docs/core/attachments.md +86 -0
  3. uipath-2.0.55/docs/core/traced.md +121 -0
  4. uipath-2.0.55/docs/overrides/partials/actions.html +6 -0
  5. {uipath-2.0.54 → uipath-2.0.55}/docs/stylesheets/extra.css +14 -1
  6. {uipath-2.0.54 → uipath-2.0.55}/mkdocs.yml +1 -0
  7. {uipath-2.0.54 → uipath-2.0.55}/pyproject.toml +1 -1
  8. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_auth/_auth_server.py +5 -16
  9. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_auth/auth_config.json +2 -2
  10. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/cli_auth.py +2 -2
  11. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/cli_run.py +2 -2
  12. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/__init__.py +2 -0
  13. uipath-2.0.55/src/uipath/_services/attachments_service.py +595 -0
  14. uipath-2.0.55/src/uipath/_services/jobs_service.py +521 -0
  15. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_uipath.py +5 -0
  16. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/__init__.py +2 -0
  17. uipath-2.0.55/src/uipath/models/attachment.py +28 -0
  18. uipath-2.0.55/tests/cli/conftest.py +42 -0
  19. uipath-2.0.55/tests/cli/mocks/simple_script.py +25 -0
  20. uipath-2.0.55/tests/cli/mocks/uipath-simple-script-mock.json +41 -0
  21. uipath-2.0.55/tests/cli/test_invoke.py +168 -0
  22. {uipath-2.0.54 → uipath-2.0.55}/tests/cli/test_publish.py +9 -13
  23. uipath-2.0.55/tests/cli/test_run.py +231 -0
  24. uipath-2.0.55/tests/conftest.py +44 -0
  25. uipath-2.0.55/tests/sdk/services/test_attachments_service.py +533 -0
  26. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_jobs_service.py +204 -0
  27. {uipath-2.0.54 → uipath-2.0.55}/uv.lock +1699 -1697
  28. uipath-2.0.54/src/uipath/_services/jobs_service.py +0 -267
  29. uipath-2.0.54/tests/conftest.py +0 -69
  30. {uipath-2.0.54 → uipath-2.0.55}/.cursorrules +0 -0
  31. {uipath-2.0.54 → uipath-2.0.55}/.editorconfig +0 -0
  32. {uipath-2.0.54 → uipath-2.0.55}/.gitattributes +0 -0
  33. {uipath-2.0.54 → uipath-2.0.55}/.github/workflows/build.yml +0 -0
  34. {uipath-2.0.54 → uipath-2.0.55}/.github/workflows/cd.yml +0 -0
  35. {uipath-2.0.54 → uipath-2.0.55}/.github/workflows/ci.yml +0 -0
  36. {uipath-2.0.54 → uipath-2.0.55}/.github/workflows/commitlint.yml +0 -0
  37. {uipath-2.0.54 → uipath-2.0.55}/.github/workflows/lint.yml +0 -0
  38. {uipath-2.0.54 → uipath-2.0.55}/.github/workflows/publish-dev.yml +0 -0
  39. {uipath-2.0.54 → uipath-2.0.55}/.github/workflows/publish-docs.yml +0 -0
  40. {uipath-2.0.54 → uipath-2.0.55}/.github/workflows/slack.yml +0 -0
  41. {uipath-2.0.54 → uipath-2.0.55}/.github/workflows/test.yml +0 -0
  42. {uipath-2.0.54 → uipath-2.0.55}/.gitignore +0 -0
  43. {uipath-2.0.54 → uipath-2.0.55}/.pre-commit-config.yaml +0 -0
  44. {uipath-2.0.54 → uipath-2.0.55}/.python-version +0 -0
  45. {uipath-2.0.54 → uipath-2.0.55}/.vscode/extensions.json +0 -0
  46. {uipath-2.0.54 → uipath-2.0.55}/.vscode/settings.json +0 -0
  47. {uipath-2.0.54 → uipath-2.0.55}/CONTRIBUTING.md +0 -0
  48. {uipath-2.0.54 → uipath-2.0.55}/LICENSE +0 -0
  49. {uipath-2.0.54 → uipath-2.0.55}/README.md +0 -0
  50. {uipath-2.0.54 → uipath-2.0.55}/docs/CONTRIBUTING.md +0 -0
  51. {uipath-2.0.54 → uipath-2.0.55}/docs/FAQ.md +0 -0
  52. {uipath-2.0.54 → uipath-2.0.55}/docs/assets/env-preparation-failed-dark.png +0 -0
  53. {uipath-2.0.54 → uipath-2.0.55}/docs/assets/env-preparation-failed-light.png +0 -0
  54. {uipath-2.0.54 → uipath-2.0.55}/docs/assets/favicon.png +0 -0
  55. {uipath-2.0.54 → uipath-2.0.55}/docs/assets/logo-dark.svg +0 -0
  56. {uipath-2.0.54 → uipath-2.0.55}/docs/assets/logo-light.svg +0 -0
  57. {uipath-2.0.54 → uipath-2.0.55}/docs/cli/index.md +0 -0
  58. {uipath-2.0.54 → uipath-2.0.55}/docs/core/actions.md +0 -0
  59. {uipath-2.0.54 → uipath-2.0.55}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  60. {uipath-2.0.54 → uipath-2.0.55}/docs/core/assets/cloud_env_var_light.gif +0 -0
  61. {uipath-2.0.54 → uipath-2.0.55}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  62. {uipath-2.0.54 → uipath-2.0.55}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  63. {uipath-2.0.54 → uipath-2.0.55}/docs/core/assets/copy_path_dark.png +0 -0
  64. {uipath-2.0.54 → uipath-2.0.55}/docs/core/assets/copy_path_light.png +0 -0
  65. {uipath-2.0.54 → uipath-2.0.55}/docs/core/assets.md +0 -0
  66. {uipath-2.0.54 → uipath-2.0.55}/docs/core/buckets.md +0 -0
  67. {uipath-2.0.54 → uipath-2.0.55}/docs/core/connections.md +0 -0
  68. {uipath-2.0.54 → uipath-2.0.55}/docs/core/context_grounding.md +0 -0
  69. {uipath-2.0.54 → uipath-2.0.55}/docs/core/environment_variables.md +0 -0
  70. {uipath-2.0.54 → uipath-2.0.55}/docs/core/getting_started.md +0 -0
  71. {uipath-2.0.54 → uipath-2.0.55}/docs/core/jobs.md +0 -0
  72. {uipath-2.0.54 → uipath-2.0.55}/docs/core/processes.md +0 -0
  73. {uipath-2.0.54 → uipath-2.0.55}/docs/core/queues.md +0 -0
  74. {uipath-2.0.54 → uipath-2.0.55}/docs/hooks.py +0 -0
  75. {uipath-2.0.54 → uipath-2.0.55}/docs/javascripts/extra.js +0 -0
  76. {uipath-2.0.54 → uipath-2.0.55}/docs/langchain/chat_models.md +0 -0
  77. {uipath-2.0.54 → uipath-2.0.55}/docs/langchain/context_grounding.md +0 -0
  78. {uipath-2.0.54 → uipath-2.0.55}/docs/langchain/human_in_the_loop.md +0 -0
  79. {uipath-2.0.54 → uipath-2.0.55}/docs/overrides/partials/logo.html +0 -0
  80. {uipath-2.0.54 → uipath-2.0.55}/docs/release_policy.md +0 -0
  81. {uipath-2.0.54 → uipath-2.0.55}/justfile +0 -0
  82. {uipath-2.0.54 → uipath-2.0.55}/py.typed +0 -0
  83. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/__init__.py +0 -0
  84. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/README.md +0 -0
  85. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/__init__.py +0 -0
  86. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_auth/_models.py +0 -0
  87. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  88. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  89. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_auth/_utils.py +0 -0
  90. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_auth/index.html +0 -0
  91. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_auth/localhost.crt +0 -0
  92. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_auth/localhost.key +0 -0
  93. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  94. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_runtime/_logging.py +0 -0
  95. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  96. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  97. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_templates/.rels.template +0 -0
  98. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  99. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_templates/main.py.template +0 -0
  100. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  101. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_utils/_common.py +0 -0
  102. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_utils/_console.py +0 -0
  103. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_utils/_folders.py +0 -0
  104. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_utils/_input_args.py +0 -0
  105. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  106. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/_utils/_processes.py +0 -0
  107. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/cli_deploy.py +0 -0
  108. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/cli_init.py +0 -0
  109. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/cli_invoke.py +0 -0
  110. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/cli_new.py +0 -0
  111. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/cli_pack.py +0 -0
  112. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/cli_publish.py +0 -0
  113. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/middlewares.py +0 -0
  114. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_cli/spinner.py +0 -0
  115. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_config.py +0 -0
  116. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_execution_context.py +0 -0
  117. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_folder_context.py +0 -0
  118. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/_base_service.py +0 -0
  119. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/actions_service.py +0 -0
  120. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/api_client.py +0 -0
  121. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/assets_service.py +0 -0
  122. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/buckets_service.py +0 -0
  123. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/connections_service.py +0 -0
  124. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/context_grounding_service.py +0 -0
  125. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/folder_service.py +0 -0
  126. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/llm_gateway_service.py +0 -0
  127. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/processes_service.py +0 -0
  128. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_services/queues_service.py +0 -0
  129. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_utils/__init__.py +0 -0
  130. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_utils/_endpoint.py +0 -0
  131. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_utils/_infer_bindings.py +0 -0
  132. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_utils/_logs.py +0 -0
  133. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_utils/_read_overwrites.py +0 -0
  134. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_utils/_request_override.py +0 -0
  135. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_utils/_request_spec.py +0 -0
  136. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_utils/_url.py +0 -0
  137. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_utils/_user_agent.py +0 -0
  138. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/_utils/constants.py +0 -0
  139. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/action_schema.py +0 -0
  140. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/actions.py +0 -0
  141. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/assets.py +0 -0
  142. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/buckets.py +0 -0
  143. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/connections.py +0 -0
  144. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/context_grounding.py +0 -0
  145. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/context_grounding_index.py +0 -0
  146. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/errors.py +0 -0
  147. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/exceptions.py +0 -0
  148. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/interrupt_models.py +0 -0
  149. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/job.py +0 -0
  150. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/llm_gateway.py +0 -0
  151. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/processes.py +0 -0
  152. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/models/queues.py +0 -0
  153. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/py.typed +0 -0
  154. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/telemetry/__init__.py +0 -0
  155. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/telemetry/_constants.py +0 -0
  156. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/telemetry/_track.py +0 -0
  157. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/tracing/__init__.py +0 -0
  158. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/tracing/_otel_exporters.py +0 -0
  159. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/tracing/_traced.py +0 -0
  160. {uipath-2.0.54 → uipath-2.0.55}/src/uipath/tracing/_utils.py +0 -0
  161. {uipath-2.0.54 → uipath-2.0.55}/tests/__init__.py +0 -0
  162. {uipath-2.0.54 → uipath-2.0.55}/tests/cli/mocks/pyproject.toml +0 -0
  163. {uipath-2.0.54 → uipath-2.0.55}/tests/cli/mocks/uipath-mock.json +0 -0
  164. {uipath-2.0.54 → uipath-2.0.55}/tests/cli/test_init.py +0 -0
  165. {uipath-2.0.54 → uipath-2.0.55}/tests/cli/test_new.py +0 -0
  166. {uipath-2.0.54 → uipath-2.0.55}/tests/cli/test_pack.py +0 -0
  167. {uipath-2.0.54 → uipath-2.0.55}/tests/cli/utils/project_details.py +0 -0
  168. {uipath-2.0.54 → uipath-2.0.55}/tests/cli/utils/uipath_json.py +0 -0
  169. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/conftest.py +0 -0
  170. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_actions_service.py +0 -0
  171. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_api_client.py +0 -0
  172. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_assets_service.py +0 -0
  173. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_base_service.py +0 -0
  174. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_buckets_service.py +0 -0
  175. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_connections_service.py +0 -0
  176. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_context_grounding_service.py +0 -0
  177. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_folder_service.py +0 -0
  178. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_llm_integration.py +0 -0
  179. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_llm_service.py +0 -0
  180. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_processes_service.py +0 -0
  181. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_queues_service.py +0 -0
  182. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  183. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/test_config.py +0 -0
  184. {uipath-2.0.54 → uipath-2.0.55}/tests/sdk/test_overwrites.py +0 -0
  185. {uipath-2.0.54 → uipath-2.0.55}/tests/tracing/test_otel_exporters.py +0 -0
  186. {uipath-2.0.54 → uipath-2.0.55}/tests/tracing/test_span_utils.py +0 -0
  187. {uipath-2.0.54 → uipath-2.0.55}/tests/tracing/test_traced.py +0 -0
  188. {uipath-2.0.54 → uipath-2.0.55}/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.54
3
+ Version: 2.0.55
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
@@ -0,0 +1,86 @@
1
+ # Attachments Service
2
+
3
+ The `AttachmentsService` provides methods to upload, download, and delete attachments in UiPath Orchestrator. Attachments are files that can be associated with jobs, processes, or other entities, and are managed via the Orchestrator API.
4
+
5
+ > **Reference:** [UiPath Orchestrator Attachments API](https://docs.uipath.com/orchestrator/reference/api-attachments)
6
+
7
+ ## Features
8
+ - Upload files or in-memory content as attachments
9
+ - Download attachments to local files
10
+ - Delete attachments
11
+ - Both synchronous and asynchronous methods
12
+
13
+ ## Usage
14
+
15
+ ### Instantiating the Service
16
+
17
+ The `AttachmentsService` is available as a property on the main `UiPath` client:
18
+
19
+ ```python
20
+ from uipath import UiPath
21
+
22
+ client = UiPath()
23
+ attachments = client.attachments
24
+ ```
25
+
26
+ ### Uploading an Attachment
27
+
28
+ You can upload a file from disk or from memory:
29
+
30
+ ```python
31
+ # Upload from file
32
+ attachment_key = client.attachments.upload(
33
+ name="document.pdf",
34
+ source_path="/path/to/document.pdf",
35
+ )
36
+
37
+ # Upload from memory
38
+ attachment_key = client.attachments.upload(
39
+ name="notes.txt",
40
+ content="Some text content",
41
+ )
42
+ ```
43
+
44
+ #### Async Example
45
+ ```python
46
+ attachment_key = await client.attachments.upload_async(
47
+ name="notes.txt",
48
+ content="Some text content",
49
+ )
50
+ ```
51
+
52
+ ### Downloading an Attachment
53
+
54
+ ```python
55
+ attachment_name = client.attachments.download(
56
+ key=attachment_key,
57
+ destination_path="/path/to/save/document.pdf",
58
+ )
59
+ ```
60
+
61
+ #### Async Example
62
+ ```python
63
+ attachment_name = await client.attachments.download_async(
64
+ key=attachment_key,
65
+ destination_path="/path/to/save/document.pdf",
66
+ )
67
+ ```
68
+
69
+ ### Deleting an Attachment
70
+
71
+ ```python
72
+ client.attachments.delete(key=attachment_key)
73
+ ```
74
+
75
+ #### Async Example
76
+ ```python
77
+ await client.attachments.delete_async(key=attachment_key)
78
+ ```
79
+
80
+ ## Error Handling
81
+
82
+ All methods raise exceptions on failure. See the SDK error handling documentation for details.
83
+
84
+ ## See Also
85
+ - [UiPath Orchestrator Attachments API](https://docs.uipath.com/orchestrator/reference/api-attachments)
86
+ - [Jobs Service](./jobs.md) for listing attachments associated with jobs.
@@ -0,0 +1,121 @@
1
+ # Tracing
2
+
3
+ The `traced()` decorator enables automatic tracing of function calls, inputs, and outputs. It is designed to help you monitor, debug, and audit your code by capturing detailed information about function executions, including arguments, return values, and exceptions.
4
+
5
+ You can view the traces of an Orchestrator job by going to the Jobs page, click a job, a side panel will open, and they will be available under the `Trace` tab. These can also be seen in UiPath Maestro when your agent is part of a larger process orchestration.
6
+
7
+ ## Usage
8
+
9
+ Apply the `@traced()` decorator to any function (sync, async, generator, or async generator) to automatically record its execution as a trace span.
10
+
11
+ ```python hl_lines="3 7"
12
+ from uipath.tracing._traced import traced
13
+
14
+ @traced()
15
+ def my_function(x, y):
16
+ return x + y
17
+
18
+ @traced(name="custom_span", run_type="my_type")
19
+ async def my_async_function(a, b):
20
+ return a * b
21
+ ```
22
+
23
+ ## Parameters
24
+
25
+ | Parameter | Type | Description |
26
+ |------------------|-------------------------------------|---------------------------------------------------------------------------------------------------|
27
+ | name | Optional[str] | Custom name for the trace span. Defaults to the function name. |
28
+ | run_type | Optional[str] | Category for the run (e.g., "uipath"). Useful for filtering traces. |
29
+ | span_type | Optional[str] | Custom type for the span. Defaults to function type (sync/async/generator). |
30
+ | input_processor | Optional[Callable[[dict], dict]] | Function to process/transform inputs before recording. Receives a dict of arguments. |
31
+ | output_processor | Optional[Callable[[Any], Any]] | Function to process/transform outputs before recording. Receives the function's return value. |
32
+ | hide_input | bool | If True, input data is redacted in the trace for privacy/security. |
33
+ | hide_output | bool | If True, output data is redacted in the trace for privacy/security. |
34
+
35
+ ## Input and Output Processors
36
+
37
+ Processors allow you to mask, redact, or transform sensitive data before it is recorded in the trace. For example:
38
+
39
+ ```python hl_lines="13"
40
+ def mask_inputs(inputs):
41
+ inputs = inputs.copy()
42
+ if 'password' in inputs:
43
+ inputs['password'] = '***REDACTED***'
44
+ return inputs
45
+
46
+ def anonymize_output(output):
47
+ if isinstance(output, dict) and 'email' in output:
48
+ output = output.copy()
49
+ output['email'] = 'anonymous@example.com'
50
+ return output
51
+
52
+ @traced(input_processor=mask_inputs, output_processor=anonymize_output)
53
+ def login(user, password):
54
+ # ...
55
+ return {"email": user + "@example.com"}
56
+ ```
57
+
58
+ ## Privacy Controls
59
+
60
+ - Set `hide_input=True` to prevent input data from being logged.
61
+ - Set `hide_output=True` to prevent output data from being logged.
62
+
63
+ ```python hl_lines="1"
64
+ @traced(hide_input=True, hide_output=True)
65
+ def sensitive_operation(secret):
66
+ ...
67
+ ```
68
+
69
+ ## Supported Function Types
70
+
71
+ - Regular functions (sync/async)
72
+ - Generator functions (sync/async)
73
+
74
+ ## Example with plain python agents
75
+
76
+ When used with plain python agents please call `wait_for_tracers()` at the end of the script to ensure all traces are sent, if this is not called the agent could end without sending all the traces.
77
+
78
+ ```python hl_lines="3 8"
79
+
80
+ from uipath.tracing import traced, wait_for_tracers
81
+
82
+ @traced(name="process_payment", run_type="payment", hide_input=True)
83
+ def process_payment(card_number, amount):
84
+ # Sensitive input will not be logged
85
+ return {"status": "success", "amount": amount}
86
+
87
+ @traced()
88
+ def main():
89
+ process_payment()
90
+
91
+ def main_wait_traces():
92
+ try:
93
+ main()
94
+ finally:
95
+ # this needs to be called after the last `traced` function is done
96
+ # to ensure the trace associated with main is saved
97
+ wait_for_tracers()
98
+
99
+ if __name__ == "__main__":
100
+ main_wait_traces()
101
+ ```
102
+
103
+
104
+ ## Example with langchain agents
105
+
106
+ When using `uipath-langchain` there is no need to call wait_for_tracers our framework will ensure that is called.
107
+
108
+ ```python hl_lines="1"
109
+ @traced()
110
+ def my_custom_traced_function(input: str) -> str:
111
+ return { "x": "some-output" }
112
+ ```
113
+
114
+ You can also use `@traceable()` attribute from langchain, but we recommend using `@traced()` attribute instead.
115
+
116
+ ```python hl_lines="1"
117
+ @traceable()
118
+ # @traced() ---> do not use both at the same time or it will duplicate spans.
119
+ def my_custom_traced_function(input: str) -> str:
120
+ return { "x": "some-output" }
121
+ ```
@@ -0,0 +1,6 @@
1
+ {% set title = ("[" + (page.title or config.site_name) + "] Your title here") | urlencode %}
2
+ {% set body = ("Page link:: " + config.site_url + page.url + "\n\n ## My Issue/Suggestion") | urlencode %}
3
+ <a href="https://github.com/UiPath/uipath-python/issues/new?title={{ title }}&body={{ body }}"
4
+ class="md-content__button skip-link-icon report-issue-link">
5
+ Report an issue
6
+ </a>
@@ -18,6 +18,10 @@
18
18
  color: #182027 !important;
19
19
  }
20
20
 
21
+ .report-issue-link {
22
+ color: #182027 !important;
23
+ }
24
+
21
25
  .md-nav__item--section {
22
26
  &:after {
23
27
  background-color: #182027 !important;
@@ -51,6 +55,10 @@
51
55
  color: #ffffff !important;
52
56
  }
53
57
 
58
+ .report-issue-link {
59
+ color: #ffffff !important;
60
+ }
61
+
54
62
  .md-nav__item--section {
55
63
  &:after {
56
64
  background-color: #ffffff !important;
@@ -77,7 +85,7 @@
77
85
  opacity: 1 !important;
78
86
  }
79
87
 
80
- a[href^="https://"]:not(.md-source) {
88
+ a[href^="https://"]:not(.md-source):not(.skip-link-icon) {
81
89
  &::after {
82
90
  content: "↗";
83
91
  font-size: 1em;
@@ -139,4 +147,9 @@ a[href^="https://"]:not(.md-source) {
139
147
  width: 25%;
140
148
  }
141
149
  }
150
+ }
151
+
152
+ .report-issue-link {
153
+ text-decoration: underline;
154
+ text-decoration-style: wavy;
142
155
  }
@@ -61,6 +61,7 @@ nav:
61
61
  - Getting Started: core/getting_started.md
62
62
  - Environment Variables: core/environment_variables.md
63
63
  - CLI Reference: cli/index.md
64
+ - Tracing: core/traced.md
64
65
  - Services:
65
66
  - Actions: core/actions.md
66
67
  - Assets: core/assets.md
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.0.54"
3
+ version = "2.0.55"
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"
@@ -2,7 +2,6 @@ import http.server
2
2
  import json
3
3
  import os
4
4
  import socketserver
5
- import ssl
6
5
  import time
7
6
 
8
7
  import click
@@ -109,19 +108,15 @@ def make_request_handler_class(state, code_verifier, token_callback, domain):
109
108
  return SimpleHTTPSRequestHandler
110
109
 
111
110
 
112
- class HTTPSServer:
113
- def __init__(self, port=6234, cert_file="localhost.crt", key_file="localhost.key"):
114
- """Initialize HTTPS server with configurable parameters.
111
+ class HTTPServer:
112
+ def __init__(self, port=6234):
113
+ """Initialize HTTP server with configurable parameters.
115
114
 
116
115
  Args:
117
116
  port (int, optional): Port number to run the server on. Defaults to 6234.
118
- cert_file (str, optional): SSL certificate file. Defaults to "localhost.crt".
119
- key_file (str, optional): SSL key file. Defaults to "localhost.key".
120
117
  """
121
118
  self.current_path = os.path.dirname(os.path.abspath(__file__))
122
119
  self.port = port
123
- self.cert_file = os.path.join(self.current_path, "localhost.crt")
124
- self.key_file = os.path.join(self.current_path, "localhost.key")
125
120
  self.httpd = None
126
121
  self.token_data = None
127
122
  self.should_shutdown = False
@@ -136,7 +131,7 @@ class HTTPSServer:
136
131
  self.should_shutdown = True
137
132
 
138
133
  def create_server(self, state, code_verifier, domain):
139
- """Create and configure the HTTPS server.
134
+ """Create and configure the HTTP server.
140
135
 
141
136
  Args:
142
137
  state (str): The OAuth state parameter.
@@ -144,20 +139,14 @@ class HTTPSServer:
144
139
  domain (str): The domain for authentication.
145
140
 
146
141
  Returns:
147
- socketserver.TCPServer: The configured HTTPS server.
142
+ socketserver.TCPServer: The configured HTTP server.
148
143
  """
149
- # Create SSL context
150
- context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
151
- context.load_cert_chain(self.cert_file, self.key_file)
152
-
153
144
  # Create server with address reuse
154
145
  socketserver.TCPServer.allow_reuse_address = True
155
146
  handler = make_request_handler_class(
156
147
  state, code_verifier, self.token_received_callback, domain
157
148
  )
158
149
  self.httpd = socketserver.TCPServer(("", self.port), handler)
159
- self.httpd.socket = context.wrap_socket(self.httpd.socket, server_side=True)
160
-
161
150
  return self.httpd
162
151
 
163
152
  def start(self, state, code_verifier, domain):
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "client_id": "36dea5b8-e8bb-423d-8e7b-c808df8f1c00",
3
- "redirect_uri": "https://localhost:__PY_REPLACE_PORT__/oidc/login",
3
+ "redirect_uri": "http://localhost:__PY_REPLACE_PORT__/oidc/login",
4
4
  "scope": "offline_access OrchestratorApiUserAccess ConnectionService DataService DocumentUnderstanding EnterpriseContextService Directory JamJamApi LLMGateway LLMOps OMS RCS.FolderAuthorization",
5
5
  "port": 8104
6
- }
6
+ }
@@ -8,7 +8,7 @@ import click
8
8
  from dotenv import load_dotenv
9
9
 
10
10
  from ..telemetry import track
11
- from ._auth._auth_server import HTTPSServer
11
+ from ._auth._auth_server import HTTPServer
12
12
  from ._auth._oidc_utils import get_auth_config, get_auth_url
13
13
  from ._auth._portal_service import PortalService, select_tenant
14
14
  from ._auth._utils import update_auth_file, update_env_file
@@ -97,7 +97,7 @@ def auth(domain, force: None | bool = False):
97
97
  auth_url,
98
98
  )
99
99
 
100
- server = HTTPSServer(port=auth_config["port"])
100
+ server = HTTPServer(port=auth_config["port"])
101
101
  token_data = server.start(state, code_verifier, domain)
102
102
 
103
103
  if token_data:
@@ -42,14 +42,14 @@ def python_run_middleware(
42
42
  if not entrypoint:
43
43
  return MiddlewareResult(
44
44
  should_continue=False,
45
- info_message="""Error: No entrypoint specified. Please provide a path to a Python script.
45
+ error_message="""No entrypoint specified. Please provide a path to a Python script.
46
46
  Usage: `uipath run <entrypoint_path> <input_arguments> [-f <input_json_file_path>]`""",
47
47
  )
48
48
 
49
49
  if not os.path.exists(entrypoint):
50
50
  return MiddlewareResult(
51
51
  should_continue=False,
52
- error_message=f"""Error: Script not found at path {entrypoint}.
52
+ error_message=f"""Script not found at path {entrypoint}.
53
53
  Usage: `uipath run <entrypoint_path> <input_arguments> [-f <input_json_file_path>]`""",
54
54
  )
55
55
 
@@ -1,6 +1,7 @@
1
1
  from .actions_service import ActionsService
2
2
  from .api_client import ApiClient
3
3
  from .assets_service import AssetsService
4
+ from .attachments_service import AttachmentsService
4
5
  from .buckets_service import BucketsService
5
6
  from .connections_service import ConnectionsService
6
7
  from .context_grounding_service import ContextGroundingService
@@ -13,6 +14,7 @@ from .queues_service import QueuesService
13
14
  __all__ = [
14
15
  "ActionsService",
15
16
  "AssetsService",
17
+ "AttachmentsService",
16
18
  "BucketsService",
17
19
  "ConnectionsService",
18
20
  "ContextGroundingService",