class_docstr: A data structure that contains DHT peers bucketed according to their distance to node_id.
  Follows Kademlia routing table as described in https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf
  
  :param node_id: node id used to measure distance
  :param bucket_size: parameter $k$ from Kademlia paper Section 2.2
  :param depth_modulo: parameter $b$ from Kademlia paper Section 2.2.
  :note: you can find a more detailed description of parameters in DHTNode, see node.py
class_docstr_tok: ["A","data","structure","that","contains","DHT","peers","bucketed","according","to","their","distance","to","node_id",".","Follows","Kademlia","routing","table","as","described","in","https",":","\/\/pdos.csail.mit.edu\/~petar\/papers\/maymounkov-kademlia-lncs.pdf",":","param","node_id",":","node","id","used","to","measure","distance",":","param","bucket_size",":","parameter","$","k","$","from","Kademlia","paper","Section","2.2",":","param","depth_modulo",":","parameter","$","b","$","from","Kademlia","paper","Section","2.2.",":","note",":","you","can","find","a","more","detailed","description","of","parameters","in","DHTNode",",","see","node.py"]
docstr: Split bucket range in two equal parts and reassign nodes to the appropriate half
docstr_tok: ["Split","bucket","range","in","two","equal","parts","and","reassign","nodes","to","the","appropriate","half"]
code: def split_bucket(self, index: int) -> None:
      """Split bucket range in two equal parts and reassign nodes to the appropriate half"""
      first, second = self.buckets[index].split()
      self.buckets[index] = first
      self.buckets.insert(index + 1, second)
  
imports: from __future__ import annotations
  import hashlib
  import heapq
  import os
  import random
  from collections.abc import Iterable
  from itertools import chain
  from typing import Any, Dict, List, Optional, Sequence, Set, Tuple, Union
  from hivemind.p2p import PeerID
  from hivemind.utils import MSGPackSerializer, get_dht_time
label_desc: Use image node_id 4 for calling the RoutingTable obj's underlying member method code with example usage: obj.split_bucket(index) without return types