def _load_requirements(self, requirements_data): if requirements_data is None: return self._validate_requirements_data(requirements_data) result = [] for r in requirements_data: versions = r.get('versions', None) if versions is None: result.append(PackageRelation.from_args((r['name'],))) else: for version in versions: result.append(PackageRelation.from_args( ([r['name']] + version.split(None, 1)) )) return result
def _load_requirements(self, requirements_data): if requirements_data is None: return self._validate_requirements_data(requirements_data) result = [] for r in requirements_data: versions = r.get('versions', None) if versions is None: result.append(PackageRelation.from_args((r['name'], ))) else: for version in versions: result.append( PackageRelation.from_args( ([r['name']] + version.split(None, 1)))) return result
def test_iter(self): it = iter( PackageRelation.from_args(("test", "<=", 2), ("test2", ">=", 3))) self.assertEqual("test", next(it).name) self.assertEqual("test2", next(it).name) with self.assertRaises(StopIteration): next(it)
def test_iter(self): it = iter(PackageRelation.from_args( ("test", "<=", 2), ("test2", ">=", 3)) ) self.assertEqual("test", next(it).name) self.assertEqual("test2", next(it).name) with self.assertRaises(StopIteration): next(it)
def test_from_args(self): r = PackageRelation.from_args(("test", "<=", 2), ("test2", ), ("test3", )) self.assertEqual("test", r.name) self.assertEqual("<=", r.version.op) self.assertEqual(2, r.version.edge) self.assertEqual("test2", r.alternative.name) self.assertEqual(VersionRange(), r.alternative.version) self.assertEqual("test3", r.alternative.alternative.name) self.assertEqual(VersionRange(), r.alternative.alternative.version) self.assertIsNone(r.alternative.alternative.alternative)
def _parse_requirements(requirements): """Gets the list of relations from requirements. :param requirements: the list of requirement in next format: 'name [cmp version]|[alt [cmp version]]' """ if requirements is not None: return set( PackageRelation.from_args( *(x.split() for x in r.split("|"))) for r in requirements ) return set()
def test_from_args(self): r = PackageRelation.from_args( ("test", "<=", 2), ("test2",), ("test3",) ) self.assertEqual("test", r.name) self.assertEqual("<=", r.version.op) self.assertEqual(2, r.version.edge) self.assertEqual("test2", r.alternative.name) self.assertEqual(VersionRange(), r.alternative.version) self.assertEqual("test3", r.alternative.alternative.name) self.assertEqual(VersionRange(), r.alternative.alternative.version) self.assertIsNone(r.alternative.alternative.alternative)
def _get_relations(self, dpkg, *names): """Gets the package relations. :param dpkg: the debian-package object :type dpkg: deb822.Packages :param names: the relation names :return: the list of PackageRelation objects """ relations = list() for name in names: for variants in dpkg.relations[name]: relation = PackageRelation.from_args( *(self._unparse_relation(v) for v in variants)) if relation is not None: relations.append(relation) return relations
def _get_relations(self, dpkg, *names): """Gets the package relations. :param dpkg: the debian-package object :type dpkg: deb822.Packages :param names: the relation names :return: the list of PackageRelation objects """ relations = list() for name in names: for variants in dpkg.relations[name]: relation = PackageRelation.from_args( *(self._unparse_relation(v) for v in variants) ) if relation is not None: relations.append(relation) return relations
def _get_relations(self, pkg_tag, name): """Gets package relations by name from package tag. :param pkg_tag: the xml-tag with package description :param name: the relations name :return: list of PackageRelation objects """ relations = list() append = relations.append tags_iter = pkg_tag.iterfind("./main:format/rpm:%s/rpm:entry" % name, _NAMESPACES) for elem in tags_iter: append( PackageRelation.from_args( self._unparse_relation_attrs(elem.attrib))) return relations
def _get_relations(self, pkg_tag, name): """Gets package relations by name from package tag. :param pkg_tag: the xml-tag with package description :param name: the relations name :return: list of PackageRelation objects """ relations = list() append = relations.append tags_iter = pkg_tag.iterfind( "./main:format/rpm:%s/rpm:entry" % name, _NAMESPACES ) for elem in tags_iter: append(PackageRelation.from_args( self._unparse_relation_attrs(elem.attrib) )) return relations