Omniverse USD Profiles
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
Installation
Install from PyPI:
pip install omniverse-usd-profiles
For Sphinx integration (directives and roles for profile documentation), install the optional dependency:
pip install omniverse-usd-profiles[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 omni.usd_profiles.codegen --docs-root specs --destination-dir output --namespace mypackage.profiles
Generated code will be under output/mypackage/profiles/.
Omniverse Asset Validator integration
Use the generated requirements and features with Omniverse Asset Validator to implement rule checkers and run validation.
Implement a rule — Register requirements and implement checks (e.g. for the minimal example’s single-root requirement):
import mypackage.profiles as cap
from omni.asset_validator 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 omni.asset_validator
import mypackage.profiles
engine = omni.asset_validator.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 = [
"omni.usd_profiles.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
- Python 3.10 or later
- Jinja2 3.1.5 or later
- Sphinx 7.2.6 or later
License
Apache-2.0
Metadata
Release files for omniverse-usd-profiles 1.11.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| omniverse_usd_profiles-1.11.2-py3-none-any.whl | Python 3 | none | any | Details for omniverse_usd_profiles-1.11.2-py3-none-any.whl |
Release files / omniverse_usd_profiles-1.11.2-py3-none-any.whl
| Download URL | omniverse_usd_profiles-1.11.2-py3-none-any.whl |
|---|---|
| Size | 74.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b5f5a7ac5e6eb096d1e83e560bb1c5b5fde3ca07573abe33ff2f7b3da4dc8654
|
|
BLAKE2b-256 checksum How to use checksums |
331c04ddd33bf8191888b8f0d377d4d243abcd0bc613d7529c481c8fac4e4496
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Security for omniverse-usd-profiles 1.11.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.