Bzw. noch mal als ganzes. Kann jemand mal die Funktion _split_requirement ersetzen und Feedback geben? Bei mir läuft jetzt alles fehlerfrei und ist sogar noch weniger Code:
Code:
def _split_requirement(self, req_str, do_log=False):
"""
Split requirement string
:param req_str:
:return:
"""
pyversion = "{0}.{1}".format(sys.version_info[0], sys.version_info[1])
# Split requirement string into list of requirements (with python version)
requirements_list = req_str.split('|')
result_list = []
for i in range(0, len(requirements_list)):
# Split requirement (with python version) into list of requirement and python version
requirement = requirements_list[i].split(';') # split requirement into list of requirement and pyvers requirement
if do_log:
self.logger.debug("- _split_requirement *1: {} -> requirement = {}".format(requirements_list[i], requirement))
if len(requirement) == 1:
result_list.append(self._split_requirement_to_min_max(requirement[0]))
else:
# python version sppecified in requirement
for j in range(0, len(requirement)):
requirement[j] = requirement[j].strip()
if do_log:
self.logger.info("- _split_requirement *2: {} -> requirement = {}".format(requirements_list[i], requirement))
if requirement[1].startswith('python_version'):
requirement[1] = requirement[1].replace('python_version', '')
operator, version = self._split_operator(requirement[1])
if self._compare_versions(pyversion, version, operator):
result_list.append(self._split_requirement_to_min_max(requirement[0]))
if len(result_list) > 1:
set_min = '*'
set_max = '*'
for result_entry in result_list:
val_min = result_entry.get('min', None)
if val_min is not None and val_min != '*':
if set_min == '*' or val_min > set_min:
set_min = val_min
val_max = result_entry.get('max', None)
if val_max is not None and val_max != '*':
if set_max == '*' or val_max < set_max:
set_max = val_max
result = {}
result['min'] = set_min
result['max'] = set_max
return result
if len(result_list) == 0:
return {}
return result_list[0]


Kommentar