Nikolay Kim
27f8747ba6
safe typeob dealloc and tests for release pools
2017-07-13 13:01:31 -07:00
Nikolay Kim
ce05cb91c0
fix pointer release list
2017-07-10 00:37:20 +06:00
Nikolay Kim
a90d8c241f
fix ref counter for get_kwargs
2017-07-04 10:24:04 +06:00
Nikolay Kim
afe2324ecc
fix api inconsystency
2017-06-29 11:23:55 +06:00
messense
2d217be349
Use isize for hash protocol
2017-06-24 23:43:01 +08:00
Nikolay Kim
3a2004eab2
rename PyInstance to PyObjectRef
2017-06-24 08:28:31 -07:00
Nikolay Kim
14c6aaad55
py.init returns ptr, init_ref and init_mut ref and mut ref
2017-06-23 15:15:07 -07:00
Nikolay Kim
8238a141ae
py.init(..) return reference
2017-06-23 15:03:52 -07:00
Nikolay Kim
a58aa7b5e6
rename PyObject
2017-06-22 20:56:09 -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
c48386affa
stopping point
2017-06-22 01:04:37 -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
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
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
messense
93b1dd8262
Add compile-test ( #38 )
2017-06-18 23:41:20 +08:00
Nikolay Kim
0679fec859
update docs
2017-06-15 11:13:58 -07:00
Nikolay Kim
5bf6ce3864
added __unicode__ method to PyObjectProtocol
2017-06-15 07:48:57 -07:00
Nikolay Kim
706477f139
replace py_fn! macro with pyfn attribute
2017-06-14 14:08:30 -07:00
messense
d6979c8556
doc string should not contain ///
( #32 )
2017-06-13 12:15:44 +08: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
26fccf6022
added proper PyString for py2 handling
2017-06-11 22:23:49 -07:00
Nikolay Kim
c28a619efd
add free list support
2017-06-09 14:27:37 -07:00
Nikolay Kim
5a44ccb40c
add test for custom class name
2017-06-09 12:35:29 -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
a90c763bc0
add class and static methods #17
2017-06-08 11:29:40 -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
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