Possible Duplicate:
How can I get the source code of a Python function?
First, let me define my problem. I will give a motivation afterward.
Problem:
def map(doc):
  yield doc['type'], 1
# How do I get the textual representation of the function map above,
# as in getting the string "def map(doc):\n  yield doc['yield'], 1"?
print repr(map)  # Does not work. It prints <function fun at 0x10049c8c0> instead.
Motivation:
For those of you familiar with CouchDB views, I am writing a Python script to generate CouchDB views, which are JSON with the map and reduce functions embedded. For example,
{
  "language": "python",
  "views": {
    "pytest": {
      "map": "def fun(doc):\n  yield doc['type'], 1",
      "reduce": "def fun(key, values, rereduce):\n  return sum(values)"
    }
  }
}
However, for readability, I would prefer to write the map and reduce function natively in the Python script first, then construct the above JSON using the answer to this question.
Solution:
By BrenBarn's response, use inspect.getsource.
#!/usr/bin/env python
import inspect
def map(doc):
  yield doc['type'], 1
def reduce(key, values, rereduce):
  return sum(values)
couchdb_views = {
  "language": "python",
  "views": {
     "pytest": {
       "map": inspect.getsource(map),
       "reduce": inspect.getsource(reduce),
     }
  }
}
# Yay!
print couchdb_views