uipath 2.0.61__tar.gz → 2.0.63__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 (189) hide show
  1. {uipath-2.0.61 → uipath-2.0.63}/.github/workflows/publish-dev.yml +14 -9
  2. {uipath-2.0.61 → uipath-2.0.63}/PKG-INFO +1 -1
  3. {uipath-2.0.61 → uipath-2.0.63}/pyproject.toml +7 -1
  4. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/attachments_service.py +6 -4
  5. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/jobs_service.py +74 -8
  6. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_jobs_service.py +6 -9
  7. {uipath-2.0.61 → uipath-2.0.63}/uv.lock +1 -1
  8. {uipath-2.0.61 → uipath-2.0.63}/.cursorrules +0 -0
  9. {uipath-2.0.61 → uipath-2.0.63}/.editorconfig +0 -0
  10. {uipath-2.0.61 → uipath-2.0.63}/.gitattributes +0 -0
  11. {uipath-2.0.61 → uipath-2.0.63}/.github/workflows/cd.yml +0 -0
  12. {uipath-2.0.61 → uipath-2.0.63}/.github/workflows/ci.yml +0 -0
  13. {uipath-2.0.61 → uipath-2.0.63}/.github/workflows/commitlint.yml +0 -0
  14. {uipath-2.0.61 → uipath-2.0.63}/.github/workflows/lint.yml +0 -0
  15. {uipath-2.0.61 → uipath-2.0.63}/.github/workflows/publish-docs.yml +0 -0
  16. {uipath-2.0.61 → uipath-2.0.63}/.github/workflows/slack.yml +0 -0
  17. {uipath-2.0.61 → uipath-2.0.63}/.github/workflows/test.yml +0 -0
  18. {uipath-2.0.61 → uipath-2.0.63}/.gitignore +0 -0
  19. {uipath-2.0.61 → uipath-2.0.63}/.pre-commit-config.yaml +0 -0
  20. {uipath-2.0.61 → uipath-2.0.63}/.python-version +0 -0
  21. {uipath-2.0.61 → uipath-2.0.63}/.vscode/extensions.json +0 -0
  22. {uipath-2.0.61 → uipath-2.0.63}/.vscode/settings.json +0 -0
  23. {uipath-2.0.61 → uipath-2.0.63}/CONTRIBUTING.md +0 -0
  24. {uipath-2.0.61 → uipath-2.0.63}/LICENSE +0 -0
  25. {uipath-2.0.61 → uipath-2.0.63}/README.md +0 -0
  26. {uipath-2.0.61 → uipath-2.0.63}/docs/CONTRIBUTING.md +0 -0
  27. {uipath-2.0.61 → uipath-2.0.63}/docs/FAQ.md +0 -0
  28. {uipath-2.0.61 → uipath-2.0.63}/docs/assets/env-preparation-failed-dark.png +0 -0
  29. {uipath-2.0.61 → uipath-2.0.63}/docs/assets/env-preparation-failed-light.png +0 -0
  30. {uipath-2.0.61 → uipath-2.0.63}/docs/assets/favicon.png +0 -0
  31. {uipath-2.0.61 → uipath-2.0.63}/docs/assets/logo-dark.svg +0 -0
  32. {uipath-2.0.61 → uipath-2.0.63}/docs/assets/logo-light.svg +0 -0
  33. {uipath-2.0.61 → uipath-2.0.63}/docs/cli/index.md +0 -0
  34. {uipath-2.0.61 → uipath-2.0.63}/docs/core/actions.md +0 -0
  35. {uipath-2.0.61 → uipath-2.0.63}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  36. {uipath-2.0.61 → uipath-2.0.63}/docs/core/assets/cloud_env_var_light.gif +0 -0
  37. {uipath-2.0.61 → uipath-2.0.63}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  38. {uipath-2.0.61 → uipath-2.0.63}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  39. {uipath-2.0.61 → uipath-2.0.63}/docs/core/assets/copy_path_dark.png +0 -0
  40. {uipath-2.0.61 → uipath-2.0.63}/docs/core/assets/copy_path_light.png +0 -0
  41. {uipath-2.0.61 → uipath-2.0.63}/docs/core/assets.md +0 -0
  42. {uipath-2.0.61 → uipath-2.0.63}/docs/core/attachments.md +0 -0
  43. {uipath-2.0.61 → uipath-2.0.63}/docs/core/buckets.md +0 -0
  44. {uipath-2.0.61 → uipath-2.0.63}/docs/core/connections.md +0 -0
  45. {uipath-2.0.61 → uipath-2.0.63}/docs/core/context_grounding.md +0 -0
  46. {uipath-2.0.61 → uipath-2.0.63}/docs/core/environment_variables.md +0 -0
  47. {uipath-2.0.61 → uipath-2.0.63}/docs/core/getting_started.md +0 -0
  48. {uipath-2.0.61 → uipath-2.0.63}/docs/core/jobs.md +0 -0
  49. {uipath-2.0.61 → uipath-2.0.63}/docs/core/processes.md +0 -0
  50. {uipath-2.0.61 → uipath-2.0.63}/docs/core/queues.md +0 -0
  51. {uipath-2.0.61 → uipath-2.0.63}/docs/core/traced.md +0 -0
  52. {uipath-2.0.61 → uipath-2.0.63}/docs/hooks.py +0 -0
  53. {uipath-2.0.61 → uipath-2.0.63}/docs/javascripts/extra.js +0 -0
  54. {uipath-2.0.61 → uipath-2.0.63}/docs/langchain/chat_models.md +0 -0
  55. {uipath-2.0.61 → uipath-2.0.63}/docs/langchain/context_grounding.md +0 -0
  56. {uipath-2.0.61 → uipath-2.0.63}/docs/langchain/human_in_the_loop.md +0 -0
  57. {uipath-2.0.61 → uipath-2.0.63}/docs/overrides/main.html +0 -0
  58. {uipath-2.0.61 → uipath-2.0.63}/docs/overrides/partials/actions.html +0 -0
  59. {uipath-2.0.61 → uipath-2.0.63}/docs/overrides/partials/logo.html +0 -0
  60. {uipath-2.0.61 → uipath-2.0.63}/docs/release_policy.md +0 -0
  61. {uipath-2.0.61 → uipath-2.0.63}/docs/stylesheets/extra.css +0 -0
  62. {uipath-2.0.61 → uipath-2.0.63}/justfile +0 -0
  63. {uipath-2.0.61 → uipath-2.0.63}/mkdocs.yml +0 -0
  64. {uipath-2.0.61 → uipath-2.0.63}/py.typed +0 -0
  65. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/__init__.py +0 -0
  66. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/README.md +0 -0
  67. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/__init__.py +0 -0
  68. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  69. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_auth/_models.py +0 -0
  70. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  71. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  72. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_auth/_utils.py +0 -0
  73. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_auth/auth_config.json +0 -0
  74. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_auth/index.html +0 -0
  75. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_auth/localhost.crt +0 -0
  76. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_auth/localhost.key +0 -0
  77. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  78. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_runtime/_logging.py +0 -0
  79. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  80. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  81. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_templates/.rels.template +0 -0
  82. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  83. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_templates/main.py.template +0 -0
  84. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  85. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_utils/_common.py +0 -0
  86. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_utils/_console.py +0 -0
  87. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_utils/_constants.py +0 -0
  88. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_utils/_folders.py +0 -0
  89. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_utils/_input_args.py +0 -0
  90. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  91. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/_utils/_processes.py +0 -0
  92. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/cli_auth.py +0 -0
  93. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/cli_deploy.py +0 -0
  94. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/cli_init.py +0 -0
  95. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/cli_invoke.py +0 -0
  96. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/cli_new.py +0 -0
  97. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/cli_pack.py +0 -0
  98. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/cli_publish.py +0 -0
  99. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/cli_run.py +0 -0
  100. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/middlewares.py +0 -0
  101. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_cli/spinner.py +0 -0
  102. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_config.py +0 -0
  103. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_execution_context.py +0 -0
  104. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_folder_context.py +0 -0
  105. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/__init__.py +0 -0
  106. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/_base_service.py +0 -0
  107. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/actions_service.py +0 -0
  108. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/api_client.py +0 -0
  109. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/assets_service.py +0 -0
  110. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/buckets_service.py +0 -0
  111. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/connections_service.py +0 -0
  112. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/context_grounding_service.py +0 -0
  113. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/folder_service.py +0 -0
  114. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/llm_gateway_service.py +0 -0
  115. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/processes_service.py +0 -0
  116. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_services/queues_service.py +0 -0
  117. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_uipath.py +0 -0
  118. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_utils/__init__.py +0 -0
  119. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_utils/_endpoint.py +0 -0
  120. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_utils/_infer_bindings.py +0 -0
  121. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_utils/_logs.py +0 -0
  122. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_utils/_read_overwrites.py +0 -0
  123. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_utils/_request_override.py +0 -0
  124. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_utils/_request_spec.py +0 -0
  125. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_utils/_url.py +0 -0
  126. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_utils/_user_agent.py +0 -0
  127. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/_utils/constants.py +0 -0
  128. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/__init__.py +0 -0
  129. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/action_schema.py +0 -0
  130. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/actions.py +0 -0
  131. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/assets.py +0 -0
  132. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/attachment.py +0 -0
  133. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/buckets.py +0 -0
  134. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/connections.py +0 -0
  135. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/context_grounding.py +0 -0
  136. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/context_grounding_index.py +0 -0
  137. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/errors.py +0 -0
  138. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/exceptions.py +0 -0
  139. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/interrupt_models.py +0 -0
  140. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/job.py +0 -0
  141. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/llm_gateway.py +0 -0
  142. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/processes.py +0 -0
  143. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/models/queues.py +0 -0
  144. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/py.typed +0 -0
  145. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/telemetry/__init__.py +0 -0
  146. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/telemetry/_constants.py +0 -0
  147. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/telemetry/_track.py +0 -0
  148. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/tracing/__init__.py +0 -0
  149. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/tracing/_otel_exporters.py +0 -0
  150. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/tracing/_traced.py +0 -0
  151. {uipath-2.0.61 → uipath-2.0.63}/src/uipath/tracing/_utils.py +0 -0
  152. {uipath-2.0.61 → uipath-2.0.63}/tests/__init__.py +0 -0
  153. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/conftest.py +0 -0
  154. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/mocks/bindings_script.py +0 -0
  155. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/mocks/pyproject.toml +0 -0
  156. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/mocks/simple_script.py +0 -0
  157. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/mocks/uipath-mock.json +0 -0
  158. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  159. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/test_init.py +0 -0
  160. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/test_invoke.py +0 -0
  161. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/test_new.py +0 -0
  162. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/test_pack.py +0 -0
  163. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/test_publish.py +0 -0
  164. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/test_run.py +0 -0
  165. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/utils/project_details.py +0 -0
  166. {uipath-2.0.61 → uipath-2.0.63}/tests/cli/utils/uipath_json.py +0 -0
  167. {uipath-2.0.61 → uipath-2.0.63}/tests/conftest.py +0 -0
  168. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/conftest.py +0 -0
  169. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_actions_service.py +0 -0
  170. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_api_client.py +0 -0
  171. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_assets_service.py +0 -0
  172. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_attachments_service.py +0 -0
  173. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_base_service.py +0 -0
  174. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_buckets_service.py +0 -0
  175. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_connections_service.py +0 -0
  176. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_context_grounding_service.py +0 -0
  177. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_folder_service.py +0 -0
  178. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_llm_integration.py +0 -0
  179. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_llm_service.py +0 -0
  180. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_processes_service.py +0 -0
  181. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_queues_service.py +0 -0
  182. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  183. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/test_bindings_inference.py +0 -0
  184. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/test_config.py +0 -0
  185. {uipath-2.0.61 → uipath-2.0.63}/tests/sdk/test_overwrites.py +0 -0
  186. {uipath-2.0.61 → uipath-2.0.63}/tests/tracing/test_otel_exporters.py +0 -0
  187. {uipath-2.0.61 → uipath-2.0.63}/tests/tracing/test_span_utils.py +0 -0
  188. {uipath-2.0.61 → uipath-2.0.63}/tests/tracing/test_traced.py +0 -0
  189. {uipath-2.0.61 → uipath-2.0.63}/tests/tracing/test_tracing_manager.py +0 -0
@@ -51,7 +51,6 @@ jobs:
51
51
 
52
52
  $PROJECT_NAME = ($pyprojcontent | Select-String -Pattern '(?m)^\[(project|tool\.poetry)\][^\[]*?name\s*=\s*"([^"]*)"' -AllMatches).Matches[0].Groups[2].Value
53
53
  $CURRENT_VERSION = ($pyprojcontent | Select-String -Pattern '(?m)^\[(project|tool\.poetry)\][^\[]*?version\s*=\s*"([^"]*)"' -AllMatches).Matches[0].Groups[2].Value
54
- $NIGHTLY_NAME = "$PROJECT_NAME-nightly"
55
54
 
56
55
 
57
56
  # Get PR number and run number with proper padding
@@ -70,10 +69,6 @@ jobs:
70
69
  # Update version in pyproject.toml
71
70
  (Get-Content pyproject.toml) -replace "version = `"$CURRENT_VERSION`"", "version = `"$DEV_VERSION`"" | Set-Content pyproject.toml
72
71
 
73
- # Update project name in pyproject.toml
74
- (Get-Content pyproject.toml) -replace "name = `"$PROJECT_NAME`"", "name = `"$NIGHTLY_NAME`"" | Set-Content pyproject.toml
75
-
76
-
77
72
  Write-Output "Package version set to $DEV_VERSION"
78
73
 
79
74
  $dependencyMessage = @"
@@ -85,11 +80,20 @@ jobs:
85
80
  [project]
86
81
  dependencies = [
87
82
  # Exact version:
88
- "$NIGHTLY_NAME==$DEV_VERSION",
83
+ "$PROJECT_NAME==$DEV_VERSION",
89
84
 
90
85
  # Any version from PR
91
- "$NIGHTLY_NAME>=$MIN_VERSION,<$MAX_VERSION"
86
+ "$PROJECT_NAME>=$MIN_VERSION,<$MAX_VERSION"
92
87
  ]
88
+
89
+ [[tool.uv.index]]
90
+ name = "testpypi"
91
+ url = "https://test.pypi.org/simple/"
92
+ publish-url = "https://test.pypi.org/legacy/"
93
+ explicit = true
94
+
95
+ [tool.uv.sources]
96
+ $PROJECT_NAME = { index = "testpypi" }
93
97
  ``````
94
98
  "@
95
99
 
@@ -130,6 +134,7 @@ jobs:
130
134
  run: uv build
131
135
 
132
136
  - name: Publish
133
- run: uv publish
137
+ run: uv publish --index testpypi
134
138
  env:
135
- UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
139
+ UV_PUBLISH_TOKEN: ${{ secrets.TESTPYPI_TOKEN }}
140
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath
3
- Version: 2.0.61
3
+ Version: 2.0.63
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.61"
3
+ version = "2.0.63"
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"
@@ -128,3 +128,9 @@ show_missing = true
128
128
 
129
129
  [tool.coverage.run]
130
130
  source = ["src"]
131
+
132
+ [[tool.uv.index]]
133
+ name = "testpypi"
134
+ url = "https://test.pypi.org/simple/"
135
+ publish-url = "https://test.pypi.org/legacy/"
136
+ explicit = true
@@ -384,13 +384,14 @@ class AttachmentsService(FolderContext, BaseService):
384
384
  if source_path:
385
385
  # Upload from file
386
386
  with open(source_path, "rb") as file:
387
+ file_content = file.read()
387
388
  if result["BlobFileAccess"]["RequiresAuth"]:
388
389
  self.request(
389
- "PUT", upload_uri, headers=headers, files={"file": file}
390
+ "PUT", upload_uri, headers=headers, content=file_content
390
391
  )
391
392
  else:
392
393
  with httpx.Client() as client:
393
- client.put(upload_uri, headers=headers, files={"file": file})
394
+ client.put(upload_uri, headers=headers, content=file_content)
394
395
  else:
395
396
  # Upload from memory
396
397
  # Convert string to bytes if needed
@@ -519,13 +520,14 @@ class AttachmentsService(FolderContext, BaseService):
519
520
  if source_path:
520
521
  # Upload from file
521
522
  with open(source_path, "rb") as file:
523
+ file_content = file.read()
522
524
  if result["BlobFileAccess"]["RequiresAuth"]:
523
525
  await self.request_async(
524
- "PUT", upload_uri, headers=headers, files={"file": file}
526
+ "PUT", upload_uri, headers=headers, content=file_content
525
527
  )
526
528
  else:
527
529
  with httpx.Client() as client:
528
- client.put(upload_uri, headers=headers, files={"file": file})
530
+ client.put(upload_uri, headers=headers, content=file_content)
529
531
  else:
530
532
  # Upload from memory
531
533
  # Convert string to bytes if needed
@@ -113,8 +113,6 @@ class JobsService(FolderContext, BaseService):
113
113
 
114
114
  async def main(): # noqa: D103
115
115
  payload = await sdk.jobs.resume_async(job_id="38073051", payload="The response")
116
- print(payload)
117
-
118
116
 
119
117
  asyncio.run(main())
120
118
  ```
@@ -154,11 +152,35 @@ class JobsService(FolderContext, BaseService):
154
152
  def retrieve(
155
153
  self,
156
154
  job_key: str,
155
+ *,
156
+ folder_key: Optional[str] = None,
157
+ folder_path: Optional[str] = None,
157
158
  ) -> Job:
158
- spec = self._retrieve_spec(job_key=job_key)
159
+ """Retrieve a job identified by its key.
160
+
161
+ Args:
162
+ job_key (str): The job unique identifier.
163
+ folder_key (Optional[str]): The key of the folder in which the job was executed.
164
+ folder_path (Optional[str]): The path of the folder in which the job was executed.
165
+
166
+ Returns:
167
+ Job: The retrieved job.
168
+
169
+ Examples:
170
+ ```python
171
+ from uipath import UiPath
172
+
173
+ sdk = UiPath()
174
+ job = sdk.jobs.retrieve(job_key="ee9327fd-237d-419e-86ef-9946b34461e3", folder_path="Shared")
175
+ ```
176
+ """
177
+ spec = self._retrieve_spec(
178
+ job_key=job_key, folder_key=folder_key, folder_path=folder_path
179
+ )
159
180
  response = self.request(
160
181
  spec.method,
161
182
  url=spec.endpoint,
183
+ headers=spec.headers,
162
184
  )
163
185
 
164
186
  return Job.model_validate(response.json())
@@ -166,11 +188,42 @@ class JobsService(FolderContext, BaseService):
166
188
  async def retrieve_async(
167
189
  self,
168
190
  job_key: str,
191
+ *,
192
+ folder_key: Optional[str] = None,
193
+ folder_path: Optional[str] = None,
169
194
  ) -> Job:
170
- spec = self._retrieve_spec(job_key=job_key)
195
+ """Asynchronously retrieve a job identified by its key.
196
+
197
+ Args:
198
+ job_key (str): The job unique identifier.
199
+ folder_key (Optional[str]): The key of the folder in which the job was executed.
200
+ folder_path (Optional[str]): The path of the folder in which the job was executed.
201
+
202
+ Returns:
203
+ Job: The retrieved job.
204
+
205
+ Examples:
206
+ ```python
207
+ import asyncio
208
+
209
+ from uipath import UiPath
210
+
211
+ sdk = UiPath()
212
+
213
+
214
+ async def main(): # noqa: D103
215
+ job = await sdk.jobs.retrieve_async(job_key="ee9327fd-237d-419e-86ef-9946b34461e3", folder_path="Shared")
216
+
217
+ asyncio.run(main())
218
+ ```
219
+ """
220
+ spec = self._retrieve_spec(
221
+ job_key=job_key, folder_key=folder_key, folder_path=folder_path
222
+ )
171
223
  response = await self.request_async(
172
224
  spec.method,
173
225
  url=spec.endpoint,
226
+ headers=spec.headers,
174
227
  )
175
228
 
176
229
  return Job.model_validate(response.json())
@@ -268,12 +321,17 @@ class JobsService(FolderContext, BaseService):
268
321
  self,
269
322
  *,
270
323
  job_key: str,
324
+ folder_key: Optional[str] = None,
325
+ folder_path: Optional[str] = None,
271
326
  ) -> RequestSpec:
272
327
  return RequestSpec(
273
328
  method="GET",
274
329
  endpoint=Endpoint(
275
330
  f"/orchestrator_/odata/Jobs/UiPath.Server.Configuration.OData.GetByKey(identifier={job_key})"
276
331
  ),
332
+ headers={
333
+ **header_folder(folder_key, folder_path),
334
+ },
277
335
  )
278
336
 
279
337
  @traced(name="jobs_list_attachments", run_type="uipath")
@@ -553,8 +611,12 @@ class JobsService(FolderContext, BaseService):
553
611
 
554
612
  # Get job key from context if not explicitly provided
555
613
  context_job_key = None
556
- if job_key is None and hasattr(self._execution_context, "job_key"):
557
- context_job_key = self._execution_context.job_key
614
+ if job_key is None:
615
+ try:
616
+ context_job_key = self._execution_context.instance_key
617
+ except ValueError:
618
+ # Instance key is not set in environment
619
+ context_job_key = None
558
620
 
559
621
  # Check if a job is available
560
622
  if job_key is not None or context_job_key is not None:
@@ -690,8 +752,12 @@ class JobsService(FolderContext, BaseService):
690
752
 
691
753
  # Get job key from context if not explicitly provided
692
754
  context_job_key = None
693
- if job_key is None and hasattr(self._execution_context, "job_key"):
694
- context_job_key = self._execution_context.job_key
755
+ if job_key is None:
756
+ try:
757
+ context_job_key = self._execution_context.instance_key
758
+ except ValueError:
759
+ # Instance key is not set in environment
760
+ context_job_key = None
695
761
 
696
762
  # Check if a job is available
697
763
  if job_key is not None or context_job_key is not None:
@@ -579,16 +579,13 @@ class TestJobsService:
579
579
  content = "Test attachment content"
580
580
  name = "test_attachment.txt"
581
581
 
582
- # Set job key in execution context - add attribute if it doesn't exist
583
- if not hasattr(execution_context, "job_key"):
584
- # Add job_key attribute to ExecutionContext
585
- execution_context.__dict__["job_key"] = job_key
586
- else:
587
- execution_context.job_key = job_key
588
-
589
- # Create service with our execution context
582
+ # Set job key in environment - must be string
583
+ monkeypatch.setenv("UIPATH_JOB_KEY", str(job_key))
590
584
  monkeypatch.setenv("UIPATH_FOLDER_PATH", "test-folder-path")
591
- service = JobsService(config=config, execution_context=execution_context)
585
+
586
+ # Create fresh execution context after setting environment variables
587
+ fresh_execution_context = ExecutionContext()
588
+ service = JobsService(config=config, execution_context=fresh_execution_context)
592
589
 
593
590
  # Mock the attachment service's upload method
594
591
  mock_upload = mocker.patch.object(
@@ -3112,7 +3112,7 @@ wheels = [
3112
3112
 
3113
3113
  [[package]]
3114
3114
  name = "uipath"
3115
- version = "2.0.61"
3115
+ version = "2.0.63"
3116
3116
  source = { editable = "." }
3117
3117
  dependencies = [
3118
3118
  { name = "azure-monitor-opentelemetry" },
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes