\section{\module{statcache} ---
         An optimization of \function{os.stat()}}

\declaremodule{standard}{statcache}
\sectionauthor{Moshe Zadka}{moshez@zadka.site.co.il}
\modulesynopsis{Stat files, and remember results.}


\deprecated{2.2}{Use \function{\refmodule{os}.stat()} directly instead
of using the cache; the cache introduces a very high level of
fragility in applications using it and complicates application code
with the addition of cache management support.}

The \module{statcache} module provides a simple optimization to
\function{os.stat()}: remembering the values of previous invocations.

The \module{statcache} module defines the following functions:

\begin{funcdesc}{stat}{path}
This is the main module entry-point.
Identical for \function{os.stat()}, except for remembering the result
for future invocations of the function.
\end{funcdesc}

The rest of the functions are used to clear the cache, or parts of
it.

\begin{funcdesc}{reset}{}
Clear the cache: forget all results of previous \function{stat()}
calls.
\end{funcdesc}

\begin{funcdesc}{forget}{path}
Forget the result of \code{stat(\var{path})}, if any.
\end{funcdesc}

\begin{funcdesc}{forget_prefix}{prefix}
Forget all results of \code{stat(\var{path})} for \var{path} starting
with \var{prefix}.
\end{funcdesc}

\begin{funcdesc}{forget_dir}{prefix}
Forget all results of \code{stat(\var{path})} for \var{path} a file in 
the directory \var{prefix}, including \code{stat(\var{prefix})}.
\end{funcdesc}

\begin{funcdesc}{forget_except_prefix}{prefix}
Similar to \function{forget_prefix()}, but for all \var{path} values
\emph{not} starting with \var{prefix}.
\end{funcdesc}

Example:

\begin{verbatim}
>>> import os, statcache
>>> statcache.stat('.')
(16893, 2049, 772, 18, 1000, 1000, 2048, 929609777, 929609777, 929609777)
>>> os.stat('.')
(16893, 2049, 772, 18, 1000, 1000, 2048, 929609777, 929609777, 929609777)
\end{verbatim}
