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
2b012968ec
Add missing #[cfg(Py_3_6)]
2016-12-10 12:37:33 +01:00
Daniel Grunwald
52c05c6bac
Adjust python3-sys to Python 3.6 RC headers.
2016-12-10 12:07:42 +01:00
Daniel Grunwald
e644f24a2b
Merge pull request #66 from Idolf/pub-string
...
Mark PyStringObject and PyBytesObject as pub
2016-11-13 16:26:11 +01:00
Mathias Svensson
35917e967b
Make PyStringObject and PyBytesObject public
2016-11-13 11:51:23 +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
Daniel Grunwald
b10523b48e
Merge pull request #63 from cmyr/rust-lib-example
...
added example of implementing a basic python module
2016-10-26 23:37:38 +02: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
Daniel Grunwald
2db59a0835
Merge pull request #50 from sciyoshi/inplace-ops
...
Add support for in-place numeric operators in py_class!
2016-06-20 19:29:22 +02:00
Samuel Cormier-Iijima
2e8d343b0f
Add support for in-place numeric operators in py_class!
2016-06-14 16:00:55 -04:00
Daniel Grunwald
72e1e05835
Merge pull request #49 from sciyoshi/rich-comparison
...
Add support for overloading comparison operators with __richcompare__
2016-06-12 00:04:11 +02: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
Daniel Grunwald
7c59d554ec
Merge pull request #48 from sciyoshi/exception-macro
...
Add py_exception! macro for defining custom exception types
2016-06-06 21:52:52 +02: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