o
    ȳg                     @   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_cloudforbid)extrabefore)modevaluesreturnc                 C   s   t |dddd}||d< t |dd}||d< t |dd}||d< t |d	d
}| dk}||d	< z
ddlm}m} W n tyE   tdw |dkrR||||d}	n|||||d}	|||||d}
|	|d< |
|d< |S )z?Validate that api key and python package exists in environment.r   JIRA_USERNAME )defaultr   JIRA_API_TOKENr   JIRA_INSTANCE_URLr   
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   lower	atlassianr   r   ImportError)clsr   r   r   r   jira_cloud_strr   r   r   r   r    r*   ^/var/www/html/chatdoc2/venv/lib/python3.10/site-packages/langchain_community/utilities/jira.pyvalidate_environment   sV   z#JiraAPIWrapper.validate_environmentissuesc                 C   s.  g }|d D ]}|d }|d d }|d d dd }|d d d	 }|d d
 d	 }z
|d d d }	W n t yA   d}	Y nw i }
|d d D ]<}d| v rf|d d }|d d }|d d d }d| v r|d d }|d d }|d d d }|||d}
qJ|||||	|||
d q|S )Nr-   keyfieldssummarycreatedr   
   prioritynamestatusassigneedisplayNameNone
issuelinksinwardIssuetypeinwardoutwardIssueoutward)r;   r.   r0   )r.   r0   r1   r6   r3   r5   related_issues)	Exceptionkeysappend)selfr-   parsedissuer.   r0   r1   r3   r5   r6   
rel_issuesrelated_issuerel_typerel_keyrel_summaryr*   r*   r+   parse_issuesQ   sD   zJiraAPIWrapper.parse_issuesprojectsc           	   	   C   sP   g }|D ]!}|d }|d }|d }|d }|d }| |||||d q|S )Nidr.   r4   projectTypeKeystyle)rM   r.   r4   r;   rO   )rB   )	rC   rL   rD   projectrM   r.   r4   r;   rO   r*   r*   r+   parse_projectsu   s   zJiraAPIWrapper.parse_projectsqueryc                 C   s6   | j |}| |}dtt| d t| }|S )NFound z	 issues:
)r   jqlrK   strlen)rC   rR   r-   parsed_issuesparsed_issues_strr*   r*   r+   search   s
   
zJiraAPIWrapper.searchc                 C   s4   | j  }| |}dtt| d t| }|S )NrS   z projects:
)r   rL   rQ   rU   rV   )rC   rL   parsed_projectsparsed_projects_strr*   r*   r+   rP      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rC   rR   r]   paramsr*   r*   r+   r_      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   r\   r*   )r]   r'   r^   r   create_pager`   ra   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   r\   functionargskwargs)r]   r'   r^   getattrr   get)rC   rR   r]   rb   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| )NrT   get_projectscreate_issuerk   rc   zGot unexpected mode )rY   rP   r_   rk   rd   
ValueError)rC   r   rR   r*   r*   r+   run   s   



zJiraAPIWrapper.run)__name__
__module____qualname____doc__r   r   __annotations__r   r   r   rU   r   r   r   boolr   model_configr	   classmethodr   r,   r   r`   rK   rQ   rY   rP   r_   rd   rk   ro   r*   r*   r*   r+   r
   
   s,   
 7$

r
   N)rs   typingr   r   r   r   langchain_core.utilsr   pydanticr   r   r	   r
   r*   r*   r*   r+   <module>   s
    