bf26daec2d
* Add support for positional-only args * Update changelog. Add a few more tests. Run rust-fmt. * Fix test. * Fix tests again. * Update CHANGELOG.md to link PR instead of issue * Update guide to mention positional-only params * Add unreachable!() per code review * Update and expand tests for pos args. * Fix tests, lint, add UI tests. Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
34 lines
876 B
Rust
34 lines
876 B
Rust
use pyo3::prelude::*;
|
|
|
|
#[pyfunction(a = 5, b)]
|
|
fn pos_after_kw(py: Python, a: i32, b: i32) -> PyObject {
|
|
[a.to_object(py), vararg.into()].to_object(py)
|
|
}
|
|
|
|
#[pyfunction(kwargs = "**", a = 5)]
|
|
fn kw_after_kwargs(py: Python, kwargs: &PyDict, a: i32) -> PyObject {
|
|
[a.to_object(py), vararg.into()].to_object(py)
|
|
}
|
|
|
|
#[pyfunction(a, "*", b, "/", c)]
|
|
fn pos_only_after_kw_only(py: Python, a: i32, b: i32, c: i32) -> i32 {
|
|
a + b + c
|
|
}
|
|
|
|
#[pyfunction(a, args="*", "/", b)]
|
|
fn pos_only_after_args(py: Python, a: i32, args: Vec<i32>, b: i32) -> i32 {
|
|
a + b + c
|
|
}
|
|
|
|
#[pyfunction(a, kwargs="**", "/", b)]
|
|
fn pos_only_after_kwargs(py: Python, a: i32, args: Vec<i32>, b: i32) -> i32 {
|
|
a + b
|
|
}
|
|
|
|
#[pyfunction(kwargs = "**", "*", a)]
|
|
fn kw_only_after_kwargs(py: Python, kwargs: &PyDict, a: i32) -> PyObject {
|
|
[a.to_object(py), vararg.into()].to_object(py)
|
|
}
|
|
|
|
fn main() {}
|