1#![warn(missing_docs)]
7
8use proc_macro::TokenStream;
9use quote::quote;
10use syn::{ItemFn, parse_macro_input};
11
12#[proc_macro_attribute]
14pub fn python_function(_attr: TokenStream, item: TokenStream) -> TokenStream {
15 let input = parse_macro_input!(item as ItemFn);
16 let name = &input.sig.ident;
17 let body = &input.block;
18 let vis = &input.vis;
19 let inputs = &input.sig.inputs;
20 let output = &input.sig.output;
21
22 let expanded = quote! {
23 #vis fn #name(#inputs) #output {
24 #body
26 }
27 };
28
29 TokenStream::from(expanded)
30}