This repository was archived by the owner on Oct 21, 2022. It is now read-only.
File tree Expand file tree Collapse file tree
compatibility_lib/compatibility_lib Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1414
1515import concurrent .futures
1616import enum
17+ import logging
1718import re
1819
1920from compatibility_lib import compatibility_checker
20- from compatibility_lib import compatibility_store
2121from compatibility_lib import configs
2222from compatibility_lib import utils
2323
@@ -154,11 +154,23 @@ def check_package(self, package_name):
154154 try :
155155 install = _sanitize_release_tag (info ['installed_version' ])
156156 except UnstableReleaseError as err :
157+ install = None
157158 priority = Priority (PriorityLevel .HIGH_PRIORITY , str (err ))
158159
160+
159161 if not info ['is_latest' ] or priority .level != PriorityLevel .UP_TO_DATE :
162+ current_time = info ['current_time' ]
163+ latest_version_time = info ['latest_version_time' ]
164+
165+ # Skip the check if release timestamp is None.
166+ if current_time is None or latest_version_time is None :
167+ logging .warning (
168+ 'Release time for dependency {} is not available.'
169+ .format (name ))
170+ continue
171+
160172 latest = _sanitize_release_tag (info ['latest_version' ])
161- elapsed_time = info [ ' current_time' ] - info [ ' latest_version_time' ]
173+ elapsed_time = current_time - latest_version_time
162174
163175 if priority .level == PriorityLevel .UP_TO_DATE :
164176 priority = self ._get_update_priority (
Original file line number Diff line number Diff line change @@ -106,7 +106,11 @@ def test_get_dependency_info_endpoint(self):
106106class Test__parse_datetime (unittest .TestCase ):
107107
108108 def test__parse_datetime (self ):
109- date_string = '2018-08-16T15:42:04.351677'
110- expected = '2018-08-16 00:00:00'
111- res = utils ._parse_datetime (date_string )
112- self .assertEqual (str (res ), expected )
109+ date_string = '2018-08-16T15:42:04.351677'
110+ expected = '2018-08-16 00:00:00'
111+ res = utils ._parse_datetime (date_string )
112+ self .assertEqual (str (res ), expected )
113+
114+ def test__parse_datetime_empty (self ):
115+ res = utils ._parse_datetime (None )
116+ self .assertIsNone (res )
Original file line number Diff line number Diff line change @@ -90,6 +90,13 @@ def _get_from_endpoint(self, package_name):
9090 result = [item for item in _result ]
9191 depinfo = result [0 ][0 ].get ('dependency_info' )
9292
93+ # depinfo can be None if there is an exception during pip install.
94+ if depinfo is None :
95+ logging .warning (
96+ "Could not get the dependency info of package {} from server."
97+ .format (package_name ))
98+ return {}
99+
93100 fields = ('installed_version_time' ,
94101 'current_time' , 'latest_version_time' )
95102 for pkgname in depinfo .keys ():
@@ -123,6 +130,9 @@ def _parse_datetime(date_string):
123130 Returns:
124131 the date as a datetime obj
125132 """
133+ if date_string is None :
134+ return None
135+
126136 date_string = date_string .replace ('T' , ' ' )
127137 short_date = date_string .split (' ' )[0 ]
128138 return datetime .strptime (short_date , DATETIME_FORMAT )
You can’t perform that action at this time.
0 commit comments