Commit Graph

218 Commits

Author SHA1 Message Date
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
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