mirror of
https://github.com/mandiant/capa.git
synced 2025-12-12 15:49:46 -08:00
features: make features implement __lt__
This commit is contained in:
@@ -20,7 +20,7 @@ class BasicBlock(Feature):
|
||||
return ""
|
||||
|
||||
def freeze_serialize(self):
|
||||
return (self.__class__.__name__, [])
|
||||
return (self.__class__.__name__, ())
|
||||
|
||||
@classmethod
|
||||
def freeze_deserialize(cls, args):
|
||||
|
||||
@@ -107,6 +107,9 @@ class Feature(abc.ABC):
|
||||
def __hash__(self):
|
||||
return hash((self.name, self.value))
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.freeze_serialize() < other.freeze_serialize()
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.name == other.name and self.value == other.value
|
||||
|
||||
@@ -137,7 +140,7 @@ class Feature(abc.ABC):
|
||||
return Result(self in ctx, self, [], locations=ctx.get(self, set()))
|
||||
|
||||
def freeze_serialize(self):
|
||||
return (self.__class__.__name__, [self.value])
|
||||
return (self.__class__.__name__, (self.value, ))
|
||||
|
||||
@classmethod
|
||||
def freeze_deserialize(cls, args):
|
||||
@@ -374,7 +377,7 @@ class Bytes(Feature):
|
||||
return hex_string(bytes_to_str(self.value))
|
||||
|
||||
def freeze_serialize(self):
|
||||
return (self.__class__.__name__, [bytes_to_str(self.value).upper()])
|
||||
return (self.__class__.__name__, (bytes_to_str(self.value).upper(), ))
|
||||
|
||||
@classmethod
|
||||
def freeze_deserialize(cls, args):
|
||||
|
||||
@@ -68,7 +68,7 @@ class _Operand(Feature, abc.ABC):
|
||||
return super().__eq__(other) and self.index == other.index
|
||||
|
||||
def freeze_serialize(self):
|
||||
return (self.__class__.__name__, [self.index, self.value])
|
||||
return (self.__class__.__name__, (self.index, self.value))
|
||||
|
||||
|
||||
class OperandNumber(_Operand):
|
||||
|
||||
@@ -15,7 +15,6 @@ import capa.features.common
|
||||
import capa.render.result_document as rd
|
||||
from capa.rules import RuleSet
|
||||
from capa.engine import MatchResults
|
||||
from capa.features.freeze import deserialize_address
|
||||
|
||||
|
||||
def render_locations(ostream, match):
|
||||
|
||||
@@ -62,8 +62,8 @@ import capa.engine
|
||||
import capa.helpers
|
||||
import capa.features
|
||||
import capa.exceptions
|
||||
import capa.render.verbose
|
||||
import capa.render.utils as rutils
|
||||
import capa.render.verbose
|
||||
import capa.features.freeze
|
||||
import capa.render.result_document as rd
|
||||
from capa.helpers import get_file_taste
|
||||
|
||||
Reference in New Issue
Block a user