Source code for langchain_community.utilities.jira
"""Util that calls Jira."""fromtypingimportAny,Dict,List,Optionalfromlangchain_core.pydantic_v1importBaseModel,root_validatorfromlangchain_core.utilsimportget_from_dict_or_env# TODO: think about error handling, more specific api specs, and jql/project limits
[docs]classJiraAPIWrapper(BaseModel):"""Wrapper for Jira API."""jira:Any#: :meta private:confluence:Anyjira_username:Optional[str]=Nonejira_api_token:Optional[str]=Nonejira_instance_url:Optional[str]=Nonejira_cloud:Optional[bool]=NoneclassConfig:extra="forbid"@root_validator(pre=True)defvalidate_environment(cls,values:Dict)->Dict:"""Validate that api key and python package exists in environment."""jira_username=get_from_dict_or_env(values,"jira_username","JIRA_USERNAME",default="")values["jira_username"]=jira_usernamejira_api_token=get_from_dict_or_env(values,"jira_api_token","JIRA_API_TOKEN")values["jira_api_token"]=jira_api_tokenjira_instance_url=get_from_dict_or_env(values,"jira_instance_url","JIRA_INSTANCE_URL")values["jira_instance_url"]=jira_instance_urljira_cloud_str=get_from_dict_or_env(values,"jira_cloud","JIRA_CLOUD")jira_cloud=jira_cloud_str.lower()=="true"values["jira_cloud"]=jira_cloudtry:fromatlassianimportConfluence,JiraexceptImportError:raiseImportError("atlassian-python-api is not installed. ""Please install it with `pip install atlassian-python-api`")ifjira_username=="":jira=Jira(url=jira_instance_url,token=jira_api_token,cloud=jira_cloud,)else:jira=Jira(url=jira_instance_url,username=jira_username,password=jira_api_token,cloud=jira_cloud,)confluence=Confluence(url=jira_instance_url,username=jira_username,password=jira_api_token,cloud=jira_cloud,)values["jira"]=jiravalues["confluence"]=confluencereturnvalues
[docs]defissue_create(self,query:str)->str:try:importjsonexceptImportError:raiseImportError("json is not installed. Please install it with `pip install json`")params=json.loads(query)returnself.jira.issue_create(fields=dict(params))
[docs]defpage_create(self,query:str)->str:try:importjsonexceptImportError:raiseImportError("json is not installed. Please install it with `pip install json`")params=json.loads(query)returnself.confluence.create_page(**dict(params))
[docs]defother(self,query:str)->str:try:importjsonexceptImportError:raiseImportError("json is not installed. Please install it with `pip install json`")params=json.loads(query)jira_function=getattr(self.jira,params["function"])returnjira_function(*params.get("args",[]),**params.get("kwargs",{}))