o
    Zh                     @   sP   d Z ddlmZmZmZmZ ddlmZ ddlm	Z	m
Z
mZ G dd de	ZdS )zUtil that calls Jira.    )AnyDictListOptional)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorc                   @   s0  e Zd ZU dZdZeed< dZeed< dZe	e
 ed< dZe	e
 ed< dZe	e
 ed< dZe	e ed< ed	d
ZeddededefddZdedee fddZdee dee fddZde
de
fddZde
fddZde
de
fddZde
de
fddZde
de
fd d!Zd"e
de
de
fd#d$ZdS )%JiraAPIWrapperzWrapper for Jira API.Njira
confluencejira_usernamejira_api_tokenjira_instance_url
jira_cloudZforbid)extrabefore)modevaluesreturnc                 C   s   t |dddd}||d< t |dd}||d< t |dd}||d< d	|v r2|d	 d
ur2t|d	 |d	< t |d	d}| dk}||d	< z
ddlm}m} W n tyW   tdw |dkrd||||d}	n|||||d}	|||||d}
|	|d< |
|d< |S )z?Validate that api key and python package exists in environment.r   ZJIRA_USERNAME )defaultr   ZJIRA_API_TOKENr   ZJIRA_INSTANCE_URLr   NZ
JIRA_CLOUDtruer   )
ConfluenceJiraz`atlassian-python-api is not installed. Please install it with `pip install atlassian-python-api`)urltokencloud)r   usernamepasswordr   r   r   )r   strlowerZ	atlassianr   r   ImportError)clsr   r   r   r   Zjira_cloud_strr   r   r   r   r    r$   Y/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/utilities/jira.pyvalidate_environment   sZ   z#JiraAPIWrapper.validate_environmentissuesc                 C   s@  g }|d D ]}|d }|d d }|d d dd }d|d v r+|d d d	 }nd }|d d
 d	 }z
|d d d }	W n t yJ   d}	Y nw i }
|d d D ]<}d| v ro|d d }|d d }|d d d }d| v r|d d }|d d }|d d d }|||d}
qS|||||	|||
d q|S )Nr'   keyfieldssummarycreatedr   
   prioritynamestatusassigneeZdisplayNameNoneZ
issuelinksZinwardIssuetypeZinwardZoutwardIssueZoutward)r2   r(   r*   )r(   r*   r+   r0   r-   r/   Zrelated_issues)	Exceptionkeysappend)selfr'   parsedissuer(   r*   r+   r-   r/   r0   Z
rel_issuesZrelated_issueZrel_typeZrel_keyZrel_summaryr$   r$   r%   parse_issuesT   sH   zJiraAPIWrapper.parse_issuesprojectsc           	   	   C   sT   g }|D ]#}|d }|d }|d }|d }| dd }||||||d q|S )Nidr(   r.   ZprojectTypeKeystyle)r;   r(   r.   r2   r<   )getr5   )	r6   r:   r7   projectr;   r(   r.   r2   r<   r$   r$   r%   parse_projects{   s   zJiraAPIWrapper.parse_projectsqueryc                 C   s6   | j |}| |}dtt| d t| }|S )NFound z	 issues:
)r   jqlr9   r    len)r6   r@   r'   Zparsed_issuesZparsed_issues_strr$   r$   r%   search   s
   
zJiraAPIWrapper.searchc                 C   s4   | j  }| |}dtt| d t| }|S )NrA   z projects:
)r   r:   r?   r    rC   )r6   r:   Zparsed_projectsZparsed_projects_strr$   r$   r%   r>      s
   

zJiraAPIWrapper.projectc                 C   s@   zdd l }W n ty   tdw ||}| jjt|dS )Nr   @json is not installed. Please install it with `pip install json`)r)   )jsonr"   loadsr   issue_createdictr6   r@   rF   paramsr$   r$   r%   rH      s   
zJiraAPIWrapper.issue_createc                 C   sD   zdd l }W n ty   tdw ||}| jjdi t|S )Nr   rE   r$   )rF   r"   rG   r   create_pagerI   rJ   r$   r$   r%   page_create   s   
zJiraAPIWrapper.page_createc                 C   s\   zdd l }W n ty   tdw ||}t| j|d }||dg i |di S )Nr   rE   functionargskwargs)rF   r"   rG   getattrr   r=   )r6   r@   rF   rK   Zjira_functionr$   r$   r%   other   s   
zJiraAPIWrapper.otherr   c                 C   sf   |dkr	|  |S |dkr|  S |dkr| |S |dkr#| |S |dkr,| |S td| )NrB   Zget_projectsZcreate_issuerR   rL   zGot unexpected mode )rD   r>   rH   rR   rM   
ValueError)r6   r   r@   r$   r$   r%   run   s   



zJiraAPIWrapper.run)__name__
__module____qualname____doc__r   r   __annotations__r   r   r   r    r   r   r   boolr   Zmodel_configr	   classmethodr   r&   r   rI   r9   r?   rD   r>   rH   rM   rR   rT   r$   r$   r$   r%   r
   
   s,   
 :'

r
   N)rX   typingr   r   r   r   Zlangchain_core.utilsr   Zpydanticr   r   r	   r
   r$   r$   r$   r%   <module>   s
    