_common.py 800 B

123456789101112131415161718192021222324252627282930313233
  1. """
  2. Common code used in multiple modules.
  3. """
  4. class weekday(object):
  5. __slots__ = ["weekday", "n"]
  6. def __init__(self, weekday, n=None):
  7. self.weekday = weekday
  8. self.n = n
  9. def __call__(self, n):
  10. if n == self.n:
  11. return self
  12. else:
  13. return self.__class__(self.weekday, n)
  14. def __eq__(self, other):
  15. try:
  16. if self.weekday != other.weekday or self.n != other.n:
  17. return False
  18. except AttributeError:
  19. return False
  20. return True
  21. __hash__ = None
  22. def __repr__(self):
  23. s = ("MO", "TU", "WE", "TH", "FR", "SA", "SU")[self.weekday]
  24. if not self.n:
  25. return s
  26. else:
  27. return "%s(%+d)" % (s, self.n)