From 02ae62dcdc5d5cd9231b32b407bd525e74633003 Mon Sep 17 00:00:00 2001 From: Brett Smith Date: Wed, 19 Apr 2023 09:58:49 -0400 Subject: [PATCH] 18799: Force UTF-8 encoding for discovery2pydoc output Refs #18799. Arvados-DCO-1.1-Signed-off-by: Brett Smith --- sdk/python/discovery2pydoc.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/python/discovery2pydoc.py b/sdk/python/discovery2pydoc.py index dad27f09a7..9f7f87d988 100755 --- a/sdk/python/discovery2pydoc.py +++ b/sdk/python/discovery2pydoc.py @@ -318,10 +318,11 @@ If not provided, retrieved dynamically from Arvados client configuration. parts = urllib.parse.urlsplit(args.discovery_url) if not (parts.scheme or parts.netloc): args.discovery_url = pathlib.Path(args.discovery_url).resolve().as_uri() + # Our output is Python source, so it should be UTF-8 regardless of locale. if args.output_file == STDSTREAM_PATH: - args.out_file = sys.stdout + args.out_file = open(sys.stdout.fileno(), 'w', encoding='utf-8', closefd=False) else: - args.out_file = args.output_file.open('w') + args.out_file = args.output_file.open('w', encoding='utf-8') return args def main(arglist: Optional[Sequence[str]]=None) -> int: @@ -364,6 +365,7 @@ def main(arglist: Optional[Sequence[str]]=None) -> int: } print(Method(name, method_spec).doc(), file=args.out_file) + args.out_file.close() return os.EX_OK if __name__ == '__main__': -- 2.30.2