Commit Graph

242 Commits

Author SHA1 Message Date
kngwyu f8de335b00 Make PyTypeInfo::type_object return &'static instead of NonNull 2020-02-06 19:11:59 +09:00
Yuji Kanagawa 14980d742d
Merge pull request #755 from davidhewitt/property-doc
Fix docstrings generated by `[pyo3(get, set)]`
2020-02-03 18:14:54 +09:00
David Hewitt dfb7d7c58d Fix docstrings generated by `[pyo3(get, set)]` 2020-02-03 08:01:30 +00:00
David Hewitt 04f30c5971 Revisions from PR#751 2020-02-03 07:34:42 +00:00
David Hewitt 7531b9fb07 Remove even more uses of `static mut` 2020-01-30 13:24:55 +00:00
David Hewitt 5cbdef6471 Remove static mut from PyTypeInfo implementation 2020-01-30 00:14:27 +00:00
David Hewitt a8ec946fc3 Fix usage of raw idents with #[pyo3(set)] 2020-01-27 10:29:14 +00:00
Yuji Kanagawa 541816b7d2
Merge pull request #730 from davidhewitt/extract-clone
FromPyObject for #[pyclass] with T: Clone
2020-01-25 12:42:05 +09:00
David Hewitt fdf407e045 FromPyObject for #[pyclass] with T: Clone 2020-01-24 08:57:28 +00:00
David Hewitt 43df3299ab Remove `PyNoArgsFunction` 2020-01-22 16:27:36 +00:00
kngwyu 56f68a55cd Bump version to 0.9.0-alpha.1 2020-01-16 20:05:44 +09:00
Alexander Niederbühl 0a84c201f7 Revert "Disable segfaulty subclassing by default"
This reverts commit 5096f936dc.
2020-01-12 01:22:32 +01:00
kngwyu 451de182cb Merge branch 'master' into pyclass-new-layout 2020-01-08 17:16:33 +09:00
kngwyu f26e07cfd6 Replace IntoInitializer<T> with Into<PyClassInitializer<T>> 2020-01-07 13:08:41 +09:00
David Hewitt 60edeb889e Simplify IntoInitializer 2020-01-06 13:19:58 +00:00
kngwyu d22b03edde Bump version to 0.8.5 2020-01-05 16:39:18 +09:00
kngwyu 18e565fab5 New PyClassInitializer 2020-01-05 16:01:05 +09:00
Matthias Lochbrunner ff2aaea334 Fixes PyObjectDelAttrProtocol 2020-01-01 16:51:40 +01:00
kngwyu 6b84401126 Make it enable to safely inherit native types 2019-12-21 23:28:55 +09:00
kngwyu 8175d6f36a Merge branch 'master' into pyclass-new-layout 2019-12-19 16:12:45 +09:00
David Hewitt b245e71c14 Address comments from PR#692 2019-12-18 14:26:25 +00:00
David Hewitt 0032508c3c Format code 2019-12-17 22:58:34 +00:00
David Hewitt 4b18830f1e Add `#[name]` attribute support for `#[pyfunction]` 2019-12-17 22:14:28 +00:00
David Hewitt 881cb0a5a4 Fix build failure on minimum nightly 2019-12-17 18:08:35 +00:00
David Hewitt 7702395b3d Add #[name = "foo"] attribute to #[pymethods] 2019-12-17 17:45:53 +00:00
kngwyu b86de9376d Introduce PyClassInitializer 2019-12-15 21:04:36 +09:00
kngwyu a6639076b9 Introduce PyInternalCaster 2019-12-14 23:16:39 +09:00
kngwyu d8a4ecb476 Bump version to 0.8.4 2019-12-14 15:20:55 +09:00
kngwyu 4d7dfafe2b Allow slf: &PyClassShell<Self> 2019-12-08 23:09:00 +09:00
kngwyu bdb66afe0a Make PyClassShell have dict&weakref 2019-12-08 17:18:25 +09:00
Jacob Lifshay a676e6d5aa clean up gen_py_method and fix typos 2019-12-06 15:05:41 -08:00
Jacob Lifshay 95c2e2f585 clean up parse_text_signature_attrs and get_doc 2019-12-03 16:42:48 -08:00
Jacob Lifshay 07611b0358 remove unnecessary lifetime 2019-11-29 13:34:04 -08:00
Jacob Lifshay af8c0d2531 switch text_signature to arguments only & add tests 2019-11-29 12:19:56 -08:00
Jacob Lifshay 2915f50fc4 fix compile error 2019-11-27 14:31:16 -08:00
Jacob Lifshay 3c1a975ec0 initial untested implementation 2019-11-24 06:00:21 -08:00
kngwyu 935adaa5d5 Bump version to 0.8.3 2019-11-23 17:09:10 +09:00
kngwyu f0526eb739 Change error message around #[init] 2019-11-02 14:44:16 +09:00
kngwyu 8550e0f575 Remove #[init] attribute 2019-10-31 19:39:53 +09:00
kngwyu 14d2196ba0 Bump version to 0.8.2 2019-10-26 22:47:19 +09:00
Yuji Kanagawa 6868d7f734
Merge branch 'master' into fix-mapping-protocol 2019-10-26 02:55:54 +09:00
Sebastian Puetz 3b707c8511 Remove contains and iter from PyMappingProtocol.
The methods are not expected by CPython and are only explicitly
callable. To get iteration support, PyIterProtocol should be
implemented and to get support for `x in mapping`,
PySequenceProtocol's __contains__ should be implemented.

https://github.com/PyO3/pyo3/issues/611
2019-10-25 17:20:44 +02:00
Sebastian Puetz 4864c584f3 Fix derive for PyObjectSetAttrProtocol.
PyObjectSetAttrProtocol doesn't define associated type Success.
2019-10-25 16:10:00 +02:00
kngwyu 3c898ee27d [derive-backend] Do not increment option_pos for *args/**kwargs 2019-10-16 02:51:22 +09:00
Yuji Kanagawa 1796335617
Merge pull request #626 from Alexander-N/unwrap
Remove unwrap for attribute parsing
2019-10-13 15:46:17 +09:00
Alexander Niederbühl 65ad8a87ff Remove unwrap for attribute parsing
This change enables getting a helpful error message.
2019-10-12 20:29:03 +02:00
Alexander Niederbühl c7a53611e0 Enable to give None as default value for an argument 2019-10-12 20:16:25 +02:00
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