41 lines
1022 B
Python
41 lines
1022 B
Python
"""Sport name normalisation."""
|
|
|
|
_MAPPING: dict[str, str] = {
|
|
# cycling variants
|
|
"cycling": "cycling",
|
|
"biking": "cycling",
|
|
"bike": "cycling",
|
|
"road_biking": "cycling",
|
|
"mountain_biking": "cycling",
|
|
"gravel_cycling": "cycling",
|
|
"cyclocross": "cycling",
|
|
"indoor_cycling": "cycling",
|
|
"virtual_ride": "cycling",
|
|
"e-biking": "cycling",
|
|
# running
|
|
"running": "running",
|
|
"run": "running",
|
|
"trail_running": "running",
|
|
"treadmill_running": "running",
|
|
"virtual_run": "running",
|
|
# hiking
|
|
"hiking": "hiking",
|
|
"hike": "hiking",
|
|
# walking
|
|
"walking": "walking",
|
|
"walk": "walking",
|
|
# swimming
|
|
"swimming": "swimming",
|
|
"swim": "swimming",
|
|
"open_water_swimming": "swimming",
|
|
}
|
|
|
|
BAS_SPORTS = {"cycling", "running", "hiking", "walking", "swimming", "other"}
|
|
|
|
|
|
def normalise_sport(raw: object) -> str:
|
|
if raw is None:
|
|
return "other"
|
|
key = str(raw).lower().strip().replace(" ", "_")
|
|
return _MAPPING.get(key, "other")
|