X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FdaComposant%2FdaCore%2FPlatformInfo.py;h=f23b2a217004ab7f0c73a2149de3db5b449975e1;hb=ba52f8705ad24049d6fa5957da1cbe00d7bcb4d6;hp=f08b80a57659ec7b0cbb9007425ef8563e96b5ef;hpb=d15b67bed58051bd93e3ae300bbbf355720cd428;p=modules%2Fadao.git diff --git a/src/daComposant/daCore/PlatformInfo.py b/src/daComposant/daCore/PlatformInfo.py index f08b80a..f23b2a2 100644 --- a/src/daComposant/daCore/PlatformInfo.py +++ b/src/daComposant/daCore/PlatformInfo.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2008-2020 EDF R&D +# Copyright (C) 2008-2022 EDF R&D # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -21,7 +21,7 @@ # Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D """ - Informations sur le code et la plateforme, et mise à jour des chemins + Informations sur le code et la plateforme, et mise à jour des chemins. La classe "PlatformInfo" permet de récupérer les informations générales sur le code et la plateforme sous forme de strings, ou d'afficher directement @@ -49,6 +49,7 @@ import sys import platform import locale import logging +import re # ============================================================================== class PlatformInfo(object): @@ -116,6 +117,12 @@ class PlatformInfo(object): __msg += "\n%s%30s : %s" %(__prefix,"sys.getfilesystemencoding",str(sys.getfilesystemencoding())) __msg += "\n%s%30s : %s" %(__prefix,"locale.getdefaultlocale",str(locale.getdefaultlocale())) __msg += "\n" + __msg += "\n%s%30s : %s" %(__prefix,"os.cpu_count",os.cpu_count()) + if hasattr(os, 'sched_getaffinity'): + __msg += "\n%s%30s : %s" %(__prefix,"len(os.sched_getaffinity(0))",len(os.sched_getaffinity(0))) + else: + __msg += "\n%s%30s : %s" %(__prefix,"len(os.sched_getaffinity(0))","Unsupported on this platform") + __msg += "\n" __msg += "\n%s%30s : %s" %(__prefix,"platform.node",platform.node()) __msg += "\n%s%30s : %s" %(__prefix,"os.path.expanduser",os.path.expanduser('~')) return __msg @@ -253,9 +260,12 @@ def uniq( __sequence ): def isIterable( __sequence, __check = False, __header = "" ): """ - Vérification que l'argument est un itérable + Vérification que l'argument est un itérable interne. + Remarque : pour permettre le test correct en MultiFonctions, + - Ne pas accepter comme itérable un "numpy.ndarray" + - Ne pas accepter comme itérable avec hasattr(__sequence, "__iter__") """ - if isinstance( __sequence, (list, tuple, map) ): + if isinstance( __sequence, (list, tuple, map, dict) ): __isOk = True elif type(__sequence).__name__ in ('generator','range'): __isOk = True @@ -284,6 +294,34 @@ def date2int( __date, __lang="FR" ): raise ValueError("Cannot convert \"%s\" as a D/M/Y H:M date"%d) return __number +def strvect2liststr( __strvect ): + """ + Fonction de secours, conversion d'une chaîne de caractères de + représentation de vecteur en une liste de chaînes de caractères de + représentation de flottants + """ + for s in ("array", "matrix", "list", "tuple", "[", "]", "(", ")"): + __strvect = __strvect.replace(s,"") # Rien + for s in (",", ";"): + __strvect = __strvect.replace(s," ") # Blanc + return __strvect.split() + +def strmatrix2liststr( __strvect ): + """ + Fonction de secours, conversion d'une chaîne de caractères de + représentation de matrice en une liste de chaînes de caractères de + représentation de flottants + """ + for s in ("array", "matrix", "list", "tuple", "[", "(", "'", '"'): + __strvect = __strvect.replace(s,"") # Rien + __strvect = __strvect.replace(","," ") # Blanc + for s in ("]", ")"): + __strvect = __strvect.replace(s,";") # "]" et ")" par ";" + __strvect = re.sub(';\s*;',';',__strvect) + __strvect = __strvect.rstrip(";") # Après ^ et avant v + __strmat = [l.split() for l in __strvect.split(";")] + return __strmat + def checkFileNameConformity( __filename, __warnInsteadOfPrint=True ): if sys.platform.startswith("win") and len(__filename) > 256: __conform = False @@ -310,8 +348,9 @@ def checkFileNameImportability( __filename, __warnInsteadOfPrint=True ): "no \"__init__.py\" file in the same directory."+\ "\n The name of the file in question is the following:"+\ "\n %s")%(int(str(__filename).count(".")-1), __filename) - if __warnInsteadOfPrint: logging.warning(__msg) - else: print(__msg) + if __warnInsteadOfPrint is None: pass + elif __warnInsteadOfPrint: logging.warning(__msg) + else: print(__msg) else: __conform = True #