"""Constants for wine parsing - data lookup tables."""

# Wine type indicators
WINE_TYPE_INDICATORS = {
    "red": [
        "red wine", "vin rouge", "vino rosso", "vino tinto", "rotwein",
        "cabernet", "merlot", "pinot noir", "syrah", "shiraz", "malbec",
        "sangiovese", "nebbiolo", "tempranillo", "zinfandel", "primitivo",
    ],
    "white": [
        "white wine", "vin blanc", "vino bianco", "vino blanco", "weisswein",
        "chardonnay", "sauvignon blanc", "riesling", "pinot grigio", "pinot gris",
        "gewurztraminer", "viognier", "chenin blanc", "semillon", "gruner veltliner",
    ],
    "rosé": [
        "rosé", "rose", "rosado", "rosato", "vin rosé",
        "white zinfandel", "blush",
    ],
    "sparkling": [
        "sparkling", "champagne", "prosecco", "cava", "crémant", "cremant",
        "spumante", "sekt", "méthode traditionnelle", "brut", "extra brut",
        "demi-sec", "mousseux",
    ],
    "fortified": [
        "fortified", "port", "porto", "sherry", "jerez", "madeira",
        "marsala", "vermouth", "vin doux naturel",
    ],
    "dessert": [
        "dessert wine", "late harvest", "ice wine", "eiswein", "vin santo",
        "sauternes", "barsac", "tokaji", "trockenbeerenauslese", "beerenauslese",
        "passito", "recioto",
    ],
}

# Classification patterns by country/system
CLASSIFICATION_PATTERNS = {
    # France
    "grand_cru": ["grand cru", "grand cru classé"],
    "premier_cru": ["premier cru", "1er cru", "premier cru classé"],
    "cru_classe": ["cru classé", "cru classe", "classé growth"],
    "cru_bourgeois": ["cru bourgeois"],
    "aoc_aop": ["aoc", "aop", "appellation", "contrôlée", "controlee", "protégée"],
    "igp": ["igp", "vin de pays"],
    # Italy
    "docg": ["docg", "denominazione di origine controllata e garantita"],
    "doc": ["doc", "denominazione di origine controllata"],
    "igt": ["igt", "indicazione geografica tipica"],
    "riserva": ["riserva"],
    "superiore": ["superiore"],
    # Spain
    "doca": ["doca", "denominación de origen calificada"],
    "do": ["denominación de origen", "d.o."],
    "gran_reserva": ["gran reserva"],
    "reserva": ["reserva"],
    "crianza": ["crianza"],
    "joven": ["joven"],
    # Germany
    "grosses_gewachs": ["grosses gewächs", "grosses gewachs", "gg"],
    "erstes_gewachs": ["erstes gewächs", "erstes gewachs"],
    "trockenbeerenauslese": ["trockenbeerenauslese", "tba"],
    "beerenauslese": ["beerenauslese", "ba"],
    "auslese": ["auslese"],
    "spatlese": ["spätlese", "spatlese"],
    "kabinett": ["kabinett"],
    # USA/General
    "estate_bottled": ["estate bottled", "estate grown", "estate produced"],
    "reserve": ["reserve", "reserva"],
}

# Common grape varieties
GRAPE_VARIETIES = [
    "Cabernet Sauvignon",
    "Cabernet",
    "Merlot",
    "Pinot Noir",
    "Pinot Grigio",
    "Pinot Gris",
    "Chardonnay",
    "Sauvignon Blanc",
    "Riesling",
    "Syrah",
    "Shiraz",
    "Zinfandel",
    "Malbec",
    "Tempranillo",
    "Sangiovese",
    "Nebbiolo",
    "Grenache",
    "Garnacha",
    "Mourvedre",
    "Viognier",
    "Gewurztraminer",
    "Chenin Blanc",
    "Semillon",
    "Muscat",
    "Moscato",
    "Prosecco",
    "Champagne",
    "Cava",
    "Albarino",
    "Gruner Veltliner",
    "Torrontes",
    "Verdejo",
    "Carmenere",
    "Petite Sirah",
    "Petit Verdot",
    "Barbera",
    "Primitivo",
    "Montepulciano",
    "Nero d'Avola",
    "Vermentino",
    "Fiano",
    "Trebbiano",
    "Corvina",
    "Gamay",
    "Beaujolais",
]

# Common wine regions
WINE_REGIONS = [
    # France
    "Bordeaux",
    "Burgundy",
    "Bourgogne",
    "Champagne",
    "Rhone",
    "Loire",
    "Alsace",
    "Provence",
    "Languedoc",
    "Cotes du Rhone",
    "Medoc",
    "Saint-Emilion",
    "Pauillac",
    "Margaux",
    "Chablis",
    "Beaune",
    "Sancerre",
    "Pouilly-Fume",
    # Italy
    "Tuscany",
    "Toscana",
    "Piedmont",
    "Piemonte",
    "Veneto",
    "Sicily",
    "Sicilia",
    "Chianti",
    "Barolo",
    "Barbaresco",
    "Brunello di Montalcino",
    "Montalcino",
    "Valpolicella",
    "Amarone",
    "Prosecco",
    "Friuli",
    # Spain
    "Rioja",
    "Ribera del Duero",
    "Priorat",
    "Rias Baixas",
    "Rueda",
    "Navarra",
    "La Mancha",
    "Jerez",
    "Sherry",
    # USA
    "Napa Valley",
    "Napa",
    "Sonoma",
    "Willamette Valley",
    "Paso Robles",
    "Santa Barbara",
    "Russian River",
    "Alexander Valley",
    "Central Coast",
    "Oregon",
    "Washington",
    # Other
    "Marlborough",
    "Mendoza",
    "Stellenbosch",
    "Mosel",
    "Rheingau",
    "Pfalz",
    "Douro",
    "Alentejo",
    "Barossa Valley",
    "Hunter Valley",
    "Margaret River",
    "Hawke's Bay",
    "Maipo Valley",
    "Colchagua",
    "Casablanca",
]

# Countries commonly associated with wine
WINE_COUNTRIES = [
    "France",
    "Italy",
    "Spain",
    "Portugal",
    "Germany",
    "Austria",
    "United States",
    "USA",
    "California",
    "Oregon",
    "Washington",
    "Australia",
    "New Zealand",
    "Argentina",
    "Chile",
    "South Africa",
    "Greece",
    "Lebanon",
    "Israel",
    "Canada",
    "Hungary",
    "Romania",
    "Georgia",
    "Slovenia",
    "Croatia",
]

# Classification display names
CLASSIFICATION_DISPLAY_NAMES = {
    "grand_cru": "Grand Cru",
    "premier_cru": "Premier Cru",
    "cru_classe": "Cru Classé",
    "cru_bourgeois": "Cru Bourgeois",
    "aoc_aop": "AOC/AOP",
    "igp": "IGP",
    "docg": "DOCG",
    "doc": "DOC",
    "igt": "IGT",
    "riserva": "Riserva",
    "superiore": "Superiore",
    "doca": "DOCa",
    "gran_reserva": "Gran Reserva",
    "reserva": "Reserva",
    "crianza": "Crianza",
    "joven": "Joven",
    "grosses_gewachs": "Grosses Gewächs",
    "erstes_gewachs": "Erstes Gewächs",
    "trockenbeerenauslese": "Trockenbeerenauslese",
    "beerenauslese": "Beerenauslese",
    "auslese": "Auslese",
    "spatlese": "Spätlese",
    "kabinett": "Kabinett",
    "estate_bottled": "Estate Bottled",
    "reserve": "Reserve",
}

# Classification priority order (more specific first)
CLASSIFICATION_PRIORITY = [
    "trockenbeerenauslese", "beerenauslese", "auslese", "spatlese", "kabinett",
    "grosses_gewachs", "erstes_gewachs",
    "grand_cru", "premier_cru", "cru_classe", "cru_bourgeois",
    "docg", "doc", "igt", "riserva", "superiore",
    "doca", "gran_reserva", "reserva", "crianza", "joven",
    "aoc_aop", "igp",
    "estate_bottled", "reserve",
]

# Region to country mapping
REGION_TO_COUNTRY = {
    "Bordeaux": "France",
    "Burgundy": "France",
    "Champagne": "France",
    "Tuscany": "Italy",
    "Piedmont": "Italy",
    "Rioja": "Spain",
    "Napa Valley": "United States",
    "Marlborough": "New Zealand",
    "Mendoza": "Argentina",
    "Barossa Valley": "Australia",
}

# Grape classification
RED_GRAPES = [
    "cabernet", "merlot", "pinot noir", "syrah", "shiraz", "malbec",
    "sangiovese", "nebbiolo", "tempranillo", "zinfandel", "primitivo",
    "barbera", "grenache", "mourvedre", "gamay",
]

WHITE_GRAPES = [
    "chardonnay", "sauvignon blanc", "riesling", "pinot grigio",
    "gewurztraminer", "viognier", "chenin blanc", "semillon",
    "gruner veltliner", "albarino", "verdejo",
]
