Skip to main content

SimReady Asset Packaging Library

Project description

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.


Installation

pip install simready-package

# Publishing via WRAPP also requires:
pip install "simready-package[publish]"

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simready_package-2026.6.2-py3-none-any.whl (50.2 kB view details)

Uploaded Python 3

File details

Details for the file simready_package-2026.6.2-py3-none-any.whl.

File metadata

File hashes

Hashes for simready_package-2026.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 22f4648599182b48c7233b9f23bcf7a093b4707df43b008ccd5d85d443221028
MD5 382f6dddbaf352975ac6f5c716f490c6
BLAKE2b-256 3235f88ab5e3d9585857938e6a2e74d104df5830c18b5a8fecf8e27fb96f7bb1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page