@@ -116,33 +116,6 @@ def __init__(
116116 self .properties = properties or () # type:ignore[assignment]
117117 self .external_references = external_references or () # type:ignore[assignment]
118118
119- def __comparable_tuple (self ) -> _ComparableTuple :
120- # all properties are optional - so need to compare all, in hope that one is unique
121- return _ComparableTuple ((
122- self .bom_ref , self .identifier ,
123- self .title , self .text ,
124- _ComparableTuple (self .descriptions ),
125- _ComparableTuple (self .open_cre ), self .parent , _ComparableTuple (self .properties ),
126- _ComparableTuple (self .external_references )
127- ))
128-
129- def __lt__ (self , other : Any ) -> bool :
130- if isinstance (other , Requirement ):
131- return self .__comparable_tuple () < other .__comparable_tuple ()
132- return NotImplemented
133-
134- def __eq__ (self , other : object ) -> bool :
135- if isinstance (other , Requirement ):
136- return self .__comparable_tuple () == other .__comparable_tuple ()
137- return False
138-
139- def __hash__ (self ) -> int :
140- return hash (self .__comparable_tuple ())
141-
142- def __repr__ (self ) -> str :
143- return f'<Requirement bom-ref={ self ._bom_ref } , identifier={ self .identifier } , title={ self .title } , ' \
144- f'text={ self .text } , parent={ self .parent } >'
145-
146119 @property
147120 @serializable .json_name ('bom-ref' )
148121 @serializable .type_mapping (BomRef )
@@ -280,6 +253,33 @@ def external_references(self) -> 'SortedSet[ExternalReference]':
280253 def external_references (self , external_references : Iterable [ExternalReference ]) -> None :
281254 self ._external_references = SortedSet (external_references )
282255
256+ def __comparable_tuple (self ) -> _ComparableTuple :
257+ # all properties are optional - so need to compare all, in hope that one is unique
258+ return _ComparableTuple ((
259+ self .bom_ref , self .identifier ,
260+ self .title , self .text ,
261+ _ComparableTuple (self .descriptions ),
262+ _ComparableTuple (self .open_cre ), self .parent , _ComparableTuple (self .properties ),
263+ _ComparableTuple (self .external_references )
264+ ))
265+
266+ def __lt__ (self , other : Any ) -> bool :
267+ if isinstance (other , Requirement ):
268+ return self .__comparable_tuple () < other .__comparable_tuple ()
269+ return NotImplemented
270+
271+ def __eq__ (self , other : object ) -> bool :
272+ if isinstance (other , Requirement ):
273+ return self .__comparable_tuple () == other .__comparable_tuple ()
274+ return False
275+
276+ def __hash__ (self ) -> int :
277+ return hash (self .__comparable_tuple ())
278+
279+ def __repr__ (self ) -> str :
280+ return f'<Requirement bom-ref={ self ._bom_ref } , identifier={ self .identifier } , title={ self .title } , ' \
281+ f'text={ self .text } , parent={ self .parent } >'
282+
283283
284284@serializable .serializable_class
285285class Level :
@@ -301,29 +301,6 @@ def __init__(
301301 self .description = description
302302 self .requirements = requirements or () # type:ignore[assignment]
303303
304- def __comparable_tuple (self ) -> _ComparableTuple :
305- # all properties are optional - so need to compare all, in hope that one is unique
306- return _ComparableTuple ((
307- self .bom_ref , self .identifier , self .title , self .description , _ComparableTuple (self .requirements )
308- ))
309-
310- def __lt__ (self , other : Any ) -> bool :
311- if isinstance (other , Level ):
312- return self .__comparable_tuple () < other .__comparable_tuple ()
313- return NotImplemented
314-
315- def __eq__ (self , other : object ) -> bool :
316- if isinstance (other , Level ):
317- return self .__comparable_tuple () == other .__comparable_tuple ()
318- return False
319-
320- def __hash__ (self ) -> int :
321- return hash (self .__comparable_tuple ())
322-
323- def __repr__ (self ) -> str :
324- return f'<Level bom-ref={ self .bom_ref } , identifier={ self .identifier } , title={ self .title } , ' \
325- f'description={ self .description } >'
326-
327304 @property
328305 @serializable .json_name ('bom-ref' )
329306 @serializable .type_mapping (BomRef )
@@ -393,6 +370,29 @@ def requirements(self, requirements: Iterable[Union[str, BomRef]]) -> None:
393370 self ._requirements = SortedSet (map (_bom_ref_from_str , # type: ignore[arg-type]
394371 requirements ))
395372
373+ def __comparable_tuple (self ) -> _ComparableTuple :
374+ # all properties are optional - so need to compare all, in hope that one is unique
375+ return _ComparableTuple ((
376+ self .bom_ref , self .identifier , self .title , self .description , _ComparableTuple (self .requirements )
377+ ))
378+
379+ def __lt__ (self , other : Any ) -> bool :
380+ if isinstance (other , Level ):
381+ return self .__comparable_tuple () < other .__comparable_tuple ()
382+ return NotImplemented
383+
384+ def __eq__ (self , other : object ) -> bool :
385+ if isinstance (other , Level ):
386+ return self .__comparable_tuple () == other .__comparable_tuple ()
387+ return False
388+
389+ def __hash__ (self ) -> int :
390+ return hash (self .__comparable_tuple ())
391+
392+ def __repr__ (self ) -> str :
393+ return f'<Level bom-ref={ self .bom_ref } , identifier={ self .identifier } , title={ self .title } , ' \
394+ f'description={ self .description } >'
395+
396396
397397@serializable .serializable_class
398398class Standard :
@@ -421,32 +421,6 @@ def __init__(
421421 self .levels = levels or () # type:ignore[assignment]
422422 self .external_references = external_references or () # type:ignore[assignment]
423423
424- def __comparable_tuple (self ) -> _ComparableTuple :
425- # all properties are optional - so need to apply all, in hope that one is unique
426- return _ComparableTuple ((
427- self .bom_ref ,
428- self .name , self .version , self .description , self .owner ,
429- _ComparableTuple (self .requirements ), _ComparableTuple (self .levels ),
430- _ComparableTuple (self .external_references )
431- ))
432-
433- def __lt__ (self , other : Any ) -> bool :
434- if isinstance (other , Standard ):
435- return self .__comparable_tuple () < other .__comparable_tuple ()
436- return NotImplemented
437-
438- def __eq__ (self , other : object ) -> bool :
439- if isinstance (other , Standard ):
440- return self .__comparable_tuple () == other .__comparable_tuple ()
441- return False
442-
443- def __hash__ (self ) -> int :
444- return hash (self .__comparable_tuple ())
445-
446- def __repr__ (self ) -> str :
447- return f'<Standard bom-ref={ self .bom_ref } , name={ self .name } , version={ self .version } , ' \
448- f'description={ self .description } , owner={ self .owner } >'
449-
450424 @property
451425 @serializable .json_name ('bom-ref' )
452426 @serializable .type_mapping (BomRef )
@@ -556,6 +530,32 @@ def external_references(self) -> 'SortedSet[ExternalReference]':
556530 def external_references (self , external_references : Iterable [ExternalReference ]) -> None :
557531 self ._external_references = SortedSet (external_references )
558532
533+ def __comparable_tuple (self ) -> _ComparableTuple :
534+ # all properties are optional - so need to apply all, in hope that one is unique
535+ return _ComparableTuple ((
536+ self .bom_ref ,
537+ self .name , self .version , self .description , self .owner ,
538+ _ComparableTuple (self .requirements ), _ComparableTuple (self .levels ),
539+ _ComparableTuple (self .external_references )
540+ ))
541+
542+ def __lt__ (self , other : Any ) -> bool :
543+ if isinstance (other , Standard ):
544+ return self .__comparable_tuple () < other .__comparable_tuple ()
545+ return NotImplemented
546+
547+ def __eq__ (self , other : object ) -> bool :
548+ if isinstance (other , Standard ):
549+ return self .__comparable_tuple () == other .__comparable_tuple ()
550+ return False
551+
552+ def __hash__ (self ) -> int :
553+ return hash (self .__comparable_tuple ())
554+
555+ def __repr__ (self ) -> str :
556+ return f'<Standard bom-ref={ self .bom_ref } , name={ self .name } , version={ self .version } , ' \
557+ f'description={ self .description } , owner={ self .owner } >'
558+
559559
560560@serializable .serializable_class (name = 'definitions' )
561561class Definitions :
0 commit comments