Commit graph

357 commits

Author SHA1 Message Date
kngwyu a82726a240 Reguire GIL before constructing PyErr from Rust value 2019-09-07 15:38:59 +09: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 3d821b7f47 Enable slf: PyRef<'py, Self> 2019-09-02 00:31:22 +09:00
kngwyu 96b71bfb76 Merge branch 'master' into parse_args_msg 2019-08-31 17:03:15 +09:00
konstin 30e82a3018 Replace IntoPyObject with IntoPy<PyObject> 2019-08-24 19:23:28 +02:00
Samuele Maci f7ac0a2887 Address clippy::into_iter_on_ref issues 2019-08-17 15:27:05 +02:00
Samuele Maci 6b4a221d61 Address clippy::float_cmp issues 2019-08-17 14:10:36 +02:00
Samuele Maci f008c569a6 Address clippy::trivially_copy_pass_by_ref issues 2019-08-17 14:10:36 +02:00
Samuele Maci 247c8b5f1c Address clippy::map_clone issues 2019-08-17 14:10:36 +02:00
Samuele Maci 1ed7460bf3 Address clippy::or_fun_call issues 2019-08-17 14:10:36 +02:00
Samuele Maci 0aa02f715f Address clippy::into_iter_on_array issues 2019-08-17 14:10:36 +02:00
Samuele Maci 8f57d9fb82 Address clippy::dead_code issues 2019-08-17 14:10:36 +02:00
Samuele Maci 5e0168b2e9 Address clippy::redundant_static_lifetimes issues 2019-08-17 14:10:36 +02:00
Samuele Maci 6ae27f9c44 Address clippy::unreadable_literal issues 2019-08-17 14:10:35 +02:00
Yuji Kanagawa be22d9e5bb
Merge pull request #573 from kngwyu/ref_into
Implement IntoPyObject to PyRef
2019-08-11 21:04:36 +09:00
kngwyu 5ab216dfe0 Implement IntoPyObject to PyRef 2019-08-11 18:43:50 +09:00
Yuji Kanagawa 1f85593d0a
Merge pull request #564 from kngwyu/paste
Replace mashup with paste
2019-08-11 18:42:21 +09:00
konstin 98b7079183
Merge pull request #540 from PyO3/disable_broken_subclassing
Disable segfaulty subclassing by default
2019-08-05 14:39:46 +02:00
konstin 664209b3ed
Merge pull request #558 from danieldk/fix-iter-null-deref
Fix NULL pointer deref when creating iterator for non-iterable
2019-08-05 14:39:33 +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
konstin 38f25f6462
Merge pull request #550 from hengchu/fix/rhs-arithmetic
Attempting to fix #549
2019-08-05 11:40:24 +02:00
kngwyu 41f31e85fd Replace mashup with paste 2019-08-04 23:50:10 +09:00
Alexander Niederbühl 9d9ebfa556 Disable test for windows
The test fails for Windows, since the error message is provided by the
OS.
2019-08-03 22:36:23 +02:00
Alexander Niederbühl 618b9090ed Add test for exception with custom error
Also simplify the old test.
2019-08-03 22:08:51 +02:00
Alexander Niederbühl 1e01f4f8cc Use to_string() instead of description() for exception messages
`description()` is soft-deprecated and can differ from `to_string()`.

For example for NotFound error:
* `description()`: "entity not found"
* `to_string()`: "No such file or directory (os error 2)"

Since io errors provide their error code through the Display trait there
is no need to get it through `raw_os_error()`.
2019-08-01 00:48:56 +02:00
Daniël de Kok ac28a3114b Fix NULL pointer deref when creating iterator for non-iterable
Fixes #494.
2019-07-27 19:58:18 +02:00
hengchu 149163e059 commenting out one of the rhs arithmetics test case for now... 2019-07-24 16:27:07 -04:00
hengchu 3596cc65c0 adding a small testcase for rhs arithmetics 2019-07-21 23:05:03 -04:00
Alexander Niederbühl ceefa7cc27 Add __clear__ for test class 2019-07-14 20:45:05 +02:00
Yuji Kanagawa 670b41c898
Merge pull request #530 from Alexander-N/gc-test
Implement PyGCProtocol in test class
2019-07-15 00:47:21 +09:00
Yuji Kanagawa 2d879bc853
Merge pull request #529 from kngwyu/getter-py
Allow py: Python as an argument of getter
2019-07-15 00:44:33 +09:00
Alexander Niederbühl 72339e5bf9 Implement PyGCProtocol in test class
For the garbage collection to work the PyGCProtocol has to be
implemented. Ideally it should not even get compiled if it doesn't since
a missing tp_traverse can produce a segfault.
2019-07-14 15:54:45 +02:00
kngwyu a6438ebb10 Handle a corner case in which a getter takes multiple Python 2019-07-14 14:35:50 +09:00
kngwyu 60cbe2f47d Add a test that confirms __getattr__ doesn't override 2019-07-13 23:46:25 +09:00
kngwyu 383d0d3bac Do not execute test_compule_error in kcov 2019-07-13 15:00:19 +09:00
kngwyu 721e746585 Allow py: Python as an argument of getter 2019-07-12 23:41:13 +09:00
Georg Brandl ab802cd829 Document and test argument parsing annotations for pyfunctions 2019-06-16 22:13:50 +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
Yuji Kanagawa 3e69389e68
Merge pull request #512 from kngwyu/expose-py-run
Expose py_run! macro
2019-06-15 23:50:14 +09:00
Yuji Kanagawa 05b0cb66f8
Merge pull request #506 from PyO3/more_error_information
Print error before on class init panic
2019-06-14 14:16:47 +09:00
kngwyu 0f9a3b1194 Expose py_run macro 2019-06-13 18:18:06 +09:00
konstin dfd5a2abb8 Print error before on class init panic
Inspired by https://github.com/rust-numpy/rust-numpy/issues/97, also fixes some warnings from the latest nightly
2019-06-05 12:01:09 +02: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
kngwyu 4bf448ecaa Complete the PR 2019-05-25 23:19:07 +09:00
Georg Brandl 39d3ceb551 Make PyTuple constructors return &PyTuple 2019-05-25 22:40:32 +09:00
Alexander Niederbühl 299d325375 Enable setting the module name of a class
This is relevant for pickling objects.
2019-05-08 23:39:22 +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
Alexander Niederbühl faa3feda3f Merge branch 'master' into doctest 2019-04-23 21:58:09 +02:00
kngwyu a7736dd51b Add test of slf: PyRefMut<_> 2019-04-23 23:16:09 +09: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
Alexander Niederbühl f1b0288d3c Remove docmatic and several workarounds for the doctests 2019-04-19 22:47:21 +02:00
Alexander Niederbühl 5858823e83 Test readme and user guide with doc-comment
Also rename some files for consistency.
2019-04-19 22:38:11 +02:00
Georg Brandl 117f6eb47d Allow omitting PyResult wrapping in property get/set methods
fixes #443
2019-04-17 22:29:12 +02:00
Martin Larralde edd2fba2d6 Add tests for quotes in class/method documentation 2019-04-15 01:29:13 +02:00
Martin Larralde 51be6a60fe Run cargo fmt on pyo3-derive-backend and tests 2019-04-14 01:50:00 +02:00
Martin Larralde 3f4f068c7f Ensure #[getter] doc is exposed as the __doc__ of the descriptor 2019-04-14 00:23:59 +02:00
Martin Larralde 569a7e9e95 Add more tests for #[pymethods] docstrings 2019-04-13 23:25:45 +02:00
Martin Larralde dfd1fa55c0 Remove dead code from tests/test_sequence.rs 2019-03-31 05:29:25 +02:00
Martin Larralde 3b7e83fb7c Run cargo fmt on tests/test_sequence.rs 2019-03-31 05:28:52 +02:00
Martin Larralde dd2f1ba16a Add tests for PySequenceProtocol in tests/test_sequence.rs 2019-03-31 05:28:52 +02:00
ijl 2bb0d05a30 Drop support for python2 2019-03-29 12:37:26 +00:00
konstin 97189a16b9 Try fixing cargo fmt on travis ci 2019-03-24 17:19:15 +01:00
konstin f75f742c58 Fix CStr usages 2019-03-20 21:48:41 +01:00
Miles Granger 711155d7ad Update tests & docs with IntoPyDict::into_py_dict(py) 2019-03-20 20:04:00 +01:00
konstin 59a9d4fd9f
Merge branch 'master' into pyany 2019-03-18 01:00:26 +01:00
Alexander Niederbühl f79f84a31b Complete __dict__ support
Add `__dict__` slot to tp_getset of type_object. See
https://bugs.python.org/issue16272 for why this is necessary.
2019-03-17 20:31:05 +01:00
konstin 6540a374af Export pyo3_derive_backend::pyimpl::impl_methods 2019-03-16 11:38:05 +01:00
Alexander Niederbühl e2e4733b82 Test examples in user guide with travis
Test could only be activated for Python 3.5 and some tests had to be
ignored, see #381 and #387.
2019-03-09 23:54:28 +01:00
kngwyu 874d8a0835 Rename PyObjectRef with PyAny 2019-03-04 13:50:43 +09:00
kngwyu 86d239e445 Rename ToPyPointer with AsPyPointer 2019-02-24 16:20:04 +09:00
konstin d3743fec64 Python 2 2019-02-23 18:42:40 +01:00
konstin 6cd07c369c Simpler new and clippy fixes 2019-02-23 18:38:00 +01:00
konstin ad590bd158 Some api improvements 2019-02-23 18:01:22 +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 2105fa896b Add PyTuple tests
Initially proposed by athre0z in #307, with the changes from latest master
2019-02-13 22:30:46 +01:00
konstin 6cb098ee12 Replace py.init_[ref|mut] with Py[Ref|Mut]::new 2019-02-13 21:52:21 +01:00
konstin 1a489d2829 Make the init methods use a value instead of a function 2019-02-13 13:59:47 +01:00
kngwyu 4a552a88cf Py::new_ref -> PyRef::new 2019-02-08 23:51:14 +09: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 9e53418aad Less feature(specialization) 2019-02-01 18:09:51 +01:00
konstin 328d61ca3b Fix test for python2 2019-02-01 17:15:33 +01:00
konstin c868cc3e4b Fix test 2019-02-01 16:31:18 +01:00
konstin c71c116f29 Better trait bounds with PyMethodsProtocol 2019-02-01 16:23:34 +01:00
konstin 0495ee52d3 ffi2 to rust 2018 2019-02-01 15:25:58 +01:00
konstin 936f0153e8 Migrate to rust 2018 2019-02-01 14:23:29 +01:00
Alexander Niederbühl fbd012601e Fix kwargs
kwargs was broken by a check for the number of given arguments. Only
apply this check if no arbitary number of keyword arguments are allowed
by a "**" parameter of `#[args(...)`.

Closes #318
2019-01-25 00:47:28 +01:00
Alexander Niederbühl 053fa5b984 Avoid race condition in gc tests
To avoid a segfault when the object is collected, disable garbage
collection for the duration of `gc_integration2`.

Closes #198
2019-01-10 00:46:24 +01:00
konstin 89872dceb9 Replace deprecated methods 2018-12-15 14:15:43 +01:00
kngwyu 25a5b74ba6 Use linked list in ReleasePool 2018-11-21 16:00:26 +09: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
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 dbaa2de061 Small improvements around function calling 2018-10-31 11:38:45 +01:00
konstin 71c584a110 De-specialize ToBorrowedObject 2018-10-03 21:04:49 +02:00