jira
jira copied to clipboard
Jira client throws 'jwt.algorithms' error - `jwt` and `pyjwt` namespace conflict
Problem
Launching my application which uses OAuth with the Jira client throws the error AttributeError: module 'jwt.algorithms' has no attribute 'hashes'
.
Environment
- python 3.9.1
- pipenv 2020.11.15
- jira 3.0.1
Stacktrace
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/jira/client.py", line 506, in __init__
si = self.server_info()
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/jira/client.py", line 2551, in server_info
j = self._get_json("serverInfo")
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/jira/client.py", line 3139, in _get_json
r = self._session.get(url, params=params)
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/jira/resilientsession.py", line 172, in get
return self.__verb("GET", url, **kwargs)
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/jira/resilientsession.py", line 143, in __verb
response = method(url, timeout=self.timeout, **kwargs)
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/requests/sessions.py", line 555, in get
return self.request('GET', url, **kwargs)
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/requests/sessions.py", line 528, in request
prep = self.prepare_request(req)
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/requests/sessions.py", line 456, in prepare_request
p.prepare(
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/requests/models.py", line 320, in prepare
self.prepare_auth(auth, url)
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/requests/models.py", line 551, in prepare_auth
r = auth(self)
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/requests_oauthlib/oauth1_auth.py", line 108, in __call__
r.url, headers, _ = self.client.sign(
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/oauthlib/oauth1/rfc5849/__init__.py", line 351, in sign
('oauth_signature', self.get_oauth_signature(request)))
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/oauthlib/oauth1/rfc5849/__init__.py", line 186, in get_oauth_signature
sig = self.SIGNATURE_METHODS[self.signature_method](base_string, self)
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/oauthlib/oauth1/rfc5849/signature.py", line 742, in sign_rsa_sha1_with_client
return _sign_rsa('SHA-1', sig_base_str, client.rsa_key)
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/oauthlib/oauth1/rfc5849/signature.py", line 617, in _sign_rsa
alg = _get_jwt_rsa_algorithm(hash_algorithm_name)
File "/Users/my_user/.local/share/virtualenvs/etl-jira-_y1jbE67/lib/python3.9/site-packages/oauthlib/oauth1/rfc5849/signature.py", line 564, in _get_jwt_rsa_algorithm
'SHA-1': jwt_algorithms.hashes.SHA1,
AttributeError: module 'jwt.algorithms' has no attribute 'hashes'
I was able to fix this by installing the following dependencies:
pyjwt = '2.1.0'
cryptography= '3.4.7'
The namespace conflict between pyjwt
and jwt
packages needs to be documented, so I've labelled this with docs