[Python-Dev] PEP 428: Pathlib -> stat caching

Antoine Pitrou solipsis at pitrou.net
Mon Sep 16 22:43:31 CEST 2013


On Mon, 16 Sep 2013 16:14:43 -0400
"R. David Murray" <rdmurray at bitdance.com> wrote:
> On Mon, 16 Sep 2013 15:48:54 -0400, Brett Cannon <brett at python.org> wrote:
> > On Mon, Sep 16, 2013 at 3:45 PM, Antoine Pitrou <solipsis at pitrou.net> wrote:
> > > So I would like to propose the following API change:
> > >
> > > - Path.stat() (and stat-accessing methods such as get_mtime()...)
> > >   returns an uncached stat object by default
> > >
> > > - Path.cache_stat() can be called to return the stat() *and* cache it
> > >   for future use, such that any future call to stat(), cache_stat() or
> > >   a stat-accessing function reuses that cached stat
> > >
> > > In other words, only if you use cache_stat() at least once is the
> > > stat() value cached and reused by the Path object.
> > > (also, it's a per-Path decision)
> > >
> > 
> > Any reason why stat() can't get a keyword-only cached=True argument
> > instead? Or have stat() never cache() but stat_cache() always so that
> > people can choose if they want fresh or cached based on API and not whether
> > some library happened to make a decision for them?
> 
> Well, we tend to avoid single boolean arguments in favor of differently
> named functions.
> 
> But here is an alternate API:  expose the state by having a 'cache_stat'
> attribute of the Path that is 'False' by default but can be set 'True'.

Thanks for the suggestion, that's a possibility too.

> It could also (or only?) be set via an optional constructor argument.

That's impractical if you get the Path object from a library call.

Regards

Antoine.




More information about the Python-Dev mailing list