[Python-checkins] r60052 - in python/trunk: Lib/test/test_string.py Lib/tokenize.py Misc/NEWS Parser/tokenizer.c Python/ast.c Python/bltinmodule.c
christian.heimes
python-checkins at python.org
Fri Jan 18 19:24:08 CET 2008
Author: christian.heimes
Date: Fri Jan 18 19:24:07 2008
New Revision: 60052
Modified:
python/trunk/Lib/test/test_string.py
python/trunk/Lib/tokenize.py
python/trunk/Misc/NEWS
python/trunk/Parser/tokenizer.c
python/trunk/Python/ast.c
python/trunk/Python/bltinmodule.c
Log:
Added bytes and b'' as aliases for str and ''
Modified: python/trunk/Lib/test/test_string.py
==============================================================================
--- python/trunk/Lib/test/test_string.py (original)
+++ python/trunk/Lib/test/test_string.py Fri Jan 18 19:24:07 2008
@@ -106,8 +106,19 @@
self.assertEqual(string.capwords('ABC-DEF-GHI', '-'), 'Abc-Def-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():
- test_support.run_unittest(StringTest, ModuleTest)
+ test_support.run_unittest(StringTest, ModuleTest, BytesAliasTest)
if __name__ == "__main__":
test_main()
Modified: python/trunk/Lib/tokenize.py
==============================================================================
--- python/trunk/Lib/tokenize.py (original)
+++ python/trunk/Lib/tokenize.py Fri Jan 18 19:24:07 2008
@@ -109,21 +109,34 @@
"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 = {}
for t in ("'''", '"""',
"r'''", 'r"""', "R'''", 'R"""',
"u'''", 'u"""', "U'''", 'U"""',
"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
single_quoted = {}
for t in ("'", '"',
"r'", 'r"', "R'", 'R"',
"u'", 'u"', "U'", 'U"',
"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
tabsize = 8
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Fri Jan 18 19:24:07 2008
@@ -12,6 +12,9 @@
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
object was converted from a dict to a specialized structseq object.
Modified: python/trunk/Parser/tokenizer.c
==============================================================================
--- python/trunk/Parser/tokenizer.c (original)
+++ python/trunk/Parser/tokenizer.c Fri Jan 18 19:24:07 2008
@@ -1263,6 +1263,14 @@
if (isalpha(c) || c == '_') {
/* Process r"", u"" and ur"" */
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':
c = tok_nextc(tok);
Modified: python/trunk/Python/ast.c
==============================================================================
--- python/trunk/Python/ast.c (original)
+++ python/trunk/Python/ast.c Fri Jan 18 19:24:07 2008
@@ -3238,6 +3238,9 @@
quote = *++s;
unicode = 1;
}
+ if (quote == 'b' || quote == 'B') {
+ quote = *++s;
+ }
if (quote == 'r' || quote == 'R') {
quote = *++s;
rawmode = 1;
Modified: python/trunk/Python/bltinmodule.c
==============================================================================
--- python/trunk/Python/bltinmodule.c (original)
+++ python/trunk/Python/bltinmodule.c Fri Jan 18 19:24:07 2008
@@ -2446,6 +2446,7 @@
SETBUILTIN("True", Py_True);
SETBUILTIN("basestring", &PyBaseString_Type);
SETBUILTIN("bool", &PyBool_Type);
+ SETBUILTIN("bytes", &PyString_Type);
SETBUILTIN("buffer", &PyBuffer_Type);
SETBUILTIN("classmethod", &PyClassMethod_Type);
#ifndef WITHOUT_COMPLEX
More information about the Python-checkins
mailing list