@@ -115,8 +115,9 @@ def capply_script(script_name, *operands, **parameters):
115115 opscopy = opscopy [1 :]
116116 else :
117117 opscopy = list ()
118- if True in [isinstance (op , classes .cens ) for op in opscopy ]:
119- raise Climaf_Driver_Error ("Cannot yet have an ensemble as operand except as first one" )
118+ # Next watch dog disabled for tests !!!!!
119+ #if True in [isinstance(op, classes.cens) for op in opscopy]:
120+ # raise Climaf_Driver_Error("Cannot yet have an ensemble as operand except as first one")
120121 #
121122 # If first operand is an ensemble, and the script is not ensemble-capable,
122123 # result is the ensemble of applying the script ot each member of first operand
@@ -311,7 +312,7 @@ def ceval_for_ctree(cobject, userflags=None, format="MaskedArray", deep=None, de
311312 clogger .debug ("Evaluating compound object : " + repr (cobject ))
312313 #################################################################
313314 if deep is not None :
314- cache .cdrop (cobject . crs )
315+ cache .cdrop (cobject )
315316 #
316317 clogger .debug ("Searching cache for exact object : " + repr (cobject ))
317318 #################################################################
@@ -422,7 +423,7 @@ def ceval_for_scriptChild(cobject, userflags=None, format="MaskedArray", deep=No
422423 clogger .debug ("Evaluating compound object : " + repr (cobject ))
423424 #################################################################
424425 if deep is not None :
425- cache .cdrop (cobject . crs )
426+ cache .cdrop (cobject )
426427 #
427428 clogger .debug ("Searching cache for exact object : " + repr (cobject ))
428429 #################################################################
@@ -507,7 +508,7 @@ def ceval_for_cpage(cobject, userflags=None, format="MaskedArray", deep=None, de
507508 clogger .debug ("Evaluating compound object : " + repr (cobject ))
508509 #################################################################
509510 if deep is not None :
510- cache .cdrop (cobject . crs )
511+ cache .cdrop (cobject )
511512 #
512513 clogger .debug ("Searching cache for exact object : " + repr (cobject ))
513514 #################################################################
@@ -550,7 +551,7 @@ def ceval_for_cpage_pdf(cobject, userflags=None, format="MaskedArray", deep=None
550551 clogger .debug ("Evaluating compound object : " + repr (cobject ))
551552 #################################################################
552553 if deep is not None :
553- cache .cdrop (cobject . crs )
554+ cache .cdrop (cobject )
554555 #
555556 clogger .debug ("Searching cache for exact object : " + repr (cobject ))
556557 #################################################################
@@ -594,7 +595,7 @@ def ceval_for_cens(cobject, userflags=None, format="MaskedArray", deep=None, der
594595 clogger .debug ("Evaluating compound object : " + repr (cobject ))
595596 #################################################################
596597 if deep is not None :
597- cache .cdrop (cobject . crs )
598+ cache .cdrop (cobject )
598599 #
599600 clogger .debug ("Searching cache for exact object : " + repr (cobject ))
600601 #################################################################
@@ -1210,7 +1211,9 @@ def cfile(object, target=None, ln=None, hard=None, deep=None):
12101211 target_dir = os .path .dirname (target )
12111212 if isinstance (object , climaf .classes .cens ):
12121213 raise Climaf_Driver_Error ("Cannot yet copy or link result files for an ensemble" )
1213- if result is not None :
1214+ if result is None :
1215+ raise Climaf_Driver_Error ("Issue when evaluating %s" % object )
1216+ else :
12141217 if ln or hard :
12151218 if ln and hard :
12161219 Climaf_Driver_Error ("flags ln and hard are mutually exclusive" )
@@ -1337,7 +1340,10 @@ def get_fig_sizes(figfile):
13371340 # On some sites, getoutput first lines have warning messages
13381341 # Furthermore, in case of missing file, last line could be an error -> only consider lines beginning with figfile
13391342 output_figsize = getoutput (" " .join (args_figsize )).split ("\n " )
1340- output_figsize = [line for line in output_figsize if line .startswith (figfile )][- 1 ]
1343+ with_figfile = [l for l in output_figsize if l .startswith (figfile )]
1344+ if len (with_figfile ) == 0 :
1345+ raise ValueError ("No relevant line for fig size in command (%s) output %s" % (args_figsize ,output_figsize ))
1346+ output_figsize = with_figfile [- 1 ]
13411347 # comm_figsize = subprocess.Popen(args_figsize, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
13421348 # output_figsize = comm_figsize.stdout.read()
13431349 figsize = str (output_figsize ).split (" " ).pop (2 )
@@ -1446,17 +1452,24 @@ def cfilePage(cobj, deep, recurse_list=None):
14461452 "-pointsize" , "%d" % cobj .pt , "-annotate" , annotate , '"%s"' % cobj .title ])
14471453
14481454 args .append (out_fig )
1449- clogger .debug ("Compositing figures : %s" % repr (args ))
14501455
1456+ command = " " .join (args )
1457+ clogger .debug ("Compositing figures : %s" % command )
1458+
14511459 try :
14521460 with open ("tmp.err" , "w" ) as fic :
1453- out = subprocess .check_output (" " . join ( args ) , shell = True , stderr = fic )
1461+ out = subprocess .check_output (command , shell = True , stderr = fic )
14541462 except subprocess .CalledProcessError :
14551463 with open ("tmp.err" ) as fic :
14561464 err = fic .read ()
1457- raise Climaf_Driver_Error ("Compositing failed : %s" % err )
1458- finally :
1459- os .remove ("tmp.err" )
1465+ raise Climaf_Driver_Error ("Compositing failed : %s for %s" % (err ,command ))
1466+
1467+ # There are cases where subprocess doesn't raise an Error, while compositing failed
1468+ if not os .path .exists (out_fig ) :
1469+ with open ("tmp.err" ) as fic :
1470+ err = fic .readlines ()
1471+ raise Climaf_Driver_Error ("Compositing failed %s for %s" % (err ,command ))
1472+ os .remove ("tmp.err" )
14601473
14611474 if cache .register (out_fig , cobj .crs ):
14621475 clogger .debug ("Registering file %s for cpage %s" % (out_fig , cobj .crs ))
0 commit comments