code: def _get_ops_template():
      return jinja2.Template(
          textwrap.dedent(
              """
          {% for sch in schemas %}
  
          .. tag-diff-insert.
  
          (l-onnx-op{{sch.domain.lower().replace(".", "-")}}-{{sch.name.lower()}}-{{str(sch.since_version)}})=
  
          ## {{format_name_with_domain(sch)}}
  
          ### Version
  
          - **name**: [{{sch.name}} (GitHub)]({{build_doc_url(sch)}}{{sch.name}})
          - **domain**: `{% if sch.domain == '' %}main{% else %}{{sch.domain}}{% endif %}`
          - **since_version**: `{{sch.since_version}}`
          - **function**: `{{sch.has_function or sch.has_context_dependent_function}}`
          - **support_level**: `{{sch.support_level}}`
          - **shape inference**: `{{sch.has_type_and_shape_inference_function}}`
  
          {% if sch.support_level == OpSchema.SupportType.EXPERIMENTAL %}
          No versioning maintained for experimental ops.
          {% else %}
          This version of the operator has been {% if
          sch.deprecated %}deprecated{% else %}available{% endif %}
          **since version {{sch.since_version}}{% if
          sch.domain %} of domain {{sch.domain}}{% endif %}**.
          {% if len(sch.versions) > 1 %}
          Other versions of this operator:
          {% for v in sch.version[:-1] %} {{v}} {% endfor %}
          {% endif %}
          {% endif %}
  
          ### Summary
  
          {{process_documentation(sch.doc)}}
          {% if sch.attributes %}
  
          ### Attributes
  
          {% for _, attr in sorted(sch.attributes.items())
          %}* **{{attr.name}} - {{str(attr.type).split('.')[-1]}}**{%
            if attr.required %} (required){% endif %} {%
            if attr.default_value %}{{clean_default_value(attr)}}{%
            endif %}: {{text_wrap(attr.description, 2)}}
          {% endfor %}
          {% endif %}
          {% if sch.inputs %}
  
          ### Inputs
  
          {% if sch.min_input != sch.max_input %}Between {{sch.min_input
          }} and {{sch.max_input}} inputs.
          {% endif %}
          {% for ii, inp in enumerate(sch.inputs) %}
          - **{{getname(inp, ii)}}**{{format_option(inp)}} - **{{inp.type_str}}**:
          {{text_wrap(inp.description, 2)}}{% endfor %}
          {% endif %}
          {% if sch.outputs %}
  
          ### Outputs
  
          {% if sch.min_output != sch.max_output %}Between {{sch.min_output
          }} and {{sch.max_output}} outputs.
          {% endif %}
          {% for ii, out in enumerate(sch.outputs) %}
          - **{{getname(out, ii)}}**{{format_option(out)}} - **{{out.type_str}}**:
          {{text_wrap(out.description, 2)}}{% endfor %}
          {% endif %}
          {% if sch.type_constraints %}
  
          ### Type Constraints
  
          {% for ii, type_constraint in enumerate(sch.type_constraints)
          %}* {{get_constraint(type_constraint, ii)}}:
          {{text_wrap(type_constraint.description, 2)}}
          {% endfor %}
          {% endif %}
          {% if examples and is_last_schema(sch): %}
  
          ### Examples
  
          {% for example, code in examples.items(): %}
  
          #### {{ example }}
  
          ```python
          {{ format_example(code) }}
          ```
          {% endfor %}
          {% endif %}
          {% endfor %}
          """
          ),
          autoescape=False,
      )
  
imports: import difflib
  import importlib
  import inspect
  import keyword
  import os
  import pathlib
  import re
  import shutil
  import sys
  import textwrap
  from typing import Any
  import jinja2
  import numpy
  from sphinx.util import logging
  import onnx
  from onnx.backend.test.case.base import _Exporter
  from onnx.defs import OpSchema
label_desc: Use image node_id 2 for calling a global function with example usage: _get_ops_template() and returns: jinja2