pony
pony copied to clipboard
include code object id into extractors cache key
When caching function's extractors use more stable key into the extractors_cache.
The id() of function object is not nessesary unique, as CPython may re-use same memory in case function object is un-referenced. This situation happens when Database objects are dynamically created and destored in the same process.
If a new different function object function is instantiated at the old address, we'll get wrong entry from extractors_cache.
The function's code object id() is more stable. By including code object id() into the cache key this issue is solved.
Solves: https://github.com/ponyorm/pony/issues/675