Only write repr as str will invoke it implicitly

This commit is contained in:
Jacob Bom 2017-06-20 21:41:23 +02:00
parent dba4739f76
commit 6cc84b2c32

View file

@ -68,15 +68,13 @@ class BaseFilter(object):
def __invert__(self):
return InvertedFilter(self)
def __str__(self):
def __repr__(self):
# Do not rely on classes overwriting __init__ to set a name
# so we can keep backwards compatibility
if not hasattr(self, 'name') or self.name is None:
self.name = self.__class__.__name__
return self.name
__repr__ = __str__
def filter(self, message):
raise NotImplementedError
@ -95,11 +93,9 @@ class InvertedFilter(BaseFilter):
def filter(self, message):
return not self.f(message)
def __str__(self):
def __repr__(self):
return "<inverted {}>".format(self.f)
__repr__ = __str__
class MergedFilter(BaseFilter):
"""Represents a filter consisting of two other filters.
@ -122,12 +118,10 @@ class MergedFilter(BaseFilter):
elif self.or_filter:
return self.base_filter(message) or self.or_filter(message)
def __str__(self):
def __repr__(self):
return "<{} {} {}>".format(self.base_filter, "and" if self.and_filter else "or",
self.and_filter or self.or_filter)
__repr__ = __str__
class Filters(object):
"""