mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	Issue #21075: fileinput.FileInput now reads bytes from standard stream if
binary mode is specified. Patch by Sam Kimbrel.
This commit is contained in:
		
						commit
						b9183bb4fd
					
				
					 4 changed files with 17 additions and 2 deletions
				
			
		| 
						 | 
					@ -320,7 +320,10 @@ class FileInput:
 | 
				
			||||||
            self._backupfilename = 0
 | 
					            self._backupfilename = 0
 | 
				
			||||||
            if self._filename == '-':
 | 
					            if self._filename == '-':
 | 
				
			||||||
                self._filename = '<stdin>'
 | 
					                self._filename = '<stdin>'
 | 
				
			||||||
                self._file = sys.stdin
 | 
					                if 'b' in self._mode:
 | 
				
			||||||
 | 
					                    self._file = sys.stdin.buffer
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    self._file = sys.stdin
 | 
				
			||||||
                self._isstdin = True
 | 
					                self._isstdin = True
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                if self._inplace:
 | 
					                if self._inplace:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,11 +19,12 @@ try:
 | 
				
			||||||
except ImportError:
 | 
					except ImportError:
 | 
				
			||||||
    gzip = None
 | 
					    gzip = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from io import StringIO
 | 
					from io import BytesIO, StringIO
 | 
				
			||||||
from fileinput import FileInput, hook_encoded
 | 
					from fileinput import FileInput, hook_encoded
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from test.support import verbose, TESTFN, run_unittest, check_warnings
 | 
					from test.support import verbose, TESTFN, run_unittest, check_warnings
 | 
				
			||||||
from test.support import unlink as safe_unlink
 | 
					from test.support import unlink as safe_unlink
 | 
				
			||||||
 | 
					from unittest import mock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# The fileinput module has 2 interfaces: the FileInput class which does
 | 
					# The fileinput module has 2 interfaces: the FileInput class which does
 | 
				
			||||||
| 
						 | 
					@ -232,6 +233,13 @@ class FileInputTests(unittest.TestCase):
 | 
				
			||||||
        finally:
 | 
					        finally:
 | 
				
			||||||
            remove_tempfiles(t1)
 | 
					            remove_tempfiles(t1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_stdin_binary_mode(self):
 | 
				
			||||||
 | 
					        with mock.patch('sys.stdin') as m_stdin:
 | 
				
			||||||
 | 
					            m_stdin.buffer = BytesIO(b'spam, bacon, sausage, and spam')
 | 
				
			||||||
 | 
					            fi = FileInput(files=['-'], mode='rb')
 | 
				
			||||||
 | 
					            lines = list(fi)
 | 
				
			||||||
 | 
					            self.assertEqual(lines, [b'spam, bacon, sausage, and spam'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_file_opening_hook(self):
 | 
					    def test_file_opening_hook(self):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            # cannot use openhook and inplace mode
 | 
					            # cannot use openhook and inplace mode
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -676,6 +676,7 @@ Mads Kiilerich
 | 
				
			||||||
Jason Killen
 | 
					Jason Killen
 | 
				
			||||||
Jan Kim
 | 
					Jan Kim
 | 
				
			||||||
Taek Joo Kim
 | 
					Taek Joo Kim
 | 
				
			||||||
 | 
					Sam Kimbrel
 | 
				
			||||||
W. Trevor King
 | 
					W. Trevor King
 | 
				
			||||||
Paul Kippes
 | 
					Paul Kippes
 | 
				
			||||||
Steve Kirsch
 | 
					Steve Kirsch
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -84,6 +84,9 @@ Core and Builtins
 | 
				
			||||||
Library
 | 
					Library
 | 
				
			||||||
-------
 | 
					-------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Issue #21075: fileinput.FileInput now reads bytes from standard stream if
 | 
				
			||||||
 | 
					  binary mode is specified.  Patch by Sam Kimbrel.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Issue #19775: Add a samefile() method to pathlib Path objects.  Initial
 | 
					- Issue #19775: Add a samefile() method to pathlib Path objects.  Initial
 | 
				
			||||||
  patch by Vajrasky Kok.
 | 
					  patch by Vajrasky Kok.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue