uipath 2.0.44__tar.gz → 2.0.46__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.44 → uipath-2.0.46}/.github/workflows/build.yml +2 -3
  2. {uipath-2.0.44 → uipath-2.0.46}/.github/workflows/cd.yml +2 -1
  3. {uipath-2.0.44 → uipath-2.0.46}/.github/workflows/ci.yml +5 -3
  4. uipath-2.0.46/.github/workflows/commitlint.yml +43 -0
  5. {uipath-2.0.44 → uipath-2.0.46}/.github/workflows/lint.yml +3 -11
  6. {uipath-2.0.44 → uipath-2.0.46}/.github/workflows/publish-dev.yml +118 -124
  7. {uipath-2.0.44 → uipath-2.0.46}/.github/workflows/publish-docs.yml +1 -1
  8. {uipath-2.0.44 → uipath-2.0.46}/.github/workflows/test.yml +3 -10
  9. {uipath-2.0.44 → uipath-2.0.46}/PKG-INFO +1 -1
  10. {uipath-2.0.44 → uipath-2.0.46}/pyproject.toml +1 -1
  11. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_auth/_portal_service.py +1 -1
  12. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_utils/_folders.py +1 -1
  13. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_utils/_processes.py +1 -1
  14. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/cli_invoke.py +1 -1
  15. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/cli_publish.py +1 -1
  16. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/_base_service.py +12 -4
  17. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/buckets_service.py +16 -6
  18. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/context_grounding_service.py +1 -1
  19. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/__init__.py +2 -0
  20. uipath-2.0.46/src/uipath/models/buckets.py +27 -0
  21. uipath-2.0.46/src/uipath/models/context_grounding.py +36 -0
  22. {uipath-2.0.44 → uipath-2.0.46}/uv.lock +1 -1
  23. uipath-2.0.44/.github/workflows/commitlint.yml +0 -26
  24. uipath-2.0.44/src/uipath/models/context_grounding.py +0 -18
  25. {uipath-2.0.44 → uipath-2.0.46}/.cursorrules +0 -0
  26. {uipath-2.0.44 → uipath-2.0.46}/.editorconfig +0 -0
  27. {uipath-2.0.44 → uipath-2.0.46}/.gitattributes +0 -0
  28. {uipath-2.0.44 → uipath-2.0.46}/.github/workflows/slack.yml +0 -0
  29. {uipath-2.0.44 → uipath-2.0.46}/.gitignore +0 -0
  30. {uipath-2.0.44 → uipath-2.0.46}/.pre-commit-config.yaml +0 -0
  31. {uipath-2.0.44 → uipath-2.0.46}/.python-version +0 -0
  32. {uipath-2.0.44 → uipath-2.0.46}/.vscode/extensions.json +0 -0
  33. {uipath-2.0.44 → uipath-2.0.46}/.vscode/settings.json +0 -0
  34. {uipath-2.0.44 → uipath-2.0.46}/CONTRIBUTING.md +0 -0
  35. {uipath-2.0.44 → uipath-2.0.46}/LICENSE +0 -0
  36. {uipath-2.0.44 → uipath-2.0.46}/README.md +0 -0
  37. {uipath-2.0.44 → uipath-2.0.46}/docs/CONTRIBUTING.md +0 -0
  38. {uipath-2.0.44 → uipath-2.0.46}/docs/assets/favicon.png +0 -0
  39. {uipath-2.0.44 → uipath-2.0.46}/docs/assets/logo-dark.svg +0 -0
  40. {uipath-2.0.44 → uipath-2.0.46}/docs/assets/logo-light.svg +0 -0
  41. {uipath-2.0.44 → uipath-2.0.46}/docs/cli/index.md +0 -0
  42. {uipath-2.0.44 → uipath-2.0.46}/docs/core/actions.md +0 -0
  43. {uipath-2.0.44 → uipath-2.0.46}/docs/core/assets.md +0 -0
  44. {uipath-2.0.44 → uipath-2.0.46}/docs/core/buckets.md +0 -0
  45. {uipath-2.0.44 → uipath-2.0.46}/docs/core/connections.md +0 -0
  46. {uipath-2.0.44 → uipath-2.0.46}/docs/core/context_grounding.md +0 -0
  47. {uipath-2.0.44 → uipath-2.0.46}/docs/core/getting_started.md +0 -0
  48. {uipath-2.0.44 → uipath-2.0.46}/docs/core/jobs.md +0 -0
  49. {uipath-2.0.44 → uipath-2.0.46}/docs/core/processes.md +0 -0
  50. {uipath-2.0.44 → uipath-2.0.46}/docs/core/queues.md +0 -0
  51. {uipath-2.0.44 → uipath-2.0.46}/docs/hooks.py +0 -0
  52. {uipath-2.0.44 → uipath-2.0.46}/docs/javascripts/extra.js +0 -0
  53. {uipath-2.0.44 → uipath-2.0.46}/docs/langchain/chat_models.md +0 -0
  54. {uipath-2.0.44 → uipath-2.0.46}/docs/langchain/context_grounding.md +0 -0
  55. {uipath-2.0.44 → uipath-2.0.46}/docs/langchain/human_in_the_loop.md +0 -0
  56. {uipath-2.0.44 → uipath-2.0.46}/docs/overrides/partials/logo.html +0 -0
  57. {uipath-2.0.44 → uipath-2.0.46}/docs/release_policy.md +0 -0
  58. {uipath-2.0.44 → uipath-2.0.46}/docs/stylesheets/extra.css +0 -0
  59. {uipath-2.0.44 → uipath-2.0.46}/justfile +0 -0
  60. {uipath-2.0.44 → uipath-2.0.46}/mkdocs.yml +0 -0
  61. {uipath-2.0.44 → uipath-2.0.46}/py.typed +0 -0
  62. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/__init__.py +0 -0
  63. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/README.md +0 -0
  64. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/__init__.py +0 -0
  65. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_auth/_auth_server.py +0 -0
  66. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_auth/_models.py +0 -0
  67. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  68. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_auth/_utils.py +0 -0
  69. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_auth/auth_config.json +0 -0
  70. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_auth/index.html +0 -0
  71. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_auth/localhost.crt +0 -0
  72. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_auth/localhost.key +0 -0
  73. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  74. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_runtime/_logging.py +0 -0
  75. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  76. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  77. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_templates/.rels.template +0 -0
  78. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  79. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_templates/main.py.template +0 -0
  80. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  81. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_utils/_common.py +0 -0
  82. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_utils/_console.py +0 -0
  83. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_utils/_input_args.py +0 -0
  84. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  85. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/cli_auth.py +0 -0
  86. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/cli_deploy.py +0 -0
  87. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/cli_init.py +0 -0
  88. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/cli_new.py +0 -0
  89. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/cli_pack.py +0 -0
  90. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/cli_run.py +0 -0
  91. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/middlewares.py +0 -0
  92. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_cli/spinner.py +0 -0
  93. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_config.py +0 -0
  94. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_execution_context.py +0 -0
  95. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_folder_context.py +0 -0
  96. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/__init__.py +0 -0
  97. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/actions_service.py +0 -0
  98. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/api_client.py +0 -0
  99. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/assets_service.py +0 -0
  100. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/connections_service.py +0 -0
  101. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/folder_service.py +0 -0
  102. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/jobs_service.py +0 -0
  103. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/llm_gateway_service.py +0 -0
  104. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/processes_service.py +0 -0
  105. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_services/queues_service.py +0 -0
  106. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_uipath.py +0 -0
  107. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_utils/__init__.py +0 -0
  108. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_utils/_endpoint.py +0 -0
  109. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_utils/_infer_bindings.py +0 -0
  110. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_utils/_logs.py +0 -0
  111. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_utils/_read_overwrites.py +0 -0
  112. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_utils/_request_override.py +0 -0
  113. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_utils/_request_spec.py +0 -0
  114. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_utils/_user_agent.py +0 -0
  115. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/_utils/constants.py +0 -0
  116. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/action_schema.py +0 -0
  117. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/actions.py +0 -0
  118. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/assets.py +0 -0
  119. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/connections.py +0 -0
  120. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/context_grounding_index.py +0 -0
  121. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/errors.py +0 -0
  122. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/exceptions.py +0 -0
  123. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/interrupt_models.py +0 -0
  124. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/job.py +0 -0
  125. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/llm_gateway.py +0 -0
  126. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/processes.py +0 -0
  127. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/models/queues.py +0 -0
  128. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/py.typed +0 -0
  129. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/tracing/__init__.py +0 -0
  130. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/tracing/_otel_exporters.py +0 -0
  131. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/tracing/_traced.py +0 -0
  132. {uipath-2.0.44 → uipath-2.0.46}/src/uipath/tracing/_utils.py +0 -0
  133. {uipath-2.0.44 → uipath-2.0.46}/tests/__init__.py +0 -0
  134. {uipath-2.0.44 → uipath-2.0.46}/tests/cli/test_init.py +0 -0
  135. {uipath-2.0.44 → uipath-2.0.46}/tests/conftest.py +0 -0
  136. {uipath-2.0.44 → uipath-2.0.46}/tests/sdk/services/test_llm_integration.py +0 -0
  137. {uipath-2.0.44 → uipath-2.0.46}/tests/sdk/services/test_llm_service.py +0 -0
  138. {uipath-2.0.44 → uipath-2.0.46}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  139. {uipath-2.0.44 → uipath-2.0.46}/tests/sdk/test_config.py +0 -0
  140. {uipath-2.0.44 → uipath-2.0.46}/tests/sdk/test_overwrites.py +0 -0
  141. {uipath-2.0.44 → uipath-2.0.46}/tests/tracing/test_otel_exporters.py +0 -0
  142. {uipath-2.0.44 → uipath-2.0.46}/tests/tracing/test_span_utils.py +0 -0
  143. {uipath-2.0.44 → uipath-2.0.46}/tests/tracing/test_traced.py +0 -0
  144. {uipath-2.0.44 → uipath-2.0.46}/tests/tracing/test_tracing_manager.py +0 -0
@@ -1,4 +1,4 @@
1
- name: Reusable Build Workflow
1
+ name: Build and publish
2
2
 
3
3
  on:
4
4
  workflow_call:
@@ -10,8 +10,7 @@ on:
10
10
 
11
11
  jobs:
12
12
  build:
13
- name: Build and publish
14
- runs-on: "ubuntu-24.04"
13
+ runs-on: ubuntu-latest
15
14
 
16
15
  steps:
17
16
  - uses: actions/checkout@v4
@@ -2,7 +2,8 @@ name: CD
2
2
 
3
3
  on:
4
4
  workflow_run:
5
- workflows: ["CI"]
5
+ workflows:
6
+ - CI
6
7
  types:
7
8
  - completed
8
9
 
@@ -1,17 +1,19 @@
1
1
  name: CI
2
2
 
3
3
  on:
4
- workflow_dispatch: {}
5
4
  push:
6
5
  branches:
7
6
  - main
8
- pull_request:
7
+ pull_request_target:
8
+ types:
9
+ - opened
10
+ - synchronize
9
11
  branches:
10
12
  - main
11
13
 
12
14
  jobs:
13
15
  commit-lint:
14
- if: ${{ github.event_name == 'pull_request' }}
16
+ if: ${{ github.event_name == 'pull_request_target' }}
15
17
  uses: ./.github/workflows/commitlint.yml
16
18
 
17
19
  lint:
@@ -0,0 +1,43 @@
1
+ name: Commit Lint
2
+
3
+ on:
4
+ workflow_call
5
+
6
+ jobs:
7
+ commitlint:
8
+ name: Commit Lint
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - uses: actions/checkout@v3
13
+ with:
14
+ fetch-depth: 0
15
+
16
+ - uses: actions/setup-node@v3
17
+ with:
18
+ node-version: 22
19
+
20
+ - name: Install Git
21
+ run: |
22
+ if ! command -v git &> /dev/null; then
23
+ echo "Git is not installed. Installing..."
24
+ sudo apt-get update
25
+ sudo apt-get install -y git
26
+ else
27
+ echo "Git is already installed."
28
+ fi
29
+
30
+ - name: Install commitlint
31
+ run: |
32
+ npm install conventional-changelog-conventionalcommits
33
+ npm install commitlint@latest
34
+ npm install @commitlint/config-conventional
35
+
36
+ - name: Configure
37
+ run: |
38
+ echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
39
+
40
+ - name: Validate PR commits with commitlint
41
+ run: |
42
+ git fetch origin pull/${{ github.event.pull_request.number }}/head:pr_branch
43
+ npx commitlint --from ${{ github.event.pull_request.base.sha }} --to pr_branch --verbose
@@ -1,20 +1,12 @@
1
- name: Reusable Lint Workflow
1
+ name: Lint
2
2
 
3
3
  on:
4
- workflow_call:
5
- inputs:
6
- should_skip:
7
- description: 'Whether to skip the linting step'
8
- required: false
9
- type: boolean
10
- default: false
4
+ workflow_call
11
5
 
12
6
  jobs:
13
7
  lint:
14
8
  name: Lint
15
- runs-on: "ubuntu-24.04"
16
- if: inputs.should_skip == false
17
-
9
+ runs-on: ubuntu-latest
18
10
 
19
11
  steps:
20
12
  - uses: actions/checkout@v4
@@ -1,125 +1,119 @@
1
- name: Publish Dev Build
2
-
3
- on:
4
- pull_request:
5
- types: [opened, synchronize, reopened, labeled]
6
- secrets:
7
- PYPI_TOKEN:
8
- required: true
9
- TESTPYPI_TOKEN:
10
- required: true
11
-
12
-
13
- jobs:
14
- publish-dev:
15
- runs-on: ubuntu-latest
16
-
17
- # Only run if PR has the build:dev label
18
- if: contains(github.event.pull_request.labels.*.name, 'build:dev')
19
-
20
- steps:
21
- - uses: actions/checkout@v4
22
-
23
- - uses: astral-sh/setup-uv@v5
24
-
25
- - uses: actions/setup-python@v5
26
- with:
27
- python-version-file: ".python-version"
28
-
29
- - name: Setup venv
30
- run: |
31
- uv venv
32
- uv sync --all-extras
33
-
34
- - name: Set development version
35
- shell: pwsh
36
- env:
37
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38
- run: |
39
- $pyprojcontent = Get-Content pyproject.toml -Raw
40
-
41
- $PROJECT_NAME = ($pyprojcontent | Select-String -Pattern '(?m)^\[(project|tool\.poetry)\][^\[]*?name\s*=\s*"([^"]*)"' -AllMatches).Matches[0].Groups[2].Value
42
- $CURRENT_VERSION = ($pyprojcontent | Select-String -Pattern '(?m)^\[(project|tool\.poetry)\][^\[]*?version\s*=\s*"([^"]*)"' -AllMatches).Matches[0].Groups[2].Value
43
- $NIGHTLY_NAME = "$PROJECT_NAME-nightly"
44
-
45
-
46
- # Get PR number and run number with proper padding
47
- $PR_NUM = [int]"${{ github.event.pull_request.number }}"
48
- $PADDED_PR = "{0:D5}" -f [int]"${{ github.event.pull_request.number }}"
49
- $PADDED_RUN = "{0:D4}" -f [int]"${{ github.run_number }}"
50
- $PADDED_NEXT_PR = "{0:D5}" -f ($PR_NUM + 1)
51
-
52
- # Create version range strings for PR
53
- $MIN_VERSION = "$CURRENT_VERSION.dev1$PADDED_PR" + "0000"
54
- $MAX_VERSION = "$CURRENT_VERSION.dev1$PADDED_NEXT_PR" + "0000"
55
-
56
- # Create unique dev version with PR number and run ID
57
- $DEV_VERSION = "$CURRENT_VERSION.dev1$PADDED_PR$PADDED_RUN"
58
-
59
- # Update version in pyproject.toml
60
- (Get-Content pyproject.toml) -replace "version = `"$CURRENT_VERSION`"", "version = `"$DEV_VERSION`"" | Set-Content pyproject.toml
61
-
62
- # Update project name in pyproject.toml
63
- (Get-Content pyproject.toml) -replace "name = `"$PROJECT_NAME`"", "name = `"$NIGHTLY_NAME`"" | Set-Content pyproject.toml
64
-
65
-
66
- Write-Output "Package version set to $DEV_VERSION"
67
-
68
- $dependencyMessage = @"
69
- ## Development Package
70
-
71
- - Add this package as a dependency in your pyproject.toml:
72
-
73
- ``````toml
74
- [project]
75
- dependencies = [
76
- # Exact version:
77
- "$NIGHTLY_NAME==$DEV_VERSION",
78
-
79
- # Any version from PR
80
- "$NIGHTLY_NAME>=$MIN_VERSION,<$MAX_VERSION"
81
- ]
82
- ``````
83
- "@
84
-
85
- # Get the owner and repo from the GitHub repository
86
- $owner = "${{ github.repository_owner }}"
87
- $repo = "${{ github.repository }}".Split('/')[1]
88
- $prNumber = $PR_NUM
89
-
90
- # Get the current PR description
91
- $prUri = "https://api.github.com/repos/$owner/$repo/pulls/$prNumber"
92
- $headers = @{
93
- Authorization = "token $env:GITHUB_TOKEN"
94
- Accept = "application/vnd.github.v3+json"
95
- }
96
-
97
- $pr = Invoke-RestMethod -Uri $prUri -Method Get -Headers $headers
98
- $currentBody = $pr.body
99
-
100
- # Check if there's already a development package section
101
- if ($currentBody -match '## Development Package') {
102
- # Replace the existing section with the new dependency message
103
- $newBody = $currentBody -replace '## Development Package(\r?\n|.)*?(?=##|$)', $dependencyMessage
104
- } else {
105
- # Append the dependency message to the end of the description
106
- $newBody = if ($currentBody) { "$currentBody`n`n$dependencyMessage" } else { $dependencyMessage }
107
- }
108
-
109
- # Update the PR description
110
- $updateBody = @{
111
- body = $newBody
112
- } | ConvertTo-Json
113
-
114
- Invoke-RestMethod -Uri $prUri -Method Patch -Headers $headers -Body $updateBody -ContentType "application/json"
115
-
116
- Write-Output "Updated PR description with development package information"
117
-
118
- - name: Build package
119
- run: uv build
120
-
121
- - name: Publish
122
- run: |
123
- uv publish
124
- env:
1
+ name: Publish Dev Build
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, synchronize, reopened, labeled]
6
+
7
+ jobs:
8
+ publish-dev:
9
+ runs-on: ubuntu-latest
10
+
11
+ # Only run if PR has the build:dev label
12
+ if: contains(github.event.pull_request.labels.*.name, 'build:dev')
13
+
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - uses: astral-sh/setup-uv@v5
18
+
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version-file: ".python-version"
22
+
23
+ - name: Setup venv
24
+ run: |
25
+ uv venv
26
+ uv sync --all-extras
27
+
28
+ - name: Set development version
29
+ shell: pwsh
30
+ env:
31
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32
+ run: |
33
+ $pyprojcontent = Get-Content pyproject.toml -Raw
34
+
35
+ $PROJECT_NAME = ($pyprojcontent | Select-String -Pattern '(?m)^\[(project|tool\.poetry)\][^\[]*?name\s*=\s*"([^"]*)"' -AllMatches).Matches[0].Groups[2].Value
36
+ $CURRENT_VERSION = ($pyprojcontent | Select-String -Pattern '(?m)^\[(project|tool\.poetry)\][^\[]*?version\s*=\s*"([^"]*)"' -AllMatches).Matches[0].Groups[2].Value
37
+ $NIGHTLY_NAME = "$PROJECT_NAME-nightly"
38
+
39
+
40
+ # Get PR number and run number with proper padding
41
+ $PR_NUM = [int]"${{ github.event.pull_request.number }}"
42
+ $PADDED_PR = "{0:D5}" -f [int]"${{ github.event.pull_request.number }}"
43
+ $PADDED_RUN = "{0:D4}" -f [int]"${{ github.run_number }}"
44
+ $PADDED_NEXT_PR = "{0:D5}" -f ($PR_NUM + 1)
45
+
46
+ # Create version range strings for PR
47
+ $MIN_VERSION = "$CURRENT_VERSION.dev1$PADDED_PR" + "0000"
48
+ $MAX_VERSION = "$CURRENT_VERSION.dev1$PADDED_NEXT_PR" + "0000"
49
+
50
+ # Create unique dev version with PR number and run ID
51
+ $DEV_VERSION = "$CURRENT_VERSION.dev1$PADDED_PR$PADDED_RUN"
52
+
53
+ # Update version in pyproject.toml
54
+ (Get-Content pyproject.toml) -replace "version = `"$CURRENT_VERSION`"", "version = `"$DEV_VERSION`"" | Set-Content pyproject.toml
55
+
56
+ # Update project name in pyproject.toml
57
+ (Get-Content pyproject.toml) -replace "name = `"$PROJECT_NAME`"", "name = `"$NIGHTLY_NAME`"" | Set-Content pyproject.toml
58
+
59
+
60
+ Write-Output "Package version set to $DEV_VERSION"
61
+
62
+ $dependencyMessage = @"
63
+ ## Development Package
64
+
65
+ - Add this package as a dependency in your pyproject.toml:
66
+
67
+ ``````toml
68
+ [project]
69
+ dependencies = [
70
+ # Exact version:
71
+ "$NIGHTLY_NAME==$DEV_VERSION",
72
+
73
+ # Any version from PR
74
+ "$NIGHTLY_NAME>=$MIN_VERSION,<$MAX_VERSION"
75
+ ]
76
+ ``````
77
+ "@
78
+
79
+ # Get the owner and repo from the GitHub repository
80
+ $owner = "${{ github.repository_owner }}"
81
+ $repo = "${{ github.repository }}".Split('/')[1]
82
+ $prNumber = $PR_NUM
83
+
84
+ # Get the current PR description
85
+ $prUri = "https://api.github.com/repos/$owner/$repo/pulls/$prNumber"
86
+ $headers = @{
87
+ Authorization = "token $env:GITHUB_TOKEN"
88
+ Accept = "application/vnd.github.v3+json"
89
+ }
90
+
91
+ $pr = Invoke-RestMethod -Uri $prUri -Method Get -Headers $headers
92
+ $currentBody = $pr.body
93
+
94
+ # Check if there's already a development package section
95
+ if ($currentBody -match '## Development Package') {
96
+ # Replace the existing section with the new dependency message
97
+ $newBody = $currentBody -replace '## Development Package(\r?\n|.)*?(?=##|$)', $dependencyMessage
98
+ } else {
99
+ # Append the dependency message to the end of the description
100
+ $newBody = if ($currentBody) { "$currentBody`n`n$dependencyMessage" } else { $dependencyMessage }
101
+ }
102
+
103
+ # Update the PR description
104
+ $updateBody = @{
105
+ body = $newBody
106
+ } | ConvertTo-Json
107
+
108
+ Invoke-RestMethod -Uri $prUri -Method Patch -Headers $headers -Body $updateBody -ContentType "application/json"
109
+
110
+ Write-Output "Updated PR description with development package information"
111
+
112
+ - name: Build package
113
+ run: uv build
114
+
115
+ - name: Publish
116
+ run: |
117
+ uv publish
118
+ env:
125
119
  UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
@@ -9,7 +9,7 @@ on:
9
9
 
10
10
  jobs:
11
11
  publish-docs:
12
- runs-on: "ubuntu-24.04"
12
+ runs-on: ubuntu-latest
13
13
 
14
14
  steps:
15
15
  - uses: actions/checkout@v4
@@ -1,19 +1,12 @@
1
- name: Reusable Test Workflow
1
+ name: Test
2
2
 
3
3
  on:
4
- workflow_call:
5
- inputs:
6
- should_skip:
7
- description: 'Whether to skip the linting step'
8
- required: false
9
- type: boolean
10
- default: false
4
+ workflow_call
11
5
 
12
6
  jobs:
13
7
  test:
14
8
  name: Test
15
- runs-on: "ubuntu-24.04"
16
- if: inputs.should_skip == false
9
+ runs-on: ubuntu-latest
17
10
 
18
11
  steps:
19
12
  - uses: actions/checkout@v4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath
3
- Version: 2.0.44
3
+ Version: 2.0.46
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.44"
3
+ version = "2.0.46"
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"
@@ -16,7 +16,7 @@ from ._utils import (
16
16
  )
17
17
 
18
18
  console = ConsoleLogger()
19
- client = httpx.Client(follow_redirects=True)
19
+ client = httpx.Client(follow_redirects=True, timeout=30.0)
20
20
 
21
21
 
22
22
  class PortalService:
@@ -5,7 +5,7 @@ import httpx
5
5
  from ._console import ConsoleLogger
6
6
 
7
7
  console = ConsoleLogger()
8
- client = httpx.Client(follow_redirects=True)
8
+ client = httpx.Client(follow_redirects=True, timeout=30.0)
9
9
 
10
10
 
11
11
  def get_personal_workspace_info(
@@ -7,7 +7,7 @@ import httpx
7
7
  from ._console import ConsoleLogger
8
8
 
9
9
  console = ConsoleLogger()
10
- client = httpx.Client(follow_redirects=True)
10
+ client = httpx.Client(follow_redirects=True, timeout=30.0)
11
11
 
12
12
 
13
13
  def get_release_info(
@@ -21,7 +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
+ client = httpx.Client(follow_redirects=True, timeout=30.0)
25
25
 
26
26
 
27
27
  def _read_project_name() -> str:
@@ -12,7 +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
+ client = httpx.Client(follow_redirects=True, timeout=30.0)
16
16
 
17
17
 
18
18
  def get_most_recent_package():
@@ -40,17 +40,25 @@ class BaseService:
40
40
  self._config = config
41
41
  self._execution_context = execution_context
42
42
  self._tenant_scope_client = Client(
43
- base_url=self._config.base_url, headers=Headers(self.default_headers)
43
+ base_url=self._config.base_url,
44
+ headers=Headers(self.default_headers),
45
+ timeout=30.0,
44
46
  )
45
47
  self._tenant_scope_client_async = AsyncClient(
46
- base_url=self._config.base_url, headers=Headers(self.default_headers)
48
+ base_url=self._config.base_url,
49
+ headers=Headers(self.default_headers),
50
+ timeout=30.0,
47
51
  )
48
52
  org_scope_base_url = self.__get_org_scope_base_url()
49
53
  self._org_scope_client = Client(
50
- base_url=org_scope_base_url, headers=self.default_headers
54
+ base_url=org_scope_base_url,
55
+ headers=Headers(self.default_headers),
56
+ timeout=30.0,
51
57
  )
52
58
  self._org_scope_client_async = AsyncClient(
53
- base_url=org_scope_base_url, headers=self.default_headers
59
+ base_url=org_scope_base_url,
60
+ headers=Headers(self.default_headers),
61
+ timeout=30.0,
54
62
  )
55
63
 
56
64
  self._overwrites_manager = OverwritesManager()
@@ -6,6 +6,7 @@ from .._config import Config
6
6
  from .._execution_context import ExecutionContext
7
7
  from .._folder_context import FolderContext
8
8
  from .._utils import Endpoint, RequestSpec, header_folder, infer_bindings
9
+ from ..models import Bucket
9
10
  from ..tracing._traced import traced
10
11
  from ._base_service import BaseService
11
12
 
@@ -355,7 +356,7 @@ class BucketsService(FolderContext, BaseService):
355
356
  key: Optional[str] = None,
356
357
  folder_key: Optional[str] = None,
357
358
  folder_path: Optional[str] = None,
358
- ) -> Any:
359
+ ) -> Bucket:
359
360
  """Retrieve bucket information by its name.
360
361
 
361
362
  Args:
@@ -391,9 +392,13 @@ class BucketsService(FolderContext, BaseService):
391
392
  headers=spec.headers,
392
393
  )
393
394
  except Exception as e:
394
- raise Exception(f"Bucket with name {name} not found") from e
395
-
396
- return response.json()["value"][0]
395
+ raise Exception(f"Bucket with name '{name}' not found") from e
396
+ try:
397
+ return Bucket.model_validate(response.json()["value"][0])
398
+ except KeyError as e:
399
+ raise Exception(
400
+ f"Error while deserializing bucket with name '{name}'"
401
+ ) from e
397
402
 
398
403
  @infer_bindings()
399
404
  @traced(name="buckets_retrieve", run_type="uipath")
@@ -404,7 +409,7 @@ class BucketsService(FolderContext, BaseService):
404
409
  key: Optional[str] = None,
405
410
  folder_key: Optional[str] = None,
406
411
  folder_path: Optional[str] = None,
407
- ) -> Any:
412
+ ) -> Bucket:
408
413
  """Asynchronously retrieve bucket information by its name.
409
414
 
410
415
  Args:
@@ -443,7 +448,12 @@ class BucketsService(FolderContext, BaseService):
443
448
  except Exception as e:
444
449
  raise Exception(f"Bucket with name {name} not found") from e
445
450
 
446
- return response.json()["value"][0]
451
+ try:
452
+ return Bucket.model_validate(response.json()["value"][0])
453
+ except KeyError as e:
454
+ raise Exception(
455
+ f"Error while deserializing bucket with name '{name}'"
456
+ ) from e
447
457
 
448
458
  @property
449
459
  def custom_headers(self) -> Dict[str, str]:
@@ -324,7 +324,7 @@ class ContextGroundingService(FolderContext, BaseService):
324
324
  List[ContextGroundingQueryResponse]: A list of search results, each containing
325
325
  relevant contextual information and metadata.
326
326
  """
327
- index = self.retrieve(name)
327
+ index = self.retrieve(name, folder_key=folder_key, folder_path=folder_path)
328
328
  if index and index.in_progress_ingestion():
329
329
  raise IngestionInProgressException(index_name=name)
330
330
 
@@ -1,6 +1,7 @@
1
1
  from .action_schema import ActionSchema
2
2
  from .actions import Action
3
3
  from .assets import UserAsset
4
+ from .buckets import Bucket
4
5
  from .connections import Connection, ConnectionToken
5
6
  from .context_grounding import ContextGroundingQueryResponse
6
7
  from .context_grounding_index import ContextGroundingIndex
@@ -44,4 +45,5 @@ __all__ = [
44
45
  "IngestionInProgressException",
45
46
  "BaseUrlMissingError",
46
47
  "SecretMissingError",
48
+ "Bucket",
47
49
  ]
@@ -0,0 +1,27 @@
1
+ from typing import List, Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+
6
+ class Bucket(BaseModel):
7
+ model_config = ConfigDict(
8
+ validate_by_name=True,
9
+ validate_by_alias=True,
10
+ use_enum_values=True,
11
+ arbitrary_types_allowed=True,
12
+ extra="allow",
13
+ )
14
+ Name: str = Field(alias="name")
15
+ Description: Optional[str] = Field(default=None, alias="description")
16
+ Identifier: str = Field(alias="identifier")
17
+ StorageProvider: Optional[str] = Field(default=None, alias="storageProvider")
18
+ StorageParameters: Optional[str] = Field(default=None, alias="storageParameters")
19
+ StorageContainer: Optional[str] = Field(default=None, alias="storageContainer")
20
+ Options: Optional[str] = Field(default=None, alias="options")
21
+ CredentialStoreId: Optional[str] = Field(default=None, alias="credentialStoreId")
22
+ ExternalName: Optional[str] = Field(default=None, alias="externalName")
23
+ Password: Optional[str] = Field(default=None, alias="password")
24
+ FoldersCount: Optional[int] = Field(default=None, alias="foldersCount")
25
+ Encrypted: Optional[bool] = Field(default=None, alias="encrypted")
26
+ Id: Optional[int] = Field(default=None, alias="id")
27
+ Tags: Optional[List[str]] = Field(default=None, alias="tags")
@@ -0,0 +1,36 @@
1
+ from datetime import datetime
2
+ from typing import Optional
3
+
4
+ from pydantic import BaseModel, ConfigDict, Field
5
+
6
+
7
+ class ContextGroundingMetadata(BaseModel):
8
+ model_config = ConfigDict(
9
+ validate_by_name=True,
10
+ validate_by_alias=True,
11
+ use_enum_values=True,
12
+ arbitrary_types_allowed=True,
13
+ extra="allow",
14
+ json_encoders={datetime: lambda v: v.isoformat() if v else None},
15
+ )
16
+ operation_id: str = Field(alias="operation_id")
17
+ strategy: str = Field(alias="strategy")
18
+
19
+
20
+ class ContextGroundingQueryResponse(BaseModel):
21
+ model_config = ConfigDict(
22
+ validate_by_name=True,
23
+ validate_by_alias=True,
24
+ use_enum_values=True,
25
+ arbitrary_types_allowed=True,
26
+ extra="allow",
27
+ json_encoders={datetime: lambda v: v.isoformat() if v else None},
28
+ )
29
+ source: str = Field(alias="source")
30
+ page_number: str = Field(alias="page_number")
31
+ content: str = Field(alias="content")
32
+ metadata: ContextGroundingMetadata = Field(alias="metadata")
33
+ source_document_id: Optional[str] = Field(default=None, alias="source_document_id")
34
+ caption: Optional[str] = Field(default=None, alias="caption")
35
+ score: Optional[float] = Field(default=None, alias="score")
36
+ reference: Optional[str] = Field(default=None, alias="reference")
@@ -2574,7 +2574,7 @@ wheels = [
2574
2574
 
2575
2575
  [[package]]
2576
2576
  name = "uipath"
2577
- version = "2.0.44"
2577
+ version = "2.0.46"
2578
2578
  source = { editable = "." }
2579
2579
  dependencies = [
2580
2580
  { name = "click" },
@@ -1,26 +0,0 @@
1
- name: Commit Lint
2
-
3
- on:
4
- workflow_call:
5
-
6
- jobs:
7
- commit-lint:
8
- runs-on: ubuntu-latest
9
- steps:
10
- - name: Checkout
11
- uses: actions/checkout@v2
12
- with:
13
- fetch-depth: 0
14
-
15
- - name: Lint commits
16
- uses: wagoid/commitlint-github-action@v3
17
-
18
- - name: Block fixup commits
19
- if: ${{ github.event_name != 'merge_group' }}
20
- uses: 13rac1/block-fixup-merge-action@v2.0.0
21
-
22
- - name: Block Merge Commits
23
- if: ${{ github.event_name != 'merge_group' }}
24
- uses: Morishiri/block-merge-commits-action@v1.0.1
25
- with:
26
- repo-token: ${{ secrets.GITHUB_TOKEN }}
@@ -1,18 +0,0 @@
1
- from pydantic import BaseModel
2
-
3
-
4
- class ContextGroundingMetadata(BaseModel):
5
- operation_id: str
6
- strategy: str
7
-
8
-
9
- class ContextGroundingQueryResponse(BaseModel):
10
- id: str
11
- reference: str
12
- source: str
13
- page_number: str
14
- source_document_id: str
15
- caption: str
16
- score: float
17
- content: str
18
- metadata: ContextGroundingMetadata
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