Source code for dicetables.eventsbases.protodie

"""
The abstract class for any die represented by a set of events
"""
from dicetables.eventsbases.integerevents import IntegerEvents


[docs]class ProtoDie(IntegerEvents): """ This is the basis for all the dice classes. all Die objects need: - get_size() - returns: int > 0 - get_weight() - returns: int >= 0 - weight_info() - returns: str - multiply_str() - returns: str - get_dict() - returns: {int: int > 0} - __repr__ - __str__ """ def __init__(self): super(ProtoDie, self).__init__() def get_size(self) -> int: raise NotImplementedError def get_weight(self) -> int: raise NotImplementedError def get_dict(self): super(ProtoDie, self).get_dict() def weight_info(self) -> str: """return detailed info of how the die is weighted""" raise NotImplementedError def multiply_str(self, number: int) -> str: """return a string that is the die string multiplied by a number. i.e., D6+1 times 3 is '3D6+3' """ raise NotImplementedError def __str__(self): raise NotImplementedError def __repr__(self): raise NotImplementedError def __hash__(self): return hash('hash of {!r}, {}, {}, {}'.format(self, self.get_size(), self.get_weight(), self.get_dict())) def __lt__(self, other): return ( (self.get_size(), self.get_weight(), sorted(self.get_dict().items()), repr(self)) < (other.get_size(), other.get_weight(), sorted(other.get_dict().items()), repr(other)) ) def __eq__(self, other): return (super(ProtoDie, self).__eq__(other) and (self.get_size(), self.get_weight(), repr(self)) == (other.get_size(), other.get_weight(), repr(other)) ) def __le__(self, other): return self < other or self == other def __gt__(self, other): return not self <= other def __ge__(self, other): return self == other or self > other