Write data, where s is a str
(self, s)
| 2244 | return self.buffer.isatty() |
| 2245 | |
| 2246 | def write(self, s): |
| 2247 | 'Write data, where s is a str' |
| 2248 | if self.closed: |
| 2249 | raise ValueError("write to closed file") |
| 2250 | if not isinstance(s, str): |
| 2251 | raise TypeError("can't write %s to text stream" % |
| 2252 | s.__class__.__name__) |
| 2253 | length = len(s) |
| 2254 | haslf = (self._writetranslate or self._line_buffering) and "\n" in s |
| 2255 | if haslf and self._writetranslate and self._writenl != "\n": |
| 2256 | s = s.replace("\n", self._writenl) |
| 2257 | encoder = self._encoder or self._get_encoder() |
| 2258 | # XXX What if we were just reading? |
| 2259 | b = encoder.encode(s) |
| 2260 | self.buffer.write(b) |
| 2261 | if self._line_buffering and (haslf or "\r" in s): |
| 2262 | self.flush() |
| 2263 | if self._snapshot is not None: |
| 2264 | self._set_decoded_chars('') |
| 2265 | self._snapshot = None |
| 2266 | if self._decoder: |
| 2267 | self._decoder.reset() |
| 2268 | return length |
| 2269 | |
| 2270 | def _get_encoder(self): |
| 2271 | make_encoder = codecs.getincrementalencoder(self._encoding) |