unique_sdk 0.10.39__py3-none-any.whl → 0.10.43__py3-none-any.whl

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.
unique_sdk/__init__.py CHANGED
@@ -84,6 +84,8 @@ from unique_sdk.api_resources._folder import Folder as Folder
84
84
  from unique_sdk.api_resources._embedding import Embeddings as Embeddings
85
85
  from unique_sdk.api_resources._acronyms import Acronyms as Acronyms
86
86
  from unique_sdk.api_resources._llm_models import LLMModels as LLMModels
87
+ from unique_sdk.api_resources._user import User as User
88
+ from unique_sdk.api_resources._group import Group as Group
87
89
  from unique_sdk.api_resources._message_assessment import (
88
90
  MessageAssessment as MessageAssessment,
89
91
  )
@@ -351,6 +351,9 @@ class Content(APIResource["Content"]):
351
351
  """
352
352
  if "input" in params:
353
353
  params["input"]["metadata"] = params["input"].get("metadata") or {}
354
+ if "description" in params["input"] and not params["input"]["description"]:
355
+ params["input"].pop("description")
356
+
354
357
  return cast(
355
358
  "Content",
356
359
  cls._static_request(
@@ -374,6 +377,9 @@ class Content(APIResource["Content"]):
374
377
  """
375
378
  if "input" in params:
376
379
  params["input"]["metadata"] = params["input"].get("metadata") or {}
380
+ if "description" in params["input"] and not params["input"]["description"]:
381
+ params["input"].pop("description")
382
+
377
383
  return cast(
378
384
  "Content",
379
385
  await cls._static_request_async(
@@ -0,0 +1,194 @@
1
+ from typing import (
2
+ ClassVar,
3
+ List,
4
+ Literal,
5
+ NotRequired,
6
+ Optional,
7
+ TypedDict,
8
+ Unpack,
9
+ cast,
10
+ )
11
+
12
+ from unique_sdk._api_resource import APIResource
13
+ from unique_sdk._request_options import RequestOptions
14
+
15
+
16
+ class Group(APIResource["Group"]):
17
+ OBJECT_NAME: ClassVar[Literal["group"]] = "group"
18
+
19
+ class GetParams(RequestOptions):
20
+ """
21
+ Parameters for getting groups in a company.
22
+ """
23
+
24
+ skip: NotRequired[Optional[int]]
25
+ take: NotRequired[Optional[int]]
26
+ name: NotRequired[Optional[str]]
27
+
28
+ class UpdateParams(RequestOptions):
29
+ """
30
+ Parameters for updating a group.
31
+ """
32
+
33
+ name: NotRequired[Optional[str]]
34
+
35
+ class GroupMember(TypedDict):
36
+ """
37
+ Represents a member of a group.
38
+ """
39
+
40
+ entityId: str
41
+
42
+ class Group(TypedDict):
43
+ """
44
+ Represents a group in the company.
45
+ """
46
+
47
+ id: str
48
+ name: str
49
+ externalId: str
50
+ parentId: Optional[str]
51
+ roles: Optional[List[str]]
52
+ members: Optional[List["Group.GroupMember"]]
53
+ createdAt: str
54
+ updatedAt: str
55
+
56
+ class Groups(TypedDict):
57
+ """
58
+ Response for getting groups.
59
+ """
60
+
61
+ groups: List["Group.Group"]
62
+
63
+ class DeleteResponse(TypedDict):
64
+ """
65
+ Response for deleting a group.
66
+ """
67
+
68
+ id: str
69
+
70
+ @classmethod
71
+ def get_groups(
72
+ cls,
73
+ user_id: str,
74
+ company_id: str,
75
+ **params: Unpack["Group.GetParams"],
76
+ ) -> "Group.Groups":
77
+ """
78
+ Get groups in a company.
79
+ """
80
+ return cast(
81
+ "Group.Groups",
82
+ cls._static_request(
83
+ "get",
84
+ "/groups",
85
+ user_id,
86
+ company_id,
87
+ params=params,
88
+ ),
89
+ )
90
+
91
+ @classmethod
92
+ async def get_groups_async(
93
+ cls,
94
+ user_id: str,
95
+ company_id: str,
96
+ **params: Unpack["Group.GetParams"],
97
+ ) -> "Group.Groups":
98
+ """
99
+ Async get groups in a company.
100
+ """
101
+ return cast(
102
+ "Group.Groups",
103
+ await cls._static_request_async(
104
+ "get",
105
+ "/groups",
106
+ user_id,
107
+ company_id,
108
+ params=params,
109
+ ),
110
+ )
111
+
112
+ @classmethod
113
+ def delete_group(
114
+ cls,
115
+ user_id: str,
116
+ company_id: str,
117
+ group_id: str,
118
+ ) -> "Group.DeleteResponse":
119
+ """
120
+ Delete a group in a company.
121
+ """
122
+ return cast(
123
+ "Group.DeleteResponse",
124
+ cls._static_request(
125
+ "delete",
126
+ f"/groups/{group_id}",
127
+ user_id,
128
+ company_id,
129
+ ),
130
+ )
131
+
132
+ @classmethod
133
+ async def delete_group_async(
134
+ cls,
135
+ user_id: str,
136
+ company_id: str,
137
+ group_id: str,
138
+ ) -> "Group.DeleteResponse":
139
+ """
140
+ Async delete a group in a company.
141
+ """
142
+ return cast(
143
+ "Group.DeleteResponse",
144
+ await cls._static_request_async(
145
+ "delete",
146
+ f"/groups/{group_id}",
147
+ user_id,
148
+ company_id,
149
+ ),
150
+ )
151
+
152
+ @classmethod
153
+ def update_group(
154
+ cls,
155
+ user_id: str,
156
+ company_id: str,
157
+ group_id: str,
158
+ **params: Unpack["Group.UpdateParams"],
159
+ ) -> "Group.Group":
160
+ """
161
+ Update a group in a company.
162
+ """
163
+ return cast(
164
+ "Group.Group",
165
+ cls._static_request(
166
+ "patch",
167
+ f"/groups/{group_id}",
168
+ user_id,
169
+ company_id,
170
+ params=params,
171
+ ),
172
+ )
173
+
174
+ @classmethod
175
+ async def update_group_async(
176
+ cls,
177
+ user_id: str,
178
+ company_id: str,
179
+ group_id: str,
180
+ **params: Unpack["Group.UpdateParams"],
181
+ ) -> "Group.Group":
182
+ """
183
+ Async update a group in a company.
184
+ """
185
+ return cast(
186
+ "Group.Group",
187
+ await cls._static_request_async(
188
+ "patch",
189
+ f"/groups/{group_id}",
190
+ user_id,
191
+ company_id,
192
+ params=params,
193
+ ),
194
+ )
@@ -167,6 +167,12 @@ class Message(APIResource["Message"]):
167
167
  """
168
168
  Creates a new message object.
169
169
  """
170
+ # Clean up empty descriptions from references
171
+ if "references" in params and params["references"]:
172
+ for ref in params["references"]:
173
+ if "description" in ref and not ref["description"]:
174
+ ref.pop("description")
175
+
170
176
  return cast(
171
177
  "Message",
172
178
  cls._static_request(
@@ -188,6 +194,12 @@ class Message(APIResource["Message"]):
188
194
  """
189
195
  Creates a new message object.
190
196
  """
197
+ # Clean up empty descriptions from references
198
+ if "references" in params and params["references"]:
199
+ for ref in params["references"]:
200
+ if "description" in ref and not ref["description"]:
201
+ ref.pop("description")
202
+
191
203
  return cast(
192
204
  "Message",
193
205
  await cls._static_request_async(
@@ -210,6 +222,12 @@ class Message(APIResource["Message"]):
210
222
  """
211
223
  Updates an existing message object.
212
224
  """
225
+ # Clean up empty descriptions from references
226
+ if "references" in params and params["references"]:
227
+ for ref in params["references"]:
228
+ if "description" in ref and not ref["description"]:
229
+ ref.pop("description")
230
+
213
231
  url = "%s/%s" % (cls.class_url(), quote_plus(id))
214
232
  return cast(
215
233
  "Message",
@@ -233,6 +251,12 @@ class Message(APIResource["Message"]):
233
251
  """
234
252
  Updates an existing message object.
235
253
  """
254
+ # Clean up empty descriptions from references
255
+ if "references" in params and params["references"]:
256
+ for ref in params["references"]:
257
+ if "description" in ref and not ref["description"]:
258
+ ref.pop("description")
259
+
236
260
  url = "%s/%s" % (cls.class_url(), quote_plus(id))
237
261
  return cast(
238
262
  "Message",
@@ -326,6 +350,12 @@ class Message(APIResource["Message"]):
326
350
  """
327
351
  Creates a new message event object.
328
352
  """
353
+ # Clean up empty descriptions from references
354
+ if "references" in params and params["references"]:
355
+ for ref in params["references"]:
356
+ if "description" in ref and not ref["description"]:
357
+ ref.pop("description")
358
+
329
359
  message_id = params.get("messageId")
330
360
  params.pop("messageId", None)
331
361
  return cast(
@@ -349,6 +379,12 @@ class Message(APIResource["Message"]):
349
379
  """
350
380
  Creates a new message event object.
351
381
  """
382
+ # Clean up empty descriptions from references
383
+ if "references" in params and params["references"]:
384
+ for ref in params["references"]:
385
+ if "description" in ref and not ref["description"]:
386
+ ref.pop("description")
387
+
352
388
  message_id = params.get("messageId")
353
389
  params.pop("messageId", None)
354
390
  return cast(
@@ -64,6 +64,12 @@ class MessageLog(APIResource["MessageLog"]):
64
64
  """
65
65
  Create a MessageLog.
66
66
  """
67
+ # Clean up empty descriptions from references
68
+ if "references" in params and params["references"]:
69
+ for ref in params["references"]:
70
+ if "description" in ref and not ref["description"]:
71
+ ref.pop("description")
72
+
67
73
  return cast(
68
74
  "MessageLog",
69
75
  cls._static_request(
@@ -85,6 +91,12 @@ class MessageLog(APIResource["MessageLog"]):
85
91
  """
86
92
  Async create a MessageLog.
87
93
  """
94
+ # Clean up empty descriptions from references
95
+ if "references" in params and params["references"]:
96
+ for ref in params["references"]:
97
+ if "description" in ref and not ref["description"]:
98
+ ref.pop("description")
99
+
88
100
  return cast(
89
101
  "MessageLog",
90
102
  await cls._static_request_async(
@@ -107,6 +119,12 @@ class MessageLog(APIResource["MessageLog"]):
107
119
  """
108
120
  Update a MessageLog.
109
121
  """
122
+ # Clean up empty descriptions from references
123
+ if "references" in params and params["references"]:
124
+ for ref in params["references"]:
125
+ if "description" in ref and not ref["description"]:
126
+ ref.pop("description")
127
+
110
128
  return cast(
111
129
  "MessageLog",
112
130
  cls._static_request(
@@ -129,6 +147,12 @@ class MessageLog(APIResource["MessageLog"]):
129
147
  """
130
148
  Async update a MessageLog.
131
149
  """
150
+ # Clean up empty descriptions from references
151
+ if "references" in params and params["references"]:
152
+ for ref in params["references"]:
153
+ if "description" in ref and not ref["description"]:
154
+ ref.pop("description")
155
+
132
156
  return cast(
133
157
  "MessageLog",
134
158
  await cls._static_request_async(
@@ -0,0 +1,91 @@
1
+ from typing import (
2
+ ClassVar,
3
+ List,
4
+ NotRequired,
5
+ Optional,
6
+ TypedDict,
7
+ Unpack,
8
+ cast,
9
+ )
10
+
11
+ from unique_sdk._api_resource import APIResource
12
+ from unique_sdk._request_options import RequestOptions
13
+
14
+
15
+ class User(APIResource["User"]):
16
+ OBJECT_NAME: ClassVar[str] = "users"
17
+
18
+ class GetParams(RequestOptions):
19
+ """
20
+ Parameters for getting users in a company.
21
+ """
22
+
23
+ skip: NotRequired[Optional[int]]
24
+ take: NotRequired[Optional[int]]
25
+ email: NotRequired[Optional[str]]
26
+ displayName: NotRequired[Optional[str]]
27
+
28
+ class User(TypedDict):
29
+ """
30
+ Represents a user in the company.
31
+ """
32
+
33
+ id: str
34
+ externalId: Optional[str]
35
+ firstName: str
36
+ lastName: str
37
+ displayName: str
38
+ userName: str
39
+ email: str
40
+ updatedAt: str
41
+ createdAt: str
42
+ active: bool
43
+
44
+ class Users(TypedDict):
45
+ """
46
+ Response for getting users.
47
+ """
48
+
49
+ users: List["User.User"]
50
+
51
+ @classmethod
52
+ def get_users(
53
+ cls,
54
+ user_id: str,
55
+ company_id: str,
56
+ **params: Unpack["User.GetParams"],
57
+ ) -> "User.Users":
58
+ """
59
+ Get users in a company.
60
+ """
61
+ return cast(
62
+ "User.Users",
63
+ cls._static_request(
64
+ "get",
65
+ "/users",
66
+ user_id,
67
+ company_id,
68
+ params=params,
69
+ ),
70
+ )
71
+
72
+ @classmethod
73
+ async def get_users_async(
74
+ cls,
75
+ user_id: str,
76
+ company_id: str,
77
+ **params: Unpack["User.GetParams"],
78
+ ) -> "User.Users":
79
+ """
80
+ Async get users in a company.
81
+ """
82
+ return cast(
83
+ "User.Users",
84
+ await cls._static_request_async(
85
+ "get",
86
+ "/users",
87
+ user_id,
88
+ company_id,
89
+ params=params,
90
+ ),
91
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_sdk
3
- Version: 0.10.39
3
+ Version: 0.10.43
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: Martin Fadler
@@ -43,6 +43,8 @@ The Unique Python SDK provides access to the public API of Unique AI. It also en
43
43
  - [Folder](#folder)
44
44
  - [Space](#space)
45
45
  - [LLM Models](#llm-models)
46
+ - [User](#user)
47
+ - [Group](#group)
46
48
  - [Agentic Table](#agentic-table)
47
49
  6. [UniqueQL](#uniqueql)
48
50
  - [Query Structure](#uniqueql-query-structure)
@@ -262,6 +264,8 @@ unique_sdk.Message.modify(
262
264
  - [Folder](#folder)
263
265
  - [Space](#space)
264
266
  - [LLM Models](#llm-models)
267
+ - [User](#user)
268
+ - [Group](#group)
265
269
  - [Agentic Table](#agentic-table)
266
270
 
267
271
  Most of the API services provide an asynchronous version of the method. The async methods are suffixed with `_async`.
@@ -1364,6 +1368,42 @@ unique_sdk.Folder.delete(
1364
1368
 
1365
1369
  ### Space
1366
1370
 
1371
+ #### `unique_sdk.Space.create_message`
1372
+
1373
+ Send a message in a space. You can optionally provide a chat ID to continue an existing conversation, or omit it to start a new chat.
1374
+
1375
+ ```python
1376
+ message = unique_sdk.Space.create_message(
1377
+ user_id=user_id,
1378
+ company_id=company_id,
1379
+ chatId="chat_dejfhe729br398", # Optional - if not provided, a new chat will be created
1380
+ assistantId="assistant_abc123",
1381
+ text="Hello, how can you help me?",
1382
+ toolChoices=["WebSearch"], # Optional - list of tools to use
1383
+ scopeRules={ # Optional - scope rules for filtering
1384
+ "or": [
1385
+ {
1386
+ "operator": "contains",
1387
+ "path": ["folderIdPath"],
1388
+ "value": "uniquepathid://scope_123"
1389
+ }
1390
+ ]
1391
+ },
1392
+ )
1393
+ ```
1394
+
1395
+ #### `unique_sdk.Space.get_latest_message`
1396
+
1397
+ Get the latest message in a space chat.
1398
+
1399
+ ```python
1400
+ message = unique_sdk.Space.get_latest_message(
1401
+ user_id=user_id,
1402
+ company_id=company_id,
1403
+ chat_id="chat_dejfhe729br398",
1404
+ )
1405
+ ```
1406
+
1367
1407
  #### `unique_sdk.Space.delete_chat`
1368
1408
 
1369
1409
  Delete a space chat by id. If the chat does not exist, the function will return an error.
@@ -1390,6 +1430,64 @@ models = unique_sdk.LLMModels.get(
1390
1430
  )
1391
1431
  ```
1392
1432
 
1433
+ ### User
1434
+
1435
+ #### `unique_sdk.User.get_users` (Compatible with release >.48)
1436
+
1437
+ Get users in a company. You can filter by email, display name, and use pagination with skip and take parameters.
1438
+
1439
+ ```python
1440
+ users = unique_sdk.User.get_users(
1441
+ user_id=user_id,
1442
+ company_id=company_id,
1443
+ skip=0, # Optional - number of records to skip for pagination
1444
+ take=50, # Optional - number of records to return (max 1000)
1445
+ email="user@example.com", # Optional - filter by email
1446
+ displayName="John", # Optional - filter by display name
1447
+ )
1448
+ ```
1449
+
1450
+ ### Group
1451
+
1452
+ #### `unique_sdk.Group.get_groups` (Compatible with release >.48)
1453
+
1454
+ Get groups in a company. You can filter by name and use pagination with skip and take parameters.
1455
+
1456
+ ```python
1457
+ groups = unique_sdk.Group.get_groups(
1458
+ user_id=user_id,
1459
+ company_id=company_id,
1460
+ skip=0, # Optional - number of records to skip for pagination
1461
+ take=50, # Optional - number of records to return (max 1000)
1462
+ name="Admin", # Optional - filter by group name
1463
+ )
1464
+ ```
1465
+
1466
+ #### `unique_sdk.Group.update_group` (Compatible with release >.48)
1467
+
1468
+ Update a group in a company. You can update the group's name.
1469
+
1470
+ ```python
1471
+ updated_group = unique_sdk.Group.update_group(
1472
+ user_id=user_id,
1473
+ company_id=company_id,
1474
+ group_id="group_id_here",
1475
+ name="New Group Name", # Optional - update the group name
1476
+ )
1477
+ ```
1478
+
1479
+ #### `unique_sdk.Group.delete_group` (Compatible with release >.48)
1480
+
1481
+ Delete a group in a company by its group ID.
1482
+
1483
+ ```python
1484
+ result = unique_sdk.Group.delete_group(
1485
+ user_id=user_id,
1486
+ company_id=company_id,
1487
+ group_id="group_id_here",
1488
+ )
1489
+ ```
1490
+
1393
1491
  ### Agentic Table
1394
1492
 
1395
1493
  The Agentic Table (Magic Table) API provides functionality for managing interactive tables with AI-powered cells, activity tracking, and metadata management.
@@ -1995,6 +2093,18 @@ All notable changes to this project will be documented in this file.
1995
2093
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
1996
2094
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
1997
2095
 
2096
+ ## [0.10.43] - 2025-11-14
2097
+ - Add get, delete and update groups functions.
2098
+
2099
+ ## [0.10.42] - 2025-11-14
2100
+ - Add get_users function.
2101
+
2102
+ ## [0.10.41] - 2025-11-13
2103
+ - Add create_message and get_latest_message.
2104
+
2105
+ ## [0.10.40] - 2025-11-10
2106
+ - Don't send description if not defined.
2107
+
1998
2108
  ## [0.10.39] - 2025-11-07
1999
2109
  - Add function to get llm models
2000
2110
 
@@ -1,4 +1,4 @@
1
- unique_sdk/__init__.py,sha256=64n1MmnhHojvt32j8QwF-t7JhTPyw9WIWKVBtkjrAVU,4089
1
+ unique_sdk/__init__.py,sha256=yfrzJ2M36Ota9-eohCxD-rmvfthh_eI3E3Jz_DPqiqs,4204
2
2
  unique_sdk/_api_requestor.py,sha256=i4gCpzx8zP95sv-AhJfpQxKvWR0U-I6lclHyV55RPtg,14397
3
3
  unique_sdk/_api_resource.py,sha256=ytjomI-IVJwsbvdPyuZCfF-bl-Abgf66bu1D34YxCu8,6244
4
4
  unique_sdk/_api_version.py,sha256=Ku4JPdeyJtnX5eJJvRCEc1_u44UObdVrvrL1T-WwWCs,46
@@ -17,27 +17,29 @@ unique_sdk/api_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
17
17
  unique_sdk/api_resources/_acronyms.py,sha256=GIU1XH1flGWQYcpsFqTYwg4ioIGxVmb15tux84nmhEg,891
18
18
  unique_sdk/api_resources/_agentic_table.py,sha256=8-_f7t-m_iiiOj2835iESoxz91YRxl4-tkxpzQbgdcI,9958
19
19
  unique_sdk/api_resources/_chat_completion.py,sha256=ILCAffxkbkfh2iV9L4KKnfe80gZmT9pWfkNmf3mq68U,2172
20
- unique_sdk/api_resources/_content.py,sha256=H-aL-dhWSBhMW4nFGpMuGziu0N-c0DnqY4mRAzsy2gU,17234
20
+ unique_sdk/api_resources/_content.py,sha256=Z7BU2bw1qULnn-UBX0f6ix_XV0qI1yaRH6zOSgtMvho,17514
21
21
  unique_sdk/api_resources/_embedding.py,sha256=C6qak7cCUBMBINfPhgH8taCJZ9n6w1MUElqDJJ8dG10,1281
22
22
  unique_sdk/api_resources/_event.py,sha256=bpWF9vstdoAWbUzr-iiGP713ceP0zPk77GJXiImf9zg,374
23
23
  unique_sdk/api_resources/_folder.py,sha256=WPyRPsdAE62tU7p4hEYiVB4OoArv_60b8t4j7hgrJKk,15765
24
+ unique_sdk/api_resources/_group.py,sha256=f3spoWF0fX0rZkWrJZdalBMLkwRtccNOSSxFadypum0,4341
24
25
  unique_sdk/api_resources/_integrated.py,sha256=O8e673z-RB7FRFMQYn_YEuHijebr5W7KJxkUnymbBZk,6164
25
26
  unique_sdk/api_resources/_llm_models.py,sha256=3Jn6MpxWgZ43Hze8JHd4_n27si5xmwd3JE8r8cEZq_M,1640
26
27
  unique_sdk/api_resources/_mcp.py,sha256=zKh0dyn0QnkKk57N2zlGVN_GQoxEp5T2CS38vVm6jQY,3341
27
- unique_sdk/api_resources/_message.py,sha256=W1Bh51lujpzmiFhZ-Mv_alQYZEY1OTEUr9O-k5jEgVM,9360
28
+ unique_sdk/api_resources/_message.py,sha256=tSS_jVwoAffBFH6RSClEnbRf48MleL7RMs3MnbNDq-E,10986
28
29
  unique_sdk/api_resources/_message_assessment.py,sha256=SSfx6eW7zb_GKe8cFJzCqW-t-_eWEXxKP5cnIb0DhIc,2276
29
30
  unique_sdk/api_resources/_message_execution.py,sha256=7V_Qovu4vzoXDd2em0AgnAJC460RUX6AE4byztNPlvg,4556
30
- unique_sdk/api_resources/_message_log.py,sha256=gwxDmEvTMDF9Nz5gH8Mq7qWw73dcjdqGJZjA0b42s6U,3709
31
+ unique_sdk/api_resources/_message_log.py,sha256=_DifZ4Di7uKyzkP0i8rwu5IIiYZPCBp5lvE4gfTrTHw,4793
31
32
  unique_sdk/api_resources/_search.py,sha256=GQItZKoGNOVZfkLLltBmsRZYBIreRKU0lGW8Kgpj1_Q,1959
32
33
  unique_sdk/api_resources/_search_string.py,sha256=LZz2_QPZXV1NXucRR06dnDC2miK7J8XBY7dXX2xoDY4,1610
33
34
  unique_sdk/api_resources/_short_term_memory.py,sha256=vPRN-Y0WPx74E6y-A3LocGc0TxJdzT-xGL66WzZwKRg,2820
34
35
  unique_sdk/api_resources/_space.py,sha256=JjIPauH37wULEiNO5PqOfgsipyfbRlC0KqjJ4_1Uugg,5035
36
+ unique_sdk/api_resources/_user.py,sha256=u59Hgq9i-QhYlqIYgk-KE7OeSx5xuNVo_gUgDpZTLcI,1974
35
37
  unique_sdk/utils/chat_history.py,sha256=5UqL9hF1O9pV7skbNOlEibF5rHdYsmG3m5-YEPUowOs,3037
36
38
  unique_sdk/utils/chat_in_space.py,sha256=cdjETBLnjv-OE8qsQpm626ks5yBdfQG_KBeG0WIzCbY,5994
37
39
  unique_sdk/utils/file_io.py,sha256=lskRULIh7qExK26o_1YqRs0f5mqJHTS9m_mdxlsVo4s,4497
38
40
  unique_sdk/utils/sources.py,sha256=DoxxhMLcLhmDfNarjXa41H4JD2GSSDywr71hiC-4pYc,4952
39
41
  unique_sdk/utils/token.py,sha256=AzKuAA1AwBtnvSFxGcsHLpxXr_wWE5Mj4jYBbOz2ljA,1740
40
- unique_sdk-0.10.39.dist-info/LICENSE,sha256=EJCWoHgrXVBUb47PnjeV4MFIEOR71MAdCOIgv61J-4k,1065
41
- unique_sdk-0.10.39.dist-info/METADATA,sha256=h60DXGC-Jf-cQ7PJHKstxh2OwyrZkUK3syPIseslL8Q,68798
42
- unique_sdk-0.10.39.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
43
- unique_sdk-0.10.39.dist-info/RECORD,,
42
+ unique_sdk-0.10.43.dist-info/LICENSE,sha256=EJCWoHgrXVBUb47PnjeV4MFIEOR71MAdCOIgv61J-4k,1065
43
+ unique_sdk-0.10.43.dist-info/METADATA,sha256=KdrdST-aefdKEsL0BaXUxAm4IyhnZSwc4TcKVDEVOBA,71736
44
+ unique_sdk-0.10.43.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
45
+ unique_sdk-0.10.43.dist-info/RECORD,,