Paul Sokolovsky
42453dc98e
py: Make ImportError message match CPython's.
2014-04-12 03:00:40 +03:00
Paul Sokolovsky
2ff3d9d0b2
builtinimport: Set __path__ attribute ASAP as it's clear we have a package.
...
This helps with handling "recursive" imports in sane manner, for example
when foo/__init__.py has something like "from foo import submod".
2014-04-12 02:55:18 +03:00
Paul Sokolovsky
69f1867da5
builtinimport: Fix thinko passing 0 vs NULL.
2014-04-12 02:55:18 +03:00
Damien George
8f19317540
py: Remove useless implementations of NOT_EQUAL in binary_op's.
...
I'm pretty sure these are never reached, since NOT_EQUAL is always
converted into EQUAL in mp_binary_op. No one should call
type.binary_op directly, they should always go through mp_binary_op
(or mp_obj_is_equal).
2014-04-12 00:20:39 +01:00
Damien George
db049c2e00
py: Change inline to static inline for 2 functions.
2014-04-12 00:08:40 +01:00
Damien George
7b4330191f
py, compiler: Fix up creation of default positionals tuple.
...
With new order of evaluation of defaults, creating the tuple was done in
the wrong spot.
2014-04-12 00:05:49 +01:00
Damien George
c42e4b6c53
Merge branch 'master' of github.com:micropython/micropython
2014-04-11 23:26:18 +01:00
Damien George
8b19db00aa
py, compiler: Fix compiling of keyword args following named star.
2014-04-11 23:25:34 +01:00
Paul Sokolovsky
b9b1c00c8a
showbs: Dump LOAD_CONST_BYTES.
2014-04-12 00:39:55 +03:00
Paul Sokolovsky
00a9d138b2
showbc: Dump LOAD_NULL.
2014-04-12 00:39:55 +03:00
Paul Sokolovsky
af620abcb5
py: Implement "from pkg import mod" variant of import.
2014-04-12 00:39:55 +03:00
Paul Sokolovsky
13d52df4c5
builtinimport: Set __path__ attribute on packages.
...
Per https://docs.python.org/3.3/reference/import.html , this is the way to
tell module from package: "Specifically, any module that contains a __path__
attribute is considered a package." And it for sure will be needed to
implement relative imports.
2014-04-12 00:39:55 +03:00
Paul Sokolovsky
e081329098
builtinimport: Elaborate debug output support.
2014-04-12 00:39:55 +03:00
Paul Sokolovsky
a925cb54f1
py: Preprocess qstrdefs.h before feeding to makeqstrdata.py.
...
This is alternative implementation of supporting conditionals in qstrdefs.h,
hard to say if it's much cleaner than munging #ifdef's in Python code...
2014-04-12 00:39:55 +03:00
Paul Sokolovsky
6ea0e928d8
Revert "makeqstrdata.py: Add support for conditionally defined qstrs."
...
This reverts commit acb133d1b1
.
Conditionals will be suported using C preprocessor.
2014-04-12 00:39:54 +03:00
Damien George
1184094839
py: Revert some inline functions back to macros, since they bloat stmhal.
2014-04-11 22:30:09 +01:00
Damien George
69b89d21b2
py: Change compile order for default positional and keyword args.
...
This simplifies the compiler a little, since now it can do 1 pass over
a function declaration, to determine default arguments. I would have
done this originally, but CPython 3.3 somehow had the default keyword
args compiled before the default position args (even though they appear
in the other order in the text of the script), and I thought it was
important to have the same order of execution when evaluating default
arguments. CPython 3.4 has changed the order to the more obvious one,
so we can also change.
2014-04-11 13:38:30 +00:00
Damien George
0e3329a6b8
py, compiler: Allow lambda's to yield.
2014-04-11 13:10:21 +00:00
Damien George
0288cf020e
py: Implement compiling of *-expr within parenthesis.
2014-04-11 11:53:00 +00:00
Damien George
a5c82a8187
py: Convert some macros to inline functions (in obj.h).
...
Also convert mp_obj_is_integer to an inline function.
Overall this decreased code size (at least on 32-bit x86 machine).
2014-04-11 11:16:53 +00:00
Damien George
e22d76e73b
py: Fix up object equality test.
...
It regressed a bit after implementing float/complex equality. Now it
should be improved, and support more equality tests.
2014-04-11 10:52:06 +00:00
Damien George
a9ddd6d9df
py: Simplify and improve mp_get_index.
...
It has (again) a fast path for ints, and a simplified "slow" path for
everything else.
Also simplify the way str indexing is done (now matches tuple and list).
2014-04-11 10:40:38 +00:00
Damien George
5f3fe3aa14
Merge branch 'master' of github.com:micropython/micropython
2014-04-11 10:11:07 +01:00
Damien George
b8a053aeb1
py: Implement float and complex == and !=.
...
Addresses issue #462 .
2014-04-11 10:10:37 +01:00
Damien George
87e380b7ea
Merge pull request #461 from lurch/patch-1
...
Update mkrules.mk
2014-04-11 09:55:50 +01:00
Damien George
686afc5c0a
py: Check that sequence has 2 elements for dict iterable constructor.
2014-04-11 09:13:30 +01:00
Paul Sokolovsky
be019ce063
objdict: Implement construction from iterable of pairs.
...
Pairs are limited to tuples so far.
2014-04-11 07:01:15 +03:00
Paul Sokolovsky
12a04392b9
objdict: Implement __getitem__ method.
2014-04-11 05:24:44 +03:00
Paul Sokolovsky
0c43cf9154
modstruct: Basic implementation of native struct alignment and types.
2014-04-11 03:59:16 +03:00
Paul Sokolovsky
ef9124f5ff
binary: Rename array accessors for clarity.
2014-04-11 03:58:49 +03:00
Paul Sokolovsky
2da81fa80c
mpconfig.h: Add basic support for target endianness configuration.
...
A specific target can define either MP_ENDIANNESS_LITTLE or MP_ENDIANNESS_BIG
to 1. Default is MP_ENDIANNESS_LITTLE.
TODO: Autodetect based on compiler predefined macros?
2014-04-11 03:58:49 +03:00
Paul Sokolovsky
6582d64d01
modstruct: Refactor to support both LE and BE packed structs.
2014-04-11 03:58:49 +03:00
Andrew Scheller
83346749da
Update mkrules.mk
...
make 'make clean' cleaner ;-)
2014-04-11 00:41:59 +01:00
Damien George
57e99ebc86
py: Add simple way of looking up constants in compiler.
...
Working towards trying to support compile-time constants (see discussion
in issue #227 ), this patch allows the compiler to look inside arbitrary
uPy objects at compile time. The objects to search are given by the
macro MICROPY_EXTRA_CONSTANTS (so they must be constant/ROM objects),
and the constant folding occures on forms base.attr (both base and attr
must be id's).
It works, but it breaks strict CPython compatibility, since the lookup
will succeed even without importing the namespace.
2014-04-10 22:42:11 +01:00
Damien George
ae491055fa
py: Fix float/complex binop returning NULL; implement complex power.
2014-04-10 20:08:11 +01:00
Damien George
d66ae18640
py: Simplify stack get/set to become stack adjust in emitters.
...
Can do this now that the stack size calculation is improved.
2014-04-10 17:28:54 +00:00
Damien George
069a35e3a5
py, compiler: Improve stack depth counting.
...
Much less of a hack now. Hopefully it's correct!
2014-04-10 17:22:19 +00:00
Damien George
190d1ba297
py: Make sure state/stack of byte code function has at least 1 slot.
2014-04-10 16:59:56 +00:00
Damien George
a1ef441d18
py: Fix VM stack overflow detection.
2014-04-10 16:59:44 +00:00
Damien George
e90be0ddf5
py: Add option to VM to detect stack overflow.
2014-04-10 16:21:34 +00:00
Damien George
c90717a3e4
py: Add missing dummy functions to pass 1 emitter.
2014-04-10 15:40:38 +00:00
Damien George
58ba4c3b4c
py: Check explicitly for memory allocation failure in parser.
...
Previously, a failed malloc/realloc would throw an exception, which was
not caught. I think it's better to keep the parser free from NLR
(exception throwing), hence this patch.
2014-04-10 14:27:31 +00:00
Damien George
ffa9bddfc4
Make lexerunix not allocate RAM for the entire script.
...
Now reads in small chunks at a time.
2014-04-10 15:00:58 +01:00
Damien George
f0954e3fac
py: Add emergency exception object for when heap allocation fails.
2014-04-10 14:38:25 +01:00
Damien George
6f355fd3b9
py: Make labels unsigned ints (converted from int).
...
Labels should never be negative, and this modified type signature
reflects that.
2014-04-10 14:11:31 +01:00
Damien George
bf8ae4d96e
py: Fix modstruct to compile on 64-bit machine.
2014-04-10 13:53:31 +01:00
Damien George
3a8b1607fc
Merge branch 'master' of github.com:micropython/micropython
2014-04-10 12:58:31 +01:00
Damien George
635543c72c
py, compiler: Implement compiling of relative imports.
2014-04-10 12:56:52 +01:00
Damien George
2e9eb2d207
py: Fix lexer so it doesn't allow ! and ..
2014-04-10 12:19:33 +01:00
Damien George
175cecfa87
py: Make form-feed character a space (following C isspace).
...
Eg, in CPython stdlib, email/header.py has a form-feed character.
2014-04-10 11:39:36 +01:00