evermemos 0.3.6__tar.gz → 0.3.7__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.
- evermemos-0.3.7/.release-please-manifest.json +3 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/CHANGELOG.md +15 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/PKG-INFO +45 -17
- {evermemos-0.3.6 → evermemos-0.3.7}/README.md +44 -16
- {evermemos-0.3.6 → evermemos-0.3.7}/api.md +32 -2
- {evermemos-0.3.6 → evermemos-0.3.7}/pyproject.toml +1 -1
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_version.py +1 -1
- evermemos-0.3.7/src/evermemos/resources/v1/__init__.py +61 -0
- evermemos-0.3.7/src/evermemos/resources/v1/global_user_profile/__init__.py +33 -0
- evermemos-0.3.7/src/evermemos/resources/v1/global_user_profile/custom.py +185 -0
- evermemos-0.3.7/src/evermemos/resources/v1/global_user_profile/global_user_profile.py +102 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/resources/v1/memories/conversation_meta.py +2 -78
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/resources/v1/memories/memories.py +172 -101
- evermemos-0.3.7/src/evermemos/resources/v1/stats/__init__.py +33 -0
- evermemos-0.3.7/src/evermemos/resources/v1/stats/request.py +175 -0
- evermemos-0.3.7/src/evermemos/resources/v1/stats/stats.py +102 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/resources/v1/v1.py +64 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/__init__.py +3 -1
- evermemos-0.3.7/src/evermemos/types/v1/global_user_profile/__init__.py +6 -0
- evermemos-0.3.7/src/evermemos/types/v1/global_user_profile/custom_upsert_params.py +24 -0
- evermemos-0.3.7/src/evermemos/types/v1/global_user_profile/custom_upsert_response.py +23 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memories/conversation_meta_create_params.py +0 -3
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memories/conversation_meta_create_response.py +0 -3
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memories/conversation_meta_get_response.py +0 -3
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memory_create_params.py +10 -2
- evermemos-0.3.6/src/evermemos/types/v1/memory_list_response.py → evermemos-0.3.7/src/evermemos/types/v1/memory_get_response.py +84 -3
- evermemos-0.3.7/src/evermemos/types/v1/memory_load_params.py +83 -0
- evermemos-0.3.7/src/evermemos/types/v1/memory_load_response.py +26 -0
- evermemos-0.3.7/src/evermemos/types/v1/stats/__init__.py +6 -0
- evermemos-0.3.7/src/evermemos/types/v1/stats/request_get_params.py +13 -0
- evermemos-0.3.7/src/evermemos/types/v1/stats/request_get_response.py +26 -0
- evermemos-0.3.7/tests/api_resources/v1/global_user_profile/test_custom.py +134 -0
- evermemos-0.3.7/tests/api_resources/v1/memories/__init__.py +1 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/api_resources/v1/memories/test_conversation_meta.py +68 -52
- evermemos-0.3.7/tests/api_resources/v1/stats/__init__.py +1 -0
- evermemos-0.3.7/tests/api_resources/v1/stats/test_request.py +92 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/api_resources/v1/test_memories.py +212 -73
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_client.py +20 -20
- evermemos-0.3.6/.release-please-manifest.json +0 -3
- evermemos-0.3.6/src/evermemos/resources/v1/__init__.py +0 -33
- {evermemos-0.3.6 → evermemos-0.3.7}/.gitignore +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/CONTRIBUTING.md +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/LICENSE +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/SECURITY.md +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/bin/check-release-environment +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/bin/publish-pypi +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/examples/.keep +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/release-please-config.json +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/requirements-dev.lock +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/EverMemOS/lib/.keep +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/__init__.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_base_client.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_client.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_compat.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_constants.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_exceptions.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_files.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_models.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_qs.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_resource.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_response.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_streaming.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_types.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/__init__.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/_compat.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/_datetime_parse.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/_logs.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/_proxy.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/_reflection.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/_resources_proxy.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/_streams.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/_sync.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/_transform.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/_typing.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/_utils/_utils.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/lib/.keep +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/py.typed +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/resources/__init__.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/resources/v1/memories/__init__.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/__init__.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memories/__init__.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memories/conversation_meta_update_params.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memories/conversation_meta_update_response.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memory_create_response.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memory_delete_params.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memory_delete_response.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memory_search_response.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/memory_type.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/src/evermemos/types/v1/metadata.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/__init__.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/api_resources/__init__.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/api_resources/v1/__init__.py +0 -0
- {evermemos-0.3.6/tests/api_resources/v1/memories → evermemos-0.3.7/tests/api_resources/v1/global_user_profile}/__init__.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/conftest.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/sample_file.txt +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_deepcopy.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_extract_files.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_files.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_models.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_qs.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_required_args.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_response.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_streaming.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_transform.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_utils/test_datetime_parse.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_utils/test_proxy.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/test_utils/test_typing.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/tests/utils.py +0 -0
- {evermemos-0.3.6 → evermemos-0.3.7}/uv.lock +0 -0
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.7 (2026-01-27)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.3.6...v0.3.7](https://github.com/evermemos/evermemos-python/compare/v0.3.6...v0.3.7)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** api update ([b5a5ad3](https://github.com/evermemos/evermemos-python/commit/b5a5ad30160d7b74918456a269d2be73feb173ba))
|
|
10
|
+
* **api:** api update ([ff8658d](https://github.com/evermemos/evermemos-python/commit/ff8658dbfa447af49ad0bf42ddf3a7bf84c5af08))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Chores
|
|
14
|
+
|
|
15
|
+
* update SDK settings ([7846bc7](https://github.com/evermemos/evermemos-python/commit/7846bc750ca4ab190a39feeb9dfd096854618cb1))
|
|
16
|
+
* update SDK settings ([fa846b9](https://github.com/evermemos/evermemos-python/commit/fa846b9647c78fbd9b072b6d397b8c74bbdfa2d4))
|
|
17
|
+
|
|
3
18
|
## 0.3.6 (2026-01-26)
|
|
4
19
|
|
|
5
20
|
Full Changelog: [v0.3.6...v0.3.6](https://github.com/evermemos/evermemos-python/compare/v0.3.6...v0.3.6)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: evermemos
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.7
|
|
4
4
|
Summary: The official Python library for the EverMemOS API
|
|
5
5
|
Project-URL: Homepage, https://github.com/evermemos/evermemos-python
|
|
6
6
|
Project-URL: Repository, https://github.com/evermemos/evermemos-python
|
|
@@ -68,10 +68,10 @@ client = EverMemOS(
|
|
|
68
68
|
)
|
|
69
69
|
|
|
70
70
|
memory = client.v1.memories.create(
|
|
71
|
-
content="
|
|
71
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
72
72
|
create_time="2025-01-15T10:00:00+00:00",
|
|
73
73
|
message_id="msg_001",
|
|
74
|
-
sender="
|
|
74
|
+
sender="user_001",
|
|
75
75
|
)
|
|
76
76
|
print(memory.message)
|
|
77
77
|
```
|
|
@@ -97,10 +97,10 @@ client = AsyncEverMemOS(
|
|
|
97
97
|
|
|
98
98
|
async def main() -> None:
|
|
99
99
|
memory = await client.v1.memories.create(
|
|
100
|
-
content="
|
|
100
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
101
101
|
create_time="2025-01-15T10:00:00+00:00",
|
|
102
102
|
message_id="msg_001",
|
|
103
|
-
sender="
|
|
103
|
+
sender="user_001",
|
|
104
104
|
)
|
|
105
105
|
print(memory.message)
|
|
106
106
|
|
|
@@ -136,10 +136,10 @@ async def main() -> None:
|
|
|
136
136
|
http_client=DefaultAioHttpClient(),
|
|
137
137
|
) as client:
|
|
138
138
|
memory = await client.v1.memories.create(
|
|
139
|
-
content="
|
|
139
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
140
140
|
create_time="2025-01-15T10:00:00+00:00",
|
|
141
141
|
message_id="msg_001",
|
|
142
|
-
sender="
|
|
142
|
+
sender="user_001",
|
|
143
143
|
)
|
|
144
144
|
print(memory.message)
|
|
145
145
|
|
|
@@ -156,6 +156,34 @@ Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typ
|
|
|
156
156
|
|
|
157
157
|
Typed requests and responses provide autocomplete and documentation within your editor. If you would like to see type errors in VS Code to help catch bugs earlier, set `python.analysis.typeCheckingMode` to `basic`.
|
|
158
158
|
|
|
159
|
+
## Nested params
|
|
160
|
+
|
|
161
|
+
Nested parameters are dictionaries, typed using `TypedDict`, for example:
|
|
162
|
+
|
|
163
|
+
```python
|
|
164
|
+
from evermemos import EverMemOS
|
|
165
|
+
|
|
166
|
+
client = EverMemOS()
|
|
167
|
+
|
|
168
|
+
response = client.v1.memories.load(
|
|
169
|
+
conversation_meta={
|
|
170
|
+
"group_id": "chat_user_001_assistant",
|
|
171
|
+
"created_at": "2025-06-26T00:00:00Z",
|
|
172
|
+
"default_timezone": "UTC",
|
|
173
|
+
"description": "Conversation between user and assistant",
|
|
174
|
+
"name": "User Support Chat",
|
|
175
|
+
"scene": "assistant",
|
|
176
|
+
"scene_desc": {"description": "bar"},
|
|
177
|
+
"tags": ["support"],
|
|
178
|
+
"user_details": {
|
|
179
|
+
"user_001": "bar",
|
|
180
|
+
"robot_001": "bar",
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
)
|
|
184
|
+
print(response.conversation_meta)
|
|
185
|
+
```
|
|
186
|
+
|
|
159
187
|
## Handling errors
|
|
160
188
|
|
|
161
189
|
When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `evermemos.APIConnectionError` is raised.
|
|
@@ -173,10 +201,10 @@ client = EverMemOS()
|
|
|
173
201
|
|
|
174
202
|
try:
|
|
175
203
|
client.v1.memories.create(
|
|
176
|
-
content="
|
|
204
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
177
205
|
create_time="2025-01-15T10:00:00+00:00",
|
|
178
206
|
message_id="msg_001",
|
|
179
|
-
sender="
|
|
207
|
+
sender="user_001",
|
|
180
208
|
)
|
|
181
209
|
except evermemos.APIConnectionError as e:
|
|
182
210
|
print("The server could not be reached")
|
|
@@ -221,10 +249,10 @@ client = EverMemOS(
|
|
|
221
249
|
|
|
222
250
|
# Or, configure per-request:
|
|
223
251
|
client.with_options(max_retries=5).v1.memories.create(
|
|
224
|
-
content="
|
|
252
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
225
253
|
create_time="2025-01-15T10:00:00+00:00",
|
|
226
254
|
message_id="msg_001",
|
|
227
|
-
sender="
|
|
255
|
+
sender="user_001",
|
|
228
256
|
)
|
|
229
257
|
```
|
|
230
258
|
|
|
@@ -249,10 +277,10 @@ client = EverMemOS(
|
|
|
249
277
|
|
|
250
278
|
# Override per-request:
|
|
251
279
|
client.with_options(timeout=5.0).v1.memories.create(
|
|
252
|
-
content="
|
|
280
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
253
281
|
create_time="2025-01-15T10:00:00+00:00",
|
|
254
282
|
message_id="msg_001",
|
|
255
|
-
sender="
|
|
283
|
+
sender="user_001",
|
|
256
284
|
)
|
|
257
285
|
```
|
|
258
286
|
|
|
@@ -295,10 +323,10 @@ from evermemos import EverMemOS
|
|
|
295
323
|
|
|
296
324
|
client = EverMemOS()
|
|
297
325
|
response = client.v1.memories.with_raw_response.create(
|
|
298
|
-
content="
|
|
326
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
299
327
|
create_time="2025-01-15T10:00:00+00:00",
|
|
300
328
|
message_id="msg_001",
|
|
301
|
-
sender="
|
|
329
|
+
sender="user_001",
|
|
302
330
|
)
|
|
303
331
|
print(response.headers.get('X-My-Header'))
|
|
304
332
|
|
|
@@ -318,10 +346,10 @@ To stream the response body, use `.with_streaming_response` instead, which requi
|
|
|
318
346
|
|
|
319
347
|
```python
|
|
320
348
|
with client.v1.memories.with_streaming_response.create(
|
|
321
|
-
content="
|
|
349
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
322
350
|
create_time="2025-01-15T10:00:00+00:00",
|
|
323
351
|
message_id="msg_001",
|
|
324
|
-
sender="
|
|
352
|
+
sender="user_001",
|
|
325
353
|
) as response:
|
|
326
354
|
print(response.headers.get("X-My-Header"))
|
|
327
355
|
|
|
@@ -33,10 +33,10 @@ client = EverMemOS(
|
|
|
33
33
|
)
|
|
34
34
|
|
|
35
35
|
memory = client.v1.memories.create(
|
|
36
|
-
content="
|
|
36
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
37
37
|
create_time="2025-01-15T10:00:00+00:00",
|
|
38
38
|
message_id="msg_001",
|
|
39
|
-
sender="
|
|
39
|
+
sender="user_001",
|
|
40
40
|
)
|
|
41
41
|
print(memory.message)
|
|
42
42
|
```
|
|
@@ -62,10 +62,10 @@ client = AsyncEverMemOS(
|
|
|
62
62
|
|
|
63
63
|
async def main() -> None:
|
|
64
64
|
memory = await client.v1.memories.create(
|
|
65
|
-
content="
|
|
65
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
66
66
|
create_time="2025-01-15T10:00:00+00:00",
|
|
67
67
|
message_id="msg_001",
|
|
68
|
-
sender="
|
|
68
|
+
sender="user_001",
|
|
69
69
|
)
|
|
70
70
|
print(memory.message)
|
|
71
71
|
|
|
@@ -101,10 +101,10 @@ async def main() -> None:
|
|
|
101
101
|
http_client=DefaultAioHttpClient(),
|
|
102
102
|
) as client:
|
|
103
103
|
memory = await client.v1.memories.create(
|
|
104
|
-
content="
|
|
104
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
105
105
|
create_time="2025-01-15T10:00:00+00:00",
|
|
106
106
|
message_id="msg_001",
|
|
107
|
-
sender="
|
|
107
|
+
sender="user_001",
|
|
108
108
|
)
|
|
109
109
|
print(memory.message)
|
|
110
110
|
|
|
@@ -121,6 +121,34 @@ Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typ
|
|
|
121
121
|
|
|
122
122
|
Typed requests and responses provide autocomplete and documentation within your editor. If you would like to see type errors in VS Code to help catch bugs earlier, set `python.analysis.typeCheckingMode` to `basic`.
|
|
123
123
|
|
|
124
|
+
## Nested params
|
|
125
|
+
|
|
126
|
+
Nested parameters are dictionaries, typed using `TypedDict`, for example:
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
from evermemos import EverMemOS
|
|
130
|
+
|
|
131
|
+
client = EverMemOS()
|
|
132
|
+
|
|
133
|
+
response = client.v1.memories.load(
|
|
134
|
+
conversation_meta={
|
|
135
|
+
"group_id": "chat_user_001_assistant",
|
|
136
|
+
"created_at": "2025-06-26T00:00:00Z",
|
|
137
|
+
"default_timezone": "UTC",
|
|
138
|
+
"description": "Conversation between user and assistant",
|
|
139
|
+
"name": "User Support Chat",
|
|
140
|
+
"scene": "assistant",
|
|
141
|
+
"scene_desc": {"description": "bar"},
|
|
142
|
+
"tags": ["support"],
|
|
143
|
+
"user_details": {
|
|
144
|
+
"user_001": "bar",
|
|
145
|
+
"robot_001": "bar",
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
)
|
|
149
|
+
print(response.conversation_meta)
|
|
150
|
+
```
|
|
151
|
+
|
|
124
152
|
## Handling errors
|
|
125
153
|
|
|
126
154
|
When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `evermemos.APIConnectionError` is raised.
|
|
@@ -138,10 +166,10 @@ client = EverMemOS()
|
|
|
138
166
|
|
|
139
167
|
try:
|
|
140
168
|
client.v1.memories.create(
|
|
141
|
-
content="
|
|
169
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
142
170
|
create_time="2025-01-15T10:00:00+00:00",
|
|
143
171
|
message_id="msg_001",
|
|
144
|
-
sender="
|
|
172
|
+
sender="user_001",
|
|
145
173
|
)
|
|
146
174
|
except evermemos.APIConnectionError as e:
|
|
147
175
|
print("The server could not be reached")
|
|
@@ -186,10 +214,10 @@ client = EverMemOS(
|
|
|
186
214
|
|
|
187
215
|
# Or, configure per-request:
|
|
188
216
|
client.with_options(max_retries=5).v1.memories.create(
|
|
189
|
-
content="
|
|
217
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
190
218
|
create_time="2025-01-15T10:00:00+00:00",
|
|
191
219
|
message_id="msg_001",
|
|
192
|
-
sender="
|
|
220
|
+
sender="user_001",
|
|
193
221
|
)
|
|
194
222
|
```
|
|
195
223
|
|
|
@@ -214,10 +242,10 @@ client = EverMemOS(
|
|
|
214
242
|
|
|
215
243
|
# Override per-request:
|
|
216
244
|
client.with_options(timeout=5.0).v1.memories.create(
|
|
217
|
-
content="
|
|
245
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
218
246
|
create_time="2025-01-15T10:00:00+00:00",
|
|
219
247
|
message_id="msg_001",
|
|
220
|
-
sender="
|
|
248
|
+
sender="user_001",
|
|
221
249
|
)
|
|
222
250
|
```
|
|
223
251
|
|
|
@@ -260,10 +288,10 @@ from evermemos import EverMemOS
|
|
|
260
288
|
|
|
261
289
|
client = EverMemOS()
|
|
262
290
|
response = client.v1.memories.with_raw_response.create(
|
|
263
|
-
content="
|
|
291
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
264
292
|
create_time="2025-01-15T10:00:00+00:00",
|
|
265
293
|
message_id="msg_001",
|
|
266
|
-
sender="
|
|
294
|
+
sender="user_001",
|
|
267
295
|
)
|
|
268
296
|
print(response.headers.get('X-My-Header'))
|
|
269
297
|
|
|
@@ -283,10 +311,10 @@ To stream the response body, use `.with_streaming_response` instead, which requi
|
|
|
283
311
|
|
|
284
312
|
```python
|
|
285
313
|
with client.v1.memories.with_streaming_response.create(
|
|
286
|
-
content="
|
|
314
|
+
content="Let's discuss the technical solution for the new feature today",
|
|
287
315
|
create_time="2025-01-15T10:00:00+00:00",
|
|
288
316
|
message_id="msg_001",
|
|
289
|
-
sender="
|
|
317
|
+
sender="user_001",
|
|
290
318
|
) as response:
|
|
291
319
|
print(response.headers.get("X-My-Header"))
|
|
292
320
|
|
|
@@ -9,8 +9,9 @@ from evermemos.types.v1 import (
|
|
|
9
9
|
MemoryType,
|
|
10
10
|
Metadata,
|
|
11
11
|
MemoryCreateResponse,
|
|
12
|
-
MemoryListResponse,
|
|
13
12
|
MemoryDeleteResponse,
|
|
13
|
+
MemoryGetResponse,
|
|
14
|
+
MemoryLoadResponse,
|
|
14
15
|
MemorySearchResponse,
|
|
15
16
|
)
|
|
16
17
|
```
|
|
@@ -18,8 +19,9 @@ from evermemos.types.v1 import (
|
|
|
18
19
|
Methods:
|
|
19
20
|
|
|
20
21
|
- <code title="post /api/v1/memories">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">create</a>(\*\*<a href="src/evermemos/types/v1/memory_create_params.py">params</a>) -> <a href="./src/evermemos/types/v1/memory_create_response.py">MemoryCreateResponse</a></code>
|
|
21
|
-
- <code title="get /api/v1/memories">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">list</a>() -> <a href="./src/evermemos/types/v1/memory_list_response.py">MemoryListResponse</a></code>
|
|
22
22
|
- <code title="delete /api/v1/memories">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">delete</a>(\*\*<a href="src/evermemos/types/v1/memory_delete_params.py">params</a>) -> <a href="./src/evermemos/types/v1/memory_delete_response.py">MemoryDeleteResponse</a></code>
|
|
23
|
+
- <code title="get /api/v1/memories">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">get</a>() -> <a href="./src/evermemos/types/v1/memory_get_response.py">MemoryGetResponse</a></code>
|
|
24
|
+
- <code title="post /api/v1/memories/import">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">load</a>(\*\*<a href="src/evermemos/types/v1/memory_load_params.py">params</a>) -> <a href="./src/evermemos/types/v1/memory_load_response.py">MemoryLoadResponse</a></code>
|
|
23
25
|
- <code title="get /api/v1/memories/search">client.v1.memories.<a href="./src/evermemos/resources/v1/memories/memories.py">search</a>() -> <a href="./src/evermemos/types/v1/memory_search_response.py">MemorySearchResponse</a></code>
|
|
24
26
|
|
|
25
27
|
### ConversationMeta
|
|
@@ -39,3 +41,31 @@ Methods:
|
|
|
39
41
|
- <code title="post /api/v1/memories/conversation-meta">client.v1.memories.conversation_meta.<a href="./src/evermemos/resources/v1/memories/conversation_meta.py">create</a>(\*\*<a href="src/evermemos/types/v1/memories/conversation_meta_create_params.py">params</a>) -> <a href="./src/evermemos/types/v1/memories/conversation_meta_create_response.py">ConversationMetaCreateResponse</a></code>
|
|
40
42
|
- <code title="patch /api/v1/memories/conversation-meta">client.v1.memories.conversation_meta.<a href="./src/evermemos/resources/v1/memories/conversation_meta.py">update</a>(\*\*<a href="src/evermemos/types/v1/memories/conversation_meta_update_params.py">params</a>) -> <a href="./src/evermemos/types/v1/memories/conversation_meta_update_response.py">ConversationMetaUpdateResponse</a></code>
|
|
41
43
|
- <code title="get /api/v1/memories/conversation-meta">client.v1.memories.conversation_meta.<a href="./src/evermemos/resources/v1/memories/conversation_meta.py">get</a>() -> <a href="./src/evermemos/types/v1/memories/conversation_meta_get_response.py">ConversationMetaGetResponse</a></code>
|
|
44
|
+
|
|
45
|
+
## GlobalUserProfile
|
|
46
|
+
|
|
47
|
+
### Custom
|
|
48
|
+
|
|
49
|
+
Types:
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
from evermemos.types.v1.global_user_profile import CustomUpsertResponse
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Methods:
|
|
56
|
+
|
|
57
|
+
- <code title="post /api/v1/global-user-profile/custom">client.v1.global_user_profile.custom.<a href="./src/evermemos/resources/v1/global_user_profile/custom.py">upsert</a>(\*\*<a href="src/evermemos/types/v1/global_user_profile/custom_upsert_params.py">params</a>) -> <a href="./src/evermemos/types/v1/global_user_profile/custom_upsert_response.py">CustomUpsertResponse</a></code>
|
|
58
|
+
|
|
59
|
+
## Stats
|
|
60
|
+
|
|
61
|
+
### Request
|
|
62
|
+
|
|
63
|
+
Types:
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
from evermemos.types.v1.stats import RequestGetResponse
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Methods:
|
|
70
|
+
|
|
71
|
+
- <code title="get /api/v1/stats/request">client.v1.stats.request.<a href="./src/evermemos/resources/v1/stats/request.py">get</a>(\*\*<a href="src/evermemos/types/v1/stats/request_get_params.py">params</a>) -> <a href="./src/evermemos/types/v1/stats/request_get_response.py">RequestGetResponse</a></code>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from .v1 import (
|
|
4
|
+
V1Resource,
|
|
5
|
+
AsyncV1Resource,
|
|
6
|
+
V1ResourceWithRawResponse,
|
|
7
|
+
AsyncV1ResourceWithRawResponse,
|
|
8
|
+
V1ResourceWithStreamingResponse,
|
|
9
|
+
AsyncV1ResourceWithStreamingResponse,
|
|
10
|
+
)
|
|
11
|
+
from .stats import (
|
|
12
|
+
StatsResource,
|
|
13
|
+
AsyncStatsResource,
|
|
14
|
+
StatsResourceWithRawResponse,
|
|
15
|
+
AsyncStatsResourceWithRawResponse,
|
|
16
|
+
StatsResourceWithStreamingResponse,
|
|
17
|
+
AsyncStatsResourceWithStreamingResponse,
|
|
18
|
+
)
|
|
19
|
+
from .memories import (
|
|
20
|
+
MemoriesResource,
|
|
21
|
+
AsyncMemoriesResource,
|
|
22
|
+
MemoriesResourceWithRawResponse,
|
|
23
|
+
AsyncMemoriesResourceWithRawResponse,
|
|
24
|
+
MemoriesResourceWithStreamingResponse,
|
|
25
|
+
AsyncMemoriesResourceWithStreamingResponse,
|
|
26
|
+
)
|
|
27
|
+
from .global_user_profile import (
|
|
28
|
+
GlobalUserProfileResource,
|
|
29
|
+
AsyncGlobalUserProfileResource,
|
|
30
|
+
GlobalUserProfileResourceWithRawResponse,
|
|
31
|
+
AsyncGlobalUserProfileResourceWithRawResponse,
|
|
32
|
+
GlobalUserProfileResourceWithStreamingResponse,
|
|
33
|
+
AsyncGlobalUserProfileResourceWithStreamingResponse,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
__all__ = [
|
|
37
|
+
"MemoriesResource",
|
|
38
|
+
"AsyncMemoriesResource",
|
|
39
|
+
"MemoriesResourceWithRawResponse",
|
|
40
|
+
"AsyncMemoriesResourceWithRawResponse",
|
|
41
|
+
"MemoriesResourceWithStreamingResponse",
|
|
42
|
+
"AsyncMemoriesResourceWithStreamingResponse",
|
|
43
|
+
"GlobalUserProfileResource",
|
|
44
|
+
"AsyncGlobalUserProfileResource",
|
|
45
|
+
"GlobalUserProfileResourceWithRawResponse",
|
|
46
|
+
"AsyncGlobalUserProfileResourceWithRawResponse",
|
|
47
|
+
"GlobalUserProfileResourceWithStreamingResponse",
|
|
48
|
+
"AsyncGlobalUserProfileResourceWithStreamingResponse",
|
|
49
|
+
"StatsResource",
|
|
50
|
+
"AsyncStatsResource",
|
|
51
|
+
"StatsResourceWithRawResponse",
|
|
52
|
+
"AsyncStatsResourceWithRawResponse",
|
|
53
|
+
"StatsResourceWithStreamingResponse",
|
|
54
|
+
"AsyncStatsResourceWithStreamingResponse",
|
|
55
|
+
"V1Resource",
|
|
56
|
+
"AsyncV1Resource",
|
|
57
|
+
"V1ResourceWithRawResponse",
|
|
58
|
+
"AsyncV1ResourceWithRawResponse",
|
|
59
|
+
"V1ResourceWithStreamingResponse",
|
|
60
|
+
"AsyncV1ResourceWithStreamingResponse",
|
|
61
|
+
]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from .custom import (
|
|
4
|
+
CustomResource,
|
|
5
|
+
AsyncCustomResource,
|
|
6
|
+
CustomResourceWithRawResponse,
|
|
7
|
+
AsyncCustomResourceWithRawResponse,
|
|
8
|
+
CustomResourceWithStreamingResponse,
|
|
9
|
+
AsyncCustomResourceWithStreamingResponse,
|
|
10
|
+
)
|
|
11
|
+
from .global_user_profile import (
|
|
12
|
+
GlobalUserProfileResource,
|
|
13
|
+
AsyncGlobalUserProfileResource,
|
|
14
|
+
GlobalUserProfileResourceWithRawResponse,
|
|
15
|
+
AsyncGlobalUserProfileResourceWithRawResponse,
|
|
16
|
+
GlobalUserProfileResourceWithStreamingResponse,
|
|
17
|
+
AsyncGlobalUserProfileResourceWithStreamingResponse,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
__all__ = [
|
|
21
|
+
"CustomResource",
|
|
22
|
+
"AsyncCustomResource",
|
|
23
|
+
"CustomResourceWithRawResponse",
|
|
24
|
+
"AsyncCustomResourceWithRawResponse",
|
|
25
|
+
"CustomResourceWithStreamingResponse",
|
|
26
|
+
"AsyncCustomResourceWithStreamingResponse",
|
|
27
|
+
"GlobalUserProfileResource",
|
|
28
|
+
"AsyncGlobalUserProfileResource",
|
|
29
|
+
"GlobalUserProfileResourceWithRawResponse",
|
|
30
|
+
"AsyncGlobalUserProfileResourceWithRawResponse",
|
|
31
|
+
"GlobalUserProfileResourceWithStreamingResponse",
|
|
32
|
+
"AsyncGlobalUserProfileResourceWithStreamingResponse",
|
|
33
|
+
]
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import httpx
|
|
6
|
+
|
|
7
|
+
from ...._types import Body, Query, Headers, NotGiven, not_given
|
|
8
|
+
from ...._utils import maybe_transform, async_maybe_transform
|
|
9
|
+
from ...._compat import cached_property
|
|
10
|
+
from ...._resource import SyncAPIResource, AsyncAPIResource
|
|
11
|
+
from ...._response import (
|
|
12
|
+
to_raw_response_wrapper,
|
|
13
|
+
to_streamed_response_wrapper,
|
|
14
|
+
async_to_raw_response_wrapper,
|
|
15
|
+
async_to_streamed_response_wrapper,
|
|
16
|
+
)
|
|
17
|
+
from ...._base_client import make_request_options
|
|
18
|
+
from ....types.v1.global_user_profile import custom_upsert_params
|
|
19
|
+
from ....types.v1.global_user_profile.custom_upsert_response import CustomUpsertResponse
|
|
20
|
+
|
|
21
|
+
__all__ = ["CustomResource", "AsyncCustomResource"]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class CustomResource(SyncAPIResource):
|
|
25
|
+
@cached_property
|
|
26
|
+
def with_raw_response(self) -> CustomResourceWithRawResponse:
|
|
27
|
+
"""
|
|
28
|
+
This property can be used as a prefix for any HTTP method call to return
|
|
29
|
+
the raw response object instead of the parsed content.
|
|
30
|
+
|
|
31
|
+
For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
|
|
32
|
+
"""
|
|
33
|
+
return CustomResourceWithRawResponse(self)
|
|
34
|
+
|
|
35
|
+
@cached_property
|
|
36
|
+
def with_streaming_response(self) -> CustomResourceWithStreamingResponse:
|
|
37
|
+
"""
|
|
38
|
+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
|
39
|
+
|
|
40
|
+
For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
|
|
41
|
+
"""
|
|
42
|
+
return CustomResourceWithStreamingResponse(self)
|
|
43
|
+
|
|
44
|
+
def upsert(
|
|
45
|
+
self,
|
|
46
|
+
*,
|
|
47
|
+
custom_profile_data: custom_upsert_params.CustomProfileData,
|
|
48
|
+
user_id: str,
|
|
49
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
50
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
51
|
+
extra_headers: Headers | None = None,
|
|
52
|
+
extra_query: Query | None = None,
|
|
53
|
+
extra_body: Body | None = None,
|
|
54
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
55
|
+
) -> CustomUpsertResponse:
|
|
56
|
+
"""
|
|
57
|
+
Upsert custom profile data for a user
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
custom_profile_data: Custom profile data to upsert
|
|
61
|
+
|
|
62
|
+
user_id: User ID
|
|
63
|
+
|
|
64
|
+
extra_headers: Send extra headers
|
|
65
|
+
|
|
66
|
+
extra_query: Add additional query parameters to the request
|
|
67
|
+
|
|
68
|
+
extra_body: Add additional JSON properties to the request
|
|
69
|
+
|
|
70
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
71
|
+
"""
|
|
72
|
+
return self._post(
|
|
73
|
+
"/api/v1/global-user-profile/custom",
|
|
74
|
+
body=maybe_transform(
|
|
75
|
+
{
|
|
76
|
+
"custom_profile_data": custom_profile_data,
|
|
77
|
+
"user_id": user_id,
|
|
78
|
+
},
|
|
79
|
+
custom_upsert_params.CustomUpsertParams,
|
|
80
|
+
),
|
|
81
|
+
options=make_request_options(
|
|
82
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
83
|
+
),
|
|
84
|
+
cast_to=CustomUpsertResponse,
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class AsyncCustomResource(AsyncAPIResource):
|
|
89
|
+
@cached_property
|
|
90
|
+
def with_raw_response(self) -> AsyncCustomResourceWithRawResponse:
|
|
91
|
+
"""
|
|
92
|
+
This property can be used as a prefix for any HTTP method call to return
|
|
93
|
+
the raw response object instead of the parsed content.
|
|
94
|
+
|
|
95
|
+
For more information, see https://www.github.com/evermemos/evermemos-python#accessing-raw-response-data-eg-headers
|
|
96
|
+
"""
|
|
97
|
+
return AsyncCustomResourceWithRawResponse(self)
|
|
98
|
+
|
|
99
|
+
@cached_property
|
|
100
|
+
def with_streaming_response(self) -> AsyncCustomResourceWithStreamingResponse:
|
|
101
|
+
"""
|
|
102
|
+
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
|
|
103
|
+
|
|
104
|
+
For more information, see https://www.github.com/evermemos/evermemos-python#with_streaming_response
|
|
105
|
+
"""
|
|
106
|
+
return AsyncCustomResourceWithStreamingResponse(self)
|
|
107
|
+
|
|
108
|
+
async def upsert(
|
|
109
|
+
self,
|
|
110
|
+
*,
|
|
111
|
+
custom_profile_data: custom_upsert_params.CustomProfileData,
|
|
112
|
+
user_id: str,
|
|
113
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
114
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
115
|
+
extra_headers: Headers | None = None,
|
|
116
|
+
extra_query: Query | None = None,
|
|
117
|
+
extra_body: Body | None = None,
|
|
118
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
119
|
+
) -> CustomUpsertResponse:
|
|
120
|
+
"""
|
|
121
|
+
Upsert custom profile data for a user
|
|
122
|
+
|
|
123
|
+
Args:
|
|
124
|
+
custom_profile_data: Custom profile data to upsert
|
|
125
|
+
|
|
126
|
+
user_id: User ID
|
|
127
|
+
|
|
128
|
+
extra_headers: Send extra headers
|
|
129
|
+
|
|
130
|
+
extra_query: Add additional query parameters to the request
|
|
131
|
+
|
|
132
|
+
extra_body: Add additional JSON properties to the request
|
|
133
|
+
|
|
134
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
135
|
+
"""
|
|
136
|
+
return await self._post(
|
|
137
|
+
"/api/v1/global-user-profile/custom",
|
|
138
|
+
body=await async_maybe_transform(
|
|
139
|
+
{
|
|
140
|
+
"custom_profile_data": custom_profile_data,
|
|
141
|
+
"user_id": user_id,
|
|
142
|
+
},
|
|
143
|
+
custom_upsert_params.CustomUpsertParams,
|
|
144
|
+
),
|
|
145
|
+
options=make_request_options(
|
|
146
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
147
|
+
),
|
|
148
|
+
cast_to=CustomUpsertResponse,
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
class CustomResourceWithRawResponse:
|
|
153
|
+
def __init__(self, custom: CustomResource) -> None:
|
|
154
|
+
self._custom = custom
|
|
155
|
+
|
|
156
|
+
self.upsert = to_raw_response_wrapper(
|
|
157
|
+
custom.upsert,
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
class AsyncCustomResourceWithRawResponse:
|
|
162
|
+
def __init__(self, custom: AsyncCustomResource) -> None:
|
|
163
|
+
self._custom = custom
|
|
164
|
+
|
|
165
|
+
self.upsert = async_to_raw_response_wrapper(
|
|
166
|
+
custom.upsert,
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
class CustomResourceWithStreamingResponse:
|
|
171
|
+
def __init__(self, custom: CustomResource) -> None:
|
|
172
|
+
self._custom = custom
|
|
173
|
+
|
|
174
|
+
self.upsert = to_streamed_response_wrapper(
|
|
175
|
+
custom.upsert,
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
class AsyncCustomResourceWithStreamingResponse:
|
|
180
|
+
def __init__(self, custom: AsyncCustomResource) -> None:
|
|
181
|
+
self._custom = custom
|
|
182
|
+
|
|
183
|
+
self.upsert = async_to_streamed_response_wrapper(
|
|
184
|
+
custom.upsert,
|
|
185
|
+
)
|