cinap_lenrekadd hg and python4bb9e2215 years agoHistory
546 lines · 18.1 KB · Python
RawDownload
    are not (unicode or 8-bit) strings referring to existing    directories are ignored.  Unicode items of sys.path that cause    errors when used as filenames may cause this function to raise an    exception (in line with os.path.isdir() behavior).    """     if not isinstance(path, list):        # This could happen e.g. when this is called from inside a        # frozen package.  Return the path unchanged in that case.        return path     pname = os.path.join(*name.split('.')) # Reconstitute as relative path    # Just in case os.extsep != '.'    sname = os.extsep.join(name.split('.'))    sname_pkg = sname + os.extsep + "pkg"    init_py = "__init__" + os.extsep + "py"     path = path[:] # Start with a copy of the existing path     for dir in sys.path:        if not isinstance(dir, basestring) or not os.path.isdir(dir):            continue        subdir = os.path.join(dir, pname)        # XXX This may still add duplicate entries to path on        # case-insensitive filesystems        initfile = os.path.join(subdir, init_py)        if subdir not in path and os.path.isfile(initfile):            path.append(subdir)        # XXX Is this the right thing for subpackages like zope.app?        # It looks for a file named "zope.app.pkg"        pkgfile = os.path.join(dir, sname_pkg)        if os.path.isfile(pkgfile):            try:                f = open(pkgfile)            except IOError, msg:                sys.stderr.write("Can't open %s: %s\n" %                                 (pkgfile, msg))            else:                for line in f:                    line = line.rstrip('\n')                    if not line or line.startswith('#'):                        continue                    path.append(line) # Don't check for existence!                f.close()     return path

Lines 501–546 of 546. Previous lines