Commit graph

44 commits

Author SHA1 Message Date
Daniel Grunwald 45d03bf8bb Replace FromPyObject with the more powerful ExtractPyObject.
This is a [breaking-change] and makes the trait more difficult to implement.
The usage through PyObject::extract() is unchanged.

This change allows extracting a `&str` through a temporary `Cow<str>`
without having to copy the string data from python to rust
(at least in cases where the python string is UTF-8 encoded).

This is preparation in hope I'll be able to make py_fn!()
automatically extract the function arguments.
2015-07-23 22:09:20 +02:00
Daniel Grunwald cdca6f04e8 Fix python 3 build on windows. 2015-06-28 21:45:53 +02:00
Daniel Grunwald 76e38e1a54 Add python 3 support to PyRustTypeBuilder. 2015-06-28 04:12:51 +02:00
Daniel Grunwald 9f2244bbcf Remove unused imports and variables. 2015-06-27 23:49:53 +02:00
Daniel Grunwald 3b02ef5b99 Improve documentation. 2015-06-27 22:48:40 +02:00
Daniel Grunwald 1423162ad4 Call PyEval_InitThreads() in module initializer to ensure it's safe
to spawn rust threads in the extension module and acquire the GIL from
those threads.
2015-06-27 22:48:40 +02:00
Daniel Grunwald 280cdab7a2 Remove ToPythonPointer from public API 2015-06-27 22:48:40 +02:00
Daniel Grunwald 5414cfb89c Add py_class_method!() 2015-06-26 03:31:35 +02:00
Daniel Grunwald 4980053e95 Add py_method!() macro for creating method descriptors. 2015-06-25 23:58:57 +02:00
Daniel Grunwald 5c74f55862 Change py_func!(py, f) to py_fn(f). 2015-06-25 00:02:56 +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 fa32b52392 Remove unnecessary std::mem::copy_lifetime call. 2015-06-19 22:47:21 +02:00
Daniel Grunwald 73e4ce3f8b #11: Allow defining python extension types
Highly incomplete initial version.
2015-05-27 21:19:32 +02:00
Daniel Grunwald 8c8779e3fb py_module_initializer! for python 3 2015-05-24 20:06:08 +02:00
Daniel Grunwald a106cabc4a Initial support for python 3. 2015-05-23 23:52:38 +02:00
James Salter b1eca56ec3 Python 3 build support
* Add python3-sys to rust-cpython as an optional feature, and
  make python27-sys also optional, but still the default
* Parametrise python27-sys/build.rs so that it is python
  version independent, and clone it into python3-sys/build.rs.
  Hopefully this can continue to be maintained as an identical
  file.
* python27-sys and python3-sys gain features for explicitly
  selecting a python version to link to. for python27-sys,
  there's currently only python27; for python3-sys there's
  python 3.4 and 3.5.
* explicitly tell travis to use nightlies (seems to have
  started trying to use 1.0.0)
2015-05-23 15:23:08 +01:00
James Salter b3e20e900b fix issues in bb13ec, support utf16, python fom PATH
* fix ucs4 build broken by bb13ec
* add utf16 decoding to unicode.from_py_object for
  narrow unicode builds
* change unicode narrow/wide cfg flag to be
  Py_UNICODE_SIZE_4 not Py_UNICODE_WIDE, which doesn't
  appear in sysconfig
* support framework builds on os x
* python27-sys exports compilation flags as cargo vars,
  and rust-python resurrects them as cfg flags
* travis runs against local python27-sys
* rust-cpython depends on git python27-sys, because
  the one on cargo is now incompatible with it (since bb13ec)
2015-05-17 13:20:58 +01:00
Daniel Grunwald c07b0468e8 MIT license headers 2015-04-19 05:22:03 +02:00
Daniel Grunwald fbd60f11f4 Simplify ToPyObject: directly return the object without PyResult
to_py_object should always succeed (modulo out-of-memory)
2015-04-19 01:07:14 +02:00
Daniel Grunwald 1e5605036e Update documentation 2015-04-19 00:39:04 +02:00
Daniel Grunwald 5d3d03bcac Remove dead code 2015-04-18 22:25:03 +02:00
Daniel Grunwald 5a303789b9 Don't export cstr! macro 2015-04-18 22:20:19 +02:00
Daniel Grunwald f8e24a870c Add support for exposing rust functions to python 2015-04-18 20:17:25 +02:00
Daniel Grunwald 60360fa03f Fix py_module_initializer 2015-04-18 01:52:48 +02:00
Daniel Grunwald 2a91b00abe Fix segfault due to POST_DROP_USIZE and update to latest nightly 2015-04-17 22:13:15 +02:00
Daniel Grunwald dd20e00c77 Update for rust beta. 2015-03-09 14:31:20 +01:00
Daniel Grunwald 913f3ea2e5 Adjust to rust nightly 2015-03-08 15:29:44 +01:00
Daniel Grunwald f423acee6d Update to current rust nightly 2015-01-12 03:17:29 +01:00
Daniel Grunwald 5566faf235 py_module_initializer macro 2015-01-12 03:00:34 +01:00
Daniel Grunwald 284f7a7931 Fix build 2015-01-11 05:52:11 +01:00
Daniel Grunwald 6d9fd93df2 Go back to 1.0-alpha due to rust issue 21510 2015-01-11 05:41:55 +01:00
Daniel Grunwald d8a1fcd869 update for rust nightly 2015-01-11 04:21:05 +01:00
Daniel Grunwald 706d7c1b78 Port to new rust nighly and add CStr. 2015-01-08 09:20:05 +01:00
Daniel Grunwald b3be3d35de Change API for owned python pointers:
replace PyPtr<'p, PyObject<'p>> with PyObject<'p>

Borrowed python pointers stay &PyObject<'p>.
Note: this means the internal representation of borrowed python pointers
changes from "*mut PyObject" to "&*mut PyObject".
2015-01-07 01:40:48 +01:00
Daniel Grunwald 540f934123 Objects module 2015-01-05 17:06:43 +01:00
Daniel Grunwald c61e1e51f4 Add PyDict and unchecked downcasts. 2015-01-05 17:06:41 +01:00
Daniel Grunwald eca5b4039b Split PythonObjectDowncast from PythonObject 2015-01-05 17:06:40 +01:00
Daniel Grunwald df14c894b2 Move objectprotocol to separate module 2015-01-05 17:06:38 +01:00
Daniel Grunwald 61acf98aec Fix threading 2015-01-05 17:06:36 +01:00
Daniel Grunwald 335913e273 Some minor improvements 2015-01-05 17:06:34 +01:00
Daniel Grunwald 60d07011a3 freethreaded-python 2015-01-05 17:06:31 +01:00
Daniel Grunwald d247b138c5 Rename PyTypeObject and use associated type for ToPyObject. 2015-01-05 17:06:25 +01:00
Daniel Grunwald 7ccf5c88f1 Initial commit 2015-01-05 17:05:53 +01:00