uipath 2.0.84__tar.gz → 2.1.1__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.
Files changed (209) hide show
  1. {uipath-2.0.84 → uipath-2.1.1}/PKG-INFO +1 -3
  2. {uipath-2.0.84 → uipath-2.1.1}/pyproject.toml +1 -4
  3. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_runtime/_contracts.py +20 -0
  4. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_utils/_debug.py +4 -0
  5. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/cli_run.py +30 -8
  6. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/test_run.py +30 -4
  7. {uipath-2.0.84 → uipath-2.1.1}/uv.lock +14 -1296
  8. {uipath-2.0.84 → uipath-2.1.1}/.cursorrules +0 -0
  9. {uipath-2.0.84 → uipath-2.1.1}/.editorconfig +0 -0
  10. {uipath-2.0.84 → uipath-2.1.1}/.gitattributes +0 -0
  11. {uipath-2.0.84 → uipath-2.1.1}/.github/workflows/cd.yml +0 -0
  12. {uipath-2.0.84 → uipath-2.1.1}/.github/workflows/ci.yml +0 -0
  13. {uipath-2.0.84 → uipath-2.1.1}/.github/workflows/commitlint.yml +0 -0
  14. {uipath-2.0.84 → uipath-2.1.1}/.github/workflows/lint.yml +0 -0
  15. {uipath-2.0.84 → uipath-2.1.1}/.github/workflows/publish-dev.yml +0 -0
  16. {uipath-2.0.84 → uipath-2.1.1}/.github/workflows/publish-docs.yml +0 -0
  17. {uipath-2.0.84 → uipath-2.1.1}/.github/workflows/slack.yml +0 -0
  18. {uipath-2.0.84 → uipath-2.1.1}/.github/workflows/test.yml +0 -0
  19. {uipath-2.0.84 → uipath-2.1.1}/.gitignore +0 -0
  20. {uipath-2.0.84 → uipath-2.1.1}/.pre-commit-config.yaml +0 -0
  21. {uipath-2.0.84 → uipath-2.1.1}/.python-version +0 -0
  22. {uipath-2.0.84 → uipath-2.1.1}/.vscode/extensions.json +0 -0
  23. {uipath-2.0.84 → uipath-2.1.1}/.vscode/launch.json +0 -0
  24. {uipath-2.0.84 → uipath-2.1.1}/.vscode/settings.json +0 -0
  25. {uipath-2.0.84 → uipath-2.1.1}/CONTRIBUTING.md +0 -0
  26. {uipath-2.0.84 → uipath-2.1.1}/LICENSE +0 -0
  27. {uipath-2.0.84 → uipath-2.1.1}/README.md +0 -0
  28. {uipath-2.0.84 → uipath-2.1.1}/docs/CONTRIBUTING.md +0 -0
  29. {uipath-2.0.84 → uipath-2.1.1}/docs/FAQ.md +0 -0
  30. {uipath-2.0.84 → uipath-2.1.1}/docs/assets/env-preparation-failed-dark.png +0 -0
  31. {uipath-2.0.84 → uipath-2.1.1}/docs/assets/env-preparation-failed-light.png +0 -0
  32. {uipath-2.0.84 → uipath-2.1.1}/docs/assets/favicon.png +0 -0
  33. {uipath-2.0.84 → uipath-2.1.1}/docs/assets/logo-dark.svg +0 -0
  34. {uipath-2.0.84 → uipath-2.1.1}/docs/assets/logo-light.svg +0 -0
  35. {uipath-2.0.84 → uipath-2.1.1}/docs/cli/index.md +0 -0
  36. {uipath-2.0.84 → uipath-2.1.1}/docs/core/actions.md +0 -0
  37. {uipath-2.0.84 → uipath-2.1.1}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  38. {uipath-2.0.84 → uipath-2.1.1}/docs/core/assets/cloud_env_var_light.gif +0 -0
  39. {uipath-2.0.84 → uipath-2.1.1}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  40. {uipath-2.0.84 → uipath-2.1.1}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  41. {uipath-2.0.84 → uipath-2.1.1}/docs/core/assets/copy_path_dark.png +0 -0
  42. {uipath-2.0.84 → uipath-2.1.1}/docs/core/assets/copy_path_light.png +0 -0
  43. {uipath-2.0.84 → uipath-2.1.1}/docs/core/assets.md +0 -0
  44. {uipath-2.0.84 → uipath-2.1.1}/docs/core/attachments.md +0 -0
  45. {uipath-2.0.84 → uipath-2.1.1}/docs/core/buckets.md +0 -0
  46. {uipath-2.0.84 → uipath-2.1.1}/docs/core/connections.md +0 -0
  47. {uipath-2.0.84 → uipath-2.1.1}/docs/core/context_grounding.md +0 -0
  48. {uipath-2.0.84 → uipath-2.1.1}/docs/core/environment_variables.md +0 -0
  49. {uipath-2.0.84 → uipath-2.1.1}/docs/core/getting_started.md +0 -0
  50. {uipath-2.0.84 → uipath-2.1.1}/docs/core/jobs.md +0 -0
  51. {uipath-2.0.84 → uipath-2.1.1}/docs/core/llm_gateway.md +0 -0
  52. {uipath-2.0.84 → uipath-2.1.1}/docs/core/processes.md +0 -0
  53. {uipath-2.0.84 → uipath-2.1.1}/docs/core/queues.md +0 -0
  54. {uipath-2.0.84 → uipath-2.1.1}/docs/core/traced.md +0 -0
  55. {uipath-2.0.84 → uipath-2.1.1}/docs/hooks.py +0 -0
  56. {uipath-2.0.84 → uipath-2.1.1}/docs/index.md +0 -0
  57. {uipath-2.0.84 → uipath-2.1.1}/docs/javascripts/extra.js +0 -0
  58. {uipath-2.0.84 → uipath-2.1.1}/docs/overrides/main.html +0 -0
  59. {uipath-2.0.84 → uipath-2.1.1}/docs/overrides/partials/actions.html +0 -0
  60. {uipath-2.0.84 → uipath-2.1.1}/docs/overrides/partials/logo.html +0 -0
  61. {uipath-2.0.84 → uipath-2.1.1}/docs/release_policy.md +0 -0
  62. {uipath-2.0.84 → uipath-2.1.1}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
  63. {uipath-2.0.84 → uipath-2.1.1}/docs/stylesheets/extra.css +0 -0
  64. {uipath-2.0.84 → uipath-2.1.1}/justfile +0 -0
  65. {uipath-2.0.84 → uipath-2.1.1}/mkdocs.yml +0 -0
  66. {uipath-2.0.84 → uipath-2.1.1}/py.typed +0 -0
  67. {uipath-2.0.84 → uipath-2.1.1}/samples/google-ADK-agent/.env.example +0 -0
  68. {uipath-2.0.84 → uipath-2.1.1}/samples/google-ADK-agent/README.md +0 -0
  69. {uipath-2.0.84 → uipath-2.1.1}/samples/google-ADK-agent/input.json +0 -0
  70. {uipath-2.0.84 → uipath-2.1.1}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
  71. {uipath-2.0.84 → uipath-2.1.1}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
  72. {uipath-2.0.84 → uipath-2.1.1}/samples/google-ADK-agent/pyproject.toml +0 -0
  73. {uipath-2.0.84 → uipath-2.1.1}/samples/google-ADK-agent/uv.lock +0 -0
  74. {uipath-2.0.84 → uipath-2.1.1}/scripts/debug_test.py +0 -0
  75. {uipath-2.0.84 → uipath-2.1.1}/scripts/lint_httpx_client.py +0 -0
  76. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/__init__.py +0 -0
  77. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/README.md +0 -0
  78. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/__init__.py +0 -0
  79. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  80. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_auth/_client_credentials.py +0 -0
  81. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_auth/_models.py +0 -0
  82. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  83. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  84. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_auth/_utils.py +0 -0
  85. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_auth/auth_config.json +0 -0
  86. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_auth/index.html +0 -0
  87. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_auth/localhost.crt +0 -0
  88. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_auth/localhost.key +0 -0
  89. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  90. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  91. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_runtime/_logging.py +0 -0
  92. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  93. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  94. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_templates/.rels.template +0 -0
  95. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  96. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_templates/main.py.template +0 -0
  97. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  98. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_utils/_common.py +0 -0
  99. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_utils/_console.py +0 -0
  100. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_utils/_constants.py +0 -0
  101. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_utils/_folders.py +0 -0
  102. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_utils/_input_args.py +0 -0
  103. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  104. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_utils/_processes.py +0 -0
  105. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/_utils/_tracing.py +0 -0
  106. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/cli_auth.py +0 -0
  107. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/cli_deploy.py +0 -0
  108. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/cli_init.py +0 -0
  109. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/cli_invoke.py +0 -0
  110. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/cli_new.py +0 -0
  111. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/cli_pack.py +0 -0
  112. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/cli_publish.py +0 -0
  113. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/middlewares.py +0 -0
  114. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_cli/spinner.py +0 -0
  115. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_config.py +0 -0
  116. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_execution_context.py +0 -0
  117. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_folder_context.py +0 -0
  118. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/__init__.py +0 -0
  119. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/_base_service.py +0 -0
  120. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/actions_service.py +0 -0
  121. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/api_client.py +0 -0
  122. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/assets_service.py +0 -0
  123. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/attachments_service.py +0 -0
  124. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/buckets_service.py +0 -0
  125. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/connections_service.py +0 -0
  126. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/context_grounding_service.py +0 -0
  127. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/folder_service.py +0 -0
  128. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/jobs_service.py +0 -0
  129. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/llm_gateway_service.py +0 -0
  130. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/processes_service.py +0 -0
  131. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_services/queues_service.py +0 -0
  132. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_uipath.py +0 -0
  133. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_utils/__init__.py +0 -0
  134. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_utils/_endpoint.py +0 -0
  135. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_utils/_infer_bindings.py +0 -0
  136. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_utils/_logs.py +0 -0
  137. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_utils/_read_overwrites.py +0 -0
  138. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_utils/_request_override.py +0 -0
  139. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_utils/_request_spec.py +0 -0
  140. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_utils/_ssl_context.py +0 -0
  141. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_utils/_url.py +0 -0
  142. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_utils/_user_agent.py +0 -0
  143. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/_utils/constants.py +0 -0
  144. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/__init__.py +0 -0
  145. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/action_schema.py +0 -0
  146. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/actions.py +0 -0
  147. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/assets.py +0 -0
  148. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/attachment.py +0 -0
  149. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/buckets.py +0 -0
  150. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/connections.py +0 -0
  151. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/context_grounding.py +0 -0
  152. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/context_grounding_index.py +0 -0
  153. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/errors.py +0 -0
  154. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/exceptions.py +0 -0
  155. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/interrupt_models.py +0 -0
  156. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/job.py +0 -0
  157. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/llm_gateway.py +0 -0
  158. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/processes.py +0 -0
  159. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/models/queues.py +0 -0
  160. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/py.typed +0 -0
  161. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/telemetry/__init__.py +0 -0
  162. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/telemetry/_constants.py +0 -0
  163. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/telemetry/_track.py +0 -0
  164. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/tracing/__init__.py +0 -0
  165. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/tracing/_otel_exporters.py +0 -0
  166. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/tracing/_traced.py +0 -0
  167. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/tracing/_utils.py +0 -0
  168. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/utils/__init__.py +0 -0
  169. {uipath-2.0.84 → uipath-2.1.1}/src/uipath/utils/_endpoints_manager.py +0 -0
  170. {uipath-2.0.84 → uipath-2.1.1}/tests/__init__.py +0 -0
  171. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/conftest.py +0 -0
  172. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/mocks/bindings_script.py +0 -0
  173. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/mocks/pyproject.toml +0 -0
  174. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/mocks/simple_script.py +0 -0
  175. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/mocks/uipath-mock.json +0 -0
  176. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  177. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/test_hitl.py +0 -0
  178. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/test_init.py +0 -0
  179. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/test_invoke.py +0 -0
  180. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/test_new.py +0 -0
  181. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/test_pack.py +0 -0
  182. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/test_publish.py +0 -0
  183. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/test_utils.py +0 -0
  184. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/utils/project_details.py +0 -0
  185. {uipath-2.0.84 → uipath-2.1.1}/tests/cli/utils/uipath_json.py +0 -0
  186. {uipath-2.0.84 → uipath-2.1.1}/tests/conftest.py +0 -0
  187. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/conftest.py +0 -0
  188. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_actions_service.py +0 -0
  189. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_api_client.py +0 -0
  190. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_assets_service.py +0 -0
  191. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_attachments_service.py +0 -0
  192. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_base_service.py +0 -0
  193. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_buckets_service.py +0 -0
  194. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_connections_service.py +0 -0
  195. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_context_grounding_service.py +0 -0
  196. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_folder_service.py +0 -0
  197. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_jobs_service.py +0 -0
  198. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_llm_integration.py +0 -0
  199. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_llm_service.py +0 -0
  200. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_processes_service.py +0 -0
  201. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_queues_service.py +0 -0
  202. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  203. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/test_bindings_inference.py +0 -0
  204. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/test_config.py +0 -0
  205. {uipath-2.0.84 → uipath-2.1.1}/tests/sdk/test_overwrites.py +0 -0
  206. {uipath-2.0.84 → uipath-2.1.1}/tests/tracing/test_otel_exporters.py +0 -0
  207. {uipath-2.0.84 → uipath-2.1.1}/tests/tracing/test_span_utils.py +0 -0
  208. {uipath-2.0.84 → uipath-2.1.1}/tests/tracing/test_traced.py +0 -0
  209. {uipath-2.0.84 → uipath-2.1.1}/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.84
3
+ Version: 2.1.1
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
@@ -25,8 +25,6 @@ Requires-Dist: rich>=13.0.0
25
25
  Requires-Dist: tenacity>=9.0.0
26
26
  Requires-Dist: tomli>=2.2.1
27
27
  Requires-Dist: truststore>=0.10.1
28
- Provides-Extra: langchain
29
- Requires-Dist: uipath-langchain<0.1.0,>=0.0.88; extra == 'langchain'
30
28
  Description-Content-Type: text/markdown
31
29
 
32
30
  # UiPath Python SDK
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.0.84"
3
+ version = "2.1.1"
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"
@@ -67,9 +67,6 @@ dev = [
67
67
  "types-toml>=0.10.8",
68
68
  ]
69
69
 
70
- [project.optional-dependencies]
71
- langchain = ["uipath-langchain>=0.0.88,<0.1.0"]
72
-
73
70
  [tool.hatch.build.targets.wheel]
74
71
  packages = ["src/uipath"]
75
72
 
@@ -148,6 +148,7 @@ class UiPathRuntimeContext(BaseModel):
148
148
  trace_context: Optional[UiPathTraceContext] = None
149
149
  tracing_enabled: Union[bool, str] = False
150
150
  resume: bool = False
151
+ debug: bool = False
151
152
  config_path: str = "uipath.json"
152
153
  runtime_dir: Optional[str] = "__uipath"
153
154
  logs_file: Optional[str] = "execution.log"
@@ -155,6 +156,8 @@ class UiPathRuntimeContext(BaseModel):
155
156
  output_file: str = "output.json"
156
157
  state_file: str = "state.db"
157
158
  result: Optional[UiPathRuntimeResult] = None
159
+ execution_output_file: Optional[str] = None
160
+ input_file: Optional[str] = None
158
161
 
159
162
  model_config = {"arbitrary_types_allowed": True}
160
163
 
@@ -295,6 +298,18 @@ class UiPathBaseRuntime(ABC):
295
298
  Returns:
296
299
  The runtime instance
297
300
  """
301
+ # Read the input from file if provided
302
+ if self.context.input_file:
303
+ _, file_extension = os.path.splitext(self.context.input_file)
304
+ if file_extension != ".json":
305
+ raise UiPathRuntimeError(
306
+ code="INVALID_INPUT_FILE_EXTENSION",
307
+ title="Invalid Input File Extension",
308
+ detail="The provided input file must be in JSON format.",
309
+ )
310
+ with open(self.context.input_file) as f:
311
+ self.context.input = f.read()
312
+
298
313
  # Intercept all stdout/stderr/logs and write them to a file (runtime), stdout (debug)
299
314
  self.logs_interceptor = LogsInterceptor(
300
315
  min_level=self.context.logs_min_level,
@@ -370,6 +385,11 @@ class UiPathBaseRuntime(ABC):
370
385
  with open(self.output_file_path, "w") as f:
371
386
  json.dump(content, f, indent=2, default=str)
372
387
 
388
+ # Write the execution output to file if requested
389
+ if self.context.execution_output_file:
390
+ with open(self.context.execution_output_file, "w") as f:
391
+ json.dump(execution_result.output or {}, f, indent=2, default=str)
392
+
373
393
  # Don't suppress exceptions
374
394
  return False
375
395
 
@@ -42,6 +42,10 @@ def setup_debugging(debug: bool, debug_port: int = 5678) -> bool:
42
42
  console.info(f"🐛 Debug server started on port {debug_port}")
43
43
  console.info("📌 Waiting for debugger to attach...")
44
44
  console.info(" - VS Code: Run -> Start Debugging -> Python: Remote Attach")
45
+ console.link(
46
+ " CLI Documentation reference: ",
47
+ "https://uipath.github.io/uipath-python/cli/#run",
48
+ )
45
49
 
46
50
  debugpy.wait_for_client()
47
51
  console.success("Debugger attached successfully!")
@@ -32,6 +32,7 @@ def python_run_middleware(
32
32
  entrypoint: Optional[str],
33
33
  input: Optional[str],
34
34
  resume: bool,
35
+ **kwargs,
35
36
  ) -> MiddlewareResult:
36
37
  """Middleware to handle Python script execution.
37
38
 
@@ -70,6 +71,8 @@ Usage: `uipath run <entrypoint_path> <input_arguments> [-f <input_json_file_path
70
71
  context.resume = resume
71
72
  context.job_id = env.get("UIPATH_JOB_KEY")
72
73
  context.trace_id = env.get("UIPATH_TRACE_ID")
74
+ context.input_file = kwargs.get("input_file", None)
75
+ context.execution_output_file = kwargs.get("execution_output_file", None)
73
76
  context.tracing_enabled = env.get("UIPATH_TRACING_ENABLED", True)
74
77
  context.trace_context = UiPathTraceContext(
75
78
  trace_id=env.get("UIPATH_TRACE_ID"),
@@ -118,6 +121,18 @@ Usage: `uipath run <entrypoint_path> <input_arguments> [-f <input_json_file_path
118
121
  type=click.Path(exists=True),
119
122
  help="File path for the .json input",
120
123
  )
124
+ @click.option(
125
+ "--input-file",
126
+ required=False,
127
+ type=click.Path(exists=True),
128
+ help="Alias for '-f/--file' arguments",
129
+ )
130
+ @click.option(
131
+ "--output-file",
132
+ required=False,
133
+ type=click.Path(exists=False),
134
+ help="File path where the output will be written",
135
+ )
121
136
  @click.option(
122
137
  "--debug",
123
138
  is_flag=True,
@@ -135,29 +150,36 @@ def run(
135
150
  input: Optional[str],
136
151
  resume: bool,
137
152
  file: Optional[str],
153
+ input_file: Optional[str],
154
+ output_file: Optional[str],
138
155
  debug: bool,
139
156
  debug_port: int,
140
157
  ) -> None:
141
158
  """Execute the project."""
142
- if file:
143
- _, file_extension = os.path.splitext(file)
144
- if file_extension != ".json":
145
- console.error("Input file extension must be '.json'.")
146
- with open(file) as f:
147
- input = f.read()
159
+ input_file = file or input_file
148
160
  # Setup debugging if requested
149
-
150
161
  if not setup_debugging(debug, debug_port):
151
162
  console.error(f"Failed to start debug server on port {debug_port}")
152
163
 
153
164
  # Process through middleware chain
154
- result = Middlewares.next("run", entrypoint, input, resume)
165
+ result = Middlewares.next(
166
+ "run",
167
+ entrypoint,
168
+ input,
169
+ resume,
170
+ debug=debug,
171
+ debug_port=debug_port,
172
+ input_file=input_file,
173
+ execution_output_file=output_file,
174
+ )
155
175
 
156
176
  if result.should_continue:
157
177
  result = python_run_middleware(
158
178
  entrypoint=entrypoint,
159
179
  input=input,
160
180
  resume=resume,
181
+ input_file=input_file,
182
+ execution_output_file=output_file,
161
183
  )
162
184
 
163
185
  # Handle result from middleware
@@ -53,6 +53,9 @@ class TestRun:
53
53
  entrypoint: str,
54
54
  ):
55
55
  with runner.isolated_filesystem(temp_dir=temp_dir):
56
+ file_path = os.path.join(temp_dir, entrypoint)
57
+ with open(file_path, "w") as f:
58
+ f.write("script content")
56
59
  result = runner.invoke(run, [entrypoint, "--file", "not-here.json"])
57
60
  assert result.exit_code != 0
58
61
  assert "Error: Invalid value for '-f' / '--file'" in result.output
@@ -65,12 +68,15 @@ class TestRun:
65
68
  ):
66
69
  file_name = "not-json.txt"
67
70
  with runner.isolated_filesystem(temp_dir=temp_dir):
71
+ script_file_path = os.path.join(temp_dir, entrypoint)
72
+ with open(script_file_path, "w") as f:
73
+ f.write("script content")
68
74
  file_path = os.path.join(temp_dir, file_name)
69
75
  with open(file_path, "w") as f:
70
76
  f.write("file content")
71
- result = runner.invoke(run, [entrypoint, "--file", file_path])
77
+ result = runner.invoke(run, [script_file_path, "--file", file_path])
72
78
  assert result.exit_code == 1
73
- assert "Input file extension must be '.json'." in result.output
79
+ assert "Invalid Input File Extension" in result.output
74
80
 
75
81
  def test_run_input_file_success(
76
82
  self,
@@ -100,7 +106,14 @@ class TestRun:
100
106
  assert "Successful execution." in result.output
101
107
  assert mock_middleware.call_count == 1
102
108
  assert mock_middleware.call_args == mock.call(
103
- "run", entrypoint, json_content, False
109
+ "run",
110
+ entrypoint,
111
+ "{}",
112
+ False,
113
+ debug=False,
114
+ debug_port=5678,
115
+ input_file=file_path,
116
+ execution_output_file=None,
104
117
  )
105
118
 
106
119
  class TestMiddleware:
@@ -134,6 +147,7 @@ class TestRun:
134
147
  simple_script: str,
135
148
  ):
136
149
  input_file_name = "input.json"
150
+ output_file_name = "output.json"
137
151
  input_json_content = """
138
152
  {
139
153
  "message": "Hello world",
@@ -142,6 +156,7 @@ class TestRun:
142
156
  with runner.isolated_filesystem(temp_dir=temp_dir):
143
157
  # create input file
144
158
  input_file_path = os.path.join(temp_dir, input_file_name)
159
+ output_file_path = os.path.join(temp_dir, output_file_name)
145
160
  with open(input_file_path, "w") as f:
146
161
  f.write(input_json_content)
147
162
  # Create test script
@@ -152,11 +167,22 @@ class TestRun:
152
167
  with open("uipath.json", "w") as f:
153
168
  f.write(uipath_json.to_json())
154
169
  result = runner.invoke(
155
- run, [script_file_path, "--file", input_file_path]
170
+ run,
171
+ [
172
+ script_file_path,
173
+ "--input-file",
174
+ input_file_path,
175
+ "--output-file",
176
+ output_file_path,
177
+ ],
156
178
  )
157
179
  assert result.exit_code == 0
158
180
  assert "Successful execution." in result.output
159
181
  assert result.output.count("Hello world") == 2
182
+ assert os.path.exists(output_file_path)
183
+ with open(output_file_path, "r") as f:
184
+ output = f.read()
185
+ assert output.count("Hello world") == 2
160
186
 
161
187
  def test_no_main_function_found(
162
188
  self,