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
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