code: def split_node(
      node: LeafNode,
      split_conditions: Tuple[SplitCondition, SplitCondition],
  ) -> DecisionNode:
      """
      Converts a `LeafNode` into an internal `DecisionNode` by applying the split condition
      The left node contains all values for the splitting variable less than the splitting value
      """
      left_split = node.split + split_conditions[0]
      split_conditions[1].carry_n_obsv = (
          node.data.X.n_obsv - left_split.data.X.n_obsv
      )
      split_conditions[1].carry_y_sum = (
          node.data.y.summed_y() - left_split.data.y.summed_y()
      )
  
      right_split = node.split + split_conditions[1]
  
      return DecisionNode(
          node.split,
          LeafNode(left_split, depth=node.depth + 1),
          LeafNode(right_split, depth=node.depth + 1),
          depth=node.depth,
      )
  
imports: from typing import Union, Tuple
  from .data import Data
  from .split import Split, SplitCondition
label_desc: Use image node_id 1 for calling a global function with example usage: split_node(node, split_conditions) and returns: DecisionNode