
    (Gg                     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                    t        |ddd      }||d<   t        |dd      }||d<   t        |dd      }||d<   d	|v r|d	   t        |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   strlower	atlassianr!   r"   ImportError)clsr   r   r   r   jira_cloud_strr   r!   r"   r   r   s              /home/kushmeetdev/apache_webroot/langgraph_flaskproject/venv/lib/python3.12/site-packages/langchain_community/utilities/jira.pyvalidate_environmentz#JiraAPIWrapper.validate_environment   sH    -O_b
 #0-$&6
 $2 0')<
 '8"#6!f\&:&F#&vl';#<F< -flLQ#))+v5
)|	2 B%$ D %&' 	D  !"#	

 v)|=  	L 	s   9B6 6C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)Nr0   keyfieldssummarycreatedr   
   prioritynamestatusassigneedisplayNameNone
issuelinksinwardIssuetypeinwardoutwardIssueoutward)r?   r2   r4   )r2   r4   r5   r:   r7   r9   related_issues)	Exceptionkeysappend)selfr0   parsedissuer2   r4   r5   r7   r9   r:   
rel_issuesrelated_issuerel_typerel_keyrel_summarys                  r.   parse_issueszJiraAPIWrapper.parse_issuesT   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idr2   r8   projectTypeKeystyle)rR   r2   r8   r?   rT   )getrF   )	rG   rP   rH   projectrR   r2   r8   r?   rT   s	            r.   parse_projectszJiraAPIWrapper.parse_projects{   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   jqlrO   r(   len)rG   rY   r0   parsed_issuesparsed_issues_strs        r.   searchzJiraAPIWrapper.search   sR    u%))&1s3}-..=M@RR 	 ! rX   c                     | j                   j                         }| j                  |      }dt        t	        |            z   dz   t        |      z   }|S )Nr[   z projects:
)r   rP   rW   r(   r]   )rG   rP   parsed_projectsparsed_projects_strs       r.   rV   zJiraAPIWrapper.project   sR    99%%'--h7s3/00>ACDXX 	 #"rX   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`)r3   )jsonr+   loadsr   issue_createdictrG   rY   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   rU   )rG   rY   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`   rV   rh   rw   rp   
ValueError)rG   r   rY   s      r.   runzJiraAPIWrapper.run   s    5=;;u%%^#<<>!^#$$U++W_::e$$]"##E**3D6:;;rX   )__name__
__module____qualname____doc__r   r   __annotations__r   r   r   r(   r   r   r   boolr	   model_configr
   classmethodr   r/   r   ri   rO   rW   r`   rV   rh   rp   rw   r|   rn   rX   r.   r   r   
   s7   D#J#'M8C='$(NHSM('+x}+!%J%L (#8$ 83 8  $8t%4 %DJ %NtDz d4j !C !C !# #;# ;# ;; ; ;	R3 	R3 	R< <C <C <rX   r   N)r   typingr   r   r   r   langchain_core.utilsr   pydanticr   r	   r
   r   rn   rX   r.   <module>r      s%     , , 5 ; ;y<Y y<rX   