@@ -234,11 +234,11 @@ pub fn impl_pymodule(args: PyModuleArgs, module_item: Item) -> Result<TokenStrea |
234 | 234 | #(#cfgs)* |
235 | 235 | { |
236 | 236 | let child_def = #mod_ident::module_def(ctx); |
237 | | - let child = child_def.create_module(vm).unwrap(); |
238 | | - child.__init_methods(vm).unwrap(); |
239 | | - #mod_ident::module_exec(vm, &child).unwrap(); |
| 237 | + let child = child_def.create_module(vm).expect("submodule create_module failed"); |
| 238 | + child.__init_methods(vm).expect("submodule __init_methods failed"); |
| 239 | + #mod_ident::module_exec(vm, &child).expect("submodule module_exec failed"); |
240 | 240 | let child: ::rustpython_vm::PyObjectRef = child.into(); |
241 | | - vm.__module_set_attr(module, ctx.intern_str(#py_name), child).unwrap(); |
| 241 | + vm.__module_set_attr(module, ctx.intern_str(#py_name), child).expect("module set_attr submodule failed"); |
242 | 242 | } |
243 | 243 | }); |
244 | 244 | Ok(()) |
@@ -837,7 +837,15 @@ impl ModuleItem for StructSequenceItem { |
837 | 837 | "#[pystruct_sequence] requires name parameter", |
838 | 838 | ) |
839 | 839 | })?; |
840 | | - let module_name = meta.module()?.unwrap_or_else(|| args.context.name.clone()); |
| 840 | + let module_opt = meta.module()?; |
| 841 | + let has_module = module_opt.is_some(); |
| 842 | + let module_name = module_opt.unwrap_or_else(|| args.context.name.clone()); |
| 843 | + if !has_module { |
| 844 | + let structseq_attr = &mut args.attrs[self.inner.index]; |
| 845 | + structseq_attr.fill_nested_meta("module", || { |
| 846 | + parse_quote! {module = #module_name} |
| 847 | + })?; |
| 848 | + } |
841 | 849 | let no_attr = meta.no_attr()?; |
842 | 850 |
|
843 | 851 | // Generate the class creation code |
|