New submission from Scott Sanderson <scout...@gmail.com>:

In some circumstances, it's useful to be able in inspect the parameters with 
which an instance of functools.lru_cache was instantiated. It's currently 
possible to recover the cache's maxsize via the .cache_info() method, but 
there's no way to recover the value passed for `typed`, which controls whether 
the lru_cache's cache is partitioned by input type.

This came up in the context of cloudpickle, a library that tries to extend 
pickle to support more types (in particular, interactively-defined functions 
and classes) for use-cases like cluster computing. 

It's currently not possible to pickle an lru-cache decorated function that's 
defined in __main__ (which includes, e.g. a Jupyter Notebook). We can 
**almost** fix this with a pure library solution (see 
https://github.com/cloudpipe/cloudpickle/pull/309), but we're currently blocked 
by the fact that there's no way to recover the value that was passed for 
`typed`. Exposing a .typed attribute on the extension type for lru_cached 
functions fixes this

For more discussion, see the above linked PR, along with 
https://github.com/cloudpipe/cloudpickle/issues/178.

----------
components: Library (Lib)
messages: 355226
nosy: Scott Sanderson2
priority: normal
severity: normal
status: open
title: Expose the value passed of typed passed to functools.lru_cache
type: enhancement
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue38565>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to