[libcxx-commits] [libcxx] [libc++] Specify `encoding='utf-8'` in `conformance` script (PR #189534)

A. Jiang via libcxx-commits libcxx-commits at lists.llvm.org
Mon Mar 30 22:42:41 PDT 2026


https://github.com/frederick-vs-ja created https://github.com/llvm/llvm-project/pull/189534

In some environments, especially Windows with active code page other than 65001, some characters in the CSV files cause parse errors without explicitly specifying the UTF-8 encoding.

Explicitly using `encoding='utf-8'` in `click.File` fixes such errors.

>From 4d2231f5b6d30c92d29fe5ad9c2487f58c3da10b Mon Sep 17 00:00:00 2001
From: "A. Jiang" <de34 at live.cn>
Date: Tue, 31 Mar 2026 13:39:30 +0800
Subject: [PATCH] [libc++] Specify `encoding='utf-8'` in `conformance` script

In some environments, especially Windows with active code page other
than 65001, some characters in the CSV files cause parse errors without
explicitly specifying the UTF-8 encoding.

Explicitly using `encoding='utf-8'` in `click.File` fixes such errors.
---
 libcxx/utils/conformance | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/libcxx/utils/conformance b/libcxx/utils/conformance
index 20750204fce50..ae8093c0dd7ce 100755
--- a/libcxx/utils/conformance
+++ b/libcxx/utils/conformance
@@ -496,8 +496,8 @@ def github_link(issues, meeting_voted, status):
         link_github_issue(issue, meeting_voted, status)
 
 @github_cmd.command('create')
- at click.argument('csvfiles', nargs=-1, type=click.File('r'))
- at click.option('--load-github-from', type=click.File('r'), required=False,
+ at click.argument('csvfiles', nargs=-1, type=click.File('r', encoding='utf-8'))
+ at click.option('--load-github-from', type=click.File('r', encoding='utf-8'), required=False,
     help='Optionally load the Github Conformance tracking data from the given file. Useful to avoid '
          'running into API call limits when testing locally. See `conformance github download`.')
 @click.option('--labels', type=str, multiple=True,
@@ -565,7 +565,7 @@ def github_create(csvfiles, load_github_from, labels):
 
 
 @github_cmd.command('download')
- at click.option('--output', '-o', type=click.File('w'), default='-',
+ at click.option('--output', '-o', type=click.File('w', encoding='utf-8'), default='-',
     help='Save the data to the provided file. Default is stdout.')
 def github_download(output):
     """Download libc++ conformance tracking data from Github issues and save it locally."""
@@ -580,7 +580,7 @@ def csv_cmd():
 
 
 @csv_cmd.command('validate')
- at click.argument('files', nargs=-1, type=click.File('r'))
+ at click.argument('files', nargs=-1, type=click.File('r', encoding='utf-8'))
 def csv_validate(files):
     """Validate the format of the provided CSV files."""
     for file in files:
@@ -591,10 +591,10 @@ def csv_validate(files):
 
 
 @csv_cmd.command('synchronize')
- at click.argument('files', nargs=-1, type=click.File('r'))
- at click.option('--output', '-o', type=click.File('w'), default='-',
+ at click.argument('files', nargs=-1, type=click.File('r', encoding='utf-8'))
+ at click.option('--output', '-o', type=click.File('w', encoding='utf-8'), default='-',
     help='Write the generated CSV to the specified file. Defaults to stdout.')
- at click.option('--load-github-from', type=click.File('r'), required=False,
+ at click.option('--load-github-from', type=click.File('r', encoding='utf-8'), required=False,
     help='Optionally load the Github Conformance tracking data from the given file. Useful to avoid '
          'running into API call limits when testing locally. See `conformance github download`.')
 def csv_synchronize(files, output, load_github_from):
@@ -615,9 +615,9 @@ def csv_synchronize(files, output, load_github_from):
 
 @csv_cmd.command('create')
 @click.argument('issues', nargs=-1)
- at click.option('--output', '-o', type=click.File('w'), default='-',
+ at click.option('--output', '-o', type=click.File('w', encoding='utf-8'), default='-',
     help='Write the generated CSV to the specified file. Defaults to stdout.')
- at click.option('--load-github-from', type=click.File('r'), required=False,
+ at click.option('--load-github-from', type=click.File('r', encoding='utf-8'), required=False,
     help='Optionally load the Github Conformance tracking data from the given file. Useful to avoid '
          'running into API call limits when testing locally. See `conformance github download`.')
 def csv_create(issues, output, load_github_from):



More information about the libcxx-commits mailing list