Skip to content

Commit

Permalink
Support for rounded timestamps
Browse files Browse the repository at this point in the history
  • Loading branch information
xolox committed Nov 16, 2014
1 parent d0c268e commit a6a8010
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
12 changes: 8 additions & 4 deletions humanfriendly.py
@@ -1,11 +1,11 @@
# Human friendly input/output in Python.
#
# Author: Peter Odding <peter@peterodding.com>
# Last Change: November 15, 2014
# Last Change: November 16, 2014
# URL: https://humanfriendly.readthedocs.org

# Semi-standard module versioning.
__version__ = '1.11'
__version__ = '1.12'

# Standard library modules.
import math
Expand Down Expand Up @@ -187,8 +187,7 @@ def format_timespan(num_seconds):
"""
if num_seconds < 60:
# Fast path.
rounded_number = round_number(num_seconds, num_seconds < 10)
return pluralize(rounded_number, 'second')
return pluralize(round_number(num_seconds), 'second')
else:
# Slow path.
result = []
Expand Down Expand Up @@ -423,6 +422,11 @@ def elapsed_time(self):
elapsed_time += time.time() - self.start_time
return elapsed_time

@property
def rounded(self):
"""Human readable timespan rounded to seconds (a string)."""
return format_timespan(round(self.elapsed_time))

def __str__(self):
"""
When a :py:class:`Timer` is coerced to a string it will show the
Expand Down
10 changes: 5 additions & 5 deletions humanfriendly_tests.py
Expand Up @@ -3,7 +3,7 @@
# Tests for the 'humanfriendly' module.
#
# Author: Peter Odding <peter.odding@paylogic.eu>
# Last Change: November 15, 2014
# Last Change: November 16, 2014
# URL: https://humanfriendly.readthedocs.org

# Standard library modules.
Expand Down Expand Up @@ -43,9 +43,9 @@ def test_format_timespan(self):
day = hour * 24
week = day * 7
year = week * 52
self.assertEqual('0.00 seconds', humanfriendly.format_timespan(0))
self.assertEqual('0 seconds', humanfriendly.format_timespan(0))
self.assertEqual('0.54 seconds', humanfriendly.format_timespan(0.54321))
self.assertEqual('1.00 second', humanfriendly.format_timespan(1))
self.assertEqual('1 second', humanfriendly.format_timespan(1))
self.assertEqual('3.14 seconds', humanfriendly.format_timespan(math.pi))
self.assertEqual('1 minute', humanfriendly.format_timespan(minute))
self.assertEqual('1 minute and 20 seconds', humanfriendly.format_timespan(80))
Expand Down Expand Up @@ -103,8 +103,8 @@ def test_concatenate(self):
self.assertEqual(humanfriendly.concatenate(['one', 'two', 'three']), 'one, two and three')

def test_timer(self):
for seconds, text in ((1, '1.00 second'),
(2, '2.00 seconds'),
for seconds, text in ((1, '1 second'),
(2, '2 seconds'),
(60, '1 minute'),
(60*2, '2 minutes'),
(60*60, '1 hour'),
Expand Down

0 comments on commit a6a8010

Please sign in to comment.