Python JIRA Library is the easiest way to automate JIRA. Support for py27 was dropped on 2019-10-14, do not raise bugs related to it.

Overview

Jira Python Library

https://img.shields.io/badge/irc-%23pycontribs-blue


https://readthedocs.org/projects/jira/badge/?version=master https://travis-ci.com/pycontribs/jira.svg?branch=master Python Black Code Style Requirements Status

This library eases the use of the Jira REST API from Python and it has been used in production for years.

As this is an open-source project that is community maintained, do not be surprised if some bugs or features are not implemented quickly enough. You are always welcomed to use BountySource to motivate others to help.

Quickstart

Feeling impatient? I like your style.

from jira import JIRA

jira = JIRA('https://jira.atlassian.com')

issue = jira.issue('JRA-9')
print(issue.fields.project.key)            # 'JRA'
print(issue.fields.issuetype.name)         # 'New Feature'
print(issue.fields.reporter.displayName)   # 'Mike Cannon-Brookes [Atlassian]'

Installation

Download and install using pip install jira or easy_install jira

You can also try pip install --user --upgrade jira which will install or upgrade jira to your user directory. Or maybe you ARE using a virtualenv right?

By default only the basic library dependencies are installed, so if you want to use the cli tool or other optional dependencies do perform a full installation using pip install jira[opt,cli,test]

Usage

See the documentation for full details.

Development

Development takes place on GitHub:

  • master - (default branch) contains the primary development stream. Tags will be used to show latest releases.

Setup

  • Fork repo
  • Keep it sync'ed while you are developing
  • Install pyenv
  • Install Atlassian Jira Server for testing - make install-sdk
  • pip install jira[test]
  • Start up Jira Server - atlas-run-standalone
  • Test your changes - make test

Credits

In addition to all the contributors we would like to thank to these companies:

  • Atlassian for developing such a powerful issue tracker and for providing a free on-demand Jira instance that we can use for continuous integration testing.
  • JetBrains for providing us with free licenses of PyCharm
  • Travis for hosting our continuous integration
  • Navicat for providing us free licenses of their powerful database client GUI tools.
https://raw.githubusercontent.com/pycontribs/resources/master/logos/x32/logo-atlassian.png https://raw.githubusercontent.com/pycontribs/resources/master/logos/x32/logo-pycharm.png https://raw.githubusercontent.com/pycontribs/resources/master/logos/x32/logo-navicat.png
Comments
  • WARNING:root:Got recoverable error from GET

    WARNING:root:Got recoverable error from GET

    These retries slow down our integration tests. Any idea why? Is it concurrent auths?

    21:05:51 WARNING:root:Got recoverable error from GET https://${ORG}.atlassian.net/rest/api/2/serverInfo, will retry [1/3] in 12.1101162796s. Err: 401 Unauthorized
    21:06:03 WARNING:root:Got recoverable error from GET https://${ORG}.atlassian.net/rest/api/2/serverInfo, will retry [2/3] in 26.5554750648s. Err: 401 Unauthorized
    21:06:30 WARNING:root:Got recoverable error from GET https://${ORG}.atlassian.net/rest/api/2/serverInfo, will retry [3/3] in 24.2805575368s. Err: 401 Unauthorized
    
    bug 
    opened by jamesongithub 39
  • RecursionError: maximum recursion depth exceeded in comparison

    RecursionError: maximum recursion depth exceeded in comparison

    Before raising any bug be sure that you used the latest release and that it still reproduces with the latest master. No other version is supported.

    Describe the bug

    Unable to log in to JIRA. I get an error: RecursionError: maximum recursion depth exceeded in comparison

    To Reproduce

    username, password = ...
    site = jira.JIRA('http://mysite.atlassian.net', auth=(username, password))
    
    1. Any additional steps or considerations that happen before or after.

    Expected behavior Expected to log into JIRA successfully.

    Stack Trace

    Traceback (most recent call last):
      File "jira/weekly_summary.py", line 130, in <module>
        main()
      File "jira/weekly_summary.py", line 65, in main
        site = jira.JIRA('https://profound.atlassian.net', auth=auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 462, in __init__
        user = self.session(auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 208, in handle_401
        self.init_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 224, in init_session
        self.start_session()
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 238, in start_session
        self._get_session(self.__auth)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/client.py", line 2446, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 498, in request
        prep = self.prepare_request(req)
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 437, in prepare_request
        headers=merge_setting(request.headers, self.headers, dict_class=CaseInsensitiveDict),
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/sessions.py", line 68, in merge_setting
        merged_setting = dict_class(to_key_val_list(session_setting))
      File "/home/misha/envs/dbi2/lib/python3.6/site-packages/requests-2.19.1-py3.6.egg/requests/structures.py", line 44, in __init__
        self.update(data, **kwargs)
      File "/home/misha/envs/dbi2/lib/python3.6/_collections_abc.py", line 839, in update
        if isinstance(other, Mapping):
      File "/home/misha/envs/dbi2/lib/python3.6/abc.py", line 190, in __instancecheck__
        subclass in cls._abc_negative_cache):
      File "/home/misha/envs/dbi2/lib/python3.6/_weakrefset.py", line 75, in __contains__
        return wr in self.data
    RecursionError: maximum recursion depth exceeded in comparison
    

    Version Information Python Interpreter: 3.6.5 jira-python: 2.0.0 OS: Ubuntu 18.04 IPython (Optional): Other Dependencies:

    Additional context

    This used to work last week. Something changed since then (possibly on the JIRA side).

    wontfix 
    opened by mpenkov 31
  • logout in browser when adding worklog

    logout in browser when adding worklog

    Not sure if it is the intended behavior or am I missing something, but whenever I add a worklog via the API, I get logged out in my browser after a few minutes -- despite the fact that the "remember me" option is checked.

    Example call:

    daroczig@********:/opt/hamster-bridge$ bin/python
    Python 2.7.8 (default, Oct 20 2014, 15:05:19) 
    [GCC 4.9.1] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from jira import JIRA
    >>> jira = JIRA('https://*********.atlassian.net', basic_auth=('*********', '*********'))
    >>> jira.add_worklog('*****-21', '6m')
    <JIRA Worklog: id=u'10454'>
    

    Based on the JIRA docs, first I thought that the API calls are not re-using the session -- but that shouldn't be an issue with the Jira python library.

    Any ideas on how can I debug this?

    opened by daroczig 23
  • Make user search GDPR compliant

    Make user search GDPR compliant

    The username field is deprecated and Jira is gradually removing it from the cloud instances. This is the second time such changes break our integrations; until now, our workaround consisted of first searching for the user based on the email, and then use the account id from the response for the other requests. But now we cannot search anymore for users based on the email, and we need to use the query field. Even if we just pass the same exact value we passed to username.

    I can imagine there're several places in the code that would require of being changed for being completely GDPR compliant, but I have no time at the moment to fix all of them :(

    Thanks for your work!

    bug 
    opened by julenpardo 17
  • fix dictionary keys changed during iteration error seen in utils when using py3.8

    fix dictionary keys changed during iteration error seen in utils when using py3.8

    noticed this error when trying to upload a file in jira while using python 3.8 on MacOS 10.14.6:

    Python 3.8.0 (default, Nov 25 2019, 19:38:49) 
    [Clang 10.0.1 (clang-1001.0.46.4)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from jira import JIRA
    >>> jira = JIRA(server='http://localhost:8080', basic_auth=('myuser', 'mypass'))
    >>> attached = jira.add_attachment(issue='CSTREQ-1', attachment='file_with_text.log')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Users/myuser/.pyenv/versions/venv/lib/python3.8/site-packages/jira/client.py", line 126, in wrapper
        result = func(*arg_list, **kwargs)
      File "/Users/myuser/.pyenv/versions/venv/lib/python3.8/site-packages/jira/client.py", line 787, in add_attachment
        url, data=m, headers=CaseInsensitiveDict({'content-type': m.content_type, 'X-Atlassian-Token': 'nocheck'}), retry_data=file_stream)
      File "/Users/myuser/.pyenv/versions/venv/lib/python3.8/site-packages/jira/utils/__init__.py", line 41, in __init__
        for key, value in super(CaseInsensitiveDict, self).items():
    RuntimeError: dictionary keys changed during iteration
    

    Tested the fix below and there seems to not be any issues. File uploaded fine, no other errors:

    >>> attached = jira.add_attachment(issue='CSTREQ-1', attachment='file_with_text.log')
    >>> attached
    <JIRA Attachment: filename='file_with_text.log', id='10000', mimeType='text/plain'>
    
    stale 
    opened by elinnore 17
  • Add client route for deleting remote links by global (and internal) id

    Add client route for deleting remote links by global (and internal) id

    Took me a bit longer than expected :)

    fixes #1300

    The program was tested solely for our own use cases, which might differ from yours.


    Jannik Meinecke [email protected] on behalf of MBition GmbH. https://github.com/mercedes-benz/foss/blob/master/PROVIDER_INFORMATION.md

    Licensed under BSD-2-Clause license

    feature 
    opened by rynkk 16
  • 896 - GDPR Update and CI fixes

    896 - GDPR Update and CI fixes

    Intended as the resolution to https://github.com/pycontribs/jira/issues/896

    A number of changes were made to the Jira API server side that break the implementation of this library. Primarily, username/name is generally no longer a valid query or response. This has had the effect of breaking a number of the tests as well as how we authenticate to our test instance in the first place.

    I've made the decision to continue passing the credentials in plaintext, due to limitations noted first by @Addono here: https://github.com/pycontribs/jira/issues/871#issuecomment-557099698 Simply put, the tests will fail on PRs as they would not have access to the credentials necessary for the test instance otherwise. Other solutions are possible, but other than the potential for vandalism I didn't see the need for these credentials to be secret.

    However, I have moved these variables out of the code and into the environment created by Travis. This gives people the option to define their own set, should they desire. The tests will fail fast if otherwise not set, as discussed here: https://github.com/pycontribs/jira/issues/896#issuecomment-592405680

    A couple of other fixes have been made, where fields have either been removed or made mandatory:

    • The key field has been removed the myself response
    • permissions is now a mandatory field for the mypermissions request

    Finally, some fixes have been applied to pass linting.

    This PR is not likely to be a complete fix for all GDPR related issues. Merely, it fixes the code where tested, or the tests themselves, such that CI will be green again.

    Status: Ready 
    opened by csullivannet 16
  • Add (some) missing type hints for `_IssueFields`

    Add (some) missing type hints for `_IssueFields`

    Description

    Tested with mypy 0.782.

    Pull request https://github.com/pycontribs/jira/pull/1023 added some type hints, which is great, but didn't define all of them, which now makes mypy unhappy about it.

    Note: this PR probably doesn't add all of them either, but it does add some of them that do exist (most notably, fields like summary or created). I haven't found in the Jira REST API documentation a specific list of the fields that have a required value, so the types added by this PR are based in the errors of our codebase, intuition and requests examples provided by Jira docs. I'd be happy to add more fields if necessary.

    Rationale

    Because mypy assumes the type Any for when there's no type hint, the solution should be to either to define every class attribute with its type, or define no types at all. This design by mypy is intentional for backwards compatibility (among other reasons). Having partially defined types can only break existing set ups.

    Minimal reproducible example

    from jira import JIRA
    
    
    jira_client = JIRA('http://jira.test')
    issue = jira_client.issue('TEST-1')
    print(issue.fields.summary)
    
    venv ❯❯❯ mypy script.py
    script.py:7: error: "_IssueFields" has no attribute "summary"
    Found 1 error in 1 file (checked 1 source file)
    
    bug 
    opened by julenpardo 15
  • JIRA response still not picklable

    JIRA response still not picklable

    Describe the bug Using pickle.dump followed by pickle.load causes a RecursionError to be thrown, even on the master development branch.

    To Reproduce

    jira_instance = jira.JIRA(jira_link, basic_auth=auth_tuple)
    tickets = jira_instance.search_issues('updated >= -1d')
    with open('test-jira-pickle.pckl', 'wb') as f:
        pickle.dump(tickets,f)
    with open('test-jira-pickle.pckl', 'rb') as f:
        pickle.load(f)  # recursion
    

    This seems to be because 1. self[item] is used in resources.py Resource object 2. hasattr is used inside __getattr__ which is the function that python calls when hasattr is used.

    Expected behavior JIRA response gets pickled properly and loads properly.

    Stack Trace

    File "c:\python37\lib\site-packages\jira\resources.py", line 188 in __getattr__
      File "c:\python37\lib\site-packages\jira\resources.py", line 202 in __getattr__
      File "c:\python37\lib\site-packages\jira\resources.py", line 202 in __getattr__
      File "c:\python37\lib\site-packages\jira\resources.py", line 202 in __getattr__
    ...
    

    Version Information Python Interpreter: 3.7.0 jira-python: 2.0.1.0rc3.dev2 OS: Windows Server 2016 IPython (Optional): N/A Other Dependencies:

    Additional context N/A

    opened by guidopetri 15
  • No tag for latest release, RELEASE is stale

    No tag for latest release, RELEASE is stale

    Could the package maintainer please provide a tag or SHA1 that points to the latest stable release on pypi?!

    Also, the latest commit on master appears to have bumped the version to 1.0.1 -- was that intentional?!

    Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

    opened by asqui 15
  • Unable to add issues to epic after update 3.0.1 -> 3.1.1

    Unable to add issues to epic after update 3.0.1 -> 3.1.1

    Bug summary

    Exception when trying to add issues to an epic:

      File "/home/valentijn/dd/dojo/jira_link/helper.py", line 580, in add_jira_issue_for_finding
        return add_jira_issue(finding, *args, **kwargs)
      File "/home/valentijn/dd/dojo/jira_link/helper.py", line 695, in add_jira_issue
        add_issues_to_epic(jira, obj, epic_id=epic.jira_id, issue_keys=[str(new_issue.id)], ignore_epics=True)
      File "/home/valentijn/dd/dojo/jira_link/helper.py", line 565, in add_issues_to_epic
        return jira.add_issues_to_epic(epic_id=epic_id, issue_keys=issue_keys, ignore_epics=ignore_epics)
      File "/home/valentijn/venv/lib/python3.8/site-packages/jira/client.py", line 4768, in add_issues_to_epic
        raise NotImplementedError(
    NotImplementedError: Jira Agile Public API does not support this request
    

    Used to work in 3.0.1 and I think this a supported operation. Could it have to do something with the changes made in https://github.com/pycontribs/jira/pull/1186 ?

    There's some code referring to the old value of agile_rest_path it seems?

    if (
                self._options["agile_rest_path"]
                != GreenHopperResource.GREENHOPPER_REST_PATH
            ):
                # TODO(ssbarnea): simulate functionality using issue.update()?
                raise NotImplementedError(
                    "Jira Agile Public API does not support this request"
                )
    

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Jira Instance type

    Jira Cloud (Hosted by Atlassian) and JIRA Server

    Jira instance version

    8.20.1

    jira-python version

    3.1.1

    Python Interpreter version

    3.8

    Which operating systems have you used?

    • [X] Linux
    • [ ] macOS
    • [ ] Windows

    Reproduction steps

    Call `add_issues_to_epic`
    

    Stack trace

    see above
    

    Expected behaviour

    Issues being added to epic

    Additional Context

    No response

    bug 
    opened by valentijnscholten 14
  • Give subtasks a

    Give subtasks a "Convert to Issue" option.

    Problem trying to solve

    Write a script for converting an issue's subtasks to actual issues. Each new issue should be linked to the original issue (as a parent).

    This way I can create subtasks on the web UI and quickly convert them to issues (which allows to give them story points, etc).

    Possible solution(s)

    Given an issue ID, for each subtask of this issue, convert to issue + link to original issue.

    Alternatives

    I could define said issues by code but that would be less nice and less friendly to my non-programming colleagues.

    Seems like I can't do it right now:

    >>> subtask.update({"subtask": False})
    JIRAError: JiraError HTTP 400 url
    response text = {"errorMessages":[],"errors":{"subtask":"Field 'subtask' cannot be set. It is not on the appropriate screen, or unknown."}}
    

    Additional Context

    On an issue's page, click on the ... icon, then "Convert to Issue" - this is the functionality I'm looking for.

    Screen Shot 2023-01-04 at 11 51 14

    opened by guy4261 1
  • Bump importlib-metadata from 5.0.0 to 6.0.0

    Bump importlib-metadata from 5.0.0 to 6.0.0

    Bumps importlib-metadata from 5.0.0 to 6.0.0.

    Changelog

    Sourced from importlib-metadata's changelog.

    v6.0.0

    • #419: Declared Distribution as an abstract class, enforcing definition of abstract methods in instantiated subclasses. It's no longer possible to instantiate a Distribution or any subclasses unless they define the abstract methods.

      Please comment in the issue if this change breaks any projects. This change will likely be rolled back if it causes significant disruption.

    v5.2.0

    • #371: Deprecated expectation that PackageMetadata.__getitem__ will return None for missing keys. In the future, it will raise a KeyError.

    v5.1.0

    • #415: Instrument SimplePath with generic support.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies skip-changelog 
    opened by dependabot[bot] 0
  • Bump asttokens from 2.1.0 to 2.2.1

    Bump asttokens from 2.1.0 to 2.2.1

    Bumps asttokens from 2.1.0 to 2.2.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies skip-changelog 
    opened by dependabot[bot] 0
  • Bump prompt-toolkit from 3.0.32 to 3.0.36

    Bump prompt-toolkit from 3.0.32 to 3.0.36

    Bumps prompt-toolkit from 3.0.32 to 3.0.36.

    Changelog

    Sourced from prompt-toolkit's changelog.

    3.0.36: 2022-12-06

    Fixes:

    • Another Python 3.6 fix for a bug that was introduced in 3.0.34.

    3.0.35: 2022-12-06

    Fixes:

    • Fix bug introduced in 3.0.34 for Python 3.6. Use asynccontextmanager implementation from prompt_toolkit itself.

    3.0.34: 2022-12-06

    Fixes:

    • Improve completion performance in various places.
    • Improve renderer performance.
    • Handle KeyboardInterrupt when the stacktrace of an unhandled error is displayed.
    • Use correct event loop in Application.create_background_task().
    • Fix show_cursor attribute in ScrollablePane.

    3.0.33: 2022-11-21

    Fixes:

    • Improve termination of Application. Don't suppress CancelledError. This fixes a race condition when an Application gets cancelled while we're waiting for the background tasks to complete.
    • Fixed typehint for OneStyleAndTextTuple.
    • Small bugfix in CombinedRegistry. Fixed missing @property.
    Commits
    • da05f66 Release 3.0.36
    • 132f4ff Another Python 3.6 bugfix.
    • f9b6d7d Release 3.0.35
    • 6d45469 Fix for Python 3.6
    • 1ff6551 Release 3.0.34
    • 6b4af4e Improve code completion performance (CompletionsMenuControl)
    • 94d5d6e Removed type declaration of unused variable.
    • afb9df6 Remove Python 3.6 from GitHub workflow (not supported anymore).
    • 5110867 Improve FuzzyCompleter performance.
    • cb925b2 Improve code completion performance (meta control of `MultiColumnCompletionsM...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies skip-changelog 
    opened by dependabot[bot] 0
  • Update the type for issue in add_comment & transition_issue for better type hints

    Update the type for issue in add_comment & transition_issue for better type hints

    I have found that these 2 function works with both the type "str" and "ISSUE" because whatever one adds as the issue argument is converted to a string, and when the class Issue is converted to a string it returns the issue-key. So, this should give better type hinting, and I am sure there are more place in the code this scenario exists 😄

    opened by dvaerum 0
Releases(3.4.1)
  • 3.4.1(Sep 6, 2022)

    Minor Changes

    • Remove setup.py and tidy build scripts (#1443) @adehad

    Bugfixes

    • add required parameter field 'permissions' to my_permissions method (#1472) @rena2damas
    • Avoid always passing on an empty body even if not given (#1471) @razziel89
    Source code(tar.gz)
    Source code(zip)
  • 3.4.0(Aug 14, 2022)

    Minor Changes

    • Add support for IssueProperty resource (#1439) @turran
    • Add project arg to .issue_type_by_name() (#1448) @dblanchette

    Bugfixes

    • fix .add_issues_to_epic() (#1450) @adehad
    • Fix using str as issue type with .create_issue() when issue type with that name exists in many projects (#1448) @dblanchette
    Source code(tar.gz)
    Source code(zip)
  • 3.3.2(Aug 8, 2022)

    Bugfixes

    • allow filter updates when no description returned by Jira (#1447) @adehad
    • Fix bug preventing use of an int for issuetype in create_issue() (#1445) @rynkk
    • derive attachment fname from BufferedReader object (#1437) (#1438) @mtripoli
    Source code(tar.gz)
    Source code(zip)
  • 3.3.1(Jul 26, 2022)

    Bugfixes

    • [Regression] ensure None is handled correctly in search_issues() (#1434) @adehad
    • Raise JIRAError when no user found (#1383) @lishoujun
    Source code(tar.gz)
    Source code(zip)
  • 3.3.0(Jul 10, 2022)

    Minor Changes

    • Add client route for deleting remote links by global (and internal) id (#1395) @rynkk
    • improve explanation of exception when two sprints with the same name are found (#1405) @studioj
    • extend the examples with a more thorough example for getting attachments from a specific comment (#1404) @studioj
    • Configurable batch size for JIRA._fetch_pages() and dependant methods (#1394) @rynkk
    • tidy ResilientSession implementation (#1366) @adehad
    • Add notify to comment (#1387) @studioj
    • As the keyring dependency is only used by jirashell, have it be part of the cli extras requirement. (#1380) @dbaxa
    • Handle #925 rate limit error (#1364) @StefanoBoriero
    • updated jira.search_issues default behaviour to include all fields (#1360) @Yusuf-TJ
    • use importlib.metadata instead of pkg_resources (#1359) @adehad
    • Drop py36 py37 add py310 (#1350) @adehad

    Bugfixes

    • improve explanation of exception when two sprints with the same name are found (#1405) @studioj
    • Remove GreenHopper Resource and fix Agile tests (#1351) @adehad
    Source code(tar.gz)
    Source code(zip)
  • 3.2.0(Apr 13, 2022)

    Note: This will be the last release to support Py36 and Py37.

    Minor Changes

    • Additional scheme endpoints for projects (#1295) @Zyzyx
    • Add subscriptable support for PropertyHolder (#1102) @dvaerum
    • Fixing type hint to match documentation for move_to_backlog (#1275) @cpsimpson
    • improve ResultList types (#1215) @adehad
    • Allow verify option as path to cert in config (#1238) @lamcw

    Bugfixes

    • Locate the exact user by key if there are multiple users returned from query (#1145) @skyscribe
    • Fixing type hint to match documentation for move_to_backlog (#1275) @cpsimpson
    • Avoid printing parsed json response (#1246) @studioj
    Source code(tar.gz)
    Source code(zip)
  • 3.1.1(Nov 11, 2021)

    Minor Changes

    • Allow both a comment and a worklog rather than just one or the other when transitioning an issue (#951) @jdgood
    • lazy load _fields, (now called _fields_cache for clarity) (#1205) @adehad

    Bugfixes

    • Bugfix/restore cookie auth (#1201) @adehad
    • username as default self-hosted field for current_user() (#1200) @adehad
    • add the .verify property correctly (#1202) @adehad

    From 3.1.0rc1

    Minor Changes

    • Create token auth option (#991) @skaiaa
    • add support for ranking after (#1160) @durka
    • add PermissionScheme Resource (#1139) @Steffen223
    • Allow the adding of headers rather than just overwriting all headers (#1085) @adehad
    • Make search_assignable_users_for_issues function GDPR compliant. (#1117) @nelli-acc
    • Add expand to JIRA.project and JIRA.projects (#865) @joshheinrichs
    • ResilientSession: do not log request data on ConnectionError (#928) @Flupp
    • fix pickling and hashability (#1051) @adehad
    • Allow expands for retrieval of comments (#1003) @matthewkeenan
    • Close the file descriptor for add_attachment (#957) @yen3
    • Adopt fstrings (flynt) (#1044) @studioj
    • Improve feedback for oauth errors. (#888) @aklajnert
    • Correct lookup of issuetypes when calling create_issue (#978) @soerenbe
    • add typehints and allow google docstrings (#1023) @adehad

    Bugfixes

    • Export resource_class_map and fix bug in Role.add_user() (#1047) @wlupton
    • Jira Cloud user support (#1109) @adehad
    • allow testing of Jira Cloud (#1107) @adehad
    • Client Certificate Authentication for All Auth Types (#1191) @kchason
    • Allow _get_user_accountid to find "Unassigned" and "Automatic" users. (#1152) @adehad
    • use "agile" endpoint over now removed "greenhopper" (#1186) @adehad
    • fix: rename default branch to main (#1166) @ssbarnea
    • Fix JWT QSH generation for urls with repeated parameters (#1157) @robinhughes
    • fix TB on RequestType instanciation with raw content (fixes #1130) (#1133) @bmathieu33
    • Make search_assignable_users_for_issues function GDPR compliant. (#1117) @nelli-acc
    • use requests.structures.CaseInsensitiveDict directly (#1084) @adehad
    • Fix broken tests (#1079) @manc-lx
    • Add (some) missing type hints for _IssueFields (#1063) @julenpardo
    • Refactor locking of test dependencies (#1074) @ssbarnea
    • fix assign issue behaviour and correct watcher functions docstrings (#1053) @adehad
    • Allow you to set the reporter as well, not just the assignee (#987) @tlianza
    • Close the file descriptor for add_attachment (#957) @yen3
    • Make user search GDPR compliant (#927) @julenpardo
    • fix: group_members (#933) @nilleb
    • add typehints and allow google docstrings (#1023) @adehad
    • Fix docstring generation of jira client and minor doc layouting fix (#1038) @studioj
    • adding version to documentation to help out on #1016 (#1039) @studioj

    Kudos goes to: @Flupp, @RonnyPfannschmidt, @Steffen223, @adehad, @aklajnert, @bmathieu33, @dependabot, @dependabot[bot], @durka, @jdgood, @joshheinrichs, @julenpardo, @kchason, @manc-lx, @matthewkeenan, @nelli-acc, @nilleb, @petermcd, @pre-commit-ci, @pre-commit-ci[bot], @robinhughes, @skaiaa, @soerenbe, @ssbarnea, @studioj, @tlianza, @tmct, @wlupton and @yen3

    Source code(tar.gz)
    Source code(zip)
  • 3.1.0rc1(Oct 24, 2021)

    Thank you all for your contributions and patience awaiting this pre-release. Although this is classed as a "pre-release" this is the most well tested this library has been in its entire history ! Our coverage is just shy of 58%. The reasoning behind classing this as a pre-release is that we changed our CI system and want to make sure that any regressions can be addressed before a "proper" release.

    Minor Changes

    • Create token auth option (#991) @skaiaa
    • add support for ranking after (#1160) @durka
    • add PermissionScheme Resource (#1139) @Steffen223
    • Allow the adding of headers rather than just overwriting all headers (#1085) @adehad
    • Make search_assignable_users_for_issues function GDPR compliant. (#1117) @nelli-acc
    • Add expand to JIRA.project and JIRA.projects (#865) @joshheinrichs
    • ResilientSession: do not log request data on ConnectionError (#928) @Flupp
    • fix pickling and hashability (#1051) @adehad
    • Allow expands for retrieval of comments (#1003) @matthewkeenan
    • Close the file descriptor for add_attachment (#957) @yen3
    • Adopt fstrings (flynt) (#1044) @studioj
    • Improve feedback for oauth errors. (#888) @aklajnert
    • Correct lookup of issuetypes when calling create_issue (#978) @soerenbe
    • add typehints and allow google docstrings (#1023) @adehad

    Bugfixes

    • Export resource_class_map and fix bug in Role.add_user() (#1047) @wlupton
    • Jira Cloud user support (#1109) @adehad
    • allow testing of Jira Cloud (#1107) @adehad
    • Client Certificate Authentication for All Auth Types (#1191) @kchason
    • Allow _get_user_accountid to find "Unassigned" and "Automatic" users. (#1152) @adehad
    • use "agile" endpoint over now removed "greenhopper" (#1186) @adehad
    • fix: rename default branch to main (#1166) @ssbarnea
    • Fix JWT QSH generation for urls with repeated parameters (#1157) @robinhughes
    • fix TB on RequestType instanciation with raw content (fixes #1130) (#1133) @bmathieu33
    • Make search_assignable_users_for_issues function GDPR compliant. (#1117) @nelli-acc
    • use requests.structures.CaseInsensitiveDict directly (#1084) @adehad
    • Fix broken tests (#1079) @manc-lx
    • Add (some) missing type hints for _IssueFields (#1063) @julenpardo
    • Refactor locking of test dependencies (#1074) @ssbarnea
    • fix assign issue behaviour and correct watcher functions docstrings (#1053) @adehad
    • Allow you to set the reporter as well, not just the assignee (#987) @tlianza
    • Close the file descriptor for add_attachment (#957) @yen3
    • Make user search GDPR compliant (#927) @julenpardo
    • fix: group_members (#933) @nilleb
    • add typehints and allow google docstrings (#1023) @adehad
    • Fix docstring generation of jira client and minor doc layouting fix (#1038) @studioj
    • adding version to documentation to help out on #1016 (#1039) @studioj

    Kudos goes to: @Flupp, @RonnyPfannschmidt, @Steffen223, @adehad, @aklajnert, @bmathieu33, @dependabot, @dependabot[bot], @durka, @joshheinrichs, @julenpardo, @kchason, @manc-lx, @matthewkeenan, @nelli-acc, @nilleb, @pre-commit-ci, @pre-commit-ci[bot], @robinhughes, @skaiaa, @soerenbe, @ssbarnea, @studioj, @tlianza, @tmct, @wlupton and @yen3

    Source code(tar.gz)
    Source code(zip)
  • 3.0.1(May 12, 2021)

    Changes

    • Comment Author Name and Time (#1001) @pperum002c
    • Bump markupsafe from 1.1.1 to 2.0.0 (#1026) @dependabot
    • Example of the email address and API token initialization. (#893) @stanislavulrych
    • Bump pytest from 6.2.3 to 6.2.4 (#1024) @dependabot

    Features

    • Switch to locked test dependencies (#1019) @ssbarnea

    Bug Fixes

    • Update client.py (#1005) @EdgeSync
    • Fix CI and drop support for py35 (#1017) @ssbarnea
    Source code(tar.gz)
    Source code(zip)
  • 3.0(Jul 28, 2020)

    Changes

    • Update JIRA -> Jira branding and use https for links (#869) @josephw
    • Fix docs typo (#919) @foxyblue
    • Print statements converted to functions (py3) (#921) @pletnes
    • docs: fixed rtd install (#855) @ssbarnea
    • Added release drafter config (#851) @ssbarnea
    • remove support for py27 (#849) @ssbarnea
    • Python Jira goes black (#818) @ssbarnea
    • Improve docs on OAuth (#800) @hdost
    • Feature/fix exceptions unicode literals (#760) @nikepan
    • Update pip install instructions in README.rst (#785) @asfaltboy
    • Fixed tag build trigger (#766) @ssbarnea
    • fix link to readthedocs in comment (#769) @tomviner
    • doc-fix: Specify correct parameter name of 'destination'. (#795) @akumria
    • Create FUNDING.yml (#796) @ssbarnea
    • Fix CI broken tests (#799) @ssbarnea
    • Correct labels update example syntax (#787) @wesinator
    • adds allow_no_value to ConfigParser options in findfile function (#767) @renegaderyu
    • Pin flake8 version when using with pre-commit (#777) @ssbarnea

    Features

    • Feat: allow saving password in OS keychain/keyring (#786) @asfaltboy

    Bug Fixes

    • Update attachment example to Python 3 StringIO (#853) @wesinator
    • Add support for Python 3.8 (#895) @japz
    • bugfix in method create_issue_link (#782) @russoz

    Maintenance

    • removed .gitreview file (#856) @ssbarnea
    Source code(tar.gz)
    Source code(zip)
  • 2.0.1rc2(Mar 13, 2019)

Owner
PyContribs
PyContribs main purpose is to assure that different Python-related projects remain maintained.
PyContribs
The easiest way to deploy this Bot

How To Host The easiest way to deploy this Bot Update Channe

Isekai Reszz 1 Jan 23, 2022
A discord tool to use bugs and exploits

DiscordTool A discord tool to use bugs and exploits Features: send a buggy messa

null 6 Aug 19, 2022
This software's intent is to automate all activities related to manage Axie Infinity Scholars. It is specially aimed to mangers with large scholar roasters.

Axie Scholars Utilities This software's intent is to automate all activities related to manage Scholars. It is specially aimed to mangers with large s

Ferran Marin 153 Nov 16, 2022
A small Python app to create Notion pages from Jira issues

Jira to Notion This little program will capture a Jira issue and create a corresponding Notion subpage. Mac users can fetch the current issue from the

Dr. Kerem Koseoglu 12 Oct 27, 2022
Extend the commitizen tools to create conventional commits and README that link to Jira and GitHub.

cz-github-jira-conventional cz-github-jira-conventional is a plugin for the commitizen tools, a toolset that helps you to create conventional commit m

null 12 Dec 13, 2022
A collection of tools for managing Jira issues for the RHODS project

RHODS-Jira-Tools A collection of tools for managing Jira issues for the RHODS project move_to_qa.py This script handles transitioning a given Jira iss

Alex Corvin 1 Sep 20, 2022
"Nesse projeto criei uma automação para abrir as tarefas no Jira em massa pegando de uma determinada fila do Zendesk."

automacao-Zendesk "Nesse projeto criei uma automação para abrir as tarefas no Jira em massa pegando de uma determinada fila do Zendesk." en-us "In thi

tokoyamy 1 Dec 20, 2021
An attempt to escape the horrible JIRA editor.

An attempt to escape the horrible JIRA editor. jira_filter.py is a pandoc filter that cleans up some of JIRA's html so that it can be converted to Mar

Stefan Matting 2 Feb 10, 2022
Free and Open Source Group Voice chat music player for telegram ❤️ with button support youtube playback support

Free and Open Source Group Voice chat music player for telegram ❤️ with button support youtube playback support

Sehath Perera 1 Jan 8, 2022
Python library for RetroMMO related stuff, including API wrapper

python library for RetroMMO related stuff, including API wrapper.

null 1 Nov 25, 2021
A library that revolutionizes the way people interact with NextDNS.

NextDNS-API An awesome way to interface with your NextDNS account - via Python! Explore the docs » Report Bug . Request Feature Table Of Contents Abou

null 34 Dec 7, 2022
A Python Script to automate searching of available vaccination centers in the city and hence booking

Cowin Vaccine Availability Notifier Cowin Vaccine Availability Notifier takes your City or PIN code as an input and automatically notifies you via ema

Jayesh Padhiar 7 Sep 5, 2021
A python tool to Automate Whatsapp through Whatsapp web

This python tool is used to Automate Whatsapp through Whatsapp web. We can add number of contacts whom we want to send text messages on perticular time

null 5 Jul 21, 2022
A Python Script to automate searching of available vaccination centers in the city and hence booking

Cowin Vaccine Availability Notifier Cowin Vaccine Availability Notifier takes your City or PIN code as an input and automatically notifies you via ema

Jayesh Padhiar 7 Sep 5, 2021
This Python script will automate the process of uploading your project to GitHub.

ProjectToGithub This Python script will help you to upload your project to Github without having to type in any commands !!! Quick Start guide First C

Imira Randeniya 1 Sep 11, 2022
Cryptocurrency Trading Bot - A trading bot to automate cryptocurrency trading strategies using Python, equipped with a basic GUI

Cryptocurrency Trading Bot - A trading bot to automate cryptocurrency trading strategies using Python, equipped with a basic GUI. Used REST and WebSocket API to connect to two of the most popular crypto exchanges in the world.

Francis 8 Sep 15, 2022
Alienworlds-bot - A Python script made to automate the tidious job of mining on AlienWorlds

AlienWorlds bot A Python script designed to automate the tedious work of mining

null 5 Dec 23, 2022
A bot written in Python to automate attending classes on MyClass (Codetantra).

codetantrabot This is python program to attend class on myclass(codetantra) Prerequisites You should have Python3 and Pip installed on your system Run

Aniket Kumar 1 Feb 8, 2022
This very basic script can be used to automate COVID-19 vaccination slot booking on India's Co-WIN Platform.

COVID-19 Vaccination Slot Booking Script This very basic CLI based script can be used to automate covid vaccination slot booking on Co-WIN Platform. I

null 605 Dec 14, 2022