From 1cecd2a2de4054cc38d4f82ced48a8815cebf765 Mon Sep 17 00:00:00 2001 From: Padraic Fanning Date: Fri, 18 Feb 2022 19:47:37 -0500 Subject: [PATCH] Add sys.warn_default_encoding --- src/lib.rs | 9 +++++++++ vm/src/stdlib/sys.rs | 3 +++ vm/src/vm/setting.rs | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 28cba7903..fdeb57966 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -386,6 +386,7 @@ fn create_settings(matches: &ArgMatches) -> Settings { } let mut dev_mode = false; + let mut warn_default_encoding = false; if let Some(xopts) = matches.values_of("implementation-option") { settings.xopts.extend(xopts.map(|s| { let mut parts = s.splitn(2, '='); @@ -393,11 +394,19 @@ fn create_settings(matches: &ArgMatches) -> Settings { if name == "dev" { dev_mode = true } + if name == "warn_default_encoding" { + warn_default_encoding = true + } let value = parts.next().map(ToOwned::to_owned); (name, value) })); } settings.dev_mode = dev_mode; + if warn_default_encoding + || (!ignore_environment && env::var_os("PYTHONWARNDEFAULTENCODING").is_some()) + { + settings.warn_default_encoding = true; + } if dev_mode { settings.warnopts.push("default".to_owned()) diff --git a/vm/src/stdlib/sys.rs b/vm/src/stdlib/sys.rs index 9787227dc..1743b1a50 100644 --- a/vm/src/stdlib/sys.rs +++ b/vm/src/stdlib/sys.rs @@ -603,6 +603,8 @@ mod sys { dev_mode: bool, /// -X utf8 utf8_mode: u8, + /// -X warn_default_encoding, PYTHONWARNDEFAULTENCODING + warn_default_encoding: u8, } #[pyimpl(with(PyStructSequence))] @@ -624,6 +626,7 @@ mod sys { isolated: settings.isolated as u8, dev_mode: settings.dev_mode, utf8_mode: 1, + warn_default_encoding: settings.warn_default_encoding as u8, } } diff --git a/vm/src/vm/setting.rs b/vm/src/vm/setting.rs index f6d273373..9ec22e86f 100644 --- a/vm/src/vm/setting.rs +++ b/vm/src/vm/setting.rs @@ -43,6 +43,9 @@ pub struct Settings { /// -Xdev pub dev_mode: bool, + /// -X warn_default_encoding, PYTHONWARNDEFAULTENCODING + pub warn_default_encoding: bool, + /// -Wfoo pub warnopts: Vec, @@ -78,6 +81,7 @@ impl Default for Settings { xopts: vec![], isolated: false, dev_mode: false, + warn_default_encoding: false, warnopts: vec![], path_list: vec![ #[cfg(all(feature = "pylib", not(feature = "freeze-stdlib")))]