Spaces:
Running
Running
Upload from GitHub Actions: improve norwegian fix
Browse files- evals/countries.py +2 -2
- evals/datasets_/commonvoice.py +3 -3
- evals/datasets_/fleurs.py +2 -2
- evals/datasets_/flores.py +4 -4
- evals/datasets_/mmlu.py +1 -1
- evals/datasets_/truthfulqa.py +4 -4
- evals/datasets_/util.py +5 -3
- evals/languages.py +7 -2
- evals/models.py +8 -3
- frontend/package-lock.json +24 -2
- frontend/src/components/WorldMap.js +2 -2
evals/countries.py
CHANGED
|
@@ -26,7 +26,7 @@ def make_country_table(language_table):
|
|
| 26 |
"name": lang.language_name,
|
| 27 |
"bcp_47": lang.bcp_47,
|
| 28 |
"population": speaker_pop,
|
| 29 |
-
"score": lang.average if not pd.isna(lang.average) else
|
| 30 |
}
|
| 31 |
)
|
| 32 |
for country, languages in countries.items():
|
|
@@ -36,7 +36,7 @@ def make_country_table(language_table):
|
|
| 36 |
score = None # This will make them appear grey on the map
|
| 37 |
else:
|
| 38 |
score = (
|
| 39 |
-
sum(entry["score"] * entry["population"] for entry in languages)
|
| 40 |
/ speaker_pop
|
| 41 |
)
|
| 42 |
|
|
|
|
| 26 |
"name": lang.language_name,
|
| 27 |
"bcp_47": lang.bcp_47,
|
| 28 |
"population": speaker_pop,
|
| 29 |
+
"score": lang.average if not pd.isna(lang.average) else None,
|
| 30 |
}
|
| 31 |
)
|
| 32 |
for country, languages in countries.items():
|
|
|
|
| 36 |
score = None # This will make them appear grey on the map
|
| 37 |
else:
|
| 38 |
score = (
|
| 39 |
+
sum((entry["score"] or 0) * entry["population"] for entry in languages)
|
| 40 |
/ speaker_pop
|
| 41 |
)
|
| 42 |
|
evals/datasets_/commonvoice.py
CHANGED
|
@@ -2,8 +2,8 @@ import re
|
|
| 2 |
from datetime import date
|
| 3 |
|
| 4 |
import pandas as pd
|
|
|
|
| 5 |
from joblib.memory import Memory
|
| 6 |
-
from langcodes import standardize_tag
|
| 7 |
from requests import get
|
| 8 |
|
| 9 |
cache = Memory(location=".cache", verbose=0).cache
|
|
@@ -23,8 +23,8 @@ commonvoice["bcp_47"] = commonvoice["commonvoice_locale"].apply(
|
|
| 23 |
lambda x: re.sub(r"-[A-Z]{2}$", "", x)
|
| 24 |
)
|
| 25 |
commonvoice["bcp_47"] = commonvoice["bcp_47"].apply(
|
| 26 |
-
lambda x:
|
| 27 |
-
)
|
| 28 |
commonvoice = (
|
| 29 |
commonvoice.groupby("bcp_47")
|
| 30 |
.agg({"commonvoice_hours": "sum", "commonvoice_locale": "first"})
|
|
|
|
| 2 |
from datetime import date
|
| 3 |
|
| 4 |
import pandas as pd
|
| 5 |
+
from datasets_.util import standardize_bcp47
|
| 6 |
from joblib.memory import Memory
|
|
|
|
| 7 |
from requests import get
|
| 8 |
|
| 9 |
cache = Memory(location=".cache", verbose=0).cache
|
|
|
|
| 23 |
lambda x: re.sub(r"-[A-Z]{2}$", "", x)
|
| 24 |
)
|
| 25 |
commonvoice["bcp_47"] = commonvoice["bcp_47"].apply(
|
| 26 |
+
lambda x: standardize_bcp47(x, macro=True)
|
| 27 |
+
)
|
| 28 |
commonvoice = (
|
| 29 |
commonvoice.groupby("bcp_47")
|
| 30 |
.agg({"commonvoice_hours": "sum", "commonvoice_locale": "first"})
|
evals/datasets_/fleurs.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
import pandas as pd
|
| 2 |
-
from
|
| 3 |
from pathlib import Path
|
| 4 |
import tarfile
|
| 5 |
import requests
|
|
@@ -8,7 +8,7 @@ fleurs_tags = "af_za,am_et,ar_eg,as_in,ast_es,az_az,be_by,bg_bg,bn_in,bs_ba,ca_e
|
|
| 8 |
|
| 9 |
fleurs = pd.DataFrame(fleurs_tags.split(","), columns=["fleurs_tag"])
|
| 10 |
fleurs["bcp_47"] = fleurs["fleurs_tag"].apply(
|
| 11 |
-
lambda x:
|
| 12 |
)
|
| 13 |
|
| 14 |
|
|
|
|
| 1 |
import pandas as pd
|
| 2 |
+
from datasets_.util import standardize_bcp47
|
| 3 |
from pathlib import Path
|
| 4 |
import tarfile
|
| 5 |
import requests
|
|
|
|
| 8 |
|
| 9 |
fleurs = pd.DataFrame(fleurs_tags.split(","), columns=["fleurs_tag"])
|
| 10 |
fleurs["bcp_47"] = fleurs["fleurs_tag"].apply(
|
| 11 |
+
lambda x: standardize_bcp47(x.rsplit("_")[0], macro=True)
|
| 12 |
)
|
| 13 |
|
| 14 |
|
evals/datasets_/flores.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
| 1 |
import re
|
| 2 |
|
| 3 |
import pandas as pd
|
| 4 |
-
from datasets_.util import _get_dataset_config_names, _load_dataset
|
| 5 |
-
from langcodes import Language
|
| 6 |
|
| 7 |
slug = "openlanguagedata/flores_plus"
|
| 8 |
splits = _get_dataset_config_names(slug)
|
|
@@ -21,7 +21,7 @@ def aggregate_flores_paths(flores_paths):
|
|
| 21 |
if len(flores_paths) == 1:
|
| 22 |
return flores_paths.values[0]
|
| 23 |
populations = [
|
| 24 |
-
Language.get(
|
| 25 |
for x in flores_paths.values
|
| 26 |
]
|
| 27 |
return flores_paths.values[populations.index(max(populations))]
|
|
@@ -29,7 +29,7 @@ def aggregate_flores_paths(flores_paths):
|
|
| 29 |
|
| 30 |
flores = pd.DataFrame(splits, columns=["flores_path"])
|
| 31 |
flores["bcp_47"] = flores["flores_path"].apply(
|
| 32 |
-
lambda x:
|
| 33 |
)
|
| 34 |
# ignore script (language is language)
|
| 35 |
flores["bcp_47"] = flores["bcp_47"].apply(
|
|
|
|
| 1 |
import re
|
| 2 |
|
| 3 |
import pandas as pd
|
| 4 |
+
from datasets_.util import _get_dataset_config_names, _load_dataset, standardize_bcp47
|
| 5 |
+
from langcodes import Language
|
| 6 |
|
| 7 |
slug = "openlanguagedata/flores_plus"
|
| 8 |
splits = _get_dataset_config_names(slug)
|
|
|
|
| 21 |
if len(flores_paths) == 1:
|
| 22 |
return flores_paths.values[0]
|
| 23 |
populations = [
|
| 24 |
+
Language.get(standardize_bcp47(x, macro=True)).writing_population()
|
| 25 |
for x in flores_paths.values
|
| 26 |
]
|
| 27 |
return flores_paths.values[populations.index(max(populations))]
|
|
|
|
| 29 |
|
| 30 |
flores = pd.DataFrame(splits, columns=["flores_path"])
|
| 31 |
flores["bcp_47"] = flores["flores_path"].apply(
|
| 32 |
+
lambda x: standardize_bcp47(x, macro=True),
|
| 33 |
)
|
| 34 |
# ignore script (language is language)
|
| 35 |
flores["bcp_47"] = flores["bcp_47"].apply(
|
evals/datasets_/mmlu.py
CHANGED
|
@@ -192,7 +192,7 @@ async def load_mmlu(language_bcp_47, nr):
|
|
| 192 |
# TODO: add in Okapi, MMLUX @Jonas
|
| 193 |
elif language_bcp_47 in tags_mmlu_autotranslated:
|
| 194 |
task = _get_mmlu_item(
|
| 195 |
-
"fair-forward/mmlu-autotranslated", language_bcp_47, category, nr
|
| 196 |
)
|
| 197 |
return (
|
| 198 |
"fair-forward/mmlu-autotranslated",
|
|
|
|
| 192 |
# TODO: add in Okapi, MMLUX @Jonas
|
| 193 |
elif language_bcp_47 in tags_mmlu_autotranslated:
|
| 194 |
task = _get_mmlu_item(
|
| 195 |
+
"fair-forward/mmlu-autotranslated", tags_mmlu_autotranslated[language_bcp_47], category, nr
|
| 196 |
)
|
| 197 |
return (
|
| 198 |
"fair-forward/mmlu-autotranslated",
|
evals/datasets_/truthfulqa.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
import random
|
| 2 |
from collections import Counter, defaultdict
|
| 3 |
|
| 4 |
-
from langcodes import Language
|
| 5 |
from rich import print
|
| 6 |
from tqdm import tqdm
|
| 7 |
import asyncio
|
|
@@ -11,19 +11,19 @@ import os
|
|
| 11 |
from datasets import Dataset, load_dataset
|
| 12 |
from models import translate_google, get_google_supported_languages
|
| 13 |
|
| 14 |
-
from datasets_.util import _get_dataset_config_names, _load_dataset
|
| 15 |
|
| 16 |
slug_uhura_truthfulqa = "masakhane/uhura-truthfulqa"
|
| 17 |
slug_truthfulqa_autotranslated = "fair-forward/truthfulqa-autotranslated"
|
| 18 |
|
| 19 |
tags_uhura_truthfulqa = {
|
| 20 |
-
|
| 21 |
for a in _get_dataset_config_names(slug_uhura_truthfulqa)
|
| 22 |
if a.endswith("multiple_choice")
|
| 23 |
}
|
| 24 |
|
| 25 |
tags_truthfulqa_autotranslated = {
|
| 26 |
-
|
| 27 |
for a in _get_dataset_config_names(slug_truthfulqa_autotranslated)
|
| 28 |
}
|
| 29 |
tags_truthfulqa_autotranslated = {}
|
|
|
|
| 1 |
import random
|
| 2 |
from collections import Counter, defaultdict
|
| 3 |
|
| 4 |
+
from langcodes import Language
|
| 5 |
from rich import print
|
| 6 |
from tqdm import tqdm
|
| 7 |
import asyncio
|
|
|
|
| 11 |
from datasets import Dataset, load_dataset
|
| 12 |
from models import translate_google, get_google_supported_languages
|
| 13 |
|
| 14 |
+
from datasets_.util import _get_dataset_config_names, _load_dataset, standardize_bcp47
|
| 15 |
|
| 16 |
slug_uhura_truthfulqa = "masakhane/uhura-truthfulqa"
|
| 17 |
slug_truthfulqa_autotranslated = "fair-forward/truthfulqa-autotranslated"
|
| 18 |
|
| 19 |
tags_uhura_truthfulqa = {
|
| 20 |
+
standardize_bcp47(a.split("_")[0], macro=True): a
|
| 21 |
for a in _get_dataset_config_names(slug_uhura_truthfulqa)
|
| 22 |
if a.endswith("multiple_choice")
|
| 23 |
}
|
| 24 |
|
| 25 |
tags_truthfulqa_autotranslated = {
|
| 26 |
+
standardize_bcp47(a, macro=True): a
|
| 27 |
for a in _get_dataset_config_names(slug_truthfulqa_autotranslated)
|
| 28 |
}
|
| 29 |
tags_truthfulqa_autotranslated = {}
|
evals/datasets_/util.py
CHANGED
|
@@ -16,9 +16,11 @@ TOKEN = os.getenv("HUGGINGFACE_ACCESS_TOKEN")
|
|
| 16 |
# This ensures results from different benchmarks use the same language code.
|
| 17 |
MACROLANGUAGE_MAPPINGS = {
|
| 18 |
"no": "nb", # Norwegian -> Norwegian BokmΓ₯l (most widely used variant)
|
| 19 |
-
# Add more mappings here
|
| 20 |
-
# "ms": "zsm", # Malay -> Standard Malay
|
| 21 |
-
# "ar": "arb", # Arabic -> Standard Arabic
|
|
|
|
|
|
|
| 22 |
}
|
| 23 |
|
| 24 |
|
|
|
|
| 16 |
# This ensures results from different benchmarks use the same language code.
|
| 17 |
MACROLANGUAGE_MAPPINGS = {
|
| 18 |
"no": "nb", # Norwegian -> Norwegian BokmΓ₯l (most widely used variant)
|
| 19 |
+
# Add more mappings here if they cause duplicate entries in the languages table:
|
| 20 |
+
# "ms": "zsm", # Malay -> Standard Malay (if both appear in population data)
|
| 21 |
+
# "ar": "arb", # Arabic -> Standard Arabic (if both appear in population data)
|
| 22 |
+
# "zh": "cmn", # Chinese -> Mandarin Chinese (if both appear in population data)
|
| 23 |
+
# Check LANGUAGE_SPEAKING_POPULATION to see which macrolanguages need mapping
|
| 24 |
}
|
| 25 |
|
| 26 |
|
evals/languages.py
CHANGED
|
@@ -4,8 +4,9 @@ import pandas as pd
|
|
| 4 |
from datasets_.commonvoice import commonvoice
|
| 5 |
from datasets_.fleurs import fleurs
|
| 6 |
from datasets_.flores import flores
|
|
|
|
| 7 |
from joblib.memory import Memory
|
| 8 |
-
from langcodes import Language
|
| 9 |
from language_data.population_data import LANGUAGE_SPEAKING_POPULATION
|
| 10 |
|
| 11 |
cache = Memory(location=".cache", verbose=0).cache
|
|
@@ -17,6 +18,10 @@ languages = {
|
|
| 17 |
if not re.match(r".*-[A-Z]{2}$", lang)
|
| 18 |
}
|
| 19 |
languages = pd.DataFrame(list(languages.items()), columns=["bcp_47", "speakers"])
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
languages["language_name"] = languages["bcp_47"].apply(
|
| 21 |
lambda x: Language.get(x).display_name()
|
| 22 |
)
|
|
@@ -28,7 +33,7 @@ glottolog = pd.read_csv(
|
|
| 28 |
"data/glottolog_languoid.csv/languoid.csv", na_values=[""], keep_default_na=False
|
| 29 |
) # Min _Nan_ Chinese is not N/A!
|
| 30 |
glottolog["bcp_47"] = glottolog["iso639P3code"].apply(
|
| 31 |
-
lambda x:
|
| 32 |
)
|
| 33 |
|
| 34 |
|
|
|
|
| 4 |
from datasets_.commonvoice import commonvoice
|
| 5 |
from datasets_.fleurs import fleurs
|
| 6 |
from datasets_.flores import flores
|
| 7 |
+
from datasets_.util import standardize_bcp47
|
| 8 |
from joblib.memory import Memory
|
| 9 |
+
from langcodes import Language
|
| 10 |
from language_data.population_data import LANGUAGE_SPEAKING_POPULATION
|
| 11 |
|
| 12 |
cache = Memory(location=".cache", verbose=0).cache
|
|
|
|
| 18 |
if not re.match(r".*-[A-Z]{2}$", lang)
|
| 19 |
}
|
| 20 |
languages = pd.DataFrame(list(languages.items()), columns=["bcp_47", "speakers"])
|
| 21 |
+
# Standardize language codes to avoid duplicates (e.g., "no" and "nb" for Norwegian)
|
| 22 |
+
languages["bcp_47"] = languages["bcp_47"].apply(standardize_bcp47)
|
| 23 |
+
# Merge any duplicates by summing speakers
|
| 24 |
+
languages = languages.groupby("bcp_47", as_index=False).agg({"speakers": "sum"})
|
| 25 |
languages["language_name"] = languages["bcp_47"].apply(
|
| 26 |
lambda x: Language.get(x).display_name()
|
| 27 |
)
|
|
|
|
| 33 |
"data/glottolog_languoid.csv/languoid.csv", na_values=[""], keep_default_na=False
|
| 34 |
) # Min _Nan_ Chinese is not N/A!
|
| 35 |
glottolog["bcp_47"] = glottolog["iso639P3code"].apply(
|
| 36 |
+
lambda x: standardize_bcp47(x, macro=True) if not pd.isna(x) else None
|
| 37 |
)
|
| 38 |
|
| 39 |
|
evals/models.py
CHANGED
|
@@ -26,10 +26,10 @@ important_models = [
|
|
| 26 |
"openai/gpt-4o", # 10$
|
| 27 |
"openai/gpt-3.5-turbo", # $1.50
|
| 28 |
"openai/gpt-oss-120b",
|
| 29 |
-
"anthropic/claude-4.5
|
| 30 |
-
"anthropic/claude-4.5
|
| 31 |
"anthropic/claude-opus-4.1", # 15$
|
| 32 |
-
"anthropic/claude-4
|
| 33 |
"anthropic/claude-3.7-sonnet", # 15$
|
| 34 |
"anthropic/claude-3.5-sonnet",
|
| 35 |
"mistralai/mistral-small-3.2-24b-instruct", # 0.3$
|
|
@@ -41,6 +41,7 @@ important_models = [
|
|
| 41 |
"google/gemini-2.5-flash-lite", # 0.3$
|
| 42 |
"google/gemma-3-27b-it", # 0.2$
|
| 43 |
# "x-ai/grok-4", # $15
|
|
|
|
| 44 |
# "x-ai/grok-3", # $15
|
| 45 |
"cohere/command-a",
|
| 46 |
"qwen/qwen3-32b",
|
|
@@ -52,9 +53,13 @@ important_models = [
|
|
| 52 |
# "qwen/qwen-2-72b-instruct", # 0.9$
|
| 53 |
"deepseek/deepseek-v3.2-exp",
|
| 54 |
"microsoft/phi-4", # 0.07$
|
|
|
|
| 55 |
"amazon/nova-pro-v1", # 0.09$
|
| 56 |
"moonshotai/kimi-k2", # 0.6$
|
|
|
|
| 57 |
"baidu/ernie-4.5-300b-a47b",
|
|
|
|
|
|
|
| 58 |
]
|
| 59 |
|
| 60 |
blocklist = [
|
|
|
|
| 26 |
"openai/gpt-4o", # 10$
|
| 27 |
"openai/gpt-3.5-turbo", # $1.50
|
| 28 |
"openai/gpt-oss-120b",
|
| 29 |
+
"anthropic/claude-sonnet-4.5",
|
| 30 |
+
"anthropic/claude-haiku-4.5",
|
| 31 |
"anthropic/claude-opus-4.1", # 15$
|
| 32 |
+
"anthropic/claude-sonnet-4",
|
| 33 |
"anthropic/claude-3.7-sonnet", # 15$
|
| 34 |
"anthropic/claude-3.5-sonnet",
|
| 35 |
"mistralai/mistral-small-3.2-24b-instruct", # 0.3$
|
|
|
|
| 41 |
"google/gemini-2.5-flash-lite", # 0.3$
|
| 42 |
"google/gemma-3-27b-it", # 0.2$
|
| 43 |
# "x-ai/grok-4", # $15
|
| 44 |
+
"x-ai/grok-4-fast",
|
| 45 |
# "x-ai/grok-3", # $15
|
| 46 |
"cohere/command-a",
|
| 47 |
"qwen/qwen3-32b",
|
|
|
|
| 53 |
# "qwen/qwen-2-72b-instruct", # 0.9$
|
| 54 |
"deepseek/deepseek-v3.2-exp",
|
| 55 |
"microsoft/phi-4", # 0.07$
|
| 56 |
+
"amazon/nova-premier-v1", # 12.5$
|
| 57 |
"amazon/nova-pro-v1", # 0.09$
|
| 58 |
"moonshotai/kimi-k2", # 0.6$
|
| 59 |
+
# "moonshotai/kimi-k2-thinking", # 2.5$
|
| 60 |
"baidu/ernie-4.5-300b-a47b",
|
| 61 |
+
# "baidu/ernie-4.5-21b-a3b-thinking",
|
| 62 |
+
"z-ai/glm-4.6", # 1.75$
|
| 63 |
]
|
| 64 |
|
| 65 |
blocklist = [
|
frontend/package-lock.json
CHANGED
|
@@ -73,6 +73,7 @@
|
|
| 73 |
"integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
|
| 74 |
"dev": true,
|
| 75 |
"license": "MIT",
|
|
|
|
| 76 |
"dependencies": {
|
| 77 |
"@babel/code-frame": "^7.27.1",
|
| 78 |
"@babel/generator": "^7.28.3",
|
|
@@ -767,6 +768,7 @@
|
|
| 767 |
"integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==",
|
| 768 |
"dev": true,
|
| 769 |
"license": "MIT",
|
|
|
|
| 770 |
"dependencies": {
|
| 771 |
"@babel/helper-plugin-utils": "^7.27.1"
|
| 772 |
},
|
|
@@ -1708,6 +1710,7 @@
|
|
| 1708 |
"integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==",
|
| 1709 |
"dev": true,
|
| 1710 |
"license": "MIT",
|
|
|
|
| 1711 |
"dependencies": {
|
| 1712 |
"@babel/helper-annotate-as-pure": "^7.27.1",
|
| 1713 |
"@babel/helper-module-imports": "^7.27.1",
|
|
@@ -3667,6 +3670,7 @@
|
|
| 3667 |
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz",
|
| 3668 |
"integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==",
|
| 3669 |
"license": "MIT",
|
|
|
|
| 3670 |
"dependencies": {
|
| 3671 |
"@babel/code-frame": "^7.10.4",
|
| 3672 |
"@babel/runtime": "^7.12.5",
|
|
@@ -4047,8 +4051,7 @@
|
|
| 4047 |
"version": "15.7.15",
|
| 4048 |
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
|
| 4049 |
"integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
|
| 4050 |
-
"license": "MIT"
|
| 4051 |
-
"peer": true
|
| 4052 |
},
|
| 4053 |
"node_modules/@types/q": {
|
| 4054 |
"version": "1.5.8",
|
|
@@ -4214,6 +4217,7 @@
|
|
| 4214 |
"integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
|
| 4215 |
"dev": true,
|
| 4216 |
"license": "MIT",
|
|
|
|
| 4217 |
"dependencies": {
|
| 4218 |
"@eslint-community/regexpp": "^4.4.0",
|
| 4219 |
"@typescript-eslint/scope-manager": "5.62.0",
|
|
@@ -4269,6 +4273,7 @@
|
|
| 4269 |
"integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
|
| 4270 |
"dev": true,
|
| 4271 |
"license": "BSD-2-Clause",
|
|
|
|
| 4272 |
"dependencies": {
|
| 4273 |
"@typescript-eslint/scope-manager": "5.62.0",
|
| 4274 |
"@typescript-eslint/types": "5.62.0",
|
|
@@ -4668,6 +4673,7 @@
|
|
| 4668 |
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
| 4669 |
"dev": true,
|
| 4670 |
"license": "MIT",
|
|
|
|
| 4671 |
"bin": {
|
| 4672 |
"acorn": "bin/acorn"
|
| 4673 |
},
|
|
@@ -4775,6 +4781,7 @@
|
|
| 4775 |
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
|
| 4776 |
"dev": true,
|
| 4777 |
"license": "MIT",
|
|
|
|
| 4778 |
"dependencies": {
|
| 4779 |
"fast-deep-equal": "^3.1.1",
|
| 4780 |
"fast-json-stable-stringify": "^2.0.0",
|
|
@@ -5744,6 +5751,7 @@
|
|
| 5744 |
}
|
| 5745 |
],
|
| 5746 |
"license": "MIT",
|
|
|
|
| 5747 |
"dependencies": {
|
| 5748 |
"caniuse-lite": "^1.0.30001737",
|
| 5749 |
"electron-to-chromium": "^1.5.211",
|
|
@@ -7204,6 +7212,7 @@
|
|
| 7204 |
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
|
| 7205 |
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
|
| 7206 |
"license": "ISC",
|
|
|
|
| 7207 |
"engines": {
|
| 7208 |
"node": ">=12"
|
| 7209 |
}
|
|
@@ -8177,6 +8186,7 @@
|
|
| 8177 |
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
|
| 8178 |
"dev": true,
|
| 8179 |
"license": "MIT",
|
|
|
|
| 8180 |
"dependencies": {
|
| 8181 |
"@eslint-community/eslint-utils": "^4.2.0",
|
| 8182 |
"@eslint-community/regexpp": "^4.6.1",
|
|
@@ -11195,6 +11205,7 @@
|
|
| 11195 |
"integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==",
|
| 11196 |
"dev": true,
|
| 11197 |
"license": "MIT",
|
|
|
|
| 11198 |
"dependencies": {
|
| 11199 |
"@jest/core": "^27.5.1",
|
| 11200 |
"import-local": "^3.0.2",
|
|
@@ -13635,6 +13646,7 @@
|
|
| 13635 |
}
|
| 13636 |
],
|
| 13637 |
"license": "MIT",
|
|
|
|
| 13638 |
"dependencies": {
|
| 13639 |
"nanoid": "^3.3.11",
|
| 13640 |
"picocolors": "^1.1.1",
|
|
@@ -14893,6 +14905,7 @@
|
|
| 14893 |
"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
|
| 14894 |
"dev": true,
|
| 14895 |
"license": "MIT",
|
|
|
|
| 14896 |
"dependencies": {
|
| 14897 |
"cssesc": "^3.0.0",
|
| 14898 |
"util-deprecate": "^1.0.2"
|
|
@@ -15286,6 +15299,7 @@
|
|
| 15286 |
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
|
| 15287 |
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
|
| 15288 |
"license": "MIT",
|
|
|
|
| 15289 |
"dependencies": {
|
| 15290 |
"loose-envify": "^1.1.0"
|
| 15291 |
},
|
|
@@ -15427,6 +15441,7 @@
|
|
| 15427 |
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
|
| 15428 |
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
|
| 15429 |
"license": "MIT",
|
|
|
|
| 15430 |
"dependencies": {
|
| 15431 |
"loose-envify": "^1.1.0",
|
| 15432 |
"scheduler": "^0.23.2"
|
|
@@ -15454,6 +15469,7 @@
|
|
| 15454 |
"integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==",
|
| 15455 |
"dev": true,
|
| 15456 |
"license": "MIT",
|
|
|
|
| 15457 |
"engines": {
|
| 15458 |
"node": ">=0.10.0"
|
| 15459 |
}
|
|
@@ -15967,6 +15983,7 @@
|
|
| 15967 |
"integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
|
| 15968 |
"dev": true,
|
| 15969 |
"license": "MIT",
|
|
|
|
| 15970 |
"bin": {
|
| 15971 |
"rollup": "dist/bin/rollup"
|
| 15972 |
},
|
|
@@ -16232,6 +16249,7 @@
|
|
| 16232 |
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
| 16233 |
"dev": true,
|
| 16234 |
"license": "MIT",
|
|
|
|
| 16235 |
"dependencies": {
|
| 16236 |
"fast-deep-equal": "^3.1.3",
|
| 16237 |
"fast-uri": "^3.0.1",
|
|
@@ -18039,6 +18057,7 @@
|
|
| 18039 |
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
|
| 18040 |
"dev": true,
|
| 18041 |
"license": "(MIT OR CC0-1.0)",
|
|
|
|
| 18042 |
"engines": {
|
| 18043 |
"node": ">=10"
|
| 18044 |
},
|
|
@@ -18505,6 +18524,7 @@
|
|
| 18505 |
"integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==",
|
| 18506 |
"dev": true,
|
| 18507 |
"license": "MIT",
|
|
|
|
| 18508 |
"dependencies": {
|
| 18509 |
"@types/eslint-scope": "^3.7.7",
|
| 18510 |
"@types/estree": "^1.0.8",
|
|
@@ -18578,6 +18598,7 @@
|
|
| 18578 |
"integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==",
|
| 18579 |
"dev": true,
|
| 18580 |
"license": "MIT",
|
|
|
|
| 18581 |
"dependencies": {
|
| 18582 |
"@types/bonjour": "^3.5.9",
|
| 18583 |
"@types/connect-history-api-fallback": "^1.3.5",
|
|
@@ -19015,6 +19036,7 @@
|
|
| 19015 |
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
| 19016 |
"dev": true,
|
| 19017 |
"license": "MIT",
|
|
|
|
| 19018 |
"dependencies": {
|
| 19019 |
"fast-deep-equal": "^3.1.3",
|
| 19020 |
"fast-uri": "^3.0.1",
|
|
|
|
| 73 |
"integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
|
| 74 |
"dev": true,
|
| 75 |
"license": "MIT",
|
| 76 |
+
"peer": true,
|
| 77 |
"dependencies": {
|
| 78 |
"@babel/code-frame": "^7.27.1",
|
| 79 |
"@babel/generator": "^7.28.3",
|
|
|
|
| 768 |
"integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==",
|
| 769 |
"dev": true,
|
| 770 |
"license": "MIT",
|
| 771 |
+
"peer": true,
|
| 772 |
"dependencies": {
|
| 773 |
"@babel/helper-plugin-utils": "^7.27.1"
|
| 774 |
},
|
|
|
|
| 1710 |
"integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==",
|
| 1711 |
"dev": true,
|
| 1712 |
"license": "MIT",
|
| 1713 |
+
"peer": true,
|
| 1714 |
"dependencies": {
|
| 1715 |
"@babel/helper-annotate-as-pure": "^7.27.1",
|
| 1716 |
"@babel/helper-module-imports": "^7.27.1",
|
|
|
|
| 3670 |
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz",
|
| 3671 |
"integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==",
|
| 3672 |
"license": "MIT",
|
| 3673 |
+
"peer": true,
|
| 3674 |
"dependencies": {
|
| 3675 |
"@babel/code-frame": "^7.10.4",
|
| 3676 |
"@babel/runtime": "^7.12.5",
|
|
|
|
| 4051 |
"version": "15.7.15",
|
| 4052 |
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
|
| 4053 |
"integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
|
| 4054 |
+
"license": "MIT"
|
|
|
|
| 4055 |
},
|
| 4056 |
"node_modules/@types/q": {
|
| 4057 |
"version": "1.5.8",
|
|
|
|
| 4217 |
"integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
|
| 4218 |
"dev": true,
|
| 4219 |
"license": "MIT",
|
| 4220 |
+
"peer": true,
|
| 4221 |
"dependencies": {
|
| 4222 |
"@eslint-community/regexpp": "^4.4.0",
|
| 4223 |
"@typescript-eslint/scope-manager": "5.62.0",
|
|
|
|
| 4273 |
"integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
|
| 4274 |
"dev": true,
|
| 4275 |
"license": "BSD-2-Clause",
|
| 4276 |
+
"peer": true,
|
| 4277 |
"dependencies": {
|
| 4278 |
"@typescript-eslint/scope-manager": "5.62.0",
|
| 4279 |
"@typescript-eslint/types": "5.62.0",
|
|
|
|
| 4673 |
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
| 4674 |
"dev": true,
|
| 4675 |
"license": "MIT",
|
| 4676 |
+
"peer": true,
|
| 4677 |
"bin": {
|
| 4678 |
"acorn": "bin/acorn"
|
| 4679 |
},
|
|
|
|
| 4781 |
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
|
| 4782 |
"dev": true,
|
| 4783 |
"license": "MIT",
|
| 4784 |
+
"peer": true,
|
| 4785 |
"dependencies": {
|
| 4786 |
"fast-deep-equal": "^3.1.1",
|
| 4787 |
"fast-json-stable-stringify": "^2.0.0",
|
|
|
|
| 5751 |
}
|
| 5752 |
],
|
| 5753 |
"license": "MIT",
|
| 5754 |
+
"peer": true,
|
| 5755 |
"dependencies": {
|
| 5756 |
"caniuse-lite": "^1.0.30001737",
|
| 5757 |
"electron-to-chromium": "^1.5.211",
|
|
|
|
| 7212 |
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
|
| 7213 |
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
|
| 7214 |
"license": "ISC",
|
| 7215 |
+
"peer": true,
|
| 7216 |
"engines": {
|
| 7217 |
"node": ">=12"
|
| 7218 |
}
|
|
|
|
| 8186 |
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
|
| 8187 |
"dev": true,
|
| 8188 |
"license": "MIT",
|
| 8189 |
+
"peer": true,
|
| 8190 |
"dependencies": {
|
| 8191 |
"@eslint-community/eslint-utils": "^4.2.0",
|
| 8192 |
"@eslint-community/regexpp": "^4.6.1",
|
|
|
|
| 11205 |
"integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==",
|
| 11206 |
"dev": true,
|
| 11207 |
"license": "MIT",
|
| 11208 |
+
"peer": true,
|
| 11209 |
"dependencies": {
|
| 11210 |
"@jest/core": "^27.5.1",
|
| 11211 |
"import-local": "^3.0.2",
|
|
|
|
| 13646 |
}
|
| 13647 |
],
|
| 13648 |
"license": "MIT",
|
| 13649 |
+
"peer": true,
|
| 13650 |
"dependencies": {
|
| 13651 |
"nanoid": "^3.3.11",
|
| 13652 |
"picocolors": "^1.1.1",
|
|
|
|
| 14905 |
"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
|
| 14906 |
"dev": true,
|
| 14907 |
"license": "MIT",
|
| 14908 |
+
"peer": true,
|
| 14909 |
"dependencies": {
|
| 14910 |
"cssesc": "^3.0.0",
|
| 14911 |
"util-deprecate": "^1.0.2"
|
|
|
|
| 15299 |
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
|
| 15300 |
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
|
| 15301 |
"license": "MIT",
|
| 15302 |
+
"peer": true,
|
| 15303 |
"dependencies": {
|
| 15304 |
"loose-envify": "^1.1.0"
|
| 15305 |
},
|
|
|
|
| 15441 |
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
|
| 15442 |
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
|
| 15443 |
"license": "MIT",
|
| 15444 |
+
"peer": true,
|
| 15445 |
"dependencies": {
|
| 15446 |
"loose-envify": "^1.1.0",
|
| 15447 |
"scheduler": "^0.23.2"
|
|
|
|
| 15469 |
"integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==",
|
| 15470 |
"dev": true,
|
| 15471 |
"license": "MIT",
|
| 15472 |
+
"peer": true,
|
| 15473 |
"engines": {
|
| 15474 |
"node": ">=0.10.0"
|
| 15475 |
}
|
|
|
|
| 15983 |
"integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
|
| 15984 |
"dev": true,
|
| 15985 |
"license": "MIT",
|
| 15986 |
+
"peer": true,
|
| 15987 |
"bin": {
|
| 15988 |
"rollup": "dist/bin/rollup"
|
| 15989 |
},
|
|
|
|
| 16249 |
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
| 16250 |
"dev": true,
|
| 16251 |
"license": "MIT",
|
| 16252 |
+
"peer": true,
|
| 16253 |
"dependencies": {
|
| 16254 |
"fast-deep-equal": "^3.1.3",
|
| 16255 |
"fast-uri": "^3.0.1",
|
|
|
|
| 18057 |
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
|
| 18058 |
"dev": true,
|
| 18059 |
"license": "(MIT OR CC0-1.0)",
|
| 18060 |
+
"peer": true,
|
| 18061 |
"engines": {
|
| 18062 |
"node": ">=10"
|
| 18063 |
},
|
|
|
|
| 18524 |
"integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==",
|
| 18525 |
"dev": true,
|
| 18526 |
"license": "MIT",
|
| 18527 |
+
"peer": true,
|
| 18528 |
"dependencies": {
|
| 18529 |
"@types/eslint-scope": "^3.7.7",
|
| 18530 |
"@types/estree": "^1.0.8",
|
|
|
|
| 18598 |
"integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==",
|
| 18599 |
"dev": true,
|
| 18600 |
"license": "MIT",
|
| 18601 |
+
"peer": true,
|
| 18602 |
"dependencies": {
|
| 18603 |
"@types/bonjour": "^3.5.9",
|
| 18604 |
"@types/connect-history-api-fallback": "^1.3.5",
|
|
|
|
| 19036 |
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
| 19037 |
"dev": true,
|
| 19038 |
"license": "MIT",
|
| 19039 |
+
"peer": true,
|
| 19040 |
"dependencies": {
|
| 19041 |
"fast-deep-equal": "^3.1.3",
|
| 19042 |
"fast-uri": "^3.0.1",
|
frontend/src/components/WorldMap.js
CHANGED
|
@@ -26,10 +26,10 @@ const makeTitle = data => d => {
|
|
| 26 |
a =>
|
| 27 |
`${smoothProgressBar(a.population / pop)} ${
|
| 28 |
a.name
|
| 29 |
-
} β ${a.score === null || a.score === undefined ? "
|
| 30 |
)
|
| 31 |
.join('\n\n') + (languages?.length > 10 ? `\n\n...` : '')
|
| 32 |
-
return `${d.properties.ADMIN} β ${cData?.score === null || cData?.score === undefined ? "
|
| 33 |
}
|
| 34 |
|
| 35 |
const WorldMap = ({ data, width = 750, height = 500, allLanguages = [] }) => {
|
|
|
|
| 26 |
a =>
|
| 27 |
`${smoothProgressBar(a.population / pop)} ${
|
| 28 |
a.name
|
| 29 |
+
} β ${a.score === null || a.score === undefined ? "na" : a.score.toFixed(2)}`
|
| 30 |
)
|
| 31 |
.join('\n\n') + (languages?.length > 10 ? `\n\n...` : '')
|
| 32 |
+
return `${d.properties.ADMIN} β ${cData?.score === null || cData?.score === undefined ? "na" : cData.score.toFixed(2)}\n\n${langstring}`
|
| 33 |
}
|
| 34 |
|
| 35 |
const WorldMap = ({ data, width = 750, height = 500, allLanguages = [] }) => {
|