Skip to content

Commit 75161a6

Browse files
authored
Merge pull request RustPython#2248 from youknowone/lease-class
lease_class as much as possible
2 parents aa58b63 + fe5767a commit 75161a6

22 files changed

+53
-43
lines changed

vm/src/bytesinner.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ impl TryFromObject for PyBytesInner {
5151
l @ PyList => l.to_byte_inner(vm),
5252
obj => {
5353
let iter = vm.get_method_or_type_error(obj.clone(), "__iter__", || {
54-
format!("a bytes-like object is required, not {}", obj.class())
54+
format!(
55+
"a bytes-like object is required, not '{}'",
56+
obj.lease_class().name
57+
)
5558
})?;
5659
let iter = PyIterable::from_method(iter);
5760
Ok(PyBytesInner {
@@ -328,7 +331,7 @@ impl PyBytesInner {
328331
let value = vm.to_index(&object).ok_or_else(|| {
329332
vm.new_type_error(format!(
330333
"'{}' object cannot be interpreted as an integer",
331-
object.class().name
334+
object.lease_class().name
332335
))
333336
})?;
334337
// __index__ returned non-int type

vm/src/byteslike.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,10 @@ impl TryFromObject for PyRwBytesLike {
100100
match_class!(match obj {
101101
b @ PyByteArray => Ok(PyRwBytesLike::Bytearray(b)),
102102
array @ PyArray => Ok(PyRwBytesLike::Array(array)),
103-
obj =>
104-
Err(vm.new_type_error(format!("a buffer object is required, not {}", obj.class()))),
103+
obj => Err(vm.new_type_error(format!(
104+
"a buffer object is required, not '{}'",
105+
obj.lease_class().name
106+
))),
105107
})
106108
}
107109
}

vm/src/format.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -906,7 +906,7 @@ fn call_object_format(
906906
if !objtype::isinstance(&result, &vm.ctx.types.str_type) {
907907
return Err(vm.new_type_error(format!(
908908
"__format__ must return a str, not {}",
909-
&result.class().name
909+
&result.lease_class().name
910910
)));
911911
}
912912
Ok(result)

vm/src/function.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ impl PyFuncArgs {
130130
Ok(Some(kwarg))
131131
} else {
132132
let expected_ty_name = &ty.name;
133-
let actual_ty_name = &kwarg.class().name;
133+
let actual_ty_name = &kwarg.lease_class().name;
134134
Err(vm.new_type_error(format!(
135135
"argument of type {} is required for named parameter `{}` (got: {})",
136136
expected_ty_name, key, actual_ty_name

vm/src/obj/objbool.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ impl PyBool {
145145
#[pyslot]
146146
fn tp_new(zelf: PyObjectRef, x: OptionalArg<PyObjectRef>, vm: &VirtualMachine) -> PyResult {
147147
if !objtype::isinstance(&zelf, &vm.ctx.types.type_type) {
148-
let actual_type = &zelf.class().name;
148+
let actual_type = &zelf.lease_class().name;
149149
return Err(vm.new_type_error(format!(
150150
"requires a 'type' object but received a '{}'",
151151
actual_type

vm/src/obj/objcomplex.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ impl PyComplex {
242242
} else {
243243
return Err(vm.new_type_error(format!(
244244
"complex() first argument must be a string or a number, not '{}'",
245-
obj.class()
245+
obj.lease_class().name
246246
)));
247247
}
248248
}
@@ -260,7 +260,7 @@ impl PyComplex {
260260
} else {
261261
return Err(vm.new_type_error(format!(
262262
"complex() second argument must be a number, not '{}'",
263-
obj.class()
263+
obj.lease_class().name
264264
)));
265265
}
266266
}

vm/src/obj/objint.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -747,15 +747,15 @@ pub(crate) fn to_int(vm: &VirtualMachine, obj: &PyObjectRef) -> PyResult<BigInt>
747747
let method = vm.get_method_or_type_error(obj.clone(), "__int__", || {
748748
format!(
749749
"int() argument must be a string or a number, not '{}'",
750-
obj.class().name
750+
obj.lease_class().name
751751
)
752752
})?;
753753
let result = vm.invoke(&method, PyFuncArgs::default())?;
754754
return match result.payload::<PyInt>() {
755755
Some(int_obj) => Ok(int_obj.borrow_value().clone()),
756756
None => Err(vm.new_type_error(format!(
757757
"TypeError: __int__ returned non-int (type '{}')",
758-
result.class().name
758+
result.lease_class().name
759759
))),
760760
};
761761
}

vm/src/obj/objlist.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ impl PyList {
8080
let py_int = PyIntRef::try_from_object(vm, elem.clone()).map_err(|_| {
8181
vm.new_type_error(format!(
8282
"'{}' object cannot be interpreted as an integer",
83-
elem.class().name
83+
elem.lease_class().name
8484
))
8585
})?;
8686
let result = py_int

vm/src/obj/objobject.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ impl PyBaseObject {
228228
Ok(())
229229
}
230230
Err(value) => {
231-
let type_repr = &value.class().name;
231+
let type_repr = &value.lease_class().name;
232232
Err(vm.new_type_error(format!(
233233
"__class__ must be set to a class, not '{}' object",
234234
type_repr

vm/src/obj/objrange.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -414,8 +414,8 @@ impl TryFromObject for RangeIndex {
414414
i @ PyInt => Ok(RangeIndex::Int(i)),
415415
s @ PySlice => Ok(RangeIndex::Slice(s)),
416416
obj => Err(vm.new_type_error(format!(
417-
"sequence indices be integers or slices, not {}",
418-
obj.class(),
417+
"sequence indices be integers or slices, not '{}'",
418+
obj.lease_class().name,
419419
))),
420420
})
421421
}

0 commit comments

Comments
 (0)