I screwed up with git and managed to delete the code I had just written... but it was still running in a process in a docker container. Here's how I got it back, using https://pypi.python.org/pypi/pyrasite/ and https://pypi.python.org/pypi/uncompyle6
= Attach a shell to the docker container =
- 
Install GDB (needed by pyrasite) apt-get update && apt-get install gdb 
- 
Install pyrasite - this well let you attach a Python shell to the still-running process. pip install pyrasite 
- 
Install uncompyle6, which will let you get Python source code back from in-memory code objects: pip install uncompyle6 
- 
Find the PID of the process that is still running ps aux | grep python 
- 
Attach an interactive prompt using pyrasite pyrasite-shell 
- 
Now you're in an interactive prompt! Import the code you need to recover: from my_package import my_module 
- 
Figure out which functions and classes you need to recover: dir(my_module) ['MyClass', 'my_function'] 
- 
Decompile the function into source code: import uncompyle6 import sys uncompyle6.main.uncompyle( 2.7, my_module.my_function.func_code, sys.stdout ) function_body = "appears here" 
- 
For the class, you'll need to decompile each method in turn: uncompyle6.main.uncompyle( 2.7, my_module.MyClass.my_method.im_func.func_code, sys.stdout ) class_method_body = "appears here"