| Commit message (Collapse) | Author | Age |
|
|
|
| |
Useful to check file/dir operations result, in particular used by upip.
|
|
|
|
| |
So, keep call to it protected via NLR still.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
So the documentation's example works. Besides, a tuple can be more
memory efficient.
|
|
|
|
|
|
| |
To use, put your directory structure with .py files in frozen/ and then:
make FROZEN_MPY_DIR=frozen
|
|
|
|
|
| |
When rendering the qstr for a C header file, the double-quate character
must be escaped.
|
|
|
|
| |
See issue #1814.
|
|
|
|
|
| |
Directories are now supported by the frozen import system (to implement
frozen packages) so we should keep them.
|
|
|
|
|
|
|
|
|
|
| |
.mpy files contain the name of the source file that they were compiled
from. This patch adds a way to change this name to an arbitrary string,
specified on the command line with the -s option. The default is to use
the full name of the input filename.
This new -s option is useful to strip off a leading directory name so
that mpy-tool.py can freeze packages.
|
|
|
|
| |
So that it can be correctly stat'd when looking for frozen files.
|
|
|
|
| |
Freezing mpy files using mpy-tool.py now works again.
|
| |
|
|
|
|
|
| |
In particular, disclose the fact that server certificates are not
validated.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
These are workarounds required until frozen .mpy loading following standard
frozen modules code path.
|
|
|
|
|
|
| |
Frozen modules are now stored with extensions and with '/' as path
separator. In other words, frozen modules paths stored as they are
in normal filesystem.
|
|
|
|
|
|
|
|
|
|
| |
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).
|
|
|
|
| |
Similar to existing mp_hal_ticks_ms().
|
|
|
|
| |
Similar to existing mp_hal_delay_ms/mp_hal_ticks_ms.
|
|
|
|
|
|
|
|
| |
Make dupterm subsystem close a term stream object when EOF or error occurs.
There's no other party than dupterm itself in a better position to do this,
and this is required to properly reclaim stream resources, especially if
multiple dupterm sessions may be established (e.g. as networking
connections).
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Otherwise some compilers (eg without optimisation) will put this read-only
data in RAM instead of ROM.
|
|
|
|
| |
APA102 is a new "smart LED", similar to WS2812 aka "Neopixel".
|
|
|
|
|
|
| |
Adding a very first start section to get people going after flashing.
I tried to condense it to a minimum to avoid as much as possible
redundancy and bloating.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This allows to enable the options which aren't enabled in the normal unix
config (as unix port is no longer an enable-all port).
|
|
|
|
| |
modwebrepl truncates password to 9 chars, and that led people to confusion.
|
|
|
|
|
|
|
|
|
|
| |
To use frozen bytecode make a subdirectory under the unix/ directory
(eg frozen/), put .py files there, then run:
make FROZEN_MPY_DIR=frozen
Be sure to build from scratch. The .py files will then be available for
importing.
|
|
|
|
|
|
|
| |
When an mpy file is frozen it must know the values of certain
configuration variables. This patch provides an explicit check in the
generated C file that the configuration variables are what they are
supposed to be.
|
|
|
|
|
| |
That was the intent for the initial user setup, but didn't work before
due to lwIP issues. Enable now that they're fixed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
That one was missing in the module, even if it was available in the
vfs object. The change consist of adding the name and preparing the
call to the underlying vfs module, similar to what was already
implemented e.g. for remove.
Rename is useful by itself, or for instance for a safe file replace,
consisting of the sequence:
write to a temp file
delete the original file
rename the temp file to the original file's name
|
|
|
|
|
|
|
|
|
|
|
| |
Calling it from lwIP accept callback will lead incorrect functioning
and/or packet leaks if Python callback has any networking calls, due
to lwIP non-reentrancy. So, instead schedule "poll" callback to do
that, which will be called by lwIP when it does not perform networking
activities. "Poll" callback is called infrequently though (docs say
every 0.5s by default), so for better performance, lwIP needs to be
patched to call poll callback soon after accept callback, but when
current packet is already processed.
|
| |
|
|
|
|
| |
It allows to "import foo.bar", but not "from foo import bar".
|
| |
|
| |
|
| |
|