Commit Graph

332 Commits

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