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
Issues
  • 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:

    [email protected]********:/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
  • 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
  • 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
  • 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
  • Getting RecursionError when Jira servers return 401

    Getting RecursionError when Jira servers return 401

    Getting RecursionError: maximum recursion depth exceeded in comparison when getting 401 error codes from Jira using JiraCookieAuth. This looks due to the handle_401 register_hook being passed to the request module in client.py:221. The handle looks like it simply retries the request, but has no mechanism in place to prevent it from retying indefinitely, thus the recursion error.

    Commenting out the line request.register_hook('response', self.handle_401) in the JiraAuthCookie class still shows 3 retires to occuring with a pause between each retry. It also stops the RecursionError error from happening, and I assume thrashes the Jira servers much less.

    Python 3.5.3 Jira Client: jira-2.0.1.dev17 Communicating with Jira Cloud

    Stack Trace

    ... (many many iterations of the following) ...
      File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/usr/local/lib/python3.5/dist-packages/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/usr/local/lib/python3.5/dist-packages/jira/client.py", line 202, in handle_401
        self.init_session()
      File "/usr/local/lib/python3.5/dist-packages/jira/client.py", line 218, in init_session
        self.start_session()
      File "/usr/local/lib/python3.5/dist-packages/jira/client.py", line 232, in start_session
        self._get_session(self.__auth)
      File "/usr/local/lib/python3.5/dist-packages/jira/client.py", line 2459, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/usr/local/lib/python3.5/dist-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/usr/local/lib/python3.5/dist-packages/jira/resilientsession.py", line 125, in __verb
        response = method(url, timeout=self.timeout, **kwargs)
      File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 559, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 512, in request
        resp = self.send(prep, **send_kwargs)
      File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 629, in send
        r = dispatch_hook('response', hooks, r, **kwargs)
      File "/usr/local/lib/python3.5/dist-packages/requests/hooks.py", line 31, in dispatch_hook
        _hook_data = hook(hook_data, **kwargs)
      File "/usr/local/lib/python3.5/dist-packages/jira/client.py", line 202, in handle_401
        self.init_session()
      File "/usr/local/lib/python3.5/dist-packages/jira/client.py", line 218, in init_session
        self.start_session()
      File "/usr/local/lib/python3.5/dist-packages/jira/client.py", line 232, in start_session
        self._get_session(self.__auth)
      File "/usr/local/lib/python3.5/dist-packages/jira/client.py", line 2459, in session
        r = self._session.post(url, data=json.dumps(authentication_data))
      File "/usr/local/lib/python3.5/dist-packages/jira/resilientsession.py", line 154, in post
        return self.__verb('POST', url, **kwargs)
      File "/usr/local/lib/python3.5/dist-packages/jira/resilientsession.py", line 125, in __verb
    ...SNIP...
    
    bug help wanted 
    opened by pkkid 14
  • Support requesting board configuration Fixes #1242

    Support requesting board configuration Fixes #1242

    It's previously not possible to get configuration (and hence the JQL) for a board. This PR adds that new resource and supports fetching configuration by board ID using the /rest/agile/1.0/board/{boardId}/configuration endpoint.

    opened by jswetzen 0
  • Fixing type hint to match documentation for move_to_backlog

    Fixing type hint to match documentation for move_to_backlog

    The type should be a list of strings rather than a string according to the documentation. https://developer.atlassian.com/cloud/jira/software/rest/api-group-backlog/#api-agile-1-0-backlog-issue-post

    opened by cpsimpson 0
  • Unable to use JIRA.create_issue in client.py with integer `issuetype`

    Unable to use JIRA.create_issue in client.py with integer `issuetype`

    Bug summary

    At some point a bug was introduced which prevents us from using def create_issue( to create an issue of a specific issuetype, when you want to indicate the issue type using an int. This is especially problematic for issue types where the string issuetype doesn't unambiguously identify the necessary issue type. This causes def issue_type_by_name( to raise a KeyError.

    There's currently a workaround (to use the bulk def create_issues(, which doesn't contain this bug.)

    It looks like this issue was introduced originally in this commit: e829da6980980e0291c5787442524edc822a94fb

    I created a draft PR with a fix, but I'm unable to get the tests running locally so I can't meet the requirements for submitting the pr (having test coverage for the issue)

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Jira Instance type

    Jira Cloud (Hosted by Atlassian)

    Jira instance version

    No response

    jira-python version

    3.1.1

    Python Interpreter version

    3.8

    Which operating systems have you used?

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

    Reproduction steps

    # 1. Given a Jira client instance
    jira: JIRA
    # 2. When I call the function with argument x
    jira.create_issue(issuetype=10007)
    # 3.  `create_issue` looks for the issue by int ID, but then ignores that and treats any `issuetype` parameter as a string.
    

    Stack trace

    NA
    

    Expected behaviour

    I expect that the value passed with be treated as an int

    Additional Context

    No response

    opened by martinlocklear 0
  • Fix bug preventing use of an int for `issuetype` in `def create_issue(`

    Fix bug preventing use of an int for `issuetype` in `def create_issue(`

    At some point a bug was introduced which prevents us from using def create_issue( to create an issue of a specific issuetype, when you want to indicate the issue type using an int. This is especially problematic for issue types where the string issuetype doesn't unambiguously identify the necessary issue type. This causes def issue_type_by_name( to raise a KeyError.

    There's currently a workaround (to use def create_issues(, which doesn't contain this bug.)

    opened by martinlocklear 0
  • Bump cryptography from 35.0.0 to 36.0.1

    Bump cryptography from 35.0.0 to 36.0.1

    Bumps cryptography from 35.0.0 to 36.0.1.

    Changelog

    Sourced from cryptography's changelog.

    36.0.1 - 2021-12-14

    
    * Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 1.1.1m.
    

    .. _v36-0-0:

    36.0.0 - 2021-11-21

    • FINAL DEPRECATION Support for verifier and signer on our asymmetric key classes was deprecated in version 2.0. These functions had an extended deprecation due to usage, however the next version of cryptography will drop support. Users should migrate to sign and verify.
    • The entire :doc:/x509/index layer is now written in Rust. This allows alternate asymmetric key implementations that can support cloud key management services or hardware security modules provided they implement the necessary interface (for example: :class:~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey).
    • :ref:Deprecated the backend argument<faq-missing-backend> for all functions.
    • Added support for :class:~cryptography.hazmat.primitives.ciphers.aead.AESOCB3.
    • Added support for iterating over arbitrary request :attr:~cryptography.x509.CertificateSigningRequest.attributes.
    • Deprecated the get_attribute_for_oid method on :class:~cryptography.x509.CertificateSigningRequest in favor of :meth:~cryptography.x509.Attributes.get_attribute_for_oid on the new :class:~cryptography.x509.Attributes object.
    • Fixed handling of PEM files to allow loading when certificate and key are in the same file.
    • Fixed parsing of :class:~cryptography.x509.CertificatePolicies extensions containing legacy BMPString values in their explicitText.
    • Allow parsing of negative serial numbers in certificates. Negative serial numbers are prohibited by :rfc:5280 so a deprecation warning will be raised whenever they are encountered. A future version of cryptography will drop support for parsing them.
    • Added support for parsing PKCS12 files with friendly names for all certificates with :func:~cryptography.hazmat.primitives.serialization.pkcs12.load_pkcs12, which will return an object of type :class:~cryptography.hazmat.primitives.serialization.pkcs12.PKCS12KeyAndCertificates.
    • :meth:~cryptography.x509.Name.rfc4514_string and related methods now have an optional attr_name_overrides parameter to supply custom OID to name mappings, which can be used to match vendor-specific extensions.
    • BACKWARDS INCOMPATIBLE: Reverted the nonstandard formatting of email address fields as E in :meth:~cryptography.x509.Name.rfc4514_string methods from version 35.0.

    ... (truncated)

    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 charset-normalizer from 2.0.7 to 2.0.9

    Bump charset-normalizer from 2.0.7 to 2.0.9

    Bumps charset-normalizer from 2.0.7 to 2.0.9.

    Release notes

    Sourced from charset-normalizer's releases.

    Version 2.0.9

    2.0.9 (2021-12-03)

    Changed

    • Moderating the logging impact (since 2.0.8) for specific environments (PR #147)

    Fixed

    • Wrong logging level applied when setting kwarg explain to True (PR #146)

    Version 2.0.8

    Changed

    • Improvement over Vietnamese detection (PR #126)
    • MD improvement on trailing data and long foreign (non-pure latin) data (PR #124)
    • Efficiency improvements in cd/alphabet_languages from @​adbar (PR #122)
    • call sum() without an intermediary list following PEP 289 recommendations from @​adbar (PR #129)
    • Code style as refactored by Sourcery-AI (PR #131)
    • Minor adjustment on the MD around european words (PR #133)
    • Remove and replace SRTs from assets / tests (PR #139)
    • Initialize the library logger with a NullHandler by default from @​nmaynes (PR #135)
    • Setting kwarg explain to True will add provisionally (bounded to function lifespan) a specific stream handler (PR #135)

    Fixed

    • Fix large (misleading) sequence giving UnicodeDecodeError (PR #137)
    • Avoid using too insignificant chunk (PR #137)

    Added

    • Add and expose function set_logging_handler to configure a specific StreamHandler from @​nmaynes (PR #135)
    • Add CHANGELOG.md entries, format is based on Keep a Changelog (PR #141)
    Changelog

    Sourced from charset-normalizer's changelog.

    2.0.9 (2021-12-03)

    Changed

    • Moderating the logging impact (since 2.0.8) for specific environments (PR #147)

    Fixed

    • Wrong logging level applied when setting kwarg explain to True (PR #146)

    2.0.8 (2021-11-24)

    Changed

    • Improvement over Vietnamese detection (PR #126)
    • MD improvement on trailing data and long foreign (non-pure latin) data (PR #124)
    • Efficiency improvements in cd/alphabet_languages from @​adbar (PR #122)
    • call sum() without an intermediary list following PEP 289 recommendations from @​adbar (PR #129)
    • Code style as refactored by Sourcery-AI (PR #131)
    • Minor adjustment on the MD around european words (PR #133)
    • Remove and replace SRTs from assets / tests (PR #139)
    • Initialize the library logger with a NullHandler by default from @​nmaynes (PR #135)
    • Setting kwarg explain to True will add provisionally (bounded to function lifespan) a specific stream handler (PR #135)

    Fixed

    • Fix large (misleading) sequence giving UnicodeDecodeError (PR #137)
    • Avoid using too insignificant chunk (PR #137)

    Added

    • Add and expose function set_logging_handler to configure a specific StreamHandler from @​nmaynes (PR #135)
    • Add CHANGELOG.md entries, format is based on Keep a Changelog (PR #141)
    Commits
    • 3874edb :bookmark: Bump to 2.0.9 (#148)
    • d28f8ff :wrench: Tweak/adjust the logging verbosity greater-eq to warning level (#147)
    • 4e1c47a Fix wrong logging level applied when setting kwarg explain to True (#146)
    • e97718b :arrow_up: bump master version 2.0.9.dev0
    • 8913e21 :bookmark: Bump version 2.0.8 (#144)
    • d9e9a50 Finish changelog entries (#143)
    • b5e48c4 Revise the logger instanciation/initial handlers (#135)
    • 6480728 :arrow_up: Bump black from 21.10b0 to 21.11b1 (#142)
    • 8d3a4b1 Add CHANGELOG.md (#141)
    • a55144c :pencil: Add NOTICE.md for test data (#140)
    • 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
  • Bump sphinx from 4.3.0 to 4.3.2

    Bump sphinx from 4.3.0 to 4.3.2

    Bumps sphinx from 4.3.0 to 4.3.2.

    Changelog

    Sourced from sphinx's changelog.

    Release 4.3.2 (released Dec 19, 2021)

    Bugs fixed

    • #9917: C and C++, parse fundamental types no matter the order of simple type specifiers.

    Release 4.3.1 (released Nov 28, 2021)

    Features added

    • #9864: mathjax: Support chnaging the loading method of MathJax to "defer" via :confval:mathjax_options

    Bugs fixed

    • #9838: autodoc: AttributeError is raised on building document for functions decorated by functools.lru_cache
    • #9879: autodoc: AttributeError is raised on building document for an object having invalid doc attribute
    • #9844: autodoc: Failed to process a function wrapped with functools.partial if :confval:autodoc_preserve_defaults enabled
    • #9872: html: Class namespace collision between autodoc signatures and docutils-0.17
    • #9868: imgmath: Crashed if the dvisvgm command failed to convert equation
    • #9864: mathjax: Failed to render equations via MathJax v2. The loading method of MathJax is back to "async" method again
    Commits
    • 5cf55d1 Bump to 4.3.2 final
    • 54613e0 Merge pull request #9983 from tk0miya/mypy-0.920
    • 95d6478 Fix mypy violations (with mypy-0.920)
    • 3ae124f Merge pull request #9918 from jakobandersen/c-cpp-fundamental-type-permutation
    • f8f2628 C, simple type specifier parsing, handling macro-keywords
    • c09643c C, fix parsing of fundamental types
    • 67d6734 C++, fix parsing of fundamental types
    • 355147e C++, fix typo in internal function
    • 95969a4 Bump version
    • ad3f23e Bump to 4.3.1 final
    • 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
  • Add projectstatuses method to get project statuses (missing endpoint)

    Add projectstatuses method to get project statuses (missing endpoint)

    opened by Kayx23 0
  • Remove unnecessary shebang lines

    Remove unnecessary shebang lines

    None of these files are marked or installed as executables, so having a shebang line is not required.

    This will simplify Fedora packaging. Fedora Packaging Guidelines require files which are not installed as executables to not to have shebang lines. https://docs.fedoraproject.org/en-US/packaging-guidelines/#_shebang_lines

    Signed-off-by: Hunor Csomortáni [email protected]

    opened by csomh 0
Releases(3.1.1)
  • 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
A discord tool to use bugs and exploits

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

null 2 Dec 31, 2021
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 134 Jan 11, 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 11 Jan 11, 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 4 Oct 6, 2021
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 2 Dec 1, 2021
"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
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 19 Jan 2, 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 4 Nov 15, 2021
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 2 Dec 25, 2021
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 2 Jan 3, 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 1 Jan 13, 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 614 Dec 13, 2021
A repo to automate the booking process for vaccinations

OntarioVaccineFormAutomaker A repo to automate the booking process for vaccinations Requirements Allow ALL sights to be able to know your location (on

Rafid Dewan 7 May 31, 2021
A Script to automate fowarding all new messages from one/many channel(s) to another channel(s), without the forwarded tag.

Channel Auto Message Forward A script to automate fowarding all new messages from one/many channel(s) to another channel(s), without the forwarded tag

null 15 Jan 4, 2022
null 4 Oct 28, 2021