Commit graph

872 commits

Author SHA1 Message Date
Nikolay Kim b75160daf3 remove pyobject lifetime 2017-06-02 18:58:16 -07:00
Nikolay Kim cbfdfa2d07 better naming 2017-06-01 15:06:48 -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 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 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 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 969cba2c16 remove Token 2017-05-28 08:57:34 -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 d165dbe4d4 fixed gil lifetime; pass py object into protocol methods 2017-05-26 14:43:28 -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 8fd6e3216f convert object and number protocols to new system 2017-05-20 22:18:31 -07:00
Nikolay Kim 3035ab280f update test_slice 2017-05-20 12:22:35 -07: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 3e20979f3f implement buffer protocol with proc macro 2017-05-14 12:52:30 -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 665921e84e add PySlice 2017-04-27 19:44:56 -07:00
Nikolay Kim ffe774a8cc add class properties 2017-04-06 19:20:06 -07:00
Daniel Grunwald 508937bada PyModule::add_class(): set __module__ on the type object 2017-02-19 16:15:33 +01:00
Daniel Grunwald 06cab0a925 Fix #77: Add support for py_class!(pub class ...) 2017-01-19 21:50:49 +01: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
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 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 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 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 be0c1573aa py_class!: add support for __str__, __repr__, __unicode__ and __format__ 2016-05-05 07:31:14 +02:00
Daniel Grunwald d68e664327 Add support for __iter__ and __next__ slots. 2016-04-30 23:41:18 +02:00
Daniel Grunwald fffcf57834 Add support for __len__ special method. 2016-04-17 23:26:33 +02:00
Daniel Grunwald b721868c25 Document pitfalls with __traverse__ and RefCell. 2016-04-17 14:03:51 +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 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 867666cb2b py_class! can't be nested within a function on stable rust 2016-03-12 20:32:19 +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 53353d374b Remove dependency on interpolate_idents.
We now use the generic <DUMMY> hack to avoid duplicate extern "C" symbols.
See rust-lang/rust#26201.

py_module_initializer!() calls now need to manually concatenate the module
name with the prefixes "init" and "PyInit_".
2016-03-05 23:20:53 +01:00
Daniel Grunwald 1633e24127 Adjust check_symbols.py to changed rustc -Z ast-json output. 2016-03-04 22:21:15 +01:00
Daniel Grunwald c1682b68ac Add some tests for py_fn!() 2015-11-07 16:52:20 +01:00
Daniel Grunwald d33a4b68fc Add test script that all symbols imported by python-sys are exported from the python .so 2015-09-20 22:21:18 +02:00
Daniel Grunwald 4980053e95 Add py_method!() macro for creating method descriptors. 2015-06-25 23:58:57 +02:00
Daniel Grunwald 6e1fc35177 Split rustobject module. 2015-06-22 00:35:01 +02:00
Daniel Grunwald ba0643c11c Add support for creating instances of PyRustObjects that involve inheritance.
Prevent panics from unwinding into C code.
2015-06-20 16:02:09 +02:00
Daniel Grunwald 7c9b96ee90 PyRustObject: implement tp_dealloc by dropping the rust object 2015-06-20 00:30:40 +02:00