{"record":{"id":"48cf700ce1a69d16","repo":"Humanizr/Humanizer","slug":"missing-unicode-16-input-input-key","errorCode":null,"errorMessage":"Missing Unicode 16 input '{input.Key}'.","messagePattern":"Missing Unicode 16 input '(.+?)'\\.","errorType":"exception","errorClass":"FileNotFoundException","httpStatus":null,"severity":"error","filePath":"tools/Humanizer.UnicodeDataGenerator/Program.cs","lineNumber":35,"sourceCode":"}\n\nvar repositoryRoot = FindRepositoryRoot(Directory.GetCurrentDirectory());\nvar inputDirectory = Path.GetFullPath(args[0]);\nvar inputs = new Dictionary<string, string>(StringComparer.Ordinal)\n{\n    [\"UnicodeData.txt\"] = \"ff58e5823bd095166564a006e47d111130813dcf8bf234ef79fa51a870edb48f\", // DevSkim: ignore DS173237\n    [\"CaseFolding.txt\"] = \"6f1f9c588eb4a5c718d9e8f93b782685e5c7fec872cf05e8e6878053599e09bb\", // DevSkim: ignore DS173237\n    [\"Scripts.txt\"] = \"9e88f0a677df47311106340be8ede2ecdacd9c1c931831218d2be6d5508e0039\", // DevSkim: ignore DS173237\n    [\"ScriptExtensions.txt\"] = \"049117ce26b9769fe2749b06eef51a50a89faef4a97764dd2d81daa715980700\", // DevSkim: ignore DS173237\n    [\"DerivedNormalizationProps.txt\"] = \"4d4c03892dea9146d674b686e495df2d55a28d071ac474041d73518f887abddc\" // DevSkim: ignore DS173237\n};\n\nforeach (var input in inputs)\n{\n    var path = Path.Combine(inputDirectory, input.Key);\n    if (!File.Exists(path))\n    {\n        throw new FileNotFoundException($\"Missing Unicode 16 input '{input.Key}'.\", path);\n    }\n\n    var actual = Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path))).ToLowerInvariant();\n    if (actual != input.Value)\n    {\n        throw new InvalidOperationException(\n            $\"Unicode 16 input '{input.Key}' has SHA-256 {actual}; expected {input.Value}.\");\n    }\n}\n\nvar unicodeDataPath = Path.Combine(inputDirectory, \"UnicodeData.txt\");\nvar categories = new string?[scalarCount];\nvar uppercaseMappings = new Dictionary<int, int>();\nvar lowercaseMappings = new Dictionary<int, int>();\nReadUnicodeData(\n    unicodeDataPath,\n    categories,\n    uppercaseMappings,","sourceCodeStart":17,"sourceCodeEnd":53,"githubUrl":"https://github.com/Humanizr/Humanizer/blob/ffc2b77c0f30d2fb176875841424379319d0ae9b/tools/Humanizer.UnicodeDataGenerator/Program.cs#L17-L53","documentation":"Thrown by the UnicodeDataGenerator tool when one of the five required Unicode Character Database (UCD) input files is not found in the specified input directory. The generator needs UnicodeData.txt, CaseFolding.txt, Scripts.txt, ScriptExtensions.txt, and DerivedNormalizationProps.txt to produce inflection data.","triggerScenarios":"Running dotnet run --project tools/Humanizer.UnicodeDataGenerator -- <dir> when the directory is missing one or more UCD files. Also when the directory path is wrong or the files were not downloaded.","commonSituations":"Contributor runs the generator without first downloading the UCD files. Typo in the input directory path. Partial download that omitted a file. CI environment where the fetch step was skipped.","solutions":["Download all five required UCD files from unicode.org into the input directory.","Verify the directory path passed as the first argument is correct.","Use ls on the input directory to confirm all five files are present."],"exampleFix":"// before\ndotnet run --project tools/Humanizer.UnicodeDataGenerator -- ./ucd\n\n// after\n# ensure all 5 files exist first\nls ./ucd/UnicodeData.txt ./ucd/CaseFolding.txt ./ucd/Scripts.txt ./ucd/ScriptExtensions.txt ./ucd/DerivedNormalizationProps.txt\ndotnet run --project tools/Humanizer.UnicodeDataGenerator -- ./ucd","handlingStrategy":"validation","validationCode":"static readonly string[] RequiredUcdFiles =\n{\n    \"UnicodeData.txt\", \"CaseFolding.txt\", \"Scripts.txt\",\n    \"ScriptExtensions.txt\", \"DerivedNormalizationProps.txt\"\n};\n\nstatic bool AllUcdFilesPresent(string dir) =>\n    RequiredUcdFiles.All(f => File.Exists(Path.Combine(dir, f)));","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Automate UCD file download in your build script.","Verify file presence before running the generator.","Pin the download to the Unicode 16 release URL."],"tags":["unicode-generator","tooling","file-not-found","build-tools"],"backgroundTag":null,"analyzedSha":"ffc2b77c0f30d2fb176875841424379319d0ae9b","analyzedAt":"2026-08-13T21:42:34.584Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}