2 # person_in_charge: mathieu.courtois at edf.fr
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2017 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
24 from __future__ import print_function
25 from __future__ import absolute_import
27 from builtins import str
28 from builtins import object
32 class A_CLASSER(object):
35 La regle A_CLASSER verifie que ...
39 def __init__(self, *args):
41 print ("Erreur a la creation de la regle A_CLASSER(%s)" % str(args))
44 if type(args[0]) == tuple: self.args0 = args[0]
45 elif type(args[0]) == str: self.args0 = (args[0],)
47 print ( "Le premier argument de : %s doit etre un tuple ou une chaine" % str(args))
48 if type(args[1]) == tuple:
50 elif type(args[1]) == str:
51 self.args1 = (args[1],)
53 print ("Le deuxieme argument de : %s doit etre un tuple ou une chaine" % str(args))
54 # creation de la liste des mcs
56 liste.extend(self.args0)
57 liste.extend(self.args1)
59 self.initCouplesPermis()
61 def initCouplesPermis(self):
62 """ Cree la liste des couples permis parmi les self.args, cad pour chaque element
63 de self.args0 cree tous les couples possibles avec un element de self.args1"""
65 for arg0 in self.args0:
66 for arg1 in self.args1:
67 liste.append((arg0, arg1))
68 self.liste_couples = liste
70 def verif(self, args):
72 args peut etre un dictionnaire ou une liste. Les elements de args
73 sont soit les elements de la liste soit les cles du dictionnaire.
75 # creation de la liste des couples presents dans le fichier de
85 l_couples.append(tuple(couple))
88 l_couples.append(tuple(couple))
89 # l_couples peut etre vide si l'on n'a pas reussi a trouver au moins un
91 if len(l_couples) == 0:
92 message = "- Il faut qu'au moins un objet de la liste : %s soit suivi d'au moins un objet de la liste %s : " % (self.args0,self.args1)
94 # A ce stade, on a trouve des couples : il faut verifier qu'ils sont
97 for couple in l_couples:
100 # on a un 'faux' couple
101 if couple[0] not in self.args1:
102 text = text + "- L'objet : %s doit etre suivi d'un objet de la liste : %r\n" %(couple[0], self.args1)
106 # ce n'est pas le seul couple --> licite
109 text = text + "- L'objet : %s doit etre precede d'un objet de la liste : %r\n" %(couple[0], self.args0)
111 elif couple not in self.liste_couples:
112 text = text + "- L'objet : %s ne peut etre suivi de : %s\n" %(couple[0], couple[1])