jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1330568?usp=email )
Change subject: http: Simplify user-agent username quoting ......................................................................
http: Simplify user-agent username quoting
Use str.isascii() instead of exception-based ASCII detection. Pass Unicode strings directly to urllib.parse.quote.
Change-Id: I75542833faec51724fd06413e70c640d6bf12fcb --- M pywikibot/comms/http.py 1 file changed, 7 insertions(+), 13 deletions(-)
Approvals: jenkins-bot: Verified Xqt: Looks good to me, approved
diff --git a/pywikibot/comms/http.py b/pywikibot/comms/http.py index 8eecccd..a410d7a 100644 --- a/pywikibot/comms/http.py +++ b/pywikibot/comms/http.py @@ -205,8 +205,7 @@ To achieve that, this function:
- replaces spaces (' ') with '_' - - encodes the username as 'utf-8' and if the username is not ASCII - - URL encodes the username if it is not ASCII, or contains '%' + - URL encodes the username if it is not ASCII or contains '%'
.. version-changed:: 11.0 If *username* is not given, get it from environment variables @@ -219,17 +218,12 @@ return ''
username = username.replace(' ', '_') # Avoid spaces or %20. - try: - username.encode('ascii') # just test, but not actually use it - except UnicodeEncodeError: - username = quote(username.encode('utf-8')) - else: - # % is legal in the default $wgLegalTitleChars - # This is so that ops know the real pywikibot will not - # allow a useragent in the username to allow through a hand-coded - # percent-encoded value. - if '%' in username: - username = quote(username) + # % is legal in the default $wgLegalTitleChars + # This is so that ops know the real pywikibot will not + # allow a useragent in the username to allow through a hand-coded + # percent-encoded value. + if '%' in username or not username.isascii(): + username = quote(username) return username
pywikibot-commits@lists.wikimedia.org