Daniel Grunwald
63d5f2cd1a
Rename PyErr::new() to PyErr::from_instance() and add use the name PyErr::new() for a more useful function.
...
Allows simplifying the common
`PyErr::new_lazy_init(py.get_type::<exc::ValueError>(), Some(msg.to_py_object(py).into_object()));`
to
`PyErr:🆕 :<exc::ValueError, _>(py, msg)`
[breaking-change]
2015-07-23 22:21:11 +02:00
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
1ad27b977e
Merge pull request #20 from traff/master
...
Implement ToPyObject for HashMap->dict conversion.
2015-07-18 17:51:08 +02:00
Daniel Grunwald
aac888b1b1
Fix python 2.7 build
2015-07-18 13:44:39 +02:00
Daniel Grunwald
1c4d71d712
Implement ToPyObject for all PythonObjects.
2015-07-18 13:40:26 +02:00
Dmitry Trofimov
2cfe522157
-Remove unsafe code;
...
-Panic if can't add item to dict;
-Test added;
2015-07-17 23:47:30 +02:00
Dmitry Trofimov
144d14f8c4
Implement ToPyObject for HashMap->dict conversion.
2015-07-17 22:07:37 +02:00
Daniel Grunwald
f6718a271b
Merge pull request #18 from traff/master
...
A method for accessing dictionary items.
2015-07-13 20:30:08 +02:00
Dmitry Trofimov
d495eaaa4a
Use err::cast_from_owned_ptr_or_panic, because PyDict_Items creates a new reference to list and can fail.
2015-07-09 00:51:12 +02:00
Daniel Grunwald
04ea39d26f
Adjust to breaking change rust-lang/rust#26728
2015-07-08 22:47:56 +02:00
Dmitry Trofimov
79abfb99e8
A method for accessing dictionary items.
2015-07-08 01:26:50 +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
6b496b4772
Prefer taking generic arguments by value.
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
e6b5312c81
mem::min_align_of -> mem::align_of
...
See rust#25646
2015-06-27 15:42:10 +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
7c9b96ee90
PyRustObject: implement tp_dealloc by dropping the rust object
2015-06-20 00:30:40 +02:00
Daniel Grunwald
fa32b52392
Remove unnecessary std::mem::copy_lifetime call.
2015-06-19 22:47:21 +02:00
Daniel Grunwald
2459d8f0c8
Fix #[cfg] condition for i64 on windows
2015-05-29 10:26:28 +02:00
Daniel Grunwald
73e4ce3f8b
#11 : Allow defining python extension types
...
Highly incomplete initial version.
2015-05-27 21:19:32 +02:00
Yoichi Imai
92a30e2c33
Added tests for i64.
2015-05-27 00:17:42 +09:00
Yoichi Imai
e237bdd57f
Converting function for i64 on 32bit/non-windows platform.
2015-05-26 23:48:01 +09:00
Yoichi Imai
8387932793
Generalize pylong_as_u64.
2015-05-26 23:44:29 +09:00
Daniel Grunwald
0b712d0679
Add methods for PyDict
2015-05-24 22:45:43 +02:00
Daniel Grunwald
8c8779e3fb
py_module_initializer! for python 3
2015-05-24 20:06:08 +02:00
Daniel Grunwald
db47455904
Add IntoIterator impl for PyTuple and PyList.
2015-05-24 18:20:35 +02:00
Daniel Grunwald
d70479d257
Remove lifetime 's from `FromPyObject`.
...
This allows implementing `FromPyObject` for `Vec<T>`.
It also means that `obj.extract::<Cow<str>>()` won't be supported, but we
have `PyString::extract()` for that now.
2015-05-24 17:12:12 +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
Daniel Grunwald
d4bdcc5cbd
Fix warning: unnecessary 'unsafe' block
2015-05-17 21:43:12 +02:00
Daniel Grunwald
6a0f951e94
Use try!() instead of unwrap()
2015-05-17 21:42:34 +02: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
James Salter
c1acf04e0e
Fix refs to std::num::cast -> num::traits::cast
...
This function was removed from the rust stdlib in
https://github.com/rust-lang/rust/commit/eeb948 .
Updated to refer to the 'num' crate instead.
2015-05-09 17:12:26 +01:00
Daniel Grunwald
c07b0468e8
MIT license headers
2015-04-19 05:22:03 +02:00
Daniel Grunwald
b3fe39c3c4
call()
2015-04-19 05:01:19 +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
55ea6cc85b
Add PyList, PyInt, PyLong and PyFloat.
2015-01-11 18:56:59 +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
fd2ae9ce60
delete pyptr
2015-01-08 09:19:35 +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
1c7eb2340d
Add PyBool and PyTuple impls
2015-01-06 01:04:25 +01:00
Daniel Grunwald
038dfc7474
ToPyObject simplification
2015-01-05 21:14:01 +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
5569ae3bbc
Remove BorrowAsPyObject, and simplify PyPtr by moving the 'p bound into the PythonObject definition.
2015-01-05 17:06:28 +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