summaryrefslogtreecommitdiffstatshomepage
path: root/py
Commit message (Collapse)AuthorAge
* py/moduerrno: Add EEXIST, EISDIR.Paul Sokolovsky2016-05-25
| | | | Useful to check file/dir operations result, in particular used by upip.
* py/objnamedtuple: Allow passing field names as a tuple.Antonin ENFRUN2016-05-23
| | | | | So the documentation's example works. Besides, a tuple can be more memory efficient.
* py/makeqstrdata.py: Allow to have double-quote characters in qstrs.Damien George2016-05-23
| | | | | When rendering the qstr for a C header file, the double-quate character must be escaped.
* py: Allow to stat and import frozen mpy files using new frozen "VFS".Damien George2016-05-23
| | | | Freezing mpy files using mpy-tool.py now works again.
* py/objstr: Fix mix-signed comparison in str.center().Paul Sokolovsky2016-05-22
|
* py/objstr*: Properly ifdef str.center().Dave Hylands2016-05-22
|
* py/objstr: Implement str.center().Paul Sokolovsky2016-05-22
| | | | | | Disabled by default, enabled in unix port. Need for this method easily pops up when working with text UI/reporting, and coding workalike manually again and again counter-productive.
* py/builtinimport: Unbreak bare-arm build.Paul Sokolovsky2016-05-21
|
* py/builtinimport: Unbreak minimal build.Paul Sokolovsky2016-05-21
| | | | | These are workarounds required until frozen .mpy loading following standard frozen modules code path.
* py/{builtinimport,frozenmod}: Rework frozen modules support to support packages.Paul Sokolovsky2016-05-21
| | | | | | | | | | Now frozen modules is treated just as a kind of VFS, and all operations performed on it correspond to operations on normal filesystem. This allows to support packages properly, and potentially also data files. This change also have changes to rework frozen bytecode modules support to use the same framework, but it's not finished (and actually may not work, as older adhox handling of any type of frozen modules is removed).
* py/mphal.h: Provide default prototypes for mp_hal_delay_us/mp_hal_ticks_us.Paul Sokolovsky2016-05-21
| | | | Similar to existing mp_hal_delay_ms/mp_hal_ticks_ms.
* py/stream: Add mp_stream_close() helper function.Paul Sokolovsky2016-05-20
|
* py: Declare constant data as properly constant.Damien George2016-05-20
| | | | | Otherwise some compilers (eg without optimisation) will put this read-only data in RAM instead of ROM.
* py/stream: Support both "exact size" and "one underlying call" operations.Paul Sokolovsky2016-05-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both read and write operations support variants where either a) a single call is made to the undelying stream implementation and returned buffer length may be less than requested, or b) calls are repeated until requested amount of data is collected, shorter amount is returned only in case of EOF or error. These operations are available from the level of C support functions to be used by other C modules to implementations of Python methods to be used in user-facing objects. The rationale of these changes is to allow to write concise and robust code to work with *blocking* streams of types prone to short reads, like serial interfaces and sockets. Particular object types may select "exact" vs "once" types of methods depending on their needs. E.g., for sockets, revc() and send() methods continue to be "once", while read() and write() thus converted to "exactly" versions. These changes don't affect non-blocking handling, e.g. trying "exact" method on the non-blocking socket will return as much data as available without blocking. No data available is continued to be signaled as None return value to read() and write(). From the point of view of CPython compatibility, this model is a cross between its io.RawIOBase and io.BufferedIOBase abstract classes. For blocking streams, it works as io.BufferedIOBase model (guaranteeing lack of short reads/writes), while for non-blocking - as io.RawIOBase, returning None in case of lack of data (instead of raising expensive exception, as required by io.BufferedIOBase). Such a cross-behavior should be optimal for MicroPython needs.
* py/modstruct: Raise ValueError on unsupported format char.Paul Sokolovsky2016-05-14
|
* py/objstringio: Add TODO comment about avoiding copying on .getvalue().Paul Sokolovsky2016-05-14
|
* py/objstr: Make dedicated splitlines function, supporting diff newlines.Damien George2016-05-13
| | | | | | | | It now supports \n, \r and \r\n as newline separators. Adds 56 bytes to stmhal and 80 bytes to unix x86-64. Fixes issue #1689.
* py/gc: gc_dump_alloc_table(): Dump heap offset instead of actual address.Paul Sokolovsky2016-05-13
| | | | | | Address printed was truncated anyway and in general confusing to outsider. A line which dumps it is still left in the source, commented, for peculiar cases when it may be needed (e.g. when running under debugger).
* gc: gc_dump_alloc_table(): Use '=' char for tail blocks.Paul Sokolovsky2016-05-13
| | | | | '=' is pretty natural character for tail, and gives less dense picture where it's easier to see what object types are actually there.
* py/moduerrno: Add EACCES, pretty common error on Unix.Paul Sokolovsky2016-05-13
|
* py/objexcept: Don't convert errno to str in constructor, do it in print.Damien George2016-05-12
| | | | | | | | OSError's are now printed like: OSError: [Errno 1] EPERM but only if the string corresponding to the errno is found.
* py/emitglue: Fix build on AArch64 (ARMv8, etc.) related to loading .mpy files.Paul Sokolovsky2016-05-12
| | | | Actual loading of .mpy files isn't tested.
* py/objfloat, py/modmath: Ensure M_PI and M_E defined.Colin Hogben2016-05-12
| | | | | | In some compliation enviroments (e.g. mbed online compiler) with strict standards compliance, <math.h> does not define constants such as M_PI. Provide fallback definitions of M_E and M_PI where needed.
* py: Add mp_errno_to_str() and use it to provide nicer OSError msgs.Damien George2016-05-12
| | | | | | | If an OSError is raised with an integer argument, and that integer corresponds to an errno, then the string for the errno is used as the argument to the exception, instead of the integer. Only works if the uerrno module is enabled.
* py/moduerrno: Add more constants to the errno module.Damien George2016-05-12
|
* py/mperrno: Add some more MP_Exxx constants, related to networking.Damien George2016-05-12
|
* py/gc: Make (byte)array type dumping conditional on these types being enabled.Paul Sokolovsky2016-05-11
|
* py/gc: gc_dump_alloc_table(): Show byte/str and (byte)array objects.Paul Sokolovsky2016-05-11
| | | | | | These are typical consumers of large chunks of memory, so it's useful to see at least their number (how much memory isn't clearly shown, as the data for these objects is allocated elsewhere).
* py/repl: Fix handling of backslash in quotes when checking continuation.Damien George2016-05-11
|
* py/mperrno: Add EAFNOSUPPORT definition.Damien George2016-05-10
|
* py/parse: Add uerrno to list of modules to look for constants in.Damien George2016-05-10
|
* py: Add uerrno module, with errno constants and dict.Damien George2016-05-10
|
* py: Add mperrno.h file with uPy defined errno constants.Damien George2016-05-10
|
* py/vstr: Change allocation policy, +16 to requested size, instead of *2.Paul Sokolovsky2016-05-10
| | | | | | | | | | | | | | | | | | | | Effect measured on esp8266 port: Before: >>> pystone_lowmem.main(10000) Pystone(1.2) time for 10000 passes = 44214 ms This machine benchmarks at 226 pystones/second >>> pystone_lowmem.main(10000) Pystone(1.2) time for 10000 passes = 44246 ms This machine benchmarks at 226 pystones/second After: >>> pystone_lowmem.main(10000) Pystone(1.2) time for 10000 passes = 44343ms This machine benchmarks at 225 pystones/second >>> pystone_lowmem.main(10000) Pystone(1.2) time for 10000 passes = 44376ms This machine benchmarks at 225 pystones/second
* Revert "py/objstr: .format(): Avoid call to vstr_null_terminated_str()."Paul Sokolovsky2016-05-09
| | | | | | This reverts commit 6de8dbb4880e58c68a08205cb2b9c15940143439. The change was incorrect (correct change would require comparing with end pointer in each if statement in the block).
* py/vstr: vstr_null_terminated_str(): Extend string by at most one byte.Paul Sokolovsky2016-05-09
| | | | | | | vstr_null_terminated_str is almost certainly a vstr finalization operation, so it should add the requested NUL byte, and not try to pre-allocate more. The previous implementation could actually allocate double of the buffer size.
* py/objstr: .format(): Avoid call to vstr_null_terminated_str().Paul Sokolovsky2016-05-09
| | | | | By comparing with string end pointer instead of checking for NUL byte. Should alleviate reallocations and fragmentation a tiny bit.
* py/mpz: Fix mpn_div so that it doesn't modify memory of denominator.Damien George2016-05-09
| | | | | | | | | | | | | Previous to this patch bignum division and modulo would temporarily modify the RHS argument to the operation (eg x/y would modify y), but on return the RHS would be restored to its original value. This is not allowed because arguments to binary operations are const, and in particular might live in ROM. The modification was to normalise the arg (and then unnormalise before returning), and this patch makes it so the normalisation is done on the fly and the arg is now accessed as read-only. This change doesn't increase the order complexity of the operation, and actually reduces code size.
* py/mpz: Do Python style division/modulo within bignum divmod routine.Damien George2016-05-08
| | | | | This patch consolidates the Python logic for division/modulo to one place within the bignum code.
* py/mpz: Fix bug with overflowing C-shift in division routine.Damien George2016-05-08
| | | | | | | When DIG_SIZE=32, a uint32_t is used to store limbs, and no normalisation is needed because the MSB is already set, then there will be left and right shifts (in C) by 32 of a 32-bit variable, leading to undefined behaviour. This patch fixes this bug.
* py/repl: If there're no better alternatives, try to complete "import".Paul Sokolovsky2016-05-08
| | | | | | Also do that only for the first word in a line. The idea is that when you start up interpreter, high chance that you want to do an import. With this patch, this can be achieved with "i<tab>".
* py/runtime: Properly handle passing user mappings to ** keyword args.Damien George2016-05-07
|
* py/objstr: Binary type of str/bytes for buffer protocol is 'B'.Damien George2016-05-07
| | | | | | The type is an unsigned 8-bit value, since bytes objects are exactly that. And it's also sensible for unicode strings to return unsigned values when accessed in a byte-wise manner (CPython does not allow this).
* py/obj: Add warning note about get_array return value and GC blocks.Damien George2016-05-04
|
* py/modcollections: Rename module name have "u" prefix for consistency.Paul Sokolovsky2016-05-02
|
* py/modio: Rename module name to "uio" for consistency with other modules.Paul Sokolovsky2016-05-02
|
* extmod/modwebrepl: Module to handle WebREPL protocol.Paul Sokolovsky2016-04-29
| | | | | | | While just a websocket is enough for handling terminal part of WebREPL, handling file transfer operations requires demultiplexing and acting upon, which is encapsulated in _webrepl class provided by this module, which wraps a websocket object.
* py/vm: "yield from" didn't handle MP_OBJ_STOP_ITERATION optimization.Paul Sokolovsky2016-04-28
| | | | E.g. crashed when yielding from already stopped generators.
* py/mkrules.mk: Typo fixes in comments.Paul Sokolovsky2016-04-26
|
* py/emitnative: Use MP_OBJ_NEW_SMALL_INT instead of manual bit shifting.Damien George2016-04-26
|