Metadata-Version: 2.4
Name: simready-manage
Version: 2026.8.0
Summary: SimReady Asset Pipeline Manager (Kit-free review/publish workflow)
Author: NVIDIA Corporation
License-Expression: Apache-2.0
Project-URL: Homepage, https://www.nvidia.com
Keywords: nvidia,simready,manage,pipeline
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: usd-core>=22.11
Requires-Dist: simready.validate>=2026.8.0
Requires-Dist: simready.package[publish]
Requires-Dist: huggingface_hub>=0.23
Requires-Dist: simready-benchmark
Dynamic: license-file

# simready-manage

`simready-manage` is the CLI and Python library that drives the **SimReady asset submission pipeline** -- from a local asset folder all the way through Hugging Face upload and into NVIDIA review.

---

## What it does

`simready-manage submit` automates four steps per asset:

1. **Validate** each asset against a SimReady profile (`simready-validate`) -- writes `.metadata/{name}_validation.json`
2. **Benchmark** each asset via `simready-benchmark` *(optional)* -- writes `.metadata/{name}_benchmark.json`
3. **Package** it into a WRAPP with a BOM (`simready-package`)
4. **Push** the package to your Hugging Face dataset and register it in the SimReady Central index

---

## Installation

```bash
pip install simready-manage
```

`simready-benchmark` is included as a required dependency, but running benchmark
tests (step [B] of `submit`) also requires a configured `engines.toml`, the target
runtime installed and licensed, and the matching engine PyPI package.  See the
`simready-benchmark` setup guide for details.  Benchmark results are required for
NVIDIA approval; `--skip-benchmark` is available as a temporary workaround during
environment setup only.

---

## Asset structure

`submit` expects the **asset root directory** -- the top-level folder whose name is the
asset name.  Inside it must be exactly one intermediate subdirectory containing the root
USD file (whose stem must match the asset root folder name), as required by NP.005.  The
whole asset root is packaged and pushed, intermediate subdirectory included: the package
definition and `.metadata/` are written at the asset root (PKG.DEF.001), so the folder
must contain only the asset's own data.

```
gen_appliance_toaster_v01_01/       <- pass this to submit (asset root == package root)
  com.nvidia.simready.packaging.json  <- written by submit
  .metadata/                        <- written by submit (validation/benchmark sidecars)
  simready_usd/                     <- intermediate subdir (any name)
    gen_appliance_toaster_v01_01.usd  <- root USD (stem == asset root name)
    textures/
    payloads/
```

---

## Workflow

### 1. Authenticate with Hugging Face

```bash
hf auth login
# or
export HF_TOKEN=hf_your_token_here
```

### 2. Submit assets

Pass asset root directories (one per asset):

```bash
simready-manage -v \
  --project-config project_config.toml \
  submit \
  assets/apple_a01 \
  assets/crate_01 \
  --hf-dataset acme-corp/simready-assets \
  --profile Robotics-Prop \
  --open-pr
```

**Submit from a curated list file** (one asset root path per line):

```bash
# assets.txt
assets/apple_a01
assets/crate_01
# assets/wip_table   <- commented out

simready-manage --project-config project_config.toml submit \
  --from-file assets.txt \
  --hf-dataset acme-corp/simready-assets \
  --profile Robotics-Prop
```

**Continue past validation failures** (still generates the sidecar):

```bash
simready-manage --project-config project_config.toml submit \
  --from-file assets.txt \
  --hf-dataset acme-corp/simready-assets \
  --profile Robotics-Prop \
  --ignore-validation-results
```

### 3. Key submit flags

| Flag | Default | Description |
|------|---------|-------------|
| `--hf-dataset` | required | OEM HF dataset (`org/repo`) |
| `--profile` | from USD metadata | SimReady profile to validate against (e.g. `Robotics-Prop`) |
| `--from-file PATH` | -- | Read asset paths from a text file (one per line, `#` = comment) |
| `--asset-version` | today `YYYY.MM.DD_00` | Package version string |
| `--license` | `cc-by-4.0` | SPDX license ID |
| `--open-pr` | off | Open a GitHub PR against SimReady Central after push |
| `--skip-validate` | off | Skip [A] validation entirely |
| `--ignore-validation-results` | off | Run validation + write sidecar, but continue even if it fails |
| `--skip-benchmark` | off | Skip [B] benchmark entirely |
| `--ignore-benchmark-results` | off | Run benchmark + write sidecar, but continue even if tests fail |
| `--benchmark-tests-path PATH` | auto-inferred | Path to test-definition directory for `simready-benchmark`. Auto-inferred from `profiles_paths` in `project_config.toml`; only needed for non-standard layouts. |
| `--skip-package` | off | Skip [C] packaging. Uses WRAPP from `.packages/<name>/<version>/` if present; otherwise pushes the asset directory directly (`com.nvidia.simready.packaging.json` must exist). |

### 4. What submit produces

After a successful run:

```
Submitted 2 asset(s):
  https://huggingface.co/datasets/acme-corp/simready-assets/resolve/abc123/apple_a01/com.nvidia.simready.packaging.json
  https://huggingface.co/datasets/acme-corp/simready-assets/resolve/def456/crate_01/com.nvidia.simready.packaging.json

PR          : https://github.com/NVIDIA-Omniverse/simready-central/pull/42
Hand-off    : share the PR URL with your NVIDIA reviewer.
```

---

## Configuration

`project_config.toml` is the shared config file used by all SimReady CLI tools:

```toml
[project_root]
setting = "."          # path relative to this file -> workspace root

[content_root]
name = "content"       # subdirectory under project_root

[validate]
# paths loaded by simready-validate and simready-package
rules_and_requirements_paths = ["nv_core/sr_specs/docs/requirements"]
features_paths               = ["nv_core/sr_specs/docs/features"]
profiles_paths               = ["nv_core/sr_specs/docs/profiles"]

[cip]
spec_root = "nv_core/sr_specs/docs"    # used by simready-retrieve derive
```

---

## License

Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0
