@@ -102,6 +102,16 @@ pub fn init(context: &PyContext) {
102
102
context. new_rustfunc ( bytearray_clear) ,
103
103
) ;
104
104
context. set_attr ( & bytearray_type, "pop" , context. new_rustfunc ( bytearray_pop) ) ;
105
+ context. set_attr (
106
+ & bytearray_type,
107
+ "lower" ,
108
+ context. new_rustfunc ( bytearray_lower) ,
109
+ ) ;
110
+ context. set_attr (
111
+ & bytearray_type,
112
+ "upper" ,
113
+ context. new_rustfunc ( bytearray_upper) ,
114
+ ) ;
105
115
}
106
116
107
117
fn bytearray_new ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
@@ -188,7 +198,7 @@ fn bytearray_islower(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
188
198
!bytes. is_empty ( )
189
199
&& bytes
190
200
. iter ( )
191
- . filter ( |x| char:: from ( * * x) . is_whitespace ( ) )
201
+ . filter ( |x| ! char:: from ( * * x) . is_whitespace ( ) )
192
202
. all ( |x| char:: from ( * x) . is_lowercase ( ) ) ,
193
203
) )
194
204
}
@@ -295,3 +305,21 @@ fn bytearray_pop(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
295
305
Err ( vm. new_index_error ( "pop from empty bytearray" . to_string ( ) ) )
296
306
}
297
307
}
308
+
309
+ fn bytearray_lower ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
310
+ arg_check ! ( vm, args, required = [ ( obj, Some ( vm. ctx. bytearray_type( ) ) ) ] ) ;
311
+ let value = get_value ( obj) . to_vec ( ) . to_ascii_lowercase ( ) ;
312
+ Ok ( PyObject :: new (
313
+ PyObjectPayload :: Bytes { value } ,
314
+ vm. ctx . bytearray_type ( ) ,
315
+ ) )
316
+ }
317
+
318
+ fn bytearray_upper ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
319
+ arg_check ! ( vm, args, required = [ ( obj, Some ( vm. ctx. bytearray_type( ) ) ) ] ) ;
320
+ let value = get_value ( obj) . to_vec ( ) . to_ascii_uppercase ( ) ;
321
+ Ok ( PyObject :: new (
322
+ PyObjectPayload :: Bytes { value } ,
323
+ vm. ctx . bytearray_type ( ) ,
324
+ ) )
325
+ }
0 commit comments