in Sources/Hub/Hub.swift [142:168]
func loadConfig(
modelName: String,
revision: String,
hubApi: HubApi = .shared
) async throws -> Configurations {
let filesToDownload = ["config.json", "tokenizer_config.json", "chat_template.jinja", "chat_template.json", "tokenizer.json"]
let repo = Hub.Repo(id: modelName)
do {
let downloadedModelFolder = try await hubApi.snapshot(from: repo, revision: revision, matching: filesToDownload)
return try await loadConfig(modelFolder: downloadedModelFolder, hubApi: hubApi)
} catch {
// Convert generic errors to more specific ones
if let urlError = error as? URLError {
switch urlError.code {
case .notConnectedToInternet, .networkConnectionLost:
throw Hub.HubClientError.networkError(urlError)
case .resourceUnavailable:
throw Hub.HubClientError.resourceNotFound(modelName)
default:
throw Hub.HubClientError.networkError(urlError)
}
} else {
throw error
}
}
}