@@ -202,27 +202,34 @@ impl ByteInnerPaddingOptions {
202202#[ derive( FromArgs ) ]
203203pub struct ByteInnerTranslateOptions {
204204 #[ pyarg( positional) ]
205- table : Option < PyBytesInner > ,
205+ table : Option < PyObjectRef > ,
206206 #[ pyarg( any, optional) ]
207- delete : OptionalArg < PyBytesInner > ,
207+ delete : OptionalArg < PyObjectRef > ,
208208}
209209
210210impl ByteInnerTranslateOptions {
211211 pub fn get_value ( self , vm : & VirtualMachine ) -> PyResult < ( Vec < u8 > , Vec < u8 > ) > {
212212 let table = self . table . map_or_else (
213213 || Ok ( ( 0 ..=255 ) . collect :: < Vec < u8 > > ( ) ) ,
214214 |v| {
215- if v. elements . len ( ) != 256 {
216- return Err ( vm. new_value_error (
217- "translation table must be 256 characters long" . to_owned ( ) ,
218- ) ) ;
219- }
220- Ok ( v. elements . to_vec ( ) )
215+ let bytes = v
216+ . try_into_value :: < PyBytesInner > ( vm)
217+ . ok ( )
218+ . filter ( |v| v. elements . len ( ) == 256 )
219+ . ok_or_else ( || {
220+ vm. new_value_error (
221+ "translation table must be 256 characters long" . to_owned ( ) ,
222+ )
223+ } ) ?;
224+ Ok ( bytes. elements . to_vec ( ) )
221225 } ,
222226 ) ?;
223227
224228 let delete = match self . delete {
225- OptionalArg :: Present ( byte) => byte. elements ,
229+ OptionalArg :: Present ( byte) => {
230+ let byte: PyBytesInner = byte. try_into_value ( vm) ?;
231+ byte. elements
232+ }
226233 _ => vec ! [ ] ,
227234 } ;
228235
0 commit comments