Browse Source

fix symuid-import-cmus: use timezone-aware datetime

Fabian Peter Hammerle 4 years ago
parent
commit
179488719c
6 changed files with 25 additions and 20 deletions
  1. 5 5
      symuid-import-cmus
  2. 2 5
      symuid/__init__.py
  3. 5 0
      symuid/_datetime.py
  4. 10 0
      tests/test_datetime.py
  5. 0 7
      tests/test_functions.py
  6. 3 3
      tests/test_track.py

+ 5 - 5
symuid-import-cmus

@@ -1,10 +1,11 @@
 #!/usr/bin/env python3
-# -*- coding: utf-8 -*-
 
-import datetime as dt
+import argparse
 import os
+
 import symuid
 import symuid.library.cmus
+from symuid._datetime import datetime_utc_now
 
 PLAYER_NAME = 'cmus'
 LIBRARY_ID_LENGTH_MIN = 8
@@ -31,16 +32,15 @@ def symuid_import_cmus(library_id, cache_path):
                     symuid.PlayCount(
                         player=PLAYER_NAME,
                         library_id=library_id,
-                        register_dt=dt.datetime.now(),
+                        register_dt=datetime_utc_now(),
                         count=cmus_track.play_count,
                     ),
                     tag_set_cb=lambda tr, tag:
-                        print('{!r}: set tag {!r}'.format(tr.path, tag)),
+                    print('{!r}: set tag {!r}'.format(tr.path, tag)),
                 )
 
 
 def _init_argparser():
-    import argparse
     argparser = argparse.ArgumentParser(description=None)
     argparser.add_argument('library_id')
     argparser.add_argument(

+ 2 - 5
symuid/__init__.py

@@ -5,6 +5,7 @@ import re
 import mutagen
 
 from symuid import _tag_interface
+from symuid._datetime import datetime_utc_now
 
 
 def _timestamp_to_utc_dt(ts_sec):
@@ -12,10 +13,6 @@ def _timestamp_to_utc_dt(ts_sec):
         .replace(tzinfo=dt.timezone.utc)
 
 
-def _utc_dt_now():
-    return dt.datetime.utcnow().replace(tzinfo=dt.timezone.utc)
-
-
 class PlayCount:
 
     def __init__(self, player, library_id, register_dt, count):
@@ -145,7 +142,7 @@ class Track:
             PlayCount(
                 player=player,
                 library_id=library_id,
-                register_dt=_utc_dt_now(),
+                register_dt=datetime_utc_now(),
                 count=current_pc.count + 1 if current_pc else 1,
             ),
             tag_set_cb=tag_set_cb,

+ 5 - 0
symuid/_datetime.py

@@ -0,0 +1,5 @@
+import datetime
+
+
+def datetime_utc_now() -> datetime.datetime:
+    return datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)

+ 10 - 0
tests/test_datetime.py

@@ -0,0 +1,10 @@
+import datetime
+
+import pytz
+
+from symuid._datetime import datetime_utc_now
+
+
+def test_datetime_utc_now():
+    pytz_dt = datetime.datetime.now(pytz.timezone('UTC'))
+    assert abs((datetime_utc_now() - pytz_dt).total_seconds()) < 5

+ 0 - 7
tests/test_functions.py

@@ -1,7 +1,6 @@
 import datetime
 
 import pytest
-import pytz
 
 import symuid
 
@@ -14,9 +13,3 @@ import symuid
 ])
 def test__timestamp_to_utc_dt(ts_sec, expected_dt):
     assert expected_dt == symuid._timestamp_to_utc_dt(ts_sec)
-
-
-def test__utc_dt_now():
-    dt_now = symuid._utc_dt_now()
-    pytz_dt = datetime.datetime.now(pytz.timezone('UTC'))
-    assert abs((dt_now - pytz_dt).total_seconds()) < 5

+ 3 - 3
tests/test_track.py

@@ -6,6 +6,7 @@ import mutagen
 import pytest
 
 import symuid
+from symuid._datetime import datetime_utc_now
 
 # pylint: disable=redefined-outer-name,protected-access
 
@@ -148,7 +149,6 @@ def test_increase_play_count(empty_id3_track):
     empty_id3_track.register_play_count(init_count)
     assert empty_id3_track.get_play_count_sum() == 3
     empty_id3_track.increase_play_count('a', '0')
-    dt_now = symuid._utc_dt_now()
     assert empty_id3_track.get_play_count_sum() == 4
     counts = set(empty_id3_track._get_play_counts())
     assert len(counts) == 2
@@ -156,7 +156,7 @@ def test_increase_play_count(empty_id3_track):
     new_count = counts.pop()
     assert new_count.player == 'a'
     assert new_count.library_id == '0'
-    assert abs(new_count.register_dt - dt_now).total_seconds() < 5
+    assert abs(new_count.register_dt - datetime_utc_now()).total_seconds() < 5
     assert new_count.count == 4
 
 
@@ -166,7 +166,7 @@ def test_increase_play_count_init(empty_id3_track):
     count, = empty_id3_track._get_play_counts()
     assert count.player == 'a'
     assert count.library_id == '0'
-    assert abs(count.register_dt - symuid._utc_dt_now()).total_seconds() < 5
+    assert abs(count.register_dt - datetime_utc_now()).total_seconds() < 5
     assert count.count == 1