def _collectWarnings(observeWarning, f, *args, **kwargs):
 def showWarning(message, category, filename, lineno, file=None, line=None):
  assert isinstance(message, Warning)
  observeWarning(_Warning(message.args[0], category, filename, lineno))
 for v in sys.modules.itervalues():
  if (v is not None):
   try:
    v.__warningregistry__ = None
   except:
    pass
 origFilters = warnings.filters[:]
 origShow = warnings.showwarning
 warnings.simplefilter('always')
 try:
  warnings.showwarning = showWarning
  result = f(*args, **kwargs)
 finally:
  warnings.filters[:] = origFilters
  warnings.showwarning = origShow
 return result

def _collectWarnings ( observeWarning , f , * args , ** kwargs ) : def showWarning ( message , category , filename , lineno , file = None , line = None ) : assert isinstance ( message , Warning ) observeWarning ( _Warning ( message . args [ 0 ] , category , filename , lineno ) ) for v in sys . modules . itervalues ( ) : if ( v is not None ) : try : v . __warningregistry__ = None except : pass origFilters = warnings . filters [ : ] origShow = warnings . showwarning warnings . simplefilter ( 'always' ) try : warnings . showwarning = showWarning result = f ( * args , ** kwargs ) finally : warnings . filters [ : ] = origFilters warnings . showwarning = origShow return result
call c{f} with c{args} positional arguments and c{kwargs} keyword arguments and collect all warnings which are emitted as a result in a list .