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/tiers/simready_foundation_tier_core/simready/foundation/tier_core/capabilities"],
features_paths=["nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/features"],
profiles_paths=["nv_core/tiers/simready_foundation_tier_core/simready/foundation/tier_core/profiles"],
)
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: Apache-2.0
Metadata
Release files for simready-package 2026.8.0
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 |
|---|---|---|---|---|
| simready_package-2026.8.0-py3-none-any.whl | Python 3 | none | any | Details for simready_package-2026.8.0-py3-none-any.whl |
Release files / simready_package-2026.8.0-py3-none-any.whl
| Download URL | simready_package-2026.8.0-py3-none-any.whl |
|---|---|
| Size | 50.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
374f1c7aa9740e6a0848edb2f34a7feecda9166a36370903bb608255deeb00ef
|
|
BLAKE2b-256 checksum How to use checksums |
0227b736fd32df315b1e5f1880129c4823920235ebd10f97a9a83b03edd0da7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Security for simready-package 2026.8.0
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.