structured.py 873 B

12345678910111213141516171819202122232425262728293031323334353637
  1. """
  2. Utilities for converting data types into structured JSON for dumping.
  3. """
  4. import traceback
  5. from typing import Dict, Sequence
  6. import torch._logging._internal
  7. INTERN_TABLE: Dict[str, int] = {}
  8. def intern_string(s: str) -> int:
  9. r = INTERN_TABLE.get(s, None)
  10. if r is None:
  11. r = len(INTERN_TABLE)
  12. INTERN_TABLE[s] = r
  13. torch._logging._internal.trace_structured(
  14. "str", lambda: (s, r), suppress_context=True
  15. )
  16. return r
  17. def from_traceback(tb: Sequence[traceback.FrameSummary]) -> object:
  18. r = []
  19. for frame in tb:
  20. # dict naming convention here coincides with
  21. # python/combined_traceback.cpp
  22. r.append(
  23. {
  24. "line": frame.lineno,
  25. "name": frame.name,
  26. "filename": intern_string(frame.filename),
  27. }
  28. )
  29. return r