NVIDIA OpenUSD Profiles
Project description
USD Profiles NVIDIA
A framework for defining and managing OpenUSD asset profiles, capabilities, and requirements. This library provides tools for parsing profile specifications from Markdown, generating Python code, and integrating with Sphinx documentation.
Features
- Profile definitions — Define capabilities, features, and requirements in structured Markdown
- Code generation — Generate Python enums and dataclasses from profile specifications
- Sphinx integration — Custom directives and roles for rendering profile documentation
- Validation support — Generate validation rules from requirement specifications
- Extensible — Modular architecture for custom profile components
AI Agent Guidance
AI coding agents should start with AGENTS.md for repository context, expectations, and common workflows. Task-specific guidance lives in .agents/skills/, including the profile code generation workflow in .agents/skills/project-setup-python/SKILL.md and the local venv workflow in .agents/skills/project-venv-setup/SKILL.md.
The runnable minimal code generation example is in examples/python/minimal/.
Installation
Install from PyPI:
pip install usd-profiles-nvidia
For Sphinx integration (directives and roles for profile documentation), install the optional dependency:
pip install usd-profiles-nvidia[sphinx]
Basic Usage
Code Generation
Generate Python code from profile specifications. Create a folder (e.g. specs/) with this structure and the
following files:
specs/
├── capabilities/
│ ├── capability-example.md
│ └── requirements/
│ └── single-root.md
├── features/
│ └── feature-example.md
└── profiles/
└── profile-example.md
specs/capabilities/requirements/single-root.md
# single-root
| Code | REQ.001 |
|---------------|---------------------------|
| Version | 1.0.0 |
| Compatibility | {compatibility}`OpenUSD` |
| Validator | |
| Tags | {tag}`essential` |
## Summary
USD stage must have a single root prim.
## Description
Every USD asset must contain one root prim from which all other prims descend.
specs/capabilities/capability-example.md
# Example
## Overview
Minimal capability with one requirement.
## Requirements
```{requirements-table}
```
specs/features/feature-example.md
# Example
| Property | Value |
|------------|---------|
| Version | 1.0.0 |
| Dependency | OpenUSD |
## Description
Minimal feature with one requirement.
## Requirements
```{features-table}
REQ.001@1.0.0
```
specs/profiles/profile-example.md
# Example
Minimal profile with one feature.
## Features
- [Example](../features/feature-example.md)
Then run:
python -m usd_profiles_nvidia.codegen --docs-root specs --destination-dir output --namespace mypackage.profiles
Generated code will be under output/mypackage/profiles/.
NVIDIA USD Validation integration
Use the generated requirements and features with NVIDIA USD Validation. Implement rule checkers and run validation as needed.
Implement a rule -- Register requirements and implement checks. For example, for the minimal example's single-root requirement:
import mypackage.profiles as cap
from nvidia_usd_validation import BaseRuleChecker, register_requirements
@register_requirements(cap.Requirements.REQ_001_V1_0_0)
class SingleRootChecker(BaseRuleChecker):
"""USD stage must have a single root prim."""
def CheckStage(self, usdStage):
roots = [p for p in usdStage.GetPseudoRoot().GetChildren() if p.IsValid()]
if len(roots) != 1:
self._AddFailedCheck(
"Stage must have exactly one root prim.",
requirement=cap.Requirements.REQ_001_V1_0_0,
)
Validate with the generated feature — Enable the feature you generated and run the engine:
import nvidia_usd_validation
import mypackage.profiles
engine = nvidia_usd_validation.ValidationEngine(init_rules=False)
engine.enable_feature(mypackage.profiles.Features.EXAMPLE)
results = engine.validate("path/to/asset.usd")
Sphinx Integration
Add to your Sphinx conf.py:
extensions = [
"usd_profiles_nvidia.sphinx.ext",
]
Use directives in your documentation:
```{requirements-table}
geometry/mesh-valid
geometry/mesh-normals
```
```{features-table}
geometry/feature-mesh
```
Use roles for inline tags and compatibility badges:
{tag}`performance` - Display a tag badge
{compatibility}`omniverse` - Display a compatibility badge
Documentation
Requirements
Core package:
- Python 3.10 or later
- Jinja2 3.1.5 or later
- markdown-it-py 3.0.0 or later
- tomli 2.0.0 or later for Python versions earlier than 3.11
Optional Sphinx integration (usd-profiles-nvidia[sphinx]):
- Sphinx 7.2.6 or later
- myst-parser 4.0.0 or later
License
Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file usd_profiles_nvidia-1.15.3-py3-none-any.whl.
File metadata
- Download URL: usd_profiles_nvidia-1.15.3-py3-none-any.whl
- Upload date:
- Size: 86.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
349bd377ee3cc9ca88e1357393fdc5092980b9242079961499d038306a55f414
|
|
| MD5 |
a1af443226479498c5f7212c144fa35c
|
|
| BLAKE2b-256 |
b402f4cf4e75be594c946a24a0d5fccd7b65bbaacf36568e5d2267f8a7fc8c72
|