]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
*** empty log message ***
authorPascale Noyret <pascale.noyret@edf.fr>
Fri, 20 Nov 2009 13:34:12 +0000 (13:34 +0000)
committerPascale Noyret <pascale.noyret@edf.fr>
Fri, 20 Nov 2009 13:34:12 +0000 (13:34 +0000)
Accas/__init__.py
Accas/__init__NonAster.py [new file with mode: 0644]
Noyau/N_ASSD.py
Noyau/N_ASSD_NonAster.py [new file with mode: 0644]
Noyau/N_ETAPE.py
Noyau/N_FONCTION.py
Noyau/N_JDC.py
Noyau/N_MACRO_ETAPE.py
Noyau/N_VALIDATOR.py
Noyau/asojb.py

index 324ed712c8d13c996c46e347ebae449a738441da..2d985aed0abac87cca1d5763ea1e6b5a049ba631 100644 (file)
@@ -84,7 +84,6 @@ from A_VALIDATOR import OrVal,AndVal
 from A_VALIDATOR import OrdList,NoRepeat,LongStr,Compulsory
 from A_VALIDATOR import RangeVal, EnumVal, TypeVal, PairVal
 from A_VALIDATOR import CardVal, InstanceVal
-from A_VALIDATOR import VerifTypeTuple
 
 # On remplace la factory des validateurs initialement dans Noyau par celle
 # de A_VALIDATOR
diff --git a/Accas/__init__NonAster.py b/Accas/__init__NonAster.py
new file mode 100644 (file)
index 0000000..324ed71
--- /dev/null
@@ -0,0 +1,104 @@
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+"""
+   Ce package contient les classes qui seront effectivement utilisees dans les applications.
+   C'est dans ce package que sont realisees les combinaisons de classes de base
+   avec les classes MIXIN qui implementent les fonctionnalites qui ont ete separees
+   du noyau pour des raisons de modularite afin de faciliter la maintenance et
+   l'extensibilite.
+
+   De plus toutes les classes utilisables par les applications sont remontees au
+   niveau du package afin de rendre le plus independant possible l'utilisation des
+   classes et leur implementation.
+"""
+
+# permet de se proteger de l'oubli de carte coding
+# ce warning deviendra fatal en python 2.4
+import warnings
+warnings.filterwarnings('error','Non-ASCII character.*pep-0263',DeprecationWarning)
+
+from A_JDC_CATA import JDC_CATA
+from A_OPER import OPER
+from A_PROC import PROC
+from A_MACRO import MACRO
+from A_FORM import FORM
+from A_BLOC import BLOC
+from A_FACT import FACT
+from A_SIMP import SIMP
+from A_EVAL import EVAL
+from A_NUPLET import NUPL
+
+from A_JDC import JDC
+from A_ETAPE import ETAPE
+from A_PROC_ETAPE import PROC_ETAPE
+from A_MACRO_ETAPE import MACRO_ETAPE
+from A_FORM_ETAPE import FORM_ETAPE
+from A_MCFACT import MCFACT
+from A_MCLIST import MCList
+from A_MCBLOC import MCBLOC
+from A_MCSIMP import MCSIMP
+
+# Les règles
+from A_AU_MOINS_UN import AU_MOINS_UN
+from A_AU_PLUS_UN import AU_PLUS_UN
+from A_UN_PARMI import UN_PARMI
+from A_PRESENT_PRESENT import PRESENT_PRESENT
+from A_PRESENT_ABSENT import PRESENT_ABSENT
+from A_EXCLUS import EXCLUS
+from A_ENSEMBLE import ENSEMBLE
+from A_A_CLASSER import A_CLASSER
+from A_AVANT import AVANT
+
+from A_ASSD import ASSD,assd
+from A_ASSD import GEOM,geom
+# Pour le moment on laisse fonction (ceinture et bretelles)
+from A_ASSD import FONCTION, fonction
+from A_ASSD import formule
+from A_ASSD import formule_c
+from A_ASSD import CO
+
+from Noyau.N__F import _F
+
+from Noyau.N_Exception import AsException
+from Noyau.N_utils import AsType
+
+from A_VALIDATOR import OrVal,AndVal
+from A_VALIDATOR import OrdList,NoRepeat,LongStr,Compulsory
+from A_VALIDATOR import RangeVal, EnumVal, TypeVal, PairVal
+from A_VALIDATOR import CardVal, InstanceVal
+from A_VALIDATOR import VerifTypeTuple
+
+# On remplace la factory des validateurs initialement dans Noyau par celle
+# de A_VALIDATOR
+import A_VALIDATOR
+import Noyau.N_ENTITE
+Noyau.N_ENTITE.ENTITE.factories['validator']=A_VALIDATOR.validatorFactory
+
+from A_SENSIBILITE import CONCEPT_SENSIBLE, REUSE_SENSIBLE, DERIVABLE
+
+from Extensions.niveau import NIVEAU
+from Extensions.etape_niveau import ETAPE_NIVEAU
+from Extensions.commentaire import COMMENTAIRE
+from Extensions.parametre import PARAMETRE  
+from Extensions.parametre_eval import PARAMETRE_EVAL
+from Extensions.commande_comm import COMMANDE_COMM 
+from Extensions.mcnuplet import MCNUPLET
+
index ebcddc39ce165ee7ba8fa065d315cd3dca458063..79e7dcdc9320d6c90282f1061d7c64783b69c3e6 100644 (file)
@@ -59,7 +59,7 @@ class ASSD(object):
       # permet de savoir si le concept a été calculé (1) ou non (0)
       self.executed = 0
       # initialise la partie "sd"
-      super(ASSD, self).__init__() # Python 2.6
+      super(ASSD, self).__init__(nomj='?&?&?&?&')
       
    def __getitem__(self,key):
       return self.etape[key]
diff --git a/Noyau/N_ASSD_NonAster.py b/Noyau/N_ASSD_NonAster.py
new file mode 100644 (file)
index 0000000..79e7dcd
--- /dev/null
@@ -0,0 +1,140 @@
+#@ MODIF N_ASSD Noyau  DATE 02/06/2008   AUTEUR COURTOIS M.COURTOIS 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
+# (AT YOUR OPTION) ANY LATER VERSION.                                 
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+#                                                                       
+#                                                                       
+# ======================================================================
+
+
+"""
+
+"""
+
+class ASSD(object):
+   """
+      Classe de base pour definir des types de structures de donnees ASTER
+      equivalent d un concept ASTER
+   """
+   idracine="SD"
+
+   def __init__(self,etape=None,sd=None,reg='oui'):
+      """
+        reg est un paramètre qui vaut oui ou non :
+          - si oui (défaut) : on enregistre la SD auprès du JDC
+          - si non : on ne l'enregistre pas
+      """
+      self.etape=etape
+      self.sd=sd
+      self.nom=None
+      if etape:
+        self.parent=etape.parent
+      else:
+        self.parent=CONTEXT.get_current_step()
+      if self.parent :
+         self.jdc = self.parent.get_jdc_root()
+      else:
+         self.jdc = None
+
+      if not self.parent:
+        self.id=None
+      elif reg == 'oui' :
+        self.id = self.parent.reg_sd(self)
+      else :
+        self.id = self.parent.o_register(self)
+      # permet de savoir si le concept a été calculé (1) ou non (0)
+      self.executed = 0
+      # initialise la partie "sd"
+      super(ASSD, self).__init__(nomj='?&?&?&?&')
+      
+   def __getitem__(self,key):
+      return self.etape[key]
+
+   def set_name(self, nom):
+      """Positionne le nom de self (et appelle sd_init)
+      """
+      self.nom = nom
+      # test car FORMULE n'a pas de SD associée
+      meth = getattr(super(ASSD, self), 'set_name', None)
+      if meth:
+         meth(nom)
+   
+   def reparent_sd(self):
+      """Repositionne le parent des attributs de la SD associée.
+      """
+      # test car FORMULE n'a pas de SD associée
+      meth = getattr(super(ASSD, self), 'reparent', None)
+      if meth:
+         meth(None, None)
+   
+   def get_name(self):
+      """
+          Retourne le nom de self, éventuellement en le demandant au JDC
+      """
+      if not self.nom :
+         try:
+            self.nom=self.parent.get_name(self) or self.id
+         except:
+            self.nom=""
+      if self.nom.find('sansnom') != -1 or self.nom == '':
+         self.nom = self.id
+      return self.nom
+
+   def supprime(self):
+      """ 
+          Cassage des boucles de références pour destruction du JDC 
+      """
+      self.etape = None
+      self.sd = None
+      self.jdc = None
+      self.parent = None
+
+   def accept(self,visitor):
+      """
+         Cette methode permet de parcourir l'arborescence des objets
+         en utilisant le pattern VISITEUR
+      """
+      visitor.visitASSD(self)
+
+   def __getstate__(self):
+      """
+          Cette methode permet de pickler les objets ASSD
+          Ceci est possible car on coupe les liens avec les objets
+          parent, etape et jdc qui conduiraient à pickler de nombreux 
+          objets inutiles ou non picklables.
+      """
+      d=self.__dict__.copy()
+      for key in ('parent','etape','jdc'):
+          if d.has_key(key):del d[key]
+      for key in d.keys():
+          if key[0]=='_':del d[key]
+      return d
+
+   def par_lot(self):
+      """
+           Retourne True si l'ASSD est créée en mode PAR_LOT='OUI'.
+      """
+      if not hasattr(self, 'jdc') or self.jdc == None:
+         val = None
+      else:
+         val = self.jdc.par_lot
+      return val == 'OUI'
+
+class assd(ASSD):
+   def __convert__(cls,valeur):
+      return valeur
+   __convert__=classmethod(__convert__)
index e9a69c1ddd00cc3d7f95726c54b60539d0179152..d0f9f632f5c50485abf6a0de364002be6ad8c68a 100644 (file)
@@ -1,6 +1,5 @@
-#@ MODIF N_ETAPE Noyau  DATE 07/09/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF N_ETAPE Noyau  DATE 16/05/2007   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
-# RESPONSABLE COURTOIS M.COURTOIS
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -256,6 +255,8 @@ Causes possibles :
           Methode utilisee pour que l etape self se declare etape
           courante. Utilise par les macros
       """
+      #print "set_current_step ",self.nom
+      #traceback.print_stack(limit=3,file=sys.stdout)
       cs= CONTEXT.get_current_step()
       if self.parent != cs :
          raise "L'étape courante %s devrait etre le parent de self : %s" % (cs,self)
@@ -268,6 +269,8 @@ Causes possibles :
             Methode utilisee par l'etape self qui remet son etape parent comme 
             etape courante 
       """
+      #print "reset_current_step ",self.nom
+      #traceback.print_stack(limit=3,file=sys.stdout)
       cs= CONTEXT.get_current_step()
       if self != cs :
          raise "L'étape courante %s devrait etre self : %s" % (cs,self)
@@ -408,16 +411,3 @@ Causes possibles :
        if self.sd and self.reuse == None :
            self.parent.NommerSdprod(self.sd,self.sd.nom)
 
-
-   def is_include(self):
-      """Permet savoir si on a affaire à une commande de type INCLUDE/INCLUDE_MATERIAU
-      car le comportement de ces macros est particulier.
-      """
-      return self.nom.startswith('INCLUDE')
-
-   def sd_accessible(self):
-      """Dit si on peut acceder aux "valeurs" (jeveux) de l'ASSD produite par l'étape.
-      """
-      if CONTEXT.debug: print '`- ETAPE sd_accessible :', self.nom
-      return self.parent.sd_accessible()
-
index 83d00e3b4da1a2313e5b3672cf093a1b9f79038a..5ac04bf748f40a48d1748f4d831eb65493a6b9ad 100644 (file)
@@ -1,6 +1,5 @@
-#@ MODIF N_FONCTION Noyau  DATE 10/11/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF N_FONCTION Noyau  DATE 18/12/2007   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
-# RESPONSABLE COURTOIS M.COURTOIS
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -38,11 +37,9 @@ class formule(ASSD,AsBase):
       self.expression=None
 
    def __call__(self,*val):
-      context = {}
-      # cas de INCLUDE (ou POURSUITE dans Eficas)
-      context.update(getattr(self.parent, 'contexte_fichier_init', {}))
-      # récupération des constantes locales en cas de MACRO
-      context.update(getattr(self.parent, 'macro_const_context', {}))
+      if hasattr(self.parent,'contexte_fichier_init'):
+                        context=self.parent.contexte_fichier_init
+      else            : context={}
       i=0
       for param in self.nompar : 
          context[param]=val[i]
@@ -95,7 +92,7 @@ class formule(ASSD,AsBase):
       """
       from SD.sd_fonction  import sd_formule
       from Utilitai.Utmess import UTMESS
-      if self.accessible():
+      if not self.par_lot():
         TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT', 'I':'INTERPRE' }
         sd = sd_formule(self.get_name())
         prol = sd.PROL.get()
index 9a864b43003040b3c8180469486bf9a27352ede2..d4d3222aff6766766f0f09ab7352133621231f35 100644 (file)
@@ -1,6 +1,5 @@
-#@ MODIF N_JDC Noyau  DATE 07/09/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF N_JDC Noyau  DATE 01/04/2008   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
-# RESPONSABLE COURTOIS M.COURTOIS
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -509,10 +508,3 @@ Causes possibles :
        self.index_etapes[etape] = len(self.etapes) - 1
        etape.reparent(self)
        etape.reset_jdc(self)
-
-   def sd_accessible(self):
-      """On peut acceder aux "valeurs" (jeveux) des ASSD si le JDC est en PAR_LOT="NON".
-      """
-      if CONTEXT.debug: print ' `- JDC sd_accessible : PAR_LOT =', self.par_lot
-      return self.par_lot == 'NON'
-
index 51610db0b2c15e843417d5cab645f972c3e17fbe..c2a53700ed11ff79c22b1c223c37e0857e0c83fa 100644 (file)
@@ -1,6 +1,5 @@
-#@ MODIF N_MACRO_ETAPE Noyau  DATE 10/11/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF N_MACRO_ETAPE Noyau  DATE 28/11/2007   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
-# RESPONSABLE COURTOIS M.COURTOIS
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -62,33 +61,32 @@ class MACRO_ETAPE(N_ETAPE.ETAPE):
               avec l'argument args.
 
       """
-      self.definition = oper
-      self.reuse = reuse
-      self.valeur = args
+      self.definition=oper
+      self.reuse=reuse
+      self.valeur=args
       self.nettoiargs()
-      self.parent = CONTEXT.get_current_step()
+      self.parent=CONTEXT.get_current_step()
       self.etape = self
-      self.nom = oper.nom
-      self.idracine = oper.label
-      self.appel = N_utils.callee_where()
-      self.mc_globaux = {}
-      self.g_context = {}
+      self.nom=oper.nom
+      self.idracine=oper.label
+      self.appel=N_utils.callee_where()
+      self.mc_globaux={}
+      self.g_context={}
       # Contexte courant
-      self.current_context = {}
-      self.macro_const_context = {}
-      self.index_etape_courante = 0
-      self.etapes = []
-      self.index_etapes = {}
-      self.sds = []
+      self.current_context={}
+      self.index_etape_courante=0
+      self.etapes=[]
+      self.index_etapes={}
+      self.sds=[]
       #  Dans le cas d'une macro écrite en Python, l'attribut Outputs est un 
       #  dictionnaire qui contient les concepts produits de sortie 
       #  (nom : ASSD) déclarés dans la fonction sd_prod
-      self.Outputs = {}
-      self.sd = None
-      self.actif = 1
-      self.sdprods = []
+      self.Outputs={}
+      self.sd=None
+      self.actif=1
+      self.sdprods=[]
       self.make_register()
-      self.UserError = "UserError"
+      self.UserError="UserError"
 
    def make_register(self):
       """
@@ -692,23 +690,3 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co
            concept.jdc=self.jdc
        for e in self.etapes:
            e.reparent(self)
-
-   def update_const_context(self, d):
-      """
-         Met à jour le contexte des constantes pour l'évaluation de
-         formules dans la macro.
-      """
-      # Dans le jdc, const_context est mis à jour par exec_compile
-      # Dans la macro, on n'a pas le code à compiler pour récupèrer les
-      # constantes locales à la macro. On demande donc explicitement de
-      # définir les constantes "locales".
-      self.macro_const_context.update(d)
-
-   def sd_accessible(self):
-      """On peut acceder aux "valeurs" (jeveux) des ASSD dans
-      les macro-commandes qui sont localement en PAR_LOT="NON"
-      sauf pour INCLUDE et INCLUDE_MATERIAU.
-      """
-      if CONTEXT.debug: print ' `- MACRO sd_accessible :', self.nom
-      return self.parent.sd_accessible() or not self.nom.startswith('INCLUDE')
-
index 57b0de9dec5c812485b9a19d65432b220a8a00c1..61a79a4ce4d679491a1d88898cda6123a3273147 100644 (file)
@@ -126,10 +126,6 @@ class TypeProtocol(PProtocol):
                 if type(obj)==types.StringType:return obj
             elif type(type_permis) == types.ClassType or isinstance(type_permis,type):
                 if self.is_object_from(obj,type_permis):return obj
-            elif type_permis == 'Fichier' :
-                 import os
-                 if os.path.isfile(obj):return obj
-                 else : raise ValError("%s n'est pas un fichier valide" % repr(obj))
             elif type(type_permis) == types.InstanceType or isinstance(type_permis,object):
                 try:
                     if type_permis.__convert__(obj) : return obj
@@ -1217,59 +1213,3 @@ class InstanceVal(ListVal):
           if not isinstance(valeur,self.aClass): return 0
           return 1
 
-class VerifTypeTuple(Valid,ListVal) :
-      def __init__(self,typeDesTuples):
-          self.typeDesTuples=typeDesTuples
-          Valid.__init__(self)
-          self.cata_info=""
-
-      def info(self):
-          return ": verifie les types dans un tuple"
-
-      def info_erreur_liste(self):
-          return "Les types entres  ne sont pas permis"
-
-      def default(self,valeur):
-          #if valeur in self.liste : raise ValError("%s est un doublon" % valeur)
-          return valeur
-
-      def is_list(self) :
-          return 1
-
-      def convert_item(self,valeur):
-          if len(valeur) != len(self.typeDesTuples):
-             raise ValError("%s devrait etre de type  %s " %(valeur,self.typeDesTuples))
-          for i in range(len(valeur)) :
-              ok=self.verifType(valeur[i],self.typeDesTuples[i])
-              if ok!=1 : 
-                 raise ValError("%s devrait etre de type  %s " %(valeur,self.typeDesTuples))
-          return valeur
-
-      def verif_item(self,valeur):
-          try :
-               if len(valeur) != len(self.typeDesTuples): return 0
-                for i in range(len(valeur)) :
-                    ok=self.verifType(valeur[i],self.typeDesTuples[i])
-                    if ok!=1 : return 0
-          except :
-                return 0
-          return 1
-
-      def verifType(self,valeur,type_permis):
-          if type_permis == 'R':
-             if type(valeur) in (types.IntType,types.FloatType,types.LongType):return 1
-          elif type_permis == 'I':
-             if type(valeur) in (types.IntType,types.LongType):return 1
-          elif type_permis == 'C':
-             if self.is_complexe(valeur):return 1
-          elif type_permis == 'TXM':
-             if type(valeur)==types.StringType:return 1
-          return 0
-
-      def verif(self,valeur):
-          if type(valeur) in (types.ListType,types.TupleType):
-             liste=list(valeur)
-             for val in liste:
-                if self.verif_item(val)!=1 : return 0
-             return 1
-
index a5f2fc99c430f6e1d8ca68406892b7f78f7c5e41..8d2820cae69767f64ab18e9e9d218da2df49c16f 100644 (file)
@@ -1,6 +1,5 @@
-#@ MODIF asojb Noyau  DATE 21/09/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF asojb Noyau  DATE 07/10/2008   AUTEUR PELLET J.PELLET 
 # -*- coding: iso-8859-1 -*-
-# RESPONSABLE COURTOIS M.COURTOIS
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -77,7 +76,7 @@ class AsBase(Type):
                         v( checker )
                     except :
                         mess=60*'-'+'\n'
-                        mess=mess+'Erreur SDVERI (Attention : vérification incomplète)'+'\n'
+                        mess=mess+'Erreur SDVERI_45 (Attention : vérification incomplète)'+'\n'
                         mess=mess.join(traceback.format_tb(sys.exc_traceback))
                         checker.err(self,mess)
 
@@ -119,7 +118,7 @@ class AsBase(Type):
         return "<%s(%x,%r)>" % (self.__class__.__name__, id(self), self.nomj() )
 
     def long_repr(self):
-        if not hasattr(self, "accessible") or not self.accessible():
+        if not hasattr(self, "par_lot") or self.par_lot():
            # hors Aster ou en par_lot='oui'
            return self.short_repr()
         else:
@@ -299,10 +298,6 @@ class OJBCollec(OJB):
 class AsVI(OJBVect):
     _type = "I"
 
-# -----------------------------------------------------------------------------
-class AsVS(OJBVect):
-    _type = "S"
-
 # -----------------------------------------------------------------------------
 class AsVR(OJBVect):
     _type = "R"