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