aidial-client 0.12.0.dev1__tar.gz → 0.12.0.dev2__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 (71) hide show
  1. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/PKG-INFO +45 -1
  2. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/README.md +44 -0
  3. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/__init__.py +2 -0
  4. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_client.py +2 -0
  5. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/__init__.py +3 -0
  6. aidial_client-0.12.0.dev2/aidial_client/resources/user.py +19 -0
  7. aidial_client-0.12.0.dev2/aidial_client/types/user.py +11 -0
  8. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/pyproject.toml +1 -1
  9. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/LICENSE +0 -0
  10. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_auth.py +0 -0
  11. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_client_pool.py +0 -0
  12. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_compatibility/__init__.py +0 -0
  13. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_compatibility/openai.py +0 -0
  14. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_compatibility/pydantic.py +0 -0
  15. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_compatibility/pydantic_v1.py +0 -0
  16. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_constants.py +0 -0
  17. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_exception.py +0 -0
  18. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_http_client/__init__.py +0 -0
  19. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_http_client/_async.py +0 -0
  20. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_http_client/_base.py +0 -0
  21. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_http_client/_sse.py +0 -0
  22. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_http_client/_sync.py +0 -0
  23. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_internal_types/__init__.py +0 -0
  24. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_internal_types/_defaults.py +0 -0
  25. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_internal_types/_generic.py +0 -0
  26. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_internal_types/_http_request.py +0 -0
  27. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_internal_types/_json_rpc.py +0 -0
  28. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_internal_types/_model.py +0 -0
  29. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_log.py +0 -0
  30. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_utils/__init__.py +0 -0
  31. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_utils/_alias.py +0 -0
  32. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_utils/_dict.py +0 -0
  33. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_utils/_openai.py +0 -0
  34. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_utils/_response_processing.py +0 -0
  35. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/_utils/_type_guard.py +0 -0
  36. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/helpers/__init__.py +0 -0
  37. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/helpers/_url.py +0 -0
  38. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/helpers/storage_resource.py +0 -0
  39. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/py.typed +0 -0
  40. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/application.py +0 -0
  41. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/base.py +0 -0
  42. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/bucket.py +0 -0
  43. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/chat/__init__.py +0 -0
  44. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/chat/completions.py +0 -0
  45. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/client_channel.py +0 -0
  46. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/deployments.py +0 -0
  47. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/files.py +0 -0
  48. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/metadata.py +0 -0
  49. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/model.py +0 -0
  50. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/prompts.py +0 -0
  51. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/resource_permissions.py +0 -0
  52. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/resources/toolset.py +0 -0
  53. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/__init__.py +0 -0
  54. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/application.py +0 -0
  55. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/bucket.py +0 -0
  56. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/chat/__init__.py +0 -0
  57. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/chat/function.py +0 -0
  58. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/chat/legacy/__init__.py +0 -0
  59. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/chat/legacy/application_request.py +0 -0
  60. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/chat/legacy/chat_completion.py +0 -0
  61. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/chat/request.py +0 -0
  62. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/chat/request_param.py +0 -0
  63. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/chat/response.py +0 -0
  64. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/chat/tool.py +0 -0
  65. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/client_channel.py +0 -0
  66. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/deployment.py +0 -0
  67. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/file.py +0 -0
  68. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/metadata.py +0 -0
  69. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/model.py +0 -0
  70. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/prompt.py +0 -0
  71. {aidial_client-0.12.0.dev1 → aidial_client-0.12.0.dev2}/aidial_client/types/toolset.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aidial-client
3
- Version: 0.12.0.dev1
3
+ Version: 0.12.0.dev2
4
4
  Summary: A Python client library for the AI DIAL API
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -61,6 +61,8 @@ Description-Content-Type: text/markdown
61
61
  - [Get Application by Id](#get-application-by-id)
62
62
  - [Models](#models)
63
63
  - [Get Model by Name](#get-model-by-name)
64
+ - [User](#user)
65
+ - [Get Authenticated User Info](#get-authenticated-user-info)
64
66
  - [Toolsets](#toolsets)
65
67
  - [Get Toolset by Id](#get-toolset-by-id)
66
68
  - [Resource Permissions](#resource-permissions)
@@ -878,6 +880,48 @@ ModelInfo(
878
880
  )
879
881
  ```
880
882
 
883
+ ### User
884
+
885
+ #### Get Authenticated User Info
886
+
887
+ To retrieve information about the currently authenticated user:
888
+
889
+ ```python
890
+ # Sync
891
+ user_info = client.user.info()
892
+
893
+ # Async
894
+ user_info = await async_client.user.info()
895
+ ```
896
+
897
+ As a result, you will receive a `UserInfo` object. When authenticated with an
898
+ API key:
899
+
900
+ ```python
901
+ UserInfo(
902
+ roles=["default"],
903
+ project="PROJECT-NAME",
904
+ userClaims=None,
905
+ )
906
+ ```
907
+
908
+ When authenticated with an access token:
909
+
910
+ ```python
911
+ UserInfo(
912
+ roles=["BA"],
913
+ project=None,
914
+ userClaims={
915
+ "email": ["user_email"],
916
+ "sub": ["user_sub"],
917
+ },
918
+ )
919
+ ```
920
+
921
+ `userClaims` is returned as an opaque `dict` because its contents depend on the
922
+ identity provider. `UserInfo` also preserves any additional fields the DIAL
923
+ deployment may return, so forward compatibility is retained.
924
+
881
925
  ### Toolsets
882
926
 
883
927
  #### Get Toolset by Id
@@ -39,6 +39,8 @@
39
39
  - [Get Application by Id](#get-application-by-id)
40
40
  - [Models](#models)
41
41
  - [Get Model by Name](#get-model-by-name)
42
+ - [User](#user)
43
+ - [Get Authenticated User Info](#get-authenticated-user-info)
42
44
  - [Toolsets](#toolsets)
43
45
  - [Get Toolset by Id](#get-toolset-by-id)
44
46
  - [Resource Permissions](#resource-permissions)
@@ -856,6 +858,48 @@ ModelInfo(
856
858
  )
857
859
  ```
858
860
 
861
+ ### User
862
+
863
+ #### Get Authenticated User Info
864
+
865
+ To retrieve information about the currently authenticated user:
866
+
867
+ ```python
868
+ # Sync
869
+ user_info = client.user.info()
870
+
871
+ # Async
872
+ user_info = await async_client.user.info()
873
+ ```
874
+
875
+ As a result, you will receive a `UserInfo` object. When authenticated with an
876
+ API key:
877
+
878
+ ```python
879
+ UserInfo(
880
+ roles=["default"],
881
+ project="PROJECT-NAME",
882
+ userClaims=None,
883
+ )
884
+ ```
885
+
886
+ When authenticated with an access token:
887
+
888
+ ```python
889
+ UserInfo(
890
+ roles=["BA"],
891
+ project=None,
892
+ userClaims={
893
+ "email": ["user_email"],
894
+ "sub": ["user_sub"],
895
+ },
896
+ )
897
+ ```
898
+
899
+ `userClaims` is returned as an opaque `dict` because its contents depend on the
900
+ identity provider. `UserInfo` also preserves any additional fields the DIAL
901
+ deployment may return, so forward compatibility is retained.
902
+
859
903
  ### Toolsets
860
904
 
861
905
  #### Get Toolset by Id
@@ -12,6 +12,7 @@ from aidial_client._exception import (
12
12
  from aidial_client.types.client_channel import SigninResult
13
13
  from aidial_client.types.model import ModelInfo, ModelLimits, ModelPricing
14
14
  from aidial_client.types.toolset import ToolsetInfo
15
+ from aidial_client.types.user import UserInfo
15
16
 
16
17
  __all__ = [
17
18
  "Dial",
@@ -32,4 +33,5 @@ __all__ = [
32
33
  "ModelPricing",
33
34
  "ModelLimits",
34
35
  "SigninResult",
36
+ "UserInfo",
35
37
  ]
@@ -120,6 +120,7 @@ class Dial(BaseDialClient[SyncHTTPClient, SyncAuthValue]):
120
120
  self.client_channel = resources.ClientChannel(
121
121
  http_client=self._http_client
122
122
  )
123
+ self.user = resources.User(http_client=self._http_client)
123
124
 
124
125
  def _create_http_client(self) -> SyncHTTPClient:
125
126
  return SyncHTTPClient(
@@ -224,6 +225,7 @@ class AsyncDial(BaseDialClient[AsyncHTTPClient, AsyncAuthValue]):
224
225
  self.client_channel = resources.AsyncClientChannel(
225
226
  http_client=self._http_client
226
227
  )
228
+ self.user = resources.AsyncUser(http_client=self._http_client)
227
229
 
228
230
  def _create_http_client(self) -> AsyncHTTPClient:
229
231
  return AsyncHTTPClient(
@@ -10,6 +10,7 @@ from aidial_client.resources.resource_permissions import (
10
10
  ResourcePermissions,
11
11
  )
12
12
  from aidial_client.resources.toolset import AsyncToolset, Toolset
13
+ from aidial_client.resources.user import AsyncUser, User
13
14
 
14
15
  from .application import Application, AsyncApplication
15
16
  from .bucket import AsyncBucket, Bucket
@@ -40,4 +41,6 @@ __all__ = [
40
41
  "AsyncResourcePermissions",
41
42
  "ClientChannel",
42
43
  "AsyncClientChannel",
44
+ "User",
45
+ "AsyncUser",
43
46
  ]
@@ -0,0 +1,19 @@
1
+ from aidial_client._internal_types._http_request import FinalRequestOptions
2
+ from aidial_client.resources.base import AsyncResource, Resource
3
+ from aidial_client.types.user import UserInfo
4
+
5
+
6
+ class User(Resource):
7
+ def info(self) -> UserInfo:
8
+ return self.http_client.request(
9
+ cast_to=UserInfo,
10
+ options=FinalRequestOptions(method="GET", url="v1/user/info"),
11
+ )
12
+
13
+
14
+ class AsyncUser(AsyncResource):
15
+ async def info(self) -> UserInfo:
16
+ return await self.http_client.request(
17
+ cast_to=UserInfo,
18
+ options=FinalRequestOptions(method="GET", url="v1/user/info"),
19
+ )
@@ -0,0 +1,11 @@
1
+ from typing import Any
2
+
3
+ from aidial_client._internal_types._model import ExtraAllowModel
4
+
5
+
6
+ class UserInfo(ExtraAllowModel):
7
+ """Information about the authenticated user or API key."""
8
+
9
+ roles: list[str]
10
+ project: str | None = None
11
+ userClaims: dict[str, Any] | None = None # depends on the IdP, so opaque
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "aidial-client"
3
- version = "0.12.0.dev1"
3
+ version = "0.12.0.dev2"
4
4
  description = "A Python client library for the AI DIAL API"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"