On Tue, Jul 14, 2015 at 11:39 AM Matthew Keeter <matt.j.kee...@gmail.com> wrote:
> The docs for PyRun_String say that both globals and locals should be > dictionaries [1]. > > However, digging into the source [2] shows me that locals doesn’t need to > be a dictionary; > it just needs to implement the mapping protocol. Is it a bad idea to rely > on this fact? > > (Context: I’m plugging a custom object into locals that uses __getitem__ > to track lookups.) > As you pointed out in the code, that's in the frame creation code and not directly the PyRun_StringFlags code, so technically there is a chance for us to insert a PyDict_CheckExact() call before hitting the code you linked to. As to whether we could loosen the documented restrictions so they are guaranteed, it would be best to file an issue at bugs.python.org requesting the restriction be officially loosened and if people are amenable then a test to make sure no one accidentally breaks the API promise.
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com