Staging
v0.5.1
https://github.com/python/cpython
Revision 51c9b5152aca58066b7f35a9c6c419cadf270b6c authored by Brian Curtin on 05 November 2010, 17:24:20 UTC, committed by Brian Curtin on 05 November 2010, 17:24:20 UTC
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r86209 | brian.curtin | 2010-11-05 12:22:46 -0500 (Fri, 05 Nov 2010) | 2 lines

  Close subprocess pipes to clean up ResourceWarnings
........
1 parent 7fe045e
Raw File
Tip revision: 51c9b5152aca58066b7f35a9c6c419cadf270b6c authored by Brian Curtin on 05 November 2010, 17:24:20 UTC
Merged revisions 86209 via svnmerge from
Tip revision: 51c9b51
dircache.py
"""Read and cache directory listings.

The listdir() routine returns a sorted list of the files in a directory,
using a cache to avoid reading the directory more often than necessary.
The annotate() routine appends slashes to directories."""
from warnings import warnpy3k
warnpy3k("the dircache module has been removed in Python 3.0", stacklevel=2)
del warnpy3k

import os

__all__ = ["listdir", "opendir", "annotate", "reset"]

cache = {}

def reset():
    """Reset the cache completely."""
    global cache
    cache = {}

def listdir(path):
    """List directory contents, using cache."""
    try:
        cached_mtime, list = cache[path]
        del cache[path]
    except KeyError:
        cached_mtime, list = -1, []
    mtime = os.stat(path).st_mtime
    if mtime != cached_mtime:
        list = os.listdir(path)
        list.sort()
    cache[path] = mtime, list
    return list

opendir = listdir # XXX backward compatibility

def annotate(head, list):
    """Add '/' suffixes to directories."""
    for i in range(len(list)):
        if os.path.isdir(os.path.join(head, list[i])):
            list[i] = list[i] + '/'
back to top