class_docstr: Simple JSON <http://json.org> decoder
  
  Performs the following translations in decoding by default:
  
  +---------------+-------------------+
  | JSON          | Python            |
  +===============+===================+
  | object        | dict              |
  +---------------+-------------------+
  | array         | list              |
  +---------------+-------------------+
  | string        | str, unicode      |
  +---------------+-------------------+
  | number (int)  | int, long         |
  +---------------+-------------------+
  | number (real) | float             |
  +---------------+-------------------+
  | true          | True              |
  +---------------+-------------------+
  | false         | False             |
  +---------------+-------------------+
  | null          | None              |
  +---------------+-------------------+
  
  It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as
  their corresponding ``float`` values, which is outside the JSON spec.
docstr: Decode a JSON document from ``s`` (a ``str`` or ``unicode``
  beginning with a JSON document) and return a 2-tuple of the Python
  representation and the index in ``s`` where the document ended.
  Optionally, ``idx`` can be used to specify an offset in ``s`` where
  the JSON document begins.
  
  This can be used to decode a JSON document from a string that may
  have extraneous data at the end.
docstr_tok: ["Decode","a","JSON","document","from","``","s","``","(","a","``","str","``","or","``","unicode","``","beginning","with","a","JSON","document",")","and","return","a","2-tuple","of","the","Python","representation","and","the","index","in","``","s","``","where","the","document","ended",".","Optionally",",","``","idx","``","can","be","used","to","specify","an","offset","in","``","s","``","where","the","JSON","document","begins",".","This","can","be","used","to","decode","a","JSON","document","from","a","string","that","may","have","extraneous","data","at","the","end","."]
code: def raw_decode(self, s, idx=0, _w=WHITESPACE.match, _PY3=PY3):
      """Decode a JSON document from ``s`` (a ``str`` or ``unicode``
      beginning with a JSON document) and return a 2-tuple of the Python
      representation and the index in ``s`` where the document ended.
      Optionally, ``idx`` can be used to specify an offset in ``s`` where
      the JSON document begins.
  
      This can be used to decode a JSON document from a string that may
      have extraneous data at the end.
  
      """
      if idx < 0:
          # Ensure that raw_decode bails on negative indexes, the regex
          # would otherwise mask this behavior. #98
          raise JSONDecodeError("Expecting value", s, idx)
      if _PY3 and not isinstance(s, str):
          raise TypeError("Input string must be text, not bytes")
      # strip UTF-8 bom
      if len(s) > idx:
          ord0 = ord(s[idx])
          if ord0 == 0xFEFF:
              idx += 1
          elif ord0 == 0xEF and s[idx : idx + 3] == "\xef\xbb\xbf":
              idx += 3
      return self.scan_once(s, idx=_w(s, idx).end())
  
file_path: catboost/contrib/python/simplejson/py3/simplejson/decoder.py
imports: from __future__ import absolute_import
  import re
  import sys
  import struct
  from .compat import PY3, unichr
  from .scanner import make_scanner, JSONDecodeError
label_desc: Use image node_id 3 for calling the JSONDecoder obj's underlying member method code with example usage: obj.raw_decode(s, idx, _w, _PY3) and returns: self