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