Merge pull request #1229 from paddatrapper/fix/python-fromisoformat

Fix python 3.6 support in api_client v2
This commit is contained in:
Robb 2021-06-04 08:54:54 -04:00 committed by GitHub
commit 3b1408ce9c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 5 deletions

View File

@ -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()

View File

@ -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

View File

@ -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()