| # This may be loaded as a module, in the current __main__ module, |
| # or in another __main__ module. |
| |
| |
| ####################################### |
| # functions and generators |
| |
| from test._code_definitions import * |
| |
| |
| ####################################### |
| # classes |
| |
| class Spam: |
| # minimal |
| pass |
| |
| |
| class SpamOkay: |
| def okay(self): |
| return True |
| |
| |
| class SpamFull: |
| |
| a: object |
| b: object |
| c: object |
| |
| @staticmethod |
| def staticmeth(cls): |
| return True |
| |
| @classmethod |
| def classmeth(cls): |
| return True |
| |
| def __new__(cls, *args, **kwargs): |
| return super().__new__(cls) |
| |
| def __init__(self, a, b, c): |
| self.a = a |
| self.b = b |
| self.c = c |
| |
| # __repr__ |
| # __str__ |
| # ... |
| |
| def __eq__(self, other): |
| if not isinstance(other, SpamFull): |
| return NotImplemented |
| return (self.a == other.a and |
| self.b == other.b and |
| self.c == other.c) |
| |
| @property |
| def prop(self): |
| return True |
| |
| |
| class SubSpamFull(SpamFull): |
| ... |
| |
| |
| class SubTuple(tuple): |
| ... |
| |
| |
| def class_eggs_inner(): |
| class EggsNested: |
| ... |
| return EggsNested |
| EggsNested = class_eggs_inner() |
| |
| |
| TOP_CLASSES = { |
| Spam: (), |
| SpamOkay: (), |
| SpamFull: (1, 2, 3), |
| SubSpamFull: (1, 2, 3), |
| SubTuple: ([1, 2, 3],), |
| } |
| CLASSES_WITHOUT_EQUALITY = [ |
| Spam, |
| SpamOkay, |
| ] |
| BUILTIN_SUBCLASSES = [ |
| SubTuple, |
| ] |
| NESTED_CLASSES = { |
| EggsNested: (), |
| } |
| CLASSES = { |
| **TOP_CLASSES, |
| **NESTED_CLASSES, |
| } |
| |
| |
| ####################################### |
| # exceptions |
| |
| class MimimalError(Exception): |
| pass |
| |
| |
| class RichError(Exception): |
| def __init__(self, msg, value=None): |
| super().__init__(msg, value) |
| self.msg = msg |
| self.value = value |
| |
| def __eq__(self, other): |
| if not isinstance(other, RichError): |
| return NotImplemented |
| if self.msg != other.msg: |
| return False |
| if self.value != other.value: |
| return False |
| return True |