diff --git a/pyo3-build-config/src/lib.rs b/pyo3-build-config/src/lib.rs index 05320add..e4655cd7 100644 --- a/pyo3-build-config/src/lib.rs +++ b/pyo3-build-config/src/lib.rs @@ -146,6 +146,11 @@ pub fn print_feature_cfgs() { if rustc_minor_version >= 59 { println!("cargo:rustc-cfg=thread_local_const_init"); } + + // invalid_from_utf8 lint was added in Rust 1.74 + if rustc_minor_version >= 74 { + println!("cargo:rustc-cfg=invalid_from_utf8_lint"); + } } /// Private exports used in PyO3's build.rs diff --git a/src/exceptions.rs b/src/exceptions.rs index 187c71b0..6ff662b4 100644 --- a/src/exceptions.rs +++ b/src/exceptions.rs @@ -635,6 +635,7 @@ impl PyUnicodeDecodeError { /// # Examples /// /// ``` + /// #![cfg_attr(invalid_from_utf8_lint, allow(invalid_from_utf8))] /// use pyo3::prelude::*; /// use pyo3::exceptions::PyUnicodeDecodeError; /// @@ -1013,6 +1014,7 @@ mod tests { #[test] fn unicode_decode_error() { let invalid_utf8 = b"fo\xd8o"; + #[cfg_attr(invalid_from_utf8_lint, allow(invalid_from_utf8))] let err = std::str::from_utf8(invalid_utf8).expect_err("should be invalid utf8"); Python::with_gil(|py| { let decode_err = PyUnicodeDecodeError::new_utf8(py, invalid_utf8, err).unwrap(); @@ -1069,6 +1071,7 @@ mod tests { test_exception!(PyUnicodeError); test_exception!(PyUnicodeDecodeError, |py| { let invalid_utf8 = b"fo\xd8o"; + #[cfg_attr(invalid_from_utf8_lint, allow(invalid_from_utf8))] let err = std::str::from_utf8(invalid_utf8).expect_err("should be invalid utf8"); PyErr::from_value(PyUnicodeDecodeError::new_utf8(py, invalid_utf8, err).unwrap()) });