David Hewitt
5c5527dfec
Fix passing explicit None to pyfunction with default
2020-05-17 19:19:33 +01:00
kngwyu
69dba08b01
Use PyMethodsImpl instead of *ProtocolImpl::methods
2020-05-11 20:08:21 +09:00
scalexm
f6ac9a0212
Allow #[classattr]
on associated constants
2020-05-08 22:30:49 +02:00
Yuji Kanagawa
d5eb8f0544
Merge pull request #911 from davidhewitt/remove-objectprotocol
...
Remove ObjectProtocol
2020-05-08 18:56:52 +09:00
David Hewitt
a5ebef4b2e
Remove ObjectProtocol; Add methods to PyAny and use Deref
2020-05-08 10:05:19 +01:00
scalexm
d3d68eafb4
Add a test with class attrs returning PyClass
instances
2020-05-07 21:25:27 +02:00
scalexm
8f22d10a14
Add a test showing that class attrs are immutable
2020-05-07 21:24:36 +02:00
scalexm
7b5a076680
Add #[classattr]
methods to define Python class attributes
2020-05-07 21:23:47 +02:00
David Hewitt
9a2d908342
Simplify callback code using callback_body! macro
2020-05-05 00:27:50 +01:00
David Hewitt
dfbe22bb56
Thread-safe release pools
2020-05-02 13:16:22 +01:00
David Hewitt
3008528fa6
Allow use of #[pyo3(get, set)]
with Py<T>
2020-04-22 22:21:27 +01:00
Mara Bos
dcab478d66
Fix lifetime safety bug of AsPyRef::as_ref(). ( #876 )
...
* Fix lifetime safety bug of AsPyRef::as_ref().
Fixes #875 .
* Add test for AsPyRef's lifetimes.
2020-04-20 18:44:31 +01:00
Martin Larralde
ed63902eeb
Modify existing PyIteratorProtocol
tests to use PyRef
where possible
2020-04-18 03:57:17 +02:00
Yuji Kanagawa
ae81865232
Apply suggestions from David
...
Co-Authored-By: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
2020-04-13 11:05:48 +09:00
kngwyu
2cd466dc46
Bound 'py lifetime by GILPool when it's possible
2020-04-12 23:55:23 +09:00
Yuji Kanagawa
5e285fda78
Fix synchronization of datetime tests ( #867 )
...
* Fix synchronization of datetime tests
* Use Mutex instead of RawMutex
2020-04-11 19:10:16 +09:00
kngwyu
9dc3f9dc1a
Lock other threads before import datetime to avoid test failure
2020-04-09 22:11:03 +09:00
Martin Larralde
1e8e6fd827
Fix clippy warning about unused arguments in tests/test_gc.rs
2020-04-09 02:06:19 +02:00
Martin Larralde
5f2ec47bea
Add proper test for GC double borrow issue in tp_traverse
wrapper
2020-04-09 00:52:49 +02:00
kngwyu
8d1678e28e
Separate examples and tooling section in README and the guide
2020-04-02 23:56:19 +09:00
David Hewitt
1efe142566
Fix clippy warning
2020-03-30 11:48:01 +09:00
kngwyu
ac418ce020
Inhibit __ipow__ to take Modulo
2020-03-30 03:01:44 +09:00
kngwyu
25eda36353
Speficy METH_COEXIST for some number methods except
2020-03-30 02:02:57 +09:00
kngwyu
a76bd7c4e3
Add a test that shows __add__ overrides __radd__
2020-03-29 00:26:11 +09:00
kngwyu
970e393bb9
Make __r*__ methods work by slot fallback
2020-03-28 18:17:40 +09:00
kngwyu
c234476693
chmod -x for test files
2020-03-27 00:41:01 +09:00
kngwyu
5280a281c9
Remove GILPool::new_no_pointer
2020-03-26 19:45:32 +09:00
Yuji Kanagawa
3b8af93aea
Merge pull request #826 from kngwyu/pyclass-err-improve
...
More ergonomic error messages for invalid #[pyclass] args
2020-03-23 18:51:16 +09:00
Yuji Kanagawa
3b17ab0529
Apply suggestions from code review
...
Co-Authored-By: Georg Brandl <georg@python.org>
2020-03-23 13:18:38 +09:00
kngwyu
1e39071c04
Retrieve FromPyObject implementation for &PySequence
2020-03-22 20:00:21 +09:00
kngwyu
9b5ea3f46b
More ergonomic error messages for invalid #[pyclass] args
2020-03-22 17:13:02 +09:00
kngwyu
02ee7a5afc
Expose PyAny to lib.rs and prelude
2020-03-18 13:38:18 +09:00
kngwyu
40077245ea
Fix PyModule::dict
2020-03-16 15:45:54 +09:00
kngwyu
cea707dd1c
Inhibit positional args after *
2020-03-06 14:01:27 +09:00
kngwyu
25069baef4
Fix the interpretation of '*'
2020-03-04 23:48:46 +09:00
kngwyu
96115eaaaa
Refactor some tests in test_methods
2020-03-04 20:35:46 +09:00
kngwyu
bbe4393b1e
Add more tests in method_with_pyclassarg
2020-03-04 20:25:30 +09:00
kngwyu
e63e0cbf5a
Make it enable to take &PyClass as arguments as pyfunctions/methods
2020-03-04 13:37:26 +09:00
kngwyu
6c652dff8c
Merge branch 'master' into pycell
2020-02-25 20:15:17 +09:00
kngwyu
18957159f4
Add tests for inheriting class with dict or weakref
2020-02-25 20:02:27 +09:00
kngwyu
3d0ee2a28d
Use AsRef/AsMut instead of as_super/as_super_mut
2020-02-21 20:37:35 +09:00
Andrew Whitehead
ca6cb99a4b
Implement buffer release for PyBufferProtocol; change callback signatures to pass PyClassShell
...
Signed-off-by: Andrew Whitehead <cywolf@gmail.com>
2020-02-20 12:48:22 -08:00
kngwyu
1f5cb83ef8
Add tests for mutability checking
2020-02-18 15:28:04 +09:00
kngwyu
4b746af11b
Rename unchecked_refmut -> unchecked_mut
2020-02-18 12:55:06 +09:00
kngwyu
2fd2185052
Merge branch 'master' into pycell
2020-02-17 00:07:15 +09:00
kngwyu
8f8b42591a
Fix PySelf and AsPyRef
2020-02-16 23:54:55 +09:00
David Hewitt
d5509424b2
Make #[pymethods] aware of #[cfg]
2020-02-15 14:07:48 +00:00
kngwyu
da4ed398bb
Fix PyCell to share BorrowFlag with parents
2020-02-15 18:13:39 +09:00
Yuji Kanagawa
0eb4eb4e58
Merge branch 'master' into property-fixes
2020-02-10 15:13:19 +09:00
kngwyu
a6fed34e23
Fix clippy warnings in build.rs and tests
2020-02-10 14:53:13 +09:00
David Hewitt
6c25f6aacc
Bump minimum Rust version to 1.42.0-nightly
2020-02-09 10:54:00 +00:00
David Hewitt
cea8a9a2b0
Refactor to clean up property descriptor macros
2020-02-08 18:57:30 +00:00
kngwyu
a2408cacbb
Rename PyClassShell with PyCell
2020-02-08 15:05:13 +09:00
David Hewitt
f8c8b8effd
Fix for PyObject with #[pyo3(get)]
2020-02-07 19:31:13 +00:00
Yuji Kanagawa
14980d742d
Merge pull request #755 from davidhewitt/property-doc
...
Fix docstrings generated by `[pyo3(get, set)]`
2020-02-03 18:14:54 +09:00
David Hewitt
dfb7d7c58d
Fix docstrings generated by [pyo3(get, set)]
2020-02-03 08:01:30 +00:00
David Hewitt
7531b9fb07
Remove even more uses of static mut
2020-01-30 13:24:55 +00:00
David Hewitt
a8ec946fc3
Fix usage of raw idents with #[pyo3(set)]
2020-01-27 10:29:14 +00:00
Yuji Kanagawa
c57e5f1830
Merge pull request #744 from Hywan/patch-2
...
test: Fix a typo in an error message
2020-01-25 12:42:49 +09:00
David Hewitt
fdf407e045
FromPyObject for #[pyclass] with T: Clone
2020-01-24 08:57:28 +00:00
Ivan Enderlin
8ed2662251
test: Fix a typo in an error message
...
Thank for the awesome project!
2020-01-24 08:44:23 +01:00
Alexander Niederbühl
cffefa4fa8
Add debug output for flaky test
2020-01-12 15:44:42 +01:00
Alexander Niederbühl
0a84c201f7
Revert "Disable segfaulty subclassing by default"
...
This reverts commit 5096f936dc
.
2020-01-12 01:22:32 +01:00
kngwyu
302b3bb088
Merge branch 'master' into pyclass-new-layout
2020-01-11 15:03:25 +09:00
Alexander Niederbühl
1f675dcaa7
Clear error indicator when the exception is handled on the Rust side
...
Leaving Python's global exception state is misleading, e.g. subsequent
calls of `py.eval` will fail.
2020-01-11 00:44:11 +01:00
kngwyu
c57177a169
Refine tests and documents around pyclass.rs
2020-01-08 22:44:50 +09:00
kngwyu
b602b4bf6c
Enhance documentation and tests around #[new]
2020-01-07 12:49:36 +09:00
kngwyu
18e565fab5
New PyClassInitializer
2020-01-05 16:01:05 +09:00
kngwyu
58590393c5
Fix accidently changed file permission
2019-12-24 12:27:22 +09:00
kngwyu
ea51756933
Resolve some clippy complains
2019-12-23 18:05:06 +09:00
kngwyu
e2dc843de5
Fix a corner case for PyClassInitializer
2019-12-22 23:54:41 +09:00
kngwyu
6b84401126
Make it enable to safely inherit native types
2019-12-21 23:28:55 +09:00
kngwyu
8175d6f36a
Merge branch 'master' into pyclass-new-layout
2019-12-19 16:12:45 +09:00
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
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
4b5fa7e977
Introduce PyClass trait and PyClassShell
2019-12-07 17:56:49 +09:00
Jacob Lifshay
af8c0d2531
switch text_signature to arguments only & add tests
2019-11-29 12:19:56 -08: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
Alexander Niederbühl
7a4909bdc7
Guard against PyUnicode_AsUTF8AndSize returning null
2019-10-23 00:39:47 +02:00
Alexander Niederbühl
69cbf1a494
Remove test_get_pybytes
2019-10-20 15:12:17 +02:00
Alexander Niederbühl
b0925e1109
Add conversion traits for PyBytes
2019-10-20 14:42:12 +02:00
Yuji Kanagawa
f6f607ef68
Merge pull request #624 from kngwyu/seq-setitem
...
Fix PySequenceProtocol::set_item
2019-10-19 13:44:49 +09:00
Alexander Niederbühl
e91d969e17
Make tests for optional arguments more consistent
2019-10-13 23:17:57 +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
d57f2423c8
Fix PySequenceProtocol::set_item
2019-10-12 21:03:21 +09:00
kngwyu
ee69ffd0f0
Support TryFromSliceError/TryFromIntError -> PyErr conversion
2019-10-12 17:25:28 +09:00
Yuji Kanagawa
75516d87eb
Merge pull request #603 from kngwyu/upd-doc
...
Update README and document
2019-09-28 16:18:53 +09:00
kngwyu
d97f003a08
Update trybuild
2019-09-28 15:19:11 +09:00
Yuji Kanagawa
d860ee3f21
Merge pull request #597 from kngwyu/err-nosegv
...
Reguire GIL before constructing PyErr from Rust value
2019-09-28 15:11:23 +09:00
kngwyu
a344999526
[DOC] Add Python from Rust section in the guide
2019-09-23 21:44:42 +09:00
kngwyu
1c0ffdd443
Update UI test
2019-09-23 19:26:34 +09:00
kngwyu
35851b7ff9
Fix documents following the review comment
2019-09-15 22:17:36 +09:00
kngwyu
44f26f4bb9
Update README and document
2019-09-15 19:58:41 +09:00
kngwyu
05a1a097a9
Remove mem::forget from PyBuffer::release
2019-09-14 16:56:11 +09:00
kngwyu
e911828b79
Add a test to detect memory leak of bytes->vec conversion
2019-09-07 17:59:19 +09:00
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