1use pyo3::prelude::*;
2use pyo3::types::{PyDict, PyTuple};
3
4#[pyfunction(signature = ())]
5fn none() {}
6
7type Any<'py> = Bound<'py, PyAny>;
8type Dict<'py> = Bound<'py, PyDict>;
9type Tuple<'py> = Bound<'py, PyTuple>;
10
11#[pyfunction(signature = (a, b = None, *, c = None))]
12fn simple<'py>(
13 a: Any<'py>,
14 b: Option<Any<'py>>,
15 c: Option<Any<'py>>,
16) -> (Any<'py>, Option<Any<'py>>, Option<Any<'py>>) {
17 (a, b, c)
18}
19
20#[pyfunction(signature = (a, b = None, *args, c = None))]
21fn simple_args<'py>(
22 a: Any<'py>,
23 b: Option<Any<'py>>,
24 args: Tuple<'py>,
25 c: Option<Any<'py>>,
26) -> (Any<'py>, Option<Any<'py>>, Tuple<'py>, Option<Any<'py>>) {
27 (a, b, args, c)
28}
29
30#[pyfunction(signature = (a, b = None, c = None, **kwargs))]
31fn simple_kwargs<'py>(
32 a: Any<'py>,
33 b: Option<Any<'py>>,
34 c: Option<Any<'py>>,
35 kwargs: Option<Dict<'py>>,
36) -> (
37 Any<'py>,
38 Option<Any<'py>>,
39 Option<Any<'py>>,
40 Option<Dict<'py>>,
41) {
42 (a, b, c, kwargs)
43}
44
45#[pyfunction(signature = (a, b = None, *args, c = None, **kwargs))]
46fn simple_args_kwargs<'py>(
47 a: Any<'py>,
48 b: Option<Any<'py>>,
49 args: Tuple<'py>,
50 c: Option<Any<'py>>,
51 kwargs: Option<Dict<'py>>,
52) -> (
53 Any<'py>,
54 Option<Any<'py>>,
55 Tuple<'py>,
56 Option<Any<'py>>,
57 Option<Dict<'py>>,
58) {
59 (a, b, args, c, kwargs)
60}
61
62#[pyfunction(signature = (*args, **kwargs))]
63fn args_kwargs<'py>(
64 args: Tuple<'py>,
65 kwargs: Option<Dict<'py>>,
66) -> (Tuple<'py>, Option<Dict<'py>>) {
67 (args, kwargs)
68}
69
70#[pyfunction(signature = (a, /, b))]
71fn positional_only<'py>(a: Any<'py>, b: Any<'py>) -> (Any<'py>, Any<'py>) {
72 (a, b)
73}
74
75#[pyfunction(signature = (a = false, b = 0, c = 0.0, d = ""))]
76fn with_typed_args(a: bool, b: u64, c: f64, d: &str) -> (bool, u64, f64, &str) {
77 (a, b, c, d)
78}
79
80#[pymodule]
81pub mod pyfunctions {
82 #[pymodule_export]
83 use super::{
84 args_kwargs, none, positional_only, simple, simple_args, simple_args_kwargs, simple_kwargs,
85 with_typed_args,
86 };
87}