/usr/share/pyshared/Noyau/N_CONVERT.py is in eficas 6.4.0-1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | #@ MODIF N_CONVERT Noyau DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS
# -*- coding: iso-8859-1 -*-
# RESPONSABLE COURTOIS M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2007 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.
# ======================================================================
"""
Module de conversion des valeurs saisies par l'utilisateur après vérification.
"""
from N_types import is_int, is_float, is_enum
def has_int_value(real):
"""Est-ce que 'real' a une valeur entière ?
"""
return abs(int(real) - real) < 1.e-12
class Conversion:
"""Conversion de type.
"""
def __init__(self, name, typ):
self.name = name
self.typ = typ
def convert(self, obj):
"""Filtre liste
"""
in_as_enum = is_enum(obj)
if not in_as_enum:
obj = (obj,)
result = []
for o in obj:
result.append(self.function(o))
if not in_as_enum:
return result[0]
else:
# ne marche pas avec MACR_RECAL qui attend une liste et non un tuple
return tuple(result)
def function(self, o):
raise NotImplementedError, 'cette classe doit être dérivée'
class TypeConversion(Conversion):
"""Conversion de type
"""
def __init__(self, typ):
Conversion.__init__(self, 'type', typ)
class IntConversion(TypeConversion):
"""Conversion en entier
"""
def __init__(self):
TypeConversion.__init__(self, 'I')
def function(self, o):
if is_float(o) and has_int_value(o):
o = int(o)
return o
class FloatConversion(TypeConversion):
"""Conversion de type
"""
def __init__(self):
TypeConversion.__init__(self, 'R')
def function(self, o):
if is_float(o):
o = float(o)
return o
_convertI = IntConversion()
_convertR = FloatConversion()
def ConversionFactory(name, typ):
if name == 'type':
if 'I' in typ:
return _convertI
elif 'R' in typ:
return _convertR
return None
|