Bruno Kolenbrander
4114dcb1a0
Thread pyo3's path through the builder functions ( #3907 )
...
* Thread pyo3's path through the builder functions
* preserve span of pyo3_path
---------
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
2024-03-04 07:54:04 +00:00
Icxolu
70a7aa808d
deprecate the use of PyCell
in favor of Bound
and Py
( #3916 )
...
* deprecate the use of `PyCell` in favor of `Bound` and `Py`
* update `FromPyObject` for `T: PyClass + Clone` impl
* move `PyCell` deprecation to the `gil-refs` feature gate and add a migration note
2024-03-03 14:47:25 +00:00
Lily Foote
56683ed553
deprecate Py::as_ref ( #3864 )
...
* Deprecate Py::as_ref
* Reword as_ref deprecation note
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
* Tidy up remaining uses of Py::as_ref
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
* Pass hello into println! explicitly
---------
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
2024-02-29 07:15:34 +00:00
Matthew Neeley
68ec6de0c9
Use single-arg form of #[pymodule]
function in docs and tests ( #3899 )
...
* Use single-arg form for `#[pymodule]` functions in docs and tests
* Update guide/src/function.md
Co-authored-by: Icxolu <10486322+Icxolu@users.noreply.github.com>
* Add test of two-argument module function
* Fix new test
---------
Co-authored-by: Icxolu <10486322+Icxolu@users.noreply.github.com>
2024-02-28 22:36:50 +00:00
Lily Foote
5c41ea0ade
Implement From<Bound<'py, T>>
for PyErr ( #3881 )
...
* Implement `From<Bound<'py, T>>` for PyErr
* Replace PyErr::from_value_bound calls with .into
* Fix From<MyError> expected error message
* Add a trait bound to From<Bound<'py, T>> for PyErr
2024-02-26 23:14:41 +00:00
Icxolu
7c10ff4327
allow Bound<'_, T>
in #[pymethods] self
position ( #3896 )
...
* allow `Bound<'_, T>` in #[pymethods] `self` position
* rename `TryFromPyCell` -> `TryFromBoundRef`
* remove unneccessary unsafe
2024-02-25 07:13:36 +00:00
Thomas Tanon
e0e3981e17
#[pymodule] mod some_module { ... } v3 ( #3815 )
...
* #[pymodule] mod some_module { ... } v3
Based on #2367 and #3294
Allows to export classes, native classes, functions and submodules and provide an init function
See test/test_module.rs for an example
Future work:
- update examples, README and guide
- investigate having #[pyclass] and #[pyfunction] directly in the #[pymodule]
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
Co-authored-by: Georg Brandl <georg@python.org>
* tests: group exported imports
* Consolidate pymodule macro code to avoid duplicates
* Makes pymodule_init take Bound<'_, PyModule>
* Renames #[pyo3] to #[pymodule_export]
* Gates #[pymodule] mod behind the experimental-declarative-modules feature
* Properly fails on functions inside of declarative modules
---------
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
Co-authored-by: Georg Brandl <georg@python.org>
2024-02-24 13:50:18 +00:00
Lily Foote
e145ae851a
Update new_closure_bound closure signature ( #3883 )
...
* Update new_closure_bound closure signature
Co-authored-by: Icxolu <10486322+Icxolu@users.noreply.github.com>
* Use anonymous lifetimes in closure bounds
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
* Take &Bound in PyCFunction closures
---------
Co-authored-by: Icxolu <10486322+Icxolu@users.noreply.github.com>
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
2024-02-23 14:07:54 +00:00
David Hewitt
ec6d587218
support Bound
for classmethod
and pass_module
( #3831 )
...
* support `Bound` for `classmethod` and `pass_module`
* `from_ref_to_ptr` -> `ref_from_ptr`
* add detailed docs to `ref_from_ptr`
2024-02-16 00:36:11 +00:00
Icxolu
0c12d9137f
port Python::import
to Bound
API ( #3832 )
...
* port `Python::import` to `Bound` API
* tidy up imports in tests/test_datetime_import.rs
---------
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
2024-02-14 00:24:37 +00:00
Icxolu
c359f5ca1d
deprecate PyDict::new
constructor ( #3823 )
...
* deprecate `PyDict::new`
* update benchmarks
* convert `test_frompyobject`
2024-02-11 23:55:56 +00:00
David Hewitt
bcb7b88c23
ci: updates for rust 1.76
2024-02-08 21:13:58 +00:00
Blaž Šnuderl
aa3c938b5e
PyCFunction bound api
2024-02-06 18:44:53 +01:00
David Hewitt
8f8d4d33fa
Merge pull request #3776 from davidhewitt/bound-extract
...
migrate `FromPyObject` for `Bound` and `Py` to new APIs
2024-02-02 23:10:47 +00:00
David Hewitt
a60c1821af
implement PyFunctionArgument
for &Bound<T>
2024-02-01 13:22:53 +00:00
David Hewitt
c47565666d
add PyString::new_bound
2024-01-29 13:14:00 +00:00
Icxolu
7fddd983b4
update test_compile_error
ui test output
2024-01-27 12:37:26 +01:00
Mate Kovacs
3ed5ddb0ec
feat: support pyclass on complex enums
2024-01-18 22:04:42 +09:00
David Hewitt
50e33d86c7
add call_bound
and call_method_bound
2024-01-03 13:24:14 +00:00
David Hewitt
e42d8cf612
ci: updates for Rust 1.75
2023-12-29 13:36:46 +00:00
David Hewitt
0f242c399d
make DowncastError
and DowncastIntoError
public
2023-12-21 13:03:59 +00:00
David Hewitt
1451418ee4
Add Py2
variants of PyDowncastError
2023-12-19 20:59:57 +00:00
Joseph Perez
8a674c2bd3
feat: add coroutine::CancelHandle
2023-12-04 07:46:51 +01:00
David Hewitt
5c6d49084f
remove all functionality deprecated in 0.19
2023-11-27 22:02:19 +00:00
David Hewitt
5ac56b8eb0
improve error for invalid #[classmethod]
receivers
2023-11-24 03:24:46 +00:00
David Hewitt
aba3a3552d
remove type_is_pymodule
2023-11-22 21:30:10 +00:00
David Hewitt
69870d2298
Merge pull request #3540 from wyfo/coroutine
...
feat: support `async fn` in macros with coroutine implementation
2023-11-22 19:52:15 +00:00
David Hewitt
3f0dfa9698
Merge pull request #3587 from wyfo/classmethod_into
...
feat: allow classmethods to receive `Py<PyType>`
2023-11-22 19:34:19 +00:00
Joseph Perez
627841f1e2
feat: support async fn
in macros with coroutine implementation
2023-11-22 20:25:36 +01:00
Joseph Perez
744de3a142
feat: allow classmethod
/pass_module
to receive owned types
...
This is necessary for async functions
2023-11-22 07:45:59 +01:00
David Hewitt
29ad73b6d5
ci: updates for rust 1.74
2023-11-16 16:06:01 +00:00
David Hewitt
b73c06948c
Merge pull request #3504 from davidhewitt/classmethod-receiver
...
emit helpful error hint for classmethod with receiver
2023-10-10 21:35:34 +00:00
David Hewitt
6c90325a1c
deprecate undocumented #[__new__]
form of #[new]
2023-10-10 08:47:03 +01:00
David Hewitt
ddc04ea093
emit helpful error hint for classmethod with receiver
2023-10-10 06:30:19 +01:00
David Hewitt
1158c08f42
error on passing arguments to #[new]
and similar attributes
2023-10-08 21:31:59 +01:00
David Hewitt
a1d333a563
emit compile errors on macros inside #[pymethods]
...
Co-authored-by: Bruno Kolenbrander <59372212+mejrs@users.noreply.github.com>
2023-10-02 22:15:29 +01:00
David Hewitt
4c46d81afd
simplify thread checker implementation
2023-09-03 14:15:26 +01:00
David Hewitt
a5d0a16b21
ci: updates for Rust 1.72
2023-08-25 12:30:34 +01:00
DataTriny
f02fe9478d
Make rename_all accept a renaming rule, allow applying it to classes as well
2023-08-15 10:15:48 +02:00
DataTriny
57505cb1a1
Fix tests
2023-08-13 18:54:55 +02:00
David Hewitt
b65cbb958b
ci: updates for rust 1.71
2023-07-14 12:10:37 +01:00
David Hewitt
56b7c38e24
improve error span for mutable access to #[pyclass(frozen)]
2023-07-11 22:34:53 +01:00
David Hewitt
bf2f441567
prefer inner / _private naming
2023-07-04 21:03:24 +01:00
mejrs
51a6863440
Give a better error message for Python in traverse
2023-06-19 23:25:51 +02:00
David Hewitt
4f3fcdbf0f
remove all functionality deprecated in PyO3 0.18
2023-06-13 22:27:43 +01:00
Adam Reichold
0d30bb7d3d
Bump Rust edition to 2021 and make current Clippy happy.
2023-06-07 21:15:38 +02:00
David Hewitt
8850d5d384
support ordering magic methods for #[pyclass]
2023-06-04 13:58:18 +01:00
Adam Reichold
90fcc63eda
Replace the nightly UI tests by doctests since we cannot keep up with the changing error outputs of nightly in any case.
2023-05-25 21:37:32 +02:00
Adam Reichold
18397828e5
Move locking the GIL and handling the resulting panics into a library function.
2023-05-25 20:01:35 +02:00
Adam Reichold
62f424b690
Drop EnsureGIL to remove one layer of indirection from the implementation of Python::with_gil
2023-05-23 23:31:47 +02:00