Commit Graph

245 Commits

Author SHA1 Message Date
kngwyu d019fe814c Bump version to 0.8.1 2019-10-08 01:52:06 +09:00
Martin Larralde 33bf37d3d8 Run `cargo fmt` on source code and update `CHANGELOG.md` 2019-10-07 17:12:32 +02:00
konstin a3e41cc819 Release 0.8.0 2019-09-05 13:18:50 +02:00
konstin 3228b4cd6c
Merge pull request #585 from andersk/drain-gil
Require the GIL to be held in ReleasePool::drain
2019-09-05 12:46:35 +02:00
konstin 305b774ded
Merge pull request #450 from birkenfeld/parse_args_msg
Adjust the varargs/kwds objects to remove arguments consumed by parameters
2019-09-05 12:45:50 +02:00
kngwyu df44e500a9 Remove py from parse_fn_args's args(to address clippy warning) 2019-09-02 23:05:42 +09:00
kngwyu 3d821b7f47 Enable slf: PyRef<'py, Self> 2019-09-02 00:31:22 +09:00
kngwyu c7e377a472 [derive_utils] Copy kwargs not to modify it 2019-09-01 23:59:24 +09:00
kngwyu 96b71bfb76 Merge branch 'master' into parse_args_msg 2019-08-31 17:03:15 +09:00
Anders Kaseorg e70e9ab5e6 Require the GIL to be held to drain the ReleasePool
This adds a `Python` marker to `GILPool`, to prevent the caller from
misusing it to drain the `ReleasePool` and release Python objects
without the GIL held.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2019-08-29 23:55:59 -07:00
konstin 30e82a3018 Replace IntoPyObject with IntoPy<PyObject> 2019-08-24 19:23:28 +02:00
konstin 39f151c3bd Upgrade to syn 1.0 2019-08-19 13:11:57 +02:00
konstin 5096f936dc Disable segfaulty subclassing by default
See https://github.com/PyO3/pyo3/issues/220 and https://github.com/PyO3/pyo3/issues/407 for details on those segfaults
2019-08-05 11:52:47 +02:00
Yuji Kanagawa 67a7a6de67
Merge branch 'master' into clippy 2019-07-15 12:44:56 +09:00
Alexander Niederbühl faa21f48c7 Fix some clippy lints 2019-07-14 22:42:37 +02:00
Paul Ganssle 59ed277879
Enforce GC contract at compile time
PyGCProtocol must be implemented for anything registered as tracked by
the garbage collector. This modifies the `pyclass` macro to enforce this
at compile time.
2019-07-14 17:55:47 +02:00
kngwyu a6438ebb10 Handle a corner case in which a getter takes multiple Python 2019-07-14 14:35:50 +09:00
kngwyu 721e746585 Allow py: Python as an argument of getter 2019-07-12 23:41:13 +09:00
kngwyu fc5cdc1031 [derive-backend] Add utils::if_type_is_python 2019-07-12 22:22:56 +09:00
Georg Brandl cba1657460 Adjust the varargs/kwds objects to remove arguments consumed by parameters
Also fix some other validation issues and add more tests.

fixes #420
2019-06-16 22:13:50 +09:00
kngwyu 35f5301675 Reject generics explicitly for #[pyclass] 2019-06-05 18:46:17 +09:00
Martin Larralde 99fdafbb88 Allow setting the module name for a pyclass (#499)
* Add `MODULE` const value to `PyTypeInfo` trait

* Allow setting module name in `pyclass` macro arguments

* Add `$module` argument to `pyobject_native_type` macro in `pyo3::types`

* Set the right module for builtin types in `pyo3::types`

* Add `module` argument to example `word_count.WordCounter` class

* Add `module` argument of `pyclass` macro to guide

* Reformat code using `rustfmt`

* Add tests and entry in CHANGELOG.md for `module` argument in `pyclass`

* Make `$module` parameter in `pyobject_native_type` optional

* Make `pyobject_native_type` declare module as `Some("builtins")` by default
2019-06-03 12:18:44 +09:00
konstin 0279b3d69f Release 0.7.0 2019-05-26 17:27:14 +09:00
Alexander Niederbühl 6a7090c0b0 Fix some clippy lints 2019-05-16 00:16:23 +02:00
Yuji Kanagawa be10800ea6
Merge pull request #461 from kngwyu/pymethod-with-lifetime
Allow #[pymethods] to use lifetime
2019-04-29 13:12:51 +09:00
konstin aeae195cb4 [WIP] Use syn::ext::IdentExt::unraw 2019-04-28 10:09:55 +02:00
kngwyu cf689840ef Allow lifetime in pymethods 2019-04-26 14:28:29 +09:00
Yuji Kanagawa 60cd0d09c4
Merge pull request #419 from kngwyu/pyclass-regression
Allow slf: PyRef<Self>/PyRefMut<Self> in pymethods
2019-04-24 14:10:28 +09:00
konstin 7149a1fecb
Bump to 0.7.0-alpha.1 (#457) 2019-04-23 18:55:35 +02:00
kngwyu 09bf9bbf4a Allow slf: PyRef<Self> by replacing Self 2019-04-23 23:16:09 +09:00
kngwyu b2e01066f0 Introduce FromPyPointer for slf: PyRef/PyRefMut 2019-04-23 23:16:09 +09:00
kngwyu 515c7beac0 Allow slf: Py<Self>/PyRef<Self>/PyRefMut<Self> in pymethods 2019-04-23 23:16:08 +09:00
Yuji Kanagawa fb8d3605d1
Merge pull request #449 from birkenfeld/unwrapped_prop_types
Allow omitting PyResult wrapping in property get/set methods
2019-04-22 12:00:42 +09:00
konstin f62f384ecd
Merge pull request #448 from PyO3/fix_442
Properly scope libc to fix #442
2019-04-18 18:46:47 +02:00
Georg Brandl 117f6eb47d Allow omitting PyResult wrapping in property get/set methods
fixes #443
2019-04-17 22:29:12 +02:00
konstin 6d80ee0679 Properly scope libc to fix #442
Apparently we can't add a test for that because the test crates have libc
in scope
2019-04-17 19:08:55 +02:00
Fabrice Desclaux 73e4ed723f Fix typo 2019-04-17 14:22:16 +02:00
Martin Larralde 51be6a60fe Run `cargo fmt` on `pyo3-derive-backend` and `tests` 2019-04-14 01:50:00 +02:00
Martin Larralde 4e3d828181 Remove uneeded `syn::parse_str` from `pyo3-derive-backend` 2019-04-14 01:47:19 +02:00
Martin Larralde d482b715de Fix signatures of `PySequenceProtocol` methods 2019-03-31 05:28:52 +02:00
ijl 2bb0d05a30 Drop support for python2 2019-03-29 12:37:26 +00:00
konstin 8acc5289cc Revert 176e0981c1 2019-03-28 12:54:26 +01:00
konstin 176e0981c1 (cargo-release) start next development iteration 0.6.1-alpha.0 2019-03-28 12:52:34 +01:00
konstin 3f27647b1b Bump to 0.6.0 2019-03-28 12:49:59 +01:00
konstin 59a9d4fd9f
Merge branch 'master' into pyany 2019-03-18 01:00:26 +01:00
konstin a56147fa52 Replace `::pyo3::` with only `pyo3::` in the proc macros
This makes reexporting the macro output possible in the 2018 edition
2019-03-16 11:42:10 +01:00
konstin 6540a374af Export pyo3_derive_backend::pyimpl::impl_methods 2019-03-16 11:38:05 +01:00
kngwyu 874d8a0835 Rename PyObjectRef with PyAny 2019-03-04 13:50:43 +09:00
konstin ad590bd158 Some api improvements 2019-02-23 18:01:22 +01:00
konstin 0cd72ac213 Bump to 0.6.0-alpha.4 2019-02-20 11:30:09 +01:00
konstin d02f7c3aa5 Big proc macro refactoring
* Removed a lot of clutter, unified some code
 * Started using syn::parse::Parse for pyfunction attributes 
 * No more newlines between imports
 * Renamed `#[prop(get, set)]` to `#[pyo3(get, set)]`
 * `#[pyfunction]` now supports the same arguments as `#[pyfn()]`
 * Some macros now emit proper spanned errors instead of panics.
2019-02-18 20:07:56 +01:00
konstin 1a489d2829 Make the init methods use a value instead of a function 2019-02-13 13:59:47 +01:00
konstin ce659941e8 Cleanup PyTypeObject and PyTypeCreate 2019-02-13 12:32:59 +01:00
kngwyu 22687c3712 Modify PyIterProtocol to take PyRefMut 2019-02-05 17:27:34 +09:00
kngwyu 76e30b5248 Remove ToPyPointer and so on from pyclass 2019-02-04 00:34:06 +09:00
konstin 56f2257e90 rust 2018 fixes 2019-02-01 16:23:34 +01:00
konstin ae8a37cd0a Allow 0..n pymethod blocks without specialization 2019-02-01 16:23:34 +01:00
konstin 936f0153e8 Migrate to rust 2018 2019-02-01 14:23:29 +01:00
konstin 5edd263371 rustfmt 2019-01-08 20:18:06 +01:00
konstin 0deaee01ad Bump to 0.6.0-alpha.1 and update changelog from 0.5.3 2019-01-04 11:53:46 +01:00
konstin 89872dceb9 Replace deprecated methods 2018-12-15 14:15:43 +01:00
konstin 6d7f326176 Rename async to pyasync in the derive backend to fix #309
Patch created by @IvanKuzavkov
2018-12-15 14:13:18 +01:00
konstin 9c8c5a6063 Rename #[pymodinit] to #[pymodule] 2018-11-15 19:43:29 +01:00
konstin 863ffb161f Add wrap_module macro 2018-11-15 19:43:29 +01:00
Chitsanu 19a9b7ef32
Fix typo in defs.rs
Are these typos?
2018-11-13 13:01:25 +01:00
konstin d1de3338d1 Refactor PyObjectAlloc 2018-11-12 16:45:57 +01:00
konstin 57afb51604 Remove PyToken completely; Fixes #94 2018-11-12 14:42:21 +01:00
konstin fb2349b6ec Remove PyToken usages from tests 2018-11-12 14:41:29 +01:00
konstin cadd0fb50e Release 0.5.0 2018-11-11 12:26:43 +01:00
konstin 234e2c6998 Release 0.5.0-alpha.3 to fix #256 2018-11-02 16:34:40 +01:00
konstin 3b63cc9178 v0.5.0-alpha.2 2018-10-29 17:36:06 +01:00
konstin b90d45d7e7 Better error reporting to fix #246 2018-10-10 19:05:36 +02:00
konstin 5100676497 Splitted PyTypeCreate of PyTypeObject to remove specialization 2018-10-03 22:12:22 +02:00
konstin 71c584a110 De-specialize ToBorrowedObject 2018-10-03 21:04:49 +02:00
konstin 3a95d163ca New rustfmt version
You might need to upgrade to the latest nightly to get the same results
2018-09-28 23:34:57 +02:00
konstin c1cb5ca74f Use `::std` to fix #233 2018-09-27 00:55:45 +02:00
konstin 302c099a76 Big refactoring to shrink the prelude 2018-09-21 23:34:28 +02:00
konstin f9bca1aebe Prerelease 0.5.0-alpha.1 #223 2018-09-17 22:51:58 +02:00
konstin 2904291b9e Better code generation 2018-09-17 19:48:22 +02:00
konstin 0372360811 Add test for #219 2018-09-17 19:47:23 +02:00
ijl 5ef95f9d07 Fix pymodinit for python2
error[E0425]: cannot find function `PyEval_InitThreads_if_with_thread` in module `pyo3::ffi`

25 | #[pymodinit]
   | ^^^^^^^^^^^^ not found in `pyo3::ffi`
2018-09-13 22:22:37 +00:00
konstin 10ef6cd111 Fix cfg on PyEval_InitThread to fix #219 2018-09-11 22:38:31 +02:00
konstin d638a51971 A bit more debug info on failed build scripts 2018-09-09 18:14:14 +02:00
konstin d92e522243 Syn 0.15 2018-09-09 00:20:04 +02:00
konstin ddc6313e74 `#[pyclass]` objects can now be returned from rust functions 2018-09-06 18:04:13 +02:00
konstin 4c1ff24b2b Fix raw identifiers 2018-09-03 20:50:18 +02:00
konstin e6569ae61e Remove ::pyo3::argparse::get_kwargs for from_borrowed_ptr_or_opt 2018-09-03 20:50:02 +02:00
konstin f58549f1d8 Get rid of a bunch of PyTokens 2018-09-02 23:33:45 +02:00
konstin a5ab5661a2 Upgrade to syn 0.15-rc 2018-09-02 23:13:35 +02:00
konstin a2af5fe71d Advertise pyo3-pack a bit more 2018-08-30 23:20:04 +02:00
konstin 4847d56325 Less java-esque naming 2018-08-26 18:48:57 +02:00
konstin 7053c897aa
Get rid of #[inline(always)] and replace it with #[inline]
I've just seen that this had been hidden from clippy through the ffi module reordering, but fixing this on master would cause merge conflicts, so I'm fixing this here directly
2018-08-21 18:33:33 -04:00
konstin 9cadbd11de v0.4.1 2018-08-20 14:34:34 +02:00
konstin 991a8b94d2 More nightly fixes 2018-08-19 20:42:17 +02:00
konstin b12b65cfae Cleanup 2018-08-19 20:06:47 +02:00
konstin d0ed68414a Many small improvements 2018-08-04 19:56:59 +02:00
konstin b7dc0ad695 v0.4.0 2018-07-30 23:10:50 +02:00
konstin fe8a719ee1 Rustfmt all the things ✔️ 2018-07-30 23:05:10 +02:00
konstin 83db765889 Refactoring 2018-07-30 22:56:25 +02:00
kngwyu 686d006bea Specify proc-macro2 version
Since we can't compile 0.4.8 in current nightly.
See
9f0a28a9c9
for upstream change.
2018-07-24 17:17:11 +09:00
konstin 2627fa8a08 0.3.2 2018-07-22 21:36:18 +02:00
konstin 3248927db2 Bump versions in the Cargo.toml files
One day I'll get the order right
2018-07-18 14:11:24 +02:00
konstin d59bebcc38 Upgrade from proc_macro to use_extern_macros 2018-07-18 13:08:05 +02:00
konstin dbd74401eb Rename the `base` option in the `pyclass` macro to `extends`
"extends" is intuitive for people with java or ES6 experience, and it also aligns pyo3 with
wasm-bindgen (see https://github.com/rustwasm/rfcs/pull/2)
2018-07-15 12:08:20 +02:00
konstin eb613c64d9 Add repr(transparent) where applicable 2018-07-13 18:10:09 +02:00
konstin fe931a594f #[pymodinit] now uses the function name as default module name 2018-07-10 00:13:02 +02:00
konstin 4013d40897 Add `py` prefix to the proc macros and move them into the root module
This is important because `proc_macro_path_invoc` isn't going to be stabilized soon.
2018-07-08 23:33:48 +02:00
konstin 562d417517 Fix bug which made code generation dependend on argument ordering 2018-07-06 12:56:40 +02:00
konstin 1201587353 Remove some old-syn clutter 2018-07-04 19:07:27 +02:00
konstin bc412ede8f Format pyo3cls and pyo3-derive-backend 2018-07-03 22:28:40 +02:00
konstin 43eb5fa490 Rename prepare_pyo3_library to init_once 2018-07-03 21:12:57 +02:00
konstin 1e31fc4451 Remove even more clutter 2018-07-03 21:11:56 +02:00
konstin 6645708e4f Get rid of #[py*] methods 2018-07-03 20:42:02 +02:00
konstin e374b5dd1d Fix proc macro scoping for pyo3 2018-06-15 22:50:26 +02:00
konstin fd6ab73924 Upgrade to syn 0.14: Useful error messages 🎉 2018-06-15 22:41:16 +02:00
konstin 76510bdd0e Refactoring
This is actually a failed bugfix attempt, but still useful
2018-06-13 18:02:45 +02:00
konstin 60d1565a8f Always clone on in getters
Since copy implies clone, this doesn't  code.
2018-06-12 17:47:24 +02:00
konstin 54b09c704b Fix -Z minimal-versions 2018-06-06 21:18:42 +02:00
konstin c9db4f0da2 Some cleanup and housekeeping 2018-05-30 15:03:31 +02:00
konstin 314a4a2b3e Some more documentation work 2018-05-19 17:27:26 +02:00
konstin 63441a4b94 Fix ObjectProtocol usage 2018-05-14 22:44:30 +02:00
Martin Larralde 01b7b3feeb Fix link to organisation page in `Cargo.toml` manifests [ci skip] 2018-05-14 18:53:37 +02:00
Martin Larralde 8e4e446e32 Fix warning about unused import when adding a function to module 2018-05-14 18:13:07 +02:00
Martin Larralde 2607fe9fdc Fix unused `add_function` result in `#[pyfn]` expansion 2018-05-14 16:50:08 +02:00
Martin Larralde 37eff44308 Store argument names as `Ident` instead of `String` in `args::Argument` 2018-05-14 16:29:38 +02:00
Martin Larralde df89720e23 Remove uneeded imports from `py_class.rs` 2018-05-14 13:56:58 +02:00
Martin Larralde 580e50f727 Make `build_py_proto` and `build_py_methods` only accept `ImplItem` 2018-05-14 13:34:36 +02:00
Martin Larralde 758d30abbd Allow unused imports in `#[proto]` 2018-05-14 13:17:58 +02:00
Martin Larralde 269ddbdd59 Use `&T` instead of `&Box<T>` where applicable 2018-05-14 13:04:29 +02:00
Martin Larralde d5efc40445 Fix module init function name in `py2_init` 2018-05-14 03:19:29 +02:00
Martin Larralde d1ec82d4a7 Remove `attr_with_parentheses` from `utils.rs` 2018-05-14 01:56:25 +02:00
Martin Larralde ecadcef0c9 Fix `items` in `pyo3-derive-backed::args` test module 2018-05-14 01:49:12 +02:00
Martin Larralde d07c538779 Port `pyo3cls` to latest `syn` 2018-05-14 00:49:15 +02:00
Martin Larralde bf550c3c1f Make `process_functions_...` only accept `ItemFn` 2018-05-13 21:33:59 +02:00
Martin Larralde b43b481980 Merge #154 and #155 changed with `syn13` 2018-05-13 21:24:40 +02:00
konstin 858a124374 Merge master 2018-05-05 15:50:04 +02:00
konstin 15204bab56 Better way to add functions to modules 2018-05-02 19:26:54 +02:00
konstin 0880ac166c Merge master 2018-05-01 20:41:35 +02:00
konstin 6113428746 Allow defining functions outside of the module declarations
This commit consists of
 * a proc macro to convert rust functions into python functions (`#[function]`),
 * a macro to register a function in a module (`add_function_to_module!`)
 * Documenting both the old and the new way in the book
2018-04-30 23:17:09 +02:00
konstin 1c276105e5 Generate better code
This reduces the size of the generated code and elinates at least two of the Err => Err antipatterns
2018-04-12 23:20:35 +02:00
konstin 1c0eac2690 Minor changes 2018-04-09 00:00:20 +02:00
konstin ccbc73a385 Fix compilation on older nightlies 2018-04-08 00:43:49 +02:00
konstin 45bb09b3e8 Relax return type requirements
Allows returning essentially arbitrary types by wrapping them into a PyResult. This is done with a conversion trait that specializes for PyResult.
2018-04-06 17:22:09 +02:00
konstin ced4eb532c Expect the pyo3 crate to be in scope for the codegen
This allows using generated code from crates that do not directly depend on pyo3.

E.g.:

```rust
extern crate my_pyo3_wrapper;

use my_pyo3_wrapper::pyo3;

#[py::modinit(rust2py)]
fn init_mod(py: Python, m: &PyModule) -> PyResult<()> {
    // ...
    Ok(())
}
2018-04-05 13:39:07 +02:00
konstin e570c6b9b9 Move the codegen into its own crate
This makes the code generatioin reusable from third party crates.
2018-04-05 13:39:07 +02:00