uipath 2.1.3__tar.gz → 2.1.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. {uipath-2.1.3 → uipath-2.1.4}/PKG-INFO +1 -1
  2. {uipath-2.1.3 → uipath-2.1.4}/pyproject.toml +1 -1
  3. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_auth/_auth_server.py +28 -9
  4. uipath-2.1.4/src/uipath/_cli/_auth/index.html +608 -0
  5. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/cli_auth.py +12 -5
  6. {uipath-2.1.3 → uipath-2.1.4}/uv.lock +842 -843
  7. uipath-2.1.3/src/uipath/_cli/_auth/index.html +0 -167
  8. {uipath-2.1.3 → uipath-2.1.4}/.cursorrules +0 -0
  9. {uipath-2.1.3 → uipath-2.1.4}/.editorconfig +0 -0
  10. {uipath-2.1.3 → uipath-2.1.4}/.gitattributes +0 -0
  11. {uipath-2.1.3 → uipath-2.1.4}/.github/workflows/cd.yml +0 -0
  12. {uipath-2.1.3 → uipath-2.1.4}/.github/workflows/ci.yml +0 -0
  13. {uipath-2.1.3 → uipath-2.1.4}/.github/workflows/commitlint.yml +0 -0
  14. {uipath-2.1.3 → uipath-2.1.4}/.github/workflows/lint.yml +0 -0
  15. {uipath-2.1.3 → uipath-2.1.4}/.github/workflows/publish-dev.yml +0 -0
  16. {uipath-2.1.3 → uipath-2.1.4}/.github/workflows/publish-docs.yml +0 -0
  17. {uipath-2.1.3 → uipath-2.1.4}/.github/workflows/slack.yml +0 -0
  18. {uipath-2.1.3 → uipath-2.1.4}/.github/workflows/test.yml +0 -0
  19. {uipath-2.1.3 → uipath-2.1.4}/.gitignore +0 -0
  20. {uipath-2.1.3 → uipath-2.1.4}/.pre-commit-config.yaml +0 -0
  21. {uipath-2.1.3 → uipath-2.1.4}/.python-version +0 -0
  22. {uipath-2.1.3 → uipath-2.1.4}/.vscode/extensions.json +0 -0
  23. {uipath-2.1.3 → uipath-2.1.4}/.vscode/launch.json +0 -0
  24. {uipath-2.1.3 → uipath-2.1.4}/.vscode/settings.json +0 -0
  25. {uipath-2.1.3 → uipath-2.1.4}/CONTRIBUTING.md +0 -0
  26. {uipath-2.1.3 → uipath-2.1.4}/LICENSE +0 -0
  27. {uipath-2.1.3 → uipath-2.1.4}/README.md +0 -0
  28. {uipath-2.1.3 → uipath-2.1.4}/docs/CONTRIBUTING.md +0 -0
  29. {uipath-2.1.3 → uipath-2.1.4}/docs/FAQ.md +0 -0
  30. {uipath-2.1.3 → uipath-2.1.4}/docs/assets/env-preparation-failed-dark.png +0 -0
  31. {uipath-2.1.3 → uipath-2.1.4}/docs/assets/env-preparation-failed-light.png +0 -0
  32. {uipath-2.1.3 → uipath-2.1.4}/docs/assets/favicon.png +0 -0
  33. {uipath-2.1.3 → uipath-2.1.4}/docs/assets/logo-dark.svg +0 -0
  34. {uipath-2.1.3 → uipath-2.1.4}/docs/assets/logo-light.svg +0 -0
  35. {uipath-2.1.3 → uipath-2.1.4}/docs/cli/index.md +0 -0
  36. {uipath-2.1.3 → uipath-2.1.4}/docs/core/actions.md +0 -0
  37. {uipath-2.1.3 → uipath-2.1.4}/docs/core/assets/cloud_env_var_dark.gif +0 -0
  38. {uipath-2.1.3 → uipath-2.1.4}/docs/core/assets/cloud_env_var_light.gif +0 -0
  39. {uipath-2.1.3 → uipath-2.1.4}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
  40. {uipath-2.1.3 → uipath-2.1.4}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
  41. {uipath-2.1.3 → uipath-2.1.4}/docs/core/assets/copy_path_dark.png +0 -0
  42. {uipath-2.1.3 → uipath-2.1.4}/docs/core/assets/copy_path_light.png +0 -0
  43. {uipath-2.1.3 → uipath-2.1.4}/docs/core/assets.md +0 -0
  44. {uipath-2.1.3 → uipath-2.1.4}/docs/core/attachments.md +0 -0
  45. {uipath-2.1.3 → uipath-2.1.4}/docs/core/buckets.md +0 -0
  46. {uipath-2.1.3 → uipath-2.1.4}/docs/core/connections.md +0 -0
  47. {uipath-2.1.3 → uipath-2.1.4}/docs/core/context_grounding.md +0 -0
  48. {uipath-2.1.3 → uipath-2.1.4}/docs/core/environment_variables.md +0 -0
  49. {uipath-2.1.3 → uipath-2.1.4}/docs/core/getting_started.md +0 -0
  50. {uipath-2.1.3 → uipath-2.1.4}/docs/core/jobs.md +0 -0
  51. {uipath-2.1.3 → uipath-2.1.4}/docs/core/llm_gateway.md +0 -0
  52. {uipath-2.1.3 → uipath-2.1.4}/docs/core/processes.md +0 -0
  53. {uipath-2.1.3 → uipath-2.1.4}/docs/core/queues.md +0 -0
  54. {uipath-2.1.3 → uipath-2.1.4}/docs/core/traced.md +0 -0
  55. {uipath-2.1.3 → uipath-2.1.4}/docs/hooks.py +0 -0
  56. {uipath-2.1.3 → uipath-2.1.4}/docs/index.md +0 -0
  57. {uipath-2.1.3 → uipath-2.1.4}/docs/javascripts/extra.js +0 -0
  58. {uipath-2.1.3 → uipath-2.1.4}/docs/overrides/main.html +0 -0
  59. {uipath-2.1.3 → uipath-2.1.4}/docs/overrides/partials/actions.html +0 -0
  60. {uipath-2.1.3 → uipath-2.1.4}/docs/overrides/partials/logo.html +0 -0
  61. {uipath-2.1.3 → uipath-2.1.4}/docs/release_policy.md +0 -0
  62. {uipath-2.1.3 → uipath-2.1.4}/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
  63. {uipath-2.1.3 → uipath-2.1.4}/docs/stylesheets/extra.css +0 -0
  64. {uipath-2.1.3 → uipath-2.1.4}/justfile +0 -0
  65. {uipath-2.1.3 → uipath-2.1.4}/mkdocs.yml +0 -0
  66. {uipath-2.1.3 → uipath-2.1.4}/py.typed +0 -0
  67. {uipath-2.1.3 → uipath-2.1.4}/samples/google-ADK-agent/.env.example +0 -0
  68. {uipath-2.1.3 → uipath-2.1.4}/samples/google-ADK-agent/README.md +0 -0
  69. {uipath-2.1.3 → uipath-2.1.4}/samples/google-ADK-agent/input.json +0 -0
  70. {uipath-2.1.3 → uipath-2.1.4}/samples/google-ADK-agent/multi_tool_agent/__init__.py +0 -0
  71. {uipath-2.1.3 → uipath-2.1.4}/samples/google-ADK-agent/multi_tool_agent/agent.py +0 -0
  72. {uipath-2.1.3 → uipath-2.1.4}/samples/google-ADK-agent/pyproject.toml +0 -0
  73. {uipath-2.1.3 → uipath-2.1.4}/samples/google-ADK-agent/uv.lock +0 -0
  74. {uipath-2.1.3 → uipath-2.1.4}/scripts/debug_test.py +0 -0
  75. {uipath-2.1.3 → uipath-2.1.4}/scripts/lint_httpx_client.py +0 -0
  76. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/__init__.py +0 -0
  77. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/README.md +0 -0
  78. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/__init__.py +0 -0
  79. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_auth/_client_credentials.py +0 -0
  80. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_auth/_models.py +0 -0
  81. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
  82. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_auth/_portal_service.py +0 -0
  83. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_auth/_utils.py +0 -0
  84. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_auth/auth_config.json +0 -0
  85. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_auth/localhost.crt +0 -0
  86. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_auth/localhost.key +0 -0
  87. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_runtime/_contracts.py +0 -0
  88. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_runtime/_escalation.py +0 -0
  89. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_runtime/_hitl.py +0 -0
  90. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_runtime/_logging.py +0 -0
  91. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_runtime/_runtime.py +0 -0
  92. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
  93. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_templates/.rels.template +0 -0
  94. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
  95. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_templates/main.py.template +0 -0
  96. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
  97. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_utils/_common.py +0 -0
  98. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_utils/_console.py +0 -0
  99. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_utils/_constants.py +0 -0
  100. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_utils/_debug.py +0 -0
  101. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_utils/_folders.py +0 -0
  102. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_utils/_input_args.py +0 -0
  103. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
  104. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_utils/_processes.py +0 -0
  105. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/_utils/_tracing.py +0 -0
  106. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/cli_deploy.py +0 -0
  107. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/cli_init.py +0 -0
  108. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/cli_invoke.py +0 -0
  109. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/cli_new.py +0 -0
  110. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/cli_pack.py +0 -0
  111. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/cli_publish.py +0 -0
  112. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/cli_run.py +0 -0
  113. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/middlewares.py +0 -0
  114. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_cli/spinner.py +0 -0
  115. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_config.py +0 -0
  116. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_execution_context.py +0 -0
  117. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_folder_context.py +0 -0
  118. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/__init__.py +0 -0
  119. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/_base_service.py +0 -0
  120. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/actions_service.py +0 -0
  121. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/api_client.py +0 -0
  122. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/assets_service.py +0 -0
  123. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/attachments_service.py +0 -0
  124. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/buckets_service.py +0 -0
  125. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/connections_service.py +0 -0
  126. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/context_grounding_service.py +0 -0
  127. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/folder_service.py +0 -0
  128. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/jobs_service.py +0 -0
  129. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/llm_gateway_service.py +0 -0
  130. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/processes_service.py +0 -0
  131. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_services/queues_service.py +0 -0
  132. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_uipath.py +0 -0
  133. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_utils/__init__.py +0 -0
  134. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_utils/_endpoint.py +0 -0
  135. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_utils/_infer_bindings.py +0 -0
  136. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_utils/_logs.py +0 -0
  137. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_utils/_read_overwrites.py +0 -0
  138. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_utils/_request_override.py +0 -0
  139. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_utils/_request_spec.py +0 -0
  140. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_utils/_ssl_context.py +0 -0
  141. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_utils/_url.py +0 -0
  142. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_utils/_user_agent.py +0 -0
  143. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/_utils/constants.py +0 -0
  144. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/__init__.py +0 -0
  145. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/action_schema.py +0 -0
  146. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/actions.py +0 -0
  147. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/assets.py +0 -0
  148. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/attachment.py +0 -0
  149. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/buckets.py +0 -0
  150. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/connections.py +0 -0
  151. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/context_grounding.py +0 -0
  152. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/context_grounding_index.py +0 -0
  153. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/errors.py +0 -0
  154. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/exceptions.py +0 -0
  155. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/interrupt_models.py +0 -0
  156. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/job.py +0 -0
  157. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/llm_gateway.py +0 -0
  158. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/processes.py +0 -0
  159. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/models/queues.py +0 -0
  160. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/py.typed +0 -0
  161. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/telemetry/__init__.py +0 -0
  162. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/telemetry/_constants.py +0 -0
  163. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/telemetry/_track.py +0 -0
  164. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/tracing/__init__.py +0 -0
  165. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/tracing/_otel_exporters.py +0 -0
  166. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/tracing/_traced.py +0 -0
  167. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/tracing/_utils.py +0 -0
  168. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/utils/__init__.py +0 -0
  169. {uipath-2.1.3 → uipath-2.1.4}/src/uipath/utils/_endpoints_manager.py +0 -0
  170. {uipath-2.1.3 → uipath-2.1.4}/tests/__init__.py +0 -0
  171. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/conftest.py +0 -0
  172. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/mocks/bindings_script.py +0 -0
  173. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/mocks/pyproject.toml +0 -0
  174. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/mocks/simple_script.py +0 -0
  175. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/mocks/uipath-mock.json +0 -0
  176. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
  177. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/test_hitl.py +0 -0
  178. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/test_init.py +0 -0
  179. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/test_invoke.py +0 -0
  180. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/test_new.py +0 -0
  181. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/test_pack.py +0 -0
  182. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/test_publish.py +0 -0
  183. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/test_run.py +0 -0
  184. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/test_utils.py +0 -0
  185. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/utils/project_details.py +0 -0
  186. {uipath-2.1.3 → uipath-2.1.4}/tests/cli/utils/uipath_json.py +0 -0
  187. {uipath-2.1.3 → uipath-2.1.4}/tests/conftest.py +0 -0
  188. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/conftest.py +0 -0
  189. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_actions_service.py +0 -0
  190. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_api_client.py +0 -0
  191. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_assets_service.py +0 -0
  192. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_attachments_service.py +0 -0
  193. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_base_service.py +0 -0
  194. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_buckets_service.py +0 -0
  195. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_connections_service.py +0 -0
  196. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_context_grounding_service.py +0 -0
  197. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_folder_service.py +0 -0
  198. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_jobs_service.py +0 -0
  199. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_llm_integration.py +0 -0
  200. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_llm_service.py +0 -0
  201. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_processes_service.py +0 -0
  202. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_queues_service.py +0 -0
  203. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
  204. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/test_bindings_inference.py +0 -0
  205. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/test_config.py +0 -0
  206. {uipath-2.1.3 → uipath-2.1.4}/tests/sdk/test_overwrites.py +0 -0
  207. {uipath-2.1.3 → uipath-2.1.4}/tests/tracing/test_otel_exporters.py +0 -0
  208. {uipath-2.1.3 → uipath-2.1.4}/tests/tracing/test_span_utils.py +0 -0
  209. {uipath-2.1.3 → uipath-2.1.4}/tests/tracing/test_traced.py +0 -0
  210. {uipath-2.1.3 → uipath-2.1.4}/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.1.3
3
+ Version: 2.1.4
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.1.3"
3
+ version = "2.1.4"
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"
@@ -1,10 +1,12 @@
1
+ import asyncio
1
2
  import http.server
2
3
  import json
3
4
  import os
4
5
  import socketserver
6
+ import threading
5
7
  import time
8
+ from typing import Optional
6
9
 
7
- import click
8
10
  from dotenv import load_dotenv
9
11
 
10
12
  from ._oidc_utils import get_auth_config
@@ -117,9 +119,11 @@ class HTTPServer:
117
119
  """
118
120
  self.current_path = os.path.dirname(os.path.abspath(__file__))
119
121
  self.port = port
120
- self.httpd = None
122
+ self.httpd: Optional[socketserver.TCPServer] = None
121
123
  self.token_data = None
122
124
  self.should_shutdown = False
125
+ self.token_received_event: Optional[asyncio.Event] = None
126
+ self.loop = None
123
127
 
124
128
  def token_received_callback(self, token_data):
125
129
  """Callback for when a token is received.
@@ -128,7 +132,8 @@ class HTTPServer:
128
132
  token_data (dict): The received token data.
129
133
  """
130
134
  self.token_data = token_data
131
- self.should_shutdown = True
135
+ if self.token_received_event and self.loop:
136
+ self.loop.call_soon_threadsafe(self.token_received_event.set)
132
137
 
133
138
  def create_server(self, state, code_verifier, domain):
134
139
  """Create and configure the HTTP server.
@@ -149,7 +154,16 @@ class HTTPServer:
149
154
  self.httpd = socketserver.TCPServer(("", self.port), handler)
150
155
  return self.httpd
151
156
 
152
- def start(self, state, code_verifier, domain):
157
+ def _run_server(self):
158
+ """Run server loop in thread."""
159
+ try:
160
+ while not self.should_shutdown and self.httpd:
161
+ self.httpd.handle_request()
162
+ except Exception:
163
+ # Server might be closed, that's fine
164
+ pass
165
+
166
+ async def start(self, state, code_verifier, domain):
153
167
  """Start the server.
154
168
 
155
169
  Args:
@@ -163,12 +177,16 @@ class HTTPServer:
163
177
  if not self.httpd:
164
178
  self.create_server(state, code_verifier, domain)
165
179
 
180
+ self.token_received_event = asyncio.Event()
181
+ self.loop = asyncio.get_event_loop()
182
+
183
+ # Run server in daemon thread
184
+ server_thread = threading.Thread(target=self._run_server, daemon=True)
185
+ server_thread.start()
186
+
166
187
  try:
167
- if self.httpd:
168
- while not self.should_shutdown:
169
- self.httpd.handle_request()
170
- except KeyboardInterrupt:
171
- click.echo("Process interrupted by user")
188
+ # Wait indefinitely for token received event or interrupt
189
+ await self.token_received_event.wait()
172
190
  finally:
173
191
  self.stop()
174
192
 
@@ -176,6 +194,7 @@ class HTTPServer:
176
194
 
177
195
  def stop(self):
178
196
  """Stop the server gracefully and cleanup resources."""
197
+ self.should_shutdown = True
179
198
  if self.httpd:
180
199
  self.httpd.server_close()
181
200
  self.httpd = None