@@ -12,7 +12,7 @@ use std::collections::BTreeMap;
1212
1313use bytes:: { Buf , Bytes } ;
1414#[ cfg( feature = "pyo3" ) ]
15- use pyo3:: { exceptions:: PyKeyError , prelude:: * , types:: PyBytes } ;
15+ use pyo3:: { exceptions:: PyKeyError , prelude:: * , types:: PyBytes , Bound } ;
1616#[ cfg( feature = "dat" ) ]
1717use {
1818 crate :: buf:: BufExtra ,
2222
2323use crate :: meta:: Metadata ;
2424/// A collection of files.
25- #[ cfg_attr( feature = "pyo3" , pyclass( frozen) ) ]
25+ #[ cfg_attr( feature = "pyo3" , pyclass( frozen, from_py_object ) ) ]
2626#[ derive( Clone , Default ) ]
2727pub struct Archive {
2828 pub ( crate ) index_id : u32 ,
@@ -174,9 +174,9 @@ impl Archive {
174174 compressed. extend ( buffer. split_to ( header. compressed_len as usize ) ) ;
175175
176176 use pyo3:: prelude:: * ;
177- pyo3 :: prepare_freethreaded_python ( ) ;
177+ Python :: initialize ( ) ;
178178
179- let res = Python :: with_gil ( |py| {
179+ let res = Python :: attach ( |py| {
180180 let zlib = PyModule :: import ( py, "bz2" ) ?;
181181 let decompress = zlib. getattr ( "decompress" ) ?;
182182 let bytes = PyBytes :: new ( py, & compressed) ;
@@ -222,7 +222,7 @@ impl Archive {
222222#[ pymethods]
223223impl Archive {
224224 #[ pyo3( name = "file" ) ]
225- fn py_file < ' p > ( & self , py : Python < ' p > , file_id : u32 ) -> PyResult < & ' p PyBytes > {
225+ fn py_file < ' p > ( & self , py : Python < ' p > , file_id : u32 ) -> PyResult < Bound < ' p , PyBytes > > {
226226 if let Some ( file) = self . files . get ( & file_id) {
227227 Ok ( PyBytes :: new ( py, file) )
228228 } else {
@@ -231,7 +231,7 @@ impl Archive {
231231 }
232232
233233 #[ pyo3( name = "files" ) ]
234- fn py_files < ' p > ( & self , py : Python < ' p > ) -> PyResult < BTreeMap < u32 , & ' p PyBytes > > {
234+ fn py_files < ' p > ( & self , py : Python < ' p > ) -> PyResult < BTreeMap < u32 , Bound < ' p , PyBytes > > > {
235235 Ok ( self . files . iter ( ) . map ( |( & id, file) | ( id, PyBytes :: new ( py, file) ) ) . collect ( ) )
236236 }
237237
0 commit comments