tripy-documentation
작성자: nvidia
Write API documentation for nvtripy following project conventions. Use when: writing docstrings for ops or modules, adding code examples, using…
npx skills add https://github.com/nvidia/tensorrt-incubator --skill tripy-documentationAPI Documentation for nvtripy
When to Use
- Writing or updating docstrings for public API functions, classes, or modules
- Adding working code examples to documentation
- Choosing the correct
document_underpath for@export.public_api - Understanding how documentation is generated and built
Documentation Pipeline
@export.public_api(document_under="...")registers APIs inPUBLIC_APISlistdocs/generate_rsts.pyreadsPUBLIC_APISand generates.rstfiles in the docs hierarchy- Sphinx builds the final HTML docs from those
.rstfiles - Docstring code examples are extracted and validated during testing
@export.public_api Parameters
@export.public_api(
document_under="operations/functions", # Doc hierarchy path
autodoc_options=[":special-members:"], # Sphinx autodoc options
bypass_dispatch=True, # Skip function registry overhead
)
document_under Path Conventions
| Path | Use For |
|---|---|
"operations/functions" | General tensor operations (softmax, reshape, etc.) |
"operations/initializers" | Tensor creation (ones, zeros, full, arange) |
"operations/modules" | Neural network modules (Linear, LayerNorm, etc.) |
"compiling_code/compile.rst" | Compilation-related APIs |
"compiling_code/input_info/index.rst" | InputInfo and related classes |
"config.rst" | Configuration variables |
The path creates a directory structure: "operations/functions" → operations/functions/<name>.rst.
APIs targeting the same .rst file render on the same page.
autodoc_options
[":special-members:"]— Include__init__,__call__, etc.[":no-members:", ":no-special-members:"]— Show only the class/module itself[":no-value:"]— Hide the default value of a variable
bypass_dispatch
Trueon a function: Disables the function registry's overload dispatch and type-checking (performance optimization)Trueon a class: Bypass dispatch for ALL methods["__init__", "__call__"]: Bypass only for listed methods
Docstring Format
Functions
def my_op(input: "nvtripy.Tensor", dim: int = 0) -> "nvtripy.Tensor":
r"""
Brief one-line description of what the function does.
Longer description with math if applicable:
:math:`\text{my_op}(x) = f(x)`
Args:
input: The input tensor.
dim: The dimension to operate along.
Returns:
A tensor of the same shape as the input.
.. code-block:: python
:linenos:
input = tp.iota([2, 3], dtype=tp.float32)
output = tp.my_op(input, dim=0)
assert tp.allclose(output, expected)
.. seealso:: :func:`related_func`, :class:`RelatedClass`
"""
Classes (Modules)
class MyModule(Module):
r"""
Brief description with math notation.
:math:`\text{MyModule}(x) = xW^T + b`
"""
dtype: datatype.dtype
r"""The data type used to perform the operation."""
weight: Tensor
r"""The :math:`W` parameter of shape :math:`[\text{out}, \text{in}]`."""
def __init__(self, features: int, dtype: datatype.dtype = datatype.float32) -> None:
r"""
Args:
features: Size of the feature dimension.
dtype: The data type for parameters.
.. code-block:: python
:linenos:
module = tp.MyModule(3)
module.weight = tp.iota(module.weight.shape)
input = tp.iota((2, 3))
output = module(input)
assert cp.from_dlpack(output).get().shape == (2, 3)
torch_out = torch.nn.functional.my_op(torch.from_dlpack(input)) # doc: omit
assert np.allclose(cp.from_dlpack(output).get(), cp.from_dlpack(torch_out).get())
"""
Code Example Conventions
Required elements
- Setup: Create inputs using
tp.iota(),tp.ones(),tp.zeros(), ortp.Tensor() - Operation: Call the function/module under test
- Assertion: Verify the result with
assert(usingtp.allclose,np.array_equal, or shape checks)
Available imports in code blocks
Code examples automatically have access to:
tp(nvtripy)np(numpy)cp(cupy)torch
Special directives
# doc: omit— Line is excluded from rendered documentation but still executes# doc: no-print-locals <var>— Suppresses automatic printing of the variable:linenos:— Always include for numbered lines
Cross-references
:func:function_name`` — Link to a function:class:ClassName`` — Link to a class:math:expression`` — Inline LaTeX math.. seealso:: :func:related`" — "See also" section at the end
Math notation
Use r""" raw strings for docstrings containing :math: to avoid backslash issues.
LaTeX examples:
- Inline:
:math:\text{softmax}(x_{i})`` - Block: Use
\Large/\normalsizefor fraction sizing - Common:
:math:\bar{x}(mean), `:math:`\sigma^2(variance),:math:\epsilon`` (epsilon)
Checklist
-
@export.public_api(document_under="...")with correct hierarchy path - Docstring uses
r"""if it contains:math:directives - Args section documents all parameters with types
- Returns section describes output shape/type
-
.. code-block:: pythonwith:linenos:and working assertions -
.. seealso::links to related functions/classes - Field docstrings for all dataclass fields on modules
-
# doc: omitfor verification-only lines that shouldn't appear in docs