circuitpython/py
Damien George 78d702c300 py: Allow builtins to be overridden.
This patch adds a configuration option (MICROPY_CAN_OVERRIDE_BUILTINS)
which, when enabled, allows to override all names within the builtins
module.  A builtins override dict is created the first time the user
assigns to a name in the builtins model, and then that dict is searched
first on subsequent lookups.  Note that this implementation doesn't
allow deleting of names.

This patch also does some refactoring of builtins code, creating the
modbuiltins.c file.

Addresses issue #959.
2014-12-09 16:19:48 +00:00
..
argcheck.c py: Use shorter, static error msgs when ERROR_REPORTING_TERSE enabled. 2014-11-06 17:36:16 +00:00
asmarm.c py: Implement native load for viper. 2014-10-12 16:59:29 +01:00
asmarm.h py: Implement native load for viper. 2014-10-12 16:59:29 +01:00
asmthumb.c py: Make macro names in assemblers consistent, and tidy up a bit. 2014-09-29 19:42:06 +01:00
asmthumb.h py: Make macro names in assemblers consistent, and tidy up a bit. 2014-09-29 19:42:06 +01:00
asmx64.c py: Implement native load for viper. 2014-10-12 16:59:29 +01:00
asmx64.h py: Implement native load for viper. 2014-10-12 16:59:29 +01:00
asmx86.c py: Implement native load for viper. 2014-10-12 16:59:29 +01:00
asmx86.h py: Implement native load for viper. 2014-10-12 16:59:29 +01:00
bc0.h py: Compress load-int, load-fast, store-fast, unop, binop bytecodes. 2014-10-25 20:23:13 +01:00
bc.c py: Fix some macros defines; cleanup some includes. 2014-11-05 21:16:41 +00:00
bc.h py: Store bytecode arg names in bytecode (were in own array). 2014-10-25 20:23:13 +01:00
binary.c py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack. 2014-12-05 23:13:52 +00:00
binary.h py: Make mp_binary_set_val work on big endian machine. 2014-10-06 15:05:35 +00:00
builtin.h py: Allow builtins to be overridden. 2014-12-09 16:19:48 +00:00
builtinevex.c py: Implement compile builtin, enabled only on unix port. 2014-10-25 22:07:25 +01:00
builtinimport.c py: Allow builtins to be overridden. 2014-12-09 16:19:48 +00:00
compile.c py: Fix bug with right-shifting small ints by large amounts. 2014-11-02 02:41:30 +02:00
compile.h py: Implement proper context save/restore for eval/exec; factor code. 2014-10-05 20:13:34 +01:00
emit.h py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files. 2014-09-08 23:05:16 +01:00
emitbc.c py: Compress load-int, load-fast, store-fast, unop, binop bytecodes. 2014-10-25 20:23:13 +01:00
emitcommon.c py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files. 2014-09-08 23:05:16 +01:00
emitcpy.c py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files. 2014-09-08 23:05:16 +01:00
emitglue.c unix: Make -v dump memory info at exit. 2014-10-26 22:36:56 +00:00
emitglue.h py: Store bytecode arg names in bytecode (were in own array). 2014-10-25 20:23:13 +01:00
emitinlinethumb.c py: Make macro names in assemblers consistent, and tidy up a bit. 2014-09-29 19:42:06 +01:00
emitnative.c py: Partially fix viper multi-comparison; add test for it. 2014-10-19 19:00:51 +01:00
emitpass1.c py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files. 2014-09-08 23:05:16 +01:00
formatfloat.c formatfloat.c: Typo fix in comment. 2014-07-17 20:45:58 +03:00
formatfloat.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
gc.c py: Fix some macros defines; cleanup some includes. 2014-11-05 21:16:41 +00:00
gc.h py: Make gc.enable/disable just control auto-GC; alloc is still allowed. 2014-10-31 21:30:46 +00:00
grammar.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
lexer.c py: Fix printing of size_t entity; fix qemu-arm for changes to lexer. 2014-12-05 22:50:16 +00:00
lexer.h py: Optimise lexer by exposing lexer type. 2014-12-05 19:35:18 +00:00
lexerstr.c py: Optimise lexer by exposing lexer type. 2014-12-05 19:35:18 +00:00
lexerunix.c py: Optimise lexer by exposing lexer type. 2014-12-05 19:35:18 +00:00
lexerunix.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
makeqstrdata.py py: Use % str formatting instead of {} in makeqstrdata.py. 2014-09-05 13:16:19 +01:00
malloc.c py: Make gc.enable/disable just control auto-GC; alloc is still allowed. 2014-10-31 21:30:46 +00:00
map.c map: Add empty fixed map. 2014-11-27 17:37:07 +00:00
misc.h py: Add further checks for failed malloc in lexer init functions. 2014-10-09 16:53:37 +01:00
mkenv.mk py, mk: Revert change where build variables set with ?=. 2014-06-07 13:14:45 +01:00
mkrules.mk py: Fix order-only dependencies in mkrules.mk and py.mk. 2014-11-06 18:48:38 +00:00
modarray.c Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modbuiltins.c py: Allow builtins to be overridden. 2014-12-09 16:19:48 +00:00
modcmath.c Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modcollections.c Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modgc.c Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modio.c Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modmath.c Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modmicropython.c modmicropython: Move mem_info() and qstr_info() functions from unix port. 2014-12-01 20:42:24 +02:00
modstruct.c Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modsys.c modsys: Add sys.print_exception(exc, file=sys.stdout) function. 2014-12-08 20:25:49 +00:00
mpconfig.h py: Allow builtins to be overridden. 2014-12-09 16:19:48 +00:00
mpz.c mpz: Fix 64bit msvc build 2014-10-30 23:00:24 +00:00
mpz.h mpz: Fix 64bit msvc build 2014-10-30 23:00:24 +00:00
nativeglue.c py: Add casting to viper; add native mem stores to viper. 2014-09-29 22:10:41 +01:00
nlr.h py: Add NLR support for xtensa CPU. 2014-11-27 20:29:33 +00:00
nlrsetjmp.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
nlrthumb.S py: Fix some macros defines; cleanup some includes. 2014-11-05 21:16:41 +00:00
nlrx64.S py: Clean up nlr*.S to make it easier to read; fix clang .bss error. 2014-09-26 13:07:26 +00:00
nlrx86.S py: Clean up nlr*.S to make it easier to read; fix clang .bss error. 2014-09-26 13:07:26 +00:00
nlrxtensa.S py: Add NLR support for xtensa CPU. 2014-11-27 20:29:33 +00:00
obj.c modsys: Add sys.print_exception(exc, file=sys.stdout) function. 2014-12-08 20:25:49 +00:00
obj.h py: Allow builtins to be overridden. 2014-12-09 16:19:48 +00:00
objarray.c py: Allow bytes/bytearray/array to be init'd by buffer protocol objects. 2014-12-04 15:46:14 +00:00
objarray.h py: Change uint to mp_uint_t in runtime.h, stackctrl.h, binary.h. 2014-08-30 14:59:21 +01:00
objbool.c py: Make native emitter handle multi-compare and not/is not/not in ops. 2014-09-23 14:15:45 +00:00
objboundmeth.c py: Change [u]int to mp_[u]int_t in qstr.[ch], and some other places. 2014-10-03 19:52:22 +01:00
objcell.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objclosure.c objclosure: Fix printing of generator closures. 2014-10-16 00:14:01 +03:00
objcomplex.c py and libm: Add asinf,acosf; print higher precision for float. 2014-09-11 22:24:45 +01:00
objdict.c py: Add native json printing using existing print framework. 2014-09-17 22:56:34 +01:00
objenumerate.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objexcept.c py: Make gc.enable/disable just control auto-GC; alloc is still allowed. 2014-10-31 21:30:46 +00:00
objfilter.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objfloat.c py: Implement divmod, % and proper // for floating point. 2014-09-13 18:43:09 +01:00
objfun.c py: Fix some macros defines; cleanup some includes. 2014-11-05 21:16:41 +00:00
objfun.h py: Store bytecode arg names in bytecode (were in own array). 2014-10-25 20:23:13 +01:00
objgenerator.c py: Store bytecode arg names in bytecode (were in own array). 2014-10-25 20:23:13 +01:00
objgenerator.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objgetitemiter.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objint_longlong.c py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack. 2014-12-05 23:13:52 +00:00
objint_mpz.c py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack. 2014-12-05 23:13:52 +00:00
objint.c py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack. 2014-12-05 23:13:52 +00:00
objint.h py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
objlist.c py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
objlist.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objmap.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objmodule.c py: Allow builtins to be overridden. 2014-12-09 16:19:48 +00:00
objmodule.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objnamedtuple.c py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
objnone.c py: Add native json printing using existing print framework. 2014-09-17 22:56:34 +01:00
objobject.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objproperty.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objrange.c py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
objreversed.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objset.c py: Make map, dict, set use mp_int_t/mp_uint_t exclusively. 2014-08-30 13:23:35 +01:00
objslice.c Rename bultins config variables to MICROPY_PY_BUILTINS_*. 2014-06-01 13:32:54 +01:00
objstr.c py: Allow bytes/bytearray/array to be init'd by buffer protocol objects. 2014-12-04 15:46:14 +00:00
objstr.h py: Change [u]int to mp_[u]int_t in qstr.[ch], and some other places. 2014-10-03 19:52:22 +01:00
objstringio.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objstrunicode.c objstr: Allow to convert any buffer proto object to str. 2014-10-31 00:03:53 +02:00
objtuple.c py: Add native json printing using existing print framework. 2014-09-17 22:56:34 +01:00
objtuple.h Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objtype.c py: Use shorter, static error msgs when ERROR_REPORTING_TERSE enabled. 2014-11-06 17:36:16 +00:00
objtype.h py: Fix builtin callable so it checks user-defined instances correctly. 2014-11-03 16:09:39 +00:00
objzip.c py: Small simplifications in tuple and list accessors. 2014-08-30 15:17:47 +01:00
opmethods.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
parse.c py: Optimise lexer by exposing lexer type. 2014-12-05 19:35:18 +00:00
parse.h py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
parsehelper.c py: Optimise lexer by exposing lexer type. 2014-12-05 19:35:18 +00:00
parsehelper.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
parsenum.c py: Use shorter, static error msgs when ERROR_REPORTING_TERSE enabled. 2014-11-06 17:36:16 +00:00
parsenum.h parser: Convert (u)int to mp_(u)int_t. 2014-07-03 14:13:33 +01:00
parsenumbase.c parser: Convert (u)int to mp_(u)int_t. 2014-07-03 14:13:33 +01:00
parsenumbase.h parser: Convert (u)int to mp_(u)int_t. 2014-07-03 14:13:33 +01:00
pfenv_printf.c pfenv_printf: Properly implement %p format specifier. 2014-11-27 17:38:03 +00:00
pfenv.c py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
pfenv.h modsys: Add sys.print_exception(exc, file=sys.stdout) function. 2014-12-08 20:25:49 +00:00
py-version.sh - Let the build environment decide about the toolchain to be used, in case 2014-06-07 09:16:42 +02:00
py.mk py: Allow builtins to be overridden. 2014-12-09 16:19:48 +00:00
qstr.c py: Make gc.enable/disable just control auto-GC; alloc is still allowed. 2014-10-31 21:30:46 +00:00
qstr.h py: Change [u]int to mp_[u]int_t in qstr.[ch], and some other places. 2014-10-03 19:52:22 +01:00
qstrdefs.h modsys: Add sys.print_exception(exc, file=sys.stdout) function. 2014-12-08 20:25:49 +00:00
repl.c py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
repl.h Tidy up some configuration options. 2014-05-21 20:32:59 +01:00
runtime0.h py: Make native emitter handle multi-compare and not/is not/not in ops. 2014-09-23 14:15:45 +00:00
runtime.c py: Allow builtins to be overridden. 2014-12-09 16:19:48 +00:00
runtime.h py: Remove obsolute function declaration. 2014-11-06 17:31:18 +00:00
scope.c py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files. 2014-09-08 23:05:16 +01:00
scope.h py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files. 2014-09-08 23:05:16 +01:00
sequence.c py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
showbc.c py: Compress load-int, load-fast, store-fast, unop, binop bytecodes. 2014-10-25 20:23:13 +01:00
smallint.c py: Fix smallint modulo with negative arguments. 2014-10-22 23:05:50 +01:00
smallint.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
stackctrl.c py: Change uint to mp_uint_t in runtime.h, stackctrl.h, binary.h. 2014-08-30 14:59:21 +01:00
stackctrl.h py: Change uint to mp_uint_t in runtime.h, stackctrl.h, binary.h. 2014-08-30 14:59:21 +01:00
stream.c py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack. 2014-12-05 23:13:52 +00:00
stream.h stream: Implement seek operation support via ioctl, wrapped in generic method. 2014-11-17 00:16:14 +02:00
unicode.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
unicode.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
vm.c py, vm: Make unum a local variable for each opcode that uses it. 2014-12-02 19:25:10 +00:00
vmentrytable.h py: Compress load-int, load-fast, store-fast, unop, binop bytecodes. 2014-10-25 20:23:13 +01:00
vstr.c py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00