class_docstr: Manages the partitioning related controls.
  
  Handles data generation and informs model about changes in partition.
class_docstr_tok: ["Manages","the","partitioning","related","controls",".","Handles","data","generation","and","informs","model","about","changes","in","partition","."]
docstr: Activities to be performed on end of training.
  
  The manager persists the data (splits the entity partitions into individual embeddings).
code: def on_complete(self):
      """Activities to be performed on end of training.
  
      The manager persists the data (splits the entity partitions into individual embeddings).
      """
      for i in range(self.partitioner_k - 1, -1, -1):
          with shelve.open(self.partitioner.files[i]) as bucket:
              with shelve.open(
                  self.ent_map_fname, writeback=True
              ) as ent_partition:
                  # get the bucket embeddings
                  # split and store separately
                  for key, val in zip(
                      bucket["indexes"], ent_partition[str(i)][1]
                  ):
                      ent_partition[str(key)] = val
                  if i != 0:
                      del ent_partition[str(i)]
      with shelve.open(
          self.rel_map_fname, writeback=True
      ) as rel_partition:
          # get the bucket embeddings
          # split and store separately
          for key in range(rel_partition["0"][1].shape[0] - 1, -1, -1):
              rel_partition[str(key)] = rel_partition["0"][1][key]
  
imports: import abc
  import glob
  import logging
  import os
  import shelve
  import shutil
  import tempfile
  from datetime import datetime
  import numpy
  import tensorflow
  from .graph_partitioner import PARTITION_ALGO_REGISTRY, AbstractGraphPartitioner
label_desc: Use image node_id 5 for calling the BucketPartitionDataManager obj's underlying member method code with example usage: obj.on_complete() without return types