code: def get_metadata(self) -> tuple:
      try:
          data = self._read_page(0)
      except ReachedEndOfFile:
          raise ValueError("Metadata not set yet")
      end_root_node_page = PAGE_REFERENCE_BYTES
      root_node_page = int.from_bytes(
          data[0:end_root_node_page], ENDIAN
      )
      end_page_size = end_root_node_page + OTHERS_BYTES
      page_size = int.from_bytes(
          data[end_root_node_page:end_page_size], ENDIAN
      )
      end_order = end_page_size + OTHERS_BYTES
      order = int.from_bytes(data[end_page_size:end_order], ENDIAN)
      end_key_size = end_order + OTHERS_BYTES
      key_size = int.from_bytes(data[end_order:end_key_size], ENDIAN)
      end_value_size = end_key_size + OTHERS_BYTES
      value_size = int.from_bytes(
          data[end_key_size:end_value_size], ENDIAN
      )
      end_freelist_start_page = end_value_size + PAGE_REFERENCE_BYTES
      self._freelist_start_page = int.from_bytes(
          data[end_value_size:end_freelist_start_page], ENDIAN
      )
      self._tree_conf = TreeConf(
          page_size,
          order,
          key_size,
          value_size,
          self._tree_conf.serializer,
      )
      self._root_node_page = root_node_page
      return root_node_page, self._tree_conf
  
imports: import enum
  import io
  from logging import getLogger
  import os
  import platform
  from typing import Union, Tuple, Optional
  import cachetools
  import rwlock
  from .node import Node, FreelistNode
  from .const import ENDIAN, PAGE_REFERENCE_BYTES, OTHERS_BYTES, TreeConf, FRAME_TYPE_BYTES
label_desc: Use image node_id 12 for calling the FileMemory obj's underlying member method code with example usage: obj.get_metadata() and returns: root_node_page,  self