parameters: (timespan, precision=3)
return_statement: return u"%.*g %s" % (precision, timespan * scaling[order], units[order])
docstring: Formats the timespan in a human readable form
docstring_summary: Formats the timespan in a human readable form
docstring_tokens: Formats the timespan in a human readable form
function: def _format_time(timespan, precision=3):
      """Formats the timespan in a human readable form"""
      import math
      
      if timespan >= 60.0:
          # we have more than a minute, format that in a human readable form
          # Idea from http://snipplr.com/view/5713/
          parts = [("d", 60*60*24),("h", 60*60),("min", 60), ("s", 1)]
          time = []
          leftover = timespan
          for suffix, length in parts:
              value = int(leftover / length)
              if value > 0:
                  leftover = leftover % length
                  time.append(u'%s%s' % (str(value), suffix))
              if leftover < 1:
                  break
          return " ".join(time)
  
      
      # Unfortunately the unicode 'micro' symbol can cause problems in
      # certain terminals.  
      # See bug: https://bugs.launchpad.net/ipython/+bug/348466
      # Try to prevent crashes by being more secure than it needs to
      # E.g. eclipse is able to print a µ, but has no sys.stdout.encoding set.
      units = [u"s", u"ms",u'us',"ns"] # the save value   
      if hasattr(sys.stdout, 'encoding') and sys.stdout.encoding:
          try:
              u'\xb5'.encode(sys.stdout.encoding)
              units = [u"s", u"ms",u'\xb5s',"ns"]
          except:
              pass
      scaling = [1, 1e3, 1e6, 1e9]
          
      if timespan > 0.0:
          order = min(-int(math.floor(math.log10(timespan)) // 3), 3)
      else:
          order = 3
      return u"%.*g %s" % (precision, timespan * scaling[order], units[order])
function_tokens: def _format_time ( timespan , precision = 3 ) : import math if timespan >= 60.0 : # we have more than a minute, format that in a human readable form # Idea from http://snipplr.com/view/5713/ parts = [ ( "d" , 60 * 60 * 24 ) , ( "h" , 60 * 60 ) , ( "min" , 60 ) , ( "s" , 1 ) ] time = [ ] leftover = timespan for suffix , length in parts : value = int ( leftover / length ) if value > 0 : leftover = leftover % length time . append ( u'%s%s' % ( str ( value ) , suffix ) ) if leftover < 1 : break return " " . join ( time ) # Unfortunately the unicode 'micro' symbol can cause problems in # certain terminals.   # See bug: https://bugs.launchpad.net/ipython/+bug/348466 # Try to prevent crashes by being more secure than it needs to # E.g. eclipse is able to print a µ, but has no sys.stdout.encoding set. units = [ u"s" , u"ms" , u'us' , "ns" ] # the save value    if hasattr ( sys . stdout , 'encoding' ) and sys . stdout . encoding : try : u'\xb5' . encode ( sys . stdout . encoding ) units = [ u"s" , u"ms" , u'\xb5s' , "ns" ] except : pass scaling = [ 1 , 1e3 , 1e6 , 1e9 ] if timespan > 0.0 : order = min ( - int ( math . floor ( math . log10 ( timespan ) ) // 3 ) , 3 ) else : order = 3 return u"%.*g %s" % ( precision , timespan * scaling [ order ] , units [ order ] )