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
d826377d4f
Merge pull request #45 from royalstream/royalstream-macos
...
get_macos_linkmodel fix
2016-04-17 23:46: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
79707c03d2
Add BTree test extension
2016-04-17 15:53:57 +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
Steven Burns
14bd89dec7
get_macos_linkmodel fix
2016-04-16 22:02:17 -06: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
867666cb2b
py_class! can't be nested within a function on stable rust
2016-03-12 20:32:19 +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
Daniel Grunwald
061e46bde8
Rename PyRustTypeBuilder -> TypeBuilder
2016-03-06 06:33:16 +01:00
Daniel Grunwald
acc5712536
Don't flatten the rustobject module + started implementing the py_class!() macro.
2016-03-06 06:29:43 +01:00
Daniel Grunwald
506443210a
Fix stable rust version in travis config
2016-03-06 01:11:35 +01:00
Daniel Grunwald
d705620502
Add support for Rust stable.
...
All functions that depend on PyObject having the same memory layout
as *mut ffi::PyObject should now be hidden behind #[cfg(feature="nightly")].
2016-03-06 01:08:40 +01:00
Daniel Grunwald
ad7f43efc7
Remove #![feature(optin_builtin_traits)] usage
2016-03-06 00:22:16 +01:00
Daniel Grunwald
7c90651157
Make use of nightly const_fn + shared features optional.
2016-03-06 00:03:17 +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