pycontribs / jira

Python Jira library. Development chat available on https://matrix.to/#/#pycontribs:matrix.org
https://jira.readthedocs.io
BSD 2-Clause "Simplified" License
1.94k stars 860 forks source link

Jira client throws 'jwt.algorithms' error - `jwt` and `pyjwt` namespace conflict #1096

Open boonware opened 3 years ago

boonware commented 3 years ago

Problem

Launching my application which uses OAuth with the Jira client throws the error AttributeError: module 'jwt.algorithms' has no attribute 'hashes'.

Environment

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'
boonware commented 3 years ago

I was able to fix this by installing the following dependencies:

pyjwt = '2.1.0'
cryptography= '3.4.7'
adehad commented 2 years ago

The namespace conflict between pyjwt and jwt packages needs to be documented, so I've labelled this with docs