New submission from STINNER Victor <victor.stin...@gmail.com>:

CPython expects __builtins__ to be a dict, but it is interesting to be able to 
use another type. For example, my pysandbox project (sandbox to secure Python) 
requires a read-only mapping for __builtins__.

The PEP 416 was rejected, so there is no builtin frozendict type, but it looks 
like the dictproxy type will be exposed as a public type.

Attached patch uses PyDict_CheckExact() to check if __builtins__ is a dict and 
add a "slow-path" for other types. The overhead on runtime performance should 
be very low (near zero), PyDict_CheckExact() just dereference a pointer (to 
read the object type) and compare two pointers.

The patch depends on issue #14383 patch (identifier.patch) for the 
__build_class__ identifier. I can write a new patch without this dependency if 
needed.

----------
components: Interpreter Core
files: builtins.patch
keywords: patch
messages: 156534
nosy: haypo
priority: normal
severity: normal
status: open
title: Support other types than dict for __builtins__
type: enhancement
versions: Python 3.3
Added file: http://bugs.python.org/file24989/builtins.patch

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

Reply via email to