From 03043f6a0f9220f7764950a33cfe856de7e119ce Mon Sep 17 00:00:00 2001 From: Alec Warner Date: Tue, 16 Jan 2007 01:36:45 +0000 Subject: ferringb pointed out this portroot parameter, ended up not using it, try an os.path.exists to save a very common (and slow) except on missing repo_name files for overlays, use a dict to facility a nicer regex comparison loop for news restrictions. svn path=/main/trunk/; revision=5662 --- pym/portage.py | 17 ++++++++--------- pym/portage_news.py | 23 ++++++++--------------- 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/pym/portage.py b/pym/portage.py index 3cbe7114d..501f55685 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -4527,13 +4527,10 @@ def getmaskingstatus(mycpv, settings=None, portdb=None): return rValue class portagetree: - def __init__(self, root="/", virtual=None, clone=None, settings=None, portroot=None): + def __init__(self, root="/", virtual=None, clone=None, settings=None): """ Constructor for a PortageTree - Note: Portroot was added for GLEP 42 functionality and defaults to the $PORTDIR - env variable. - @param root: ${ROOT}, defaults to '/', see make.conf(5) @type root: String/Path @param virtual: UNUSED @@ -5549,11 +5546,13 @@ class portdbapi(dbapi): [os.path.realpath(t) for t in self.mysettings["PORTDIR_OVERLAY"].split()] self.treemap = {} for path in self.porttrees: - try: - repo_name = open( os.path.join( path , REPO_NAME_LOC ) ,'r').readline().rstrip() - self.treemap[repo_name] = path - except (OSError,IOError): - pass + repo_name_path = os.path.join( path, REPO_NAME_LOC ) + if os.path.exists( repo_name_path ): + try: + repo_name = open( repo_name_path ,'r').readline().strip() + self.treemap[repo_name] = path + except (OSError,IOError): + pass self.auxdbmodule = self.mysettings.load_best_module("portdbapi.auxdbmodule") self.auxdb = {} diff --git a/pym/portage_news.py b/pym/portage_news.py index ea804f31b..736ce3fdc 100644 --- a/pym/portage_news.py +++ b/pym/portage_news.py @@ -163,21 +163,14 @@ class NewsItem(object): #will never match if not line.startswith("D"): continue - match = _installedRE.match( line ) - if match: - self.restrictions.append( - DisplayInstalledRestriction( match.groups()[0].strip().rstrip() ) ) - continue - match = _profileRE.match( line ) - if match: - self.restrictions.append( - DisplayProfileRestriction( match.groups()[0].strip().rstrip() ) ) - continue - match = _keywordRE.match( line ) - if match: - self.restrictions.append( - DisplayKeywordRestriction( match.groups()[0].strip().rstrip() ) ) - continue + restricts = { _installedRE : DisplayInstalledRestriction, + _profileRE : DisplayProfileRestriction, + _keywordRE : DisplayKeywordRestriction } + for regex, restriction in restricts.iteritems(): + match = regex.match(line) + if match: + self.restrictions.append( restriction( match.groups()[0].strip() ) ) + continue self._parsed = True def __getattr__( self, attr ): -- cgit v1.2.3-1-g7c22