Skip to content

Commit

Permalink
Merge pull request #15 from WarpCloud/graph_type_hash
Browse files Browse the repository at this point in the history
- add __hash__ and __eq__ to GraphElement and Path
  • Loading branch information
zhipwang authored Oct 30, 2024
2 parents 7b244e0 + dfa51c6 commit 88d8d41
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions pystellardb/graph_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import json
import logging
import binascii
from typing import cast

_logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -46,6 +47,21 @@ def setRowKeyHexString(self, rowkey):

def getRowKeyHexString(self):
return self._rowKeyHexString

def __hash__(self):
if self._rowKeyHexString:
return hash(self._rowKeyHexString)
else:
return hash(self._fields)

def __eq__(self, value):
if isinstance(value, GraphElement):
if self._rowKeyHexString:
return self._rowKeyHexString == value._rowKeyHexString
else:
return self._fields == value._fields
else:
return False


class Vertex(GraphElement):
Expand Down Expand Up @@ -292,6 +308,22 @@ def length(self):

def __str__(self):
return str([str(entry) for entry in self._elems])

def __hash__(self):
rks = []
for elem in self._elems:
rks.append(cast(GraphElement, elem).getRowKeyHexString())

return hash(tuple(rks))

def __eq__(self, value):
if isinstance(value, Path):
if self.length() == value.length():
return self.getElements() == value.getElements()
else:
return False
else:
return False

@staticmethod
def parsePathFromJson(schema, json_str):
Expand Down

0 comments on commit 88d8d41

Please sign in to comment.