# -*- coding: utf-8 -*-
#
-# Copyright (C) 2008-2019 EDF R&D
+# Copyright (C) 2008-2021 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
import sys
import platform
import locale
+import logging
# ==============================================================================
class PlatformInfo(object):
if hasattr(platform, 'linux_distribution'):
__msg += "\n%s%30s : %s" %(__prefix,
"platform.linux_distribution",str(platform.linux_distribution()))
- else:
+ elif hasattr(platform, 'dist'):
__msg += "\n%s%30s : %s" %(__prefix,"platform.dist",str(platform.dist()))
elif sys.platform.startswith('darwin'):
if hasattr(platform, 'mac_ver'):
if (platform.mac_ver()[0].split('.')[1] == key):
__msg += "\n%s%30s : %s" %(__prefix,
"platform.mac_ver",str(platform.mac_ver()[0]+"(" + macosx_dict[key]+")"))
- else:
+ elif hasattr(platform, 'dist'):
__msg += "\n%s%30s : %s" %(__prefix,"platform.dist",str(platform.dist()))
elif os.name == 'nt':
__msg += "\n%s%30s : %s" %(__prefix,"platform.win32_ver",platform.win32_ver()[1])
__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
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
raise ValueError("Cannot convert \"%s\" as a D/M/Y H:M date"%d)
return __number
+def checkFileNameConformity( __filename, __warnInsteadOfPrint=True ):
+ if sys.platform.startswith("win") and len(__filename) > 256:
+ __conform = False
+ __msg = (" For some shared or older file systems on Windows, a file "+\
+ "name longer than 256 characters can lead to access problems."+\
+ "\n The name of the file in question is the following:"+\
+ "\n %s")%(__filename,)
+ if __warnInsteadOfPrint: logging.warning(__msg)
+ else: print(__msg)
+ else:
+ __conform = True
+ #
+ return __conform
+
+def checkFileNameImportability( __filename, __warnInsteadOfPrint=True ):
+ if str(__filename).count(".") > 1:
+ __conform = False
+ __msg = (" The file name contains %i point(s) before the extension "+\
+ "separator, which can potentially lead to problems when "+\
+ "importing this file into Python, as it can then be recognized "+\
+ "as a sub-module (generating a \"ModuleNotFoundError\"). If it "+\
+ "is intentional, make sure that there is no module with the "+\
+ "same name as the part before the first point, and that there is "+\
+ "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 is None: pass
+ elif __warnInsteadOfPrint: logging.warning(__msg)
+ else: print(__msg)
+ else:
+ __conform = True
+ #
+ return __conform
+
# ==============================================================================
class PathManagement(object):
"""
# ==============================================================================
if __name__ == "__main__":
- print('\n AUTODIAGNOSTIC \n')
+ print('\n AUTODIAGNOSTIC\n')