From 9802f80d1fd8c7662aa4f4f2eaaa748c52fe4d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20A=C5=9F=C4=B1c=C4=B1?= Date: Mon, 8 Mar 2010 12:09:35 +0000 Subject: [PATCH] Return immediately if a condition is not satisfied Also use make_version instead of Version class. --- pisi/relation.py | 46 +++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/pisi/relation.py b/pisi/relation.py index f4f9ac4e..134733f0 100644 --- a/pisi/relation.py +++ b/pisi/relation.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2007, TUBITAK/UEKAE +# Copyright (C) 2007 - 2010, TUBITAK/UEKAE # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free @@ -32,22 +32,31 @@ class Relation: a_releaseTo = [autoxml.String, autoxml.optional] def satisfies_relation(self, version, release): - ret = True - v = pisi.version.Version(version) - if self.version: - ret &= v == pisi.version.Version(self.version) - if self.versionFrom: - ret &= v >= pisi.version.Version(self.versionFrom) - if self.versionTo: - ret &= v <= pisi.version.Version(self.versionTo) - r = pisi.version.Version(release) - if self.release: - ret &= r == pisi.version.Version(self.release) - if self.releaseFrom: - ret &= r >= pisi.version.Version(self.releaseFrom) - if self.releaseTo: - ret &= r <= pisi.version.Version(self.releaseTo) - return ret + if self.version and version != self.version: + return False + else: + v = pisi.version.make_version(version) + + if self.versionFrom and \ + v < pisi.version.make_version(self.versionFrom): + return False + + if self.versionTo and \ + v > pisi.version.make_version(self.versionTo): + return False + + if self.release and release != self.release: + return False + else: + r = int(release) + + if self.releaseFrom and r < int(self.releaseFrom): + return False + + if self.releaseTo and r > int(self.releaseTo): + return False + + return True def installed_package_satisfies(relation): installdb = pisi.db.installdb.InstallDB() @@ -56,5 +65,4 @@ def installed_package_satisfies(relation): return False else: pkg = installdb.get_package(pkg_name) - (version, release) = (pkg.version, pkg.release) - return relation.satisfies_relation(version, release) + return relation.satisfies_relation(pkg.version, pkg.release)