Modules¶
Generated Wed 11 Nov 2020 02:26:58 UTC
array¶
Looking for integer not implemented¶
Sample code:
import array
print(1 in array.array('B', b'12'))
CPy output: |
uPy output: |
False
|
/bin/sh: ../ports/unix/micropython: No such file or directory
|
Array deletion not implemented¶
Sample code:
import array
a = array.array('b', (1, 2, 3))
del a[1]
print(a)
CPy output: |
uPy output: |
array('b', [1, 3])
|
/bin/sh: ../ports/unix/micropython: No such file or directory
|
Subscript with step != 1 is not yet implemented¶
Sample code:
import array
a = array.array('b', (1, 2, 3))
print(a[3:2:2])
CPy output: |
uPy output: |
array('b')
|
/bin/sh: ../ports/unix/micropython: No such file or directory
|
builtins¶
Second argument to next() is not implemented¶
Cause: MicroPython is optimised for code space.
Workaround: Instead of val = next(it, deflt)
use:
try:
val = next(it)
except StopIteration:
val = deflt
Sample code:
print(next(iter(range(0)), 42))
CPy output: |
uPy output: |
42
|
/bin/sh: ../ports/unix/micropython: No such file or directory
|
deque¶
Deque not implemented¶
Workaround: Use regular lists. micropython-lib has implementation of collections.deque.
Sample code:
import collections
D = collections.deque()
print(D)
CPy output: |
uPy output: |
deque([])
|
/bin/sh: ../ports/unix/micropython: No such file or directory
|
json¶
JSON module does not throw exception when object is not serialisable¶
Sample code:
import json
a = bytes(x for x in range(256))
try:
z = json.dumps(a)
x = json.loads(z)
print('Should not get here')
except TypeError:
print('TypeError')
CPy output: |
uPy output: |
TypeError
|
/bin/sh: ../ports/unix/micropython: No such file or directory
|
os¶
environ
attribute is not implemented¶
Workaround: Use getenv
, putenv
and unsetenv
Sample code:
import os
try:
print(os.environ.get('NEW_VARIABLE'))
os.environ['NEW_VARIABLE'] = 'VALUE'
print(os.environ['NEW_VARIABLE'])
except AttributeError:
print('should not get here')
print(os.getenv('NEW_VARIABLE'))
os.putenv('NEW_VARIABLE', 'VALUE')
print(os.getenv('NEW_VARIABLE'))
CPy output: |
uPy output: |
None
VALUE
|
/bin/sh: ../ports/unix/micropython: No such file or directory
|
getenv
returns actual value instead of cached value¶
Cause: The environ
attribute is not implemented
Sample code:
import os
print(os.getenv('NEW_VARIABLE'))
os.putenv('NEW_VARIABLE', 'VALUE')
print(os.getenv('NEW_VARIABLE'))
CPy output: |
uPy output: |
None
None
|
/bin/sh: ../ports/unix/micropython: No such file or directory
|
getenv
only allows one argument¶
Workaround: Test that the return value is None
Sample code:
import os
try:
print(os.getenv('NEW_VARIABLE', 'DEFAULT'))
except TypeError:
print('should not get here')
# this assumes NEW_VARIABLE is never an empty variable
print(os.getenv('NEW_VARIABLE') or 'DEFAULT')
CPy output: |
uPy output: |
DEFAULT
|
/bin/sh: ../ports/unix/micropython: No such file or directory
|
struct¶
Struct pack with too few args, not checked by uPy¶
Sample code:
import struct
try:
print(struct.pack('bb', 1))
print('Should not get here')
except:
print('struct.error')
CPy output: |
uPy output: |
struct.error
|
/bin/sh: ../ports/unix/micropython: No such file or directory
|
Struct pack with too many args, not checked by uPy¶
Sample code:
import struct
try:
print(struct.pack('bb', 1, 2, 3))
print('Should not get here')
except:
print('struct.error')
CPy output: |
uPy output: |
struct.error
|
/bin/sh: ../ports/unix/micropython: No such file or directory
|