Added bytes and b'' as aliases for str and ''
This commit is contained in:
parent
a9e073d100
commit
288e89acfc
|
@ -106,8 +106,19 @@ class ModuleTest(unittest.TestCase):
|
||||||
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 @@ endprogs = {"'": re.compile(Single), '"': re.compile(Double),
|
||||||
"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…
Reference in New Issue