From: Zac Medico Date: Thu, 27 Jun 2013 21:31:49 +0000 (-0700) Subject: util.listir: simplify and optimize X-Git-Tag: v2.2.0_alpha186~3 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=4f525d2eb71175fb540106152c17145d5a506d60;p=portage.git util.listir: simplify and optimize Use zip() to simplify, and fix "list = list + foo" usage to use list.extend() or equivalent. --- diff --git a/pym/portage/util/listdir.py b/pym/portage/util/listdir.py index 61a025ae7..2012e145f 100644 --- a/pym/portage/util/listdir.py +++ b/pym/portage/util/listdir.py @@ -5,6 +5,10 @@ __all__ = ['cacheddir', 'listdir'] import errno import stat +import sys + +if sys.hexversion < 0x3000000: + from itertools import izip as zip from portage import os from portage.const import VCS_DIRS @@ -21,7 +25,6 @@ dircache = {} def cacheddir(my_original_path, ignorecvs, ignorelist, EmptyOnError, followSymlinks=True): mypath = normalize_path(my_original_path) - cached_mtime, list, ftype = -1, [], [] try: pathstat = os.stat(mypath) if not stat.S_ISDIR(pathstat.st_mode): @@ -35,14 +38,14 @@ def cacheddir(my_original_path, ignorecvs, ignorelist, EmptyOnError, followSymli return [], [] else: try: - list = os.listdir(mypath) + fpaths = os.listdir(mypath) except EnvironmentError as e: if e.errno != errno.EACCES: raise del e raise PermissionDenied(mypath) ftype = [] - for x in list: + for x in fpaths: try: if followSymlinks: pathstat = os.stat(mypath+"/"+x) @@ -60,19 +63,20 @@ def cacheddir(my_original_path, ignorecvs, ignorelist, EmptyOnError, followSymli except (IOError, OSError): ftype.append(3) - ret_list = [] - ret_ftype = [] - for x in range(0, len(list)): - if list[x] in ignorelist: - pass - elif ignorecvs: - if list[x][:2] != ".#" and \ - not (ftype[x] == 1 and list[x] in VCS_DIRS): - ret_list.append(list[x]) - ret_ftype.append(ftype[x]) - else: - ret_list.append(list[x]) - ret_ftype.append(ftype[x]) + if ignorelist or ignorecvs: + ret_list = [] + ret_ftype = [] + for file_path, file_type in zip(fpaths, ftype): + if file_path in ignorelist: + pass + elif ignorecvs: + if file_path[:2] != ".#" and \ + not (file_type == 1 and file_path in VCS_DIRS): + ret_list.append(file_path) + ret_ftype.append(file_type) + else: + ret_list = fpaths + ret_ftype = ftype return ret_list, ret_ftype @@ -101,40 +105,35 @@ def listdir(mypath, recursive=False, filesonly=False, ignorecvs=False, ignorelis @return: A list of files and directories (or just files or just directories) or an empty list. """ - list, ftype = cacheddir(mypath, ignorecvs, ignorelist, EmptyOnError, followSymlinks) + fpaths, ftype = cacheddir(mypath, ignorecvs, ignorelist, EmptyOnError, followSymlinks) - if list is None: - list=[] + if fpaths is None: + fpaths = [] if ftype is None: - ftype=[] + ftype = [] if not (filesonly or dirsonly or recursive): - return list + return fpaths if recursive: - x=0 - while x