File: retrieve_lore_thread.py

package info (click to toggle)
b4 0.14.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,604 kB
  • sloc: python: 10,228; sh: 38; makefile: 14
file content (36 lines) | stat: -rw-r--r-- 1,096 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import sys

from instructor import OpenAISchema
from pydantic import Field

# This is needed for now while the minimization bits aren't released
sys.path.insert(0, '/home/user/work/git/korg/b4/src')
import b4
import b4.mbox


class Function(OpenAISchema):
    """
    Accepts a message-id, retrieves a mailing list discussion thread from lore.kernel.org, and returns a mailbox with all messages in the tread.
    """

    message_id: str = Field(
        ...,
        example='20240228-foo-bar-baz@localhost',
        descriptions='Message-ID of the thread to retrieve from lore.kernel.org',
    )

    class Config:
        title = "retrieve_lore_thread"

    @classmethod
    def execute(cls, message_id: str) -> str:
        b4._setup_main_config()
        msgs = b4.get_pi_thread_by_msgid(message_id, with_thread=True)
        if not msgs:
            return f'No messages matching this message-id: {message_id}'
        minmsgs = b4.mbox.minimize_thread(msgs)
        out = ''
        for minmsg in minmsgs:
            out += minmsg.as_string(policy=b4.emlpolicy) + '\n'
        return out