class_docstr: Extensible JSON <https://json.org> encoder for Python data structures.
  
  Supports the following objects and types by default:
  
  +-------------------+---------------+
  | Python            | JSON          |
  +===================+===============+
  | dict              | object        |
  +-------------------+---------------+
  | list, tuple       | array         |
  +-------------------+---------------+
  | str               | string        |
  +-------------------+---------------+
  | int, float        | number        |
  +-------------------+---------------+
  | True              | true          |
  +-------------------+---------------+
  | False             | false         |
  +-------------------+---------------+
  | None              | null          |
  +-------------------+---------------+
  
  To extend this to recognize other objects, subclass and implement a
  ``.default()`` method with another method that returns a serializable
  object for ``o`` if possible, otherwise it should call the superclass
  implementation (to raise ``TypeError``).
docstr: Encode the given object and yield each string
  representation as available.
  
  For example::
  
      for chunk in JSONEncoder().iterencode(bigobject):
          mysocket.write(chunk)
code: def iterencode(self, o, _one_shot=False):
      """Encode the given object and yield each string
      representation as available.
  
      For example::
  
          for chunk in JSONEncoder().iterencode(bigobject):
              mysocket.write(chunk)
  
      """
      if self.check_circular:
          markers = {}
      else:
          markers = None
      if self.ensure_ascii:
          _encoder = encode_basestring_ascii
      else:
          _encoder = encode_basestring
  
      def floatstr(
          o,
          allow_nan=self.allow_nan,
          _repr=float.__repr__,
          _inf=INFINITY,
          _neginf=-INFINITY,
      ):
          # Check for specials.  Note that this type of test is processor
          # and/or platform-specific, so do tests which don't depend on the
          # internals.
  
          if o != o:
              text = "NaN"
          elif o == _inf:
              text = "Infinity"
          elif o == _neginf:
              text = "-Infinity"
          else:
              return _repr(o)
  
          if not allow_nan:
              raise ValueError(
                  "Out of range float values are not JSON compliant: "
                  + repr(o)
              )
  
          return text
  
      if (
          _one_shot
          and c_make_encoder is not None
          and self.indent is None
      ):
          _iterencode = c_make_encoder(
              markers,
              self.default,
              _encoder,
              self.indent,
              self.key_separator,
              self.item_separator,
              self.sort_keys,
              self.skipkeys,
              self.allow_nan,
          )
      else:
          _iterencode = _make_iterencode(
              markers,
              self.default,
              _encoder,
              self.indent,
              floatstr,
              self.key_separator,
              self.item_separator,
              self.sort_keys,
              self.skipkeys,
              _one_shot,
          )
      return _iterencode(o, 0)
  
file_path: catboost/contrib/tools/python3/src/Lib/json/encoder.py
imports: import re
label_desc: Use image node_id 4 for calling the JSONEncoder obj's underlying member method code with example usage: obj.iterencode(o, _one_shot) and returns: _iterencode, text, _repr