@@ -247,64 +247,89 @@ Basic Usage
247247      the original one. That is, ``loads(dumps(x)) != x `` if x has non-string
248248      keys.
249249
250- .. function :: load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) 
250+ .. function :: load(fp, *, cls=None, object_hook=None, parse_float=None, \ 
251+                    parse_int=None, parse_constant=None, \
252+                    object_pairs_hook=None, **kw) 
251253
252-    Deserialize *fp * (a ``.read() ``-supporting :term: `text file ` or
253-    :term: `binary file ` containing a JSON document) to a Python object using
254-    this :ref: `conversion table  <json-to-py-table >`.
254+    Deserialize *fp * to a Python object
255+    using the :ref: `JSON-to-Python conversion table  <json-to-py-table >`.
255256
256-    *object_hook * is an optional function that will be called with the result of
257-    any object literal decoded (a :class: `dict `).  The return value of
258-    *object_hook * will be used instead of the :class: `dict `.  This feature can
259-    be used to implement custom decoders (e.g. `JSON-RPC 
260-    <https://www.jsonrpc.org> `_ class hinting).
257+    :param fp: 
258+       A ``.read() ``-supporting :term: `text file ` or :term: `binary file `
259+       containing the JSON document to be deserialized.
260+    :type fp:  :term: `file-like object `
261261
262-    *object_pairs_hook * is an optional function that will be called with the
263-    result of any object literal decoded with an ordered list of pairs.  The
264-    return value of *object_pairs_hook * will be used instead of the
265-    :class: `dict `.  This feature can be used to implement custom decoders.  If
266-    *object_hook * is also defined, the *object_pairs_hook * takes priority.
262+    :param cls: 
263+       If set, a custom JSON decoder.
264+       Additional keyword arguments to :func: `!load `
265+       will be passed to the constructor of *cls *.
266+       If ``None `` (the default), :class: `!JSONDecoder ` is used.
267+    :type cls:  a :class: `JSONDecoder ` subclass
268+ 
269+    :param object_hook: 
270+       If set, a function that is called with the result of
271+       any object literal decoded (a :class: `dict `).
272+       The return value of this function will be used
273+       instead of the :class: `dict `.
274+       This feature can be used to implement custom decoders,
275+       for example `JSON-RPC  <https://www.jsonrpc.org >`_ class hinting.
276+       Default ``None ``.
277+    :type object_hook:  :term: `callable ` | None
278+ 
279+    :param object_pairs_hook: 
280+       If set, a function that is called with the result of
281+       any object literal decoded with an ordered list of pairs.
282+       The return value of this function will be used
283+       instead of the :class: `dict `.
284+       This feature can be used to implement custom decoders.
285+       If *object_hook * is also set, *object_pairs_hook * takes priority.
286+       Default ``None ``.
287+    :type object_pairs_hook:  :term: `callable ` | None
288+ 
289+    :param parse_float: 
290+       If set, a function that is called with
291+       the string of every JSON float to be decoded.
292+       If ``None `` (the default), it is equivalent to ``float(num_str) ``.
293+       This can be used to parse JSON floats into custom datatypes,
294+       for example :class: `decimal.Decimal `.
295+    :type parse_float:  :term: `callable ` | None
296+ 
297+    :param parse_int: 
298+       If set, a function that is called with
299+       the string of every JSON int to be decoded.
300+       If ``None `` (the default), it is equivalent to ``int(num_str) ``.
301+       This can be used to parse JSON integers into custom datatypes,
302+       for example :class: `float `.
303+    :type parse_int:  :term: `callable ` | None
304+ 
305+    :param parse_constant: 
306+       If set, a function that is called with one of the following strings:
307+       ``'-Infinity' ``, ``'Infinity' ``, or ``'NaN' ``.
308+       This can be used to raise an exception
309+       if invalid JSON numbers are encountered.
310+       Default ``None ``.
311+    :type parse_constant:  :term: `callable ` | None
312+ 
313+    :raises JSONDecodeError: 
314+       When the data being deserialized is not a valid JSON document.
267315
268316   .. versionchanged :: 3.1 
269-       Added support for *object_pairs_hook *.
270317
271-    *parse_float * is an optional function that will be called with the string of
272-    every JSON float to be decoded.  By default, this is equivalent to
273-    ``float(num_str) ``.  This can be used to use another datatype or parser for
274-    JSON floats (e.g. :class: `decimal.Decimal `).
318+       * Added the optional *object_pairs_hook * parameter.
319+       * *parse_constant * doesn't get called on 'null', 'true', 'false' anymore.
275320
276-    *parse_int * is an optional function that will be called with the string of
277-    every JSON int to be decoded.  By default, this is equivalent to
278-    ``int(num_str) ``.  This can be used to use another datatype or parser for
279-    JSON integers (e.g. :class: `float `).
321+    .. versionchanged :: 3.6 
322+ 
323+       * All optional parameters are now :ref: `keyword-only  <keyword-only_parameter >`.
324+       * *fp * can now be a :term: `binary file `.
325+         The input encoding should be UTF-8, UTF-16 or UTF-32.
280326
281327   .. versionchanged :: 3.11 
282328      The default *parse_int * of :func: `int ` now limits the maximum length of
283329      the integer string via the interpreter's :ref: `integer string 
284330      conversion length limitation <int_max_str_digits>` to help avoid denial
285331      of service attacks.
286332
287-    *parse_constant * is an optional function that will be called with one of the
288-    following strings: ``'-Infinity' ``, ``'Infinity' ``, ``'NaN' ``.  This can be
289-    used to raise an exception if invalid JSON numbers are encountered.
290- 
291-    .. versionchanged :: 3.1 
292-       *parse_constant * doesn't get called on 'null', 'true', 'false' anymore.
293- 
294-    To use a custom :class: `JSONDecoder ` subclass, specify it with the ``cls ``
295-    kwarg; otherwise :class: `JSONDecoder ` is used.  Additional keyword arguments
296-    will be passed to the constructor of the class.
297- 
298-    If the data being deserialized is not a valid JSON document, a
299-    :exc: `JSONDecodeError ` will be raised.
300- 
301-    .. versionchanged :: 3.6 
302-       All optional parameters are now :ref: `keyword-only  <keyword-only_parameter >`.
303- 
304-    .. versionchanged :: 3.6 
305-       *fp * can now be a :term: `binary file `. The input encoding should be
306-       UTF-8, UTF-16 or UTF-32.
307- 
308333.. function :: loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) 
309334
310335   Deserialize *s * (a :class: `str `, :class: `bytes ` or :class: `bytearray `
0 commit comments