code: def _push_table(
      self, table, name: str, tag: str, parties: typing.List[PartyMeta]
  ):
      _parties = [Party(role=p[0], party_id=p[1]) for p in parties]
      party_topic_infos = (
          self._get_party_topic_infos_by_name_and_partitions(
              _parties, name, partitions=table.num_partitions
          )
      )
      send_func = self._get_partition_send_func(
          name=name,
          tag=tag,
          partitions=table.num_partitions,
          party_topic_infos=party_topic_infos,
          src_party_id=self.local_party[1],
          src_role=self.local_party[0],
          mq=self._mq,
          max_message_size=self._max_message_size,
          conf=self._conf,
      )
      # noinspection PyProtectedMember
      table.mapPartitionsWithIndexNoSerdes(
          send_func,
          output_key_serdes_type=0,
          output_value_serdes_type=0,
          output_partitioner_type=0,
      )
  
imports: import json
  import logging
  import sys
  import typing
  from typing import List
  from fate.arch.computing.api import KVTableContext
  from fate.arch.federation.api import Federation, PartyMeta, TableMeta
  from ._datastream import Datastream
  from ._parties import Party
label_desc: Use image node_id 11 for calling the MessageQueueBasedFederation obj's underlying member method code with example usage: obj._push_table(table, name, tag, parties) without return types