extract_thread_messages.py 795 B

12345678910111213141516171819202122232425
  1. from collections.abc import Sequence
  2. from constants import UUID_NIL
  3. from models import Message
  4. def extract_thread_messages(messages: Sequence[Message]):
  5. thread_messages: list[Message] = []
  6. next_message = None
  7. for message in messages:
  8. if not message.parent_message_id:
  9. # If the message is regenerated and does not have a parent message, it is the start of a new thread
  10. thread_messages.append(message)
  11. break
  12. if not next_message:
  13. thread_messages.append(message)
  14. next_message = message.parent_message_id
  15. else:
  16. if next_message in {message.id, UUID_NIL}:
  17. thread_messages.append(message)
  18. next_message = message.parent_message_id
  19. return thread_messages