code: def cesupdate(
      states,
      i,
      m,
      season,
      alpha_0,
      alpha_1,
      beta_0,
      beta_1,
      y,  # kind of season
  ):
      # season
      if season in [NONE, PARTIAL, FULL]:
          e = y - states[i - 1, 0]
      else:
          e = y - states[i - m, 0]
      if season > SIMPLE:
          e -= states[i - m, 2]
  
      if season in [NONE, PARTIAL, FULL]:
          states[i, 0] = (
              states[i - 1, 0]
              - (1.0 - alpha_1) * states[i - 1, 1]
              + (alpha_0 - alpha_1) * e
          )
          states[i, 1] = (
              states[i - 1, 0]
              + (1.0 - alpha_0) * states[i - 1, 1]
              + (alpha_0 + alpha_1) * e
          )
      else:
          states[i, 0] = (
              states[i - m, 0]
              - (1.0 - alpha_1) * states[i - m, 1]
              + (alpha_0 - alpha_1) * e
          )
          states[i, 1] = (
              states[i - m, 0]
              + (1.0 - alpha_0) * states[i - m, 1]
              + (alpha_0 + alpha_1) * e
          )
  
      if season == PARTIAL:
          states[i, 2] = states[i - m, 2] + beta_0 * e
      if season == FULL:
          states[i, 2] = (
              states[i - m, 2]
              - (1 - beta_1) * states[i - m, 3]
              + (beta_0 - beta_1) * e
          )
          states[i, 3] = (
              states[i - m, 2]
              + (1 - beta_0) * states[i - m, 3]
              + (beta_0 + beta_1) * e
          )
  
imports: import math
  from typing import Tuple
  import numpy
  from numba import njit
  from statsmodels.tsa.seasonal import seasonal_decompose
  from .ets import restrict_to_bounds, results
  from .utils import CACHE, NOGIL
label_desc: Use image node_id 4 for calling a global function with example usage: cesupdate(states, i, m, season, alpha_0, alpha_1, beta_0, beta_1, y) without return types