_get_frame.py 458 B

1234567891011121314151617181920212223
  1. import sys
  2. from sys import exc_info
  3. def get_frame_fallback(n):
  4. try:
  5. raise Exception
  6. except Exception:
  7. frame = exc_info()[2].tb_frame.f_back
  8. for _ in range(n):
  9. frame = frame.f_back
  10. return frame
  11. def load_get_frame_function():
  12. if hasattr(sys, "_getframe"):
  13. get_frame = sys._getframe
  14. else:
  15. get_frame = get_frame_fallback
  16. return get_frame
  17. get_frame = load_get_frame_function()