code: def propose_value(self, key, value, assume_leader=False):
          
          assert isinstance(key, UUID)
          paxos_aggregate = PaxosAggregate.start(
              originator_id=key,
              quorum_size=self.quorum_size,
              network_uid=self.name
          )
          msg = paxos_aggregate.propose_value(value, assume_leader=assume_leader)
          while msg:
              msg = paxos_aggregate.receive_message(msg)
          new_events = paxos_aggregate.__batch_pending_events__()
          self.record_process_event(ProcessEvent(new_events))
          self.repository.take_snapshot(paxos_aggregate.id)
          self.publish_prompt()
          return paxos_aggregate
docs: Starts new Paxos aggregate and proposes a value for a key.
  
          Decorated with retry in case of notification log conflict
          or operational error.