
    Ig                     V    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e	      Zy)zUtil that calls Jira.    )AnyDictListOptional)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorc                   T   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	
      Z ed      ededefd              Zdedee   fdZdee   dee   fdZde
de
fdZde
fdZde
de
fdZde
de
fdZde
de
fdZde
de
de
fdZy)JiraAPIWrapperzWrapper for Jira API.Njira
confluencejira_usernamejira_api_tokenjira_instance_url
jira_cloudforbid)extrabefore)modevaluesreturnc                 h   t        |ddd      }||d<   t        |dd      }||d<   t        |dd      }||d<   t        |d	d
      }|j                         dk(  }||d	<   	 ddlm}m} |dk(  r ||||      }	n |||||      }	 |||||      }
|	|d<   |
|d<   |S # t
        $ r t        d      w xY w)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   s              _/var/www/html/answerous/venv/lib/python3.12/site-packages/langchain_community/utilities/jira.pyvalidate_environmentz#JiraAPIWrapper.validate_environment   s"    -O_b
 #0-$&6
 $2 0')<
 '8"#-flLQ#))+v5
)|	2 B%$ D %&' 	D  !"#	

 v)|=  	L 	s   B B1issuesc                    g }|d   D ]  }|d   }|d   d   }|d   d   dd }|d   d   d	   }|d   d
   d	   }	 |d   d   d   }	i }
|d   d   D ]b  }d|j                         v r|d   d   }|d   d   }|d   d   d   }d|j                         v r|d   d   }|d   d   }|d   d   d   }d}
d |j                  ||||	|||
d        |S # t         $ r d}	Y w xY w)Nr/   keyfieldssummarycreatedr   
   prioritynamestatusassigneedisplayNameNone
issuelinksinwardIssuetypeinwardoutwardIssueoutward)r>   r1   r3   )r1   r3   r4   r9   r6   r8   related_issues)	Exceptionkeysappend)selfr/   parsedissuer1   r3   r4   r6   r8   r9   
rel_issuesrelated_issuerel_typerel_keyrel_summarys                  r-   parse_issueszJiraAPIWrapper.parse_issuesQ   s~   H% 	E,CHoi0GHoi026GXz26:H8_X.v6F" ?:6}E J!&x!> 	X M$6$6$88,V4X>H+M:5AG"/">x"H"SK!]%7%7%99,V4Y?H+N;EBG"/"?"I)"TK&.w;W
	X MM&& ( ($&0
+	@ 1  "!"s   CCCprojectsc           	      x    g }|D ]2  }|d   }|d   }|d   }|d   }|d   }|j                  |||||d       4 |S )Nidr1   r7   projectTypeKeystyle)rQ   r1   r7   r>   rS   )rE   )	rF   rO   rG   projectrQ   r1   r7   r>   rS   s	            r-   parse_projectszJiraAPIWrapper.parse_projectsu   sg     	GB%.C6?D+,DG$EMM#tTER	     queryc                     | j                   j                  |      }| j                  |      }dt        t	        |            z   dz   t        |      z   }|S )NFound z	 issues:
)r   jqlrN   strlen)rF   rW   r/   parsed_issuesparsed_issues_strs        r-   searchzJiraAPIWrapper.search   sR    u%))&1s3}-..=M@RR 	 ! rV   c                     | j                   j                         }| j                  |      }dt        t	        |            z   dz   t        |      z   }|S )NrY   z projects:
)r   rO   rU   r[   r\   )rF   rO   parsed_projectsparsed_projects_strs       r-   rT   zJiraAPIWrapper.project   sR    99%%'--h7s3/00>ACDXX 	 #"rV   c                     	 dd l }|j                  |      }| j                  j	                  t        |            S # t        $ r t        d      w xY w)Nr   @json is not installed. Please install it with `pip install json`)r2   )jsonr*   loadsr   issue_createdictrF   rW   re   paramss       r-   rg   zJiraAPIWrapper.issue_create   sW    	
 E"yy%%T&\%::  	R 		   < Ac                     	 dd l }|j                  |      } | j                  j                  di t        |      S # t        $ r t        d      w xY w)Nr   rd    )re   r*   rf   r   create_pagerh   ri   s       r-   page_createzJiraAPIWrapper.page_create   sY    	
 E"*t**:T&\::  	R 	rk   c                     	 dd l }|j                  |      }t        | j                  |d         } ||j                  dg       i |j                  di       S # t        $ r t        d      w xY w)Nr   rd   functionargskwargs)re   r*   rf   getattrr   get)rF   rW   re   rj   jira_functions        r-   otherzJiraAPIWrapper.other   sv    	
 E"		6*+=>fjj4Q

8R8PQQ  	R 	s   A A-r   c                     |dk(  r| j                  |      S |dk(  r| j                         S |dk(  r| j                  |      S |dk(  r| j                  |      S |dk(  r| j	                  |      S t        d|       )NrZ   get_projectscreate_issuerw   rn   zGot unexpected mode )r_   rT   rg   rw   ro   
ValueError)rF   r   rW   s      r-   runzJiraAPIWrapper.run   s    5=;;u%%^#<<>!^#$$U++W_::e$$]"##E**3D6:;;rV   )__name__
__module____qualname____doc__r   r   __annotations__r   r   r   r[   r   r   r   boolr	   model_configr
   classmethodr   r.   r   rh   rN   rU   r_   rT   rg   ro   rw   r|   rm   rV   r-   r   r   
   s7   D#J#'M8C='$(NHSM('+x}+!%J%L (#5$ 53 5  $5n"4 "DJ "HtDz d4j !C !C !# #;# ;# ;; ; ;	R3 	R3 	R< <C <C <rV   r   N)r   typingr   r   r   r   langchain_core.utilsr   pydanticr   r	   r
   r   rm   rV   r-   <module>r      s%     , , 5 ; ;s<Y s<rV   