#!/usr/bin/env python3
import functools
-import importlib
import logging
import os
from inspect import stack
original_hook = sys.excepthook
+
def handle_uncaught_exception(exc_type, exc_value, exc_tb):
"""
Top-level exception handler for exceptions that make it past any exception
handlers in the python code being run. Logs the error and stacktrace then
maybe attaches a debugger.
+
"""
global original_hook
msg = f'Unhandled top level exception {exc_type}'
original_hook(exc_type, exc_value, exc_tb)
-class ImportInterceptor(importlib.abc.MetaPathFinder):
+class ImportInterceptor(object):
def __init__(self):
import collect.trie
self.module_by_filename_cache = {}
return []
-# TODO: test this with python 3.8+
-def audit_import_events(event, args):
- print(event)
- print(args)
+# # TODO: test this with python 3.8+
+# def audit_import_events(event, args):
+# if event == 'import':
+# module = args[0]
+# filename = args[1]
+# sys_path = args[2]
+# sys_meta_path = args[3]
+# sys_path_hooks = args[4]
+# logger.debug(msg)
+# print(msg)
# Audit import events? Note: this runs early in the lifetime of the
import_interceptor = None
for arg in sys.argv:
if arg == '--audit_import_events':
- if not hasattr(sys, 'frozen'):
- if (
- sys.version_info[0] == 3
- and sys.version_info[1] < 8
- ):
- import_interceptor = ImportInterceptor()
- sys.meta_path = [import_interceptor] + sys.meta_path
- else:
- sys.addaudithook(audit_import_events)
+ import_interceptor = ImportInterceptor()
+ sys.meta_path = [import_interceptor] + sys.meta_path
+ # if not hasattr(sys, 'frozen'):
+ # if (
+ # sys.version_info[0] == 3
+ # and sys.version_info[1] >= 8
+ # ):
+ # sys.addaudithook(audit_import_events)
def dump_all_objects() -> None: