Added a simple utilities file.
[pdm.git] / pdm / util.py
diff --git a/pdm/util.py b/pdm/util.py
new file mode 100644 (file)
index 0000000..53cc82a
--- /dev/null
@@ -0,0 +1,16 @@
+"""Python Daemon Management -- Miscellaneous utilities
+
+This module contains various functions that may be useful to call from
+the PDM REPL.
+"""
+
+import sys, traceback, threading
+
+def threads():
+    "Returns a dict of currently known threads, mapped to their respective frames."
+    tt = dict((th.ident, th) for th in threading.enumerate())
+    return dict((tt.get(key, key), val) for key, val in sys._current_frames().iteritems())
+
+def traces():
+    "Returns the value of threads() with each frame expanded to a backtrace."
+    return dict((th, traceback.extract_stack(frame)) for th, frame in threads().iteritems())