.. This document was generated by tools/gen-cpydiff.py

Modules
=======
Generated Thu 31 Jan 2019 04:36:01 UTC

array
-----

.. _cpydiff_modules_array_containment:

Looking for integer not implemented
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sample code::

    import array
    print(1 in array.array('B', b'12'))

+-------------+------------------------------------------------------+
| CPy output: | uPy output:                                          |
+-------------+------------------------------------------------------+
| ::          | ::                                                   |
|             |                                                      |
|     False   |     /bin/sh: 1: ../ports/unix/micropython: not found |
+-------------+------------------------------------------------------+

.. _cpydiff_modules_array_deletion:

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: 1: ../ports/unix/micropython: not found |
+------------------------+------------------------------------------------------+

.. _cpydiff_modules_array_subscrstep:

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: 1: ../ports/unix/micropython: not found |
+----------------+------------------------------------------------------+

builtins
--------

.. _cpydiff_builtin_next_arg2:

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: 1: ../ports/unix/micropython: not found |
+-------------+------------------------------------------------------+

deque
-----

.. _cpydiff_modules_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: 1: ../ports/unix/micropython: not found |
+---------------+------------------------------------------------------+

json
----

.. _cpydiff_modules_json_nonserializable:

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: 1: ../ports/unix/micropython: not found |
+---------------+------------------------------------------------------+

struct
------

.. _cpydiff_modules_struct_fewargs:

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: 1: ../ports/unix/micropython: not found |
+------------------+------------------------------------------------------+

.. _cpydiff_modules_struct_manyargs:

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: 1: ../ports/unix/micropython: not found |
+------------------+------------------------------------------------------+

sys
---

.. _cpydiff_modules_sys_stdassign:

Overriding sys.stdin, sys.stdout and sys.stderr not possible
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

**Cause:** They are stored in read-only memory.

Sample code::

    import sys
    sys.stdin = None
    print(sys.stdin)

+-------------+------------------------------------------------------+
| CPy output: | uPy output:                                          |
+-------------+------------------------------------------------------+
| ::          | ::                                                   |
|             |                                                      |
|     None    |     /bin/sh: 1: ../ports/unix/micropython: not found |
+-------------+------------------------------------------------------+