The memory and redis backends already use pickle.HIGHEST_PROTOCOL but the file backend doesn't
This makes some objects uncacheable with file backend, due to being unpickleable, whereas with HIGHEST_PROTOCOL they can succeed (in my case it was a lxml.etree.XMLParser object).
I wondered if it was a deliberate choice due to dbm backend maybe not handling binary properly? I did some quick checks with anydbm and my pickled lxml parser and it seemed fine. All the tests in this project pass too.
The
memory
andredis
backends already usepickle.HIGHEST_PROTOCOL
but thefile
backend doesn'tThis makes some objects uncacheable with file backend, due to being unpickleable, whereas with
HIGHEST_PROTOCOL
they can succeed (in my case it was alxml.etree.XMLParser
object).I wondered if it was a deliberate choice due to dbm backend maybe not handling binary properly? I did some quick checks with
anydbm
and my pickled lxml parser and it seemed fine. All the tests in this project pass too.