Merge branch 'main' into esp32
This commit is contained in:
commit
ac460dd1e1
@ -5,6 +5,7 @@
|
||||
|
||||
.. module:: hashlib
|
||||
:synopsis: hashing algorithms
|
||||
:noindex:
|
||||
|
||||
|see_cpython_module| :mod:`cpython:hashlib`.
|
||||
|
||||
|
@ -286,6 +286,44 @@ not protected by basic auth in case the device is someone elses.
|
||||
|
||||
Only `GET` requests are supported and will return `405 Method Not Allowed` otherwise.
|
||||
|
||||
#### `/cp/devices.json`
|
||||
|
||||
Returns information about other devices found on the network using MDNS.
|
||||
|
||||
* `total`: Total MDNS response count. May be more than in `devices` if internal limits were hit.
|
||||
* `devices`: List of discovered devices.
|
||||
* `hostname`: MDNS hostname
|
||||
* `instance_name`: MDNS instance name. Defaults to human readable board name.
|
||||
* `port`: Port of CircuitPython Web API
|
||||
* `ip`: IP address
|
||||
|
||||
Example:
|
||||
```sh
|
||||
curl -v -L http://circuitpython.local/cp/devices.json
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"total": 1,
|
||||
"devices": [
|
||||
{
|
||||
"hostname": "cpy-951032",
|
||||
"instance_name": "Adafruit Feather ESP32-S2 TFT",
|
||||
"port": 80,
|
||||
"ip": "192.168.1.235"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### `/cp/serial/`
|
||||
|
||||
|
||||
Serves a basic serial terminal program when a `GET` request is received without the
|
||||
`Upgrade: websocket` header. Otherwise the socket is upgraded to a WebSocket. See WebSockets below for more detail.
|
||||
|
||||
This is an authenticated endpoint in both modes.
|
||||
|
||||
#### `/cp/version.json`
|
||||
|
||||
Returns information about the device.
|
||||
@ -323,36 +361,6 @@ curl -v -L http://circuitpython.local/cp/version.json
|
||||
}
|
||||
```
|
||||
|
||||
#### `/cp/devices.json`
|
||||
|
||||
Returns information about other devices found on the network using MDNS.
|
||||
|
||||
* `total`: Total MDNS response count. May be more than in `devices` if internal limits were hit.
|
||||
* `devices`: List of discovered devices.
|
||||
* `hostname`: MDNS hostname
|
||||
* `instance_name`: MDNS instance name. Defaults to human readable board name.
|
||||
* `port`: Port of CircuitPython Web API
|
||||
* `ip`: IP address
|
||||
|
||||
Example:
|
||||
```sh
|
||||
curl -v -L http://circuitpython.local/cp/devices.json
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"total": 1,
|
||||
"devices": [
|
||||
{
|
||||
"hostname": "cpy-951032",
|
||||
"instance_name": "Adafruit Feather ESP32-S2 TFT",
|
||||
"port": 80,
|
||||
"ip": "192.168.1.235"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Static files
|
||||
|
||||
* `/favicon.ico` - Blinka
|
||||
@ -361,4 +369,12 @@ curl -v -L http://circuitpython.local/cp/devices.json
|
||||
|
||||
### WebSocket
|
||||
|
||||
Coming soon!
|
||||
The CircuitPython serial interactions are available over a WebSocket. A WebSocket begins as a
|
||||
special HTTP request that gets upgraded to a WebSocket. Authentication happens before upgrading.
|
||||
|
||||
WebSockets are *not* bare sockets once upgraded. Instead they have their own framing format for data.
|
||||
CircuitPython can handle PING and CLOSE opcodes. All others are treated as TEXT. Data to
|
||||
CircuitPython is expected to be masked UTF-8, as the spec requires. Data from CircuitPython to the
|
||||
client is unmasked. It is also unbuffered so the client will get a variety of frame sizes.
|
||||
|
||||
Only one WebSocket at a time is supported.
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 5d01882c41dbc4115bc94f0b61c093d5a6b812b6
|
||||
Subproject commit 346c936e14c6ea3a8d3d65cb1fa46202dc92999d
|
@ -1 +1 @@
|
||||
Subproject commit d890d23f4261722338280f284cc1640e22e50e14
|
||||
Subproject commit 53f15602460329f69fef95498e6b8293aebb513a
|
55
locale/ID.po
55
locale/ID.po
@ -2383,6 +2383,10 @@ msgstr "argumen harus berupa ndarrays"
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2750,6 +2754,10 @@ msgstr ""
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
@ -2841,6 +2849,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "heap kosong"
|
||||
@ -2944,7 +2956,7 @@ msgstr ""
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3092,7 +3104,7 @@ msgstr ""
|
||||
msgid "incorrect padding"
|
||||
msgstr "lapisan (padding) tidak benar"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
@ -3159,6 +3171,10 @@ msgstr ""
|
||||
msgid "input matrix is singular"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3167,11 +3183,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3372,7 +3384,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3621,7 +3633,7 @@ msgstr "panjang data string memiliki keganjilan (odd-length)"
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -3772,6 +3784,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr ""
|
||||
@ -4207,6 +4220,14 @@ msgstr ""
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4248,7 +4269,17 @@ msgstr "indeks sumbu salah"
|
||||
msgid "wrong axis specified"
|
||||
msgstr "sumbu yang ditentukan salah"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr "tipe input salah"
|
||||
|
||||
@ -4256,6 +4287,10 @@ msgstr "tipe input salah"
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "jumlah argumen salah"
|
||||
|
@ -2199,6 +2199,10 @@ msgstr ""
|
||||
msgid "Unsupported format"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/hashlib/__init__.c
|
||||
msgid "Unsupported hash algorithm"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||
msgid "Update Failed"
|
||||
msgstr ""
|
||||
@ -2352,6 +2356,10 @@ msgstr ""
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2719,6 +2727,10 @@ msgstr ""
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
@ -2810,6 +2822,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr ""
|
||||
@ -2913,7 +2929,7 @@ msgstr ""
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3061,7 +3077,7 @@ msgstr ""
|
||||
msgid "incorrect padding"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
@ -3128,6 +3144,10 @@ msgstr ""
|
||||
msgid "input matrix is singular"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3136,11 +3156,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3341,7 +3357,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3590,7 +3606,7 @@ msgstr ""
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -4180,6 +4196,14 @@ msgstr ""
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4221,7 +4245,17 @@ msgstr ""
|
||||
msgid "wrong axis specified"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr ""
|
||||
|
||||
@ -4229,6 +4263,10 @@ msgstr ""
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr ""
|
||||
|
55
locale/cs.po
55
locale/cs.po
@ -2370,6 +2370,10 @@ msgstr ""
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2737,6 +2741,10 @@ msgstr ""
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
@ -2828,6 +2836,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr ""
|
||||
@ -2931,7 +2943,7 @@ msgstr ""
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3079,7 +3091,7 @@ msgstr ""
|
||||
msgid "incorrect padding"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
@ -3146,6 +3158,10 @@ msgstr ""
|
||||
msgid "input matrix is singular"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3154,11 +3170,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3359,7 +3371,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3608,7 +3620,7 @@ msgstr ""
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -3758,6 +3770,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr ""
|
||||
@ -4193,6 +4206,14 @@ msgstr ""
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4234,7 +4255,17 @@ msgstr ""
|
||||
msgid "wrong axis specified"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr ""
|
||||
|
||||
@ -4242,6 +4273,10 @@ msgstr ""
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr ""
|
||||
|
@ -2422,6 +2422,10 @@ msgstr "Argumente müssen ndarrays sein"
|
||||
msgid "array and index length must be equal"
|
||||
msgstr "Array- und Indexlänge müssen gleich sein"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2799,6 +2803,10 @@ msgstr "Convolve-Argumente müssen ndarrays sein"
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr "Convolve Argumente dürfen nicht leer sein"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr "Vandermonde-Matrix konnte nicht invertiert werden"
|
||||
@ -2892,6 +2900,10 @@ msgstr "dtype muss Float oder komplex sein"
|
||||
msgid "empty"
|
||||
msgstr "leer"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "leerer heap"
|
||||
@ -2995,7 +3007,7 @@ msgstr "das erste Argument muss eine Funktion sein"
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr "das erste Argument muss ein Tupel von ndarrays sein"
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr "Das erste Argument muss ein Ndarray sein"
|
||||
|
||||
@ -3145,7 +3157,7 @@ msgstr "unvollständiger Formatschlüssel"
|
||||
msgid "incorrect padding"
|
||||
msgstr "padding ist inkorrekt"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr "Index ist außerhalb der Grenzen"
|
||||
|
||||
@ -3212,6 +3224,10 @@ msgstr "Eingabematrix ist asymmetrisch"
|
||||
msgid "input matrix is singular"
|
||||
msgstr "Eingabematrix ist singulär"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr "Eingabe muss ein 1D ndarray sein"
|
||||
@ -3220,11 +3236,7 @@ msgstr "Eingabe muss ein 1D ndarray sein"
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr "Eingabe muss ein dichtes ndarray sein"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr "Eingabe muss ein Tensor von Rang 2 sein"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr "Eingabe muss ein ndarray sein"
|
||||
|
||||
@ -3431,8 +3443,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr "max_length muss 0-%d sein, wenn fixed_length %s ist"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgstr "die maximale Anzahl der Dimensionen beträgt 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "maximum recursion depth exceeded"
|
||||
@ -3681,7 +3693,7 @@ msgstr "String mit ungerader Länge"
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr "Offset ist zu groß"
|
||||
|
||||
@ -3835,6 +3847,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "pow() mit 3 Argumenten erfordert Integer"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr "Drücken der Boot-Taste beim Start.\n"
|
||||
@ -4275,6 +4288,14 @@ msgstr "nicht unterstützter Typ für Operator"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "nicht unterstützte Typen für %q: '%q', '%q'"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4316,7 +4337,17 @@ msgstr "falscher Achsenindex"
|
||||
msgid "wrong axis specified"
|
||||
msgstr "falsche Achse gewählt"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr "falscher Indextyp"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr "falscher Eingabetyp"
|
||||
|
||||
@ -4324,6 +4355,10 @@ msgstr "falscher Eingabetyp"
|
||||
msgid "wrong length of condition array"
|
||||
msgstr "falsche Länge des Array von Bedingungen"
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "falsche Anzahl an Argumenten"
|
||||
@ -4368,6 +4403,12 @@ msgstr "zi muss eine Gleitkommazahl sein"
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr "zi muss die Form (n_section, 2) haben"
|
||||
|
||||
#~ msgid "input must be a tensor of rank 2"
|
||||
#~ msgstr "Eingabe muss ein Tensor von Rang 2 sein"
|
||||
|
||||
#~ msgid "maximum number of dimensions is 4"
|
||||
#~ msgstr "die maximale Anzahl der Dimensionen beträgt 4"
|
||||
|
||||
#~ msgid "Watchdog timer expired."
|
||||
#~ msgstr "Watchdog timer abgelaufen."
|
||||
|
||||
@ -5131,9 +5172,6 @@ msgstr "zi muss die Form (n_section, 2) haben"
|
||||
#~ msgid "wrong argument type"
|
||||
#~ msgstr "falscher Argumenttyp"
|
||||
|
||||
#~ msgid "wrong index type"
|
||||
#~ msgstr "falscher Indextyp"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "\n"
|
||||
#~ "To exit, please reset the board without "
|
||||
|
55
locale/el.po
55
locale/el.po
@ -2352,6 +2352,10 @@ msgstr ""
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2719,6 +2723,10 @@ msgstr ""
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
@ -2810,6 +2818,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr ""
|
||||
@ -2913,7 +2925,7 @@ msgstr ""
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3061,7 +3073,7 @@ msgstr ""
|
||||
msgid "incorrect padding"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
@ -3128,6 +3140,10 @@ msgstr ""
|
||||
msgid "input matrix is singular"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3136,11 +3152,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3341,7 +3353,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3590,7 +3602,7 @@ msgstr ""
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -3740,6 +3752,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr ""
|
||||
@ -4175,6 +4188,14 @@ msgstr ""
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4216,7 +4237,17 @@ msgstr ""
|
||||
msgid "wrong axis specified"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr ""
|
||||
|
||||
@ -4224,6 +4255,10 @@ msgstr ""
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr ""
|
||||
|
@ -2386,6 +2386,10 @@ msgstr "arguments must be ndarrays"
|
||||
msgid "array and index length must be equal"
|
||||
msgstr "array and index length must be equal"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2755,6 +2759,10 @@ msgstr "convolve arguments must be ndarrays"
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr "convolve arguments must not be empty"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr "could not invert Vandermonde matrix"
|
||||
@ -2847,6 +2855,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr "empty"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "empty heap"
|
||||
@ -2950,7 +2962,7 @@ msgstr "first argument must be a function"
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr "first argument must be a tuple of ndarrays"
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr "first argument must be an ndarray"
|
||||
|
||||
@ -3098,7 +3110,7 @@ msgstr "incomplete format key"
|
||||
msgid "incorrect padding"
|
||||
msgstr "incorrect padding"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr "index is out of bounds"
|
||||
|
||||
@ -3165,6 +3177,10 @@ msgstr "input matrix is asymmetric"
|
||||
msgid "input matrix is singular"
|
||||
msgstr "input matrix is singular"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3173,11 +3189,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr "input must be a dense ndarray"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr "input must be a tensor of rank 2"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr "input must be an ndarray"
|
||||
|
||||
@ -3378,8 +3390,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr "max_length must be 0-%d when fixed_length is %s"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgstr "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "maximum recursion depth exceeded"
|
||||
@ -3627,7 +3639,7 @@ msgstr "odd-length string"
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr "offset is too large"
|
||||
|
||||
@ -3777,6 +3789,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "pow() with 3 arguments requires integers"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr "pressing boot button at start up.\n"
|
||||
@ -4214,6 +4227,14 @@ msgstr "unsupported type for operator"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "unsupported types for %q: '%q', '%q'"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4255,7 +4276,17 @@ msgstr "wrong axis index"
|
||||
msgid "wrong axis specified"
|
||||
msgstr "wrong axis specified"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr "wrong input type"
|
||||
|
||||
@ -4263,6 +4294,10 @@ msgstr "wrong input type"
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "wrong number of arguments"
|
||||
@ -4307,6 +4342,12 @@ msgstr "zi must be of float type"
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr "zi must be of shape (n_section, 2)"
|
||||
|
||||
#~ msgid "input must be a tensor of rank 2"
|
||||
#~ msgstr "input must be a tensor of rank 2"
|
||||
|
||||
#~ msgid "maximum number of dimensions is 4"
|
||||
#~ msgstr "maximum number of dimensions is 4"
|
||||
|
||||
#~ msgid "Watchdog timer expired."
|
||||
#~ msgstr "WatchDog timer expired."
|
||||
|
||||
|
66
locale/es.po
66
locale/es.po
@ -2419,6 +2419,10 @@ msgstr "argumentos deben ser ndarrays"
|
||||
msgid "array and index length must be equal"
|
||||
msgstr "Longitud del array e índice tienen que ser iguales"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2791,6 +2795,10 @@ msgstr "los argumentos para convolve deben ser ndarrays"
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr "los argumentos para convolve no deben estar vacíos"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr "no se pudo invertir la matriz de Vandermonde"
|
||||
@ -2884,6 +2892,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr "vacío"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "heap vacío"
|
||||
@ -2987,7 +2999,7 @@ msgstr "el primer argumento debe ser una función"
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr "Primer argumento tiene que ser una tupla de ndarrays"
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr "el primer argumento debe ser ndarray"
|
||||
|
||||
@ -3135,7 +3147,7 @@ msgstr "formato de llave incompleto"
|
||||
msgid "incorrect padding"
|
||||
msgstr "relleno (padding) incorrecto"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr "el índice está fuera de límites"
|
||||
|
||||
@ -3202,6 +3214,10 @@ msgstr "la matriz de entrada es asimétrica"
|
||||
msgid "input matrix is singular"
|
||||
msgstr "la matriz de entrada es singular"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3210,11 +3226,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr "Entrada tiene que ser un ndarray denso"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr "Entrada tiene que ser un tensor de rango 2"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr "Entrada tiene que ser un ndarray"
|
||||
|
||||
@ -3418,8 +3430,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr "max_length debe ser 0-%d cuando fixed_length es %s"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgstr "Máximo número de dimensiones es 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "maximum recursion depth exceeded"
|
||||
@ -3671,7 +3683,7 @@ msgstr "string de longitud impar"
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr "offset es demasiado grande"
|
||||
|
||||
@ -3821,6 +3833,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "pow() con 3 argumentos requiere enteros"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr "presionando botón de arranque al inicio.\n"
|
||||
@ -4259,6 +4272,14 @@ msgstr "tipo de operador no soportado"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "tipos no soportados para %q: '%q', '%q'"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4300,7 +4321,17 @@ msgstr "indice de eje erróneo"
|
||||
msgid "wrong axis specified"
|
||||
msgstr "eje especificado erróneo"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr "tipo de índice incorrecto"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr "tipo de entrada incorrecta"
|
||||
|
||||
@ -4308,6 +4339,10 @@ msgstr "tipo de entrada incorrecta"
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "numero erroneo de argumentos"
|
||||
@ -4352,6 +4387,12 @@ msgstr "zi debe ser de tipo flotante"
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr "zi debe ser una forma (n_section,2)"
|
||||
|
||||
#~ msgid "input must be a tensor of rank 2"
|
||||
#~ msgstr "Entrada tiene que ser un tensor de rango 2"
|
||||
|
||||
#~ msgid "maximum number of dimensions is 4"
|
||||
#~ msgstr "Máximo número de dimensiones es 4"
|
||||
|
||||
#~ msgid "Watchdog timer expired."
|
||||
#~ msgstr "Temporizador de perro guardián expirado."
|
||||
|
||||
@ -5210,9 +5251,6 @@ msgstr "zi debe ser una forma (n_section,2)"
|
||||
#~ msgid "wrong argument type"
|
||||
#~ msgstr "tipo de argumento incorrecto"
|
||||
|
||||
#~ msgid "wrong index type"
|
||||
#~ msgstr "tipo de índice incorrecto"
|
||||
|
||||
#~ msgid "specify size or data, but not both"
|
||||
#~ msgstr "especifique o tamaño o datos, pero no ambos"
|
||||
|
||||
|
@ -2372,6 +2372,10 @@ msgstr ""
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2746,6 +2750,10 @@ msgstr ""
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
@ -2841,6 +2849,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr "walang laman"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "walang laman ang heap"
|
||||
@ -2945,7 +2957,7 @@ msgstr ""
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3094,7 +3106,7 @@ msgstr "hindi kumpleto ang format key"
|
||||
msgid "incorrect padding"
|
||||
msgstr "mali ang padding"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
@ -3161,6 +3173,10 @@ msgstr ""
|
||||
msgid "input matrix is singular"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3169,11 +3185,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3378,7 +3390,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3627,7 +3639,7 @@ msgstr "odd-length string"
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -3779,6 +3791,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "pow() na may 3 argumento kailangan ng integers"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr ""
|
||||
@ -4217,6 +4230,14 @@ msgstr "hindi sinusuportahang type para sa operator"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4258,7 +4279,17 @@ msgstr ""
|
||||
msgid "wrong axis specified"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr ""
|
||||
|
||||
@ -4266,6 +4297,10 @@ msgstr ""
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "mali ang bilang ng argumento"
|
||||
|
66
locale/fr.po
66
locale/fr.po
@ -2453,6 +2453,10 @@ msgstr "les paramètres doivent être des ndarrays"
|
||||
msgid "array and index length must be equal"
|
||||
msgstr "la taille de la matrice et de l'index doivent être égaux"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2830,6 +2834,10 @@ msgstr "les paramêtres pour convolve doivent être des ndarrays"
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr "les arguments convolve ne doivent pas être vides"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr "n'a pas pu inverser la matrice Vandermonde"
|
||||
@ -2924,6 +2932,10 @@ msgstr "le dtype doit être un flottant, ou un complexe"
|
||||
msgid "empty"
|
||||
msgstr "vide"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "tas vide"
|
||||
@ -3027,7 +3039,7 @@ msgstr "le premier argument doit être une fonction"
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr "le premier paramêtre doit être un tuple de ndarrays"
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr "le premier paramêtre doit être un ndarray"
|
||||
|
||||
@ -3175,7 +3187,7 @@ msgstr "clé de format incomplète"
|
||||
msgid "incorrect padding"
|
||||
msgstr "espacement incorrect"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr "l'index est hors limites"
|
||||
|
||||
@ -3243,6 +3255,10 @@ msgstr "la matrice d'entrée est asymétrique"
|
||||
msgid "input matrix is singular"
|
||||
msgstr "la matrice d'entrée est singulière"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr "l'entrée doit être un ndarray 1D"
|
||||
@ -3251,11 +3267,7 @@ msgstr "l'entrée doit être un ndarray 1D"
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr "l'entrée doit être un ndarray dense"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr "l'entrée doit être un tenseur de rang 2"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr "l'entrée doit être un ndarray"
|
||||
|
||||
@ -3462,8 +3474,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr "max_length doit être 0-%d lorsque fixed_length est %s"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgstr "nombre maximal de dimensions est 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "maximum recursion depth exceeded"
|
||||
@ -3713,7 +3725,7 @@ msgstr "chaîne de longueur impaire"
|
||||
msgid "off"
|
||||
msgstr "inactif"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr "offset est trop large"
|
||||
|
||||
@ -3866,6 +3878,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "pow() avec 3 arguments nécessite des entiers"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr "bouton boot appuyé lors du démarrage.\n"
|
||||
@ -4304,6 +4317,14 @@ msgstr "type non supporté pour l'opérateur"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "types non supportés pour %q: '%q', '%q'"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4345,7 +4366,17 @@ msgstr "index d'axe incorrecte"
|
||||
msgid "wrong axis specified"
|
||||
msgstr "axe incorrecte spécifiée"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr "type d'index incorrect"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr "type d'entrée incorrect"
|
||||
|
||||
@ -4353,6 +4384,10 @@ msgstr "type d'entrée incorrect"
|
||||
msgid "wrong length of condition array"
|
||||
msgstr "mauvaise taille du tableau de condition"
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "mauvais nombres d'arguments"
|
||||
@ -4397,6 +4432,12 @@ msgstr "zi doit être de type float"
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr "zi doit être de forme (n_section, 2)"
|
||||
|
||||
#~ msgid "input must be a tensor of rank 2"
|
||||
#~ msgstr "l'entrée doit être un tenseur de rang 2"
|
||||
|
||||
#~ msgid "maximum number of dimensions is 4"
|
||||
#~ msgstr "nombre maximal de dimensions est 4"
|
||||
|
||||
#~ msgid "Watchdog timer expired."
|
||||
#~ msgstr "Le minuteur Watchdog a expiré."
|
||||
|
||||
@ -5270,9 +5311,6 @@ msgstr "zi doit être de forme (n_section, 2)"
|
||||
#~ msgid "wrong argument type"
|
||||
#~ msgstr "type d'argument incorrect"
|
||||
|
||||
#~ msgid "wrong index type"
|
||||
#~ msgstr "type d'index incorrect"
|
||||
|
||||
#~ msgid "Must provide SCK pin"
|
||||
#~ msgstr "Vous devez fournir un code PIN SCK"
|
||||
|
||||
|
55
locale/hi.po
55
locale/hi.po
@ -2352,6 +2352,10 @@ msgstr ""
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2719,6 +2723,10 @@ msgstr ""
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
@ -2810,6 +2818,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr ""
|
||||
@ -2913,7 +2925,7 @@ msgstr ""
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3061,7 +3073,7 @@ msgstr ""
|
||||
msgid "incorrect padding"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
@ -3128,6 +3140,10 @@ msgstr ""
|
||||
msgid "input matrix is singular"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3136,11 +3152,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3341,7 +3353,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3590,7 +3602,7 @@ msgstr ""
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -3740,6 +3752,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr ""
|
||||
@ -4175,6 +4188,14 @@ msgstr ""
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4216,7 +4237,17 @@ msgstr ""
|
||||
msgid "wrong axis specified"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr ""
|
||||
|
||||
@ -4224,6 +4255,10 @@ msgstr ""
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr ""
|
||||
|
@ -2382,6 +2382,10 @@ msgstr ""
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2755,6 +2759,10 @@ msgstr ""
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
@ -2849,6 +2857,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr "vuoto"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "heap vuoto"
|
||||
@ -2953,7 +2965,7 @@ msgstr ""
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3102,7 +3114,7 @@ msgstr ""
|
||||
msgid "incorrect padding"
|
||||
msgstr "padding incorretto"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
@ -3169,6 +3181,10 @@ msgstr ""
|
||||
msgid "input matrix is singular"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3177,11 +3193,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3387,7 +3399,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3638,7 +3650,7 @@ msgstr "stringa di lunghezza dispari"
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -3792,6 +3804,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "pow() con 3 argomenti richiede interi"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr ""
|
||||
@ -4230,6 +4243,14 @@ msgstr "tipo non supportato per l'operando"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4271,7 +4292,17 @@ msgstr ""
|
||||
msgid "wrong axis specified"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr ""
|
||||
|
||||
@ -4279,6 +4310,10 @@ msgstr ""
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "numero di argomenti errato"
|
||||
|
58
locale/ja.po
58
locale/ja.po
@ -2366,6 +2366,10 @@ msgstr "引数はndarrayでなければなりません"
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2735,6 +2739,10 @@ msgstr "convolve引数はndarrayでなければなりません"
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr "ヴァンデルモンド行列の逆行列を求められません"
|
||||
@ -2828,6 +2836,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr ""
|
||||
@ -2931,7 +2943,7 @@ msgstr "1つ目の引数は関数でなければなりません"
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr "1つ目の引数はndarrayでなければなりません"
|
||||
|
||||
@ -3079,7 +3091,7 @@ msgstr ""
|
||||
msgid "incorrect padding"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
@ -3147,6 +3159,10 @@ msgstr "入力行列が非対称"
|
||||
msgid "input matrix is singular"
|
||||
msgstr "入力が非正則行列"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3155,11 +3171,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3360,7 +3372,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3609,7 +3621,7 @@ msgstr "奇数長の文字列"
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -3761,6 +3773,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "pow()の第3引数には整数が必要"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr ""
|
||||
@ -4197,6 +4210,14 @@ msgstr "演算子が対応していない型"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "%q が対応していない型: '%q', '%q'"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4238,7 +4259,17 @@ msgstr ""
|
||||
msgid "wrong axis specified"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr "インデクスの型が不正"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr ""
|
||||
|
||||
@ -4246,6 +4277,10 @@ msgstr ""
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr ""
|
||||
@ -4832,9 +4867,6 @@ msgstr ""
|
||||
#~ msgid "wrong argument type"
|
||||
#~ msgstr "引数の型が不正"
|
||||
|
||||
#~ msgid "wrong index type"
|
||||
#~ msgstr "インデクスの型が不正"
|
||||
|
||||
#~ msgid "Must provide SCK pin"
|
||||
#~ msgstr "SCKピンが必要"
|
||||
|
||||
|
55
locale/ko.po
55
locale/ko.po
@ -2356,6 +2356,10 @@ msgstr ""
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2723,6 +2727,10 @@ msgstr ""
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
@ -2814,6 +2822,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr ""
|
||||
@ -2917,7 +2929,7 @@ msgstr ""
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3065,7 +3077,7 @@ msgstr ""
|
||||
msgid "incorrect padding"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
@ -3132,6 +3144,10 @@ msgstr ""
|
||||
msgid "input matrix is singular"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3140,11 +3156,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3345,7 +3357,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3594,7 +3606,7 @@ msgstr ""
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -3744,6 +3756,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr ""
|
||||
@ -4179,6 +4192,14 @@ msgstr ""
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4220,7 +4241,17 @@ msgstr ""
|
||||
msgid "wrong axis specified"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr ""
|
||||
|
||||
@ -4228,6 +4259,10 @@ msgstr ""
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr ""
|
||||
|
66
locale/nl.po
66
locale/nl.po
@ -2382,6 +2382,10 @@ msgstr "argumenten moeten ndarrays zijn"
|
||||
msgid "array and index length must be equal"
|
||||
msgstr "array en indexlengte moeten gelijk zijn"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2750,6 +2754,10 @@ msgstr "convolutie argumenten moeten ndarrays zijn"
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr "convolutie argumenten mogen niet leeg zijn"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr "kon de Vandermonde matrix niet omkeren"
|
||||
@ -2843,6 +2851,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr "leeg"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "lege heap"
|
||||
@ -2946,7 +2958,7 @@ msgstr "eerste argument moet een functie zijn"
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr "eerste argument moet een tupel van ndarrays zijn"
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr "eerst argument moet een ndarray zijn"
|
||||
|
||||
@ -3095,7 +3107,7 @@ msgstr "incomplete formaatsleutel"
|
||||
msgid "incorrect padding"
|
||||
msgstr "vulling (padding) is onjuist"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr "index is buiten bereik"
|
||||
|
||||
@ -3162,6 +3174,10 @@ msgstr "invoermatrix is asymmetrisch"
|
||||
msgid "input matrix is singular"
|
||||
msgstr "invoermatrix is singulier"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3170,11 +3186,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr "invoer moet een gesloten ndarray zijn"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr "invoer moet een tensor van rang 2 zijn"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr "invoer moet een ndarray zijn"
|
||||
|
||||
@ -3378,8 +3390,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr "max_length moet 0-%d zijn als fixed_length %s is"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgstr "maximaal aantal dimensies is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "maximum recursion depth exceeded"
|
||||
@ -3627,7 +3639,7 @@ msgstr "string met oneven lengte"
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr "compensatie is te groot"
|
||||
|
||||
@ -3777,6 +3789,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "pow() met 3 argumenten vereist integers"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr "druk bootknop in bij opstarten.\n"
|
||||
@ -4214,6 +4227,14 @@ msgstr "niet ondersteund type voor operator"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "niet ondersteunde types voor %q: '%q', '%q'"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4255,7 +4276,17 @@ msgstr "foute index voor as"
|
||||
msgid "wrong axis specified"
|
||||
msgstr "onjuiste as gespecificeerd"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr "onjuist indextype"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr "onjuist invoertype"
|
||||
|
||||
@ -4263,6 +4294,10 @@ msgstr "onjuist invoertype"
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "onjuist aantal argumenten"
|
||||
@ -4307,6 +4342,12 @@ msgstr "zi moet van type float zijn"
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr "zi moet vorm (n_section, 2) hebben"
|
||||
|
||||
#~ msgid "input must be a tensor of rank 2"
|
||||
#~ msgstr "invoer moet een tensor van rang 2 zijn"
|
||||
|
||||
#~ msgid "maximum number of dimensions is 4"
|
||||
#~ msgstr "maximaal aantal dimensies is 4"
|
||||
|
||||
#~ msgid "Watchdog timer expired."
|
||||
#~ msgstr "Watchdog-timer verstreken."
|
||||
|
||||
@ -5037,9 +5078,6 @@ msgstr "zi moet vorm (n_section, 2) hebben"
|
||||
#~ msgid "wrong argument type"
|
||||
#~ msgstr "onjuist argumenttype"
|
||||
|
||||
#~ msgid "wrong index type"
|
||||
#~ msgstr "onjuist indextype"
|
||||
|
||||
#~ msgid "Must provide SCK pin"
|
||||
#~ msgstr "SCK pin moet opgegeven worden"
|
||||
|
||||
|
58
locale/pl.po
58
locale/pl.po
@ -2363,6 +2363,10 @@ msgstr ""
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2730,6 +2734,10 @@ msgstr ""
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
@ -2822,6 +2830,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr "puste"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "pusta sterta"
|
||||
@ -2925,7 +2937,7 @@ msgstr "pierwszy argument musi być funkcją"
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3073,7 +3085,7 @@ msgstr "niepełny klucz formatu"
|
||||
msgid "incorrect padding"
|
||||
msgstr "złe wypełnienie"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr "indeks jest poza zakresem"
|
||||
|
||||
@ -3140,6 +3152,10 @@ msgstr ""
|
||||
msgid "input matrix is singular"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3148,11 +3164,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3353,7 +3365,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3602,7 +3614,7 @@ msgstr "łańcuch o nieparzystej długości"
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -3753,6 +3765,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "trzyargumentowe pow() wymaga liczb całkowitych"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr ""
|
||||
@ -4189,6 +4202,14 @@ msgstr "zły typ dla operatora"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4230,7 +4251,17 @@ msgstr ""
|
||||
msgid "wrong axis specified"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr "zły typ indeksu"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr "nieprawidłowy typ wejścia"
|
||||
|
||||
@ -4238,6 +4269,10 @@ msgstr "nieprawidłowy typ wejścia"
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "zła liczba argumentów"
|
||||
@ -4747,9 +4782,6 @@ msgstr ""
|
||||
#~ msgid "wrong argument type"
|
||||
#~ msgstr "zły typ argumentu"
|
||||
|
||||
#~ msgid "wrong index type"
|
||||
#~ msgstr "zły typ indeksu"
|
||||
|
||||
#~ msgid "Must provide SCK pin"
|
||||
#~ msgstr "Należy podać pin SCK"
|
||||
|
||||
|
@ -6,7 +6,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||
"PO-Revision-Date: 2022-07-03 00:22+0000\n"
|
||||
"PO-Revision-Date: 2022-07-12 13:10+0000\n"
|
||||
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: pt_BR\n"
|
||||
@ -14,7 +14,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.13.1-dev\n"
|
||||
"X-Generator: Weblate 4.14-dev\n"
|
||||
|
||||
#: main.c
|
||||
msgid ""
|
||||
@ -2435,6 +2435,10 @@ msgstr "os argumentos devem ser ndarrays"
|
||||
msgid "array and index length must be equal"
|
||||
msgstr "a matriz e comprimento do índice devem ser iguais"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr "a matriz possui muitas dimensões"
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2808,6 +2812,10 @@ msgstr "os argumentos convolutivos devem ser ndarrays"
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr "os argumentos convolutivos não devem estar vazios"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr "arquivo corrompido"
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr "não foi possível inverter a matriz Vandermonde"
|
||||
@ -2902,6 +2910,10 @@ msgstr "dtype deve ser flutuante ou complexo"
|
||||
msgid "empty"
|
||||
msgstr "vazio"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr "arquivo vazio"
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "a área de alocação dinâmica de variáveis (heap) está vazia"
|
||||
@ -3005,7 +3017,7 @@ msgstr "o primeiro argumento deve ser uma função"
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr "o primeiro argumento deve ser um tuple de ndarrays"
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr "o primeiro argumento deve ser um ndarray"
|
||||
|
||||
@ -3153,7 +3165,7 @@ msgstr "a chave do formato está incompleto"
|
||||
msgid "incorrect padding"
|
||||
msgstr "preenchimento incorreto"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr "o índice está fora dos limites"
|
||||
|
||||
@ -3221,6 +3233,10 @@ msgstr "a matriz da entrada é assimétrica"
|
||||
msgid "input matrix is singular"
|
||||
msgstr "a matriz da entrada é singular"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr "a entrada deve ser 1- ou 2-d"
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr "a entrada deve ser um 1D ndarray"
|
||||
@ -3229,11 +3245,7 @@ msgstr "a entrada deve ser um 1D ndarray"
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr "a entrada deve ser um ndarray denso"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr "a entrada dos dados deve ser um tensor de nível 2"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr "a entrada deve ser um ndarray"
|
||||
|
||||
@ -3437,8 +3449,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr "o max_length deve ser 0-%d quando Fixed_length for %s"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgstr "O número máximo de dimensões são 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr "a quantidade máxima de dimensões é "
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "maximum recursion depth exceeded"
|
||||
@ -3688,7 +3700,7 @@ msgstr "sequência com comprimento ímpar"
|
||||
msgid "off"
|
||||
msgstr "desligado"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr "o offset é muito grande"
|
||||
|
||||
@ -3843,6 +3855,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "o pow() com 3 argumentos requer números inteiros"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr "pressionando o botão de boot na inicialização.\n"
|
||||
@ -4280,6 +4293,14 @@ msgstr "tipo não compatível para o operador"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "tipo sem suporte para %q: '%q', '%q'"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr "usecols é muito alto"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr "palavra-chave para o usecols deve ser definida"
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4321,7 +4342,17 @@ msgstr "índice do eixo errado"
|
||||
msgid "wrong axis specified"
|
||||
msgstr "um eixo errado foi definido"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr "dtype errado"
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr "tipo do índice errado"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr "tipo da entrada incorreta"
|
||||
|
||||
@ -4329,6 +4360,10 @@ msgstr "tipo da entrada incorreta"
|
||||
msgid "wrong length of condition array"
|
||||
msgstr "comprimento errado na condição da matriz"
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr "comprimento errado do índice da matriz"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "quantidade errada dos argumentos"
|
||||
@ -4373,6 +4408,12 @@ msgstr "zi deve ser de um tipo float"
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr "zi deve estar na forma (n_section, 2)"
|
||||
|
||||
#~ msgid "input must be a tensor of rank 2"
|
||||
#~ msgstr "a entrada dos dados deve ser um tensor de nível 2"
|
||||
|
||||
#~ msgid "maximum number of dimensions is 4"
|
||||
#~ msgstr "O número máximo de dimensões são 4"
|
||||
|
||||
#~ msgid "Watchdog timer expired."
|
||||
#~ msgstr "O temporizador Watchdog expirou."
|
||||
|
||||
@ -5295,9 +5336,6 @@ msgstr "zi deve estar na forma (n_section, 2)"
|
||||
#~ msgid "wrong argument type"
|
||||
#~ msgstr "tipo do argumento errado"
|
||||
|
||||
#~ msgid "wrong index type"
|
||||
#~ msgstr "tipo do índice errado"
|
||||
|
||||
#~ msgid "specify size or data, but not both"
|
||||
#~ msgstr "defina o tamanho ou os dados, porém não ambos"
|
||||
|
||||
|
55
locale/ru.po
55
locale/ru.po
@ -2401,6 +2401,10 @@ msgstr ""
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2768,6 +2772,10 @@ msgstr ""
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
@ -2859,6 +2867,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr ""
|
||||
@ -2962,7 +2974,7 @@ msgstr ""
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3110,7 +3122,7 @@ msgstr ""
|
||||
msgid "incorrect padding"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
@ -3177,6 +3189,10 @@ msgstr ""
|
||||
msgid "input matrix is singular"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3185,11 +3201,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3390,7 +3402,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3639,7 +3651,7 @@ msgstr ""
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -3789,6 +3801,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr ""
|
||||
@ -4224,6 +4237,14 @@ msgstr ""
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4265,7 +4286,17 @@ msgstr ""
|
||||
msgid "wrong axis specified"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr ""
|
||||
|
||||
@ -4273,6 +4304,10 @@ msgstr ""
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr ""
|
||||
|
70
locale/sv.po
70
locale/sv.po
@ -6,7 +6,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||
"PO-Revision-Date: 2022-07-01 17:46+0000\n"
|
||||
"PO-Revision-Date: 2022-07-12 13:10+0000\n"
|
||||
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: sv\n"
|
||||
@ -14,7 +14,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.13.1-dev\n"
|
||||
"X-Generator: Weblate 4.14-dev\n"
|
||||
|
||||
#: main.c
|
||||
msgid ""
|
||||
@ -2405,6 +2405,10 @@ msgstr "argumenten måste vara ndarray"
|
||||
msgid "array and index length must be equal"
|
||||
msgstr "array och indexlängd måste vara lika"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr "array har för många dimensioner"
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2774,6 +2778,10 @@ msgstr "Argumenten convolve måste vara ndarray:er"
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr "Argumenten convolve kan inte vara tomma"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr "korrupt fil"
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr "kan inte invertera Vandermonde-matris"
|
||||
@ -2868,6 +2876,10 @@ msgstr "dtype måste vara float eller complex"
|
||||
msgid "empty"
|
||||
msgstr "tom"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr "tom fil"
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "tom heap"
|
||||
@ -2971,7 +2983,7 @@ msgstr "första argumentet måste vara en funktion"
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr "första argumentet måste vara en tupel av ndarray"
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr "första argumentet måste vara en ndarray"
|
||||
|
||||
@ -3119,7 +3131,7 @@ msgstr "ofullständig formatnyckel"
|
||||
msgid "incorrect padding"
|
||||
msgstr "felaktig utfyllnad"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr "index är utanför gränserna"
|
||||
|
||||
@ -3186,6 +3198,10 @@ msgstr "indatamatrisen är asymmetrisk"
|
||||
msgid "input matrix is singular"
|
||||
msgstr "indatamatrisen är singulär"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr "input måste vara 1- eller 2-d"
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr "indata måste vara en 1D ndarray"
|
||||
@ -3194,11 +3210,7 @@ msgstr "indata måste vara en 1D ndarray"
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr "indata måste vara en dense ndarray"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr "indata måste vara en tensor av rank 2"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr "indata måste vara en ndarray"
|
||||
|
||||
@ -3402,8 +3414,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr "max_length måste vara 0-%d när fixed_length är %s"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgstr "maximalt antal dimensioner är 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr "maximalt antal dimensioner är "
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "maximum recursion depth exceeded"
|
||||
@ -3651,7 +3663,7 @@ msgstr "sträng har udda längd"
|
||||
msgid "off"
|
||||
msgstr "av"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr "offset är för stor"
|
||||
|
||||
@ -3802,6 +3814,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "pow() med 3 argument kräver heltal"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr "trycka på startknappen vid start.\n"
|
||||
@ -4239,6 +4252,14 @@ msgstr "typ stöds inte för operatören"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "typen %q stöder inte '%q', '%q'"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr "usecols är för hög"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr "nyckelordet usecols måste anges"
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4280,7 +4301,17 @@ msgstr "fel axelindex"
|
||||
msgid "wrong axis specified"
|
||||
msgstr "fel axel angiven"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr "fel dtype"
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr "fel indextyp"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr "fel indatatyp"
|
||||
|
||||
@ -4288,6 +4319,10 @@ msgstr "fel indatatyp"
|
||||
msgid "wrong length of condition array"
|
||||
msgstr "fel längd på villkorsmatrisen"
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr "fel längd av index array"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "fel antal argument"
|
||||
@ -4332,6 +4367,12 @@ msgstr "zi måste vara av typ float"
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr "zi måste vara i formen (n_section, 2)"
|
||||
|
||||
#~ msgid "input must be a tensor of rank 2"
|
||||
#~ msgstr "indata måste vara en tensor av rank 2"
|
||||
|
||||
#~ msgid "maximum number of dimensions is 4"
|
||||
#~ msgstr "maximalt antal dimensioner är 4"
|
||||
|
||||
#~ msgid "Watchdog timer expired."
|
||||
#~ msgstr "Watchdog-timern har löpt ut."
|
||||
|
||||
@ -5236,9 +5277,6 @@ msgstr "zi måste vara i formen (n_section, 2)"
|
||||
#~ msgid "wrong argument type"
|
||||
#~ msgstr "fel typ av argument"
|
||||
|
||||
#~ msgid "wrong index type"
|
||||
#~ msgstr "fel indextyp"
|
||||
|
||||
#~ msgid "specify size or data, but not both"
|
||||
#~ msgstr "ange storlek eller data, men inte båda"
|
||||
|
||||
|
55
locale/tr.po
55
locale/tr.po
@ -2372,6 +2372,10 @@ msgstr ""
|
||||
msgid "array and index length must be equal"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2739,6 +2743,10 @@ msgstr ""
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr ""
|
||||
@ -2830,6 +2838,10 @@ msgstr ""
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr ""
|
||||
@ -2933,7 +2945,7 @@ msgstr ""
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3081,7 +3093,7 @@ msgstr ""
|
||||
msgid "incorrect padding"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr ""
|
||||
|
||||
@ -3148,6 +3160,10 @@ msgstr ""
|
||||
msgid "input matrix is singular"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr ""
|
||||
@ -3156,11 +3172,7 @@ msgstr ""
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr ""
|
||||
|
||||
@ -3361,7 +3373,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
@ -3610,7 +3622,7 @@ msgstr ""
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr ""
|
||||
|
||||
@ -3760,6 +3772,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr ""
|
||||
@ -4195,6 +4208,14 @@ msgstr ""
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4236,7 +4257,17 @@ msgstr ""
|
||||
msgid "wrong axis specified"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr ""
|
||||
|
||||
@ -4244,6 +4275,10 @@ msgstr ""
|
||||
msgid "wrong length of condition array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr ""
|
||||
|
@ -2416,6 +2416,10 @@ msgstr "cānshù bìxū shì ndarrays"
|
||||
msgid "array and index length must be equal"
|
||||
msgstr "shù zǔ hé suǒ yǐn cháng dù bì xū xiāng děng"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "array has too many dimensions"
|
||||
msgstr ""
|
||||
|
||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "array/bytes required on right side"
|
||||
@ -2787,6 +2791,10 @@ msgstr "juàn jī cānshù bìxū shì ndarrays"
|
||||
msgid "convolve arguments must not be empty"
|
||||
msgstr "juàn jī cān shǔ bùnéng wéi kōng"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "corrupted file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/poly.c
|
||||
msgid "could not invert Vandermonde matrix"
|
||||
msgstr "wúfǎ fǎn zhuǎn fàndéméng dé jǔzhèn"
|
||||
@ -2880,6 +2888,10 @@ msgstr "dtype bì xū shì fú diǎn xíng huò fù shù"
|
||||
msgid "empty"
|
||||
msgstr "kòngxián"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "empty file"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduasyncio.c extmod/moduheapq.c extmod/modutimeq.c
|
||||
msgid "empty heap"
|
||||
msgstr "kōng yīn yīnxiào"
|
||||
@ -2983,7 +2995,7 @@ msgstr "dì yīgè cānshù bìxū shì yī gè hánshù"
|
||||
msgid "first argument must be a tuple of ndarrays"
|
||||
msgstr "dì yī gè cān shù bì xū shì yí gè yuán zǔ ndarrays"
|
||||
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/transform.c extmod/ulab/code/numpy/vector.c
|
||||
msgid "first argument must be an ndarray"
|
||||
msgstr "dì yī gè cānshù bìxū shì ndarray"
|
||||
|
||||
@ -3131,7 +3143,7 @@ msgstr "géshì bù wánzhěng de mì yào"
|
||||
msgid "incorrect padding"
|
||||
msgstr "bù zhèngquè de tiánchōng"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/numpy/transform.c
|
||||
msgid "index is out of bounds"
|
||||
msgstr "suǒyǐn chāochū fànwéi"
|
||||
|
||||
@ -3198,6 +3210,10 @@ msgstr "shūrù jǔzhèn bù duìchèn"
|
||||
msgid "input matrix is singular"
|
||||
msgstr "shūrù jǔzhèn shì qíyì de"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be 1- or 2-d"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/carray/carray.c
|
||||
msgid "input must be a 1D ndarray"
|
||||
msgstr "shū rù bì xū shì 1D ndarray"
|
||||
@ -3206,11 +3222,7 @@ msgstr "shū rù bì xū shì 1D ndarray"
|
||||
msgid "input must be a dense ndarray"
|
||||
msgstr "shū rù bì xū shì mì jí de ndarray"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c
|
||||
msgid "input must be a tensor of rank 2"
|
||||
msgstr "shū rù bì xū shì děng jí 2 de zhāng liàng"
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/user/user.c
|
||||
#: extmod/ulab/code/user/user.c
|
||||
msgid "input must be an ndarray"
|
||||
msgstr "shū rù bì xū shì ndarray"
|
||||
|
||||
@ -3412,8 +3424,8 @@ msgid "max_length must be 0-%d when fixed_length is %s"
|
||||
msgstr "dāng fixed_length de zhí wéi %s shí, max_length bì xū wéi 0-%d"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c
|
||||
msgid "maximum number of dimensions is 4"
|
||||
msgstr "zuì dà chǐ cùn shù wéi 4"
|
||||
msgid "maximum number of dimensions is "
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "maximum recursion depth exceeded"
|
||||
@ -3661,7 +3673,7 @@ msgstr "jīshù zìfú chuàn"
|
||||
msgid "off"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c extmod/ulab/code/utils/utils.c
|
||||
#: extmod/ulab/code/utils/utils.c
|
||||
msgid "offset is too large"
|
||||
msgstr "piān yí tài dà"
|
||||
|
||||
@ -3811,6 +3823,7 @@ msgid "pow() with 3 arguments requires integers"
|
||||
msgstr "pow() yǒu 3 cānshù xūyào zhěngshù"
|
||||
|
||||
#: ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h
|
||||
#: ports/espressif/boards/lolin_c3_mini/mpconfigboard.h
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "pressing boot button at start up.\n"
|
||||
msgstr "Zài qǐdòng shí àn qǐdòng ànniǔ.\n"
|
||||
@ -4251,6 +4264,14 @@ msgstr "bù zhīchí de cāozuò zhě lèixíng"
|
||||
msgid "unsupported types for %q: '%q', '%q'"
|
||||
msgstr "%q bù zhīchí de lèixíng: '%q', '%q'"
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols is too high"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "usecols keyword must be specified"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c
|
||||
#, c-format
|
||||
msgid "value must fit in %d byte(s)"
|
||||
@ -4292,7 +4313,17 @@ msgstr "cuò wù de zhóu suǒ yǐn"
|
||||
msgid "wrong axis specified"
|
||||
msgstr "zhǐ dìng de zhóu cuò wù"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/vector.c
|
||||
#: extmod/ulab/code/numpy/io/io.c
|
||||
msgid "wrong dtype"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong index type"
|
||||
msgstr "cuòwù de suǒyǐn lèixíng"
|
||||
|
||||
#: extmod/ulab/code/numpy/compare.c extmod/ulab/code/numpy/create.c
|
||||
#: extmod/ulab/code/numpy/io/io.c extmod/ulab/code/numpy/transform.c
|
||||
#: extmod/ulab/code/numpy/vector.c
|
||||
msgid "wrong input type"
|
||||
msgstr "shūrù lèixíng cuòwù"
|
||||
|
||||
@ -4300,6 +4331,10 @@ msgstr "shūrù lèixíng cuòwù"
|
||||
msgid "wrong length of condition array"
|
||||
msgstr "tiáo jiàn shù zǔ de cháng dù cuò wù"
|
||||
|
||||
#: extmod/ulab/code/numpy/transform.c
|
||||
msgid "wrong length of index array"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/numpy/create.c py/objarray.c py/objstr.c
|
||||
msgid "wrong number of arguments"
|
||||
msgstr "cānshù shù cuòwù"
|
||||
@ -4344,6 +4379,12 @@ msgstr "zi bìxū wèi fú diǎn xíng"
|
||||
msgid "zi must be of shape (n_section, 2)"
|
||||
msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)"
|
||||
|
||||
#~ msgid "input must be a tensor of rank 2"
|
||||
#~ msgstr "shū rù bì xū shì děng jí 2 de zhāng liàng"
|
||||
|
||||
#~ msgid "maximum number of dimensions is 4"
|
||||
#~ msgstr "zuì dà chǐ cùn shù wéi 4"
|
||||
|
||||
#~ msgid "Watchdog timer expired."
|
||||
#~ msgstr "Kān mén gǒu dìngshí qì yǐ guòqí."
|
||||
|
||||
@ -5214,9 +5255,6 @@ msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)"
|
||||
#~ msgid "wrong argument type"
|
||||
#~ msgstr "cuòwù de cānshù lèixíng"
|
||||
|
||||
#~ msgid "wrong index type"
|
||||
#~ msgstr "cuòwù de suǒyǐn lèixíng"
|
||||
|
||||
#~ msgid "Must provide SCK pin"
|
||||
#~ msgstr "bì xū tí gòng SCK yǐn jiǎo"
|
||||
|
||||
|
@ -13,6 +13,8 @@ LONGINT_IMPL = MPZ
|
||||
CIRCUITPY_LTO_PARTITION = one
|
||||
|
||||
CIRCUITPY_AESIO = 0
|
||||
CIRCUITPY_FLOPPYIO = 0
|
||||
CIRCUITPY_GIFIO = 0
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
CIRCUITPY_PARALLELDISPLAY = 0
|
||||
CIRCUITPY_SDCARDIO = 0
|
||||
|
@ -1,12 +1,12 @@
|
||||
# Select the board to build for.
|
||||
BOARD=raspberrypi_pi4
|
||||
BOARD?=raspberrypi_pi4b
|
||||
|
||||
ifeq ($(BOARD),)
|
||||
$(error You must provide a BOARD parameter)
|
||||
$(error You must provide a BOARD parameter)
|
||||
else
|
||||
ifeq ($(wildcard boards/$(BOARD)/.),)
|
||||
$(error Invalid BOARD specified)
|
||||
endif
|
||||
ifeq ($(wildcard boards/$(BOARD)/.),)
|
||||
$(error Invalid BOARD "$(BOARD)" specified)
|
||||
endif
|
||||
endif
|
||||
|
||||
# If the build directory is not given, make it reflect the board name.
|
||||
|
110
ports/espressif/boards/espressif_esp32s3_box_lite/board.c
Normal file
110
ports/espressif/boards/espressif_esp32s3_box_lite/board.c
Normal file
@ -0,0 +1,110 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "supervisor/board.h"
|
||||
#include "mpconfigboard.h"
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
|
||||
#include "shared-bindings/busio/SPI.h"
|
||||
#include "shared-bindings/displayio/FourWire.h"
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
|
||||
uint8_t display_init_sequence[] = {
|
||||
0x01, 0x80, 0x96, // _SWRESET and Delay 150ms
|
||||
0x11, 0x80, 0xFF, // _SLPOUT and Delay 500ms
|
||||
0x3A, 0x81, 0x55, 0x0A, // _COLMOD and Delay 10ms
|
||||
0x21, 0x80, 0x0A, // _INVON
|
||||
0x13, 0x80, 0x0A, // _NORON and Delay 10ms
|
||||
0x36, 0x01, 0xA0, // _MADCTL
|
||||
0x29, 0x80, 0xFF, // _DISPON and Delay 500ms
|
||||
};
|
||||
|
||||
void board_init(void) {
|
||||
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
|
||||
common_hal_busio_spi_construct(spi, &pin_GPIO7, &pin_GPIO6, NULL, false);
|
||||
common_hal_busio_spi_never_reset(spi);
|
||||
|
||||
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;
|
||||
bus->base.type = &displayio_fourwire_type;
|
||||
common_hal_displayio_fourwire_construct(bus,
|
||||
spi,
|
||||
&pin_GPIO4, // TFT_DC Command or data
|
||||
&pin_GPIO5, // TFT_CS Chip select
|
||||
&pin_GPIO48, // TFT_RST Reset
|
||||
60000000, // Baudrate
|
||||
0, // Polarity
|
||||
0); // Phase
|
||||
|
||||
displayio_display_obj_t *display = &displays[0].display;
|
||||
display->base.type = &displayio_display_type;
|
||||
common_hal_displayio_display_construct(display,
|
||||
bus,
|
||||
320, // Width
|
||||
240, // Height
|
||||
0, // column start
|
||||
0, // row start
|
||||
0, // rotation
|
||||
16, // Color depth
|
||||
false, // Grayscale
|
||||
false, // pixels in a byte share a row. Only valid for depths < 8
|
||||
1, // bytes per cell. Only valid for depths < 8
|
||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||
true, // reverse_pixels_in_word
|
||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||
display_init_sequence,
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO45, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
60, // native_frames_per_second
|
||||
false, // backlight_on_high
|
||||
false, // SH1107_addressing
|
||||
50000); // backlight pwm frequency
|
||||
|
||||
// Debug UART
|
||||
#ifdef DEBUG
|
||||
common_hal_never_reset_pin(&pin_GPIO43);
|
||||
common_hal_never_reset_pin(&pin_GPIO44);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
|
||||
}
|
||||
|
||||
void board_deinit(void) {
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
// Micropython setup
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "ESP32-S3-Box-Lite"
|
||||
#define MICROPY_HW_MCU_NAME "ESP32S3"
|
@ -0,0 +1,17 @@
|
||||
USB_VID = 0x303A
|
||||
USB_PID = 0x700D
|
||||
USB_PRODUCT = "ESP32-S3-Box-Lite"
|
||||
USB_MANUFACTURER = "Espressif"
|
||||
|
||||
IDF_TARGET = esp32s3
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
# The default queue depth of 16 overflows on release builds,
|
||||
# so increase it to 32.
|
||||
CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32
|
||||
|
||||
CIRCUITPY_ESP_FLASH_MODE=dio
|
||||
CIRCUITPY_ESP_FLASH_FREQ=40m
|
||||
CIRCUITPY_ESP_FLASH_SIZE=16MB
|
67
ports/espressif/boards/espressif_esp32s3_box_lite/pins.c
Normal file
67
ports/espressif/boards/espressif_esp32s3_box_lite/pins.c
Normal file
@ -0,0 +1,67 @@
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
|
||||
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
|
||||
|
||||
// First PMOD connector
|
||||
{ MP_ROM_QSTR(MP_QSTR_G9), MP_ROM_PTR(&pin_GPIO9) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_U0TXD), MP_ROM_PTR(&pin_GPIO43) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_G43), MP_ROM_PTR(&pin_GPIO43) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_U0RXD), MP_ROM_PTR(&pin_GPIO44) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_G44), MP_ROM_PTR(&pin_GPIO44) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_GPIO10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_G10), MP_ROM_PTR(&pin_GPIO10) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_G11), MP_ROM_PTR(&pin_GPIO11) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_G13), MP_ROM_PTR(&pin_GPIO13) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_G12), MP_ROM_PTR(&pin_GPIO12) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_G14), MP_ROM_PTR(&pin_GPIO14) },
|
||||
|
||||
// Second PMOD connector
|
||||
{ MP_ROM_QSTR(MP_QSTR_G38), MP_ROM_PTR(&pin_GPIO38) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_G39), MP_ROM_PTR(&pin_GPIO39) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL2), MP_ROM_PTR(&pin_GPIO40) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_G40), MP_ROM_PTR(&pin_GPIO40) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA2), MP_ROM_PTR(&pin_GPIO41) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_G41), MP_ROM_PTR(&pin_GPIO41) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_G42), MP_ROM_PTR(&pin_GPIO42) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_G21), MP_ROM_PTR(&pin_GPIO21) },
|
||||
|
||||
// LCD & touchscreen
|
||||
{ MP_ROM_QSTR(MP_QSTR_LCD_DC), MP_ROM_PTR(&pin_GPIO4) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LCD_CS), MP_ROM_PTR(&pin_GPIO5) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LCD_MOSI), MP_ROM_PTR(&pin_GPIO6) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LCD_SCK), MP_ROM_PTR(&pin_GPIO7) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LCD_RST), MP_ROM_PTR(&pin_GPIO48) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LCD_CTRL), MP_ROM_PTR(&pin_GPIO45) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CTP_INT), MP_ROM_PTR(&pin_GPIO3) },
|
||||
|
||||
// Audio
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2S_ADC_SDOUT), MP_ROM_PTR(&pin_GPIO16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2S_MCLK), MP_ROM_PTR(&pin_GPIO2) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2S_SCLK), MP_ROM_PTR(&pin_GPIO17) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2S_LRCK), MP_ROM_PTR(&pin_GPIO47) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2S_CODEC_DSDIN), MP_ROM_PTR(&pin_GPIO15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_PA_CTRL), MP_ROM_PTR(&pin_GPIO46) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MUTE_STATUS), MP_ROM_PTR(&pin_GPIO1) },
|
||||
|
||||
// Internal I2C bus
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO8) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO18) },
|
||||
|
||||
// boot button, also usable as a software button
|
||||
{ MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO0) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
37
ports/espressif/boards/espressif_esp32s3_box_lite/sdkconfig
Normal file
37
ports/espressif/boards/espressif_esp32s3_box_lite/sdkconfig
Normal file
@ -0,0 +1,37 @@
|
||||
CONFIG_ESP32S3_SPIRAM_SUPPORT=y
|
||||
#
|
||||
# SPI RAM config
|
||||
#
|
||||
# CONFIG_SPIRAM_MODE_QUAD is not set
|
||||
CONFIG_SPIRAM_MODE_OCT=y
|
||||
CONFIG_SPIRAM_TYPE_AUTO=y
|
||||
# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
|
||||
CONFIG_SPIRAM_SIZE=-1
|
||||
# end of SPI RAM config
|
||||
|
||||
CONFIG_DEFAULT_PSRAM_CLK_IO=30
|
||||
#
|
||||
# PSRAM Clock and CS IO for ESP32S3
|
||||
#
|
||||
CONFIG_DEFAULT_PSRAM_CS_IO=26
|
||||
# end of PSRAM Clock and CS IO for ESP32S3
|
||||
|
||||
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
|
||||
# CONFIG_SPIRAM_RODATA is not set
|
||||
CONFIG_SPIRAM_SPEED_80M=y
|
||||
# CONFIG_SPIRAM_SPEED_40M is not set
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_BOOT_INIT=y
|
||||
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
|
||||
# CONFIG_SPIRAM_USE_MEMMAP is not set
|
||||
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
|
||||
CONFIG_SPIRAM_USE_MALLOC=y
|
||||
CONFIG_SPIRAM_MEMTEST=y
|
||||
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384
|
||||
# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set
|
||||
CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768
|
||||
#
|
||||
# LWIP
|
||||
#
|
||||
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3"
|
||||
# end of LWIP
|
57
ports/espressif/common-hal/hashlib/Hash.c
Normal file
57
ports/espressif/common-hal/hashlib/Hash.c
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2022 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "shared-bindings/hashlib/Hash.h"
|
||||
|
||||
#include "components/mbedtls/mbedtls/include/mbedtls/ssl.h"
|
||||
|
||||
void common_hal_hashlib_hash_update(hashlib_hash_obj_t *self, const uint8_t *data, size_t datalen) {
|
||||
if (self->hash_type == MBEDTLS_SSL_HASH_SHA1) {
|
||||
mbedtls_sha1_update_ret(&self->sha1, data, datalen);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void common_hal_hashlib_hash_digest(hashlib_hash_obj_t *self, uint8_t *data, size_t datalen) {
|
||||
if (datalen < common_hal_hashlib_hash_get_digest_size(self)) {
|
||||
return;
|
||||
}
|
||||
if (self->hash_type == MBEDTLS_SSL_HASH_SHA1) {
|
||||
// We copy the sha1 state so we can continue to update if needed or get
|
||||
// the digest a second time.
|
||||
mbedtls_sha1_context copy;
|
||||
mbedtls_sha1_clone(©, &self->sha1);
|
||||
mbedtls_sha1_finish_ret(&self->sha1, data);
|
||||
mbedtls_sha1_clone(&self->sha1, ©);
|
||||
}
|
||||
}
|
||||
|
||||
size_t common_hal_hashlib_hash_get_digest_size(hashlib_hash_obj_t *self) {
|
||||
if (self->hash_type == MBEDTLS_SSL_HASH_SHA1) {
|
||||
return 20;
|
||||
}
|
||||
return 0;
|
||||
}
|
41
ports/espressif/common-hal/hashlib/Hash.h
Normal file
41
ports/espressif/common-hal/hashlib/Hash.h
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2022 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_HASHLIB_HASH_H
|
||||
#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_HASHLIB_HASH_H
|
||||
|
||||
#include "components/mbedtls/mbedtls/include/mbedtls/sha1.h"
|
||||
|
||||
typedef struct {
|
||||
mp_obj_base_t base;
|
||||
union {
|
||||
mbedtls_sha1_context sha1;
|
||||
};
|
||||
// Of MBEDTLS_SSL_HASH_*
|
||||
uint8_t hash_type;
|
||||
} hashlib_hash_obj_t;
|
||||
|
||||
#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_HASHLIB_HASH_H
|
40
ports/espressif/common-hal/hashlib/__init__.c
Normal file
40
ports/espressif/common-hal/hashlib/__init__.c
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2022 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "shared-bindings/hashlib/__init__.h"
|
||||
|
||||
#include "components/mbedtls/mbedtls/include/mbedtls/ssl.h"
|
||||
|
||||
|
||||
bool common_hal_hashlib_new(hashlib_hash_obj_t *self, const char *algorithm) {
|
||||
if (strcmp(algorithm, "sha1") == 0) {
|
||||
self->hash_type = MBEDTLS_SSL_HASH_SHA1;
|
||||
mbedtls_sha1_init(&self->sha1);
|
||||
mbedtls_sha1_starts_ret(&self->sha1);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
@ -139,14 +139,14 @@ void common_hal_wifi_radio_set_mac_address(wifi_radio_obj_t *self, const uint8_t
|
||||
esp_wifi_set_mac(ESP_IF_WIFI_STA, mac);
|
||||
}
|
||||
|
||||
uint8_t common_hal_wifi_radio_get_tx_power(wifi_radio_obj_t *self) {
|
||||
mp_float_t common_hal_wifi_radio_get_tx_power(wifi_radio_obj_t *self) {
|
||||
int8_t tx_power;
|
||||
esp_wifi_get_max_tx_power(&tx_power);
|
||||
return tx_power / 4;
|
||||
return tx_power / 4.0f;
|
||||
}
|
||||
|
||||
void common_hal_wifi_radio_set_tx_power(wifi_radio_obj_t *self, const uint8_t tx_power) {
|
||||
esp_wifi_set_max_tx_power(tx_power * 4);
|
||||
void common_hal_wifi_radio_set_tx_power(wifi_radio_obj_t *self, const mp_float_t tx_power) {
|
||||
esp_wifi_set_max_tx_power(tx_power * 4.0f);
|
||||
}
|
||||
|
||||
mp_obj_t common_hal_wifi_radio_get_mac_address_ap(wifi_radio_obj_t *self) {
|
||||
|
@ -19,6 +19,7 @@ CIRCUITPY_COUNTIO ?= 1
|
||||
CIRCUITPY_DUALBANK ?= 1
|
||||
CIRCUITPY_FRAMEBUFFERIO ?= 1
|
||||
CIRCUITPY_FREQUENCYIO ?= 1
|
||||
CIRCUITPY_HASHLIB ?= 1
|
||||
CIRCUITPY_IMAGECAPTURE ?= 1
|
||||
CIRCUITPY_I2CPERIPHERAL ?= 1
|
||||
CIRCUITPY_RGBMATRIX ?= 1
|
||||
|
@ -1,2 +1,4 @@
|
||||
#define MICROPY_HW_BOARD_NAME "ELECFREAKS PICO:ED"
|
||||
#define MICROPY_HW_MCU_NAME "rp2040"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_GPIO25)
|
||||
|
@ -311,7 +311,7 @@ uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) {
|
||||
// The UART only interrupts after a threshold so make sure to copy anything
|
||||
// out of its FIFO before measuring how many bytes we've received.
|
||||
_copy_into_ringbuf(&self->ringbuf, self->uart);
|
||||
irq_set_enabled(self->uart_irq_id, false);
|
||||
irq_set_enabled(self->uart_irq_id, true);
|
||||
return ringbuf_num_filled(&self->ringbuf);
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,9 @@ ifeq ($(MCU_VARIANT),$(filter $(MCU_VARIANT),STM32F405xx STM32F407xx))
|
||||
CIRCUITPY_SDIOIO ?= 1
|
||||
# Number of USB endpoint pairs.
|
||||
USB_NUM_ENDPOINT_PAIRS = 4
|
||||
endif
|
||||
|
||||
ifeq ($(MCU_VARIANT),STM32F407xx)
|
||||
UF2_FAMILY_ID ?= 0x6d0922fa
|
||||
endif
|
||||
|
||||
|
@ -207,6 +207,9 @@ endif
|
||||
ifeq ($(CIRCUITPY_GNSS),1)
|
||||
SRC_PATTERNS += gnss/%
|
||||
endif
|
||||
ifeq ($(CIRCUITPY_HASHLIB),1)
|
||||
SRC_PATTERNS += hashlib/%
|
||||
endif
|
||||
ifeq ($(CIRCUITPY_I2CPERIPHERAL),1)
|
||||
SRC_PATTERNS += i2cperipheral/%
|
||||
endif
|
||||
@ -419,6 +422,8 @@ SRC_COMMON_HAL_ALL = \
|
||||
gnss/GNSS.c \
|
||||
gnss/PositionFix.c \
|
||||
gnss/SatelliteSystem.c \
|
||||
hashlib/__init__.c \
|
||||
hashlib/Hash.c \
|
||||
i2cperipheral/I2CPeripheral.c \
|
||||
i2cperipheral/__init__.c \
|
||||
microcontroller/Pin.c \
|
||||
|
@ -230,7 +230,7 @@ CIRCUITPY_GETPASS ?= $(CIRCUITPY_FULL_BUILD)
|
||||
CFLAGS += -DCIRCUITPY_GETPASS=$(CIRCUITPY_GETPASS)
|
||||
|
||||
ifeq ($(CIRCUITPY_DISPLAYIO),1)
|
||||
CIRCUITPY_GIFIO ?= $(CIRCUITPY_FULL_BUILD)
|
||||
CIRCUITPY_GIFIO ?= $(CIRCUITPY_CAMERA)
|
||||
else
|
||||
CIRCUITPY_GIFIO ?= 0
|
||||
endif
|
||||
@ -239,6 +239,9 @@ CFLAGS += -DCIRCUITPY_GIFIO=$(CIRCUITPY_GIFIO)
|
||||
CIRCUITPY_GNSS ?= 0
|
||||
CFLAGS += -DCIRCUITPY_GNSS=$(CIRCUITPY_GNSS)
|
||||
|
||||
CIRCUITPY_HASHLIB ?= $(CIRCUITPY_WEB_WORKFLOW)
|
||||
CFLAGS += -DCIRCUITPY_HASHLIB=$(CIRCUITPY_HASHLIB)
|
||||
|
||||
CIRCUITPY_I2CPERIPHERAL ?= $(CIRCUITPY_FULL_BUILD)
|
||||
CFLAGS += -DCIRCUITPY_I2CPERIPHERAL=$(CIRCUITPY_I2CPERIPHERAL)
|
||||
|
||||
|
@ -26,3 +26,7 @@ pyelftools
|
||||
|
||||
# for stubs and annotations
|
||||
adafruit-circuitpython-typing
|
||||
|
||||
# for web workflow minify
|
||||
minify_html
|
||||
jsmin
|
||||
|
96
shared-bindings/hashlib/Hash.c
Normal file
96
shared-bindings/hashlib/Hash.c
Normal file
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2022 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "shared-bindings/hashlib/Hash.h"
|
||||
|
||||
#include "py/obj.h"
|
||||
#include "py/objproperty.h"
|
||||
#include "py/objstr.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
//| class Hash:
|
||||
//| """In progress hash algorithm. This object is always created by a `hashlib.new()`. It has no
|
||||
//| user-visible constructor."""
|
||||
//|
|
||||
|
||||
//| digest_size: int
|
||||
//| """Digest size in bytes"""
|
||||
//|
|
||||
STATIC mp_obj_t hashlib_hash_get_digest_size(mp_obj_t self_in) {
|
||||
mp_check_self(mp_obj_is_type(self_in, &hashlib_hash_type));
|
||||
hashlib_hash_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
return MP_OBJ_NEW_SMALL_INT(common_hal_hashlib_hash_get_digest_size(self));
|
||||
}
|
||||
MP_PROPERTY_GETTER(hashlib_hash_digest_size_obj, hashlib_hash_get_digest_size);
|
||||
|
||||
//| def update(self, data: ReadableBuffer) -> None:
|
||||
//| """Update the hash with the given bytes.
|
||||
//|
|
||||
//| :param ~circuitpython_typing.ReadableBuffer data: Update the hash from data in this buffer"""
|
||||
//| ...
|
||||
//|
|
||||
mp_obj_t hashlib_hash_update(mp_obj_t self_in, mp_obj_t buf_in) {
|
||||
mp_check_self(mp_obj_is_type(self_in, &hashlib_hash_type));
|
||||
hashlib_hash_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
|
||||
mp_buffer_info_t bufinfo;
|
||||
mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ);
|
||||
|
||||
common_hal_hashlib_hash_update(self, bufinfo.buf, bufinfo.len);
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(hashlib_hash_update_obj, hashlib_hash_update);
|
||||
|
||||
//| def digest(self) -> bytes:
|
||||
//| """Returns the current digest as bytes() with a length of `hashlib.Hash.digest_size`."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t hashlib_hash_digest(mp_obj_t self_in) {
|
||||
mp_check_self(mp_obj_is_type(self_in, &hashlib_hash_type));
|
||||
hashlib_hash_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
|
||||
size_t size = common_hal_hashlib_hash_get_digest_size(self);
|
||||
mp_obj_t obj = mp_obj_new_bytes_of_zeros(size);
|
||||
mp_obj_str_t *o = MP_OBJ_TO_PTR(obj);
|
||||
|
||||
common_hal_hashlib_hash_digest(self, (uint8_t *)o->data, size);
|
||||
return obj;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(hashlib_hash_digest_obj, hashlib_hash_digest);
|
||||
|
||||
STATIC const mp_rom_map_elem_t hashlib_hash_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_digest_size), MP_ROM_PTR(&hashlib_hash_digest_size_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_update), MP_ROM_PTR(&hashlib_hash_update_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_digest), MP_ROM_PTR(&hashlib_hash_digest_obj) },
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(hashlib_hash_locals_dict, hashlib_hash_locals_dict_table);
|
||||
|
||||
const mp_obj_type_t hashlib_hash_type = {
|
||||
{ &mp_type_type },
|
||||
.name = MP_QSTR_Hash,
|
||||
.locals_dict = (mp_obj_dict_t *)&hashlib_hash_locals_dict,
|
||||
};
|
43
shared-bindings/hashlib/Hash.h
Normal file
43
shared-bindings/hashlib/Hash.h
Normal file
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2022 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB_HASH_H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB_HASH_H
|
||||
|
||||
#include "py/obj.h"
|
||||
|
||||
#include "common-hal/hashlib/Hash.h"
|
||||
|
||||
extern const mp_obj_type_t hashlib_hash_type;
|
||||
|
||||
// So that new can call it when given data.
|
||||
mp_obj_t hashlib_hash_update(mp_obj_t self_in, mp_obj_t buf_in);
|
||||
|
||||
void common_hal_hashlib_hash_update(hashlib_hash_obj_t *self, const uint8_t *data, size_t datalen);
|
||||
void common_hal_hashlib_hash_digest(hashlib_hash_obj_t *self, uint8_t *data, size_t datalen);
|
||||
size_t common_hal_hashlib_hash_get_digest_size(hashlib_hash_obj_t *self);
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB_HASH_H
|
90
shared-bindings/hashlib/__init__.c
Normal file
90
shared-bindings/hashlib/__init__.c
Normal file
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* This file is part of the Micro Python project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2022 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "py/obj.h"
|
||||
#include "py/mpconfig.h"
|
||||
#include "py/runtime.h"
|
||||
#include "shared-bindings/hashlib/__init__.h"
|
||||
#include "shared-bindings/hashlib/Hash.h"
|
||||
#include "supervisor/shared/translate/translate.h"
|
||||
|
||||
//| """Hashing related functions
|
||||
//|
|
||||
//| |see_cpython_module| :mod:`cpython:hashlib`.
|
||||
//| """
|
||||
//|
|
||||
//| def new(name, data=b"") -> hashlib.Hash:
|
||||
//| """Returns a Hash object setup for the named algorithm. Raises ValueError when the named
|
||||
//| algorithm is unsupported.
|
||||
//|
|
||||
//| :return: a hash object for the given algorithm
|
||||
//| :rtype: hashlib.Hash"""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t hashlib_new(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
enum { ARG_name, ARG_data };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_name, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_data, MP_ARG_OBJ, {.u_obj = mp_const_none} },
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
|
||||
const char *algorithm = mp_obj_str_get_str(args[ARG_name].u_obj);
|
||||
|
||||
hashlib_hash_obj_t *self = m_new_obj(hashlib_hash_obj_t);
|
||||
self->base.type = &hashlib_hash_type;
|
||||
|
||||
if (!common_hal_hashlib_new(self, algorithm)) {
|
||||
mp_raise_ValueError(translate("Unsupported hash algorithm"));
|
||||
}
|
||||
|
||||
if (args[ARG_data].u_obj != mp_const_none) {
|
||||
hashlib_hash_update(self, args[ARG_data].u_obj);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(hashlib_new_obj, 1, hashlib_new);
|
||||
|
||||
STATIC const mp_rom_map_elem_t hashlib_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_hashlib) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_new), MP_ROM_PTR(&hashlib_new_obj) },
|
||||
|
||||
// Hash is deliberately omitted here because CPython doesn't expose the
|
||||
// object on `hashlib` only the internal `_hashlib`.
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(hashlib_module_globals, hashlib_module_globals_table);
|
||||
|
||||
const mp_obj_module_t hashlib_module = {
|
||||
.base = { &mp_type_module },
|
||||
.globals = (mp_obj_dict_t *)&hashlib_module_globals,
|
||||
};
|
||||
|
||||
MP_REGISTER_MODULE(MP_QSTR_hashlib, hashlib_module, CIRCUITPY_HASHLIB);
|
36
shared-bindings/hashlib/__init__.h
Normal file
36
shared-bindings/hashlib/__init__.h
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2022 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB___INIT___H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB___INIT___H
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "shared-bindings/hashlib/Hash.h"
|
||||
|
||||
bool common_hal_hashlib_new(hashlib_hash_obj_t *self, const char *algorithm);
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB___INIT___H
|
@ -86,6 +86,9 @@ const mp_obj_property_t keypad_generic_events_obj = {
|
||||
//| connected independently to individual pins,
|
||||
//| connected to a shift register,
|
||||
//| or connected in a row-and-column matrix.
|
||||
//|
|
||||
//| For more information about working with the `keypad` module in CircuitPython,
|
||||
//| see `this Learn guide <https://learn.adafruit.com/key-pad-matrix-scanning-in-circuitpython>`_.
|
||||
//| """
|
||||
//|
|
||||
|
||||
|
@ -41,6 +41,9 @@
|
||||
//|
|
||||
//| Not implemented: 64-bit int, uint, float.
|
||||
//|
|
||||
//| For more information about working with msgpack,
|
||||
//| see `the CPython Library Documentation <https://msgpack-python.readthedocs.io/en/latest/?badge=latest>`_.
|
||||
//|
|
||||
//| Example 1::
|
||||
//|
|
||||
//| import msgpack
|
||||
|
@ -31,9 +31,12 @@
|
||||
|
||||
#include "shared-bindings/sharpdisplay/SharpMemoryFramebuffer.h"
|
||||
|
||||
//| """Support for Sharp Memory Display framebuffers"""
|
||||
//| """Support for Sharp Memory Display framebuffers
|
||||
//|
|
||||
//| For more information about working with Sharp Memory Displays,
|
||||
//| see `this Learn guide <https://learn.adafruit.com/adafruit-sharp-memory-display-breakout/circuitpython-displayio-setup>`_.
|
||||
//| """
|
||||
//|
|
||||
|
||||
STATIC const mp_rom_map_elem_t sharpdisplay_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_sharpdisplay) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SharpMemoryFramebuffer), MP_ROM_PTR(&sharpdisplay_framebuffer_type) },
|
||||
|
@ -45,7 +45,10 @@
|
||||
//| call :py:meth:`!deinit` or use a context manager. See
|
||||
//| :ref:`lifetime-and-contextmanagers` for more info.
|
||||
//|
|
||||
//| For example::
|
||||
//| For more information about working with the `touchio` module in CircuitPython,
|
||||
//| see `this Learn guide page <https://learn.adafruit.com/circuitpython-essentials/circuitpython-cap-touch>`_.
|
||||
//|
|
||||
//| Example::
|
||||
//|
|
||||
//| import touchio
|
||||
//| from board import *
|
||||
|
@ -138,17 +138,17 @@ MP_PROPERTY_GETSET(wifi_radio_mac_address_obj,
|
||||
(mp_obj_t)&wifi_radio_get_mac_address_obj,
|
||||
(mp_obj_t)&wifi_radio_set_mac_address_obj);
|
||||
|
||||
//| tx_power: int
|
||||
//| tx_power: float
|
||||
//| """Wifi transmission power, in dBm."""
|
||||
//|
|
||||
STATIC mp_obj_t wifi_radio_get_tx_power(mp_obj_t self_in) {
|
||||
wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
return mp_obj_new_int(common_hal_wifi_radio_get_tx_power(self));
|
||||
return mp_obj_new_float(common_hal_wifi_radio_get_tx_power(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_tx_power_obj, wifi_radio_get_tx_power);
|
||||
|
||||
STATIC mp_obj_t wifi_radio_set_tx_power(mp_obj_t self_in, mp_obj_t tx_power_in) {
|
||||
mp_int_t tx_power = mp_obj_get_int(tx_power_in);
|
||||
mp_float_t tx_power = mp_obj_get_float(tx_power_in);
|
||||
wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
common_hal_wifi_radio_set_tx_power(self, tx_power);
|
||||
return mp_const_none;
|
||||
|
@ -82,8 +82,8 @@ extern void common_hal_wifi_radio_set_mac_address(wifi_radio_obj_t *self, const
|
||||
extern mp_obj_t common_hal_wifi_radio_get_mac_address_ap(wifi_radio_obj_t *self);
|
||||
extern void common_hal_wifi_radio_set_mac_address_ap(wifi_radio_obj_t *self, const uint8_t *mac);
|
||||
|
||||
extern uint8_t common_hal_wifi_radio_get_tx_power(wifi_radio_obj_t *self);
|
||||
extern void common_hal_wifi_radio_set_tx_power(wifi_radio_obj_t *self, const uint8_t power);
|
||||
extern mp_float_t common_hal_wifi_radio_get_tx_power(wifi_radio_obj_t *self);
|
||||
extern void common_hal_wifi_radio_set_tx_power(wifi_radio_obj_t *self, const mp_float_t power);
|
||||
|
||||
extern mp_obj_t common_hal_wifi_radio_start_scanning_networks(wifi_radio_obj_t *self);
|
||||
extern void common_hal_wifi_radio_stop_scanning_networks(wifi_radio_obj_t *self);
|
||||
|
@ -45,6 +45,10 @@
|
||||
#include "tusb.h"
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_WEB_WORKFLOW
|
||||
#include "supervisor/shared/web_workflow/websocket.h"
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_CONSOLE_UART
|
||||
#include "py/mpprint.h"
|
||||
#include "shared-bindings/busio/UART.h"
|
||||
@ -164,6 +168,13 @@ bool serial_connected(void) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_WEB_WORKFLOW
|
||||
if (websocket_connected()) {
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if (port_serial_connected()) {
|
||||
return true;
|
||||
}
|
||||
@ -194,6 +205,12 @@ char serial_read(void) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_WEB_WORKFLOW
|
||||
if (websocket_available()) {
|
||||
return websocket_read_char();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_USB_CDC
|
||||
if (!usb_cdc_console_enabled()) {
|
||||
return -1;
|
||||
@ -228,6 +245,12 @@ bool serial_bytes_available(void) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_WEB_WORKFLOW
|
||||
if (websocket_available()) {
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_USB_CDC
|
||||
if (usb_cdc_console_enabled() && tud_cdc_available() > 0) {
|
||||
return true;
|
||||
@ -270,6 +293,10 @@ void serial_write_substring(const char *text, uint32_t length) {
|
||||
ble_serial_write(text, length);
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_WEB_WORKFLOW
|
||||
websocket_write(text, length);
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_USB_CDC
|
||||
if (!usb_cdc_console_enabled()) {
|
||||
return;
|
||||
|
24
supervisor/shared/web_workflow/static/serial.html
Normal file
24
supervisor/shared/web_workflow/static/serial.html
Normal file
@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="height: 100%;">
|
||||
<head>
|
||||
<title>Simple client</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script src="/serial.js" defer=true></script>
|
||||
</head>
|
||||
<body style="flex-direction: column; display: flex; height: 100%; width: 100%; margin: 0; font-size: 1rem;">
|
||||
<div style="flex: auto; display: flex; overflow: auto; flex-direction: column;">
|
||||
<pre id="log" style="margin:0; margin-top: auto;"></pre>
|
||||
<span style="height: 1px;"></span>
|
||||
</div>
|
||||
<div id="controls" style="flex: none; display: flex;">
|
||||
<fieldset style="display: inline-block; padding: 0;">
|
||||
<legend>Ctrl</legend>
|
||||
<button id="c">C</button>
|
||||
<button id="d">D</button>
|
||||
</fieldset>
|
||||
<textarea id="input" rows="1" spellcheck="false" wrap="off" style="resize: none; flex: auto; font-size: 1rem;" autocapitalize="none" autocomplete="off" autocorrect="off"></textarea>
|
||||
<button onclick="onSubmit(); return false;">Send</button>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
81
supervisor/shared/web_workflow/static/serial.js
Normal file
81
supervisor/shared/web_workflow/static/serial.js
Normal file
@ -0,0 +1,81 @@
|
||||
|
||||
var ws;
|
||||
var input = document.getElementById("input");
|
||||
input.value = "";
|
||||
var title = document.querySelector("title");
|
||||
var log = document.getElementById("log");
|
||||
|
||||
function set_enabled(enabled) {
|
||||
input.disabled = !enabled;
|
||||
var buttons = document.querySelectorAll("button");
|
||||
for (button of buttons) {
|
||||
button.disabled = !enabled;
|
||||
}
|
||||
}
|
||||
|
||||
set_enabled(false);
|
||||
|
||||
function onSubmit() {
|
||||
ws.send("\r");
|
||||
input.value = "";
|
||||
input.focus();
|
||||
}
|
||||
|
||||
ws = new WebSocket("ws://" + window.location.host + "/cp/serial/");
|
||||
|
||||
ws.onopen = function() {
|
||||
set_enabled(true);
|
||||
};
|
||||
|
||||
var setting_title = false;
|
||||
var encoder = new TextEncoder();
|
||||
var left_count = 0;
|
||||
ws.onmessage = function(e) {
|
||||
if (e.data == "\x1b]0;") {
|
||||
setting_title = true;
|
||||
title.textContent = "";
|
||||
} else if (e.data == "\x1b\\") {
|
||||
setting_title = false;
|
||||
} else if (setting_title) {
|
||||
title.textContent += e.data;
|
||||
} else if (e.data == "\b") {
|
||||
left_count += 1;
|
||||
} else if (e.data == "\x1b[K") { // Clear line
|
||||
log.textContent = log.textContent.slice(0, -left_count);
|
||||
left_count = 0;
|
||||
} else {
|
||||
log.textContent += e.data;
|
||||
}
|
||||
document.querySelector("span").scrollIntoView();
|
||||
};
|
||||
|
||||
ws.onclose = function() {
|
||||
set_enabled(false);
|
||||
};
|
||||
|
||||
ws.onerror = function(e) {
|
||||
set_enabled(false);
|
||||
};
|
||||
|
||||
input.addEventListener("beforeinput", function(e) {
|
||||
if (e.inputType == "insertLineBreak") {
|
||||
ws.send("\r");
|
||||
input.value = "";
|
||||
input.focus();
|
||||
e.preventDefault();
|
||||
} else if (e.inputType == "insertText") {
|
||||
ws.send(e.data);
|
||||
} else if (e.inputType == "deleteContentBackward") {
|
||||
ws.send("\b");
|
||||
}
|
||||
});
|
||||
|
||||
let ctrl_c = document.querySelector("#c");
|
||||
ctrl_c.onclick = function() {
|
||||
ws.send("\x03");
|
||||
}
|
||||
|
||||
let ctrl_d = document.querySelector("#d");
|
||||
ctrl_d.onclick = function() {
|
||||
ws.send("\x04");
|
||||
}
|
@ -3,11 +3,12 @@
|
||||
<head>
|
||||
<title>CircuitPython</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script src="/welcome.js" defer=true></script>
|
||||
</head>
|
||||
<script src="/welcome.js" defer=true></script>
|
||||
<body>
|
||||
<h1><a href="/"><img src="/favicon.ico"/></a> Welcome!</h1>
|
||||
Welcome to CircuitPython's Web API. Go to the <a href="/fs/">file browser</a> to work with files in the CIRCUITPY drive. Make sure you've set <code>CIRCUITPY_WEB_API_PASSWORD='somepassword'</code> in <code>/.env</code>. Provide the password when the browser prompts for it. Leave the username blank.
|
||||
Welcome to CircuitPython's Web API. Go to the <a href="/fs/">file browser</a> to work with files in the CIRCUITPY drive. Go to the <a href="/cp/serial/">serial terminal</a> to see code output and interact with the REPL. Make sure you've set <code>CIRCUITPY_WEB_API_PASSWORD='somepassword'</code> in <code>/.env</code>. Provide the password when the browser prompts for it. Leave the username blank.
|
||||
<h2>Device Info</h2>
|
||||
Board: <a id="board"></a><br>
|
||||
Version: <span id="version"></span><br>
|
||||
|
@ -39,8 +39,11 @@
|
||||
#include "supervisor/shared/reload.h"
|
||||
#include "supervisor/shared/translate/translate.h"
|
||||
#include "supervisor/shared/web_workflow/web_workflow.h"
|
||||
#include "supervisor/shared/web_workflow/websocket.h"
|
||||
#include "supervisor/usb.h"
|
||||
|
||||
#include "shared-bindings/hashlib/__init__.h"
|
||||
#include "shared-bindings/hashlib/Hash.h"
|
||||
#include "shared-bindings/mdns/RemoteService.h"
|
||||
#include "shared-bindings/mdns/Server.h"
|
||||
#include "shared-bindings/socketpool/__init__.h"
|
||||
@ -86,6 +89,10 @@ typedef struct {
|
||||
bool authenticated;
|
||||
bool expect;
|
||||
bool json;
|
||||
bool websocket;
|
||||
uint32_t websocket_version;
|
||||
// RFC6455 for websockets says this header should be 24 base64 characters long.
|
||||
char websocket_key[24 + 1];
|
||||
} _request;
|
||||
|
||||
static wifi_radio_error_t wifi_status = WIFI_RADIO_ERROR_NONE;
|
||||
@ -256,20 +263,19 @@ void supervisor_start_web_workflow(void) {
|
||||
active.num = -1;
|
||||
active.connected = false;
|
||||
|
||||
websocket_init();
|
||||
|
||||
// TODO:
|
||||
// GET /cp/serial.txt
|
||||
// - Most recent 1k of serial output.
|
||||
// GET /edit/
|
||||
// - Super basic editor
|
||||
// GET /ws/circuitpython
|
||||
// GET /ws/user
|
||||
// - WebSockets
|
||||
#endif
|
||||
}
|
||||
|
||||
static void _send_raw(socketpool_socket_obj_t *socket, const uint8_t *buf, int len) {
|
||||
int sent = -EAGAIN;
|
||||
while (sent == -EAGAIN) {
|
||||
while (sent == -EAGAIN && common_hal_socketpool_socket_get_connected(socket)) {
|
||||
sent = socketpool_socket_send(socket, buf, len);
|
||||
}
|
||||
if (sent < len) {
|
||||
@ -516,7 +522,14 @@ static void _reply_redirect(socketpool_socket_obj_t *socket, _request *request,
|
||||
"HTTP/1.1 301 Moved Permanently\r\n",
|
||||
"Connection: close\r\n",
|
||||
"Content-Length: 0\r\n",
|
||||
"Location: http://", hostname, ".local", path, "\r\n", NULL);
|
||||
"Location: ", NULL);
|
||||
if (request->websocket) {
|
||||
_send_str(socket, "ws");
|
||||
} else {
|
||||
_send_str(socket, "http");
|
||||
}
|
||||
|
||||
_send_strs(socket, "://", hostname, ".local", path, "\r\n", NULL);
|
||||
_cors_header(socket, request);
|
||||
_send_str(socket, "\r\n");
|
||||
}
|
||||
@ -826,6 +839,8 @@ STATIC_FILE(directory_html);
|
||||
STATIC_FILE(directory_js);
|
||||
STATIC_FILE(welcome_html);
|
||||
STATIC_FILE(welcome_js);
|
||||
STATIC_FILE(serial_html);
|
||||
STATIC_FILE(serial_js);
|
||||
STATIC_FILE(blinka_16x16_ico);
|
||||
|
||||
static void _reply_static(socketpool_socket_obj_t *socket, _request *request, const uint8_t *response, size_t response_len, const char *content_type) {
|
||||
@ -844,10 +859,34 @@ static void _reply_static(socketpool_socket_obj_t *socket, _request *request, co
|
||||
|
||||
#define _REPLY_STATIC(socket, request, filename) _reply_static(socket, request, filename, filename##_length, filename##_content_type)
|
||||
|
||||
static void _reply_websocket_upgrade(socketpool_socket_obj_t *socket, _request *request) {
|
||||
// Compute accept key
|
||||
hashlib_hash_obj_t hash;
|
||||
common_hal_hashlib_new(&hash, "sha1");
|
||||
common_hal_hashlib_hash_update(&hash, (const uint8_t *)request->websocket_key, strlen(request->websocket_key));
|
||||
const char *magic_string = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
|
||||
common_hal_hashlib_hash_update(&hash, (const uint8_t *)magic_string, strlen(magic_string));
|
||||
size_t digest_size = common_hal_hashlib_hash_get_digest_size(&hash);
|
||||
size_t encoded_size = (digest_size + 1) * 4 / 3 + 1;
|
||||
uint8_t encoded_accept[encoded_size];
|
||||
common_hal_hashlib_hash_digest(&hash, encoded_accept, sizeof(encoded_accept));
|
||||
_base64_in_place((char *)encoded_accept, digest_size, encoded_size);
|
||||
|
||||
// Reply with upgrade
|
||||
_send_strs(socket, "HTTP/1.1 101 Switching Protocols\r\n",
|
||||
"Upgrade: websocket\r\n",
|
||||
"Connection: Upgrade\r\n",
|
||||
"Sec-WebSocket-Accept: ", encoded_accept, "\r\n",
|
||||
"\r\n", NULL);
|
||||
websocket_handoff(socket);
|
||||
// socket is now closed and "disconnected".
|
||||
}
|
||||
|
||||
static bool _reply(socketpool_socket_obj_t *socket, _request *request) {
|
||||
if (request->redirect) {
|
||||
_reply_redirect(socket, request, request->path);
|
||||
} else if (strlen(request->origin) > 0 && !_origin_ok(request->origin)) {
|
||||
ESP_LOGE(TAG, "bad origin %s", request->origin);
|
||||
_reply_forbidden(socket, request);
|
||||
} else if (memcmp(request->path, "/fs/", 4) == 0) {
|
||||
if (!request->authenticated) {
|
||||
@ -980,6 +1019,20 @@ static bool _reply(socketpool_socket_obj_t *socket, _request *request) {
|
||||
_reply_with_devices_json(socket, request);
|
||||
} else if (strcmp(path, "/version.json") == 0) {
|
||||
_reply_with_version_json(socket, request);
|
||||
} else if (strcmp(path, "/serial/") == 0) {
|
||||
if (!request->authenticated) {
|
||||
if (_api_password[0] != '\0') {
|
||||
_reply_unauthorized(socket, request);
|
||||
} else {
|
||||
_reply_forbidden(socket, request);
|
||||
}
|
||||
} else if (request->websocket) {
|
||||
_reply_websocket_upgrade(socket, request);
|
||||
} else {
|
||||
_REPLY_STATIC(socket, request, serial_html);
|
||||
}
|
||||
} else {
|
||||
_reply_missing(socket, request);
|
||||
}
|
||||
} else if (strcmp(request->method, "GET") != 0) {
|
||||
_reply_method_not_allowed(socket, request);
|
||||
@ -992,6 +1045,8 @@ static bool _reply(socketpool_socket_obj_t *socket, _request *request) {
|
||||
_REPLY_STATIC(socket, request, directory_js);
|
||||
} else if (strcmp(request->path, "/welcome.js") == 0) {
|
||||
_REPLY_STATIC(socket, request, welcome_js);
|
||||
} else if (strcmp(request->path, "/serial.js") == 0) {
|
||||
_REPLY_STATIC(socket, request, serial_js);
|
||||
} else if (strcmp(request->path, "/favicon.ico") == 0) {
|
||||
// TODO: Autogenerate this based on the blinka bitmap and change the
|
||||
// palette based on MAC address.
|
||||
@ -1015,6 +1070,7 @@ static void _reset_request(_request *request) {
|
||||
request->authenticated = false;
|
||||
request->expect = false;
|
||||
request->json = false;
|
||||
request->websocket = false;
|
||||
}
|
||||
|
||||
static void _process_request(socketpool_socket_obj_t *socket, _request *request) {
|
||||
@ -1111,6 +1167,13 @@ static void _process_request(socketpool_socket_obj_t *socket, _request *request)
|
||||
strcpy(request->origin, request->header_value);
|
||||
} else if (strcmp(request->header_key, "X-Timestamp") == 0) {
|
||||
request->timestamp_ms = strtoull(request->header_value, NULL, 10);
|
||||
} else if (strcmp(request->header_key, "Upgrade") == 0) {
|
||||
request->websocket = strcmp(request->header_value, "websocket") == 0;
|
||||
} else if (strcmp(request->header_key, "Sec-WebSocket-Version") == 0) {
|
||||
request->websocket_version = strtoul(request->header_value, NULL, 10);
|
||||
} else if (strcmp(request->header_key, "Sec-WebSocket-Key") == 0 &&
|
||||
strlen(request->header_value) == 24) {
|
||||
strcpy(request->websocket_key, request->header_value);
|
||||
}
|
||||
ESP_LOGI(TAG, "Header %s %s", request->header_key, request->header_value);
|
||||
} else if (request->offset > sizeof(request->header_value) - 1) {
|
||||
|
234
supervisor/shared/web_workflow/websocket.c
Normal file
234
supervisor/shared/web_workflow/websocket.c
Normal file
@ -0,0 +1,234 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2022 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "supervisor/shared/web_workflow/websocket.h"
|
||||
|
||||
// TODO: Remove ESP specific stuff. For now, it is useful as we refine the server.
|
||||
#include "esp_log.h"
|
||||
|
||||
typedef struct {
|
||||
socketpool_socket_obj_t socket;
|
||||
uint8_t opcode;
|
||||
uint8_t frame_len;
|
||||
uint8_t payload_len_size;
|
||||
bool masked;
|
||||
bool closed;
|
||||
uint8_t mask[4];
|
||||
int frame_index;
|
||||
size_t payload_remaining;
|
||||
} _websocket;
|
||||
|
||||
static _websocket cp_serial;
|
||||
|
||||
static const char *TAG = "CP websocket";
|
||||
|
||||
void websocket_init(void) {
|
||||
cp_serial.socket.num = -1;
|
||||
cp_serial.socket.connected = false;
|
||||
}
|
||||
|
||||
void websocket_handoff(socketpool_socket_obj_t *socket) {
|
||||
cp_serial.socket = *socket;
|
||||
cp_serial.closed = false;
|
||||
cp_serial.opcode = 0;
|
||||
cp_serial.frame_index = 0;
|
||||
cp_serial.frame_len = 2;
|
||||
// Mark the original socket object as closed without telling the lower level.
|
||||
socket->connected = false;
|
||||
socket->num = -1;
|
||||
}
|
||||
|
||||
bool websocket_connected(void) {
|
||||
return !cp_serial.closed && common_hal_socketpool_socket_get_connected(&cp_serial.socket);
|
||||
}
|
||||
|
||||
static bool _read_byte(uint8_t *c) {
|
||||
int len = socketpool_socket_recv_into(&cp_serial.socket, c, 1);
|
||||
if (len != 1) {
|
||||
if (len != -EAGAIN) {
|
||||
ESP_LOGE(TAG, "recv error %d", len);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static void _send_raw(socketpool_socket_obj_t *socket, const uint8_t *buf, int len) {
|
||||
int sent = -EAGAIN;
|
||||
while (sent == -EAGAIN) {
|
||||
sent = socketpool_socket_send(socket, buf, len);
|
||||
}
|
||||
if (sent < len) {
|
||||
ESP_LOGE(TAG, "short send on %d err %d len %d", socket->num, sent, len);
|
||||
}
|
||||
}
|
||||
|
||||
static void _read_next_frame_header(void) {
|
||||
uint8_t h;
|
||||
if (cp_serial.frame_index == 0 && _read_byte(&h)) {
|
||||
cp_serial.frame_index++;
|
||||
cp_serial.opcode = h & 0xf;
|
||||
}
|
||||
if (cp_serial.frame_index == 1 && _read_byte(&h)) {
|
||||
cp_serial.frame_index++;
|
||||
uint8_t len = h & 0xf;
|
||||
cp_serial.masked = (h >> 7) == 1;
|
||||
if (len <= 125) {
|
||||
cp_serial.payload_remaining = len;
|
||||
cp_serial.payload_len_size = 0;
|
||||
} else if (len == 126) { // 16 bit length
|
||||
cp_serial.payload_len_size = 2;
|
||||
} else if (len == 127) { // 64 bit length
|
||||
cp_serial.payload_len_size = 8;
|
||||
}
|
||||
cp_serial.frame_len = 2 + cp_serial.payload_len_size;
|
||||
if (cp_serial.masked) {
|
||||
cp_serial.frame_len += 4;
|
||||
}
|
||||
}
|
||||
while (cp_serial.frame_index >= 2 &&
|
||||
cp_serial.frame_index < (cp_serial.payload_len_size + 2) &&
|
||||
_read_byte(&h)) {
|
||||
cp_serial.frame_index++;
|
||||
cp_serial.payload_remaining = cp_serial.payload_remaining << 8 | h;
|
||||
}
|
||||
int mask_start = cp_serial.payload_len_size + 2;
|
||||
while (cp_serial.frame_index >= mask_start &&
|
||||
cp_serial.frame_index < cp_serial.frame_len &&
|
||||
_read_byte(&h)) {
|
||||
size_t mask_offset = cp_serial.frame_index - mask_start;
|
||||
cp_serial.mask[mask_offset] = h;
|
||||
cp_serial.frame_index++;
|
||||
}
|
||||
// Reply to PINGs and CLOSE.
|
||||
while ((cp_serial.opcode == 0x8 ||
|
||||
cp_serial.opcode == 0x9) &&
|
||||
cp_serial.frame_index >= cp_serial.frame_len) {
|
||||
|
||||
if (cp_serial.frame_index == cp_serial.frame_len) {
|
||||
uint8_t opcode = 0x8; // CLOSE
|
||||
if (cp_serial.opcode == 0x9) {
|
||||
opcode = 0xA; // PONG
|
||||
} else {
|
||||
// Set the TCP socket to send immediately so that we send the payload back before
|
||||
// closing the connection.
|
||||
int nodelay = 1;
|
||||
lwip_setsockopt(cp_serial.socket.num, IPPROTO_TCP, TCP_NODELAY, &nodelay, sizeof(nodelay));
|
||||
}
|
||||
uint8_t frame_header[2];
|
||||
frame_header[0] = 1 << 7 | opcode;
|
||||
if (cp_serial.payload_remaining > 125) {
|
||||
ESP_LOGE(TAG, "CLOSE or PING has long payload");
|
||||
}
|
||||
frame_header[1] = cp_serial.payload_remaining;
|
||||
_send_raw(&cp_serial.socket, (const uint8_t *)frame_header, 2);
|
||||
}
|
||||
|
||||
if (cp_serial.payload_remaining > 0 && _read_byte(&h)) {
|
||||
// Send the payload back to the client.
|
||||
cp_serial.frame_index++;
|
||||
cp_serial.payload_remaining--;
|
||||
_send_raw(&cp_serial.socket, &h, 1);
|
||||
}
|
||||
|
||||
if (cp_serial.payload_remaining == 0) {
|
||||
cp_serial.frame_index = 0;
|
||||
if (cp_serial.opcode == 0x8) {
|
||||
cp_serial.closed = true;
|
||||
|
||||
common_hal_socketpool_socket_close(&cp_serial.socket);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bool _read_next_payload_byte(uint8_t *c) {
|
||||
_read_next_frame_header();
|
||||
if (cp_serial.opcode == 0x1 &&
|
||||
cp_serial.frame_index >= cp_serial.frame_len &&
|
||||
cp_serial.payload_remaining > 0) {
|
||||
if (_read_byte(c)) {
|
||||
uint8_t mask_offset = (cp_serial.frame_index - cp_serial.frame_len) % 4;
|
||||
*c ^= cp_serial.mask[mask_offset];
|
||||
cp_serial.frame_index++;
|
||||
cp_serial.payload_remaining--;
|
||||
if (cp_serial.payload_remaining == 0) {
|
||||
cp_serial.frame_index = 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool websocket_available(void) {
|
||||
if (!websocket_connected()) {
|
||||
return false;
|
||||
}
|
||||
_read_next_frame_header();
|
||||
return cp_serial.payload_remaining > 0 && cp_serial.frame_index >= cp_serial.frame_len;
|
||||
}
|
||||
|
||||
char websocket_read_char(void) {
|
||||
uint8_t c;
|
||||
_read_next_payload_byte(&c);
|
||||
return c;
|
||||
}
|
||||
|
||||
static void _websocket_send(_websocket *ws, const char *text, size_t len) {
|
||||
if (!websocket_connected()) {
|
||||
return;
|
||||
}
|
||||
uint32_t opcode = 1;
|
||||
uint8_t frame_header[2];
|
||||
frame_header[0] = 1 << 7 | opcode;
|
||||
uint8_t payload_len;
|
||||
if (len <= 125) {
|
||||
payload_len = len;
|
||||
} else if (len < (1 << 16)) {
|
||||
payload_len = 126;
|
||||
} else {
|
||||
payload_len = 127;
|
||||
}
|
||||
frame_header[1] = payload_len;
|
||||
_send_raw(&ws->socket, (const uint8_t *)frame_header, 2);
|
||||
if (payload_len == 126) {
|
||||
_send_raw(&ws->socket, (const uint8_t *)&len, 2);
|
||||
} else if (payload_len == 127) {
|
||||
uint32_t zero = 0;
|
||||
// 64 bits where top four bytes are zero.
|
||||
_send_raw(&ws->socket, (const uint8_t *)&zero, 4);
|
||||
_send_raw(&ws->socket, (const uint8_t *)&len, 4);
|
||||
}
|
||||
_send_raw(&ws->socket, (const uint8_t *)text, len);
|
||||
char copy[len];
|
||||
memcpy(copy, text, len);
|
||||
copy[len] = '\0';
|
||||
}
|
||||
|
||||
void websocket_write(const char *text, size_t len) {
|
||||
_websocket_send(&cp_serial, text, len);
|
||||
}
|
38
supervisor/shared/web_workflow/websocket.h
Normal file
38
supervisor/shared/web_workflow/websocket.h
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2022 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "shared-bindings/socketpool/Socket.h"
|
||||
|
||||
void websocket_init(void);
|
||||
void websocket_handoff(socketpool_socket_obj_t *socket);
|
||||
bool websocket_connected(void);
|
||||
bool websocket_available(void);
|
||||
char websocket_read_char(void);
|
||||
void websocket_write(const char *text, size_t len);
|
@ -168,8 +168,8 @@ $(BUILD)/autogen_web_workflow_static.c: ../../tools/gen_web_workflow_static.py $
|
||||
$(STATIC_RESOURCES)
|
||||
|
||||
ifeq ($(CIRCUITPY_WEB_WORKFLOW),1)
|
||||
SRC_SUPERVISOR += supervisor/shared/web_workflow/web_workflow.c
|
||||
|
||||
SRC_SUPERVISOR += supervisor/shared/web_workflow/web_workflow.c \
|
||||
supervisor/shared/web_workflow/websocket.c
|
||||
SRC_SUPERVISOR += $(BUILD)/autogen_web_workflow_static.c
|
||||
endif
|
||||
|
||||
|
@ -38,12 +38,12 @@ hashlib json math qrio
|
||||
rainbowio re sys termios
|
||||
traceback ubinascii uctypes uerrno
|
||||
uheapq uio ujson ulab
|
||||
ulab.fft ulab.linalg ulab.numpy ulab.scipy
|
||||
ulab.scipy.linalg ulab.scipy.optimize
|
||||
ulab.scipy.signal ulab.scipy.special
|
||||
ulab.utils uos urandom ure
|
||||
uselect ustruct utime utimeq
|
||||
uzlib zlib
|
||||
ulab.numpy ulab.numpy.fft ulab.numpy.linalg
|
||||
ulab.scipy ulab.scipy.linalg
|
||||
ulab.scipy.optimize ulab.scipy.signal
|
||||
ulab.scipy.special ulab.utils uos
|
||||
urandom ure uselect ustruct
|
||||
utime utimeq uzlib zlib
|
||||
ime
|
||||
|
||||
utime utimeq
|
||||
|
@ -4,6 +4,8 @@
|
||||
|
||||
import argparse
|
||||
import gzip
|
||||
import minify_html
|
||||
import jsmin
|
||||
import mimetypes
|
||||
import pathlib
|
||||
|
||||
@ -24,6 +26,10 @@ for f in args.files:
|
||||
variable = path.name.replace(".", "_")
|
||||
uncompressed = f.read()
|
||||
ulen = len(uncompressed)
|
||||
if f.name.endswith(".html"):
|
||||
uncompressed = minify_html.minify(uncompressed.decode("utf-8")).encode("utf-8")
|
||||
elif f.name.endswith(".js"):
|
||||
uncompressed = jsmin.jsmin(uncompressed.decode("utf-8")).encode("utf-8")
|
||||
compressed = gzip.compress(uncompressed)
|
||||
clen = len(compressed)
|
||||
compressed = ", ".join([hex(x) for x in compressed])
|
||||
|
Loading…
x
Reference in New Issue
Block a user