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