From 22756bc154fea8cb0cd642dd27d19447de5b00bd Mon Sep 17 00:00:00 2001 From: Rowland Ogwara Date: Fri, 5 Nov 2021 11:04:05 -0500 Subject: [PATCH] DEV-941: use six.ensure_str to fix tag mismatch issue (#373) * DEV-941: use six.ensure_str to fix tag mismatch issue --- .travis.yml | 3 ++- gdcdatamodel/models/versioning.py | 16 +++++++++++++--- setup.py | 1 + test/test_node_tagging.py | 3 ++- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 55d2501b..aa18042f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,5 @@ language: python +dist: bionic python: - 2.7 @@ -11,7 +12,7 @@ addons: postgresql: "13" apt: sources: - - sourceline: deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main 13 + - sourceline: deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main 13 key_url: https://www.postgresql.org/media/keys/ACCC4CF8.asc packages: - postgresql-13 diff --git a/gdcdatamodel/models/versioning.py b/gdcdatamodel/models/versioning.py index b68e0378..78ada1ef 100644 --- a/gdcdatamodel/models/versioning.py +++ b/gdcdatamodel/models/versioning.py @@ -1,6 +1,7 @@ import os import uuid +import six from sqlalchemy import and_, event, select UUID_NAMESPACE_SEED = os.getenv("UUID_NAMESPACE_SEED", "86bb916a-24c5-48e4-8a46-5ea73a379d47") @@ -16,7 +17,7 @@ class TagKeys: def __generate_hash(seed, label): namespace = UUID_NAMESPACE name = "{}-{}".format(seed, label) - return str(uuid.uuid5(namespace, name)) + return six.ensure_str(str(uuid.uuid5(namespace, name))) def compute_tag(node): @@ -26,8 +27,17 @@ def compute_tag(node): Returns: str: computed tag """ - keys = [node.node_id if p == "node_id" else node.props[p] for p in node.tag_properties] - keys += sorted([p.dst.tag or compute_tag(p.dst) for p in node.edges_out if p.label != "relates_to"]) + keys = [ + six.ensure_str(node.node_id if p == "node_id" else node.props[p]) + for p in node.tag_properties + ] + keys += sorted( + [ + six.ensure_str(p.dst.tag or compute_tag(p.dst)) + for p in node.edges_out + if p.label != "relates_to" + ] + ) return __generate_hash(keys, node.label) diff --git a/setup.py b/setup.py index 4841fc84..dbe212bc 100644 --- a/setup.py +++ b/setup.py @@ -9,6 +9,7 @@ setup_requires=["setuptools_scm<6"], packages=find_packages(), install_requires=[ + "six~=1.15", "pytz~=2020.1", "graphviz>=0.4.10,<0.17", "jsonschema~=3.2", diff --git a/test/test_node_tagging.py b/test/test_node_tagging.py index 29df9bc1..8bde0f29 100644 --- a/test/test_node_tagging.py +++ b/test/test_node_tagging.py @@ -1,7 +1,7 @@ import pytest from psqlgraph import PsqlGraphDriver -from gdcdatamodel.models import basic # noqa +from gdcdatamodel.models import basic, versioning # noqa from test.helpers import create_tables, truncate @@ -60,3 +60,4 @@ def test_1(create_samples, bg, node_id, tag, version): node = bg.nodes().get(node_id) assert node.tag == tag assert node.ver == version + assert versioning.compute_tag(node) == node.tag