]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added bytes and b'' as aliases for str and ''
authorChristian Heimes <christian@cheimes.de>
Fri, 18 Jan 2008 18:24:07 +0000 (18:24 +0000)
committerChristian Heimes <christian@cheimes.de>
Fri, 18 Jan 2008 18:24:07 +0000 (18:24 +0000)
Lib/test/test_string.py
Lib/tokenize.py
Misc/NEWS
Parser/tokenizer.c
Python/ast.c
Python/bltinmodule.c

index fdd431d2496b4184822bb78be90b3aa7f70bc1cb..9b2233349947952414e8e8c4afb60501cf78264d 100644 (file)
@@ -106,8 +106,19 @@ class ModuleTest(unittest.TestCase):
         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()
index 5a9d08c7e643ae2ddcc469a5f3621b71a6cad05e..9322e0fe1bcd1a46d80da9692b7b07687f4f5980 100644 (file)
@@ -109,21 +109,34 @@ endprogs = {"'": re.compile(Single), '"': re.compile(Double),
             "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
index 5060b681bd2efdb15e1eef06f48e8e57d2007fc0..cc74e16f471a622c835b118996d4e6e9814d9c70 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 2.6 alpha 1?
 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.
 
index ee353aaebf5cec2e639bf6e4964ef763a9725583..0015daeb72536ca0fd1931b82013f612242b398d 100644 (file)
@@ -1263,6 +1263,14 @@ tok_get(register struct tok_state *tok, char **p_start, char **p_end)
        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);
index ddcd0a0030880a733c66ba4347f04f1b9200720e..aa42fe8e19aa47ff27e03fa2661f6ccbe031bc57 100644 (file)
@@ -3238,6 +3238,9 @@ parsestr(const char *s, const char *encoding)
                         quote = *++s;
                         unicode = 1;
                 }
+                if (quote == 'b' || quote == 'B') {
+                        quote = *++s;
+                }
                 if (quote == 'r' || quote == 'R') {
                         quote = *++s;
                         rawmode = 1;
index 3ebd29df9abd4c1903e16fafebbdc809febc7bd1..9a3135634e09c2093914795d9a30bb1f9dac38ed 100644 (file)
@@ -2446,6 +2446,7 @@ _PyBuiltin_Init(void)
        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