/*
 * SPDX-FileCopyrightText: Copyright (c) 1993-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Docstrings for the pyOnnx parser bindings.
#pragma once

namespace tensorrt
{
namespace OnnxParserDoc
{
constexpr char const* descr = R"trtdoc(
    This class is used for parsing ONNX models into a TensorRT network definition

    :ivar num_errors: :class:`int` The number of errors that occurred during prior calls to :func:`parse`
)trtdoc";

constexpr char const* init = R"trtdoc(
    :arg network: The network definition to which the parser will write.
    :arg logger: The logger to use.
)trtdoc";

constexpr char const* parse = R"trtdoc(
    Parse a serialized ONNX model into the TensorRT network.

    :arg model: The serialized ONNX model.
    :arg path: The path to the model file. Only required if the model has externally stored weights.

    :returns: true if the model was parsed successfully
)trtdoc";

constexpr char const* parse_from_file = R"trtdoc(
    Parse an ONNX model from file into a TensorRT network.

    :arg model: The path to an ONNX model.

    :returns: true if the model was parsed successfully
)trtdoc";

constexpr char const* supports_model_v2 = R"trtdoc(
    Check whether TensorRT supports a particular ONNX model.
    Query each subgraph with num_subgraphs, is_subgraph_supported, get_subgraph_nodes.

    :arg model: The serialized ONNX model.
    :arg path: The path to the model file. Only required if the model has externally stored weights.
    :returns: true if the model is supported
)trtdoc";

constexpr char const* num_subgraphs = R"trtdoc(
    Get the number of subgraphs. Calling before \p supportsModelV2 is an undefined behavior. Will return 0 by default.

    :returns: Number of subgraphs
)trtdoc";

constexpr char const* is_subgraph_supported = R"trtdoc(
    Returns whether the subgraph is supported. Calling before \p supportsModelV2 is an undefined behavior.
    Will return false by default.

    :arg index: Index of the subgraph to be checked.
    :returns: true if subgraph is supported
)trtdoc";

constexpr char const* get_subgraph_nodes = R"trtdoc(
    Get the nodes of the specified subgraph. Calling before \p supportsModelV2 is an undefined behavior.
    Will return an empty list by default.

    :arg index: Index of the subgraph.
    :returns: List[int]
        A list of node indices in the subgraph.
)trtdoc";

constexpr char const* supports_operator = R"trtdoc(
    Returns whether the specified operator may be supported by the parser.
    Note that a result of true does not guarantee that the operator will be supported in all cases (i.e., this function may return false-positives).

    :arg op_name:  The name of the ONNX operator to check for support
)trtdoc";

constexpr char const* get_error = R"trtdoc(
    Get an error that occurred during prior calls to :func:`parse`

    :arg index: Index of the error
)trtdoc";

constexpr char const* clear_errors = R"trtdoc(
    Clear errors from prior calls to :func:`parse`
)trtdoc";

constexpr char const* clear_flag = R"trtdoc(
    Clears the parser flag from the enabled flags.

    :arg flag: The flag to clear.
)trtdoc";

constexpr char const* get_flag = R"trtdoc(
    Check if a build mode flag is set.

    :arg flag: The flag to check.

    :returns: A `bool` indicating whether the flag is set.
)trtdoc";

constexpr char const* set_flag = R"trtdoc(
    Add the input parser flag to the already enabled flags.

    :arg flag: The flag to set.
)trtdoc";

constexpr char const* get_layer_output_tensor = R"trtdoc(
    Get the i-th output ITensor object for the ONNX layer "name".

   In the case of multiple nodes sharing the same name this function will return
   the output tensors of the first instance of the node in the ONNX graph.

    :arg name: The name of the ONNX layer.

    :arg i: The index of the output.

    :returns: The output tensor or None if the layer was not found or an invalid index was provided.
)trtdoc";

constexpr char const* get_used_vc_plugin_libraries = R"trtdoc(
    Query the plugin libraries needed to implement operations used by the parser in a version-compatible engine.

    This provides a list of plugin libraries on the filesystem needed to implement operations
    in the parsed network.  If you are building a version-compatible engine using this network,
    provide this list to IBuilderConfig.set_plugins_to_serialize() to serialize these plugins along
    with the version-compatible engine, or, if you want to ship these plugin libraries externally
    to the engine, ensure that IPluginRegistry.load_library() is used to load these libraries in the
    appropriate runtime before deserializing the corresponding engine.

    :returns: List[str] List of plugin libraries found by the parser.

    :raises: :class:`RuntimeError` if an internal error occurred when trying to fetch the list of plugin libraries.
)trtdoc";

constexpr char const* load_model_proto = R"trtdoc(
    Load a serialized ONNX model into the parser. Unlike the parse() or parse_from_file()
    functions, this function does not immediately convert the model into a TensorRT INetworkDefinition. Using this function
    allows users to provide their own initializers for the ONNX model through the load_initializer() function.

    Only one model can be loaded at a time. Subsequent calls to load_model_proto() will result in an error.

    To begin the conversion of the model into a TensorRT INetworkDefinition, use parse_model_proto().

    :arg model: The serialized ONNX model.
    :arg path: The path to the model file. Only required if the model has externally stored weights.

    :returns: true if the model was loaded successfully

)trtdoc";

constexpr char const* load_initializer = R"trtdoc(
    Prompt the ONNX parser to load an initializer with user-provided binary data.
    The lifetime of the data must exceed the lifetime of the parser.

    All user-provided initializers must be provided prior to calling parse_model_proto().

    This function can be called multiple times to specify the names of multiple initializers.

    Calling this function with an initializer previously specified will overwrite the previous instance.

    This function will return false if initializer validation fails. Possible validation errors are:
     * This function was called prior to load_model_proto().
     * The requested initializer was not found in the model.
     * The size of the data provided is different from the corresponding initializer in the model.

    :arg name: name of the initializer.
    :arg data: binary data of the initializer.
    :arg size: the size of the binary data.

    :returns: true if the initializer was successfully loaded

)trtdoc";

constexpr char const* parse_model_proto = R"trtdoc(

    Begin the parsing and conversion process of the loaded ONNX model into a TensorRT INetworkDefinition.

    :returns: true if the model was parsed successfully.

)trtdoc";

constexpr char const* set_builder_config = R"trtdoc(
    Set the BuilderConfig for the parser.

    :arg builder_config: The BuilderConfig to set.

    :returns: true if the BuilderConfig was set successfully, false otherwise.
)trtdoc";

} // namespace OnnxParserDoc

namespace OnnxParserRefitterDoc
{
constexpr char const* descr = R"trtdoc(
    This is an interface designed to refit weights from an ONNX model.
)trtdoc";

constexpr char const* init = R"trtdoc(
    :arg refitter: The Refitter object used to refit the model.
    :arg logger: The logger to use.
)trtdoc";

constexpr char const* refit_from_bytes = R"trtdoc(
    Load a serialized ONNX model from memory and perform weight refit.

    :arg model: The serialized ONNX model.
    :arg path: The path to the model file. Only required if the model has externally stored weights.

    :returns: true if all the weights in the engine were refit successfully.
)trtdoc";

constexpr char const* refit_from_file = R"trtdoc(
    Load and parse a ONNX model from disk and perform weight refit.

    :arg model: The path to an ONNX model.

    :returns: true if the model was loaded successfully, and if all the weights in the engine were refit successfully.
)trtdoc";

constexpr char const* get_error = R"trtdoc(
    Get an error that occurred during prior calls to :func:`refitFromBytes` or :func:`refitFromFile`.

    :arg index: Index of the error
)trtdoc";

constexpr char const* clear_errors = R"trtdoc(
    Clear errors from prior calls to :func:`refitFromBytes` or :func:`refitFromFile`.
)trtdoc";

constexpr char const* load_model_proto = R"trtdoc(
    Load a serialized ONNX model into the refitter. Unlike the refit() or refit_from_file()
    functions, this function does not immediately begin the refit process. Using this function
    allows users to provide their own initializers for the ONNX model through the load_initializer() function.

    Only one model can be loaded at a time. Subsequent calls to load_model_proto() will result in an error.

    To begin the refit process, use refit_model_proto().

    :arg model: The serialized ONNX model.
    :arg path: The path to the model file. Only required if the model has externally stored weights.

    :returns: true if the model was loaded successfully.

)trtdoc";

constexpr char const* load_initializer = R"trtdoc(
    Prompt the ONNX refitter to load an initializer with user-provided binary data.
    The lifetime of the data must exceed the lifetime of the refitter.

    All user-provided initializers must be provided prior to calling refit_model_proto().

    This function can be called multiple times to specify the names of multiple initializers.

    Calling this function with an initializer previously specified will overwrite the previous instance.

    This function will return false if initializer validation fails. Possible validation errors are:
     * This function was called prior to load_model_proto().
     * The requested initializer was not found in the model.
     * The size of the data provided is different from the corresponding initializer in the model.

    :arg name: name of the initializer.
    :arg data: binary data of the initializer.
    :arg size: the size of the binary data.

    :returns: true if the initializer was successfully loaded.

)trtdoc";

constexpr char const* refit_model_proto = R"trtdoc(

    Begin the refit process from the loaded ONNX model.

    :returns: true if the model was refit successfully.

)trtdoc";

} // namespace OnnxParserRefitterDoc

namespace ErrorCodeDoc
{
constexpr char const* descr = R"trtdoc(
    The type of parser error
)trtdoc";
} // namespace ErrorCodeDoc

namespace OnnxParserFlagDoc
{
constexpr char const* descr = R"trtdoc(
    Flags that control how an ONNX model gets parsed.
)trtdoc";
constexpr char const* NATIVE_INSTANCENORM = R"trtdoc(
   Parse the ONNX model into the INetworkDefinition with the intention of using TensorRT's native layer implementation over the plugin implementation for InstanceNormalization nodes.
   This flag is required when building version-compatible or hardware-compatible engines.
   This flag is ON by default.
)trtdoc";
constexpr char const* ENABLE_UINT8_AND_ASYMMETRIC_QUANTIZATION_DLA = R"trtdoc(
    Enable UINT8 as a quantization data type and asymmetric quantization with non-zero zero-point values in Quantize and Dequantize nodes.
    The resulting engine must be built targeting DLA version >= 3.16.
    This flag is OFF by default.
 )trtdoc";
constexpr char const* REPORT_CAPABILITY_DLA = R"trtdoc(
    Parse the ONNX model with per-node validation for DLA. If this flag is set, is_subgraph_supported() will
    also return capability in the context of DLA support.
    When this flag is set, a valid BuilderConfig must be provided to the parser via set_builder_config().
    This flag is OFF by default.
 )trtdoc";
constexpr char const* ENABLE_PLUGIN_OVERRIDE = R"trtdoc(
    Allow a loaded plugin with the same name as an ONNX operator type to override the default ONNX implementation,
    even if the plugin namespace attribute is not set.
    This flag is useful for custom plugins that are intended to replace standard ONNX operators, for example to provide
    alternative implementations or improved performance.
    This flag is OFF by default.
)trtdoc";
constexpr char const* ADJUST_FOR_DLA = R"trtdoc(
    Parse the ONNX model with adjustments to make layers more amenable to running on DLA.
    This flag is OFF by default.
 )trtdoc";

} // namespace OnnxParserFlagDoc

namespace ParserErrorDoc
{
constexpr char const* descr = R"trtdoc(
    An object containing information about an error
)trtdoc";

constexpr char const* code = R"trtdoc(
    :returns: The error code
)trtdoc";

constexpr char const* desc = R"trtdoc(
    :returns: Description of the error
)trtdoc";

constexpr char const* file = R"trtdoc(
    :returns: Source file in which the error occurred
)trtdoc";

constexpr char const* line = R"trtdoc(
    :returns: Source line at which the error occurred
)trtdoc";

constexpr char const* func = R"trtdoc(
    :returns: Source function in which the error occurred
)trtdoc";

constexpr char const* node = R"trtdoc(
    :returns: Index of the Onnx model node in which the error occurred
)trtdoc";

constexpr char const* node_name = R"trtdoc(
    :returns: Name of the node in the model in which the error occurred
)trtdoc";

constexpr char const* node_operator = R"trtdoc(
    :returns: Name of the node operation in the model in which the error occurred
)trtdoc";

constexpr char const* local_function_stack = R"trtdoc(
    :returns: Current stack trace of local functions in which the error occurred
)trtdoc";

constexpr char const* local_function_stack_size = R"trtdoc(
    :returns: Size of the current stack trace of local functions in which the error occurred
)trtdoc";

} // namespace ParserErrorDoc

constexpr char const* get_nv_onnx_parser_version = R"trtdoc(
:returns: The Onnx Parser version
)trtdoc";

} // namespace tensorrt
