Remove the dircache module.
This commit is contained in:
parent
7ecf3dcaee
commit
f4fd99344a
|
@ -1,56 +0,0 @@
|
|||
|
||||
:mod:`dircache` --- Cached directory listings
|
||||
=============================================
|
||||
|
||||
.. module:: dircache
|
||||
:synopsis: Return directory listing, with cache mechanism.
|
||||
.. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il>
|
||||
|
||||
|
||||
The :mod:`dircache` module defines a function for reading directory listing
|
||||
using a cache, and cache invalidation using the *mtime* of the directory.
|
||||
Additionally, it defines a function to annotate directories by appending a
|
||||
slash.
|
||||
|
||||
The :mod:`dircache` module defines the following functions:
|
||||
|
||||
|
||||
.. function:: reset()
|
||||
|
||||
Resets the directory cache.
|
||||
|
||||
|
||||
.. function:: listdir(path)
|
||||
|
||||
Return a directory listing of *path*, as gotten from :func:`os.listdir`. Note
|
||||
that unless *path* changes, further call to :func:`listdir` will not re-read the
|
||||
directory structure.
|
||||
|
||||
Note that the list returned should be regarded as read-only. (Perhaps a future
|
||||
version should change it to return a tuple?)
|
||||
|
||||
|
||||
.. function:: opendir(path)
|
||||
|
||||
Same as :func:`listdir`. Defined for backwards compatibility.
|
||||
|
||||
|
||||
.. function:: annotate(head, list)
|
||||
|
||||
Assume *list* is a list of paths relative to *head*, and append, in place, a
|
||||
``'/'`` to each path which points to a directory.
|
||||
|
||||
::
|
||||
|
||||
>>> import dircache
|
||||
>>> a = dircache.listdir('/')
|
||||
>>> a = a[:] # Copy the return value so we can change 'a'
|
||||
>>> a
|
||||
['bin', 'boot', 'cdrom', 'dev', 'etc', 'floppy', 'home', 'initrd', 'lib', 'lost+
|
||||
found', 'mnt', 'proc', 'root', 'sbin', 'tmp', 'usr', 'var', 'vmlinuz']
|
||||
>>> dircache.annotate('/', a)
|
||||
>>> a
|
||||
['bin/', 'boot/', 'cdrom/', 'dev/', 'etc/', 'floppy/', 'home/', 'initrd/', 'lib/
|
||||
', 'lost+found/', 'mnt/', 'proc/', 'root/', 'sbin/', 'tmp/', 'usr/', 'var/', 'vm
|
||||
linuz']
|
||||
|
|
@ -23,7 +23,6 @@ in this chapter is:
|
|||
fnmatch.rst
|
||||
linecache.rst
|
||||
shutil.rst
|
||||
dircache.rst
|
||||
macpath.rst
|
||||
|
||||
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
"""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."""
|
||||
|
||||
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] + '/'
|
|
@ -725,7 +725,7 @@ def dash_R(the_module, test, indirect_test, huntrleaks):
|
|||
|
||||
def dash_R_cleanup(fs, ps, pic, abcs):
|
||||
import gc, copy_reg
|
||||
import _strptime, linecache, dircache
|
||||
import _strptime, linecache
|
||||
import urlparse, urllib, urllib2, mimetypes, doctest
|
||||
import struct, filecmp, _abcoll
|
||||
from distutils.dir_util import _path_created
|
||||
|
@ -762,7 +762,6 @@ def dash_R_cleanup(fs, ps, pic, abcs):
|
|||
urlparse.clear_cache()
|
||||
urllib.urlcleanup()
|
||||
urllib2.install_opener(None)
|
||||
dircache.reset()
|
||||
linecache.clearcache()
|
||||
mimetypes._default_mime_types()
|
||||
filecmp._cache.clear()
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
"""
|
||||
Test cases for the dircache module
|
||||
Nick Mathewson
|
||||
"""
|
||||
|
||||
import unittest
|
||||
from test.test_support import run_unittest, TESTFN
|
||||
import dircache, os, time, sys, tempfile
|
||||
|
||||
|
||||
class DircacheTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.tempdir = tempfile.mkdtemp()
|
||||
|
||||
def tearDown(self):
|
||||
for fname in os.listdir(self.tempdir):
|
||||
self.delTemp(fname)
|
||||
os.rmdir(self.tempdir)
|
||||
|
||||
def writeTemp(self, fname):
|
||||
f = open(os.path.join(self.tempdir, fname), 'w')
|
||||
f.close()
|
||||
|
||||
def mkdirTemp(self, fname):
|
||||
os.mkdir(os.path.join(self.tempdir, fname))
|
||||
|
||||
def delTemp(self, fname):
|
||||
fname = os.path.join(self.tempdir, fname)
|
||||
if os.path.isdir(fname):
|
||||
os.rmdir(fname)
|
||||
else:
|
||||
os.unlink(fname)
|
||||
|
||||
def test_listdir(self):
|
||||
## SUCCESSFUL CASES
|
||||
entries = dircache.listdir(self.tempdir)
|
||||
self.assertEquals(entries, [])
|
||||
|
||||
# Check that cache is actually caching, not just passing through.
|
||||
self.assert_(dircache.listdir(self.tempdir) is entries)
|
||||
|
||||
# Directories aren't "files" on Windows, and directory mtime has
|
||||
# nothing to do with when files under a directory get created.
|
||||
# That is, this test can't possibly work under Windows -- dircache
|
||||
# is only good for capturing a one-shot snapshot there.
|
||||
|
||||
if sys.platform[:3] not in ('win', 'os2'):
|
||||
# Sadly, dircache has the same granularity as stat.mtime, and so
|
||||
# can't notice any changes that occurred within 1 sec of the last
|
||||
# time it examined a directory.
|
||||
time.sleep(1)
|
||||
self.writeTemp("test1")
|
||||
entries = dircache.listdir(self.tempdir)
|
||||
self.assertEquals(entries, ['test1'])
|
||||
self.assert_(dircache.listdir(self.tempdir) is entries)
|
||||
|
||||
## UNSUCCESSFUL CASES
|
||||
self.assertRaises(OSError, dircache.listdir, self.tempdir+"_nonexistent")
|
||||
|
||||
def test_annotate(self):
|
||||
self.writeTemp("test2")
|
||||
self.mkdirTemp("A")
|
||||
lst = ['A', 'test2', 'test_nonexistent']
|
||||
dircache.annotate(self.tempdir, lst)
|
||||
self.assertEquals(lst, ['A/', 'test2', 'test_nonexistent'])
|
||||
|
||||
|
||||
def test_main():
|
||||
run_unittest(DircacheTests)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_main()
|
Loading…
Reference in New Issue