@ -71,25 +71,29 @@ def vergleiche(respuesta, expecta): 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        respuesta  =  ' ¡ '  +  respuesta [ 1 : ]  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if  respuesta [ 0 ]  ==  ' ? '  and  expecta [ 0 ]  ==  ' ¿ ' :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        respuesta  =  ' ¿ '  +  respuesta [ 1 : ]  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    expecta  =  re . sub ( '   \ ((irr.|pl.) \ ) ' ,  ' ' ,  expecta )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    respuesta  =  unicodedata . normalize ( ' NFD ' ,  respuesta )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    expecta  =  unicodedata . normalize ( ' NFD ' ,  expecta )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if  respuesta  ==  expecta :  return  0  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    respuesta  =  re . sub ( ' [!?¿¡…. ] ' ,  ' ' ,  respuesta )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    expecta  =  re . sub ( ' [!?¿¡…. ] ' ,  ' ' ,  expecta )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if  respuesta  ==  expecta :  return  1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    respuesta  =  respuesta . encode ( ' ASCII ' ,  ' ignore ' ) . decode ( ' ASCII ' )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    expecta  =  expecta . encode ( ' ASCII ' ,  ' ignore ' ) . decode ( ' ASCII ' )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if  respuesta  ==  expecta :  return  1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if  respuesta  ==  expecta :  return  2  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    respuesta  =  respuesta . casefold ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    expecta  =  expecta . casefold ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if  respuesta  ==  expecta :  return  2  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    respuesta  =  re . sub ( ' \ W ' ,  ' ' ,  respuesta )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    expecta  =  re . sub ( ' \ W ' ,  ' ' ,  expecta )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if  respuesta  ==  expecta :  return  3  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    return  4  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					assert  vergleiche ( " e " ,  " e " )  ==  0  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					assert  vergleiche ( " é " ,  " e " )  ==  1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					assert  vergleiche ( " Bien " ,  " bien " )  ==  2  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					assert  vergleiche ( " é " ,  " e " )  ==  2  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					assert  vergleiche ( " Bien " ,  " bien " )  ==  3  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					assert  vergleiche ( " quétal " ,  " Qué tal " )  ==  3  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					assert  vergleiche ( " Buenas Noches " ,  " ¡Buenas noches! " )  ==  3  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					assert  vergleiche ( " Buenas noches " ,  " ¡Buenas noches! " )  ==  1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					assert  vergleiche ( " ser " ,  " ser (irr.) " )  ==  0  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					assert  vergleiche ( " hacer algo " ,  " hacer (irr.) algo " )  ==  0  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					assert  vergleiche ( " padres " ,  " padres (pl.) " )  ==  0  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					class  Resultado :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    BIEN  =  1  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -128,7 +132,7 @@ def einzelne_abfrage(palabra, status): 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        return  Resultado . ADIOS  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    return  Resultado . BIEN  if  bien  else  Resultado . MAL  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					def  abfrage ( parser ) :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					def  abfrage ( parser ,  quiero_unidad ) :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    random . seed ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    try :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        with  open ( VOKABELN_FILE ,  ' r ' )  as  f :  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -142,28 +146,29 @@ def abfrage(parser): 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        return  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    unidad  =  False  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    unidad_no  =  - 1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    paso  =  False  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    cur_palabras  =  False  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    bien  =  0  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    mal  =  0  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    for  palabra  in  palabras :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        if  paso  !=  palabra [ ' paso ' ] :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  cur_palabras  !=  False :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  cur_palabras  !=  False  and  ( quiero_unidad  ==  None  or  quiero_unidad  ==  unidad_no )  :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                c  =  [ len ( cur_palabras [ x ] )  for  x  in  cur_palabras ]  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                print ( f " {bcolors.BOLD}{unidad}{bcolors.ENDC}: {paso} ( " , end = " " )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                print ( * c ,  sep = " / " ,  end = " ) " )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                print ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                for  n  in  range ( 5 ) :  # 1..4, no 5  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    random . shuffle ( cur_palabras [ n ] )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    for  palabra  in  cur_palabras [ n ] :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        s  =  status . get ( palabra [ ' id ' ] ,  0 )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        match  einzelne_abfrage ( palabra ,  s ) :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    for  a_ palabra  in  cur_palabras [ n ] :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        s  =  status . get ( a_ palabra[ ' id ' ] ,  0 )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        match  einzelne_abfrage ( a_ palabra,  s ) :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            case  Resultado . BIEN :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                                status [ palabra [ ' id ' ] ]  =  s  +  1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                                status [ a_ palabra[ ' id ' ] ]  =  s  +  1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                                bien + = 1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            case  Resultado . MAL :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                                if  s  >  0 :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                                    status [ palabra [ ' id ' ] ]  =  s  -  1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                                    status [ a_ palabra[ ' id ' ] ]  =  s  -  1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                                    mal + = 1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                                    continue  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            case  Resultado . ADIOS :  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -178,6 +183,8 @@ def abfrage(parser): 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        os . replace ( STATUS_FILE  +  ' .new ' ,  STATUS_FILE )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            cur_palabras  =  { 0 :  [ ] ,  1 :  [ ] ,  2 :  [ ] ,  3 :  [ ] ,  4 :  [ ] ,  5 :  [ ] }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  unidad  !=  palabra [ ' unidad ' ] :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                unidad_no  + =  1  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            unidad  =  palabra [ ' unidad ' ]  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            paso  =  palabra [ ' paso ' ]  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -188,6 +195,7 @@ default_data_file = os.environ['PWD'] + '/assets/amf/vokabelTrainer147.amf' 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					parser . add_argument ( ' --import-data ' ,  type = str ,  help = " Path to assets " ,  metavar = " DIR " )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					default_status_file  =  os . environ [ ' HOME ' ]  +  ' /klett/1266/vokabeltrainerData147 '  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					parser . add_argument ( ' --import-status ' ,  type = str ,  help = " Path to AMF File, defaults to  "  +  default_status_file ,  metavar = " FILE " ,  nargs = ' ? ' ,  const = default_status_file )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					parser . add_argument ( ' --unidad ' ,  type = int )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					args  =  parser . parse_args ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					if  args . import_data :  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -196,4 +204,4 @@ if args.import_data: 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					elif  args . import_status :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    import_status ( args . import_status )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					else :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    abfrage ( parser )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    abfrage ( parser ,  args . unidad )