From 5f966b0b8d61e2abf003439b2f93a9bd19be798c Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 7 Nov 2020 08:41:42 +0100 Subject: Always pass an encoding to open() using text mode Otherwise we'll end up using the locale encoding. While it's usually utf-8, that's not the case on Windows. There is one place where a file with filenames is passed, not sure there so I left it and passed a explicit None. --- giscanner/cachestore.py | 4 ++-- giscanner/ccompiler.py | 2 +- giscanner/codegen.py | 4 ++-- giscanner/docmain.py | 2 +- giscanner/dumper.py | 4 ++-- giscanner/gdumpparser.py | 2 +- giscanner/scannermain.py | 2 +- giscanner/utils.py | 4 ++-- misc/update-gtkdoc-tests.py | 2 +- misc/update-vulkan-gir.py | 2 +- tests/scanner/test_maintransformer.py | 2 +- tests/scanner/test_transformer.py | 2 +- tests/warn/warningtester.py | 2 +- 13 files changed, 17 insertions(+), 17 deletions(-) diff --git a/giscanner/cachestore.py b/giscanner/cachestore.py index baaaf1ed..e3b76058 100644 --- a/giscanner/cachestore.py +++ b/giscanner/cachestore.py @@ -65,7 +65,7 @@ class CacheStore(object): current_hash = _get_versionhash() version = os.path.join(self._directory, _CACHE_VERSION_FILENAME) try: - with open(version, 'r') as version_file: + with open(version, 'r', encoding='utf-8') as version_file: cache_hash = version_file.read() except (IOError, OSError) as e: # File does not exist @@ -81,7 +81,7 @@ class CacheStore(object): tmp_fd, tmp_filename = tempfile.mkstemp(prefix='g-ir-scanner-cache-version-') try: - with os.fdopen(tmp_fd, 'w') as tmp_file: + with os.fdopen(tmp_fd, 'w', encoding='utf-8') as tmp_file: tmp_file.write(current_hash) # On Unix, this would just be os.rename() but Windows diff --git a/giscanner/ccompiler.py b/giscanner/ccompiler.py index bd1aa78e..cb97e76f 100644 --- a/giscanner/ccompiler.py +++ b/giscanner/ccompiler.py @@ -387,7 +387,7 @@ class CCompiler(object): output_flag = ['-out:' + tmp_filename] proc = subprocess.call(args + [implib] + output_flag, stdout=subprocess.PIPE) - with open(tmp_filename, 'r') as tmp_fileobj: + with open(tmp_filename, 'r', encoding='utf-8') as tmp_fileobj: for line in tmp_fileobj.read().splitlines(): if '__IMPORT_DESCRIPTOR_' in line: diff --git a/giscanner/codegen.py b/giscanner/codegen.py index 138acf72..9faf3cab 100644 --- a/giscanner/codegen.py +++ b/giscanner/codegen.py @@ -161,8 +161,8 @@ class CCodeGenerator(object): self._function_bodies[node] = body def codegen(self): - self.out_h = open(self.out_h_filename, 'w') - self.out_c = open(self.out_c_filename, 'w') + self.out_h = open(self.out_h_filename, 'w', encoding='utf-8') + self.out_c = open(self.out_c_filename, 'w', encoding='utf-8') self._codegen_start() diff --git a/giscanner/docmain.py b/giscanner/docmain.py index 6ef1de4e..dab063ef 100644 --- a/giscanner/docmain.py +++ b/giscanner/docmain.py @@ -71,7 +71,7 @@ def doc_main(args): if args.format == 'sections': sections_file = generate_sections_file(transformer) - with open(args.output, 'w') as fp: + with open(args.output, 'w', encoding='utf-8') as fp: write_sections_file(fp, sections_file) else: writer = DocWriter(transformer, args.language, args.format) diff --git a/giscanner/dumper.py b/giscanner/dumper.py index e4b6ea03..f61c46c1 100644 --- a/giscanner/dumper.py +++ b/giscanner/dumper.py @@ -111,13 +111,13 @@ class DumpCompiler(object): 'gobject-introspection-1.0', 'gdump.c') if not os.path.isfile(gdump_path): raise SystemExit("Couldn't find %r" % (gdump_path, )) - with open(gdump_path) as gdump_file: + with open(gdump_path, encoding='utf-8') as gdump_file: gdump_contents = gdump_file.read() tpl_args['gdump_include'] = gdump_contents tpl_args['init_sections'] = "\n".join(self._options.init_sections) c_path = self._generate_tempfile(tmpdir, '.c') - with open(c_path, 'w') as f: + with open(c_path, 'w', encoding='utf-8') as f: f.write(_PROGRAM_TEMPLATE % tpl_args) # We need to reference our get_type and error_quark functions diff --git a/giscanner/gdumpparser.py b/giscanner/gdumpparser.py index e7ccf575..3d9720d0 100644 --- a/giscanner/gdumpparser.py +++ b/giscanner/gdumpparser.py @@ -144,7 +144,7 @@ class GDumpParser(object): """Load the library (or executable), returning an XML blob containing data gleaned from GObject's primitive introspection.""" in_path = os.path.join(self._binary.tmpdir, 'functions.txt') - with open(in_path, 'w') as f: + with open(in_path, 'w', encoding='utf-8') as f: for func in self._get_type_functions: f.write('get-type:') f.write(func) diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py index ca9065b2..f80b2cfe 100644 --- a/giscanner/scannermain.py +++ b/giscanner/scannermain.py @@ -334,7 +334,7 @@ def extract_filelist(options): filenames = [] if not os.path.exists(options.filelist): _error('%s: no such filelist file' % (options.filelist, )) - with open(options.filelist, "r") as filelist_file: + with open(options.filelist, "r", encoding=None) as filelist_file: lines = filelist_file.readlines() for line in lines: # We don't support real C++ parsing yet, but we should be able diff --git a/giscanner/utils.py b/giscanner/utils.py index d9938fc7..85c0b910 100644 --- a/giscanner/utils.py +++ b/giscanner/utils.py @@ -84,7 +84,7 @@ _libtool_pat = re.compile("dlname='([A-z0-9\\.\\-\\+]+)'\n") def _extract_dlname_field(la_file): - with open(la_file) as f: + with open(la_file, encoding='utf-8') as f: data = f.read() m = _libtool_pat.search(data) if m: @@ -97,7 +97,7 @@ _libtool_libdir_pat = re.compile("libdir='([^']+)'") def _extract_libdir_field(la_file): - with open(la_file) as f: + with open(la_file, encoding='utf-8') as f: data = f.read() m = _libtool_libdir_pat.search(data) if m: diff --git a/misc/update-gtkdoc-tests.py b/misc/update-gtkdoc-tests.py index c182fc11..6f45e348 100644 --- a/misc/update-gtkdoc-tests.py +++ b/misc/update-gtkdoc-tests.py @@ -191,7 +191,7 @@ if __name__ == '__main__': writer = GtkDocCommentBlockWriter(indent=True) logger.enable_warnings(True) - with io.open(path, 'r') as f: + with io.open(path, 'r', encoding='utf-8') as f: lines = f.readlines() chunks = [] diff --git a/misc/update-vulkan-gir.py b/misc/update-vulkan-gir.py index 89792c12..4154702a 100644 --- a/misc/update-vulkan-gir.py +++ b/misc/update-vulkan-gir.py @@ -24,7 +24,7 @@ def show_func_defs(filename, output, extra_cpp_args=None): ast = parse_file(filename, use_cpp=True, cpp_args=extra_cpp_args) - with open(output, 'w') as f: + with open(output, 'w', encoding='utf-8') as f: f.write("""