code: def _pull(
      ctx: "Context",
      federation: "Federation",
      name: str,
      namespace: NS,
      parties: List[PartyMeta],
  ):
      tag = namespace.federation_tag
      timer = federation_get_timer(
          name=name,
          full_name=name,
          tag=tag,
          local=federation.local_party,
          parties=parties,
      )
      buffer_list = federation.pull_bytes(
          name=name,
          tag=tag,
          parties=parties,
      )
      values = []
      for party, buffers in zip(parties, buffer_list):
          values.append(
              TableRemotePersistentUnpickler.pull(
                  buffers, ctx, federation, name, tag, party
              )
          )
      timer.done()
      return values
  
imports: import logging
  import typing
  from typing import List, Tuple, TypeVar, Union
  from fate.arch.federation.api import PartyMeta, TableRemotePersistentPickler, TableRemotePersistentUnpickler
  from fate.arch.trace import federation_get_timer, federation_remote_timer
  from ._namespace import NS
label_desc: Use image node_id 2 for calling a global function with example usage: _pull(ctx, federation, name, namespace, parties) and returns: values