3043: `PyList::as_tuple()` -> `PyList::to_tuple()` r=mejrs a=davidhewitt
As discussed as a follow-up to #3042
Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
3042: add `as_tuple()` method to `PyList` r=davidhewitt a=samuelcolvin
From [benchmarks](25fcf98e12/benches/main.rs (L165-L192)), this is significantly faster than `PyTuple::new(py, the_list)`:
```
test list_as_tuple_direct ... bench: 299 ns/iter (+/- 51)
test list_as_tuple_iterate ... bench: 521 ns/iter (+/- 41)
```
Co-authored-by: Samuel Colvin <s@muelcolvin.com>
3036: fix const-ness of some FFI name & doc members r=adamreichold a=davidhewitt
I just noticed that these are [`*const` since Python 3.7](007d7ff73f (diff-830b405713d1c40982ffa918864e39c40c1b318d79b8dd2b523646dc3bd18b52)).
This might break existing compiles, so will not include this in 0.18.2.
Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
3031: mangle exported functions for PyPy r=davidhewitt a=mattip
I run HEAD of PyO3 with HEAD of some PyPy branches, and noticed that the py3.10 branch (which implements python3.10) [fails to properly build](https://github.com/pypy/binary-testing/actions/runs/4334873617/jobs/7569059852#step:6:179). The failure was a missing export:
```
/home/runner/work/binary-testing/binary-testing/pyo3/src/exceptions.rs:715: \
undefined reference to `PyExc_EncodingWarning'
collect2: error: ld returned 1 exit status
```
So I grepped around in the code for `Py_3_10` to see what new functions were added and found a few that needed PyPy-specific exports.
Co-authored-by: Matti Picus <matti.picus@gmail.com>
3014: feat: add #[pyo3(get, set)] for Cell r=davidhewitt a=AntoineRR
This fixes#2659.
The types for which `#[pyo3(get, set)]` should now work are `Cell`, `Arc` and `Box`.
There is one issue regarding `Box`, the implementation of `FromPyObject` conflicts with another one. I could not find what the issue was, especially since the other implementations for `Arc` and `Cell` work as expected. The related code and test has been commented out for now. Maybe someone could help me fix this issue if I don't figure it out myself? There is also the possibility to remove the implementation for `Box` of course.
Co-authored-by: Antoine Romero-Romero <ant.romero2@orange.fr>
3032: fix clippy and ui tests for Rust 1.68 r=adamreichold a=davidhewitt
The usual 😄
Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
3019: Use stable toolchain for Valgrind job as version 3.20 should handle the DWARF version. r=adamreichold a=adamreichold
Co-authored-by: Adam Reichold <adam.reichold@t-online.de>
3009: Remove stale references to tox.ini from template substitution scripts. r=messense a=adamreichold
Closes#3008
Co-authored-by: Adam Reichold <adam.reichold@t-online.de>
2993: fix `non_snake_case` lint for `#[pyfunction]` generated code r=davidhewitt a=davidhewitt
As promised in #2990
Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
2990: Fix `clippy::redundant_closure` lint firing for pyfunction defaults r=adamreichold a=davidhewitt
Fixes#2988
I'll push a follow-up for the FIXME as a separate PR.
2991: unpin 3.11 ci jobs r=adamreichold a=davidhewitt
With Python 3.11.2 released for a couple weeks now, I think #2817 is probably not an issue in CI any more.
Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
2982: explain STATUS_DLL_NOT_FOUND r=adamreichold a=mejrs
I had someone ask me this today, and googling for it I found various other places where this was asked, with no (good) answers.
Co-authored-by: mejrs <59372212+mejrs@users.noreply.github.com>
2899: RFC: Provide a special purpose FromPyObject impl for byte slices r=davidhewitt a=adamreichold
This enables efficiently and safely getting a byte slice from either bytes or byte arrays.
The main issue I see here is discoverability, i.e. should this be mention in the docs of `PyBytes` and `PyByteArray` or in the guide?
It is also not completely clear whether this really _fixes_ the issue.
Closes#2888
Co-authored-by: Adam Reichold <adam.reichold@t-online.de>
2979: allow `create_exception!` to place the exception in a `dotted.module` r=adamreichold a=davidhewitt
Closes#2946
Credit fully to `@BlueGlassBlock`
Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
2974: Reduce API surface of mod gil to better encapsulate its safety invariants. r=davidhewitt a=adamreichold
Closes#2969
Co-authored-by: Adam Reichold <adam.reichold@t-online.de>
2976: Update Example projects r=adamreichold a=kngwyu
Interestingly, it may be used for ChatGPT 😅
Also I removed my old project because it's way too outdated (around pyo3 0.10?)
Co-authored-by: Yuji Kanagawa <yuji.kngw.80s.revive@gmail.com>
2952: Fix allow_threads segfault r=davidhewitt a=OliverBalfour
Please see the corresponding issue **#2951** for details. This PR adds the failing test from the issue and then a fix for it. The fix simply calls `ReferencePool::update_counts` at the end of `allow_threads` to ensure objects aren't accidentally deleted too soon.
Co-authored-by: Oliver Balfour <oliver.leo.balfour@gmail.com>
2964: Update `README.md` by adding datafusion, ballista and delta-rs r=adamreichold a=iajoiner
Add Python bindings of datafusion, ballista and the official Rust implementation of Delta Lake (delta-rs). The former two are Apache projects under Arrow and the last is from Delta Lake itself so all three projects are notable and need to be added as examples.
Co-authored-by: Ian Alexander Joiner <14581281+iajoiner@users.noreply.github.com>
2961: docs: fix typo in method name r=adamreichold a=lycantropos
There's no `PyFunction::new_closure`, but there is [`PyCFunction::new_closure`](3b2c175f8d/src/types/function.rs (L50-L104)), so I guess it's a typo in docs.
Co-authored-by: Azat Ibrakov <azatibrakov@gmail.com>