493 def insertEmptySteps(self, empty_step_name, n_new_steps, start_position):
494
495
496
497 if len(self.steps) == 0 :
498 log.error("I can't insert empty steps because the chain doesn't have any steps yet!")
499
500 if len(self.steps) < start_position :
501 log.error("I can't insert empty steps at step %d because the chain doesn't have that many steps!", start_position)
502
503
504 chain_steps_pre_split = self.steps[:start_position]
505 chain_steps_post_split = self.steps[start_position:]
506
507 next_step_name = ''
508 prev_step_name = ''
509
510 prev_chain_dict = []
511 if start_position == 0:
512 next_step_name = chain_steps_post_split[0].name
513 if re.search('^Step[0-9]_',next_step_name):
514 next_step_name = next_step_name[6:]
515 elif re.search('^Step[0-9]{2}_', next_step_name):
516 next_step_name = next_step_name[7:]
517
518 prev_step_name = 'empty_'+str(len(self.L1decisions))+'L1in'
519 prev_chain_dict = chain_steps_post_split[0].stepDicts
520 else:
521 if len(chain_steps_post_split) == 0:
522 log.error("Adding empty steps to the end of a chain (%s)- why would you do this?",self.name)
523 else:
524 prev_step_name = chain_steps_pre_split[-1].name
525 next_step_name = chain_steps_post_split[0].name
526 prev_chain_dict = chain_steps_pre_split[-1].stepDicts
527
528
529 steps_to_add = []
530 for stepID in range(1,n_new_steps+1):
531 new_step_name = prev_step_name+'_'+empty_step_name+'%d_'%stepID+next_step_name
532
533 log.debug("Adding empty step %s", new_step_name)
534 steps_to_add += [ChainStep(new_step_name, chainDicts=prev_chain_dict, isEmpty=True)]
535
536 self.steps = chain_steps_pre_split + steps_to_add + chain_steps_post_split
537
538 return
539