@@ -40,6 +40,62 @@ def __init__(self, table: Table, node: Node):
4040 self ._node = node
4141 self ._data = RecordData (table , node )
4242
43+ def __str__ (self ) -> str :
44+ column_values = serialise_record_column_values (self , max_columns = None )
45+ return f"<Record { column_values } >"
46+
47+ def __repr__ (self ) -> str :
48+ column_values = serialise_record_column_values (self )
49+ return f"<Record { column_values } >"
50+
51+ def __hash__ (self ) -> int :
52+ return hash ((self ._table , self ._node ))
53+
54+ def __getitem__ (self , attr : str ) -> RecordValue :
55+ return self .get (attr )
56+
57+ def __getattr__ (self , attr : str ) -> RecordValue :
58+ try :
59+ return self .get (attr )
60+ except KeyError :
61+ return object .__getattribute__ (self , attr )
62+
63+ def __eq__ (self , value : object ) -> bool :
64+ if not isinstance (value , Record ):
65+ return False
66+
67+ return self ._node .key == value ._node .key
68+
69+ def __ne__ (self , value : object ) -> bool :
70+ if not isinstance (value , Record ):
71+ return False
72+
73+ return self ._node .key != value ._node .key
74+
75+ def __lt__ (self , value : object ) -> bool :
76+ if not isinstance (value , Record ):
77+ return False
78+
79+ return self ._node .key < value ._node .key
80+
81+ def __le__ (self , value : object ) -> bool :
82+ if not isinstance (value , Record ):
83+ return False
84+
85+ return self ._node .key <= value ._node .key
86+
87+ def __gt__ (self , value : object ) -> bool :
88+ if not isinstance (value , Record ):
89+ return False
90+
91+ return self ._node .key > value ._node .key
92+
93+ def __ge__ (self , value : object ) -> bool :
94+ if not isinstance (value , Record ):
95+ return False
96+
97+ return self ._node .key >= value ._node .key
98+
4399 def get (self , attr : str , raw : bool = False ) -> RecordValue :
44100 """Retrieve a value from the record with the given name.
45101
@@ -55,23 +111,6 @@ def get(self, attr: str, raw: bool = False) -> RecordValue:
55111 def as_dict (self , raw : bool = False ) -> dict [str , RecordValue ]:
56112 return self ._data .as_dict (raw )
57113
58- def __getitem__ (self , attr : str ) -> RecordValue :
59- return self .get (attr )
60-
61- def __getattr__ (self , attr : str ) -> RecordValue :
62- try :
63- return self .get (attr )
64- except KeyError :
65- return object .__getattribute__ (self , attr )
66-
67- def __str__ (self ) -> str :
68- column_values = serialise_record_column_values (self , max_columns = None )
69- return f"<Record { column_values } >"
70-
71- def __repr__ (self ) -> str :
72- column_values = serialise_record_column_values (self )
73- return f"<Record { column_values } >"
74-
75114
76115class RecordData :
77116 """Record class for parsing and interacting with the on-disk record format.
0 commit comments