uipath 2.0.34__tar.gz → 2.0.36__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 (138) hide show
  1. {uipath-2.0.34 → uipath-2.0.36}/PKG-INFO +1 -4
  2. uipath-2.0.36/docs/cli/index.md +165 -0
  3. {uipath-2.0.34 → uipath-2.0.36}/docs/core/getting_started.md +1 -2
  4. uipath-2.0.36/docs/javascripts/extra.js +35 -0
  5. {uipath-2.0.34 → uipath-2.0.36}/docs/stylesheets/extra.css +1 -1
  6. {uipath-2.0.34 → uipath-2.0.36}/mkdocs.yml +6 -4
  7. {uipath-2.0.34 → uipath-2.0.36}/pyproject.toml +3 -4
  8. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_auth/_portal_service.py +7 -6
  9. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_utils/_folders.py +3 -2
  10. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_utils/_processes.py +4 -3
  11. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/cli_init.py +2 -3
  12. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/cli_invoke.py +4 -3
  13. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/cli_publish.py +4 -3
  14. {uipath-2.0.34 → uipath-2.0.36}/tests/cli/test_init.py +1 -8
  15. {uipath-2.0.34 → uipath-2.0.36}/uv.lock +21 -10
  16. uipath-2.0.34/docs/core/index.md +0 -7
  17. uipath-2.0.34/docs/langchain/index.md +0 -7
  18. {uipath-2.0.34 → uipath-2.0.36}/.cursorrules +0 -0
  19. {uipath-2.0.34 → uipath-2.0.36}/.editorconfig +0 -0
  20. {uipath-2.0.34 → uipath-2.0.36}/.gitattributes +0 -0
  21. {uipath-2.0.34 → uipath-2.0.36}/.github/workflows/build.yml +0 -0
  22. {uipath-2.0.34 → uipath-2.0.36}/.github/workflows/cd.yml +0 -0
  23. {uipath-2.0.34 → uipath-2.0.36}/.github/workflows/ci.yml +0 -0
  24. {uipath-2.0.34 → uipath-2.0.36}/.github/workflows/commitlint.yml +0 -0
  25. {uipath-2.0.34 → uipath-2.0.36}/.github/workflows/lint.yml +0 -0
  26. {uipath-2.0.34 → uipath-2.0.36}/.github/workflows/publish-dev.yml +0 -0
  27. {uipath-2.0.34 → uipath-2.0.36}/.github/workflows/publish-docs.yml +0 -0
  28. {uipath-2.0.34 → uipath-2.0.36}/.github/workflows/test.yml +0 -0
  29. {uipath-2.0.34 → uipath-2.0.36}/.gitignore +0 -0
  30. {uipath-2.0.34 → uipath-2.0.36}/.pre-commit-config.yaml +0 -0
  31. {uipath-2.0.34 → uipath-2.0.36}/.python-version +0 -0
  32. {uipath-2.0.34 → uipath-2.0.36}/.vscode/extensions.json +0 -0
  33. {uipath-2.0.34 → uipath-2.0.36}/.vscode/settings.json +0 -0
  34. {uipath-2.0.34 → uipath-2.0.36}/CONTRIBUTING.md +0 -0
  35. {uipath-2.0.34 → uipath-2.0.36}/LICENSE +0 -0
  36. {uipath-2.0.34 → uipath-2.0.36}/README.md +0 -0
  37. {uipath-2.0.34 → uipath-2.0.36}/docs/CONTRIBUTING.md +0 -0
  38. {uipath-2.0.34 → uipath-2.0.36}/docs/assets/favicon.png +0 -0
  39. {uipath-2.0.34 → uipath-2.0.36}/docs/assets/uipath-logo.svg +0 -0
  40. {uipath-2.0.34 → uipath-2.0.36}/docs/core/actions.md +0 -0
  41. {uipath-2.0.34 → uipath-2.0.36}/docs/core/assets.md +0 -0
  42. {uipath-2.0.34 → uipath-2.0.36}/docs/core/buckets.md +0 -0
  43. {uipath-2.0.34 → uipath-2.0.36}/docs/core/context_grounding.md +0 -0
  44. {uipath-2.0.34 → uipath-2.0.36}/docs/core/jobs.md +0 -0
  45. {uipath-2.0.34 → uipath-2.0.36}/docs/core/processes.md +0 -0
  46. {uipath-2.0.34 → uipath-2.0.36}/docs/core/queues.md +0 -0
  47. {uipath-2.0.34 → uipath-2.0.36}/docs/hooks.py +0 -0
  48. {uipath-2.0.34 → uipath-2.0.36}/docs/langchain/chat_models.md +0 -0
  49. {uipath-2.0.34 → uipath-2.0.36}/docs/langchain/context_grounding.md +0 -0
  50. {uipath-2.0.34 → uipath-2.0.36}/docs/langchain/human_in_the_loop.md +0 -0
  51. {uipath-2.0.34 → uipath-2.0.36}/docs/release_policy.md +0 -0
  52. {uipath-2.0.34 → uipath-2.0.36}/justfile +0 -0
  53. {uipath-2.0.34 → uipath-2.0.36}/py.typed +0 -0
  54. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/__init__.py +0 -0
  55. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/README.md +0 -0
  56. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/__init__.py +0 -0
  57. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  58. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_auth/_models.py +0 -0
  59. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  60. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_auth/_utils.py +0 -0
  61. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_auth/auth_config.json +0 -0
  62. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_auth/index.html +0 -0
  63. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_auth/localhost.crt +0 -0
  64. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_auth/localhost.key +0 -0
  65. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  66. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_runtime/_logging.py +0 -0
  67. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  68. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  69. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_templates/.rels.template +0 -0
  70. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  71. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_templates/main.py.template +0 -0
  72. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  73. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_utils/_common.py +0 -0
  74. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_utils/_console.py +0 -0
  75. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_utils/_input_args.py +0 -0
  76. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  77. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/cli_auth.py +0 -0
  78. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/cli_deploy.py +0 -0
  79. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/cli_new.py +0 -0
  80. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/cli_pack.py +0 -0
  81. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/cli_run.py +0 -0
  82. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/middlewares.py +0 -0
  83. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_cli/spinner.py +0 -0
  84. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_config.py +0 -0
  85. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_execution_context.py +0 -0
  86. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_folder_context.py +0 -0
  87. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/__init__.py +0 -0
  88. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/_base_service.py +0 -0
  89. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/actions_service.py +0 -0
  90. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/api_client.py +0 -0
  91. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/assets_service.py +0 -0
  92. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/buckets_service.py +0 -0
  93. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/connections_service.py +0 -0
  94. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/connections_service.pyi +0 -0
  95. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/context_grounding_service.py +0 -0
  96. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/folder_service.py +0 -0
  97. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/jobs_service.py +0 -0
  98. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/llm_gateway_service.py +0 -0
  99. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/processes_service.py +0 -0
  100. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_services/queues_service.py +0 -0
  101. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_uipath.py +0 -0
  102. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_utils/__init__.py +0 -0
  103. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_utils/_endpoint.py +0 -0
  104. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_utils/_infer_bindings.py +0 -0
  105. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_utils/_logs.py +0 -0
  106. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_utils/_request_override.py +0 -0
  107. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_utils/_request_spec.py +0 -0
  108. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_utils/_user_agent.py +0 -0
  109. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/_utils/constants.py +0 -0
  110. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/__init__.py +0 -0
  111. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/action_schema.py +0 -0
  112. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/actions.py +0 -0
  113. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/assets.py +0 -0
  114. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/connections.py +0 -0
  115. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/context_grounding.py +0 -0
  116. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/context_grounding_index.py +0 -0
  117. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/errors.py +0 -0
  118. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/exceptions.py +0 -0
  119. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/interrupt_models.py +0 -0
  120. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/job.py +0 -0
  121. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/llm_gateway.py +0 -0
  122. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/processes.py +0 -0
  123. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/models/queues.py +0 -0
  124. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/py.typed +0 -0
  125. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/tracing/__init__.py +0 -0
  126. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/tracing/_otel_exporters.py +0 -0
  127. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/tracing/_traced.py +0 -0
  128. {uipath-2.0.34 → uipath-2.0.36}/src/uipath/tracing/_utils.py +0 -0
  129. {uipath-2.0.34 → uipath-2.0.36}/tests/__init__.py +0 -0
  130. {uipath-2.0.34 → uipath-2.0.36}/tests/conftest.py +0 -0
  131. {uipath-2.0.34 → uipath-2.0.36}/tests/sdk/services/test_llm_integration.py +0 -0
  132. {uipath-2.0.34 → uipath-2.0.36}/tests/sdk/services/test_llm_service.py +0 -0
  133. {uipath-2.0.34 → uipath-2.0.36}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  134. {uipath-2.0.34 → uipath-2.0.36}/tests/sdk/test_config.py +0 -0
  135. {uipath-2.0.34 → uipath-2.0.36}/tests/tracing/test_otel_exporters.py +0 -0
  136. {uipath-2.0.34 → uipath-2.0.36}/tests/tracing/test_span_utils.py +0 -0
  137. {uipath-2.0.34 → uipath-2.0.36}/tests/tracing/test_traced.py +0 -0
  138. {uipath-2.0.34 → uipath-2.0.36}/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.34
3
+ Version: 2.0.36
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
@@ -18,13 +18,10 @@ Requires-Dist: httpx>=0.28.1
18
18
  Requires-Dist: opentelemetry-sdk>=1.32.1
19
19
  Requires-Dist: pathlib>=1.0.1
20
20
  Requires-Dist: pydantic>=2.11.1
21
- Requires-Dist: pytest-asyncio>=0.25.3
22
21
  Requires-Dist: python-dotenv>=1.0.1
23
- Requires-Dist: requests>=2.32.3
24
22
  Requires-Dist: rich>=13.0.0
25
23
  Requires-Dist: tenacity>=9.0.0
26
24
  Requires-Dist: tomli>=2.2.1
27
- Requires-Dist: types-requests>=2.32.0.20250306
28
25
  Provides-Extra: langchain
29
26
  Requires-Dist: uipath-langchain<0.1.0,>=0.0.88; extra == 'langchain'
30
27
  Description-Content-Type: text/markdown
@@ -0,0 +1,165 @@
1
+ # CLI Reference
2
+
3
+ ::: mkdocs-click
4
+ :module: uipath._cli
5
+ :command: auth
6
+ :depth: 1
7
+ :style: table
8
+
9
+ <!-- termynal -->
10
+
11
+ ```shell
12
+ > uipath auth
13
+ ⠋ Authenticating with UiPath ...
14
+ 🔗 If a browser window did not open, please open the following URL in your browser: [LINK]
15
+ 👇 Select tenant:
16
+ 0: Tenant1
17
+ 1: Tenant2
18
+ Select tenant number: 0
19
+ Selected tenant: Tenant1
20
+ ✓ Authentication successful.
21
+ ```
22
+ ---
23
+
24
+ ::: mkdocs-click
25
+ :module: uipath._cli
26
+ :command: init
27
+ :depth: 1
28
+ :style: table
29
+
30
+ /// warning
31
+
32
+ The `uipath init` command executes your `main.py` file to analyze its structure and collect information about inputs and outputs.
33
+ ///
34
+
35
+ <!-- termynal -->
36
+ ```shell
37
+ > uipath init
38
+ ⠋ Initializing UiPath project ...
39
+ ✓ Created 'uipath.json' file.
40
+ ```
41
+ ---
42
+
43
+ ::: mkdocs-click
44
+ :module: uipath._cli
45
+ :command: run
46
+ :depth: 1
47
+ :style: table
48
+
49
+ /// warning
50
+ Depending on the shell you are using, it may be necessary to escape the input json:
51
+
52
+ /// tab | Bash/ZSH
53
+ ```console
54
+ uipath run agent '{"topic": "UiPath"}'
55
+ ```
56
+ ///
57
+
58
+ /// tab | Windows CMD
59
+ ```console
60
+ uipath run agent "{""topic"": ""UiPath""}"
61
+ ```
62
+ ///
63
+
64
+ /// tab | Windows PowerShell
65
+ ```console
66
+ uipath run agent '{\"topic\":\"uipath\"}'
67
+ ```
68
+ ///
69
+
70
+ ///
71
+
72
+ <!-- termynal -->
73
+
74
+ ```shell
75
+ > uipath run main.py '{"message": "test"}'
76
+ [2025-04-11 10:13:58,857][INFO] {'message': 'test'}
77
+ ```
78
+ ---
79
+
80
+ ::: mkdocs-click
81
+ :module: uipath._cli
82
+ :command: pack
83
+ :depth: 1
84
+ :style: table
85
+
86
+ Packages your project into a `.nupkg` file that can be deployed to UiPath.
87
+
88
+ /// warning
89
+ Your `pyproject.toml` must include:
90
+
91
+ - A description field (avoid characters: &, <, >, ", ', ;)
92
+ - Author information
93
+
94
+ Example:
95
+
96
+ ```toml
97
+ description = "Your package description"
98
+ authors = [{name = "Your Name", email = "your.email@example.com"}]
99
+ ```
100
+ ///
101
+
102
+ <!-- termynal -->
103
+ ```shell
104
+ > uipath pack
105
+ ⠋ Packaging project ...
106
+ Name : test
107
+ Version : 0.1.0
108
+ Description: Add your description here
109
+ Authors : Your Name
110
+ ✓ Project successfully packaged.
111
+ ```
112
+ ---
113
+
114
+ ::: mkdocs-click
115
+ :module: uipath._cli
116
+ :command: publish
117
+ :depth: 1
118
+ :style: table
119
+
120
+ /// warning
121
+ To properly use the CLI for packaging and publishing, your project should include:
122
+
123
+ - A `pyproject.toml` file with project metadata
124
+ - A `uipath.json` file (generated by `uipath init`)
125
+ - Any Python files needed for your automation
126
+ ///
127
+
128
+ <!-- termynal -->
129
+
130
+ ```shell
131
+ > uipath publish
132
+ ⠋ Fetching available package feeds...
133
+ 👇 Select package feed:
134
+ 0: Orchestrator Tenant Processes Feed
135
+ 1: Orchestrator Personal Workspace Feed
136
+ Select feed number: 0
137
+ Selected feed: Orchestrator Tenant Processes Feed
138
+ ⠸ Publishing most recent package: test.0.1.0.nupkg ...
139
+ ✓ Package published successfully!
140
+ ```
141
+ ---
142
+
143
+ ::: mkdocs-click
144
+ :module: uipath._cli
145
+ :command: deploy
146
+ :depth: 1
147
+ :style: table
148
+
149
+ ---
150
+
151
+ ::: mkdocs-click
152
+ :module: uipath._cli
153
+ :command: invoke
154
+ :depth: 1
155
+ :style: table
156
+
157
+ <!-- termynal -->
158
+
159
+ ```shell
160
+ > uipath invoke agent '{"topic": "UiPath"}'
161
+ ⠴ Loading configuration ...
162
+ ⠴ Starting job ...
163
+ ✨ Job started successfully!
164
+ 🔗 Monitor your job here: [LINK]
165
+ ```
@@ -153,8 +153,7 @@ To create a UiPath project, run the following command in your terminal:
153
153
  ✓ Created 'uipath.json' file.
154
154
  ```
155
155
 
156
- /// admonition
157
- type: warning
156
+ /// warning
158
157
 
159
158
  The `uipath init` command executes your `main.py` file to analyze its structure and collect information about inputs and outputs.
160
159
  ///
@@ -0,0 +1,35 @@
1
+ function updateThemePictures() {
2
+ const body = document.body;
3
+ const mediaAttr = body.getAttribute("data-md-color-media") || "";
4
+ const isDark = mediaAttr.includes("dark");
5
+
6
+ const pictures = document.querySelectorAll("picture");
7
+
8
+ pictures.forEach((picture) => {
9
+ const darkSrc = picture.getAttribute("data-dark");
10
+ const lightSrc = picture.getAttribute("data-light");
11
+
12
+ const source = picture.querySelector("source");
13
+ const img = picture.querySelector("img");
14
+
15
+ if (isDark) {
16
+ source.media = "all";
17
+ source.srcset = darkSrc;
18
+ img.src = darkSrc;
19
+ } else {
20
+ source.media = "not all";
21
+ source.srcset = lightSrc;
22
+ img.src = lightSrc;
23
+ }
24
+ });
25
+ }
26
+
27
+ // Run on load
28
+ updateThemePictures();
29
+
30
+ // Watch for changes to the theme
31
+ const observer = new MutationObserver(updateThemePictures);
32
+ observer.observe(document.body, {
33
+ attributes: true,
34
+ attributeFilter: ["data-md-color-media"],
35
+ });
@@ -80,4 +80,4 @@ body[data-md-color-scheme=slate] {
80
80
  display: none;
81
81
  }
82
82
  }
83
- }
83
+ }
@@ -9,6 +9,9 @@ copyright: Copyright &copy; 2025 UiPath
9
9
  extra_css:
10
10
  - stylesheets/extra.css
11
11
 
12
+ extra_javascript:
13
+ - javascripts/extra.js
14
+
12
15
  theme:
13
16
  name: material
14
17
  palette:
@@ -35,8 +38,6 @@ theme:
35
38
  - content.tooltips
36
39
  - navigation.expand
37
40
  - navigation.footer
38
- - navigation.instant.prefetch
39
- - navigation.instant.progress
40
41
  - navigation.sections
41
42
  - search.highlight
42
43
  - search.share
@@ -47,14 +48,14 @@ theme:
47
48
 
48
49
  nav:
49
50
  - UiPath Langchain SDK:
50
- - langchain/index.md
51
51
  - Getting Started: index.md
52
+ - Sample agents: https://github.com/UiPath/uipath-langchain-python/tree/main/samples
52
53
  - Chat Models: langchain/chat_models.md
53
54
  - Context Grounding: langchain/context_grounding.md
54
55
  - Human In The Loop: langchain/human_in_the_loop.md
55
56
  - UiPath SDK:
56
- - core/index.md
57
57
  - Getting Started: core/getting_started.md
58
+ - CLI Reference: cli/index.md
58
59
  - Services:
59
60
  - Actions: core/actions.md
60
61
  - Assets: core/assets.md
@@ -81,6 +82,7 @@ markdown_extensions:
81
82
  - attr_list
82
83
  - md_in_html
83
84
  - admonition
85
+ - mkdocs-click
84
86
  - pymdownx.blocks.tab:
85
87
  alternate_style: true
86
88
  - pymdownx.blocks.admonition:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.0.34"
3
+ version = "2.0.36"
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"
@@ -9,12 +9,9 @@ dependencies = [
9
9
  "httpx>=0.28.1",
10
10
  "opentelemetry-sdk>=1.32.1",
11
11
  "pydantic>=2.11.1",
12
- "pytest-asyncio>=0.25.3",
13
12
  "python-dotenv>=1.0.1",
14
- "requests>=2.32.3",
15
13
  "tenacity>=9.0.0",
16
14
  "tomli>=2.2.1",
17
- "types-requests>=2.32.0.20250306",
18
15
  "pathlib>=1.0.1",
19
16
  "rich>=13.0.0",
20
17
  ]
@@ -58,6 +55,8 @@ dev = [
58
55
  "mkdocstrings-python>=1.16.5",
59
56
  "termynal>=0.13.0",
60
57
  "mkdocs-simple-hooks>=0.1.5",
58
+ "mkdocs-click>=0.9.0",
59
+ "pytest-asyncio>=0.26.0",
61
60
  ]
62
61
 
63
62
  [project.optional-dependencies]
@@ -3,7 +3,7 @@ import time
3
3
  from typing import Optional
4
4
 
5
5
  import click
6
- import requests
6
+ import httpx
7
7
 
8
8
  from .._utils._console import ConsoleLogger
9
9
  from ._models import TenantsAndOrganizationInfoResponse, TokenData
@@ -16,6 +16,7 @@ from ._utils import (
16
16
  )
17
17
 
18
18
  console = ConsoleLogger()
19
+ client = httpx.Client(follow_redirects=True)
19
20
 
20
21
 
21
22
  class PortalService:
@@ -44,10 +45,10 @@ class PortalService:
44
45
 
45
46
  def get_tenants_and_organizations(self) -> TenantsAndOrganizationInfoResponse:
46
47
  url = f"https://{self.domain}.uipath.com/{self.prt_id}/portal_/api/filtering/leftnav/tenantsAndOrganizationInfo"
47
- response = requests.get(
48
+ response = client.get(
48
49
  url, headers={"Authorization": f"Bearer {self.access_token}"}
49
50
  )
50
- if response.ok:
51
+ if response.status_code < 400:
51
52
  result = response.json()
52
53
  self._tenants_and_organizations = result
53
54
  return result
@@ -82,8 +83,8 @@ class PortalService:
82
83
 
83
84
  headers = {"Content-Type": "application/x-www-form-urlencoded"}
84
85
 
85
- response = requests.post(url, data=data, headers=headers)
86
- if response.ok:
86
+ response = client.post(url, data=data, headers=headers)
87
+ if response.status_code < 400:
87
88
  return response.json()
88
89
  elif response.status_code == 401:
89
90
  console.error("Unauthorized")
@@ -147,7 +148,7 @@ class PortalService:
147
148
 
148
149
  try:
149
150
  [try_enable_first_run_response, acquire_license_response] = [
150
- requests.post(
151
+ client.post(
151
152
  url,
152
153
  headers={"Authorization": f"Bearer {self.access_token}"},
153
154
  )
@@ -1,17 +1,18 @@
1
1
  from typing import Optional, Tuple
2
2
 
3
- import requests
3
+ import httpx
4
4
 
5
5
  from ._console import ConsoleLogger
6
6
 
7
7
  console = ConsoleLogger()
8
+ client = httpx.Client(follow_redirects=True)
8
9
 
9
10
 
10
11
  def get_personal_workspace_info(
11
12
  base_url: str, token: str
12
13
  ) -> Tuple[Optional[str], Optional[str]]:
13
14
  user_url = f"{base_url}/orchestrator_/odata/Users/UiPath.Server.Configuration.OData.GetCurrentUserExtended?$expand=PersonalWorkspace"
14
- user_response = requests.get(user_url, headers={"Authorization": f"Bearer {token}"})
15
+ user_response = client.get(user_url, headers={"Authorization": f"Bearer {token}"})
15
16
 
16
17
  if user_response.status_code != 200:
17
18
  console.error("Error: Failed to fetch user info. Please try reauthenticating.")
@@ -2,11 +2,12 @@ import json
2
2
  import urllib.parse
3
3
  from typing import Any
4
4
 
5
- import requests
5
+ import httpx
6
6
 
7
7
  from ._console import ConsoleLogger
8
8
 
9
9
  console = ConsoleLogger()
10
+ client = httpx.Client(follow_redirects=True)
10
11
 
11
12
 
12
13
  def get_release_info(
@@ -18,7 +19,7 @@ def get_release_info(
18
19
  }
19
20
 
20
21
  release_url = f"{base_url}/orchestrator_/odata/Releases/UiPath.Server.Configuration.OData.ListReleases?$select=Id,Key&$top=1&$filter=Name%20eq%20%27{urllib.parse.quote(package_name)}%27"
21
- response = requests.get(release_url, headers=headers)
22
+ response = client.get(release_url, headers=headers)
22
23
  if response.status_code == 200:
23
24
  try:
24
25
  data = json.loads(response.text)
@@ -30,7 +31,7 @@ def get_release_info(
30
31
  return None, None
31
32
  except IndexError:
32
33
  console.error(
33
- "Error: No process found in your workspace. Please publish the process first."
34
+ f"Error: No process with name '{package_name}' found in your workspace. Please publish the process first."
34
35
  )
35
36
  return None, None
36
37
  else:
@@ -20,10 +20,9 @@ def generate_env_file(target_directory):
20
20
 
21
21
  if not os.path.exists(env_path):
22
22
  relative_path = os.path.relpath(env_path, target_directory)
23
+ with open(env_path, "w"):
24
+ pass
23
25
  console.success(f" Created '{relative_path}' file.")
24
- with open(env_path, "w") as f:
25
- f.write("UIPATH_ACCESS_TOKEN=YOUR_TOKEN_HERE\n")
26
- f.write("UIPATH_URL=https://cloud.uipath.com/ACCOUNT_NAME/TENANT_NAME\n")
27
26
 
28
27
 
29
28
  def get_user_script(directory: str, entrypoint: Optional[str] = None) -> Optional[str]:
@@ -4,7 +4,7 @@ import os
4
4
  from typing import Optional
5
5
 
6
6
  import click
7
- import requests
7
+ import httpx
8
8
  from dotenv import load_dotenv
9
9
 
10
10
  from ._utils._console import ConsoleLogger
@@ -21,6 +21,7 @@ from ._utils._processes import get_release_info
21
21
  logger = logging.getLogger(__name__)
22
22
  load_dotenv()
23
23
  console = ConsoleLogger()
24
+ client = httpx.Client(follow_redirects=True)
24
25
 
25
26
 
26
27
  def _read_project_name() -> str:
@@ -43,7 +44,7 @@ def _read_project_name() -> str:
43
44
  @click.argument("entrypoint", required=False)
44
45
  @click.argument("input", required=False, default="{}")
45
46
  def invoke(entrypoint: Optional[str], input: Optional[str]) -> None:
46
- """Invoke a published agent."""
47
+ """Invoke an agent published in my workspace."""
47
48
  with console.spinner("Loading configuration ..."):
48
49
  current_path = os.getcwd()
49
50
  load_dotenv(os.path.join(current_path, ".env"), override=True)
@@ -74,7 +75,7 @@ def invoke(entrypoint: Optional[str], input: Optional[str]) -> None:
74
75
  "x-uipath-organizationunitid": str(personal_workspace_folder_id),
75
76
  }
76
77
 
77
- response = requests.post(url, json=payload, headers=headers)
78
+ response = client.post(url, json=payload, headers=headers)
78
79
 
79
80
  if response.status_code == 201:
80
81
  job_key = None
@@ -3,7 +3,7 @@ import json
3
3
  import os
4
4
 
5
5
  import click
6
- import requests
6
+ import httpx
7
7
  from dotenv import load_dotenv
8
8
 
9
9
  from ._utils._common import get_env_vars
@@ -12,6 +12,7 @@ from ._utils._folders import get_personal_workspace_info
12
12
  from ._utils._processes import get_release_info
13
13
 
14
14
  console = ConsoleLogger()
15
+ client = httpx.Client(follow_redirects=True)
15
16
 
16
17
 
17
18
  def get_most_recent_package():
@@ -33,7 +34,7 @@ def get_available_feeds(
33
34
  base_url: str, headers: dict[str, str]
34
35
  ) -> list[tuple[str, str]]:
35
36
  url = f"{base_url}/orchestrator_/api/PackageFeeds/GetFeeds"
36
- response = requests.get(url, headers=headers)
37
+ response = httpx.get(url, headers=headers)
37
38
  if response.status_code != 200:
38
39
  console.error(
39
40
  f"Failed to fetch available feeds. Please check your connection. Status code: {response.status_code} {response.text}"
@@ -122,7 +123,7 @@ def publish(feed):
122
123
 
123
124
  with open(package_to_publish_path, "rb") as f:
124
125
  files = {"file": (package_to_publish_path, f, "application/octet-stream")}
125
- response = requests.post(url, headers=headers, files=files)
126
+ response = client.post(url, headers=headers, files=files)
126
127
 
127
128
  if response.status_code == 200:
128
129
  console.success("Package published successfully!")
@@ -19,14 +19,7 @@ def test_init_env_file_creation(runner: CliRunner, temp_dir: str) -> None:
19
19
  assert result.exit_code == 0
20
20
  assert "Created '.env' file" in result.output
21
21
 
22
- # Use relative path instead of temp_dir
23
- with open(".env", "r") as f:
24
- content = f.read()
25
- assert "UIPATH_ACCESS_TOKEN=YOUR_TOKEN_HERE" in content
26
- assert (
27
- "UIPATH_URL=https://cloud.uipath.com/ACCOUNT_NAME/TENANT_NAME"
28
- in content
29
- )
22
+ assert os.path.exists(".env")
30
23
 
31
24
  # Test existing .env isn't overwritten
32
25
  original_content = "EXISTING=CONFIG"
@@ -1156,6 +1156,19 @@ wheels = [
1156
1156
  { url = "https://files.pythonhosted.org/packages/f8/29/1125f7b11db63e8e32bcfa0752a4eea30abff3ebd0796f808e14571ddaa2/mkdocs_autorefs-1.4.1-py3-none-any.whl", hash = "sha256:9793c5ac06a6ebbe52ec0f8439256e66187badf4b5334b5fde0b128ec134df4f", size = 5782047 },
1157
1157
  ]
1158
1158
 
1159
+ [[package]]
1160
+ name = "mkdocs-click"
1161
+ version = "0.9.0"
1162
+ source = { registry = "https://pypi.org/simple" }
1163
+ dependencies = [
1164
+ { name = "click" },
1165
+ { name = "markdown" },
1166
+ ]
1167
+ sdist = { url = "https://files.pythonhosted.org/packages/a1/c7/8c25f3a3b379def41e6d0bb5c4beeab7aa8a394b17e749f498504102cfa5/mkdocs_click-0.9.0.tar.gz", hash = "sha256:6050917628d4740517541422b607404d044117bc31b770c4f9e9e1939a50c908", size = 18720 }
1168
+ wheels = [
1169
+ { url = "https://files.pythonhosted.org/packages/e9/fc/9124ab36e2341e78d8d9c669511bd70f52ea0de8105760c31fabec1f9396/mkdocs_click-0.9.0-py3-none-any.whl", hash = "sha256:5208e828f4f68f63c847c1ef7be48edee9964090390afc8f5b3d4cbe5ea9bbed", size = 15104 },
1170
+ ]
1171
+
1159
1172
  [[package]]
1160
1173
  name = "mkdocs-get-deps"
1161
1174
  version = "0.2.0"
@@ -2022,14 +2035,14 @@ wheels = [
2022
2035
 
2023
2036
  [[package]]
2024
2037
  name = "pytest-asyncio"
2025
- version = "0.25.3"
2038
+ version = "0.26.0"
2026
2039
  source = { registry = "https://pypi.org/simple" }
2027
2040
  dependencies = [
2028
2041
  { name = "pytest" },
2029
2042
  ]
2030
- sdist = { url = "https://files.pythonhosted.org/packages/f2/a8/ecbc8ede70921dd2f544ab1cadd3ff3bf842af27f87bbdea774c7baa1d38/pytest_asyncio-0.25.3.tar.gz", hash = "sha256:fc1da2cf9f125ada7e710b4ddad05518d4cee187ae9412e9ac9271003497f07a", size = 54239 }
2043
+ sdist = { url = "https://files.pythonhosted.org/packages/8e/c4/453c52c659521066969523e87d85d54139bbd17b78f09532fb8eb8cdb58e/pytest_asyncio-0.26.0.tar.gz", hash = "sha256:c4df2a697648241ff39e7f0e4a73050b03f123f760673956cf0d72a4990e312f", size = 54156 }
2031
2044
  wheels = [
2032
- { url = "https://files.pythonhosted.org/packages/67/17/3493c5624e48fd97156ebaec380dcaafee9506d7e2c46218ceebbb57d7de/pytest_asyncio-0.25.3-py3-none-any.whl", hash = "sha256:9e89518e0f9bd08928f97a3482fdc4e244df17529460bc038291ccaf8f85c7c3", size = 19467 },
2045
+ { url = "https://files.pythonhosted.org/packages/20/7f/338843f449ace853647ace35870874f69a764d251872ed1b4de9f234822c/pytest_asyncio-0.26.0-py3-none-any.whl", hash = "sha256:7b51ed894f4fbea1340262bdae5135797ebbe21d8638978e35d31c6d19f72fb0", size = 19694 },
2033
2046
  ]
2034
2047
 
2035
2048
  [[package]]
@@ -2543,7 +2556,7 @@ wheels = [
2543
2556
 
2544
2557
  [[package]]
2545
2558
  name = "uipath"
2546
- version = "2.0.34"
2559
+ version = "2.0.36"
2547
2560
  source = { editable = "." }
2548
2561
  dependencies = [
2549
2562
  { name = "click" },
@@ -2551,13 +2564,10 @@ dependencies = [
2551
2564
  { name = "opentelemetry-sdk" },
2552
2565
  { name = "pathlib" },
2553
2566
  { name = "pydantic" },
2554
- { name = "pytest-asyncio" },
2555
2567
  { name = "python-dotenv" },
2556
- { name = "requests" },
2557
2568
  { name = "rich" },
2558
2569
  { name = "tenacity" },
2559
2570
  { name = "tomli" },
2560
- { name = "types-requests" },
2561
2571
  ]
2562
2572
 
2563
2573
  [package.optional-dependencies]
@@ -2569,6 +2579,7 @@ langchain = [
2569
2579
  dev = [
2570
2580
  { name = "bandit" },
2571
2581
  { name = "mkdocs" },
2582
+ { name = "mkdocs-click" },
2572
2583
  { name = "mkdocs-material", extra = ["imaging"] },
2573
2584
  { name = "mkdocs-simple-hooks" },
2574
2585
  { name = "mkdocstrings" },
@@ -2576,6 +2587,7 @@ dev = [
2576
2587
  { name = "mypy" },
2577
2588
  { name = "pre-commit" },
2578
2589
  { name = "pytest" },
2590
+ { name = "pytest-asyncio" },
2579
2591
  { name = "pytest-cov" },
2580
2592
  { name = "pytest-mock" },
2581
2593
  { name = "ruff" },
@@ -2590,13 +2602,10 @@ requires-dist = [
2590
2602
  { name = "opentelemetry-sdk", specifier = ">=1.32.1" },
2591
2603
  { name = "pathlib", specifier = ">=1.0.1" },
2592
2604
  { name = "pydantic", specifier = ">=2.11.1" },
2593
- { name = "pytest-asyncio", specifier = ">=0.25.3" },
2594
2605
  { name = "python-dotenv", specifier = ">=1.0.1" },
2595
- { name = "requests", specifier = ">=2.32.3" },
2596
2606
  { name = "rich", specifier = ">=13.0.0" },
2597
2607
  { name = "tenacity", specifier = ">=9.0.0" },
2598
2608
  { name = "tomli", specifier = ">=2.2.1" },
2599
- { name = "types-requests", specifier = ">=2.32.0.20250306" },
2600
2609
  { name = "uipath-langchain", marker = "extra == 'langchain'", specifier = ">=0.0.88,<0.1.0" },
2601
2610
  ]
2602
2611
 
@@ -2604,6 +2613,7 @@ requires-dist = [
2604
2613
  dev = [
2605
2614
  { name = "bandit", specifier = ">=1.8.2" },
2606
2615
  { name = "mkdocs", specifier = ">=1.6.1" },
2616
+ { name = "mkdocs-click", specifier = ">=0.9.0" },
2607
2617
  { name = "mkdocs-material", extras = ["imaging"], specifier = ">=9.6.7" },
2608
2618
  { name = "mkdocs-simple-hooks", specifier = ">=0.1.5" },
2609
2619
  { name = "mkdocstrings", specifier = ">=0.29.0" },
@@ -2611,6 +2621,7 @@ dev = [
2611
2621
  { name = "mypy", specifier = ">=1.14.1" },
2612
2622
  { name = "pre-commit", specifier = ">=4.1.0" },
2613
2623
  { name = "pytest", specifier = ">=7.4.0" },
2624
+ { name = "pytest-asyncio", specifier = ">=0.26.0" },
2614
2625
  { name = "pytest-cov", specifier = ">=4.1.0" },
2615
2626
  { name = "pytest-mock", specifier = ">=3.11.1" },
2616
2627
  { name = "ruff", specifier = ">=0.9.4" },
@@ -1,7 +0,0 @@
1
- ---
2
- title: Introduction
3
- ---
4
-
5
- --8<--
6
- README.md
7
- --8<--
@@ -1,7 +0,0 @@
1
- ---
2
- title: Introduction
3
- ---
4
-
5
- --8<--
6
- docs/plugins/uipath-langchain-python/README.md
7
- --8<--
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