From: Jean-Philippe ARGAUD Date: Tue, 4 Apr 2023 06:38:43 +0000 (+0200) Subject: Documentation and code quality update X-Git-Tag: V9_11_0a2~1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=c0e7f28c0570da2721decfd76c2dee5084cce96b;p=modules%2Fadao.git Documentation and code quality update --- diff --git a/doc/en/ref_algorithm_DerivativeFreeOptimization.rst b/doc/en/ref_algorithm_DerivativeFreeOptimization.rst index 192f3c4..d41e506 100644 --- a/doc/en/ref_algorithm_DerivativeFreeOptimization.rst +++ b/doc/en/ref_algorithm_DerivativeFreeOptimization.rst @@ -22,6 +22,7 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: DerivativeFreeOptimization +.. index:: single: Global optimization .. _section_ref_algorithm_DerivativeFreeOptimization: Calculation algorithm "*DerivativeFreeOptimization*" diff --git a/doc/en/ref_algorithm_DifferentialEvolution.rst b/doc/en/ref_algorithm_DifferentialEvolution.rst index 4ada6fb..49d0aae 100644 --- a/doc/en/ref_algorithm_DifferentialEvolution.rst +++ b/doc/en/ref_algorithm_DifferentialEvolution.rst @@ -22,6 +22,7 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: DifferentialEvolution +.. index:: single: Global optimization .. _section_ref_algorithm_DifferentialEvolution: Calculation algorithm "*DifferentialEvolution*" diff --git a/doc/en/ref_algorithm_ParticleSwarmOptimization.rst b/doc/en/ref_algorithm_ParticleSwarmOptimization.rst index 04e12a5..83074b4 100644 --- a/doc/en/ref_algorithm_ParticleSwarmOptimization.rst +++ b/doc/en/ref_algorithm_ParticleSwarmOptimization.rst @@ -22,6 +22,7 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: ParticleSwarmOptimization +.. index:: single: Global optimization .. _section_ref_algorithm_ParticleSwarmOptimization: Calculation algorithm "*ParticleSwarmOptimization*" diff --git a/doc/en/ref_algorithm_TabuSearch.rst b/doc/en/ref_algorithm_TabuSearch.rst index 183ab09..99762fb 100644 --- a/doc/en/ref_algorithm_TabuSearch.rst +++ b/doc/en/ref_algorithm_TabuSearch.rst @@ -22,6 +22,7 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: TabuSearch +.. index:: single: Global optimization .. _section_ref_algorithm_TabuSearch: Calculation algorithm "*TabuSearch*" diff --git a/doc/en/ref_observers_requirements.rst b/doc/en/ref_observers_requirements.rst index 880fe89..4cdf140 100644 --- a/doc/en/ref_observers_requirements.rst +++ b/doc/en/ref_observers_requirements.rst @@ -129,10 +129,10 @@ modified function can be used in a "*String*" or "*Script*" input. .. note:: Some of the "observers" allow to create figures using the built-in Python - module Gnuplot.py [Gnuplot.py]_, which is an interface to control and send - arguments to the classic graphical plotting utility Gnuplot [Gnuplot]_. - Available under most environments, Gnuplot is independent and must be - correctly preinstalled. Gnuplot.py is here updated to support Python 3. + module Gnuplot.py [Gnuplot.py]_, here updated to support Python 3. This + module is an interface to control and to send arguments to the outstanding + classic utility for graphic plotting Gnuplot [Gnuplot]_. Available for most + environments, Gnuplot is independent and must be correctly preinstalled. Hereinafter we give the identifier and the contents of all the available "*observer*" models. diff --git a/doc/en/reference.rst b/doc/en/reference.rst index 3b414bc..12fd3cc 100644 --- a/doc/en/reference.rst +++ b/doc/en/reference.rst @@ -89,11 +89,12 @@ This section describes algorithmic choices to use data assimilation methods, optimization methods or methods with reduction, available in ADAO, detailing their characteristics and their options. -Some examples on these commands usage are available in the section -:ref:`section_tutorials_in_salome`, in the section -:ref:`section_tutorials_in_python` and in the sample files installed with ADAO. -The mathematical concepts and notations used are explained in the section -:ref:`section_theory`. +Some examples on these commands usage are available in the section of +:ref:`section_tutorials_in_salome`, in the section of +:ref:`section_tutorials_in_python`, in the section of +:ref:`section_docu_examples`, and in the sample files installed with ADAO. The +mathematical concepts and notations used are explained in the general section +providing :ref:`section_theory`. .. toctree:: :maxdepth: 1 @@ -125,11 +126,12 @@ The mathematical concepts and notations used are explained in the section This section describes the checking algorithms available in ADAO, detailing their usage characteristics and their options. -Some examples on these commands usage are available in the section -:ref:`section_tutorials_in_salome`, in the section -:ref:`section_tutorials_in_python` and in the sample files installed with ADAO. -The mathematical concepts and notations used are explained in the section -:ref:`section_theory`. +Some examples on these commands usage are available in the section of +:ref:`section_tutorials_in_salome`, in the section of +:ref:`section_tutorials_in_python`, in the section of +:ref:`section_docu_examples`, and in the sample files installed with ADAO. The +mathematical concepts and notations used are explained in the general section +providing :ref:`section_theory`. .. toctree:: :maxdepth: 1 @@ -158,9 +160,9 @@ This section describes the dedicated task or study oriented cases available in ADAO, detailing their usage characteristics and their options. These tasks use algorithms from data assimilation methods, optimization methods -or methods with reduction. We refer to the :ref:`section_theory` section and -the :ref:`section_reference_assimilation` section for the underlying -algorithmic details. +or methods with reduction. We refer to the general section providing +:ref:`section_theory` section and to the :ref:`section_reference_assimilation` +section for the underlying algorithmic details. .. toctree:: :maxdepth: 1 diff --git a/doc/en/theory.rst b/doc/en/theory.rst index 8644cf9..e2044b9 100644 --- a/doc/en/theory.rst +++ b/doc/en/theory.rst @@ -508,6 +508,8 @@ Going further in the state estimation by optimization methods .. index:: single: state estimation .. index:: single: optimization methods +.. index:: single: Local optimization +.. index:: single: Global optimization .. index:: single: DerivativeFreeOptimization .. index:: single: ParticleSwarmOptimization .. index:: single: DifferentialEvolution diff --git a/doc/fr/ref_algorithm_DerivativeFreeOptimization.rst b/doc/fr/ref_algorithm_DerivativeFreeOptimization.rst index c0a9ab5..3f7d1c0 100644 --- a/doc/fr/ref_algorithm_DerivativeFreeOptimization.rst +++ b/doc/fr/ref_algorithm_DerivativeFreeOptimization.rst @@ -22,6 +22,8 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: DerivativeFreeOptimization +.. index:: single: Optimisation globale +.. index:: single: Globale (optimisation) .. _section_ref_algorithm_DerivativeFreeOptimization: Algorithme de calcul "*DerivativeFreeOptimization*" diff --git a/doc/fr/ref_algorithm_DifferentialEvolution.rst b/doc/fr/ref_algorithm_DifferentialEvolution.rst index a542bbc..83692a1 100644 --- a/doc/fr/ref_algorithm_DifferentialEvolution.rst +++ b/doc/fr/ref_algorithm_DifferentialEvolution.rst @@ -22,6 +22,8 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: DifferentialEvolution +.. index:: single: Optimisation globale +.. index:: single: Globale (optimisation) .. _section_ref_algorithm_DifferentialEvolution: Algorithme de calcul "*DifferentialEvolution*" diff --git a/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst b/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst index 590ea3d..a2a66b2 100644 --- a/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst +++ b/doc/fr/ref_algorithm_ParticleSwarmOptimization.rst @@ -22,6 +22,8 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: ParticleSwarmOptimization +.. index:: single: Optimisation globale +.. index:: single: Globale (optimisation) .. _section_ref_algorithm_ParticleSwarmOptimization: Algorithme de calcul "*ParticleSwarmOptimization*" diff --git a/doc/fr/ref_algorithm_TabuSearch.rst b/doc/fr/ref_algorithm_TabuSearch.rst index d96e825..711bfb9 100644 --- a/doc/fr/ref_algorithm_TabuSearch.rst +++ b/doc/fr/ref_algorithm_TabuSearch.rst @@ -22,6 +22,8 @@ Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D .. index:: single: TabuSearch +.. index:: single: Optimisation globale +.. index:: single: Globale (optimisation) .. _section_ref_algorithm_TabuSearch: Algorithme de calcul "*TabuSearch*" diff --git a/doc/fr/ref_observers_requirements.rst b/doc/fr/ref_observers_requirements.rst index 6a21487..c07c862 100644 --- a/doc/fr/ref_observers_requirements.rst +++ b/doc/fr/ref_observers_requirements.rst @@ -139,11 +139,12 @@ utilisée dans une entrée de type "*String*" ou de type "*Script*". .. note:: Une partie des "*observer*" permet de créer des figures en utilisant le - module Python intégré Gnuplot.py [Gnuplot.py]_, qui est une interface de - contrôle et transmission d'arguments à l'utilitaire classique de tracé - graphique Gnuplot [Gnuplot]_. Disponible sous la grande majorité des + module Python intégré Gnuplot.py [Gnuplot.py]_, ici mis à jour pour + supporter Python 3. Ce module est une interface de contrôle et de + transmission d'arguments au remarquable utilitaire classique de tracé + graphique Gnuplot [Gnuplot]_. Disponible pour la grande majorité des environnements, ce dernier est indépendant et doit être correctement - préinstallé. Gnuplot.py est ici mis à jour pour supporter Python 3 + préinstallé. On donne ci-après l'identifiant et le contenu de tous les modèles "*observer*" disponibles. diff --git a/doc/fr/reference.rst b/doc/fr/reference.rst index e8be997..b5df59c 100644 --- a/doc/fr/reference.rst +++ b/doc/fr/reference.rst @@ -91,11 +91,12 @@ d'assimilation de données, des méthodes d'optimisation ou des méthodes avec réduction, disponibles dans ADAO, en détaillant leurs caractéristiques et leurs options. -Des exemples sur l'usage de ces commandes sont disponibles dans la section -:ref:`section_tutorials_in_salome`, dans la section -:ref:`section_tutorials_in_python` et dans les fichiers d'exemple installés -avec ADAO. Les notions et notations mathématiques utilisées sont expliquées -dans la section :ref:`section_theory`. +Des exemples sur l'usage de ces commandes sont disponibles dans la section des +:ref:`section_tutorials_in_salome`, dans la section des +:ref:`section_tutorials_in_python`, dans la section des +:ref:`section_docu_examples`, et dans les fichiers d'exemple installés avec +ADAO. Les notions et notations mathématiques utilisées sont expliquées dans la +section générale donnant :ref:`section_theory`. .. toctree:: :maxdepth: 1 @@ -127,11 +128,12 @@ dans la section :ref:`section_theory`. Cette section décrit les algorithmes de vérification disponibles dans ADAO, détaillant leurs caractéristiques d'utilisation et leurs options. -Des exemples sur l'usage de ces commandes sont disponibles dans la section -:ref:`section_tutorials_in_salome`, dans la section -:ref:`section_tutorials_in_python` et dans les fichiers d'exemple installés -avec ADAO. Les notions et notations mathématiques utilisées sont expliquées -dans la section :ref:`section_theory`. +Des exemples sur l'usage de ces commandes sont disponibles dans la section des +:ref:`section_tutorials_in_salome`, dans la section des +:ref:`section_tutorials_in_python`, dans la section des +:ref:`section_docu_examples`, et dans les fichiers d'exemple installés avec +ADAO. Les notions et notations mathématiques utilisées sont expliquées dans la +section générale donnant :ref:`section_theory`. .. toctree:: :maxdepth: 1 @@ -162,7 +164,7 @@ options. Ces tâches utilisent des algorithmes provenant de méthodes d'assimilation de données, de méthodes d'optimisation ou de méthodes avec réduction. On renvoie à -la section :ref:`section_theory` et à celle des +la section générale donnant :ref:`section_theory` et à celle des :ref:`section_reference_assimilation` pour les détails algorithmiques sous-jacents. diff --git a/doc/fr/theory.rst b/doc/fr/theory.rst index b75961a..71448c2 100644 --- a/doc/fr/theory.rst +++ b/doc/fr/theory.rst @@ -542,6 +542,10 @@ Approfondir l'estimation d'état par des méthodes d'optimisation .. index:: single: estimation d'état .. index:: single: méthodes d'optimisation +.. index:: single: Optimisation locale +.. index:: single: Locale (optimisation) +.. index:: single: Optimisation globale +.. index:: single: Globale (optimisation) .. index:: single: DerivativeFreeOptimization .. index:: single: ParticleSwarmOptimization .. index:: single: DifferentialEvolution diff --git a/src/daComposant/daCore/Aidsm.py b/src/daComposant/daCore/Aidsm.py index 256c38a..57885e0 100644 --- a/src/daComposant/daCore/Aidsm.py +++ b/src/daComposant/daCore/Aidsm.py @@ -42,6 +42,11 @@ import logging # ============================================================================== class Aidsm(object): """ ADAO Internal Data Structure Model """ + __slots__ = ( + "__name", "__objname", "__directory", "__case", "__parent", + "__adaoObject", "__StoredInputs", "__PostAnalysis", "__Concepts", + ) + # def __init__(self, name = "", addViewers=None): self.__name = str(name) self.__objname = None diff --git a/src/daComposant/daCore/AssimilationStudy.py b/src/daComposant/daCore/AssimilationStudy.py index 8120baf..3ac26ad 100644 --- a/src/daComposant/daCore/AssimilationStudy.py +++ b/src/daComposant/daCore/AssimilationStudy.py @@ -33,6 +33,8 @@ class AssimilationStudy(_Aidsm): """ Generic ADAO TUI builder """ + __slots__ = () + # def __init__(self, name = ""): _Aidsm.__init__(self, name) diff --git a/src/daComposant/daCore/BasicObjects.py b/src/daComposant/daCore/BasicObjects.py index 6c8666d..2b20ae6 100644 --- a/src/daComposant/daCore/BasicObjects.py +++ b/src/daComposant/daCore/BasicObjects.py @@ -42,6 +42,11 @@ class CacheManager(object): """ Classe générale de gestion d'un cache de calculs """ + __slots__ = ( + "__tolerBP", "__lengthOR", "__initlnOR", "__seenNames", "__enabled", + "__listOPCV", + ) + # def __init__(self, toleranceInRedundancy = 1.e-18, lengthOfRedundancy = -1, @@ -116,6 +121,12 @@ class Operator(object): """ Classe générale d'interface de type opérateur simple """ + __slots__ = ( + "__name", "__NbCallsAsMatrix", "__NbCallsAsMethod", + "__NbCallsOfCached", "__reduceM", "__avoidRC", "__inputAsMF", + "__mpEnabled", "__extraArgs", "__Method", "__Matrix", "__Type", + ) + # NbCallsAsMatrix = 0 NbCallsAsMethod = 0 NbCallsOfCached = 0 @@ -416,6 +427,10 @@ class FullOperator(object): Classe générale d'interface de type opérateur complet (Direct, Linéaire Tangent, Adjoint) """ + __slots__ = ( + "__name", "__check", "__extraArgs", "__FO", "__T", + ) + # def __init__(self, name = "GenericFullOperator", asMatrix = None, @@ -657,6 +672,13 @@ class Algorithm(object): Une classe élémentaire d'algorithme doit implémenter la méthode "run". """ + __slots__ = ( + "_name", "_parameters", "__internal_state", "__required_parameters", + "_m", "__variable_names_not_public", "__canonical_parameter_name", + "__canonical_stored_name", "__replace_by_the_new_name", + "StoredVariables", + ) + # def __init__(self, name): """ L'initialisation présente permet de fabriquer des variables de stockage @@ -1173,6 +1195,10 @@ class PartialAlgorithm(object): action avancée comme la vérification . Pour les méthodes reprises ici, le fonctionnement est identique à celles de la classe "Algorithm". """ + __slots__ = ( + "_name", "_parameters", "StoredVariables", "__canonical_stored_name", + ) + # def __init__(self, name): self._name = str( name ) self._parameters = {"StoreSupplementaryCalculations":[]} @@ -1211,6 +1237,12 @@ class AlgorithmAndParameters(object): """ Classe générale d'interface d'action pour l'algorithme et ses paramètres """ + __slots__ = ( + "__name", "__algorithm", "__algorithmFile", "__algorithmName", "__A", + "__P", "__Xb", "__Y", "__U", "__HO", "__EM", "__CM", "__B", "__R", + "__Q", "__variable_names_not_public", + ) + # def __init__(self, name = "GenericAlgorithm", asAlgorithm = None, @@ -1614,6 +1646,8 @@ class RegulationAndParameters(object): """ Classe générale d'interface d'action pour la régulation et ses paramètres """ + __slots__ = ("__name", "__P") + # def __init__(self, name = "GenericRegulation", asAlgorithm = None, @@ -1653,6 +1687,8 @@ class DataObserver(object): """ Classe générale d'interface de type observer """ + __slots__ = ("__name", "__V", "__O", "__I") + # def __init__(self, name = "GenericObserver", onVariable = None, @@ -1716,6 +1752,8 @@ class UserScript(object): """ Classe générale d'interface de type texte de script utilisateur """ + __slots__ = ("__name", "__F") + # def __init__(self, name = "GenericUserScript", asTemplate = None, @@ -1750,6 +1788,8 @@ class ExternalParameters(object): """ Classe générale d'interface pour le stockage des paramètres externes """ + __slots__ = ("__name", "__P") + # def __init__(self, name = "GenericExternalParameters", asDict = None, @@ -1799,6 +1839,11 @@ class State(object): """ Classe générale d'interface de type état """ + __slots__ = ( + "__name", "__check", "__V", "__T", "__is_vector", "__is_series", + "shape", "size", + ) + # def __init__(self, name = "GenericVector", asVector = None, @@ -1931,6 +1976,11 @@ class Covariance(object): """ Classe générale d'interface de type covariance """ + __slots__ = ( + "__name", "__check", "__C", "__is_scalar", "__is_vector", "__is_matrix", + "__is_object", "shape", "size", + ) + # def __init__(self, name = "GenericCovariance", asCovariance = None, @@ -2368,6 +2418,8 @@ class Observer2Func(object): """ Création d'une fonction d'observateur a partir de son texte """ + __slots__ = ("__corps") + # def __init__(self, corps=""): self.__corps = corps def func(self,var,info): @@ -2382,6 +2434,11 @@ class CaseLogger(object): """ Conservation des commandes de création d'un cas """ + __slots__ = ( + "__name", "__objname", "__logSerie", "__switchoff", "__viewers", + "__loaders", + ) + # def __init__(self, __name="", __objname="case", __addViewers=None, __addLoaders=None): self.__name = str(__name) self.__objname = str(__objname) diff --git a/src/daComposant/daCore/ExtendedLogging.py b/src/daComposant/daCore/ExtendedLogging.py index e09b785..afa9e1f 100644 --- a/src/daComposant/daCore/ExtendedLogging.py +++ b/src/daComposant/daCore/ExtendedLogging.py @@ -87,6 +87,8 @@ class ExtendedLogging(object): Logger général pour disposer conjointement de la sortie standard et de la sortie sur fichier """ + __slots__ = ("__logfile") + # def __init__(self, level=logging.WARNING): """ Initialise un logging à la console pour TOUS les niveaux de messages. diff --git a/src/daComposant/daCore/Interfaces.py b/src/daComposant/daCore/Interfaces.py index e428417..f4ff030 100644 --- a/src/daComposant/daCore/Interfaces.py +++ b/src/daComposant/daCore/Interfaces.py @@ -44,7 +44,8 @@ class GenericCaseViewer(object): """ __slots__ = ( "_name", "_objname", "_lineSerie", "_switchoff", "_content", - "_numobservers", "_object", "_missing") + "_numobservers", "_object", "_missing", + ) # def __init__(self, __name="", __objname="case", __content=None, __object=None): "Initialisation et enregistrement de l'entete" diff --git a/src/daComposant/daCore/NumericObjects.py b/src/daComposant/daCore/NumericObjects.py index 87b6895..4b674e4 100644 --- a/src/daComposant/daCore/NumericObjects.py +++ b/src/daComposant/daCore/NumericObjects.py @@ -58,6 +58,14 @@ class FDApproximation(object): "dX" qui sera multiplié par "increment" (donc en %), et on effectue de DF centrées si le booléen "centeredDF" est vrai. """ + __slots__ = ( + "__name", "__extraArgs", "__mpEnabled", "__mpWorkers", "__mfEnabled", + "__rmEnabled", "__avoidRC", "__tolerBP", "__centeredDF", "__lengthRJ", + "__listJPCP", "__listJPCI", "__listJPCR", "__listJPPN", "__listJPIN", + "__userOperator", "__userFunction", "__increment", "__pool", "__dX", + "__userFunction__name", "__userFunction__modl", "__userFunction__path", + ) + # def __init__(self, name = "FDApproximation", Function = None, diff --git a/src/daComposant/daCore/Persistence.py b/src/daComposant/daCore/Persistence.py index 2f86b94..ff5709f 100644 --- a/src/daComposant/daCore/Persistence.py +++ b/src/daComposant/daCore/Persistence.py @@ -42,6 +42,11 @@ class Persistence(object): Classe générale de persistance définissant les accesseurs nécessaires (Template) """ + __slots__ = ( + "__name", "__unit", "__basetype", "__values", "__tags", "__dynamic", + "__g", "__title", "__ltitle", "__pause", "__dataobservers", + ) + # def __init__(self, name="", unit="", basetype=str): """ name : nom courant @@ -786,6 +791,8 @@ class SchedulerTrigger(object): """ Classe générale d'interface de type Scheduler/Trigger """ + __slots__ = () + # def __init__(self, simplifiedCombo = None, startTime = 0, @@ -807,6 +814,8 @@ class OneScalar(Persistence): ou des matrices comme dans les classes suivantes, mais c'est déconseillé pour conserver une signification claire des noms. """ + __slots__ = () + # def __init__(self, name="", unit="", basetype = float): Persistence.__init__(self, name, unit, basetype) @@ -814,6 +823,8 @@ class OneIndex(Persistence): """ Classe définissant le stockage d'une valeur unique entière (int) par pas. """ + __slots__ = () + # def __init__(self, name="", unit="", basetype = int): Persistence.__init__(self, name, unit, basetype) @@ -822,6 +833,8 @@ class OneVector(Persistence): Classe de stockage d'une liste de valeurs numériques homogènes par pas. Ne pas utiliser cette classe pour des données hétérogènes, mais "OneList". """ + __slots__ = () + # def __init__(self, name="", unit="", basetype = numpy.ravel): Persistence.__init__(self, name, unit, basetype) @@ -829,6 +842,8 @@ class OneMatrix(Persistence): """ Classe de stockage d'une matrice de valeurs homogènes par pas. """ + __slots__ = () + # def __init__(self, name="", unit="", basetype = numpy.matrix): Persistence.__init__(self, name, unit, basetype) @@ -838,6 +853,8 @@ class OneList(Persistence): pas utiliser cette classe pour des données numériques homogènes, mais "OneVector". """ + __slots__ = () + # def __init__(self, name="", unit="", basetype = list): Persistence.__init__(self, name, unit, basetype) @@ -853,6 +870,8 @@ class OneNoType(Persistence): résultats inattendus. Cette classe n'est donc à utiliser qu'à bon escient volontairement, et pas du tout par défaut. """ + __slots__ = () + # def __init__(self, name="", unit="", basetype = NoType): Persistence.__init__(self, name, unit, basetype) @@ -865,6 +884,8 @@ class CompositePersistence(object): Des objets par défaut sont prévus, et des objets supplémentaires peuvent être ajoutés. """ + __slots__ = ("__name", "__StoredObjects") + # def __init__(self, name="", defaults=True): """ name : nom courant