"""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")