MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / readline

Method readline

tools/python-3.11.9-amd64/Lib/_pyio.py:2566–2657  ·  view source on GitHub ↗
(self, size=None)

Source from the content-addressed store, hash-verified

2564 return line
2565
2566 def readline(self, size=None):
2567 if self.closed:
2568 raise ValueError("read from closed file")
2569 if size is None:
2570 size = -1
2571 else:
2572 try:
2573 size_index = size.__index__
2574 except AttributeError:
2575 raise TypeError(f"{size!r} is not an integer")
2576 else:
2577 size = size_index()
2578
2579 # Grab all the decoded text (we will rewind any extra bits later).
2580 line = self._get_decoded_chars()
2581
2582 start = 0
2583 # Make the decoder if it doesn't already exist.
2584 if not self._decoder:
2585 self._get_decoder()
2586
2587 pos = endpos = None
2588 while True:
2589 if self._readtranslate:
2590 # Newlines are already translated, only search for \n
2591 pos = line.find('\n', start)
2592 if pos >= 0:
2593 endpos = pos + 1
2594 break
2595 else:
2596 start = len(line)
2597
2598 elif self._readuniversal:
2599 # Universal newline search. Find any of \r, \r\n, \n
2600 # The decoder ensures that \r\n are not split in two pieces
2601
2602 # In C we'd look for these in parallel of course.
2603 nlpos = line.find("\n", start)
2604 crpos = line.find("\r", start)
2605 if crpos == -1:
2606 if nlpos == -1:
2607 # Nothing found
2608 start = len(line)
2609 else:
2610 # Found \n
2611 endpos = nlpos + 1
2612 break
2613 elif nlpos == -1:
2614 # Found lone \r
2615 endpos = crpos + 1
2616 break
2617 elif nlpos < crpos:
2618 # Found \n
2619 endpos = nlpos + 1
2620 break
2621 elif nlpos == crpos + 1:
2622 # Found \r\n
2623 endpos = crpos + 2

Callers 1

__next__Method · 0.95

Calls 6

_get_decoded_charsMethod · 0.95
_get_decoderMethod · 0.95
_read_chunkMethod · 0.95
_set_decoded_charsMethod · 0.95
_rewind_decoded_charsMethod · 0.95
findMethod · 0.45

Tested by

no test coverage detected