@@ -152,13 +152,21 @@ def _get_language_info(self, code: str) -> dict:
152152 }
153153
154154 def _slugify (self , text : str ) -> str :
155- """Convert text to URL-safe slug."""
155+ """Convert text to URL-safe slug for GitHub wiki page names ."""
156156 slug = text .lower ()
157157 slug = re .sub (r"[^a-z0-9\-_]" , "-" , slug )
158158 slug = re .sub (r"-+" , "-" , slug )
159159 slug = slug .strip ("-" )
160160 return slug
161161
162+ def _language_page_name (self , language_name : str ) -> str :
163+ """Generate wiki page name for a language (flat structure for GitHub wiki)."""
164+ return f"Language-{ self ._slugify (language_name )} "
165+
166+ def _model_page_name (self , model_name : str ) -> str :
167+ """Generate wiki page name for a model (flat structure for GitHub wiki)."""
168+ return f"Model-{ self ._slugify (model_name )} "
169+
162170 def _calculate_score_distribution (self , scores : list [float ]) -> dict :
163171 """Calculate score distribution buckets."""
164172 dist = {"excellent" : 0 , "good" : 0 , "acceptable" : 0 , "poor" : 0 , "failed" : 0 }
@@ -194,10 +202,8 @@ def generate_all(self, run_id: Optional[str] = None) -> Path:
194202 if run is None :
195203 raise ValueError ("No benchmark run found" )
196204
197- # Ensure output directories exist
205+ # Ensure output directory exists (flat structure for GitHub wiki)
198206 self .output_dir .mkdir (parents = True , exist_ok = True )
199- (self .output_dir / "languages" ).mkdir (exist_ok = True )
200- (self .output_dir / "models" ).mkdir (exist_ok = True )
201207
202208 # Generate all pages
203209 self ._generate_home (run )
@@ -218,7 +224,7 @@ def _generate_home(self, run: BenchmarkRun) -> None:
218224 for stats in sorted (model_stats , key = lambda x : x .avg_overall , reverse = True ):
219225 model_rankings .append ({
220226 "name" : stats .model ,
221- "slug " : self ._slugify (stats .model ),
227+ "page_name " : self ._model_page_name (stats .model ),
222228 "avg_overall" : stats .avg_overall ,
223229 "avg_accuracy" : stats .avg_accuracy ,
224230 "avg_fluency" : stats .avg_fluency ,
@@ -235,7 +241,7 @@ def _generate_home(self, run: BenchmarkRun) -> None:
235241 language_rankings .append ({
236242 "name" : lang_info ["name" ],
237243 "native_name" : lang_info ["native_name" ],
238- "slug " : self ._slugify (lang_info ["name" ]),
244+ "page_name " : self ._language_page_name (lang_info ["name" ]),
239245 "avg_overall" : stats .avg_overall ,
240246 "indicator" : get_score_indicator (stats .avg_overall ),
241247 "best_model" : stats .best_model or "N/A" ,
@@ -269,16 +275,17 @@ def _generate_all_languages_page(self, run: BenchmarkRun) -> None:
269275 for stats in sorted (language_stats , key = lambda x : x .avg_overall , reverse = True ):
270276 lang_info = self ._get_language_info (stats .language_code )
271277 indicator = get_score_indicator (stats .avg_overall )
278+ page_name = self ._language_page_name (lang_info ['name' ])
272279 rows .append ([
273- f"[{ lang_info ['name' ]} ](languages/ { self . _slugify ( lang_info [ 'name' ]) } )" ,
280+ f"[{ lang_info ['name' ]} ]({ page_name } )" ,
274281 lang_info ['native_name' ],
275282 lang_info ['category' ],
276283 f"{ indicator } { stats .avg_overall :.1f} " ,
277284 stats .best_model or "N/A" ,
278285 ])
279286
280287 table = format_markdown_table (headers , rows )
281- content = f"# All Languages\n \n { table } \n \n ---\n \n [< Back to Home](Home)\n "
288+ content = f"# All Languages\n \n { table } \n \n ---\n \n [← Back to Home](Home)\n "
282289
283290 (self .output_dir / "All-Languages.md" ).write_text (content , encoding = "utf-8" )
284291
@@ -291,8 +298,9 @@ def _generate_all_models_page(self, run: BenchmarkRun) -> None:
291298
292299 for stats in sorted (model_stats , key = lambda x : x .avg_overall , reverse = True ):
293300 indicator = get_score_indicator (stats .avg_overall )
301+ page_name = self ._model_page_name (stats .model )
294302 rows .append ([
295- f"[{ stats .model } ](models/ { self . _slugify ( stats . model ) } )" ,
303+ f"[{ stats .model } ]({ page_name } )" ,
296304 f"{ indicator } { stats .avg_overall :.1f} " ,
297305 f"{ stats .avg_accuracy :.1f} " ,
298306 f"{ stats .avg_fluency :.1f} " ,
@@ -301,7 +309,7 @@ def _generate_all_models_page(self, run: BenchmarkRun) -> None:
301309 ])
302310
303311 table = format_markdown_table (headers , rows )
304- content = f"# All Models\n \n { table } \n \n ---\n \n [< Back to Home](Home)\n "
312+ content = f"# All Models\n \n { table } \n \n ---\n \n [← Back to Home](Home)\n "
305313
306314 (self .output_dir / "All-Models.md" ).write_text (content , encoding = "utf-8" )
307315
@@ -340,7 +348,7 @@ def _generate_language_pages(self, run: BenchmarkRun) -> None:
340348 if m_scores :
341349 model_results .append ({
342350 "model" : model ,
343- "model_slug " : self ._slugify (model ),
351+ "model_page_name " : self ._model_page_name (model ),
344352 "avg_overall" : sum (s .overall for s in m_scores ) / len (m_scores ),
345353 "avg_accuracy" : sum (s .accuracy for s in m_scores ) / len (m_scores ),
346354 "avg_fluency" : sum (s .fluency for s in m_scores ) / len (m_scores ),
@@ -367,16 +375,17 @@ def _generate_language_pages(self, run: BenchmarkRun) -> None:
367375 total_translations = len (results ),
368376 model_results = model_results ,
369377 best_model = best_model ,
370- best_model_slug = self ._slugify (best_model ),
378+ best_model_page_name = self ._model_page_name (best_model ),
371379 worst_model = worst_model ,
372- worst_model_slug = self ._slugify (worst_model ),
380+ worst_model_page_name = self ._model_page_name (worst_model ),
373381 examples = examples ,
374382 score_dist = self ._calculate_score_distribution (scores ),
375383 indicators = self .INDICATORS ,
376384 )
377385
378- filename = f"{ self ._slugify (lang_info ['name' ])} .md"
379- (self .output_dir / "languages" / filename ).write_text (content , encoding = "utf-8" )
386+ # Write to flat directory structure (GitHub wiki doesn't support subdirectories)
387+ filename = f"{ self ._language_page_name (lang_info ['name' ])} .md"
388+ (self .output_dir / filename ).write_text (content , encoding = "utf-8" )
380389
381390 def _generate_model_pages (self , run : BenchmarkRun ) -> None :
382391 """Generate individual model pages."""
@@ -414,7 +423,7 @@ def _generate_model_pages(self, run: BenchmarkRun) -> None:
414423 language_results .append ({
415424 "code" : lang_code ,
416425 "name" : lang_info ["name" ],
417- "slug " : self ._slugify (lang_info ["name" ]),
426+ "page_name " : self ._language_page_name (lang_info ["name" ]),
418427 "category" : lang_info ["category" ],
419428 "avg_overall" : lang_avg ,
420429 "avg_accuracy" : sum (s .accuracy for s in l_scores ) / len (l_scores ),
@@ -453,10 +462,10 @@ def _generate_model_pages(self, run: BenchmarkRun) -> None:
453462 language_results = language_results ,
454463 categories = categories ,
455464 best_language = best_lang ["name" ] if best_lang else "N/A" ,
456- best_language_slug = self ._slugify (best_lang ["name" ]) if best_lang else "" ,
465+ best_language_page_name = self ._language_page_name (best_lang ["name" ]) if best_lang else "" ,
457466 best_language_score = best_lang ["avg_overall" ] if best_lang else 0 ,
458467 worst_language = worst_lang ["name" ] if worst_lang else "N/A" ,
459- worst_language_slug = self ._slugify (worst_lang ["name" ]) if worst_lang else "" ,
468+ worst_language_page_name = self ._language_page_name (worst_lang ["name" ]) if worst_lang else "" ,
460469 worst_language_score = worst_lang ["avg_overall" ] if worst_lang else 0 ,
461470 best_example = best_example ,
462471 worst_example = worst_example ,
@@ -465,8 +474,9 @@ def _generate_model_pages(self, run: BenchmarkRun) -> None:
465474 avg_translation_time_ms = avg_translation_time ,
466475 )
467476
468- filename = f"{ self ._slugify (model_name )} .md"
469- (self .output_dir / "models" / filename ).write_text (content , encoding = "utf-8" )
477+ # Write to flat directory structure (GitHub wiki doesn't support subdirectories)
478+ filename = f"{ self ._model_page_name (model_name )} .md"
479+ (self .output_dir / filename ).write_text (content , encoding = "utf-8" )
470480
471481 def _group_languages_by_category (self , language_rankings : list [dict ]) -> list [dict ]:
472482 """Group language rankings by category."""
0 commit comments