mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	Added bytes and b'' as aliases for str and ''
This commit is contained in:
		
							parent
							
								
									a9e073d100
								
							
						
					
					
						commit
						288e89acfc
					
				
					 6 changed files with 43 additions and 4 deletions
				
			
		|  | @ -106,8 +106,19 @@ def test_capwords(self): | ||||||
|         self.assertEqual(string.capwords('ABC-DEF-GHI', '-'), 'Abc-Def-Ghi') |         self.assertEqual(string.capwords('ABC-DEF-GHI', '-'), 'Abc-Def-Ghi') | ||||||
|         self.assertEqual(string.capwords('ABC-def DEF-ghi GHI'), 'Abc-def Def-ghi Ghi') |         self.assertEqual(string.capwords('ABC-def DEF-ghi GHI'), 'Abc-def Def-ghi Ghi') | ||||||
| 
 | 
 | ||||||
|  | class BytesAliasTest(unittest.TestCase): | ||||||
|  | 
 | ||||||
|  |     def test_builtin(self): | ||||||
|  |         self.assert_(str is bytes) | ||||||
|  | 
 | ||||||
|  |     def test_syntax(self): | ||||||
|  |         self.assertEqual(b"spam", "spam") | ||||||
|  |         self.assertEqual(br"egg\foo", "egg\\foo") | ||||||
|  |         self.assert_(type(b""), str) | ||||||
|  |         self.assert_(type(br""), str) | ||||||
|  | 
 | ||||||
| def test_main(): | def test_main(): | ||||||
|     test_support.run_unittest(StringTest, ModuleTest) |     test_support.run_unittest(StringTest, ModuleTest, BytesAliasTest) | ||||||
| 
 | 
 | ||||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||||
|     test_main() |     test_main() | ||||||
|  |  | ||||||
|  | @ -109,21 +109,34 @@ def maybe(*choices): return group(*choices) + '?' | ||||||
|             "uR'''": single3prog, 'uR"""': double3prog, |             "uR'''": single3prog, 'uR"""': double3prog, | ||||||
|             "Ur'''": single3prog, 'Ur"""': double3prog, |             "Ur'''": single3prog, 'Ur"""': double3prog, | ||||||
|             "UR'''": single3prog, 'UR"""': double3prog, |             "UR'''": single3prog, 'UR"""': double3prog, | ||||||
|             'r': None, 'R': None, 'u': None, 'U': None} |             "b'''": single3prog, 'b"""': double3prog, | ||||||
|  |             "br'''": single3prog, 'br"""': double3prog, | ||||||
|  |             "B'''": single3prog, 'B"""': double3prog, | ||||||
|  |             "bR'''": single3prog, 'bR"""': double3prog, | ||||||
|  |             "Br'''": single3prog, 'Br"""': double3prog, | ||||||
|  |             "BR'''": single3prog, 'BR"""': double3prog, | ||||||
|  |             'r': None, 'R': None, 'u': None, 'U': None, | ||||||
|  |             'b': None, 'B': None} | ||||||
| 
 | 
 | ||||||
| triple_quoted = {} | triple_quoted = {} | ||||||
| for t in ("'''", '"""', | for t in ("'''", '"""', | ||||||
|           "r'''", 'r"""', "R'''", 'R"""', |           "r'''", 'r"""', "R'''", 'R"""', | ||||||
|           "u'''", 'u"""', "U'''", 'U"""', |           "u'''", 'u"""', "U'''", 'U"""', | ||||||
|           "ur'''", 'ur"""', "Ur'''", 'Ur"""', |           "ur'''", 'ur"""', "Ur'''", 'Ur"""', | ||||||
|           "uR'''", 'uR"""', "UR'''", 'UR"""'): |           "uR'''", 'uR"""', "UR'''", 'UR"""', | ||||||
|  |           "b'''", 'b"""', "B'''", 'B"""', | ||||||
|  |           "br'''", 'br"""', "Br'''", 'Br"""', | ||||||
|  |           "bR'''", 'bR"""', "BR'''", 'BR"""'): | ||||||
|     triple_quoted[t] = t |     triple_quoted[t] = t | ||||||
| single_quoted = {} | single_quoted = {} | ||||||
| for t in ("'", '"', | for t in ("'", '"', | ||||||
|           "r'", 'r"', "R'", 'R"', |           "r'", 'r"', "R'", 'R"', | ||||||
|           "u'", 'u"', "U'", 'U"', |           "u'", 'u"', "U'", 'U"', | ||||||
|           "ur'", 'ur"', "Ur'", 'Ur"', |           "ur'", 'ur"', "Ur'", 'Ur"', | ||||||
|           "uR'", 'uR"', "UR'", 'UR"' ): |           "uR'", 'uR"', "UR'", 'UR"', | ||||||
|  |           "b'", 'b"', "B'", 'B"', | ||||||
|  |           "br'", 'br"', "Br'", 'Br"', | ||||||
|  |           "bR'", 'bR"', "BR'", 'BR"' ): | ||||||
|     single_quoted[t] = t |     single_quoted[t] = t | ||||||
| 
 | 
 | ||||||
| tabsize = 8 | tabsize = 8 | ||||||
|  |  | ||||||
|  | @ -12,6 +12,9 @@ What's New in Python 2.6 alpha 1? | ||||||
| Core and builtins | Core and builtins | ||||||
| ----------------- | ----------------- | ||||||
| 
 | 
 | ||||||
|  | - Issue #1865: Bytes as an alias for str and b"" as an alias "" were | ||||||
|  |   added. | ||||||
|  | 
 | ||||||
| - sys.float_info / PyFloat_GetInfo: The floating point information | - sys.float_info / PyFloat_GetInfo: The floating point information | ||||||
|   object was converted from a dict to a specialized structseq object. |   object was converted from a dict to a specialized structseq object. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1263,6 +1263,14 @@ tok_get(register struct tok_state *tok, char **p_start, char **p_end) | ||||||
| 	if (isalpha(c) || c == '_') { | 	if (isalpha(c) || c == '_') { | ||||||
| 		/* Process r"", u"" and ur"" */ | 		/* Process r"", u"" and ur"" */ | ||||||
| 		switch (c) { | 		switch (c) { | ||||||
|  | 		case 'b': | ||||||
|  | 		case 'B': | ||||||
|  | 			c = tok_nextc(tok); | ||||||
|  | 			if (c == 'r' || c == 'R') | ||||||
|  | 				c = tok_nextc(tok); | ||||||
|  | 			if (c == '"' || c == '\'') | ||||||
|  | 				goto letter_quote; | ||||||
|  | 			break; | ||||||
| 		case 'r': | 		case 'r': | ||||||
| 		case 'R': | 		case 'R': | ||||||
| 			c = tok_nextc(tok); | 			c = tok_nextc(tok); | ||||||
|  |  | ||||||
|  | @ -3238,6 +3238,9 @@ parsestr(const char *s, const char *encoding) | ||||||
|                         quote = *++s; |                         quote = *++s; | ||||||
|                         unicode = 1; |                         unicode = 1; | ||||||
|                 } |                 } | ||||||
|  |                 if (quote == 'b' || quote == 'B') { | ||||||
|  |                         quote = *++s; | ||||||
|  |                 } | ||||||
|                 if (quote == 'r' || quote == 'R') { |                 if (quote == 'r' || quote == 'R') { | ||||||
|                         quote = *++s; |                         quote = *++s; | ||||||
|                         rawmode = 1; |                         rawmode = 1; | ||||||
|  |  | ||||||
|  | @ -2446,6 +2446,7 @@ _PyBuiltin_Init(void) | ||||||
| 	SETBUILTIN("True",		Py_True); | 	SETBUILTIN("True",		Py_True); | ||||||
| 	SETBUILTIN("basestring",	&PyBaseString_Type); | 	SETBUILTIN("basestring",	&PyBaseString_Type); | ||||||
| 	SETBUILTIN("bool",		&PyBool_Type); | 	SETBUILTIN("bool",		&PyBool_Type); | ||||||
|  | 	SETBUILTIN("bytes",		&PyString_Type); | ||||||
| 	SETBUILTIN("buffer",		&PyBuffer_Type); | 	SETBUILTIN("buffer",		&PyBuffer_Type); | ||||||
| 	SETBUILTIN("classmethod",	&PyClassMethod_Type); | 	SETBUILTIN("classmethod",	&PyClassMethod_Type); | ||||||
| #ifndef WITHOUT_COMPLEX | #ifndef WITHOUT_COMPLEX | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Christian Heimes
						Christian Heimes