<feed xmlns='http://www.w3.org/2005/Atom'>
<title>suspect-devices/circuitpython/extmod/modujson.c, branch type_hints</title>
<subtitle>CircuitPython - a Python implementation for teaching coding with microcontrollers</subtitle>
<id>https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=type_hints</id>
<link rel='self' href='https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=type_hints'/>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/'/>
<updated>2020-05-11T04:56:01+00:00</updated>
<entry>
<title>ujson: back out overeager loads() change; only change load()</title>
<updated>2020-05-11T04:56:01+00:00</updated>
<author>
<name>warriorofwire</name>
<email>3454741+WarriorOfWire@users.noreply.github.com</email>
</author>
<published>2020-05-11T04:56:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=d8491f31768b04322728bc436b2f8e6c5f2bf0d6'/>
<id>urn:sha1:d8491f31768b04322728bc436b2f8e6c5f2bf0d6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ujson: do not eat trailing whitespace</title>
<updated>2020-05-11T03:45:42+00:00</updated>
<author>
<name>warriorofwire</name>
<email>3454741+WarriorOfWire@users.noreply.github.com</email>
</author>
<published>2020-05-11T03:45:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=eb3d5fa453bd04cc116e704c36a97250c93b7b4b'/>
<id>urn:sha1:eb3d5fa453bd04cc116e704c36a97250c93b7b4b</id>
<content type='text'>
Ujson should only worry about whitespace before JSON.  This becomes apparent when you are using MP stream protocol to read directly from input buffers.

When you attempt to read(1) on a UART (and possibly other protocols) you have to wait for either the byte or the timeout.

Fixes:
- Waiting for a timeout after you have completed reading a correct and complete JSON off the input.
- Raising an OSError after reading a correct and complete JSON off the input.
- Eating more data than semantically owned off the input buffer.
- Blocking to start parsing JSON until the entire JSON body has been loaded into a potentially large, contiguous Python object.

Code you would write before:
```
line = board_busio_uart_port.read_line()
json_dict = json.loads(line)
```
or reaching for fixed buffers and swapping them around in Python.

Code that did not work before that does now:
```
json_dict = json.load(board_busio_uart_port)
```

- This removes the need for intermediate copies of data when reading JSON from micropython stream protocol inputs.
- It also increases total application speed by parsing JSON concurrently with receiving on boards that read from UART via DMA.
- It simplifies code that users write while improving their apps.
</content>
</entry>
<entry>
<title>Add CIRCUITPY macro; rename u* only when CIRCUITPY=1</title>
<updated>2019-02-21T16:09:44+00:00</updated>
<author>
<name>Dan Halbert</name>
<email>halbert@halwitz.org</email>
</author>
<published>2019-02-21T16:09:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=10d3a20f8a639ad8ef5555e2142052190e8a7e13'/>
<id>urn:sha1:10d3a20f8a639ad8ef5555e2142052190e8a7e13</id>
<content type='text'>
</content>
</entry>
<entry>
<title>rename ure, ujson, and uerrno to re, json, and errno</title>
<updated>2019-02-21T05:33:36+00:00</updated>
<author>
<name>Dan Halbert</name>
<email>halbert@halwitz.org</email>
</author>
<published>2019-02-21T05:33:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=c5dbdbe88c099494cd14790b8c645020538eed27'/>
<id>urn:sha1:c5dbdbe88c099494cd14790b8c645020538eed27</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix esp and samd</title>
<updated>2018-08-17T00:41:35+00:00</updated>
<author>
<name>Scott Shawcroft</name>
<email>scott@tannewt.org</email>
</author>
<published>2018-08-16T20:34:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=2cd166b57370ab4877ec2d9666225faeac6127ce'/>
<id>urn:sha1:2cd166b57370ab4877ec2d9666225faeac6127ce</id>
<content type='text'>
</content>
</entry>
<entry>
<title>extmod: Update to use new mp_get_stream helper.</title>
<updated>2018-06-18T02:35:56+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2018-06-13T02:37:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=e8398a58567cc94b866d46721fd06289601f5c8a'/>
<id>urn:sha1:e8398a58567cc94b866d46721fd06289601f5c8a</id>
<content type='text'>
With this patch objects are only checked that they have the stream protocol
at the start of their use as a stream, and afterwards the efficient
mp_get_stream() helper is used to extract the stream protocol C methods.
</content>
</entry>
<entry>
<title>extmod/modujson: Implement ujson.dump() function.</title>
<updated>2018-02-15T00:35:42+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2018-02-06T04:35:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=d9bca1f7bddad762aac72b0fcbdd84eb22e1c3c1'/>
<id>urn:sha1:d9bca1f7bddad762aac72b0fcbdd84eb22e1c3c1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>py/objstr: Remove "make_qstr_if_not_already" arg from mp_obj_new_str.</title>
<updated>2017-11-16T02:17:51+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2017-11-16T02:17:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=4601759bf59e16b860a3f082e9aa4ea78356bf92'/>
<id>urn:sha1:4601759bf59e16b860a3f082e9aa4ea78356bf92</id>
<content type='text'>
This patch simplifies the str creation API to favour the common case of
creating a str object that is not forced to be interned.  To force
interning of a new str the new mp_obj_new_str_via_qstr function is added,
and should only be used if warranted.

Apart from simplifying the mp_obj_new_str function (and making it have the
same signature as mp_obj_new_bytes), this patch also reduces code size by a
bit (-16 bytes for bare-arm and roughly -40 bytes on the bare-metal archs).
</content>
</entry>
<entry>
<title>all: Remove inclusion of internal py header files.</title>
<updated>2017-10-04T01:37:50+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2017-10-04T01:37:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=a3dc1b1957d2c96d7c60c2c629c95077b03488a1'/>
<id>urn:sha1:a3dc1b1957d2c96d7c60c2c629c95077b03488a1</id>
<content type='text'>
Header files that are considered internal to the py core and should not
normally be included directly are:
    py/nlr.h - internal nlr configuration and declarations
    py/bc0.h - contains bytecode macro definitions
    py/runtime0.h - contains basic runtime enums

Instead, the top-level header files to include are one of:
    py/obj.h - includes runtime0.h and defines everything to use the
        mp_obj_t type
    py/runtime.h - includes mpstate.h and hence nlr.h, obj.h, runtime0.h,
        and defines everything to use the general runtime support functions

Additional, specific headers (eg py/objlist.h) can be included if needed.
</content>
</entry>
<entry>
<title>all: Raise exceptions via mp_raise_XXX</title>
<updated>2017-08-13T12:52:33+00:00</updated>
<author>
<name>Javier Candeira</name>
<email>javier@candeira.com</email>
</author>
<published>2017-08-09T04:40:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=35a1fea90b2cae9d5cc8e9eab62ba4c67e8786db'/>
<id>urn:sha1:35a1fea90b2cae9d5cc8e9eab62ba4c67e8786db</id>
<content type='text'>
  - Changed: ValueError, TypeError, NotImplementedError
  - OSError invocations unchanged, because the corresponding utility
    function takes ints, not strings like the long form invocation.
  - OverflowError, IndexError and RuntimeError etc. not changed for now
    until we decide whether to add new utility functions.
</content>
</entry>
</feed>
