Skip to content

Commit 317d7d5

Browse files
committed
use FromPyObjectOwned in derive macro
1 parent 7bcdb7a commit 317d7d5

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

pyo3-macros-backend/src/frompyobject.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,10 @@ fn verify_and_get_lifetime(generics: &syn::Generics) -> Result<Option<&syn::Life
572572
/// * Derivation for structs with generic fields like `struct<T> Foo(T)`
573573
/// adds `T: FromPyObject` on the derived implementation.
574574
pub fn build_derive_from_pyobject(tokens: &DeriveInput) -> Result<TokenStream> {
575+
let options = ContainerOptions::from_attrs(&tokens.attrs)?;
576+
let ctx = &Ctx::new(&options.krate, None);
577+
let Ctx { pyo3_path, .. } = &ctx;
578+
575579
let mut trait_generics = tokens.generics.clone();
576580
let generics = &tokens.generics;
577581
let lt_param = if let Some(lt) = verify_and_get_lifetime(generics)? {
@@ -585,11 +589,8 @@ pub fn build_derive_from_pyobject(tokens: &DeriveInput) -> Result<TokenStream> {
585589
let gen_ident = &param.ident;
586590
where_clause
587591
.predicates
588-
.push(parse_quote!(#gen_ident: for<'_a> FromPyObject<'_a, #lt_param>))
592+
.push(parse_quote!(#gen_ident: #pyo3_path::conversion::FromPyObjectOwned<#lt_param>))
589593
}
590-
let options = ContainerOptions::from_attrs(&tokens.attrs)?;
591-
let ctx = &Ctx::new(&options.krate, None);
592-
let Ctx { pyo3_path, .. } = &ctx;
593594

594595
let derives = match &tokens.data {
595596
syn::Data::Enum(en) => {

0 commit comments

Comments
 (0)