_utils.py 954 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import json
  2. from decimal import Decimal, ROUND_HALF_UP
  3. def normalize_scalar(value: object) -> object:
  4. if isinstance(value, Decimal):
  5. return float(value)
  6. return value
  7. def round_weight(value: object) -> float | None:
  8. if value is None:
  9. return None
  10. decimal_value = Decimal(str(value)).quantize(
  11. Decimal("0.0001"),
  12. rounding=ROUND_HALF_UP,
  13. )
  14. return float(decimal_value)
  15. def parse_video_list(value: object) -> list[str] | None:
  16. if value is None:
  17. return None
  18. if isinstance(value, list):
  19. return [str(item) for item in value]
  20. if isinstance(value, str):
  21. text = value.strip()
  22. if not text:
  23. return None
  24. try:
  25. parsed = json.loads(text)
  26. except json.JSONDecodeError:
  27. return [text]
  28. if isinstance(parsed, list):
  29. return [str(item) for item in parsed]
  30. return [text]
  31. return [str(value)]