utils.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from datetime import datetime
  2. import numpy
  3. def floor_datetime(dt, duration):
  4. return datetime.fromtimestamp(dt.timestamp() - dt.timestamp() % duration)
  5. def default_json(x):
  6. if hasattr(x, "tolist"):
  7. return x.tolist()
  8. if hasattr(x, "isoformat"):
  9. return x.isoformat()
  10. return x
  11. def parse_date(text, default):
  12. if not text:
  13. return default
  14. from dateutil.parser import parse
  15. return parse(text)
  16. def _format_number(n):
  17. if n == 0:
  18. return "0"
  19. power = int(numpy.log10(abs(n)))
  20. if power >= 6:
  21. n = n / 1000000
  22. if n >= 10:
  23. n = str(int(n))
  24. else:
  25. n = "%.1f" % n
  26. if n.endswith("0"):
  27. n = n[:-2]
  28. suffix = "M"
  29. elif power >= 3:
  30. n = n / 1000
  31. if n >= 10:
  32. n = str(int(n))
  33. else:
  34. n = "%.1f" % n
  35. if n.endswith("0"):
  36. n = n[:-2]
  37. suffix = "K"
  38. else:
  39. n = str(n)
  40. suffix = ""
  41. return n + suffix