def to_pretty_timedelta(n: datetime.timedelta) -> str:
if n < datetime.timedelta(seconds=120):
- return str(n.seconds) + 's'
+ return str(int(n.total_seconds())) + 's'
if n < datetime.timedelta(minutes=120):
- return str(n.seconds // 60) + 'm'
+ return str(int(n.total_seconds()) // 60) + 'm'
if n < datetime.timedelta(hours=48):
- return str(n.seconds // 3600) + 'h'
+ return str(int(n.total_seconds()) // 3600) + 'h'
if n < datetime.timedelta(days=14):
- return str(n.days) + 'd'
+ return str(int(n.total_seconds()) // (3600*24)) + 'd'
if n < datetime.timedelta(days=7*12):
- return str(n.days // 7) + 'w'
+ return str(int(n.total_seconds()) // (3600*24*7)) + 'w'
if n < datetime.timedelta(days=365*2):
- return str(n.days // 30) + 'M'
- return str(n.days // 365) + 'y'
+ return str(int(n.total_seconds()) // (3600*24*30)) + 'M'
+ return str(int(n.total_seconds()) // (3600*24*365)) + 'y'
def profile_method(skip_attribute: bool = False) -> Callable[[Callable[..., T]], Callable[..., T]]:
--- /dev/null
+import datetime
+import mgr_util
+
+import pytest
+
+
+@pytest.mark.parametrize(
+ "delta, out",
+ [
+ (datetime.timedelta(minutes=90), '90m'),
+ (datetime.timedelta(minutes=190), '3h'),
+ (datetime.timedelta(days=3), '3d'),
+ (datetime.timedelta(hours=3), '3h'),
+ (datetime.timedelta(days=365 * 3.1), '3y'),
+ (datetime.timedelta(minutes=90), '90m'),
+ ]
+)
+def test_pretty_timedelta(delta: datetime.timedelta, out: str):
+ assert mgr_util.to_pretty_timedelta(delta) == out