Description: Fix test with Python 3.9.2
 This patch fixes a test that fails with Python 3.9.2. 
Origin: upstream, https://github.com/aio-libs/yarl/pull/575
Bug: https://github.com/aio-libs/yarl/issues/563
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=986525
Last-Update: 2021-04-19

---
Index: yarl/tests/test_url_query.py
===================================================================
--- yarl.orig/tests/test_url_query.py
+++ yarl/tests/test_url_query.py
@@ -63,7 +63,7 @@ def test_ampersand_as_value():
 
 
 def test_semicolon_as_separator():
-    u = URL("http://127.0.0.1/?a=1;b=2")
+    u = URL("http://127.0.0.1/?a=1;b=2", separator=";")
     assert len(u.query) == 2
 
 
Index: yarl/yarl/_url.py
===================================================================
--- yarl.orig/yarl/_url.py
+++ yarl/yarl/_url.py
@@ -126,7 +126,7 @@ class URL:
     #               / path-noscheme
     #               / path-empty
     # absolute-URI  = scheme ":" hier-part [ "?" query ]
-    __slots__ = ("_cache", "_val")
+    __slots__ = ("_cache", "_val", "_separator")
 
     _QUOTER = _Quoter(requote=False)
     _REQUOTER = _Quoter()
@@ -142,7 +142,7 @@ class URL:
     _PATH_UNQUOTER = _Unquoter(unsafe="+")
     _QS_UNQUOTER = _Unquoter(qs=True)
 
-    def __new__(cls, val="", *, encoded=False, strict=None):
+    def __new__(cls, val="", *, encoded=False, strict=None, separator="&"):
         if strict is not None:  # pragma: no cover
             warnings.warn("strict parameter is ignored")
         if type(val) is cls:
@@ -188,6 +188,7 @@ class URL:
         self = object.__new__(cls)
         self._val = val
         self._cache = {}
+        self._separator = separator
         return self
 
     @classmethod
@@ -551,7 +552,21 @@ class URL:
         Empty value if URL has no query part.
 
         """
-        ret = MultiDict(parse_qsl(self.raw_query_string, keep_blank_values=True))
+        if (
+            (3, 6, 13) <= sys.version_info < (3, 7)
+            or (3, 7, 10) <= sys.version_info < (3, 8)
+            or (3, 8, 8) <= sys.version_info < (3, 9)
+            or sys.version_info >= (3, 9, 2)
+        ):
+            ret = MultiDict(
+                parse_qsl(
+                    self.raw_query_string,
+                    keep_blank_values=True,
+                    separator=self._separator,
+                )
+            )
+        else:
+            ret = MultiDict(parse_qsl(self.raw_query_string, keep_blank_values=True))
         return MultiDictProxy(ret)
 
     @property
