code: def _gen_fn_signature_with_inputs(schema, schema_name, fn_name):
      """Generate primary and secondary overload (for regular and MIS cases).
  
      Python resolves the overloads in order of definition, we will match first against the primary
      overload accepting only the DataNode, and if any of the inputs is a list of such (indicating
      Multiple Input Sets), we will match the second overload that is more general.
      The secondary overload has less constrained return type annotation but we have to accept it
      to not have exponential number of overloads.
      There is a special case, where the secondary overload with exactly one input accepts only
      List[DataNode] (see the `_get_annotation_input_mis`). Passing a variable recognized as
      Union[DataNode, List[DataNode]] to such overload set still resolves correctly under mypy and
      pylance, resulting again in the Union[DataNode, List[DataNode]] return type (for single output),
      keeping us in the MIS realm in the simple case.
      """
      return f"""
  @overload
  def {fn_name}{_call_signature(schema, include_inputs=True, include_kwargs=True)}:
      \"""{_docs._docstring_generator_fn(schema_name)}
      \"""
      ...
  
  
  @overload
  def {fn_name}{_call_signature(schema, include_inputs=True, include_kwargs=True,
                                input_annotation_gen=_get_annotation_input_mis,
                                return_annotation_gen=_get_annotation_return_mis)}:
      \"""{_docs._docstring_generator_fn(schema_name)}
      \"""
      ...
  """
  
imports: from inspect import Parameter, Signature
  import ast
  import os
  from pathlib import Path
  from contextlib import closing
  from typing import Union, Optional
  from typing import Sequence, List, Any
  from nvidia.dali import backend
  from nvidia.dali import types
  from nvidia.dali.ops import _registry, _names, _docs
  from nvidia.dali import types
  from nvidia.dali import ops, fn
label_desc: Use image node_id 15 for calling a global function with example usage: _gen_fn_signature_with_inputs(schema, schema_name, fn_name) and returns: str, fn_name, _call_signature, str, _docs, str, fn_name, _call_signature, str, _docs, str