Commit Graph

3474 Commits

Author SHA1 Message Date
sommersoft
9d3fcf9a0d add frequencyio to circuipy_ configs 2019-02-24 18:05:51 -06:00
Scott Shawcroft
0261c57d32
Merge pull request #1582 from dhalbert/remove-u-names
rename ure, ujson, and uerrno to re, json, and errno
2019-02-21 13:24:07 -08:00
Dan Halbert
10d3a20f8a Add CIRCUITPY macro; rename u* only when CIRCUITPY=1 2019-02-21 11:09:44 -05:00
Dan Halbert
c5dbdbe88c rename ure, ujson, and uerrno to re, json, and errno 2019-02-21 00:33:36 -05:00
Scott Shawcroft
46fd60c703
Prevent infinite display update recursion and fix VFS mounting
Fixes #1529
2019-02-19 14:50:31 -08:00
Dan Halbert
1177c32679
Merge pull request #1562 from debrouxl/minor_improvements_and_fixes
Minor fixes
2019-02-19 13:22:42 -05:00
Dan Halbert
263e9822ea typo 2019-02-18 12:21:31 -05:00
Dan Halbert
ba77a9ca80 move non-u names for native modules to circuitpy_mpconfig.h 2019-02-18 12:08:23 -05:00
Dan Halbert
5c884bf6d6 forgot json 2019-02-18 07:57:54 -05:00
Dan Halbert
c1144a288f regularize how module weak links and alternate names are listed 2019-02-18 00:45:43 -05:00
Dan Halbert
97aeb1953b correct weak module links; samd module only in m4 ports; update libraries 2019-02-17 23:48:08 -05:00
Dan Halbert
5ec92415b0 fix module weak links; add missing nrf features 2019-02-17 17:29:28 -05:00
Lionel Debroux
94e51de166 Define MP_SSIZE_MAX for LONGINT_IMPL_LONGLONG as well.
Signed-off-by: Lionel Debroux <lionel_debroux@yahoo.fr>
2019-02-17 11:21:35 +01:00
Dan Halbert
619b4f13fd
Merge pull request #1555 from tannewt/print_flush
Support print("", flush=True)
2019-02-15 21:46:16 -05:00
Dan Halbert
7b3f7605b8 address @tannewt changes: move and rename common files; remove PORT_HEAP_SIZE 2019-02-15 20:32:32 -05:00
Scott Shawcroft
e6b140e7a0
Support print("", flush=True)
Fixes #1127
2019-02-15 16:53:19 -08:00
Noralf Trønnes
0865c9d381 extmod/ure: Support search/match() pos and endpos parameters
MICROPY_PY_URE_MATCH_SPAN_START_END is used to enable the functionality
since it's similar.
2019-02-14 15:42:28 +01:00
Damien George
b9dc23c070 extmod/modure: Add ure.sub() function and method, and tests.
This feature is controlled at compile time by MICROPY_PY_URE_SUB, disabled
by default.

Thanks to @dmazzella for the original patch for this feature; see #3770.
2019-02-14 15:42:22 +01:00
Damien George
cbeac094ef extmod/modure: Add match.span(), start() and end() methods, and tests.
This feature is controlled at compile time by
MICROPY_PY_URE_MATCH_SPAN_START_END, disabled by default.

Thanks to @dmazzella for the original patch for this feature; see #3770.
2019-02-14 15:42:21 +01:00
Damien George
a24fabbb6f extmod/modure: Add match.groups() method, and tests.
This feature is controlled at compile time by MICROPY_PY_URE_MATCH_GROUPS,
disabled by default.

Thanks to @dmazzella for the original patch for this feature; see #3770.
2019-02-14 15:42:19 +01:00
Scott Shawcroft
c17f147be9
A variety of displayio improvements
This changes a number of things in displayio:
* Introduces BuiltinFont and Glyph so the built in font can be used by libraries. For boards with
  a font it is available as board.TERMINAL_FONT. Fixes #1172
* Remove _load_row from Bitmap in favor of bitmap[] access. Index can be x/y tuple or overall index. Fixes #1191
* Add width and height properties to Bitmap.
* Add insert and [] access to Group. Fixes #1518
* Add index param to pop on Group.
* Terminal no longer takes unicode character info. It takes a BuiltinFont instead.
* Fix Terminal's handling of [###D vt100 commands used when up arrowing into repl history.
* Add x and y positions to Group plus scale as well.
* Add bitmap accessor for BuiltinFont
2019-02-11 20:55:05 -08:00
Craig Forbes
1662e02c1b Add human readable text for ENOSPC. 2019-02-06 14:59:01 -06:00
Scott Shawcroft
0c50154c83
Use generic overflow so 64 bit is handled ok. 2019-02-04 16:11:16 -08:00
Scott Shawcroft
c60f77d5ab
Check sequence multiply for length overflow
Fixes #1279
2019-02-04 15:33:36 -08:00
Scott Shawcroft
5555a24479
Never long live the main dictionary.
It's contents change often and may be referenced elsewhere.

Fixes #1443
2019-02-01 16:05:37 -08:00
Scott Shawcroft
a39fc94dde
Don't long live class attributes
When they are added later, they are also referenced in the main
dictionary.

Fixes #1218
2019-02-01 16:04:16 -08:00
Dan Halbert
e170e03f8c Merge remote-tracking branch 'adafruit/master' into bleio2 2019-01-21 20:38:26 -05:00
Dan Halbert
a8f4aa4796 Merge remote-tracking branch 'adafruit/master' into struct-compat 2019-01-20 21:47:13 -05:00
Scott Shawcroft
479b286600
Fix dict_make_new 2019-01-20 17:32:43 -08:00
Scott Shawcroft
5ddc50473a
Check for null kw_args 2019-01-20 16:18:34 -08:00
Dan Halbert
7a09af73ec Improve struct compatibility with CPython 2019-01-20 15:12:34 -05:00
Dan Halbert
62df7ab730 Improve struct compatibility with CPython 2019-01-20 15:10:09 -05:00
Dan Halbert
28cfd8a513 CharacteristicBuffer: make it be a stream class; add locking 2019-01-19 19:45:35 -05:00
Scott Shawcroft
b569e8bab0
More make_new updates 2019-01-18 17:09:56 -08:00
Scott Shawcroft
0318a9a9bc
More make_new fixes for unix build 2019-01-18 11:53:09 -08:00
Scott Shawcroft
c271754962
fixup micropy 2019-01-14 18:09:02 -08:00
Scott Shawcroft
12c8b00556
Don't build machine class we don't use. 2019-01-14 17:30:01 -08:00
Scott Shawcroft
72d993d60c
py changes for supporting superclass constructors that take kwargs 2019-01-14 17:29:19 -08:00
Dan Halbert
1dc3957e72 LocalPeripheral is now Peripheral; more work on basic GATTS support; UART not working yet 2018-12-30 22:33:49 -05:00
Dan Halbert
4167bf5b24 wip: advertising works, but not connection 2018-12-27 00:04:04 -05:00
Dan Halbert
bfa66861ef Merge remote-tracking branch 'adafruit/master' into bleio-rev 2018-12-13 16:33:15 -05:00
Scott Shawcroft
6ef8639971
Rework safe mode and have heap overwrite trigger it.
This creates a common safe mode mechanic that ports can share.
As a result, the nRF52 now has safe mode support as well.

The common safe mode adds a 700ms delay at startup where a reset
during that window will cause a reset into safe mode. This window
is designated by a yellow status pixel and flashing the single led
three times.

A couple NeoPixel fixes are included for the nRF52 as well.

Fixes #1034. Fixes #990. Fixes #615.
2018-12-06 14:24:20 -08:00
Dan Halbert
125901e4e2 Merge remote-tracking branch 'adafruit/master' into bleio-rev 2018-12-06 12:41:38 -05:00
Scott Shawcroft
7ad2e6ace3
Add stack validity check and raise an error when it happens.
The backtrace cannot be given because it relies on the validity
of the qstr data structures on the heap which may have been
corrupted.

In fact, it still can crash hard when the bytecode itself is
overwritten. To fix, we'd need a way to skip gathering the
backtrace completely.

This also increases the default stack size on M4s so it can
accomodate the stack needed by ASF4s nvm API.
2018-12-04 23:26:04 -08:00
Dan Halbert
80db2cec99 UART changes: timeout in secs, write bytes, etc. 2018-12-03 12:04:32 -05:00
Scott Shawcroft
9d07e95351
Add support for adding release info into adafruit/circuitpython-org
This also changes the build script to python with better output.
2018-11-30 00:30:57 -08:00
Dan Halbert
1763ffe245 More UUID work; use mp_raise for exceptions 2018-11-20 23:04:58 -05:00
Noralf Trønnes
c5aa2e9300 Support OSError attributes
This adds support for the OSError attributes : errno, strerror, filename and filename2.
CPython only sets errno if 2 arguments has been passed in. This has not been implemented here.

CPython OSError.args is capped at 2 items for backward compatibility reasons. This has not been
implemented here.

MICROPY_CPYTHON_COMPAT has to be enabled to get these attributes.

mp_common_errno_to_str() has been extended to check mp_errno_to_str() as well. This is done to ease
reuse for the strerror argument.
2018-11-13 22:04:44 +01:00
Scott Shawcroft
355abc835e
Fix output overflow and make help translatable 2018-11-09 16:41:08 -08:00
Scott Shawcroft
168e23e466
Build refinement to handle warnings and quiet output 2018-11-09 00:11:43 -08:00
Scott Shawcroft
dc9d338612
Merge pull request #1167 from notro/cpython_stdlib
Support CPython standard library
2018-10-24 12:57:41 -07:00
Scott Shawcroft
cb0126131a
Use python3 for mpy-tool 2018-10-18 10:37:42 -07:00
Scott Shawcroft
4f9c8b7361
Add debug info to the generated frozen_mpy.c
It adds size info and uses macros for byte code to make it more
readable.
2018-10-17 17:45:47 -07:00
Noralf Trønnes
db4a8f5d1a modsys: exc_info: Add traceback
Add traceback chain to sys.exec_info()[2].
No actual frame info is added, but just enough to recreate the printed
exception traceback.

Used by the unittest module which collects errors and failures and prints
them at the end.
2018-10-07 19:37:49 +02:00
Noralf Trønnes
b897603cfa py/objboundmeth: Support __func__ property as in CPython
This gives access to the function underlying the bound method.

Used in the converted CPython stdlib logging.Formatter class to handle
overrriding a default converter method bound to a class variable.
The method becomes bound when accessed from an instance of that class.

I didn't investigate why CircuitPython turns it into a bound method.
2018-10-07 19:36:24 +02:00
Noralf Trønnes
a63555abc1 py/builtinimport: Set __file__ on MPY modules
This sets the __file__ property on MPY modules like how it's done on pure python modules.
2018-10-07 19:36:12 +02:00
Uri Shaked
cea079a022
fix compilation errors in emitinlinethumb.c 2018-10-07 02:09:44 +03:00
Noralf Trønnes
2d1fecc804 Revert "py/vm: Improve performance of opcode dispatch when using switch stmt."
This reverts commit 869024dd6e.

Ctrl-C stopped producing KeyboardInterrupt with this change on CircuitPython.

The Unix and stm32 ports handles Ctrl-C differently with a handler which is
probably why they where not affected.

Fixes #1092
2018-08-25 13:14:58 +02:00
Scott Shawcroft
4a4d84ba42
Merge pull request #1064 from notro/i2cslave
Add busio.I2CSlave
2018-08-17 16:51:45 -07:00
Scott Shawcroft
c3c5951d44
Fix test that broke due to decompressing to too small of a scope. 2018-08-16 17:41:53 -07:00
Scott Shawcroft
2cd166b573
Fix esp and samd 2018-08-16 17:41:35 -07:00
Scott Shawcroft
137a30ad75
fix mpy-cross 2018-08-16 17:40:57 -07:00
Scott Shawcroft
de5a9d72dc
Compress all translated strings with Huffman coding.
This saves code space in builds which use link-time optimization.
The optimization drops the untranslated strings and replaces them
with a compressed_string_t struct. It can then be decompressed to
a c string.

Builds without LTO work as well but include both untranslated
strings and compressed strings.

This work could be expanded to include QSTRs and loaded strings if
a compress method is added to C. Its tracked in #531.
2018-08-16 17:40:57 -07:00
Noralf Trønnes
1ed0e45fc2 Add i2cslave.I2CSlave bindings 2018-08-16 17:11:20 +02:00
Scott Shawcroft
4513bd6ea3
Fix translation newlines
Escape table was incorrect
2018-08-10 16:17:03 -07:00
Scott Shawcroft
24e53ad591
Rework escaping and fix ESP build. 2018-08-09 15:58:45 -07:00
Scott Shawcroft
1835f1ab14
Update filter and handle nested quotes 2018-08-09 14:16:28 -07:00
Scott Shawcroft
96ebf5bc3f
Two fixes and translate more strings.
* Fix finding translations with escaped characters.
* Add back \r to translations since its needed by screen.
2018-08-09 13:29:30 -07:00
Scott Shawcroft
933add6cd8
Support internationalisation. 2018-08-07 14:58:57 -07:00
Scott Shawcroft
b50f46d4be
Rename to SRC_QSTR_PREPROCESSOR for clarity. 2018-08-02 11:07:22 -07:00
Scott Shawcroft
f6d1b63ecd
Handle emitnative.c which is #included into other .c files. 2018-08-02 00:51:53 -07:00
Scott Shawcroft
8cf03d2d00
Speed up QSTR creation by pre-filtering files before pre-processing. 2018-08-02 00:51:52 -07:00
Dan Halbert
2e260a0eab Merge remote-tracking branch 'adafruit/master' into micropython-25ae98f-merge 2018-07-28 14:13:54 -04:00
Dan Halbert
f48b70050e merge finished 2018-07-28 13:29:47 -04:00
Scott Shawcroft
1ffb0a714f
Merge remote-tracking branch 'adafruit/3.x' into import_merge 2018-07-25 11:49:18 -07:00
Dan Halbert
bc760dd341 WIP: complete manual inspection of all significant changes 2018-07-23 21:34:25 -04:00
Dan Halbert
be1d882a8b Prevent repetitive recursive scanning of dicts when making them long-lived 2018-07-19 15:19:21 -04:00
Dan Halbert
2809b4f9dd Merge branch 'master' into micropython-25ae98f-merge 2018-07-16 19:36:40 -04:00
Dan Halbert
6dfa527f79 do not call property if referenced by class, not object 2018-07-14 22:17:25 -04:00
Dan Halbert
e2e01efa84 compiles and runs; hangs on import storage;storage.VfsFat.<tab> 2018-07-13 22:51:10 -04:00
Dan Halbert
0d27f4d9a6 continued WIP: almost compiling 2018-07-12 14:13:51 -04:00
Dan Halbert
7c219600a2 WIP: after merge; before testing 2018-07-11 16:45:30 -04:00
Scott Shawcroft
cced51cbd2
Limit qstr pool size to reduce memory waste. 2018-07-03 05:45:51 -07:00
Scott Shawcroft
9de611c056
Always collect after an import
Imports generate a lot of garbage so cleaning it up immediately
reduces the likelihood longer lived data structures don't end up in
the middle of the heap.

Fixes #856
2018-07-03 05:45:50 -07:00
Scott Shawcroft
252aacdddf
Analysis fixes and long lived tweaks. 2018-07-03 05:45:50 -07:00
Damien George
25ae98f07c py/compile: Combine expr, xor_expr and and_expr into one function.
This and the previous 4 commits combined have change in code size of:

   bare-arm:   -92
minimal x86:  -544
   unix x64:  -544
unix nanbox:  -712
      stm32:  -116
     cc3200:  -128
    esp8266:  -348
      esp32:  -232
2018-06-22 17:00:29 +10:00
Damien George
36e474e83f py/compile: Combine or_test and and_test compile functions. 2018-06-22 17:00:29 +10:00
Damien George
1a7109d65a py/compile: Combine global and nonlocal statement compile functions. 2018-06-22 17:00:29 +10:00
Damien George
d23bec3fc8 py/compile: Combine subscript_2 and subscript_3 into one function. 2018-06-22 17:00:29 +10:00
Damien George
c149197928 py/compile: Combine break and continue compile functions. 2018-06-22 17:00:29 +10:00
Damien George
34344a413f py/stream: Remove stray empty line at start of file.
This was accidentally added in 6abede2ca9
2018-06-20 16:26:12 +10:00
Damien George
582b190764 py: Add checks for stream objects in print() and sys.print_exception(). 2018-06-20 15:57:10 +10:00
Damien George
2c8d130f70 py/stream: Update comment for mp_stream_write_adaptor. 2018-06-20 15:56:32 +10:00
Damien George
c00ee200ac py/objarray: Replace 0x80 with new MP_OBJ_ARRAY_TYPECODE_FLAG_RW macro. 2018-06-18 13:40:53 +10:00
Damien George
6abede2ca9 py/stream: Introduce and use efficient mp_get_stream to access stream_p.
The existing mp_get_stream_raise() helper does explicit checks that the
input object is a real pointer object, has a non-NULL stream protocol, and
has the desired stream C method (read/write/ioctl).  In most cases it is
not necessary to do these checks because it is guaranteed that the input
object has the stream protocol and desired C methods.  For example, native
objects that use the stream wrappers (eg mp_stream_readinto_obj) in their
locals dict always have the stream protocol (or else they shouldn't have
these wrappers in their locals dict).

This patch introduces an efficient mp_get_stream() which doesn't do any
checks and just extracts the stream protocol struct.  This should be used
in all cases where the argument object is known to be a stream.  The
existing mp_get_stream_raise() should be used primarily to verify that an
object does have the correct stream protocol methods.

All uses of mp_get_stream_raise() in py/stream.c have been converted to use
mp_get_stream() because the argument is guaranteed to be a proper stream
object.

This patch improves efficiency of stream operations and reduces code size.
2018-06-18 12:35:56 +10:00
Damien George
035906419d extmod/uos_dupterm: Use native C stream methods on dupterm object.
This patch changes dupterm to call the native C stream methods on the
connected stream objects, instead of calling the Python readinto/write
methods.  This is much more efficient for native stream objects like UART
and webrepl and doesn't require allocating a special dupterm array.

This change is a minor breaking change from the user's perspective because
dupterm no longer accepts pure user stream objects to duplicate on.  But
with the recent addition of uio.IOBase it is possible to still create such
classes just by inheriting from uio.IOBase, for example:

    import uio, uos

    class MyStream(uio.IOBase):
        def write(self, buf):
            # existing write implementation
        def readinto(self, buf):
            # existing readinto implementation

    uos.dupterm(MyStream())
2018-06-12 15:06:11 +10:00
Damien George
7ad04d17da py/mkrules.mk: Regenerate all qstrs when config files change.
A port can define QSTR_GLOBAL_DEPENDENCIES to add extra files.
2018-06-12 13:53:43 +10:00
Yonatan Goldschmidt
6630354ffe extmod/moduhashlib: Allow to disable the sha256 class.
Via the config value MICROPY_PY_UHASHLIB_SHA256.  Default to enabled to
keep backwards compatibility.

Also add default value for the sha1 class, to at least document its
existence.
2018-06-12 13:50:11 +10:00
Damien George
af0932a779 py/modio: Add uio.IOBase class to allow to define user streams.
A user class derived from IOBase and implementing readinto/write/ioctl can
now be used anywhere a native stream object is accepted.

The mapping from C to Python is:

    stream_p->read  --> readinto(buf)
    stream_p->write --> write(buf)
    stream_p->ioctl --> ioctl(request, arg)

Among other things it allows the user to:

- create an object which can be passed as the file argument to print:
  print(..., file=myobj), and then print will pass all the data to the
  object via the objects write method (same as CPython)
- pass a user object to uio.BufferedWriter to buffer the writes (same as
  CPython)
- use select.select on a user object
- register user objects with select.poll, in particular so user objects can
  be used with uasyncio
- create user files that can be returned from user filesystems, and import
  can import scripts from these user files

For example:

    class MyOut(io.IOBase):
        def write(self, buf):
            print('write', repr(buf))
            return len(buf)

    print('hello', file=MyOut())

The feature is enabled via MICROPY_PY_IO_IOBASE which is disabled by
default.
2018-06-12 12:29:26 +10:00
Damien George
6a445b60fa py/lexer: Add support for underscores in numeric literals.
This is a very convenient feature introduced in Python 3.6 by PEP 515.
2018-06-12 12:17:43 +10:00