ic-python-db 0.7.3__tar.gz → 0.7.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.
- {ic_python_db-0.7.3/ic_python_db.egg-info → ic_python_db-0.7.4}/PKG-INFO +1 -1
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/__init__.py +1 -1
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/entity.py +5 -5
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/properties.py +4 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4/ic_python_db.egg-info}/PKG-INFO +1 -1
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/pyproject.toml +1 -1
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/setup.py +1 -1
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/LICENSE +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/MANIFEST.in +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/README.md +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/_cdk.py +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/constants.py +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/context.py +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/db_engine.py +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/hooks.py +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/mixins.py +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/py.typed +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/storage.py +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db/system_time.py +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db.egg-info/SOURCES.txt +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db.egg-info/dependency_links.txt +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/ic_python_db.egg-info/top_level.txt +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/requirements-dev.txt +0 -0
- {ic_python_db-0.7.3 → ic_python_db-0.7.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ic_python_db
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.4
|
|
4
4
|
Summary: A lightweight key-value database written in Python, intended for use on the Internet Computer (IC)
|
|
5
5
|
Home-page: https://github.com/smart-social-contracts/ic-python-db
|
|
6
6
|
Author: Smart Social Contracts
|
|
@@ -386,10 +386,12 @@ class Entity:
|
|
|
386
386
|
# Create instance first
|
|
387
387
|
entity = cls(**data, _loaded=True)
|
|
388
388
|
|
|
389
|
-
#
|
|
390
|
-
|
|
389
|
+
# Restore legacy "relations" block if present in serialized data.
|
|
390
|
+
# Otherwise keep the _relations that __init__ already populated
|
|
391
|
+
# via relationship descriptors (OneToMany, ManyToOne, etc.).
|
|
391
392
|
if "relations" in data:
|
|
392
393
|
relations_data = data.pop("relations")
|
|
394
|
+
relations = {}
|
|
393
395
|
for rel_name, rel_refs in relations_data.items():
|
|
394
396
|
relations[rel_name] = []
|
|
395
397
|
for ref in rel_refs:
|
|
@@ -400,9 +402,7 @@ class Entity:
|
|
|
400
402
|
)
|
|
401
403
|
if related:
|
|
402
404
|
relations[rel_name].append(related)
|
|
403
|
-
|
|
404
|
-
# Set relations after loading
|
|
405
|
-
entity._relations = relations
|
|
405
|
+
entity._relations = relations
|
|
406
406
|
|
|
407
407
|
return entity
|
|
408
408
|
|
|
@@ -450,6 +450,8 @@ class OneToOne(Relation[E]):
|
|
|
450
450
|
|
|
451
451
|
# Get current value if any
|
|
452
452
|
current = self.__get__(obj)
|
|
453
|
+
if current is value:
|
|
454
|
+
return
|
|
453
455
|
if current is not None:
|
|
454
456
|
# Remove existing relation
|
|
455
457
|
obj.remove_relation(self.name, self.reverse_name, current)
|
|
@@ -458,6 +460,8 @@ class OneToOne(Relation[E]):
|
|
|
458
460
|
existing = value.get_relations(self.reverse_name)
|
|
459
461
|
if existing:
|
|
460
462
|
existing_entity = existing[0]
|
|
463
|
+
if existing_entity is obj:
|
|
464
|
+
return
|
|
461
465
|
# Remove the existing relation from both sides
|
|
462
466
|
existing_entity.remove_relation(self.name, self.reverse_name, value)
|
|
463
467
|
value.remove_relation(self.reverse_name, self.name, existing_entity)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ic_python_db
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.4
|
|
4
4
|
Summary: A lightweight key-value database written in Python, intended for use on the Internet Computer (IC)
|
|
5
5
|
Home-page: https://github.com/smart-social-contracts/ic-python-db
|
|
6
6
|
Author: Smart Social Contracts
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ic_python_db"
|
|
7
|
-
version = "0.7.
|
|
7
|
+
version = "0.7.4"
|
|
8
8
|
description = "A lightweight key-value database written in Python, intended for use on the Internet Computer (IC)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
@@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
|
|
|
5
5
|
|
|
6
6
|
setup(
|
|
7
7
|
name="ic_python_db",
|
|
8
|
-
version="0.7.
|
|
8
|
+
version="0.7.4",
|
|
9
9
|
author="Smart Social Contracts",
|
|
10
10
|
author_email="smartsocialcontracts@gmail.com",
|
|
11
11
|
description="A lightweight key-value database with entity relationships and audit logging",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|