# Prenoms.csv : https://www.data.gouv.fr/fr/datasets/liste-de-prenoms/
from unidecode import unidecode
from itertools import permutations

def langages():
    langues = []
    with open('Prenoms.csv' , 'r') as f:
        for line in f.readlines():
            L = line.split(';')
            tmp = L[2].split(', ')
            for l in tmp:
                if l not in langues and l != '03_langage':
                    langues.append( l )
                
    return langues

def possible_prenoms(name , lang = None):
    prenoms = []
    prenom_origin = unidecode(name.lower()).split(' ')[0]

    with open('Prenoms.csv' , 'r') as f:
        for line in f.readlines():
            L = line.split(';')
            if lang != None and L[2] == lang:
                prenoms.append( L[0].replace(' (1)','').replace(' (2)','').lower() )
            else:
                prenoms.append( L[0].replace(' (1)','').replace(' (2)','').lower() )

    name = unidecode( name ).replace(' ','').replace('-','')

    list_of_prenoms = []

    for p in prenoms:
        prenom = list( unidecode(p).replace('-','') )
        tmp = list( unidecode(p).replace('-','') )
        name_list = list( name.lower() )
        for lettre in prenom:
            if lettre not in name_list:
                break
            else:
                tmp.remove(lettre)
                name_list.remove(lettre)
                
        if len(tmp) == 0 and ''.join(prenom) != prenom_origin:
            list_of_prenoms.append(''.join(prenom))
            
    return list_of_prenoms

def rest(name,prenom):
    name = list ( unidecode( name ).replace(' ','').replace('-','').lower() )
    
    for lettre in prenom.lower():
        name.remove( lettre )
        
    return ''.join(name)
        
name = "Bon anniversaire"
prenom = "Theseus"
print( possible_prenoms(name) )
print( rest(name,prenom) )