# HG changeset patch # User Gregory Szorc # Date 1539289572 -7200 # Node ID 5774fc623a18c5ad95e5dd7238ccfed9869fdef1 # Parent 9310037f0636db5558cf9513b5f6443786f51cec py3: coerce bytestr to bytes to appease urllib.parse.quote_from_bytes() Differential Revision: https://phab.mercurial-scm.org/D4969 diff -r 9310037f0636 -r 5774fc623a18 mercurial/urllibcompat.py --- a/mercurial/urllibcompat.py Thu Oct 11 21:47:39 2018 +0200 +++ b/mercurial/urllibcompat.py Thu Oct 11 22:26:12 2018 +0200 @@ -92,6 +92,10 @@ # (if necessary), and returns str. This is wonky. We provide a custom # implementation that only accepts bytes and emits bytes. def quote(s, safe=r'/'): + # bytestr has an __iter__ that emits characters. quote_from_bytes() + # does an iteration and expects ints. We coerce to bytes to appease it. + if isinstance(s, pycompat.bytestr): + s = bytes(s) s = urllib.parse.quote_from_bytes(s, safe=safe) return s.encode('ascii', 'strict')