{"record":{"id":"8924acd277092940","repo":"apple/pkl","slug":"failed-to-fetch-dependency-metadata-for-dependen","errorCode":null,"errorMessage":"Failed to fetch dependency metadata for ${dependency.packageUri}: ${e.message}","messagePattern":"Failed to fetch dependency metadata for (.+?): (.+?)","errorType":"exception","errorClass":"CliException","httpStatus":null,"severity":"error","filePath":"pkl-doc/src/main/kotlin/org/pkl/doc/CliDocGenerator.kt","lineNumber":87,"sourceCode":"  private val versions = mutableMapOf<String, Version>()\n\n  private val versionComparator =\n    Comparator<String> { v1, v2 ->\n      versions\n        .getOrPut(v1) { Version.parse(v1) }\n        .compareTo(versions.getOrPut(v2) { Version.parse(v2) })\n    }\n\n  private val docMigrator = DocMigrator(options.outputDir, System.out, versionComparator)\n\n  private fun DependencyMetadata.getPackageDependencies(): List<DocPackageInfo.PackageDependency> {\n    return buildList {\n      for ((_, dependency) in dependencies) {\n        val metadata =\n          try {\n            packageResolver.getDependencyMetadata(dependency.packageUri, dependency.checksums)\n          } catch (e: Exception) {\n            throw CliException(\n              \"Failed to fetch dependency metadata for ${dependency.packageUri}: ${e.message}\"\n            )\n          }\n        val packageDependency =\n          DocPackageInfo.PackageDependency(\n            name = metadata.name,\n            uri = dependency.packageUri.uri,\n            version = metadata.version.toString(),\n            sourceCode = metadata.sourceCode,\n            sourceCodeUrlScheme = metadata.sourceCodeUrlScheme,\n            documentation = metadata.documentation,\n          )\n        add(packageDependency)\n      }\n      add(stdlibDependency)\n    }\n  }\n","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/apple/pkl/blob/f3efcbfc9b60d30053b0536d664948d7aa1b8673/pkl-doc/src/main/kotlin/org/pkl/doc/CliDocGenerator.kt#L69-L105","documentation":"pkldoc generation fetches metadata for each dependency of the documented package via packageResolver.getDependencyMetadata. When that fetch fails for any reason (network error, missing package, bad checksums), it is wrapped in this CliException naming the dependency's package URI and the underlying message.","triggerScenarios":"Running pkldoc generation for a package whose dependencies cannot be resolved: unreachable registry, wrong dependency URI/version in PklProject, checksum mismatch, or authentication failure against a private registry.","commonSituations":"Offline CI runner; private dependency not in the configured repository; dependency version deleted from the remote; proxy blocking the registry host.","solutions":["Read the wrapped e.message for the root cause (DNS failure, 404, checksum mismatch) and address that.","Verify the dependency's package URI, version, and checksums in PklProject against the registry.","Check network/proxy connectivity to the package repository; retry if transient.","Run `pkl project resolve` (or the equivalent resolve step) first to confirm dependencies can be fetched.","For private registries, ensure credentials/repository configuration is present."],"exampleFix":"// before (PklProject dependencies)\n\"my-dep\": { uri: \"pkg://example.com/my@1.0.0\" } // version deleted upstream\n// after\n\"my-dep\": { uri: \"pkg://example.com/my@1.0.1\" }","handlingStrategy":"try-catch","validationCode":"// before generating, verify deps resolve:\n// pkl project resolve --project-dir .  (non-zero exit => deps unresolvable)","typeGuard":null,"tryCatchPattern":"try {\n  generateDocs()\n} catch (e: CliException) {\n  if (e.message?.startsWith(\"Failed to fetch dependency metadata\") == true) {\n    logger.error(\"Dependency resolution failed: ${e.message}. Check registry connectivity and PklProject checksums.\")\n  } else throw e\n}","preventionTips":["Run dependency resolution as a separate CI step before doc generation.","Pin dependency versions and checksums; verify they exist on the registry.","Configure proxy/credentials for private package repositories in the build environment.","Retry generation on transient network failures."],"tags":["network","packages","dependencies","cli"],"backgroundTag":"http-request-failed","analyzedSha":"f3efcbfc9b60d30053b0536d664948d7aa1b8673","analyzedAt":"2026-09-08T13:10:45.570Z","contentChangedAt":"2026-09-08T13:10:45.570Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}