Skip to main content

python_macros/
lib.rs

1//! Python macro support for Rusty Python
2//!
3//! This crate provides macro support for Python, allowing Rust code to interact
4//! with Python code more seamlessly.
5
6#![warn(missing_docs)]
7
8use proc_macro::TokenStream;
9use quote::quote;
10use syn::{ItemFn, parse_macro_input};
11
12/// Macro to define a Python function
13#[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            // Python function wrapper
25            #body
26        }
27    };
28
29    TokenStream::from(expanded)
30}