Skip to content

Commit 97b8a7b

Browse files
authored
Merge pull request RustPython#1621 from RustPython/coolreader18/io-update
Update the io module with a bunch of methods
2 parents 799541b + 255dd5f commit 97b8a7b

File tree

3 files changed

+600
-245
lines changed

3 files changed

+600
-245
lines changed

Lib/io.py

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,99 @@
1+
"""The io module provides the Python interfaces to stream handling. The
2+
builtin open function is defined in this module.
3+
4+
At the top of the I/O hierarchy is the abstract base class IOBase. It
5+
defines the basic interface to a stream. Note, however, that there is no
6+
separation between reading and writing to streams; implementations are
7+
allowed to raise an OSError if they do not support a given operation.
8+
9+
Extending IOBase is RawIOBase which deals simply with the reading and
10+
writing of raw bytes to a stream. FileIO subclasses RawIOBase to provide
11+
an interface to OS files.
12+
13+
BufferedIOBase deals with buffering on a raw byte stream (RawIOBase). Its
14+
subclasses, BufferedWriter, BufferedReader, and BufferedRWPair buffer
15+
streams that are readable, writable, and both respectively.
16+
BufferedRandom provides a buffered interface to random access
17+
streams. BytesIO is a simple stream of in-memory bytes.
18+
19+
Another IOBase subclass, TextIOBase, deals with the encoding and decoding
20+
of streams into text. TextIOWrapper, which extends it, is a buffered text
21+
interface to a buffered raw stream (`BufferedIOBase`). Finally, StringIO
22+
is an in-memory stream for text.
23+
24+
Argument names are not part of the specification, and only the arguments
25+
of open() are intended to be used as keyword arguments.
26+
27+
data:
28+
29+
DEFAULT_BUFFER_SIZE
30+
31+
An int containing the default buffer size used by the module's buffered
32+
I/O classes. open() uses the file's blksize (as obtained by os.stat) if
33+
possible.
34+
"""
35+
# New I/O library conforming to PEP 3116.
36+
37+
__author__ = ("Guido van Rossum <guido@python.org>, "
38+
"Mike Verdone <mike.verdone@gmail.com>, "
39+
"Mark Russell <mark.russell@zen.co.uk>, "
40+
"Antoine Pitrou <solipsis@pitrou.net>, "
41+
"Amaury Forgeot d'Arc <amauryfa@gmail.com>, "
42+
"Benjamin Peterson <benjamin@python.org>")
43+
44+
__all__ = ["BlockingIOError", "open", "IOBase", "RawIOBase", "FileIO",
45+
"BytesIO", "StringIO", "BufferedIOBase",
46+
"BufferedReader", "BufferedWriter", "BufferedRWPair",
47+
"BufferedRandom", "TextIOBase", "TextIOWrapper",
48+
"UnsupportedOperation", "SEEK_SET", "SEEK_CUR", "SEEK_END"]
49+
50+
51+
import _io
52+
import abc
53+
154
from _io import *
55+
56+
OpenWrapper = _io.open # for compatibility with _pyio
57+
58+
# Pretend this exception was created here.
59+
#UnsupportedOperation.__module__ = "io"
60+
61+
# for seek()
62+
SEEK_SET = 0
63+
SEEK_CUR = 1
64+
SEEK_END = 2
65+
66+
# Declaring ABCs in C is tricky so we do it here.
67+
# Method descriptions and default implementations are inherited from the C
68+
# version however.
69+
class IOBase(_io._IOBase, metaclass=abc.ABCMeta):
70+
__doc__ = _io._IOBase.__doc__
71+
72+
class RawIOBase(_io._RawIOBase, IOBase):
73+
__doc__ = _io._RawIOBase.__doc__
74+
75+
class BufferedIOBase(_io._BufferedIOBase, IOBase):
76+
__doc__ = _io._BufferedIOBase.__doc__
77+
78+
class TextIOBase(_io._TextIOBase, IOBase):
79+
__doc__ = _io._TextIOBase.__doc__
80+
81+
try:
82+
RawIOBase.register(FileIO)
83+
except NameError:
84+
pass
85+
86+
for klass in (BytesIO, BufferedReader, BufferedWriter):#, BufferedRandom,
87+
#BufferedRWPair):
88+
BufferedIOBase.register(klass)
89+
90+
for klass in (StringIO, TextIOWrapper):
91+
TextIOBase.register(klass)
92+
del klass
93+
94+
try:
95+
from _io import _WindowsConsoleIO
96+
except ImportError:
97+
pass
98+
else:
99+
RawIOBase.register(_WindowsConsoleIO)

0 commit comments

Comments
 (0)