code: def increment_name(name: str, start_marker: str = " (",
                     end_marker: str = ")") -> str:
      
      if start_marker == '':
          raise ValueError("start_marker can not be the empty string.")
      a = name
      start = len(a)-a[::-1].find(start_marker[::-1])
  
      if (a[len(a)-len(end_marker):len(a)] == end_marker
              and start < (len(a)-len(end_marker))
              and a[start-len(start_marker):start] == start_marker
              and a[start:len(a)-len(end_marker)].isdigit()):
  
          old_int = int(a[start:len(a)-len(end_marker)])
          new_int = old_int+1
          new_name = a[:start]+str(new_int)+end_marker
      else:
          new_name = a+start_marker+'1'+end_marker
      return new_name
docs: Increment the name where the incremental part is given by parameters.
  
      Parameters
      ----------
      name : str, nbformat.notebooknode.NotebookNode
          Name
      start_marker : str
          The marker used before the incremental
      end_marker : str
          The marker after the incrementa
  
      Returns
      -------
      str
          Incremented name.
  
      >>> increment_name('abc')
      'abc (1)'
      >>> increment_name('abc(1)')
      'abc(1) (1)'
      >>> increment_name('abc (123)')
      'abc (124)'
      >>> increment_name('abc-1',start_marker='-',end_marker='')
      'abc-2'
      >>> increment_name('abc[2]',start_marker='[',end_marker=']')
      'abc[3]'
      >>> increment_name('abc1',start_marker='',end_marker='')
      Traceback (most recent call last):
          ...
      ValueError: start_marker can not be the empty string.