
    Ng                     ^    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dS )zUtil that calls Jira.    )AnyDictListOptional)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validatorc                      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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                    t          |ddd          }||d<   t          |dd          }||d<   t          |dd          }||d<   t          |d	d
          }|                                dk    }||d	<   	 ddlm}m} n# t
          $ r t          d          w xY w|dk    r ||||          }	n |||||          }	 |||||          }
|	|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   s              ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/jira.pyvalidate_environmentz#JiraAPIWrapper.validate_environment   s    -O_b
 
 
 #0-$&6
 
 $2 0')<
 
 '8"#-flLQQ#))++v5
)|	222222222 	 	 	L  	 B4%$   DD 4%&' 	  D  Z!"#	
 
 

 v)|s   4A= =Bissuesc                    g }|d         D ]A}|d         }|d         d         }|d         d         dd         }|d         d         d	         }|d         d
         d	         }	 |d         d         d         }	n# t           $ r d}	Y nw xY wi }
|d         d         D ]}d|                                v r0|d         d         }|d         d         }|d         d         d         }d|                                v r0|d         d         }|d         d         }|d         d         d         }|||d}
|                    ||||	|||
d           C|S )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 	X M$6$6$8$888,V4X>H+M:5AG"/">x"H"SK!]%7%7%9%999,V4Y?H+N;EBG"/"?"I)"TK&.w;WW

MM&& ( ($&0 
 
 
 
 s   #A88BBprojectsc           	          g }|D ]E}|d         }|d         }|d         }|d         }|d         }|                     |||||d           F|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   sy     	 	GB%.C6?D+,DG$EMM#tTERR        queryc                     | 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   s_    u%%))&11s3}--...=M@R@RR 	 ! rV   c                     | 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   s_    9%%''--h77s3//000>ACDXDXX 	 #"rV   c                     	 dd l }n# t          $ r t          d          w xY w|                    |          }| j                            t          |                    S )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   st    	KKKK 	 	 	R  	 E""y%%T&\\%:::    !c                     	 dd l }n# t          $ r t          d          w xY w|                    |          } | j        j        di t          |          S )Nr   rd    )re   r*   rf   r   create_pagerh   ri   s       r-   page_createzJiraAPIWrapper.page_create   sv    	KKKK 	 	 	R  	 E""*t*::T&\\:::rk   c                    	 dd l }n# t          $ r t          d          w xY w|                    |          }t          | j        |d                   } ||                    dg           i |                    di           S )Nr   rd   functionargskwargs)re   r*   rf   getattrr   get)rF   rW   re   rj   jira_functions        r-   otherzJiraAPIWrapper.other   s    	KKKK 	 	 	R  	 E""	6*+=>>}fjj44Q

8R8P8PQQQrk   r   c                 2   |dk    r|                      |          S |dk    r|                                 S |dk    r|                     |          S |dk    r|                     |          S |dk    r|                     |          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***:D::;;;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   
   s        D#J#'M8C='''$(NHSM((('+x}+++!%J%%%:  L _(###5$ 53 5 5 5 [ $#5n"4 "DJ " " " "HtDz d4j    !C !C ! ! ! !# # # # #;# ;# ; ; ; ;; ; ; ; ; ;	R3 	R3 	R 	R 	R 	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 5 5 5 5 5 ; ; ; ; ; ; ; ; ; ;s< s< s< s< s<Y s< s< s< s< s<rV   