uipath 2.0.35__tar.gz → 2.0.37__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 (144) hide show
  1. {uipath-2.0.35 → uipath-2.0.37}/PKG-INFO +2 -4
  2. uipath-2.0.37/docs/core/actions.md +1 -0
  3. uipath-2.0.37/docs/core/assets.md +1 -0
  4. uipath-2.0.37/docs/core/buckets.md +1 -0
  5. uipath-2.0.37/docs/core/context_grounding.md +1 -0
  6. uipath-2.0.37/docs/core/jobs.md +1 -0
  7. uipath-2.0.37/docs/core/processes.md +1 -0
  8. uipath-2.0.37/docs/core/queues.md +1 -0
  9. {uipath-2.0.35 → uipath-2.0.37}/docs/stylesheets/extra.css +42 -14
  10. {uipath-2.0.35 → uipath-2.0.37}/mkdocs.yml +18 -2
  11. {uipath-2.0.35 → uipath-2.0.37}/pyproject.toml +4 -6
  12. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_auth/_portal_service.py +7 -6
  13. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_utils/_folders.py +3 -2
  14. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_utils/_processes.py +3 -2
  15. uipath-2.0.37/src/uipath/_cli/cli_deploy.py +28 -0
  16. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/cli_invoke.py +3 -2
  17. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/cli_publish.py +4 -3
  18. {uipath-2.0.35 → uipath-2.0.37}/uv.lock +1591 -1590
  19. uipath-2.0.35/docs/core/actions.md +0 -3
  20. uipath-2.0.35/docs/core/assets.md +0 -3
  21. uipath-2.0.35/docs/core/buckets.md +0 -3
  22. uipath-2.0.35/docs/core/context_grounding.md +0 -3
  23. uipath-2.0.35/docs/core/jobs.md +0 -3
  24. uipath-2.0.35/docs/core/processes.md +0 -3
  25. uipath-2.0.35/docs/core/queues.md +0 -3
  26. uipath-2.0.35/src/uipath/_cli/cli_deploy.py +0 -14
  27. {uipath-2.0.35 → uipath-2.0.37}/.cursorrules +0 -0
  28. {uipath-2.0.35 → uipath-2.0.37}/.editorconfig +0 -0
  29. {uipath-2.0.35 → uipath-2.0.37}/.gitattributes +0 -0
  30. {uipath-2.0.35 → uipath-2.0.37}/.github/workflows/build.yml +0 -0
  31. {uipath-2.0.35 → uipath-2.0.37}/.github/workflows/cd.yml +0 -0
  32. {uipath-2.0.35 → uipath-2.0.37}/.github/workflows/ci.yml +0 -0
  33. {uipath-2.0.35 → uipath-2.0.37}/.github/workflows/commitlint.yml +0 -0
  34. {uipath-2.0.35 → uipath-2.0.37}/.github/workflows/lint.yml +0 -0
  35. {uipath-2.0.35 → uipath-2.0.37}/.github/workflows/publish-dev.yml +0 -0
  36. {uipath-2.0.35 → uipath-2.0.37}/.github/workflows/publish-docs.yml +0 -0
  37. {uipath-2.0.35 → uipath-2.0.37}/.github/workflows/test.yml +0 -0
  38. {uipath-2.0.35 → uipath-2.0.37}/.gitignore +0 -0
  39. {uipath-2.0.35 → uipath-2.0.37}/.pre-commit-config.yaml +0 -0
  40. {uipath-2.0.35 → uipath-2.0.37}/.python-version +0 -0
  41. {uipath-2.0.35 → uipath-2.0.37}/.vscode/extensions.json +0 -0
  42. {uipath-2.0.35 → uipath-2.0.37}/.vscode/settings.json +0 -0
  43. {uipath-2.0.35 → uipath-2.0.37}/CONTRIBUTING.md +0 -0
  44. {uipath-2.0.35 → uipath-2.0.37}/LICENSE +0 -0
  45. {uipath-2.0.35 → uipath-2.0.37}/README.md +0 -0
  46. {uipath-2.0.35 → uipath-2.0.37}/docs/CONTRIBUTING.md +0 -0
  47. {uipath-2.0.35 → uipath-2.0.37}/docs/assets/favicon.png +0 -0
  48. {uipath-2.0.35 → uipath-2.0.37}/docs/assets/uipath-logo.svg +0 -0
  49. {uipath-2.0.35 → uipath-2.0.37}/docs/cli/index.md +0 -0
  50. {uipath-2.0.35 → uipath-2.0.37}/docs/core/getting_started.md +0 -0
  51. {uipath-2.0.35 → uipath-2.0.37}/docs/hooks.py +0 -0
  52. {uipath-2.0.35 → uipath-2.0.37}/docs/javascripts/extra.js +0 -0
  53. {uipath-2.0.35 → uipath-2.0.37}/docs/langchain/chat_models.md +0 -0
  54. {uipath-2.0.35 → uipath-2.0.37}/docs/langchain/context_grounding.md +0 -0
  55. {uipath-2.0.35 → uipath-2.0.37}/docs/langchain/human_in_the_loop.md +0 -0
  56. {uipath-2.0.35 → uipath-2.0.37}/docs/release_policy.md +0 -0
  57. {uipath-2.0.35 → uipath-2.0.37}/justfile +0 -0
  58. {uipath-2.0.35 → uipath-2.0.37}/py.typed +0 -0
  59. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/__init__.py +0 -0
  60. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/README.md +0 -0
  61. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/__init__.py +0 -0
  62. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  63. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_auth/_models.py +0 -0
  64. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  65. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_auth/_utils.py +0 -0
  66. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_auth/auth_config.json +0 -0
  67. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_auth/index.html +0 -0
  68. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_auth/localhost.crt +0 -0
  69. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_auth/localhost.key +0 -0
  70. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  71. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_runtime/_logging.py +0 -0
  72. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  73. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  74. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_templates/.rels.template +0 -0
  75. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  76. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_templates/main.py.template +0 -0
  77. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  78. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_utils/_common.py +0 -0
  79. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_utils/_console.py +0 -0
  80. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_utils/_input_args.py +0 -0
  81. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  82. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/cli_auth.py +0 -0
  83. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/cli_init.py +0 -0
  84. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/cli_new.py +0 -0
  85. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/cli_pack.py +0 -0
  86. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/cli_run.py +0 -0
  87. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/middlewares.py +0 -0
  88. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_cli/spinner.py +0 -0
  89. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_config.py +0 -0
  90. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_execution_context.py +0 -0
  91. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_folder_context.py +0 -0
  92. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/__init__.py +0 -0
  93. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/_base_service.py +0 -0
  94. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/actions_service.py +0 -0
  95. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/api_client.py +0 -0
  96. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/assets_service.py +0 -0
  97. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/buckets_service.py +0 -0
  98. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/connections_service.py +0 -0
  99. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/connections_service.pyi +0 -0
  100. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/context_grounding_service.py +0 -0
  101. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/folder_service.py +0 -0
  102. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/jobs_service.py +0 -0
  103. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/llm_gateway_service.py +0 -0
  104. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/processes_service.py +0 -0
  105. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_services/queues_service.py +0 -0
  106. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_uipath.py +0 -0
  107. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_utils/__init__.py +0 -0
  108. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_utils/_endpoint.py +0 -0
  109. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_utils/_infer_bindings.py +0 -0
  110. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_utils/_logs.py +0 -0
  111. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_utils/_request_override.py +0 -0
  112. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_utils/_request_spec.py +0 -0
  113. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_utils/_user_agent.py +0 -0
  114. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/_utils/constants.py +0 -0
  115. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/__init__.py +0 -0
  116. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/action_schema.py +0 -0
  117. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/actions.py +0 -0
  118. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/assets.py +0 -0
  119. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/connections.py +0 -0
  120. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/context_grounding.py +0 -0
  121. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/context_grounding_index.py +0 -0
  122. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/errors.py +0 -0
  123. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/exceptions.py +0 -0
  124. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/interrupt_models.py +0 -0
  125. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/job.py +0 -0
  126. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/llm_gateway.py +0 -0
  127. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/processes.py +0 -0
  128. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/models/queues.py +0 -0
  129. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/py.typed +0 -0
  130. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/tracing/__init__.py +0 -0
  131. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/tracing/_otel_exporters.py +0 -0
  132. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/tracing/_traced.py +0 -0
  133. {uipath-2.0.35 → uipath-2.0.37}/src/uipath/tracing/_utils.py +0 -0
  134. {uipath-2.0.35 → uipath-2.0.37}/tests/__init__.py +0 -0
  135. {uipath-2.0.35 → uipath-2.0.37}/tests/cli/test_init.py +0 -0
  136. {uipath-2.0.35 → uipath-2.0.37}/tests/conftest.py +0 -0
  137. {uipath-2.0.35 → uipath-2.0.37}/tests/sdk/services/test_llm_integration.py +0 -0
  138. {uipath-2.0.35 → uipath-2.0.37}/tests/sdk/services/test_llm_service.py +0 -0
  139. {uipath-2.0.35 → uipath-2.0.37}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  140. {uipath-2.0.35 → uipath-2.0.37}/tests/sdk/test_config.py +0 -0
  141. {uipath-2.0.35 → uipath-2.0.37}/tests/tracing/test_otel_exporters.py +0 -0
  142. {uipath-2.0.35 → uipath-2.0.37}/tests/tracing/test_span_utils.py +0 -0
  143. {uipath-2.0.35 → uipath-2.0.37}/tests/tracing/test_traced.py +0 -0
  144. {uipath-2.0.35 → uipath-2.0.37}/tests/tracing/test_tracing_manager.py +0 -0
@@ -1,9 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath
3
- Version: 2.0.35
3
+ Version: 2.0.37
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
7
+ Project-URL: Documentation, https://uipath.github.io/uipath-python/
7
8
  Maintainer-email: Marius Cosareanu <marius.cosareanu@uipath.com>, Cristian Pufu <cristian.pufu@uipath.com>
8
9
  License-File: LICENSE
9
10
  Classifier: Development Status :: 3 - Alpha
@@ -18,13 +19,10 @@ Requires-Dist: httpx>=0.28.1
18
19
  Requires-Dist: opentelemetry-sdk>=1.32.1
19
20
  Requires-Dist: pathlib>=1.0.1
20
21
  Requires-Dist: pydantic>=2.11.1
21
- Requires-Dist: pytest-asyncio>=0.25.3
22
22
  Requires-Dist: python-dotenv>=1.0.1
23
- Requires-Dist: requests>=2.32.3
24
23
  Requires-Dist: rich>=13.0.0
25
24
  Requires-Dist: tenacity>=9.0.0
26
25
  Requires-Dist: tomli>=2.2.1
27
- Requires-Dist: types-requests>=2.32.0.20250306
28
26
  Provides-Extra: langchain
29
27
  Requires-Dist: uipath-langchain<0.1.0,>=0.0.88; extra == 'langchain'
30
28
  Description-Content-Type: text/markdown
@@ -0,0 +1 @@
1
+ ::: uipath._services.actions_service
@@ -0,0 +1 @@
1
+ ::: uipath._services.assets_service
@@ -0,0 +1 @@
1
+ ::: uipath._services.buckets_service
@@ -0,0 +1 @@
1
+ ::: uipath._services.context_grounding_service
@@ -0,0 +1 @@
1
+ ::: uipath._services.jobs_service
@@ -0,0 +1 @@
1
+ ::: uipath._services.processes_service
@@ -0,0 +1 @@
1
+ ::: uipath._services.queues_service
@@ -1,12 +1,3 @@
1
- .md-header {
2
- .md-header__title {
3
- .md-header__topic:first-child {
4
- display: none;
5
- }
6
- }
7
- }
8
-
9
-
10
1
  :root {
11
2
  --md-primary-bg-color: #ffffff;
12
3
  --md-primary-fg-color: #182027;
@@ -14,30 +5,67 @@
14
5
  }
15
6
 
16
7
 
17
- [data-md-color-scheme=default]
18
- {
8
+ [data-md-color-scheme=default] {
19
9
  --md-typeset-a-color: #0067df;
10
+
11
+ .md-nav--primary .md-nav__title[for=__drawer] {
12
+ background-color: #ffffff !important;
13
+ color: #ffffff !important;
14
+ }
15
+
16
+ .md-nav__source {
17
+ background-color: #ffffff !important;
18
+ color: #182027 !important;
19
+ }
20
20
  }
21
21
 
22
22
  [data-md-color-scheme=slate] {
23
23
  --md-typeset-a-color: #66adff;
24
24
 
25
+ body& {
26
+ background-color: #182027 !important;
27
+ }
28
+
25
29
  .md-header {
26
30
  background-color: #182027;
27
31
  color: #ffffff;
28
32
  }
29
- }
30
33
 
31
- body[data-md-color-scheme=slate] {
32
- background-color: #182027 !important;
34
+ .md-nav--primary .md-nav__title[for=__drawer] {
35
+ background-color: #182027 !important;
36
+ color: #182027 !important;
37
+ }
38
+
39
+ .md-nav__source {
40
+ background-color: #182027 !important;
41
+ color: #ffffff !important;
42
+ }
43
+
44
+
33
45
  }
34
46
 
35
47
  .md-header {
36
48
  --md-primary-bg-color: #182027;
37
49
  --md-primary-fg-color: #ffffff;
50
+
51
+ .md-header__title {
52
+ .md-header__topic:first-child {
53
+ display: none;
54
+ }
55
+ }
38
56
  }
39
57
 
58
+ .md-header__button:hover {
59
+ opacity: 1 !important;
60
+ }
40
61
 
62
+ a[href^="https://"]:not(.md-source) {
63
+ &::after {
64
+ content: "↗";
65
+ font-size: 0.8em;
66
+ margin-left: 0.2em;
67
+ }
68
+ }
41
69
 
42
70
  @media screen and (min-width: 60em) {
43
71
  .md-search__form {
@@ -49,10 +49,10 @@ theme:
49
49
  nav:
50
50
  - UiPath Langchain SDK:
51
51
  - Getting Started: index.md
52
- - Sample agents: https://github.com/UiPath/uipath-langchain-python/tree/main/samples
53
52
  - Chat Models: langchain/chat_models.md
54
53
  - Context Grounding: langchain/context_grounding.md
55
54
  - Human In The Loop: langchain/human_in_the_loop.md
55
+ - Sample Agents: https://github.com/UiPath/uipath-langchain-python/tree/main/samples
56
56
  - UiPath SDK:
57
57
  - Getting Started: core/getting_started.md
58
58
  - CLI Reference: cli/index.md
@@ -69,7 +69,23 @@ nav:
69
69
 
70
70
  plugins:
71
71
  - search
72
- - mkdocstrings
72
+ - mkdocstrings:
73
+ default_handler: python
74
+ handlers:
75
+ python:
76
+ options:
77
+ docstring_style: google
78
+ modernize_annotations: true
79
+ show_signature_annotations: false
80
+ separate_signature: true
81
+ show_overloads: false
82
+ unwrap_annotated: true
83
+ heading_level: 2
84
+ show_root_heading: false
85
+ show_source: false
86
+ show_root_toc_entry: false
87
+ show_symbol_type_toc: true
88
+ show_bases: false
73
89
  - mkdocs-simple-hooks:
74
90
  hooks:
75
91
  on_pre_build: "docs.hooks:redirect_index"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uipath"
3
- version = "2.0.35"
3
+ version = "2.0.37"
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
  ]
@@ -34,6 +31,7 @@ maintainers = [
34
31
  [project.urls]
35
32
  Homepage = "https://uipath.com"
36
33
  Repository = "https://github.com/UiPath/uipath-python"
34
+ Documentation = "https://uipath.github.io/uipath-python/"
37
35
 
38
36
  [project.scripts]
39
37
  uipath = "uipath._cli:cli"
@@ -54,11 +52,11 @@ dev = [
54
52
  "pre-commit>=4.1.0",
55
53
  "mkdocs>=1.6.1",
56
54
  "mkdocs-material[imaging]>=9.6.7",
57
- "mkdocstrings>=0.29.0",
58
- "mkdocstrings-python>=1.16.5",
55
+ "mkdocstrings[python]>=0.18",
59
56
  "termynal>=0.13.0",
60
57
  "mkdocs-simple-hooks>=0.1.5",
61
58
  "mkdocs-click>=0.9.0",
59
+ "pytest-asyncio>=0.26.0",
62
60
  ]
63
61
 
64
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)
@@ -0,0 +1,28 @@
1
+ # type: ignore
2
+ import click
3
+
4
+ from .cli_pack import pack
5
+ from .cli_publish import publish
6
+
7
+
8
+ @click.command()
9
+ @click.option(
10
+ "--tenant",
11
+ "-t",
12
+ "feed",
13
+ flag_value="tenant",
14
+ help="Whether to publish to the tenant package feed",
15
+ )
16
+ @click.option(
17
+ "--my-workspace",
18
+ "-w",
19
+ "feed",
20
+ flag_value="personal",
21
+ help="Whether to publish to the personal workspace",
22
+ )
23
+ @click.argument("root", type=str, default="./")
24
+ def deploy(root, feed):
25
+ """Pack and publish the project."""
26
+ ctx = click.get_current_context()
27
+ ctx.invoke(pack, root=root)
28
+ ctx.invoke(publish, feed=feed)
@@ -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:
@@ -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!")