You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi, I am still trying to migrate a python 2.7 script to python3, using wikitools3, as in issue #8.
Now am I using the develop branch of this project, not a release. My script fails again, for a different reason.
So if I simplify it again, it boils down to this new test_wikitools.py in which I added a login and password to wiki.Wiki:
#!/usr/bin/env python""" quick and dirty script aimed at debugging wikitools3 """""" see issues https://github.com/mediawiki-client-tools/wikitools3/issues """importosfromwikitools3importwiki# now I am using my company's wiki api with credentialsapi_url=os.environ.get('WIKI_URL')
username=os.environ.get('WIKI_USER')
password=os.environ.get('WIKI_PASSWORD')
print("api_url: "+str(api_url) +" username: "+username)
ifnotpassword:
print("Empty variable: WIKI_PASSWORD")
sys.exit(1)
site=wiki.Wiki(api_url, username, password, True)
After making sure I set the WIKI_URL, WIKI_USER and WIKI_PASSWORD variables and run this script, it fails like this:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/base64.py", line 510, in _input_type_check
m = memoryview(s)
TypeError: memoryview: a bytes-like object is required, not 'str'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "./test_wikitools.py", line 16, in <module>
site = wiki.Wiki(api_url, username, password, True)
File "/workdir/wikitools3/wiki.py", line 112, in __init__
self.setSiteinfo()
File "/workdir/wikitools3/wiki.py", line 130, in setSiteinfo
req = api.APIRequest(self, params)
File "/workdir/wikitools3/api.py", line 99, in __init__
base64.encodestring(f"{wiki.auth}:{wiki.httppass}")
File "/usr/local/lib/python3.8/base64.py", line 540, in encodestring
return encodebytes(s)
File "/usr/local/lib/python3.8/base64.py", line 527, in encodebytes
_input_type_check(s)
File "/usr/local/lib/python3.8/base64.py", line 513, in _input_type_check
raise TypeError(msg) from err
TypeError: expected bytes-like object, not str
Apparently base64.encodestring expects bytes not a string. This patch on api.py line 99 seems to fix the problem:
Note that base64.encodestring apparently became base64.encodebytes in python 3.9 so I think it should be base64.encodebytes(f"{wiki.auth}:{wiki.httppass}".encode()).decode()
Hi, I am still trying to migrate a python 2.7 script to python3, using wikitools3, as in issue #8.
Now am I using the develop branch of this project, not a release. My script fails again, for a different reason.
So if I simplify it again, it boils down to this new test_wikitools.py in which I added a login and password to wiki.Wiki:
After making sure I set the WIKI_URL, WIKI_USER and WIKI_PASSWORD variables and run this script, it fails like this:
Apparently base64.encodestring expects bytes not a string. This patch on api.py line 99 seems to fix the problem:
(And then my main script will fail later for a different reason, but I guess this will be a seperate issue).
The text was updated successfully, but these errors were encountered: