Merge pull request #1229 from paddatrapper/fix/python-fromisoformat
Fix python 3.6 support in api_client v2
This commit is contained in:
commit
3b1408ce9c
|
@ -1,4 +1,5 @@
|
|||
import json
|
||||
import datetime
|
||||
import logging
|
||||
import socket
|
||||
import requests
|
||||
|
@ -164,3 +165,11 @@ def time_in_seconds(time):
|
|||
def time_in_milliseconds(time):
|
||||
return time_in_seconds(time) * 1000
|
||||
|
||||
def fromisoformat(time_string):
|
||||
"""
|
||||
This is required for Python 3.6 support. datetime.time.fromisoformat was
|
||||
only added in Python 3.7. Until LibreTime drops Python 3.6 support, this
|
||||
wrapper uses the old way of doing it.
|
||||
"""
|
||||
datetime_obj = datetime.datetime.strptime(time_string, "%H:%M:%S.%f")
|
||||
return datetime_obj.time()
|
||||
|
|
|
@ -10,7 +10,7 @@ import datetime
|
|||
from dateutil.parser import isoparse
|
||||
import logging
|
||||
from configobj import ConfigObj
|
||||
from .utils import RequestProvider, time_in_seconds, time_in_milliseconds
|
||||
from .utils import RequestProvider, time_in_seconds, time_in_milliseconds, fromisoformat
|
||||
|
||||
LIBRETIME_API_VERSION = "2.0"
|
||||
|
||||
|
@ -70,11 +70,11 @@ class AirtimeApiClient:
|
|||
current['type'] = 'file'
|
||||
current['id'] = item['file_id']
|
||||
|
||||
fade_in = time_in_milliseconds(datetime.time.fromisoformat(item['fade_in']))
|
||||
fade_out = time_in_milliseconds(datetime.time.fromisoformat(item['fade_out']))
|
||||
fade_in = time_in_milliseconds(fromisoformat(item['fade_in']))
|
||||
fade_out = time_in_milliseconds(fromisoformat(item['fade_out']))
|
||||
|
||||
cue_in = time_in_seconds(datetime.time.fromisoformat(item['cue_in']))
|
||||
cue_out = time_in_seconds(datetime.time.fromisoformat(item['cue_out']))
|
||||
cue_in = time_in_seconds(fromisoformat(item['cue_in']))
|
||||
cue_out = time_in_seconds(fromisoformat(item['cue_out']))
|
||||
|
||||
current['fade_in'] = fade_in
|
||||
current['fade_out'] = fade_out
|
||||
|
|
|
@ -86,4 +86,13 @@ class TestGetProtocol(unittest.TestCase):
|
|||
for value in negative_values:
|
||||
self.assertEqual(get_force_ssl(value, True), 'http')
|
||||
|
||||
def test_fromisoformat(self):
|
||||
time = {
|
||||
"00:00:00.500000": datetime.time(microsecond=500000),
|
||||
"00:04:30.092540": datetime.time(minute=4, second=30, microsecond=92540),
|
||||
}
|
||||
for time_string, expected in time.items():
|
||||
result = utils.fromisoformat(time_string)
|
||||
self.assertEqual(result, expected)
|
||||
|
||||
if __name__ == '__main__': unittest.main()
|
||||
|
|
Loading…
Reference in New Issue