Content-Length: 419606 | pFad | http://github.com/RustPython/RustPython/commit/bfb122ed2da074cf130a1e4ed845c4b9f2c39ce1

04 Add object.{__lt__, __le__, __gt__, __gt__} · RustPython/RustPython@bfb122e · GitHub
Skip to content

Commit bfb122e

Browse files
committed
Add object.{__lt__, __le__, __gt__, __gt__}
1 parent 3c25c14 commit bfb122e

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

vm/src/obj/objobject.rs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,62 @@ fn object_ne(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
4444
objbool::not(vm, &eq)
4545
}
4646

47+
fn object_lt(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
48+
arg_check!(
49+
vm,
50+
args,
51+
required = [(i, Some(vm.ctx.object())), (i2, None)]
52+
);
53+
54+
Err(vm.new_type_error(format!(
55+
"'<' not supported between instances of {} and {}",
56+
i.borrow(),
57+
i2.borrow()
58+
)))
59+
}
60+
61+
fn object_le(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
62+
arg_check!(
63+
vm,
64+
args,
65+
required = [(i, Some(vm.ctx.object())), (i2, None)]
66+
);
67+
68+
Err(vm.new_type_error(format!(
69+
"'<=' not supported between instances of {} and {}",
70+
i.borrow(),
71+
i2.borrow()
72+
)))
73+
}
74+
75+
fn object_gt(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
76+
arg_check!(
77+
vm,
78+
args,
79+
required = [(i, Some(vm.ctx.object())), (i2, None)]
80+
);
81+
82+
Err(vm.new_type_error(format!(
83+
"'>' not supported between instances of {} and {}",
84+
i.borrow(),
85+
i2.borrow()
86+
)))
87+
}
88+
89+
fn object_ge(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
90+
arg_check!(
91+
vm,
92+
args,
93+
required = [(i, Some(vm.ctx.object())), (i2, None)]
94+
);
95+
96+
Err(vm.new_type_error(format!(
97+
"'>=' not supported between instances of {} and {}",
98+
i.borrow(),
99+
i2.borrow()
100+
)))
101+
}
102+
47103
fn object_hash(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
48104
arg_check!(vm, args, required = [(_zelf, Some(vm.ctx.object()))]);
49105

@@ -92,6 +148,10 @@ pub fn init(context: &PyContext) {
92148
context.set_attr(&object, "__init__", context.new_rustfunc(object_init));
93149
context.set_attr(&object, "__eq__", context.new_rustfunc(object_eq));
94150
context.set_attr(&object, "__ne__", context.new_rustfunc(object_ne));
151+
context.set_attr(&object, "__lt__", context.new_rustfunc(object_lt));
152+
context.set_attr(&object, "__le__", context.new_rustfunc(object_le));
153+
context.set_attr(&object, "__gt__", context.new_rustfunc(object_gt));
154+
context.set_attr(&object, "__ge__", context.new_rustfunc(object_ge));
95155
context.set_attr(&object, "__delattr__", context.new_rustfunc(object_delattr));
96156
context.set_attr(
97157
&object,

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/RustPython/RustPython/commit/bfb122ed2da074cf130a1e4ed845c4b9f2c39ce1

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy