mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	bpo-42967: coerce bytes separator to string in urllib.parse_qs(l) (#24818)
* coerce bytes separator to string * Add news * Update Misc/NEWS.d/next/Library/2021-03-11-00-31-41.bpo-42967.2PeQRw.rst
This commit is contained in:
		
							parent
							
								
									63bf1abfdc
								
							
						
					
					
						commit
						b38601d496
					
				
					 3 changed files with 8 additions and 0 deletions
				
			
		|  | @ -893,6 +893,8 @@ def test_parse_qs_separator(self): | ||||||
|             with self.subTest(f"Original: {orig!r}, Expected: {expect!r}"): |             with self.subTest(f"Original: {orig!r}, Expected: {expect!r}"): | ||||||
|                 result = urllib.parse.parse_qs(orig, separator=';') |                 result = urllib.parse.parse_qs(orig, separator=';') | ||||||
|                 self.assertEqual(result, expect, "Error parsing %r" % orig) |                 self.assertEqual(result, expect, "Error parsing %r" % orig) | ||||||
|  |                 result_bytes = urllib.parse.parse_qs(orig, separator=b';') | ||||||
|  |                 self.assertEqual(result_bytes, expect, "Error parsing %r" % orig) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     def test_parse_qsl_separator(self): |     def test_parse_qsl_separator(self): | ||||||
|  | @ -912,6 +914,8 @@ def test_parse_qsl_separator(self): | ||||||
|             with self.subTest(f"Original: {orig!r}, Expected: {expect!r}"): |             with self.subTest(f"Original: {orig!r}, Expected: {expect!r}"): | ||||||
|                 result = urllib.parse.parse_qsl(orig, separator=';') |                 result = urllib.parse.parse_qsl(orig, separator=';') | ||||||
|                 self.assertEqual(result, expect, "Error parsing %r" % orig) |                 self.assertEqual(result, expect, "Error parsing %r" % orig) | ||||||
|  |                 result_bytes = urllib.parse.parse_qsl(orig, separator=b';') | ||||||
|  |                 self.assertEqual(result_bytes, expect, "Error parsing %r" % orig) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     def test_urlencode_sequences(self): |     def test_urlencode_sequences(self): | ||||||
|  |  | ||||||
|  | @ -733,6 +733,7 @@ def parse_qsl(qs, keep_blank_values=False, strict_parsing=False, | ||||||
|         Returns a list, as G-d intended. |         Returns a list, as G-d intended. | ||||||
|     """ |     """ | ||||||
|     qs, _coerce_result = _coerce_args(qs) |     qs, _coerce_result = _coerce_args(qs) | ||||||
|  |     separator, _ = _coerce_args(separator) | ||||||
| 
 | 
 | ||||||
|     if not separator or (not isinstance(separator, (str, bytes))): |     if not separator or (not isinstance(separator, (str, bytes))): | ||||||
|         raise ValueError("Separator must be of type string or bytes.") |         raise ValueError("Separator must be of type string or bytes.") | ||||||
|  |  | ||||||
|  | @ -0,0 +1,3 @@ | ||||||
|  | Allow :class:`bytes` ``separator`` argument in ``urllib.parse.parse_qs`` and | ||||||
|  | ``urllib.parse.parse_qsl`` when parsing :class:`str` query strings.  Previously, | ||||||
|  | this raised a ``TypeError``. | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ken Jin
						Ken Jin