Skip to content

Commit 1cecd2a

Browse files
committed
Add sys.warn_default_encoding
1 parent af50fa5 commit 1cecd2a

3 files changed

Lines changed: 16 additions & 0 deletions

File tree

src/lib.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,18 +386,27 @@ fn create_settings(matches: &ArgMatches) -> Settings {
386386
}
387387

388388
let mut dev_mode = false;
389+
let mut warn_default_encoding = false;
389390
if let Some(xopts) = matches.values_of("implementation-option") {
390391
settings.xopts.extend(xopts.map(|s| {
391392
let mut parts = s.splitn(2, '=');
392393
let name = parts.next().unwrap().to_owned();
393394
if name == "dev" {
394395
dev_mode = true
395396
}
397+
if name == "warn_default_encoding" {
398+
warn_default_encoding = true
399+
}
396400
let value = parts.next().map(ToOwned::to_owned);
397401
(name, value)
398402
}));
399403
}
400404
settings.dev_mode = dev_mode;
405+
if warn_default_encoding
406+
|| (!ignore_environment && env::var_os("PYTHONWARNDEFAULTENCODING").is_some())
407+
{
408+
settings.warn_default_encoding = true;
409+
}
401410

402411
if dev_mode {
403412
settings.warnopts.push("default".to_owned())

vm/src/stdlib/sys.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,8 @@ mod sys {
603603
dev_mode: bool,
604604
/// -X utf8
605605
utf8_mode: u8,
606+
/// -X warn_default_encoding, PYTHONWARNDEFAULTENCODING
607+
warn_default_encoding: u8,
606608
}
607609

608610
#[pyimpl(with(PyStructSequence))]
@@ -624,6 +626,7 @@ mod sys {
624626
isolated: settings.isolated as u8,
625627
dev_mode: settings.dev_mode,
626628
utf8_mode: 1,
629+
warn_default_encoding: settings.warn_default_encoding as u8,
627630
}
628631
}
629632

vm/src/vm/setting.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ pub struct Settings {
4343
/// -Xdev
4444
pub dev_mode: bool,
4545

46+
/// -X warn_default_encoding, PYTHONWARNDEFAULTENCODING
47+
pub warn_default_encoding: bool,
48+
4649
/// -Wfoo
4750
pub warnopts: Vec<String>,
4851

@@ -78,6 +81,7 @@ impl Default for Settings {
7881
xopts: vec![],
7982
isolated: false,
8083
dev_mode: false,
84+
warn_default_encoding: false,
8185
warnopts: vec![],
8286
path_list: vec![
8387
#[cfg(all(feature = "pylib", not(feature = "freeze-stdlib")))]

0 commit comments

Comments
 (0)