code: def coverage(fn):
      
      fp = TraceFuncCoverage(fn) # or HotShotFuncCoverage
      # We cannot return fp or fp.__call__ directly as that would break method
      # definitions, instead we need to return a plain function.
      def new_fn(*args, **kw):
          return fp(*args, **kw)
      new_fn.__doc__ = fn.__doc__
      new_fn.__name__ = fn.__name__
      new_fn.__dict__ = fn.__dict__
      new_fn.__module__ = fn.__module__
      return new_fn
docs: Mark `fn` for line coverage analysis.
  
      Results will be printed to sys.stdout on program termination.
  
      Usage::
  
          def fn(...):
              ...
          fn = coverage(fn)
  
      If you are using Python 2.4, you should be able to use the decorator
      syntax::
  
          @coverage
          def fn(...):
              ...