Skip to content

Commit

Permalink
Cache version handing fully tested and quite "fixed"
Browse files Browse the repository at this point in the history
It seems that packaging.version.parse never raises just returns a
LegacyVersion which was just wrong for dates.

Signed-off-by: Alexis Jeandet <[email protected]>
  • Loading branch information
jeandet committed Nov 13, 2020
1 parent 1ede6fb commit 6c30aa8
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 9 deletions.
13 changes: 6 additions & 7 deletions spwc/cache/version.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
from typing import Union
import datetime
import dateutil
from packaging.version import Version, parse, InvalidVersion
from packaging.version import Version, parse, InvalidVersion, LegacyVersion


def str_to_version(v: str):
try:
v = parse(v)
except InvalidVersion:
version = parse(v)
if type(version) is LegacyVersion:
try:
v = dateutil.parser.parse(v)
version = dateutil.parser.parse(v)
except ValueError:
v = None
return v
version = None
return version


def version_to_str(v: Union[Version, datetime.datetime]):
Expand Down
15 changes: 13 additions & 2 deletions tests/test_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
from datetime import datetime, timedelta, timezone
from spwc.cache.cache import Cache
from spwc.cache import Cacheable, _round_for_cache
from spwc.cache.version import str_to_version
from spwc.cache.version import str_to_version, version_to_str
from spwc.common.datetime_range import DateTimeRange
from spwc.common.variable import SpwcVariable
import packaging.version as Version
import dateutil.parser as dt_parser
import operator
import numpy as np

Expand Down Expand Up @@ -99,7 +101,7 @@ def test_list_keys(self):

def test_global_keys(self, cache=cache):
self.assertIsNone(cache.get("Not In Cache"))
cache.set("In Cache",True)
cache.set("In Cache", True)
self.assertTrue(cache.get("In Cache"))

def tearDown(self):
Expand Down Expand Up @@ -247,6 +249,15 @@ class _CacheVersionTest(unittest.TestCase):
def test_compare_version(self, lhs, rhs, op):
self.assertTrue(op(str_to_version(lhs), str_to_version(rhs)))

@data(
('1.2.3', Version.parse),
("2019-09-01T20:17:57Z", dt_parser.parse),
('-', lambda x: None)
)
@unpack
def test_conversion(self, version_str, op):
self.assertEqual(op(version_to_str(str_to_version(version_str))), op(version_str))


if __name__ == '__main__':
unittest.main()
Expand Down

0 comments on commit 6c30aa8

Please sign in to comment.