parent
656aa28cd5
commit
44309e6b37
|
@ -1875,6 +1875,8 @@ pairs within braces, for example: ``{'jack': 4098, 'sjoerd': 4127}`` or ``{4098:
|
|||
view objects.
|
||||
|
||||
|
||||
.. _dict-views:
|
||||
|
||||
Dictionary view objects
|
||||
-----------------------
|
||||
|
||||
|
|
|
@ -198,10 +198,12 @@ class SocketIO(io.RawIOBase):
|
|||
# XXX More docs
|
||||
|
||||
def __init__(self, sock, mode):
|
||||
if mode not in ("r", "w", "rw"):
|
||||
if mode not in ("r", "w", "rw", "rb", "wb", "rwb"):
|
||||
raise ValueError("invalid mode: %r" % mode)
|
||||
io.RawIOBase.__init__(self)
|
||||
self._sock = sock
|
||||
if "b" not in mode:
|
||||
mode += "b"
|
||||
self._mode = mode
|
||||
self._reading = "r" in mode
|
||||
self._writing = "w" in mode
|
||||
|
|
|
@ -49,7 +49,7 @@ class AutoFileTests(unittest.TestCase):
|
|||
# verify expected attributes exist
|
||||
f = self.f
|
||||
|
||||
self.assertEquals(f.mode, "w")
|
||||
self.assertEquals(f.mode, "wb")
|
||||
self.assertEquals(f.closed, False)
|
||||
|
||||
# verify the attributes are readonly
|
||||
|
@ -159,7 +159,7 @@ class OtherFileTests(unittest.TestCase):
|
|||
|
||||
def testModeStrings(self):
|
||||
# check invalid mode strings
|
||||
for mode in ("", "aU", "wU+", "rb", "rt"):
|
||||
for mode in ("", "aU", "wU+", "rw", "rt"):
|
||||
try:
|
||||
f = _fileio._FileIO(TESTFN, mode)
|
||||
except ValueError:
|
||||
|
|
|
@ -150,7 +150,7 @@ class TestGzip(unittest.TestCase):
|
|||
def test_mode(self):
|
||||
self.test_write()
|
||||
f = gzip.GzipFile(self.filename, 'r')
|
||||
self.assertTrue(f.myfileobj.mode.startswith('r'))
|
||||
self.assertEqual(f.myfileobj.mode, 'rb')
|
||||
f.close()
|
||||
|
||||
def test_1647484(self):
|
||||
|
|
|
@ -1266,7 +1266,7 @@ class MiscIOTest(unittest.TestCase):
|
|||
|
||||
def test_attributes(self):
|
||||
f = io.open(support.TESTFN, "wb", buffering=0)
|
||||
self.assertEquals(f.mode, "w")
|
||||
self.assertEquals(f.mode, "wb")
|
||||
f.close()
|
||||
|
||||
f = io.open(support.TESTFN, "U")
|
||||
|
@ -1274,18 +1274,18 @@ class MiscIOTest(unittest.TestCase):
|
|||
self.assertEquals(f.buffer.name, support.TESTFN)
|
||||
self.assertEquals(f.buffer.raw.name, support.TESTFN)
|
||||
self.assertEquals(f.mode, "U")
|
||||
self.assertEquals(f.buffer.mode, "r")
|
||||
self.assertEquals(f.buffer.raw.mode, "r")
|
||||
self.assertEquals(f.buffer.mode, "rb")
|
||||
self.assertEquals(f.buffer.raw.mode, "rb")
|
||||
f.close()
|
||||
|
||||
f = io.open(support.TESTFN, "w+")
|
||||
self.assertEquals(f.mode, "w+")
|
||||
self.assertEquals(f.buffer.mode, "r+") # Does it really matter?
|
||||
self.assertEquals(f.buffer.raw.mode, "r+")
|
||||
self.assertEquals(f.buffer.mode, "rb+") # Does it really matter?
|
||||
self.assertEquals(f.buffer.raw.mode, "rb+")
|
||||
|
||||
g = io.open(f.fileno(), "wb", closefd=False)
|
||||
self.assertEquals(g.mode, "w")
|
||||
self.assertEquals(g.raw.mode, "w")
|
||||
self.assertEquals(g.mode, "wb")
|
||||
self.assertEquals(g.raw.mode, "wb")
|
||||
self.assertEquals(g.name, f.fileno())
|
||||
self.assertEquals(g.raw.name, f.fileno())
|
||||
f.close()
|
||||
|
|
|
@ -849,11 +849,11 @@ class FileObjectClassTestCase(SocketConnectedTest):
|
|||
self.assert_(not self.cli_file.closed)
|
||||
|
||||
def testAttributes(self):
|
||||
self.assertEqual(self.serv_file.mode, 'r')
|
||||
self.assertEqual(self.serv_file.mode, 'rb')
|
||||
self.assertEqual(self.serv_file.name, self.cli_conn.fileno())
|
||||
|
||||
def _testAttributes(self):
|
||||
self.assertEqual(self.cli_file.mode, 'w')
|
||||
self.assertEqual(self.cli_file.mode, 'wb')
|
||||
self.assertEqual(self.cli_file.name, self.serv_conn.fileno())
|
||||
|
||||
class UnbufferedFileObjectClassTestCase(FileObjectClassTestCase):
|
||||
|
|
|
@ -48,6 +48,8 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- FileIO's mode attribute now always includes ``"b"``.
|
||||
|
||||
- Issue #3799: Fix dbm.dumb to accept strings as well as bytes for keys. String
|
||||
keys are now written out in UTF-8.
|
||||
|
||||
|
|
|
@ -208,6 +208,8 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
|
|||
flags |= O_CREAT;
|
||||
append = 1;
|
||||
break;
|
||||
case 'b':
|
||||
break;
|
||||
case '+':
|
||||
if (plus)
|
||||
goto bad_mode;
|
||||
|
@ -682,12 +684,12 @@ mode_string(PyFileIOObject *self)
|
|||
{
|
||||
if (self->readable) {
|
||||
if (self->writable)
|
||||
return "r+";
|
||||
return "rb+";
|
||||
else
|
||||
return "r";
|
||||
return "rb";
|
||||
}
|
||||
else
|
||||
return "w";
|
||||
return "wb";
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
|
|
Loading…
Reference in New Issue