From 542e54f59aa3b89f0259acc7e55a197cf8686d36 Mon Sep 17 00:00:00 2001 From: Vlad Mencl Date: Tue, 9 Jun 2026 09:42:29 +1200 Subject: [PATCH] fix: use quote instead of quote_plus MDQ spec explicitly asks for spaces to be encoded as %20, not + This is achieved by urllib.parse.quote - the only difference quote_plus brings is it would be encoding spaces as '+': https://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote_plus While entityIDs cannot really contain spaces (not permitted in an URI), this is all just a technicality, but quote is the correct function to use. --- src/pyff/api.py | 4 ++-- src/pyff/builtins.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pyff/api.py b/src/pyff/api.py index 342c4877..8976519a 100644 --- a/src/pyff/api.py +++ b/src/pyff/api.py @@ -4,7 +4,7 @@ from datetime import datetime, timedelta from json import dumps from typing import Any, Optional -from urllib.parse import quote_plus +from urllib.parse import quote import pyramid.httpexceptions as exc import pytz @@ -395,7 +395,7 @@ def _links(url: str, title: Any = None) -> None: aliases = request.registry.aliases for a in aliases.keys(): for v in request.registry.md.store.attribute(aliases[a]): - _links(f'{a}/{quote_plus(v)}') + _links(f'{a}/{quote(v)}') response = Response(dumps(jrd, default=json_serializer)) response.headers['Content-Type'] = 'application/json' diff --git a/src/pyff/builtins.py b/src/pyff/builtins.py index a3a69ae2..ccd01628 100644 --- a/src/pyff/builtins.py +++ b/src/pyff/builtins.py @@ -15,7 +15,7 @@ from datetime import datetime from io import BytesIO from typing import Optional -from urllib.parse import quote_plus, urlparse +from urllib.parse import quote, urlparse import xmlsec from lxml import etree @@ -539,7 +539,7 @@ def _nop(x): enc = _nop if req.args.get('urlencode_filenames'): - enc = quote_plus + enc = quote if output_file is None: return req.t