-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- reset entity counter for property graph nodes and relationships for each cypher statement to make them easier to test - add _parent object attr to Tags - handle generating match clauses for entities that rely on other entities for their uniqueness (props, edges, tags) - add tests for diff changelog to test_014diff_changelog.py - update versioning tests to turn entity versioning off at the end of test so it doesn't affect subsequent tests involving entities - bump version from 0.2.4 to 0.2.5 - update dependency versions identified as security risks by dependabot
- Loading branch information
1 parent
055aad5
commit cc0a16a
Showing
7 changed files
with
1,929 additions
and
1,374 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
[project] | ||
name = "bento-meta" | ||
version = "0.2.4" | ||
version = "0.2.5" | ||
description = "Python drivers for Bento Metamodel Database" | ||
authors = [ | ||
{ name="Mark A. Jensen", email = "[email protected]"}, | ||
|
@@ -20,7 +20,7 @@ classifiers = [ | |
|
||
[tool.poetry] | ||
name = "bento-meta" | ||
version = "0.2.4" | ||
version = "0.2.5" | ||
description = "Python drivers for Bento Metamodel Database" | ||
authors = [ | ||
"Mark A. Jensen <[email protected]>", | ||
|
@@ -37,7 +37,7 @@ PyYAML = ">=6.0.1" | |
delfick-project = "^0.7.9" | ||
neo4j = ">=4.0" | ||
nanoid = "^2.0.0" | ||
requests = "^2.28.1" | ||
requests = "2.31.0" | ||
tqdm = "^4.64.1" | ||
setuptools = "^65.4.1" | ||
numpy = {version = "^1.23.5", optional = true} | ||
|
@@ -46,6 +46,10 @@ spacy = {version = "^3.4.3", optional = true} | |
click = {version = "^8.1.3", optional = true} | ||
liquichange = "^0.2.1" | ||
bento-mdf = "^0.9.1" | ||
tornado = "6.3.3" | ||
cryptography = "41.0.3" | ||
certifi = "2023.7.22" | ||
markdown-it-py = "2.2.0" | ||
|
||
[tool.poetry.extras] | ||
Tools = ["click", "numpy", "pandas", "spacy", "liquichange"] | ||
|
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,106 +1,112 @@ | ||
import re | ||
import sys | ||
sys.path.insert(0,'.') | ||
sys.path.insert(0,'..') | ||
|
||
sys.path.insert(0, ".") | ||
sys.path.insert(0, "..") | ||
from pdb import set_trace | ||
|
||
import pytest | ||
from bento_meta.entity import * | ||
from bento_meta.objects import * | ||
from pdb import set_trace | ||
|
||
|
||
def test_object_versioning(): | ||
Entity.versioning(True) | ||
assert Entity.versioning_on | ||
Entity.set_version_count(3) | ||
assert Entity.version_count==3 | ||
Entity.set_version_count(1) | ||
# r1 | ||
# / \ | ||
# n1 n2 | ||
# /|\ | ||
# p1 p2 p3 | ||
n1=Node({"handle":"n1"}) | ||
n2=Node({"handle":"n2"}) | ||
r1=Edge({"handle":"r1","src":n1,"dst":n2}) | ||
p1=Property({"handle":"p1"}) | ||
p2=Property({"handle":"p2"}) | ||
p3=Property({"handle":"p3"}) | ||
n2.props['p1']=p1 | ||
n2.props['p2']=p2 | ||
n2.props['p3']=p3 | ||
|
||
assert r1.src == n1 | ||
assert r1.dst == n2 | ||
assert n2.props['p1'] == p1 | ||
|
||
for e in [n1,n2,r1,p1,p2,p3]: | ||
assert e._from==1 | ||
assert not e._to | ||
|
||
dup = n1.dup() | ||
assert dup != n1 | ||
Entity.set_version_count(2) # bump version | ||
|
||
# r1 r21 | ||
# / \ / \ | ||
# n1 n2 n21 | ||
# /|\ | | ||
# p1 p2 p3 p21 | ||
|
||
n21=Node({"handle":"n21"}) | ||
r21=Edge({"handle":"r21","src":n2,"dst":n21}) | ||
p21=Property({"handle":"p21"}) | ||
n21.props['p21']=p21 | ||
assert r1.dst == r21.src | ||
|
||
for e in [r21,n21,p21]: | ||
assert e._from == 2 | ||
assert not e._to | ||
|
||
for e in [n1,n2,r1,p1,p2,p3]: | ||
assert e._from == 1 | ||
|
||
Entity.set_version_count(3) | ||
|
||
# r1 r21 | ||
# / \ / \ | ||
# n1 n2 n21 | ||
# /|\ | | ||
# p1 p2 p3 p21 | ||
|
||
n31=Node({"handle":"n31"}) | ||
n21.delete() | ||
r21.dst=n31 | ||
assert r21.dst == n31 | ||
assert r21._prev | ||
assert r21._prev._next == r21 | ||
assert r21._prev.handle == "r21" | ||
assert r21._prev.dst == n21 | ||
|
||
n1._commit = "blarf" | ||
assert n1._commit == "blarf" | ||
assert not n1._prev._commit # prev version attr still empth | ||
assert not n1._prev._prev # only two versions of n1 | ||
assert r1._prev # changing n1 induced a change on r1 (owner of n1) | ||
assert r1.src._commit == "blarf" # latest r1 src is the latest n1 | ||
assert not r1._prev.src._commit # old r1 src, old n1, has empty category attr | ||
assert not r1._prev._prev # only 2 versions of r1 | ||
prev = n1._prev | ||
n1.model="test2" # change another attr shouldn't dup | ||
assert n1._prev == prev # and it didn't dup | ||
assert prev._next == n1 # yep | ||
|
||
Entity.set_version_count(4) | ||
# r1 r21 -- | ||
# / \ / \ | ||
# n1* n2 -- n31 | ||
# /|\ \ / | ||
# p1 p2 p3 p41 p21 | ||
|
||
p41=Property({"handle":"p41"}) | ||
n2.props['p41']=p41 | ||
assert n2._prev | ||
assert not 'p41' in n2._prev.props | ||
assert n2.props['p41'] == p41 | ||
|
||
Entity.versioning(True) | ||
assert Entity.versioning_on | ||
Entity.set_version_count(3) | ||
assert Entity.version_count == 3 | ||
Entity.set_version_count(1) | ||
# r1 | ||
# / \ | ||
# n1 n2 | ||
# /|\ | ||
# p1 p2 p3 | ||
n1 = Node({"handle": "n1"}) | ||
n2 = Node({"handle": "n2"}) | ||
r1 = Edge({"handle": "r1", "src": n1, "dst": n2}) | ||
p1 = Property({"handle": "p1"}) | ||
p2 = Property({"handle": "p2"}) | ||
p3 = Property({"handle": "p3"}) | ||
n2.props["p1"] = p1 | ||
n2.props["p2"] = p2 | ||
n2.props["p3"] = p3 | ||
|
||
assert r1.src == n1 | ||
assert r1.dst == n2 | ||
assert n2.props["p1"] == p1 | ||
|
||
for e in [n1, n2, r1, p1, p2, p3]: | ||
assert e._from == 1 | ||
assert not e._to | ||
|
||
dup = n1.dup() | ||
assert dup != n1 | ||
Entity.set_version_count(2) # bump version | ||
|
||
# r1 r21 | ||
# / \ / \ | ||
# n1 n2 n21 | ||
# /|\ | | ||
# p1 p2 p3 p21 | ||
|
||
n21 = Node({"handle": "n21"}) | ||
r21 = Edge({"handle": "r21", "src": n2, "dst": n21}) | ||
p21 = Property({"handle": "p21"}) | ||
n21.props["p21"] = p21 | ||
assert r1.dst == r21.src | ||
|
||
for e in [r21, n21, p21]: | ||
assert e._from == 2 | ||
assert not e._to | ||
|
||
for e in [n1, n2, r1, p1, p2, p3]: | ||
assert e._from == 1 | ||
|
||
Entity.set_version_count(3) | ||
|
||
# r1 r21 | ||
# / \ / \ | ||
# n1 n2 n21 | ||
# /|\ | | ||
# p1 p2 p3 p21 | ||
|
||
n31 = Node({"handle": "n31"}) | ||
n21.delete() | ||
r21.dst = n31 | ||
assert r21.dst == n31 | ||
assert r21._prev | ||
assert r21._prev._next == r21 | ||
assert r21._prev.handle == "r21" | ||
assert r21._prev.dst == n21 | ||
|
||
n1._commit = "blarf" | ||
assert n1._commit == "blarf" | ||
assert not n1._prev._commit # prev version attr still empth | ||
assert not n1._prev._prev # only two versions of n1 | ||
assert r1._prev # changing n1 induced a change on r1 (owner of n1) | ||
assert r1.src._commit == "blarf" # latest r1 src is the latest n1 | ||
assert not r1._prev.src._commit # old r1 src, old n1, has empty category attr | ||
assert not r1._prev._prev # only 2 versions of r1 | ||
prev = n1._prev | ||
n1.model = "test2" # change another attr shouldn't dup | ||
assert n1._prev == prev # and it didn't dup | ||
assert prev._next == n1 # yep | ||
|
||
Entity.set_version_count(4) | ||
# r1 r21 -- | ||
# / \ / \ | ||
# n1* n2 -- n31 | ||
# /|\ \ / | ||
# p1 p2 p3 p41 p21 | ||
|
||
p41 = Property({"handle": "p41"}) | ||
n2.props["p41"] = p41 | ||
assert n2._prev | ||
assert not "p41" in n2._prev.props | ||
assert n2.props["p41"] == p41 | ||
Entity.versioning(False) | ||
assert not Entity.versioning_on | ||
|
||
|
||
if __name__ == "__main__": | ||
test_object_versioning() | ||
test_object_versioning() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.