def sort_by_version(value, arg): reverse = True if arg == 'desc' else False ret_list = [] for key in sorted(value.keys(), reverse=reverse, key=lambda v: Version(pad_min_version(v))): ret_list.append((key, value[key])) return ret_list
def _sort_by_platform_v(self, releases_by_platform, reverse=True): """Sorts a list of tuples like (<platform version>, [releases]) by platform version. :param releases_by_platform: A list of tuples. :param reverse: Descending order if True, ascending otherwise. :return sorted list of tuples. """ return sorted(releases_by_platform, reverse=reverse, key=lambda v: Version(pad_min_version(v[0])))
def is_compatible(self, platform_version, inclusive=False): """ Checks if a release is compatible with a platform version :param platform_version: the platform version, not required to be semver compatible :param inclusive: if True the check will also return True if an app requires 9.0.1 and the given platform version is 9.0 :return: True if compatible, otherwise false """ min_version = Version(pad_min_version(platform_version)) spec = Spec(self.platform_version_spec) if inclusive: max_version = Version(pad_max_inc_version(platform_version)) return (min_version in spec or max_version in spec) else: return min_version in spec
def is_compatible(self, platform_version, inclusive=False): """Checks if a release is compatible with a platform version :param platform_version: the platform version, not required to be semver compatible :param inclusive: if True the check will also return True if an app requires 9.0.1 and the given platform version is 9.0 :return: True if compatible, otherwise false """ min_version = Version(pad_min_version(platform_version)) spec = Spec(self.platform_version_spec) if inclusive: max_version = Version(pad_max_inc_version(platform_version)) return (min_version in spec or max_version in spec) else: return min_version in spec
def element_to_dict(element: Any) -> Dict: type = element.get('type') key = element.tag.replace('-', '_') if type == 'int': return {key: int(element.text)} elif type == 'list': return {key: list(map(element_to_dict, element.iterchildren()))} elif type == 'min-version': return {key: pad_min_version(element.text)} elif type == 'max-version': return {key: pad_max_version(element.text)} elif len(list(element)) > 0: contents = {} for child in element.iterchildren(): contents.update(element_to_dict(child)) return {key: contents} else: return {key: element.text}
def element_to_dict(element: Any) -> Dict: type = element.get('type') key = element.tag.replace('-', '_') if type == 'int' and element.text is not None: return {key: int(element.text)} elif type == 'list': return {key: list(map(element_to_dict, element.iterchildren()))} elif type == 'min-version': return { key: pad_min_version(element.text), 'raw_%s' % key: raw_version(element.text) } elif type == 'max-version': return { key: pad_max_version(element.text), 'raw_%s' % key: raw_version(element.text) } elif len(list(element)) > 0: contents = {} for child in element.iterchildren(): contents.update(element_to_dict(child)) return {key: contents} else: return {key: element.text}
def test_pad_minimum(self): self.assertEqual('*', pad_min_version('')) self.assertEqual('9.0.0', pad_min_version('9')) self.assertEqual('9.0.0', pad_min_version('9.0')) self.assertEqual('9.0.0', pad_min_version('9.0.0'))