X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Fmeta.py;fp=sima%2Flib%2Fmeta.py;h=44369a272e8cc51f1313d9b60519e0e59ac4589f;hb=41048503e9b3cf0fdc58e14f35f483889a0b05ae;hp=78c6e790da198bc351e0c58c79a7307b5b5db2c0;hpb=e9ed5c171c9251ef6ae7765b1406e2f5b2cb1c0d;p=mpd-sima.git diff --git a/sima/lib/meta.py b/sima/lib/meta.py index 78c6e79..44369a2 100644 --- a/sima/lib/meta.py +++ b/sima/lib/meta.py @@ -90,9 +90,11 @@ class Meta: if isinstance(other, Meta) and self.mbid and other.mbid: if self.mbid and other.mbid: return self.mbid == other.mbid - else: - return (other.__str__() == self.__str__() or - other.__str__() in self.__aliases) + elif isinstance(other, Meta): + return bool(self.names & other.names) + elif getattr(other, '__str__', None): + # is other.__str__() in self.__name or self.__aliases + return other.__str__() in self.names return False def __hash__(self): @@ -102,10 +104,11 @@ class Meta: def add_alias(self, other): if getattr(other, '__str__', None): - if callable(other.__str__): + if callable(other.__str__) and other.__str__() != self.name: self.__aliases |= {other.__str__()} elif isinstance(other, Meta): - self.__aliases |= other.__aliases + if other.name != self.name: + self.__aliases |= other.__aliases else: raise MetaException('No __str__ method found in {!r}'.format(other))