code: def _jitter(self, durations, event, jitter_level, seed=None):
          
          np.random.seed(seed)
  
          if jitter_level <= 0:
              raise ValueError("The jitter level is less than zero, please select a jitter value greater than 0")
  
          event_times = durations[event != 0].copy()
          n = event_times.shape[0]
  
          # Determining extent to jitter event times up or down
          shift = np.random.uniform(low=-1, high=1, size=n) * jitter_level
          event_times += shift
          durations_jitter = event_times.align(durations)[0].fillna(durations)
  
          # Recursive call if event times are still tied after jitter
          if self._check_for_duplicates(durations=durations_jitter, events=event):
              return self._jitter(durations=durations_jitter, event=event, jitter_level=jitter_level, seed=seed)
          return durations_jitter
docs: Determine extent to jitter tied event times. Automatically called by fit if tied event times are detected