SF patch #598163 (Ville Vainio, vvainio@users.sourceforge.net):
add dedent() function, to remove indentation from multiline strings
(eg. triple-quoted strings).  Differs from inspect.getdoc() by not
special-casing the first line (often a sensible approach for
non-docstring multiline strings).  This should make this function more
general (symmetric 'indent' also possible), and more fitting for the
textwrap module.
diff --git a/Lib/textwrap.py b/Lib/textwrap.py
index b0c7042..ec0e7cb 100644
--- a/Lib/textwrap.py
+++ b/Lib/textwrap.py
@@ -306,3 +306,45 @@
     """
     w = TextWrapper(width=width, **kwargs)
     return w.fill(text)
+
+
+# -- Loosely related functionality -------------------------------------
+
+def dedent(text):
+    """dedent(text : string) -> string
+
+    Remove any whitespace than can be uniformly removed from the left
+    of every line in `text`.
+
+    This can be used e.g. to make triple-quoted strings line up with
+    the left edge of screen/whatever, while still presenting it in the
+    source code in indented form. 
+
+    For example:
+
+        def test():
+            # end first line with \ to avoid the empty line!
+            s = '''\
+            Hey
+            there
+            '''
+            print repr(s)          # prints '    Hey\n    there\n    '
+            print repr(dedent(s))  # prints 'Hey\nthere\n'
+    """
+    lines = text.expandtabs().split('\n')
+    margin = None
+    for line in lines:
+        content = len(line.lstrip())
+        if not content:
+            continue
+        indent = len(line) - content
+        if margin is None:
+            margin = indent
+        else:
+            margin = min(margin, indent)
+
+    if margin is not None:
+        for i in range(len(lines)):
+            lines[i] = lines[i][margin:]
+
+    return '\n'.join(lines)