def _do_on_path(self, cb, path, revision=HEAD):
if not path:
raise FileNotFoundError(path, revision)
try:
# path == "src/cws/QMS/Entities/NonconformanceBase#cws-nativeentity#.cws"
# SVN expects to have URLs escaped. Take care to only
# escape the path part of the URL.
if self.client.is_url(normpath):
pathtuple = urlsplit(normpath)
path = pathtuple[2]
if isinstance(path, six.text_type):
path = path.encode('utf-8', 'ignore')
normpath = urlunsplit((pathtuple[0],
pathtuple[1],
quote(path),
'', ''))
normrev = self._normalize_revision(revision)
return cb(normpath, normrev)
As you can see, it combines the path naively into a URL without escaping any characters, then tries to parse it as a URL to URL-escape the path portion of it, which obviously won't work.