mirror of
https://github.com/run-llama/llama-hub.git
synced 2025-08-17 13:11:37 +00:00
65 lines
2.1 KiB
Python
65 lines
2.1 KiB
Python
from typing import List
|
|
|
|
from llama_index.readers.base import BaseReader
|
|
from llama_index.readers.schema.base import Document
|
|
|
|
class JiraReader(BaseReader):
|
|
"""Jira reader. Reads data from Jira issues from passwed query.
|
|
|
|
Args:
|
|
email (str): Jira email.
|
|
api_token (str): Jira API token.
|
|
server_url (str): Jira server url.
|
|
"""
|
|
|
|
def __init__(self, email: str, api_token: str, server_url: str) -> None:
|
|
|
|
from jira import JIRA
|
|
|
|
self.jira = JIRA(
|
|
basic_auth=(email, api_token),
|
|
server=f'https://{server_url}'
|
|
)
|
|
|
|
def load_data(self, query: str) -> List[Document]:
|
|
relevant_issues = self.jira.search_issues(query)
|
|
|
|
issues = []
|
|
|
|
for issue in relevant_issues:
|
|
assignee = ''
|
|
reporter = ''
|
|
epic = ''
|
|
|
|
if issue.fields.assignee:
|
|
assignee = issue.fields.assignee.displayName
|
|
|
|
if issue.fields.reporter:
|
|
reporter = issue.fields.reporter.displayName
|
|
|
|
if issue.raw['fields']['customfield_10009']['showField']:
|
|
epic = issue.raw['fields']['customfield_10009']['data']['summary']
|
|
|
|
issues.append(
|
|
Document(
|
|
issue.fields.summary + " " + issue.fields.description,
|
|
extra_info={
|
|
'id': issue.id,
|
|
'title': issue.fields.summary,
|
|
'url': issue.permalink(),
|
|
'created_at': issue.fields.created,
|
|
'updated_at': issue.fields.updated,
|
|
'labels': issue.fields.labels,
|
|
'status': issue.fields.status.name,
|
|
'assignee': assignee,
|
|
'reporter': reporter,
|
|
'project': issue.fields.project.name,
|
|
'issue_type': issue.fields.issuetype.name,
|
|
'priority': issue.fields.priority.name,
|
|
'epic': epic
|
|
}
|
|
)
|
|
)
|
|
|
|
return issues
|