** Description changed:

+ [Impact]
+ 
+  * Unable to renew/relogin with a new oauth token, using python3 scripts
+  * python2 APIs work (because python2 does not care about str vs bytes)
+ 
+ [Test Case]
+ 
+  * Attempt login_with() using python3 and an expired/invalid existing token
+  * Relogin should be successful, without crashing scripts
+ 
+ [Regression Potential]
+ 
+  * No change in behaviour on python2 (which is what used by reverse 
dependencies)
+  * this is a backport to fix python3 behaviour, for all the newly ported 
maintainance scripts in python3 that prefer to run on "stable" systems
+ 
+ [Other Info]
+  
+  * Well tested in later releases, and with users running from trunk.
+  * I believe this still is not published in the cheeseshop.
+ 
+ [Original bug report]
+ 
  Trying to use Launchpad.login_with() on python3, after fixing the
  earlier bug yields this issue:
  
  Traceback (most recent call last):
-   File "./foo.py", line 31, in <module>
-     lb = launchpad.projects[project]
-   File "/usr/lib/python3/dist-packages/lazr/restfulclient/resource.py", line 
1001, in __getitem__
-     shim_resource._ensure_representation()
-   File "/usr/lib/python3/dist-packages/lazr/restfulclient/resource.py", line 
382, in _ensure_representation
-     representation = self._root._browser.get(self._wadl_resource)
-   File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 
436, in get
-     response, content = self._request(url, extra_headers=headers)
-   File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 
387, in _request
-     str(url), method=method, body=data, headers=headers)
-   File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 
357, in _request_and_retry
-     url, method=method, body=body, headers=headers)
-   File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line 1291, in 
request
-     (response, content) = self._request(conn, authority, uri, request_uri, 
method, body, headers, redirections, cachekey)
-   File "/usr/lib/python3/dist-packages/launchpadlib/launchpad.py", line 132, 
in _request
-     return self.retry_on_bad_token(response, content, *args)
-   File "/usr/lib/python3/dist-packages/launchpadlib/launchpad.py", line 144, 
in retry_on_bad_token
-     self.launchpad.credentials, self.launchpad.credential_store)
-   File "/usr/lib/python3/dist-packages/launchpadlib/credentials.py", line 
545, in __call__
-     self.make_end_user_authorize_token(credentials, request_token_string)
-   File "/usr/lib/python3/dist-packages/launchpadlib/credentials.py", line 
658, in make_end_user_authorize_token
-     self.web_root)
-   File "/usr/lib/python3/dist-packages/launchpadlib/credentials.py", line 
233, in exchange_request_token_for_access_token
-     self.access_token = AccessToken.from_string(content)
-   File "/usr/lib/python3/dist-packages/launchpadlib/credentials.py", line 
251, in from_string
-     key = params['oauth_token']
+   File "./foo.py", line 31, in <module>
+     lb = launchpad.projects[project]
+   File "/usr/lib/python3/dist-packages/lazr/restfulclient/resource.py", line 
1001, in __getitem__
+     shim_resource._ensure_representation()
+   File "/usr/lib/python3/dist-packages/lazr/restfulclient/resource.py", line 
382, in _ensure_representation
+     representation = self._root._browser.get(self._wadl_resource)
+   File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 
436, in get
+     response, content = self._request(url, extra_headers=headers)
+   File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 
387, in _request
+     str(url), method=method, body=data, headers=headers)
+   File "/usr/lib/python3/dist-packages/lazr/restfulclient/_browser.py", line 
357, in _request_and_retry
+     url, method=method, body=body, headers=headers)
+   File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line 1291, in 
request
+     (response, content) = self._request(conn, authority, uri, request_uri, 
method, body, headers, redirections, cachekey)
+   File "/usr/lib/python3/dist-packages/launchpadlib/launchpad.py", line 132, 
in _request
+     return self.retry_on_bad_token(response, content, *args)
+   File "/usr/lib/python3/dist-packages/launchpadlib/launchpad.py", line 144, 
in retry_on_bad_token
+     self.launchpad.credentials, self.launchpad.credential_store)
+   File "/usr/lib/python3/dist-packages/launchpadlib/credentials.py", line 
545, in __call__
+     self.make_end_user_authorize_token(credentials, request_token_string)
+   File "/usr/lib/python3/dist-packages/launchpadlib/credentials.py", line 
658, in make_end_user_authorize_token
+     self.web_root)
+   File "/usr/lib/python3/dist-packages/launchpadlib/credentials.py", line 
233, in exchange_request_token_for_access_token
+     self.access_token = AccessToken.from_string(content)
+   File "/usr/lib/python3/dist-packages/launchpadlib/credentials.py", line 
251, in from_string
+     key = params['oauth_token']
  KeyError: 'oauth_token'
  
  The problem is that params has b'oauth_token', not 'oauth_token', which
  matters on python3

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1471927

Title:
  AccessToken.from_string() crashes on python3

To manage notifications about this bug go to:
https://bugs.launchpad.net/launchpadlib/+bug/1471927/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to