mindtrace-database 0.12.0__tar.gz → 0.14.0__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.
- {mindtrace_database-0.12.0/mindtrace_database.egg-info → mindtrace_database-0.14.0}/PKG-INFO +3 -3
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/backends/mongo_odm.py +9 -8
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/backends/unified_odm.py +12 -10
- mindtrace_database-0.14.0/mindtrace/database/sample/user.py +12 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/testing/suites/mongo_crud.py +3 -3
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/testing/suites/mongo_insert.py +3 -3
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/testing/suites/mongo_read.py +3 -3
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/testing/suites/mongo_update.py +3 -3
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0/mindtrace_database.egg-info}/PKG-INFO +3 -3
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace_database.egg-info/requires.txt +2 -2
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/pyproject.toml +3 -3
- mindtrace_database-0.12.0/mindtrace/database/sample/user.py +0 -10
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/LICENSE +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/README.md +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/__init__.py +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/backends/mindtrace_odm.py +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/backends/redis_odm.py +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/backends/registry_odm.py +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/core/exceptions.py +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/testing/__init__.py +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/testing/suites/__init__.py +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/testing/suites/_models.py +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/testing/suites/_mongo.py +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace_database.egg-info/SOURCES.txt +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace_database.egg-info/dependency_links.txt +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace_database.egg-info/entry_points.txt +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace_database.egg-info/top_level.txt +0 -0
- {mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/setup.cfg +0 -0
{mindtrace_database-0.12.0/mindtrace_database.egg-info → mindtrace_database-0.14.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mindtrace-database
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
4
4
|
Summary: Database functionality for Mindtrace
|
|
5
5
|
Author: Mindtrace Team
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -11,13 +11,13 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
12
|
License-File: LICENSE
|
|
13
13
|
Requires-Dist: beanie<2,>=1.29.0
|
|
14
|
-
Requires-Dist: mindtrace-core>=0.
|
|
14
|
+
Requires-Dist: mindtrace-core>=0.14.0
|
|
15
15
|
Requires-Dist: pydantic>=2.11.1
|
|
16
16
|
Requires-Dist: redis>=4.0.0
|
|
17
17
|
Requires-Dist: redis-om>=0.3.5
|
|
18
18
|
Requires-Dist: motor>=3.3.0
|
|
19
19
|
Requires-Dist: pymongo>=4.14.0
|
|
20
|
-
Requires-Dist: mindtrace-registry>=0.
|
|
20
|
+
Requires-Dist: mindtrace-registry>=0.14.0
|
|
21
21
|
Dynamic: license-file
|
|
22
22
|
|
|
23
23
|
[](https://pypi.org/project/mindtrace-database/)
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/backends/mongo_odm.py
RENAMED
|
@@ -438,15 +438,16 @@ class MongoMindtraceODM[T: MindtraceDocument](MindtraceODM):
|
|
|
438
438
|
if "_id" in data:
|
|
439
439
|
data.pop("_id")
|
|
440
440
|
|
|
441
|
+
# Caller ids were already stripped above; a model validator may mint a
|
|
442
|
+
# deterministic id here and it must survive to the write.
|
|
441
443
|
doc = self.model_cls(**data)
|
|
442
|
-
doc.id = None
|
|
443
444
|
|
|
444
445
|
try:
|
|
445
446
|
if self._motor_routing:
|
|
446
447
|
raw = self._motor_model_dump(doc)
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
448
|
+
for key in ("_id", "id"):
|
|
449
|
+
if raw.get(key) is None:
|
|
450
|
+
raw.pop(key, None)
|
|
450
451
|
result = await self._motor_collection().insert_one(raw)
|
|
451
452
|
inserted = await self._motor_collection().find_one({"_id": result.inserted_id})
|
|
452
453
|
if inserted is None:
|
|
@@ -481,12 +482,12 @@ class MongoMindtraceODM[T: MindtraceDocument](MindtraceODM):
|
|
|
481
482
|
data = obj.model_dump(mode="python", by_alias=True, serialize_as_any=True)
|
|
482
483
|
data.pop("id", None)
|
|
483
484
|
data.pop("_id", None)
|
|
485
|
+
# Same as insert(): caller ids stripped above; minted ids survive.
|
|
484
486
|
doc = self.model_cls(**data)
|
|
485
|
-
doc.id = None
|
|
486
487
|
raw = self._motor_model_dump(doc)
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
488
|
+
for key in ("_id", "id"):
|
|
489
|
+
if raw.get(key) is None:
|
|
490
|
+
raw.pop(key, None)
|
|
490
491
|
raw_docs.append(raw)
|
|
491
492
|
|
|
492
493
|
try:
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/backends/unified_odm.py
RENAMED
|
@@ -2,7 +2,7 @@ import asyncio
|
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from typing import Dict, List, Optional, Type, TypeVar, Union
|
|
4
4
|
|
|
5
|
-
from pydantic import BaseModel, Field
|
|
5
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
6
6
|
from redis_om.model.model import model_registry
|
|
7
7
|
|
|
8
8
|
from mindtrace.database.backends.mindtrace_odm import InitMode, MindtraceODM
|
|
@@ -39,15 +39,11 @@ class UnifiedMindtraceDocument(BaseModel):
|
|
|
39
39
|
# Optional ID field that can be used by both backends
|
|
40
40
|
id: Optional[str] = Field(default=None, description="Document ID")
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
# Use enum values for serialization
|
|
48
|
-
use_enum_values = True
|
|
49
|
-
# Validate assignment
|
|
50
|
-
validate_assignment = True
|
|
42
|
+
model_config = ConfigDict(
|
|
43
|
+
arbitrary_types_allowed=True,
|
|
44
|
+
use_enum_values=True,
|
|
45
|
+
validate_assignment=True,
|
|
46
|
+
)
|
|
51
47
|
|
|
52
48
|
class Meta:
|
|
53
49
|
"""
|
|
@@ -209,10 +205,16 @@ class UnifiedMindtraceDocument(BaseModel):
|
|
|
209
205
|
else:
|
|
210
206
|
annotations[field_name] = processed_type
|
|
211
207
|
|
|
208
|
+
# The generated class owns its id field
|
|
209
|
+
from beanie import PydanticObjectId
|
|
210
|
+
|
|
211
|
+
annotations["id"] = Optional[PydanticObjectId]
|
|
212
|
+
|
|
212
213
|
# Create the class attributes dictionary
|
|
213
214
|
class_dict = {
|
|
214
215
|
"__annotations__": annotations,
|
|
215
216
|
"__module__": cls.__module__,
|
|
217
|
+
"id": None,
|
|
216
218
|
}
|
|
217
219
|
|
|
218
220
|
# Add default values to class attributes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
|
|
5
|
+
from mindtrace.core import utcnow
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class User(BaseModel):
|
|
9
|
+
name: str
|
|
10
|
+
id: int | None = None
|
|
11
|
+
created_at: datetime = Field(default_factory=utcnow)
|
|
12
|
+
updated_at: datetime = Field(default_factory=utcnow)
|
|
@@ -17,7 +17,7 @@ from mindtrace.core import (
|
|
|
17
17
|
BenchSuiteConfig,
|
|
18
18
|
BenchTestSuite,
|
|
19
19
|
TaskSchema,
|
|
20
|
-
|
|
20
|
+
utcnow_iso,
|
|
21
21
|
)
|
|
22
22
|
from mindtrace.database import MongoMindtraceODM
|
|
23
23
|
from mindtrace.database.testing.suites._models import DatabaseBenchDocument
|
|
@@ -58,7 +58,7 @@ class DatabaseMongoCrudSmokeSuite(BenchTestSuite):
|
|
|
58
58
|
)
|
|
59
59
|
|
|
60
60
|
def execute_bench(self, config: BenchSuiteConfig, reporter: BenchReporter) -> BenchResult:
|
|
61
|
-
started =
|
|
61
|
+
started = utcnow_iso()
|
|
62
62
|
mono = time.perf_counter()
|
|
63
63
|
mongo_backend, mongo_uri, mongo_db_name = resolve_mongo_resources(config)
|
|
64
64
|
odm = MongoMindtraceODM(model_cls=DatabaseBenchDocument, db_uri=mongo_uri, db_name=mongo_db_name)
|
|
@@ -95,7 +95,7 @@ class DatabaseMongoCrudSmokeSuite(BenchTestSuite):
|
|
|
95
95
|
suite_id=config.suite_id,
|
|
96
96
|
status="passed" if reporter.failures == 0 else "failed",
|
|
97
97
|
started_at=started,
|
|
98
|
-
ended_at=
|
|
98
|
+
ended_at=utcnow_iso(),
|
|
99
99
|
duration_seconds=elapsed,
|
|
100
100
|
operations=reporter.operations,
|
|
101
101
|
successes=reporter.successes,
|
|
@@ -17,7 +17,7 @@ from mindtrace.core import (
|
|
|
17
17
|
BenchSuiteConfig,
|
|
18
18
|
BenchTestSuite,
|
|
19
19
|
TaskSchema,
|
|
20
|
-
|
|
20
|
+
utcnow_iso,
|
|
21
21
|
)
|
|
22
22
|
from mindtrace.database import MongoMindtraceODM
|
|
23
23
|
from mindtrace.database.testing.suites._models import DatabaseBenchDocument
|
|
@@ -64,7 +64,7 @@ class DatabaseMongoInsertCeilingSuite(BenchTestSuite):
|
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
async def _run_async(config: BenchSuiteConfig, reporter: BenchReporter) -> BenchResult:
|
|
67
|
-
started =
|
|
67
|
+
started = utcnow_iso()
|
|
68
68
|
mono = time.perf_counter()
|
|
69
69
|
mongo_backend, mongo_uri, mongo_db_name = resolve_mongo_resources(config)
|
|
70
70
|
batch_size = int(config.parameters.get("batch_size", 100))
|
|
@@ -97,7 +97,7 @@ async def _run_async(config: BenchSuiteConfig, reporter: BenchReporter) -> Bench
|
|
|
97
97
|
suite_id=config.suite_id,
|
|
98
98
|
status="passed" if reporter.failures == 0 else "failed",
|
|
99
99
|
started_at=started,
|
|
100
|
-
ended_at=
|
|
100
|
+
ended_at=utcnow_iso(),
|
|
101
101
|
duration_seconds=elapsed,
|
|
102
102
|
operations=reporter.operations * batch_size,
|
|
103
103
|
successes=reporter.successes * batch_size,
|
|
@@ -18,7 +18,7 @@ from mindtrace.core import (
|
|
|
18
18
|
BenchSuiteConfig,
|
|
19
19
|
BenchTestSuite,
|
|
20
20
|
TaskSchema,
|
|
21
|
-
|
|
21
|
+
utcnow_iso,
|
|
22
22
|
)
|
|
23
23
|
from mindtrace.database import MongoMindtraceODM
|
|
24
24
|
from mindtrace.database.testing.suites._models import DatabaseBenchDocument
|
|
@@ -71,7 +71,7 @@ class DatabaseMongoReadCeilingSuite(BenchTestSuite):
|
|
|
71
71
|
|
|
72
72
|
|
|
73
73
|
async def _run_async(config: BenchSuiteConfig, reporter: BenchReporter) -> BenchResult:
|
|
74
|
-
started =
|
|
74
|
+
started = utcnow_iso()
|
|
75
75
|
mono = time.perf_counter()
|
|
76
76
|
mongo_backend, mongo_uri, mongo_db_name = resolve_mongo_resources(config)
|
|
77
77
|
dataset_size = int(config.parameters.get("dataset_size", 1000))
|
|
@@ -115,7 +115,7 @@ async def _run_async(config: BenchSuiteConfig, reporter: BenchReporter) -> Bench
|
|
|
115
115
|
suite_id=config.suite_id,
|
|
116
116
|
status="passed" if reporter.failures == 0 else "failed",
|
|
117
117
|
started_at=started,
|
|
118
|
-
ended_at=
|
|
118
|
+
ended_at=utcnow_iso(),
|
|
119
119
|
duration_seconds=elapsed,
|
|
120
120
|
operations=reporter.operations,
|
|
121
121
|
successes=reporter.successes,
|
|
@@ -18,7 +18,7 @@ from mindtrace.core import (
|
|
|
18
18
|
BenchSuiteConfig,
|
|
19
19
|
BenchTestSuite,
|
|
20
20
|
TaskSchema,
|
|
21
|
-
|
|
21
|
+
utcnow_iso,
|
|
22
22
|
)
|
|
23
23
|
from mindtrace.database import MongoMindtraceODM
|
|
24
24
|
from mindtrace.database.testing.suites._models import DatabaseBenchDocument
|
|
@@ -67,7 +67,7 @@ class DatabaseMongoUpdateCeilingSuite(BenchTestSuite):
|
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
async def _run_async(config: BenchSuiteConfig, reporter: BenchReporter) -> BenchResult:
|
|
70
|
-
started =
|
|
70
|
+
started = utcnow_iso()
|
|
71
71
|
mono = time.perf_counter()
|
|
72
72
|
mongo_backend, mongo_uri, mongo_db_name = resolve_mongo_resources(config)
|
|
73
73
|
dataset_size = int(config.parameters.get("dataset_size", 1000))
|
|
@@ -107,7 +107,7 @@ async def _run_async(config: BenchSuiteConfig, reporter: BenchReporter) -> Bench
|
|
|
107
107
|
suite_id=config.suite_id,
|
|
108
108
|
status="passed" if reporter.failures == 0 else "failed",
|
|
109
109
|
started_at=started,
|
|
110
|
-
ended_at=
|
|
110
|
+
ended_at=utcnow_iso(),
|
|
111
111
|
duration_seconds=elapsed,
|
|
112
112
|
operations=reporter.operations,
|
|
113
113
|
successes=reporter.successes,
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0/mindtrace_database.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mindtrace-database
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
4
4
|
Summary: Database functionality for Mindtrace
|
|
5
5
|
Author: Mindtrace Team
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -11,13 +11,13 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
12
|
License-File: LICENSE
|
|
13
13
|
Requires-Dist: beanie<2,>=1.29.0
|
|
14
|
-
Requires-Dist: mindtrace-core>=0.
|
|
14
|
+
Requires-Dist: mindtrace-core>=0.14.0
|
|
15
15
|
Requires-Dist: pydantic>=2.11.1
|
|
16
16
|
Requires-Dist: redis>=4.0.0
|
|
17
17
|
Requires-Dist: redis-om>=0.3.5
|
|
18
18
|
Requires-Dist: motor>=3.3.0
|
|
19
19
|
Requires-Dist: pymongo>=4.14.0
|
|
20
|
-
Requires-Dist: mindtrace-registry>=0.
|
|
20
|
+
Requires-Dist: mindtrace-registry>=0.14.0
|
|
21
21
|
Dynamic: license-file
|
|
22
22
|
|
|
23
23
|
[](https://pypi.org/project/mindtrace-database/)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mindtrace-database"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.14.0"
|
|
4
4
|
description = "Database functionality for Mindtrace"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -13,13 +13,13 @@ classifiers = [
|
|
|
13
13
|
]
|
|
14
14
|
dependencies = [
|
|
15
15
|
"beanie>=1.29.0, <2",
|
|
16
|
-
"mindtrace-core>=0.
|
|
16
|
+
"mindtrace-core>=0.14.0",
|
|
17
17
|
"pydantic>=2.11.1",
|
|
18
18
|
"redis>=4.0.0",
|
|
19
19
|
"redis-om>=0.3.5",
|
|
20
20
|
"motor>=3.3.0",
|
|
21
21
|
"pymongo>=4.14.0",
|
|
22
|
-
"mindtrace-registry>=0.
|
|
22
|
+
"mindtrace-registry>=0.14.0",
|
|
23
23
|
]
|
|
24
24
|
|
|
25
25
|
[project.entry-points."mindtrace.benchmark_suites"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/backends/mindtrace_odm.py
RENAMED
|
File without changes
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/backends/redis_odm.py
RENAMED
|
File without changes
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/backends/registry_odm.py
RENAMED
|
File without changes
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/core/exceptions.py
RENAMED
|
File without changes
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/testing/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/testing/suites/_models.py
RENAMED
|
File without changes
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace/database/testing/suites/_mongo.py
RENAMED
|
File without changes
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace_database.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace_database.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{mindtrace_database-0.12.0 → mindtrace_database-0.14.0}/mindtrace_database.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|