[ https://issues.apache.org/jira/browse/BEAM-5627?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16641075#comment-16641075 ]
Matthias Feys commented on BEAM-5627: ------------------------------------- [~rakeshkumar] & [~splovyt]: this is caused by the test that create inputs with `str()`, which behaves differently between Py3 and Py2. See table below([source|https://timothybramlett.com/Strings_Bytes_and_Unicode_in_Python_2_and_3.html]): |Python 2|this string literal is called a "str" object but its stored as bytes. If you prefix it with "u" you get a "unicode" object which is stored as Unicode code points.| |Python 3|this string literal is a "str" object that stores Unicode code points by default. You can prefix it with "b" to get a bytes object or use .encode.| Adding .encode('utf-8') will resolve these issues. > Several IO tests fail in Python 3 when accessing a temporary file with > TypeError: a bytes-like object is required, not 'str' > ------------------------------------------------------------------------------------------------------------------------------ > > Key: BEAM-5627 > URL: https://issues.apache.org/jira/browse/BEAM-5627 > Project: Beam > Issue Type: Sub-task > Components: sdk-py-core > Reporter: Valentyn Tymofieiev > Assignee: Rakesh Kumar > Priority: Major > > ERROR: test_split_at_fraction_exhaustive > (apache_beam.io.source_test_utils_test.SourceTestUtilsTest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File > "/usr/local/google/home/valentyn/projects/beam/clean_head/beam/sdks/python/apache_beam/io/source_test_utils_test.py", > line 120, in test_split_at_fraction_exhaustive > source = self._create_source(data) > File > "/usr/local/google/home/valentyn/projects/beam/clean_head/beam/sdks/python/apache_beam/io/source_test_utils_test.py", > line 43, in _create_source > source = LineSource(self._create_file_with_data(data)) > File > "/usr/local/google/home/valentyn/projects/beam/clean_head/beam/sdks/python/apache_beam/io/source_test_utils_test.py", > line 35, in _create_file_with_data > f.write(line + '\n') > File > "/usr/local/google/home/valentyn/projects/beam/clean_head/beam/sdks/python/target/.tox/py3/lib/python3.5/tempfile.py", > line 622, in func_wrapper > return func(*args, **kwargs) > TypeError: a bytes-like object is required, not 'str' > Also similar: > ====================================================================== > ERROR: test_file_sink_writing > (apache_beam.io.filebasedsink_test.TestFileBasedSink) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File > "/usr/local/google/home/valentyn/projects/beam/clean_head/beam/sdks/python/ > apache_beam/io/filebasedsink_test.py", line 121, in > test_file_sink_writing > init_token, writer_results = self._common_init(sink) > File > "/usr/local/google/home/valentyn/projects/beam/clean_head/beam/sdks/python/ > apache_beam/io/filebasedsink_test.py", line 103, in _common_init > writer1 = sink.open_writer(init_token, '1') > File > "/usr/local/google/home/valentyn/projects/beam/clean_head/beam/sdks/python/ > apache_beam/options/value_provider.py", line 133, in _f > return fnc(self, *args, **kwargs) > File > "/usr/local/google/home/valentyn/projects/beam/clean_head/beam/sdks/python/ > apache_beam/io/filebasedsink.py", line 185, in open_writer > return FileBasedSinkWriter(self, os.path.join(init_result, uid) + suffix) > File > "/usr/local/google/home/valentyn/projects/beam/clean_head/beam/sdks/python/ > apache_beam/io/filebasedsink.py", line 385, in __init__ > self.temp_handle = self.sink.open(temp_shard_path) > File > "/usr/local/google/home/valentyn/projects/beam/clean_head/beam/sdks/python/ > apache_beam/io/filebasedsink_test.py", line 82, in open > file_handle.write('[start]') > TypeError: a bytes-like object is required, not 'str' -- This message was sent by Atlassian JIRA (v7.6.3#76005)