diff --git a/guide/src/conversions/traits.md b/guide/src/conversions/traits.md
index 7d9975389f9..d09a684f549 100644
--- a/guide/src/conversions/traits.md
+++ b/guide/src/conversions/traits.md
@@ -171,8 +171,7 @@ enum RustyEnum {
```
If the input is neither a string nor an integer, the error message will be:
-`"Can't convert to Union[str, int]"`, where `` is replaced by the type name and
-`repr()` of the input object.
+`"'' cannot be converted to 'Union[str, int]'"`.
#### `#[derive(FromPyObject)]` Container Attributes
- `pyo3(transparent)`
diff --git a/pyo3-derive-backend/src/from_pyobject.rs b/pyo3-derive-backend/src/from_pyobject.rs
index 8d8dc95660a..5ea0754d205 100644
--- a/pyo3-derive-backend/src/from_pyobject.rs
+++ b/pyo3-derive-backend/src/from_pyobject.rs
@@ -73,11 +73,7 @@ impl<'a> Enum<'a> {
quote!(
#(#var_extracts)*
let type_name = obj.get_type().name();
- let from = obj
- .repr()
- .map(|s| format!("{} ({})", s.to_string_lossy(), type_name))
- .unwrap_or_else(|_| type_name.to_string());
- let err_msg = format!("Can't convert {} to {}", from, #error_names);
+ let err_msg = format!("'{}' object cannot be converted to '{}'", type_name, #error_names);
Err(::pyo3::exceptions::PyTypeError::new_err(err_msg))
)
}
diff --git a/src/err/mod.rs b/src/err/mod.rs
index 294cbe9bcb8..461a1ad49ad 100644
--- a/src/err/mod.rs
+++ b/src/err/mod.rs
@@ -490,11 +490,8 @@ impl<'a> std::fmt::Display for PyDowncastError<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
write!(
f,
- "Can't convert {} to {}",
- self.from
- .repr()
- .map(|s| s.to_string_lossy())
- .unwrap_or_else(|_| self.from.get_type().name()),
+ "'{}' object cannot be converted to '{}'",
+ self.from.get_type().name(),
self.to
)
}
diff --git a/tests/test_frompyobject.rs b/tests/test_frompyobject.rs
index 98f2d2b9908..24a7322b01b 100644
--- a/tests/test_frompyobject.rs
+++ b/tests/test_frompyobject.rs
@@ -296,6 +296,6 @@ fn test_err_rename() {
assert!(f.is_err());
assert_eq!(
f.unwrap_err().to_string(),
- "TypeError: Can't convert {} (dict) to Union[str, uint, int]"
+ "TypeError: 'dict' object cannot be converted to 'Union[str, uint, int]'"
);
}
diff --git a/tests/test_pyfunction.rs b/tests/test_pyfunction.rs
index ae7ccb10a09..c97f4c39faa 100644
--- a/tests/test_pyfunction.rs
+++ b/tests/test_pyfunction.rs
@@ -21,7 +21,7 @@ fn test_conversion_error() {
conversion_error,
"conversion_error('100, -100)",
PyTypeError,
- "argument 'str_arg': Can't convert 100 to PyString"
+ "argument 'str_arg': 'int' object cannot be converted to 'PyString'"
);
py_expect_exception!(
py,
@@ -49,14 +49,14 @@ fn test_conversion_error_signature() {
conversion_error_signature,
"conversion_error_signature('a string', 'another string')",
PyTypeError,
- "argument 'arg1': Can't convert 'a string' to PyTuple"
+ "argument 'arg1': 'str' object cannot be conterted to 'PyTuple'"
);
py_expect_exception!(
py,
conversion_error_signature,
"conversion_error_signature('100, -100)",
PyTypeError,
- "argument 'arg2': Can't convert '-100' to Option"
+ "argument 'arg2': 'int' object cannot be converted to 'Option'"
);
}