docs: def loads(s, *args, **kwargs):
      """Helper function that wraps :func:`json.loads`.
  
      Automatically passes the object_hook for BSON type conversion.
  
      Raises ``TypeError``, ``ValueError``, ``KeyError``, or
      :exc:`~bson.errors.InvalidId` on invalid MongoDB Extended JSON.
  
      :Parameters:
        - `json_options`: A :class:`JSONOptions` instance used to modify the
          decoding of MongoDB Extended JSON types. Defaults to
          :const:`DEFAULT_JSON_OPTIONS`.
  
      .. versionchanged:: 3.5
         Parses Relaxed and Canonical Extended JSON as well as PyMongo's legacy
         format. Now raises ``TypeError`` or ``ValueError`` when parsing JSON
         type wrappers with values of the wrong type or any extra keys.
  
      .. versionchanged:: 3.4
         Accepts optional parameter `json_options`. See :class:`JSONOptions`.
      """
      json_options = kwargs.pop("json_options", DEFAULT_JSON_OPTIONS)
      if _HAS_OBJECT_PAIRS_HOOK:
          kwargs["object_pairs_hook"] = lambda pairs: object_pairs_hook(
              pairs, json_options)
      else:
          kwargs["object_hook"] = lambda obj: object_hook(obj, json_options)
      return json.loads(s, *args, **kwargs)