From 557b38c7bb5fe78b8478c1fa64ed11e5042c4e52 Mon Sep 17 00:00:00 2001
From: Jean-Matthieu Etancelin <jean-matthieu.etancelin@univ-reims.fr>
Date: Thu, 9 Oct 2014 18:37:29 +0200
Subject: [PATCH] azodhazoduh

---
 HySoP/hysop/tools/profiler.py | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/HySoP/hysop/tools/profiler.py b/HySoP/hysop/tools/profiler.py
index 332db961e..9f6cbc04f 100644
--- a/HySoP/hysop/tools/profiler.py
+++ b/HySoP/hysop/tools/profiler.py
@@ -58,6 +58,13 @@ class Profiler(object):
             self.table.append([])
         self._elems = {}
         self._obj = obj
+        try:
+            self._obj_name = obj.name
+        except AttributeError:
+            if isinstance(obj, str):
+                self._obj_name = obj
+            else:
+                self._obj_name = 'unknown'
         self._l = 1
         self.all_times = None
 
@@ -68,7 +75,7 @@ class Profiler(object):
         try:
             self._elems[other.fname] = other
         except AttributeError:
-            self._elems[other._obj.name] = other
+            self._elems[other._obj_name] = other
         return self
 
     def __setitem__(self, key, value):
@@ -87,7 +94,7 @@ class Profiler(object):
             s = ""
             if self._l == 1:
                 s += "\n[{0}]".format(main_rank)
-            s += '- ' + self._obj.name + ":"
+            s += '- ' + self._obj_name + ":"
             for k in sorted(self.summary.keys()):
                 if len(str(self.summary[k])) > 0:
                     s += "\n[{0}]".format(main_rank)
@@ -121,7 +128,10 @@ class Profiler(object):
     def summarize(self):
         from parmepy.fields.continuous import Field
         self.summary = {}
-        self._obj.get_profiling_info()
+        try:
+            self._obj.get_profiling_info()
+        except AttributeError:
+            pass
         i = 0
         for k in self._elems.keys():
             try:
@@ -138,19 +148,19 @@ class Profiler(object):
         for k in sorted(self._elems.keys()):
             if isinstance(self._elems[k], FProfiler):
                 self.table[self._comm_rank].append(
-                    (self._obj.name + '.' + k,
+                    (self._obj_name + '.' + k,
                      self._elems[k].t, self._elems[k].n))
         for k in sorted(self._elems.keys()):
             if isinstance(self._elems[k], Profiler) and \
                not isinstance(self._elems[k]._obj, Field):
                 for e in self._elems[k].table[self._comm_rank]:
                     self.table[self._comm_rank].append(
-                        (self._obj.name + '.' + e[0], e[1], e[2]))
+                        (self._obj_name + '.' + e[0], e[1], e[2]))
             if isinstance(self._elems[k], Profiler) and \
                isinstance(self._elems[k]._obj, Field):
                 for e in self._elems[k].table[self._comm_rank]:
                     self.table[self._comm_rank].append(
-                        (self._obj.name + '.' + e[0], e[1], e[2]))
+                        (self._obj_name + '.' + e[0], e[1], e[2]))
 
         if self._l == 1 and self.all_times is None:
             nb = len(self.table[self._comm_rank])
-- 
GitLab