simready.package
Standalone Python library for packaging SimReady USD assets with pre- and
post-validation. Orchestrates the pre-validate → build → post-validate
pipeline in a single package() call and writes a
com.nvidia.simready.packaging.json package definition.
Part of the SimReady Python Library Suite.
Installation
pip install simready-package
# Publishing via WRAPP also requires:
pip install "simready-package[publish]" \
--extra-index-url https://urm.nvidia.com/artifactory/api/pypi/ct-omniverse-pypi-local/simple
Quick start
import asyncio
import simready.package as sp
packager = sp.Packager(config_path="/workspace/project_config.toml")
result = asyncio.run(packager.package(
sp.PackageSpec(
name="crate_01",
version="1.0.0",
license_id="LicenseRef-NvidiaProprietary",
source="/workspace/props/crate_01",
root_usds=["crate_01.usd"],
)
))
print(f"Package ready: {result.created.pkg_def_url}")
Key concepts
Two modes
| Mode | repo |
Validation | Output |
|---|---|---|---|
| Local | None |
Optional (skip_* flags) |
com.nvidia.simready.packaging.json written into source/ |
| Publish | set | Mandatory | Full WRAPP package published to repository (BOM, hashes, conformance) |
Pre- and post-validation
package() runs pre-validation against the Package-Candidate profile before
building, and post-validation against the Package profile after building.
Both profiles are defined in SimReady foundations — no profile override is needed
or expected for standard packaging.
package() raises ValidationFailed when any feature fails (unless the phase
is skipped via skip_pre_validation / skip_post_validation).
Profile and rule registration
Outside a Kit environment, pass rules and profiles to the Packager constructor:
# From a project_config.toml (reads [validate] section)
packager = sp.Packager(config_path="/workspace/project_config.toml")
# Or from explicit paths
packager = sp.Packager(
rules_and_requirements_paths=["nv_core/sr_specs/docs/capabilities"],
features_paths=["nv_core/sr_specs/docs/features"],
profiles_paths=["nv_core/sr_specs/docs/profiles/profiles.toml"],
)
Inside Kit, omni.simready.validators registers profiles automatically and the
constructor can be called with no arguments.
Python API
Packager
packager = sp.Packager(
*,
config_path=None, # path to project_config.toml
rules_and_requirements_paths=None, # override individual paths
features_paths=None,
profiles_paths=None,
)
# Full pipeline
result = await packager.package(spec) # -> PackageResult
# Pre-validation only
result = await packager.pre_validate(source, *, root_usds=None) # -> PreValidationResult
# Post-validation only
result = await packager.post_validate(package_def, *) # -> PostValidationResult
PackageSpec
| Field | Type | Default | Description |
|---|---|---|---|
name |
str |
required | Package name |
version |
str |
required | Version string |
license_id |
str |
required | SPDX license ID |
source |
str |
required | Path to source asset folder |
repo |
str | None |
None |
WRAPP repository URL. None = local, set = publish |
root_usds |
list[str] | None |
None |
Root USD paths relative to source. Specify if the package contains nested USD files. |
profiles |
list[str] | None |
None |
Pre-validation profile IDs. None → ["Package-Candidate"] |
skip_pre_validation |
bool |
False |
Skip pre-validation (local only) |
skip_post_validation |
bool |
False |
Skip post-validation (local only) |
PackageResult
| Field | Type | Description |
|---|---|---|
spec |
PackageSpec |
The spec used to produce this result |
created |
CreatedPackage |
Produced artifact URLs |
pre_validation |
PreValidationResult | None |
Pre-validation outcome (None when skipped) |
post_validation |
PostValidationResult | None |
Post-validation outcome (None when skipped) |
CreatedPackage
| Field | Type | Description |
|---|---|---|
pkg_def_url |
str |
Path/URL to com.nvidia.simready.packaging.json |
bom_url |
str | None |
BOM sidecar URL (WRAPP publish only) |
marker_url |
str | None |
.wrapp catalog marker URL (WRAPP publish only) |
CLI
# Local packaging
simready-package \
--name crate_01 --version 1.0.0 \
--license LicenseRef-NvidiaProprietary \
--project-config /workspace/project_config.toml \
--root-usd crate_01.usd \
/workspace/props/crate_01
# Publish to WRAPP (validation mandatory)
simready-package \
--name crate_01 --version 1.0.0 \
--license LicenseRef-NvidiaProprietary \
--repo omniverse://nucleus.company.com/packages \
--project-config /workspace/project_config.toml \
--root-usd crate_01.usd \
/workspace/props/crate_01
# Pre-validate only (no package build)
simready-package \
--project-config /workspace/project_config.toml \
--pre-validate-only \
/workspace/props/crate_01
# Local packaging, skip validation
simready-package \
--name crate_01 --version 1.0.0 \
--license LicenseRef-NvidiaProprietary \
--skip-pre-validation --skip-post-validation \
/workspace/props/crate_01
Exit code: 0 = success, 1 = validation failed or error.
License
Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. SPDX-License-Identifier: LicenseRef-NvidiaProprietary
Release files for simready-package 2026.7.1
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 | Reset |
|---|---|---|---|---|
| simready_package-2026.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Release files / simready_package-2026.7.1-py3-none-any.whl
| Download URL | simready_package-2026.7.1-py3-none-any.whl |
|---|---|
| Size | 51.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
834dced9156e2e770745b5d5f6593022a4d79122d0920f0a6a4bace00df1c591
|
|
BLAKE2b-256 checksum How to use checksums |
2f1c7c2c3e13308f222dcd24b4bc36346f30deb98e1490eb878d6d1c02972c3c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|