Fix Issue9301 - urllib.parse.unquote and unquote_to_byte to raise TypeError for None.
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
index e293cf0..44574c9 100644
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -554,6 +554,7 @@
         self.assertEqual(result.count('%'), 1,
                          "using unquote(): not all characters escaped: "
                          "%s" % result)
+        self.assertRaises(TypeError, urllib.parse.unquote, None)
 
     def test_unquoting_badpercent(self):
         # Test unquoting on bad percent-escapes
@@ -589,6 +590,8 @@
         self.assertEqual(expect, result, "using unquote_to_bytes(): %r != %r"
                          % (expect, result))
 
+        self.assertRaises(TypeError, urllib.parse.unquote_to_bytes, None)
+
     def test_unquoting_mixed_case(self):
         # Test unquoting on mixed-case hex digits in the percent-escapes
         given = '%Ab%eA'
diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py
index 82edea1..691c004 100644
--- a/Lib/urllib/parse.py
+++ b/Lib/urllib/parse.py
@@ -314,6 +314,8 @@
     # Note: strings are encoded as UTF-8. This is only an issue if it contains
     # unescaped non-ASCII characters, which URIs should not.
     if not string:
+        if string is None:
+            raise TypeError('None object is invalid for unquote_to_bytes()')
         return b''
     if isinstance(string, str):
         string = string.encode('utf-8')
@@ -339,6 +341,8 @@
     unquote('abc%20def') -> 'abc def'.
     """
     if not string:
+        if string is None:
+            raise TypeError('None object is invalid for unquote() function.')
         return string
     res = string.split('%')
     if len(res) == 1: