Commit graph

468 commits

Author SHA1 Message Date
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
Daniel Grunwald 0222176836 #40: split ExtractPyObject into two traits:
* FromPyObject for all conversions that don't need to borrow temporaries
* RefFromPyObject for extracting references out of temporaries
  (currently only used for extracting `&str`)
2016-05-08 21:25:09 +02:00
Daniel Grunwald 1a6e26f3c3 impl ToPyObject+ExtractPyObject for Option<T> 2016-05-08 17:51:16 +02:00
Daniel Grunwald 597893c621 py_class!: add __enter__ and __exit__ 2016-05-08 17:28:26 +02:00
Daniel Grunwald 453c43203f py_class!: __lshift__, __rshift__, __and__, __xor__, __or__ 2016-05-08 01:17:22 +02:00
Daniel Grunwald d26809122e Fix build with python 3. 2016-05-08 01:04:07 +02:00
Daniel Grunwald 4535827f8e py_class!: __add__, __sub__, __mul__, __neg__, __pos__, __abs__, __invert__ 2016-05-08 01:01:18 +02:00
Daniel Grunwald 04081bc8de __contains__: if extraction fails with TypeError, return False instead. 2016-05-07 23:31:46 +02:00
Daniel Grunwald 9eafaebfa2 py_class!: add __contains__ and __reversed__ 2016-05-07 23:19:26 +02:00
Daniel Grunwald 5886720c90 py_class!: add __setitem__ and __delitem__ 2016-05-07 23:01:45 +02:00
Daniel Grunwald 806f212dc4 py_class!: Make the body to be parsed the first argument. 2016-05-07 20:29:29 +02:00
Daniel Grunwald 20c2dcdba7 Simplify py_class_impl.py 2016-05-07 19:49:07 +02:00
Daniel Grunwald 3de859373c py_class!: add __getitem__ 2016-05-07 00:04:18 +02:00
Daniel Grunwald 713a5c53d3 py_class!: add __length_hint__, and map __len__ to both sq_length and mp_length. 2016-05-06 23:16:06 +02:00
Daniel Grunwald 318d9a9ef3 py_class!: add __call__ slot 2016-05-06 22:32:46 +02:00
Daniel Grunwald 78f673893d Make CallbackConverter output type an associated type. 2016-05-06 22:11:56 +02:00
Daniel Grunwald d21143fa39 py_class!: add __bool__ slot 2016-05-06 22:05:12 +02:00
Daniel Grunwald c06838a38e py_class!: add __hash__ slot 2016-05-06 21:41:05 +02:00
Daniel Grunwald 933e0ed11d Add documentation and tests for string conversion special methods. 2016-05-06 21:24:32 +02:00
Daniel Grunwald 3d99a4ac3c Fix build with stable rust. 2016-05-05 07:48:29 +02:00
Daniel Grunwald 9ab3e9ea4e char::REPLACEMENT_CHARACTER isn't stable yet 2016-05-05 07:42:04 +02:00
Daniel Grunwald be0c1573aa py_class!: add support for __str__, __repr__, __unicode__ and __format__ 2016-05-05 07:31:14 +02:00
Daniel Grunwald b37fa220df On Python 2.7, PyString now corresponds to basestring instead of str.
`<str as ToPyObject>::ObjectType` now always is `PyString`
  (previously the type differed between Python 2.7 and 3.x)

`PyStringData` allows zero-copy access to Python's underlying string
representation.
2016-05-05 07:26:52 +02:00
Daniel Grunwald d68e664327 Add support for __iter__ and __next__ slots. 2016-04-30 23:41:18 +02:00
Daniel Grunwald 0445560241 Fix not(nightly) build 2016-04-17 23:42:23 +02:00
Daniel Grunwald 9aec3f33f1 We only need num-traits, not the full num crate. 2016-04-17 23:35:17 +02:00
Daniel Grunwald fffcf57834 Add support for __len__ special method. 2016-04-17 23:26:33 +02:00
Daniel Grunwald a14e3d2b77 Share macro code between tp_new and other class methods. 2016-04-17 18:04:58 +02:00
Daniel Grunwald fb5e4a1521 Generate repetive portions of py_class_impl! macro 2016-04-17 15:53:48 +02:00
Daniel Grunwald b721868c25 Document pitfalls with __traverse__ and RefCell. 2016-04-17 14:03:51 +02:00
Daniel Grunwald 4a01ed31fb Add documentation for __traverse__ and __clear__ 2016-04-14 19:44:08 +02:00
Daniel Grunwald cd88d28973 Add __clear__() special method.
Together with __traverse__, this can be used integrate Python classes
defined in Rust with the Python garbage collector.
2016-04-14 18:41:29 +02:00
Daniel Grunwald 2e977a9c21 gc integration: __traverse__ method 2016-04-14 18:41:29 +02:00
Daniel Grunwald 271a44475d panic::recover -> panic::catch_unwind 2016-04-14 18:41:29 +02:00
Daniel Grunwald cdf2dc8ff7 py_class!: add support for static class members
Fix bug that caused macro expansion to fail when a class had more than
one member.
2016-03-18 21:39:11 +01:00
Daniel Grunwald 3826b54a30 py_class!: Add support for class methods. 2016-03-16 22:18:48 +01:00
Daniel Grunwald f89f957dd4 Add support for @staticmethod. 2016-03-16 21:49:45 +01:00
Daniel Grunwald 80a4ad1466 Fix bug in py_class! when declaring an instance method with parameter list 2016-03-16 21:36:18 +01:00
Daniel Grunwald e608d5eabe Fix build with stable Rust. 2016-03-12 20:20:41 +01:00
Daniel Grunwald b43fa55e01 Delete old 'rustobject' code 2016-03-12 19:09:10 +01:00
Daniel Grunwald 337a90c2fb Reserve special method names
Some of these might work via the normal "instance method" functionality,
but we'll need testcases to be sure.
2016-03-12 19:08:51 +01:00
Daniel Grunwald 0bd9e3ebd2 Adjust extension test cases. 2016-03-12 18:14:21 +01:00
Daniel Grunwald cc81a01077 py_class!: add support for instance methods 2016-03-12 17:58:50 +01:00
Daniel Grunwald ab83b4f4a1 #14; Convert Rust panic to Python SystemError 2016-03-12 01:31:06 +01:00
Daniel Grunwald 309182cfe8 py_class!: Add support for "def __new__(cls)". 2016-03-12 00:06:39 +01:00
Daniel Grunwald 547879ef0f Remove rustobject (PyRustObject, TypeBuilder).
Add new py_class!() macro that generates a static type.
2016-03-09 01:07:50 +01:00
Daniel Grunwald 9b278ba56b Implement second form of py_fn!() (inline function definition) 2016-03-07 23:48:44 +01:00
Daniel Grunwald 3af6e17841 WIP: big macro refactoring
* Introduce py_argparse_parse_plist!() to allow a more flexible
  param list syntax.
* py_fn!() syntax changed
* Remove py_method!() / py_class_method!() macros.
  These are of limited use when building dynamic types,
  and not useful for py_class!() static types.
2016-03-07 23:22:44 +01:00
Daniel Grunwald be682d848f WIP: generalize py_argparse!() macro 2016-03-06 13:33:57 +01:00
Daniel Grunwald 162e20d9e4 Fix build with rust-stable: we can't mark functions as public if we
nest the impl block in fn init().
2016-03-06 11:02:48 +01:00
Daniel Grunwald 96ee652737 TypeBuilder: take &mut self instead of by-value self
py_class!() now can be used to define simple types.
2016-03-06 10:29:28 +01:00