Commit graph

518 commits

Author SHA1 Message Date
Nikolay Kim 8238a141ae py.init(..) return reference 2017-06-23 15:03:52 -07:00
Nikolay Kim f0ece6dfde added doc strings 2017-06-23 13:50:27 -07:00
Nikolay Kim 3e3fed9c18 remove True and False python methods 2017-06-23 13:42:46 -07:00
Nikolay Kim b1e6f07060 fix doc comments 2017-06-23 13:27:18 -07:00
Nikolay Kim cc56ded6bf fix python2 extension module initialization 2017-06-23 11:51:15 -07:00
Nikolay Kim 61f85c730e fix doc tests; fix unsued import warning 2017-06-23 10:38:04 -07:00
Nikolay Kim 006e38cd6e fix kwargs for py methods 2017-06-23 10:06:41 -07:00
Nikolay Kim a58aa7b5e6 rename PyObject 2017-06-22 20:56:09 -07:00
Nikolay Kim 2faf18bb9e rename token method 2017-06-22 13:35:21 -07:00
Nikolay Kim 00bd5615ed drop py paramater for protcol definitions 2017-06-22 12:32:01 -07:00
Nikolay Kim cb969161c6 fix unchecked downcast; added objects pool 2017-06-22 10:26:07 -07:00
Nikolay Kim b9377849c8 rename modules 2017-06-22 01:16:22 -07:00
Nikolay Kim c48386affa stopping point 2017-06-22 01:04:37 -07:00
Nikolay Kim 397f50571b do not derive Debug for GILGuard 2017-06-21 15:17:16 -07:00
Nikolay Kim af663e0f80 update PyType 2017-06-21 15:11:32 -07:00
Nikolay Kim 7cf8e1ab80 modify PyDict 2017-06-21 14:08:16 -07:00
Nikolay Kim 96788bf192 more types 2017-06-21 13:10:40 -07:00
Nikolay Kim e9341d6f05 add release pool 2017-06-21 12:33:27 -07:00
Nikolay Kim 08ddb3f14f other types 2017-06-21 12:33:21 -07:00
Nikolay Kim bc0f9b014f convert PyString object 2017-06-20 23:27:30 -07:00
Nikolay Kim ce53e8230b add downcast traits to Py 2017-06-20 15:09:12 -07:00
Nikolay Kim c4ba2b0f2e rename InstancePtr to AsPyRef 2017-06-20 14:22:49 -07:00
Nikolay Kim 40efa5c955 rename Ptr to Py 2017-06-19 23:57:34 -07:00
Nikolay Kim 7b5521fdb3 simplify instance ptr, droped #[py::ptr] annotation attr 2017-06-19 20:55:07 -07:00
Nikolay Kim b4deb673c7 refactor #[args()] attribute #40 2017-06-19 14:05:14 -07:00
Nikolay Kim 005c36548b add specialization to docs 2017-06-18 09:28:21 -07:00
messense 75d6684d25
Clarify Python module doc string 2017-06-18 23:15:10 +08:00
messense f681038133
Prefer expect() and map_err() to unwrap() 2017-06-17 17:40:11 +08:00
Nikolay Kim 60a965edc3 update link to example py extension 2017-06-15 14:30:11 -07:00
Nikolay Kim e85db971f9 fix module export functions 2017-06-15 14:20:30 -07:00
Nikolay Kim f4d0fe3950 docs cleanup 2017-06-15 13:13:52 -07:00
Nikolay Kim edc9fc1b7f hide some traits 2017-06-15 11:43:38 -07:00
Nikolay Kim 0679fec859 update docs 2017-06-15 11:13:58 -07:00
Nikolay Kim ac0594a5b2 do not use pub pointers mod 2017-06-15 10:36:41 -07:00
Nikolay Kim 3bed79fe0b add clippy and doc to travis 2017-06-15 09:11:19 -07:00
Nikolay Kim 5bf6ce3864 added __unicode__ method to PyObjectProtocol 2017-06-15 07:48:57 -07:00
Nikolay Kim bd7a0feb8c merge master 2017-06-15 07:16:40 -07:00
messense b8b9daf67a
Enable doc test for src/lib.rs examples 2017-06-15 16:06:04 +08:00
Nikolay Kim d9bd485072 macro_use is not requires 2017-06-14 14:42:05 -07:00
Nikolay Kim 293569b6af remove import 2017-06-14 14:23:51 -07:00
Nikolay Kim b67954fd19 remove GILProtected 2017-06-14 14:15:29 -07:00
Nikolay Kim 706477f139 replace py_fn! macro with pyfn attribute 2017-06-14 14:08:30 -07:00
Nikolay Kim 319ee30c79 new impl for #[args] attribute 2017-06-13 22:37:26 -07:00
Nikolay Kim 7379766ea8 added __doc__ to methods 2017-06-12 21:08:59 -07:00
Nikolay Kim d7c3d34198 add class doc string 2017-06-12 17:15:26 -07:00
Nikolay Kim 6204a06cbc update docstring 2017-06-11 23:54:24 -07:00
Nikolay Kim 52df3a4323 Merge branch 'master' of github.com:PyO3/PyO3 2017-06-11 22:24:05 -07:00
Nikolay Kim 26fccf6022 added proper PyString for py2 handling 2017-06-11 22:23:49 -07:00
messense f07e562251
PyType.is_instance/is_subclass should not consume self 2017-06-12 11:56:19 +08:00
Nikolay Kim b21ded3aaa added PyInt for py2 2017-06-11 20:36:57 -07:00
Nikolay Kim 8d4e0204f1 move PyFloat to separate module 2017-06-11 20:04:34 -07:00
Nikolay Kim d619ded980 use Py_TPFLAGS_CHECKTYPES for py2 2017-06-11 19:45:01 -07:00
Nikolay Kim fdd9ac7ae9 various improvements 2017-06-11 18:30:56 -07:00
Nikolay Kim 03ced8917b PyString for py2 2017-06-11 17:20:18 -07:00
Nikolay Kim 805429e0f4 remove unneeded macro 2017-06-11 16:49:25 -07:00
Nikolay Kim 05d4a0a9a4 rename ffi to ffi3 2017-06-11 16:47:27 -07:00
Nikolay Kim 3b4d147219 initial impl for py2 2017-06-11 16:35:24 -07:00
messense 6b18ccb50b Implement is_instance and is_subclass (#27)
* Implement is_instance

* Implement is_subclass

* Move is_instance and is_subclass to Python impl

* Move implementation detail to PyType
2017-06-12 00:41:02 +08:00
messense cb68cd23a2 Fix some clippy warnings (#26) 2017-06-11 23:46:23 +08:00
Nikolay Kim 8188c9533c do not use descriptor objects for method defs 2017-06-09 15:55:39 -07:00
Nikolay Kim c28a619efd add free list support 2017-06-09 14:27:37 -07:00
Nikolay Kim cfb2b16288 allow to override class name #14 2017-06-09 12:30:13 -07:00
Nikolay Kim ea8f11fa6d refactor PyTypeObject trait 2017-06-08 14:34:29 -07:00
Nikolay Kim 86c20bb139 Change sig of PyIterProtocol.__next__ method #18 2017-06-08 13:43:24 -07:00
Nikolay Kim 9e08d3eec5 simplify class method macros 2017-06-08 13:11:16 -07:00
Nikolay Kim 6204de4a6a Merge branch 'master' of github.com:PyO3/PyO3 2017-06-08 11:29:52 -07:00
Nikolay Kim a90c763bc0 add class and static methods #17 2017-06-08 11:29:40 -07:00
messense e12e98a7c1 Convert some std error types to PyErr (#22)
* Convert some std error types to PyErr

* Add ToPyErr trait
2017-06-08 09:40:30 +08:00
Nikolay Kim b3079f759c use descriptor objects for class methods; use PyNoArgsFunction for methods without args 2017-06-06 21:57:03 -07:00
Nikolay Kim a584ce12e5 release py objects aftre use 2017-06-06 19:26:59 -07:00
Nikolay Kim 84f5578997 varios cleanups 2017-06-05 20:25:00 -07:00
Nikolay Kim a448aa54cc clone_ref return Self 2017-06-03 17:42:12 -07:00
Nikolay Kim 57cc139c81 drop Py pointer 2017-06-03 17:27:26 -07:00
Nikolay Kim b75160daf3 remove pyobject lifetime 2017-06-02 18:58:16 -07:00
Nikolay Kim 27bd365f5c cleanups 2017-06-02 09:23:48 -07:00
Nikolay Kim cbfdfa2d07 better naming 2017-06-01 15:06:48 -07:00
Nikolay Kim fc762288fe use From instead of as_object; fix type object 2017-06-01 13:34:46 -07:00
Nikolay Kim 9176dc4df1 consistent naming for pointers 2017-06-01 10:35:02 -07:00
Nikolay Kim bcaaeb8522 simplify PythonToken 2017-06-01 09:45:00 -07:00
Nikolay Kim 6834a18a5b add ptr support to class 2017-05-31 20:50:40 -07:00
Nikolay Kim 4cdb77335e reenable buffer tests 2017-05-31 16:26:21 -07:00
Nikolay Kim 2f3ea202b3 add mirror ptr types for native py classes 2017-05-31 15:52:13 -07:00
Nikolay Kim 92bf7b9c05 rename pptr to PyObjectPtr 2017-05-31 01:08:39 -07:00
Nikolay Kim a3e6117090 incref on inplace number protocol 2017-05-31 01:07:21 -07:00
Nikolay Kim 5d25c7deea simplify Py and PyPtr objects 2017-05-30 18:57:36 -07:00
Nikolay Kim 3040ac12b9 refactor ToPyObject 2017-05-30 17:23:23 -07:00
Nikolay Kim b8913a3705 refactor IntoPyObject trait; rename pptr into pyptr, introduce pptr pointers 2017-05-30 16:29:13 -07:00
Nikolay Kim 3b90c569f7 update tests 2017-05-30 13:03:00 -07:00
Nikolay Kim 2b4eba1fc7 Merge pull request #10 from messense/feature/optimize-run_code
Optimize `Python.run_code`
2017-05-30 13:02:00 -07:00
Nikolay Kim b84474155e convert PyGCProtocol 2017-05-30 12:42:07 -07:00
messense ec7381084f
Restore PySet and PyFrozenSet 2017-05-30 16:16:48 +08:00
Nikolay Kim 86a8dfec0c restore sequence and iterator objects 2017-05-29 23:04:02 -07:00
Nikolay Kim 61b8bd0695 fix ptr borrowing PyTuple::get_item 2017-05-29 18:36:44 -07:00
Nikolay Kim 4232caf3a3 update tests 2017-05-29 16:16:48 -07:00
Nikolay Kim ad38688378 fix sequence protocol; convert buffer protocol 2017-05-29 15:08:19 -07:00
Nikolay Kim 51ac8c9c78 better gil token scope 2017-05-29 13:30:38 -07:00
Nikolay Kim ea8ccf190a special treatment for native python objects 2017-05-29 02:47:27 -07:00
Nikolay Kim 55d0d58734 added pptr pointer 2017-05-28 21:19:29 -07:00
Nikolay Kim 969cba2c16 remove Token 2017-05-28 08:57:34 -07:00
Nikolay Kim 6c87c9b77b introduce python token system 2017-05-27 22:45:48 -07:00
Nikolay Kim bfb01f65d3 update tests 2017-05-27 11:43:45 -07:00
Nikolay Kim 6205be98b8 introduce PythonToken; cleanup number protocol 2017-05-27 10:49:38 -07:00
Nikolay Kim 467cce6c6d reenabled RefFromPyObject trait; fixed ref cnt in PyErr::fetch 2017-05-26 18:25:34 -07:00
Nikolay Kim 52bcc11cd8 fix pyclass methods 2017-05-26 16:51:33 -07:00
Nikolay Kim 1df2c931e5 allow to extract refs from Py ptrs 2017-05-26 15:33:34 -07:00
Nikolay Kim d165dbe4d4 fixed gil lifetime; pass py object into protocol methods 2017-05-26 14:43:28 -07:00
Nikolay Kim 48329a793d disable set 2017-05-25 08:08:40 -07:00
Nikolay Kim 0979653b98 various cleanups 2017-05-25 08:06:10 -07:00
Nikolay Kim f3176dacfc use pyptr for everything 2017-05-25 08:06:06 -07:00
Nikolay Kim 912b9d2cb1 convert object and sequence protocols 2017-05-25 07:58:25 -07:00
Nikolay Kim 747fd8a6ff added helper method Python::init, shortcut for Py::new(..) 2017-05-25 07:58:25 -07:00
Nikolay Kim b350e1cfb4 add description 2017-05-25 07:58:25 -07:00
Nikolay Kim 5fdad40caa rename PyTypeObjectInfo to PyTypeInfo; use PyTypeInfo::offset() for struct offset 2017-05-25 07:58:25 -07:00
Nikolay Kim 579c1280e9 simplify BaseObject; no need in PythonObject trait 2017-05-25 07:58:25 -07:00
Nikolay Kim a29f5e83c0 more functionality for Py and PyPtr 2017-05-25 07:58:25 -07:00
Nikolay Kim d6fb90bdc2 stopping point 2017-05-25 07:58:25 -07:00
Nikolay Kim 56d93249ab pyptr 2017-05-25 07:58:25 -07:00
messense 8f62197f07
Optimize Python.run_code 2017-05-25 21:13:16 +08:00
messense f0120749f9
Fix some issues in README.md 2017-05-21 20:37:56 +08:00
messense 4c802d901b
More generic new method for PyList/PyTuple and etc. 2017-05-21 14:00:41 +08:00
messense 3401683eb6 Merge pull request #3 from messense/feature/set-binding
Add set binding
2017-05-21 13:25:07 +08:00
Nikolay Kim 8fd6e3216f convert object and number protocols to new system 2017-05-20 22:18:31 -07:00
messense 63c70da9af
Add set binding 2017-05-21 10:40:24 +08:00
Nikolay Kim 629f53ac52 new impl for sequence protocol 2017-05-20 12:15:28 -07:00
Nikolay Kim 452a4e8d7f more mapping protocol methods; start working on class tests 2017-05-20 10:40:33 -07:00
Nikolay Kim 1f2c927bd5 update buffer proto tests 2017-05-19 23:18:54 -07:00
Nikolay Kim 201289d6ca add __new__ and __call__ support 2017-05-19 23:14:59 -07:00
Nikolay Kim eb64aa11ac generate method defs from protocols 2017-05-19 11:48:05 -07:00
Nikolay Kim 0c7293125c simplify class generation 2017-05-18 23:29:09 -07:00
Nikolay Kim 5119fa4f1d fix generated type name 2017-05-18 16:57:39 -07:00
Nikolay Kim 1ff47d49c1 added PyIterProtocol 2017-05-18 15:57:38 -07:00
Nikolay Kim 8b3c280450 fix optional arg generation 2017-05-18 11:15:06 -07:00
Nikolay Kim 04168ab86e added fn spec for args parsing 2017-05-18 00:05:49 -07:00
Nikolay Kim 9759cf7177 refactor PyAsyncProtocol 2017-05-17 18:25:26 -07:00
Nikolay Kim 2eea45e9fa better slot trait definition 2017-05-17 16:33:18 -07:00
Nikolay Kim c9aefd7e5f drop py_class 2017-05-16 23:43:39 -07:00
Nikolay Kim 34e4d956f1 basic object customization interface 2017-05-16 16:54:27 -07:00
Nikolay Kim 086f24e7a1 added descriptor protocol support 2017-05-16 15:32:46 -07:00
Nikolay Kim 521a91fbc2 remove unused imports 2017-05-16 14:18:31 -07:00
Nikolay Kim 9b1c4c55f4 added properties support 2017-05-16 11:58:18 -07:00
Nikolay Kim 6d40d651a1 add number protocol 2017-05-16 03:31:48 -07:00
Nikolay Kim 78d7d99bd8 added sequence protocol 2017-05-16 01:27:59 -07:00
Nikolay Kim d8fff8e91a proper impl for mapping __setitem__ and __delitem__ 2017-05-16 00:35:07 -07:00
Nikolay Kim d45c0a36c4 add mapping protocol 2017-05-16 00:07:36 -07:00
Nikolay Kim 5427a33c75 stopping point 2017-05-15 22:24:06 -07:00
Nikolay Kim f4feade487 add PyAsyncProtocol 2017-05-14 18:55:04 -07:00
Nikolay Kim 088d44f8d1 simplify ToPyObject trait 2017-05-14 14:42:56 -07:00
Nikolay Kim 3e20979f3f implement buffer protocol with proc macro 2017-05-14 12:52:30 -07:00
Nikolay Kim b2d49c3648 drop py3.4 2017-05-12 23:29:59 -07:00
Nikolay Kim 03a3817878 update readme and travis 2017-05-12 23:01:54 -07:00
Nikolay Kim a95de027c1 update tests 2017-05-12 22:43:17 -07:00
Nikolay Kim 8a295793a0 include py3 ffi info into crate 2017-05-12 22:05:00 -07:00
Nikolay Kim da310715f4 more exceptions 2017-05-09 13:40:00 -07:00
Nikolay Kim c86a5ff4a3 bloking error exceptions 2017-05-06 23:12:48 -07:00
Nikolay Kim 762708d4d2 added ToPyObject for () 2017-05-05 09:30:58 -07:00
Nikolay Kim e128fa8224 PyString::from_object may fail 2017-05-04 22:03:23 -07:00
Nikolay Kim 83632604ae create unicode object from object with buffer api support 2017-05-02 21:19:51 -07:00
Nikolay Kim a65f9e03fc fix __buffer_get__ return type 2017-04-30 01:17:22 -07:00
Nikolay Kim 257be7119c added convinience method 2017-04-29 21:31:35 -07:00
Nikolay Kim 8d728663d7 introduce ToPyTuple trait, that simplifies ObjectProtoco.call method 2017-04-28 16:30:46 -07:00
Nikolay Kim f651b442ba add PyByteArray 2017-04-27 21:22:15 -07:00
Nikolay Kim 665921e84e add PySlice 2017-04-27 19:44:56 -07:00
Nikolay Kim 8ccb749c1e add PyErr to io::Error convert 2017-04-27 19:39:47 -07:00
Nikolay Kim ffe774a8cc add class properties 2017-04-06 19:20:06 -07:00
Nikolay Kim 364d7af69c pass Py_3_x cfg var with links 2017-04-06 18:59:10 -07:00
Nikolay Kim 23c36f5714 pyclass can provide buffer interface 2017-04-06 18:59:10 -07:00
Nikolay Kim 9bb6ec20a1 add PyAsyncMethods support 2017-04-06 18:59:10 -07:00
Daniel Grunwald 4b6b82037e Support compare() in Python 3; and add rich_compare(). 2017-04-06 18:59:10 -07:00
Daniel Grunwald 508937bada PyModule::add_class(): set __module__ on the type object 2017-02-19 16:15:33 +01:00
Daniel Grunwald e638b2654a Avoid Rust->Python->Rust roundtrip when using default value in argparse! optional parameter with reference extraction. 2017-01-27 23:21:57 +01:00
Daniel Grunwald 32e0d35603 Update documentation 2017-01-27 21:52:04 +01:00
Luthaf d615c319f6 Implement optional parameters for reference types 2017-01-26 21:35:16 +01:00
Guillaume Fraux 9707c5ab72 Implement optional values in argparse 2017-01-26 21:19:38 +01:00
Daniel Grunwald ca4203e4db Add PyBuffer::to_vec(). Avoids unnecessary zero-initialization when creating a Vec from a buffer. 2017-01-21 00:40:32 +01:00
Daniel Grunwald e3d6ac2ca8 Test extracting Vec<u8> using bytearray instead of bytes: On Python 2.7, the sequence protocol on bytes returns characters, not integers. 2017-01-20 23:22:45 +01:00
Daniel Grunwald 3152ef22f0 Expand on the buffer protocol.
When compiling with --feature nightly, we now use specialization to optimize extract::<Vec<PrimititeType>>() from an object implementing the buffer protocol.
2017-01-20 23:14:29 +01:00
Daniel Grunwald af8131f858 Initial attempt at the buffer protocol.
Does not yet provide a safe way of accessing the buffer contents.
2017-01-20 01:08:51 +01:00
Daniel Grunwald a48d74c62c Fix #19: allow extracting a Vec from anything implementing the sequence protocol, not just from list. 2017-01-20 01:08:12 +01:00
Daniel Grunwald fbe1a07d10 Mention pub class in the documentation. 2017-01-19 21:56:06 +01:00
Daniel Grunwald 06cab0a925 Fix #77: Add support for py_class!(pub class ...) 2017-01-19 21:50:49 +01:00
Matteo Bertini 3af2e3a9fa Fix __traverse__ list formatting (add missing newline) 2016-12-24 08:05:47 +01:00
Daniel Grunwald e2d7781433 Add "extension-module" feature to suppress linking pythonX.Y.so.
The symbols are instead kept unresolved, so that they can be used with
any compatible python interpreter, even if the target system uses a
statically linked python and lacks pythonX.Y.so altogether.
2016-12-17 21:17:11 +01:00
Daniel Grunwald 62a083e38f PyTuple: Add back iter() method (fixes build); require py: Python for as_slice().
This is a compromise solution: we require the GIL to be held when acquiring
the slice, but not later when using the slice.

We could bind the lifetime of the returned slice to the Python-token lifetime
to prevent accessing the slice when the GIL is not held, but that causes
problems with the FromPyObject impl.

Alternatively we could not require the GIL at all when accessing the PyTuple
(and thus keep the ops::Index and IntoIterator implementations), but that
relies on too many CPython implementation details for my taste.
2016-12-17 16:40:17 +01:00
Daniel Grunwald 4cb29c14fa Remove hacks for compatibility with old rust versions. The new minimum required version is Rust 1.13.0.
This significantly reduces our #[cfg(feature="nightly")] usage.
2016-12-17 16:05:21 +01:00
Daniel Grunwald f6ed2bbae9 Fix #10: Windows support.
We keep the #[link] attributes in #[cfg_attr(windows)] so that we don't require a nightly Rust build on non-Windows platforms.
This can be simplified once RFC 1717 is available in a stable rust version.

This commit also increases the minimum Rust version to 1.13.
2016-12-17 15:46:52 +01:00
Daniel Grunwald 278c1aece8 Fix #56: PyModuleDef changed "m_slots" to "m_reload" in Python 3.5. 2016-12-10 13:03:51 +01:00
Daniel Grunwald 2c89f62646 Fix non_upper_case_globals warning in py_class!() macro. 2016-12-10 12:41:08 +01:00
Daniel Grunwald 39e73b80dd Merge pull request #65 from sciyoshi/uppercase-static
Use uppercase names for static variables to fix warnings
2016-11-13 11:15:02 +01:00
Daniel Grunwald b34d815416 Mention to_py_object() and extract() in PyInt method documentation. 2016-11-13 11:14:13 +01:00
Samuel Cormier-Iijima d2b9533406 Use uppercase names for static variables to fix warnings 2016-11-11 21:50:18 -05:00
Colin Rofls be884bfe7f added example of implementing a basic python module 2016-10-26 15:55:50 -04:00
Daniel Grunwald 1129131501 Remove #[feature(unsafe_no_drop_flag)]: it's no longer necessary with the latest nightlies.
Warning: to use rust-cpython with --feature nightly, you now must use 'rustc 1.13.0-nightly (e9bc1bac8 2016-08-24)' or newer; or you'll get segfaults due to the drop flags.
Use of rust-cpython with stable rust is not affected.
2016-08-25 21:22:18 +02:00
Tibor Benke 227c0a6e41 Fix Markdown formatting in py_fn!'s documentation
Signed-off-by: Tibor Benke <tibor.benke@balabit.com>
2016-07-28 23:56:43 +02:00
Tibor Benke ca6bd439ae Correct documentation by replacing ExtractPyObject with FromPyObject
Signed-off-by: Tibor Benke <tibor.benke@balabit.com>
2016-07-28 23:56:35 +02:00
Tibor Benke d054115d85 Fix C FFI bug in PyErr
Use null-terminated strings to call PyErr_NewException()

Signed-off-by: Tibor Benke <ihrwein@gmail.com>
2016-07-28 15:43:06 +02:00
Samuel Cormier-Iijima 2e8d343b0f Add support for in-place numeric operators in py_class! 2016-06-14 16:00:55 -04:00
Samuel Cormier-Iijima 291e08e29a Remove CompareOp::Other, change to __richcmp__, and add tests 2016-06-06 20:43:16 -04:00
Samuel Cormier-Iijima 305bc4324d Add support for overloading comparison operators with __richcompare__ 2016-06-06 16:08:48 -04:00
Samuel Cormier-Iijima d77f93056e Add py_exception! macro for defining custom exception types 2016-06-05 18:12:25 -04:00
Daniel Grunwald d7446cf38f Add back tuple extraction. 2016-05-08 21:54:26 +02:00