
    7|h|                     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              a/var/www/html/test/engine/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   v r|d   d   d	   }n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U8_, ?:6v>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"	F 1  "!"s   CC)(C)projectsc           	          g }|D ]?  }|d   }|d   }|d   }|d   }|j                  dd       }|j                  |||||d       A |S )Nidr1   r7   projectTypeKeystyle)rQ   r1   r7   r>   rS   )getrE   )	rF   rO   rG   projectrQ   r1   r7   r>   rS   s	            r-   parse_projectszJiraAPIWrapper.parse_projectsx   sm     	GB%.C6?D+,DKK.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   rX   r/   parsed_issuesparsed_issues_strs        r-   searchzJiraAPIWrapper.search   sR    u%))&1s3}-..=M@RR 	 ! rW   c                     | j                   j                         }| j                  |      }dt        t	        |            z   dz   t        |      z   }|S )NrZ   z projects:
)r   rO   rV   r\   r]   )rF   rO   parsed_projectsparsed_projects_strs       r-   rU   zJiraAPIWrapper.project   sR    99%%'--h7s3/00>ACDXX 	 #"rW   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   rX   rf   paramss       r-   rh   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   re    )rf   r*   rg   r   create_pageri   rj   s       r-   page_createzJiraAPIWrapper.page_create   sY    	
 E"*t**:T&\::  	R 	rl   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   re   functionargskwargs)rf   r*   rg   getattrr   rT   )rF   rX   rf   rk   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|       )Nr[   get_projectscreate_issuerw   ro   zGot unexpected mode )r`   rU   rh   rw   rp   
ValueError)rF   r   rX   s      r-   runzJiraAPIWrapper.run   s    5=;;u%%^#<<>!^#$$U++W_::e$$]"##E**3D6:;;rW   )__name__
__module____qualname____doc__r   r   __annotations__r   r   r   r\   r   r   r   boolr	   model_configr
   classmethodr   r.   r   ri   rN   rV   r`   rU   rh   rp   rw   r|   rn   rW   r-   r   r   
   s7   D#J#'M8C='$(NHSM('+x}+!%J%L (#5$ 53 5  $5n%4 %DJ %NtDz d4j !C !C !# #;# ;# ;; ; ;	R3 	R3 	R< <C <C <rW   r   N)r   typingr   r   r   r   langchain_core.utilsr   pydanticr   r	   r
   r   rn   rW   r-   <module>r      s%     , , 5 ; ;v<Y v<rW   