{"record":{"id":"3195b351edc94ed8","repo":"dbt-labs/dbt-core","slug":"clap-requires-version-with-download-base-url","errorCode":null,"errorMessage":"clap requires --version with --download-base-url","messagePattern":"clap requires --version with --download-base-url","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-ci/src/publish.rs","lineNumber":199,"sourceCode":"}\n\n/// Builds the download-at-install sdist into `out_dir` without uploading it.\nasync fn build_only_sdist(\n    args: &PypiPublishArgs,\n    spec: &pyproject::Spec,\n    out_dir: &Path,\n) -> Result<()> {\n    let http = http_client()?;\n    // clap's `requires` guarantees `--version` alongside `--download-base-url`,\n    // which `--sdist-out` also requires.\n    let base_url = args\n        .download_base_url\n        .as_deref()\n        .context(\"--sdist-out requires --download-base-url\")?;\n    let version = args\n        .version\n        .as_deref()\n        .expect(\"clap requires --version with --download-base-url\");\n    fs::create_dir_all(out_dir)\n        .with_context(|| format!(\"create sdist out dir {}\", out_dir.display()))?;\n    let sdist = build_release_sdist(\n        &http,\n        spec,\n        version,\n        base_url,\n        &args.targets,\n        &args.python_tag,\n        &args.abi_tag,\n        out_dir,\n    )\n    .await?;\n    eprintln!(\"✓ sdist: {}\", sdist.display());\n    Ok(())\n}\n\n/// Resolves what to publish — a freshly-built sdist (`--download-base-url`) or","sourceCodeStart":181,"sourceCodeEnd":217,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-ci/src/publish.rs#L181-L217","documentation":"Invariant expect in build_only_sdist: clap's `requires` chain (--sdist-out requires --download-base-url requires --version) guarantees --version is present when this code runs, so the unwrap cannot fail unless the clap definitions drift from this assumption. Internal consistency guard only.","triggerScenarios":"Thrown at crates/dbt-ci/src/publish.rs:199 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Keep the clap requires chain aligned with the expects here","Cover the build-only sdist path with a CLI test passing all required flags","Report as an internal bug in dbt-ci publish"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}