Commit graph

949 commits

Author SHA1 Message Date
Martin Larralde d482b715de Fix signatures of PySequenceProtocol methods 2019-03-31 05:28:52 +02:00
konstin 9a9b519bcb Mark PyTypeObject as unsafe 2019-03-30 20:25:47 +01:00
ijl 80179be2b0 Merge num3, num_common to num 2019-03-29 12:37:26 +00:00
ijl fdeef7d67e Merge string and stringutils 2019-03-29 12:37:26 +00:00
ijl 2bb0d05a30 Drop support for python2 2019-03-29 12:37:26 +00:00
konstin 20481e8324 Whitelist clippy error 2019-03-24 17:33:08 +01:00
konstin 97189a16b9 Try fixing cargo fmt on travis ci 2019-03-24 17:19:15 +01:00
konstin f75f742c58 Fix CStr usages 2019-03-20 21:48:41 +01:00
Miles Granger 711155d7ad Update tests & docs with IntoPyDict::into_py_dict(py) 2019-03-20 20:04:00 +01:00
konstin 3e475b052b
Merge pull request #388 from kngwyu/pyany
Rename PyObjectRef with PyAny
2019-03-18 11:04:29 +01:00
konstin 09883574e5 Remove cstr macro 2019-03-18 11:01:55 +01:00
konstin 59a9d4fd9f
Merge branch 'master' into pyany 2019-03-18 01:00:26 +01:00
Alexander Niederbühl 5a3466d1d7 Fix compilation for Python 2 2019-03-17 21:06:26 +01:00
Alexander Niederbühl f79f84a31b Complete __dict__ support
Add `__dict__` slot to tp_getset of type_object. See
https://bugs.python.org/issue16272 for why this is necessary.
2019-03-17 20:31:05 +01:00
Sebastian Köln 7564f76051 fix #398 2019-03-15 15:54:14 +01:00
Alexander Niederbühl 3a6e0a2724 Remove use of INCREF and cnt 2019-03-10 02:49:51 +01:00
Alexander Niederbühl f68ae0cfae Fix flaky tests
The tests were flaky because they took references to the empty tuple
which is a singleton. Use a unique object for each test to make them
independent.
2019-03-06 00:12:30 +01:00
kngwyu f3fe0dfdd5 Move From<PyRef> impl to any.rs 2019-03-04 21:49:43 +09:00
kngwyu c6a6634d8a Move PyAny to any.rs 2019-03-04 14:23:40 +09:00
kngwyu 874d8a0835 Rename PyObjectRef with PyAny 2019-03-04 13:50:43 +09:00
konstin dcce57f4f9
Merge pull request #369 from kngwyu/hide-nativetype
Make PyNativeType unsafe
2019-02-26 23:53:12 +01:00
kngwyu 498689423e Make PyNativeType unsafe 2019-02-25 23:15:13 +09:00
kngwyu 86d239e445 Rename ToPyPointer with AsPyPointer 2019-02-24 16:20:04 +09:00
konstin d3743fec64 Python 2 2019-02-23 18:42:40 +01:00
konstin 6cd07c369c Simpler new and clippy fixes 2019-02-23 18:38:00 +01:00
konstin ad590bd158 Some api improvements 2019-02-23 18:01:22 +01:00
konstin 0cd72ac213 Bump to 0.6.0-alpha.4 2019-02-20 11:30:09 +01:00
konstin 32a15bc4a9
Merge pull request #364 from PyO3/parser_refactoring
Big proc macro refactoring
2019-02-19 22:22:23 +01:00
konstin d02f7c3aa5 Big proc macro refactoring
* Removed a lot of clutter, unified some code
 * Started using syn::parse::Parse for pyfunction attributes 
 * No more newlines between imports
 * Renamed `#[prop(get, set)]` to `#[pyo3(get, set)]`
 * `#[pyfunction]` now supports the same arguments as `#[pyfn()]`
 * Some macros now emit proper spanned errors instead of panics.
2019-02-18 20:07:56 +01:00
kngwyu 8d9b4dd153 Introduce PyDictItem 2019-02-18 16:06:37 +09:00
Chris Jones 5a28a1c4f0 Add PyList.reverse(). 2019-02-17 22:22:46 +00:00
Yuji Kanagawa b01592e201
Merge pull request #359 from chr1sj0nes/pylist_from_iterator
Add support for creating `PyList` from any `IntoIterator` for known s…
2019-02-17 09:50:06 +09:00
Chris Jones e1ffd6c352 Add support for creating PyList from any IntoIterator for known size. 2019-02-16 23:28:03 +00:00
Chris Jones 275e6cb7c8 Add PyList.sort(). 2019-02-15 23:20:02 +00:00
konstin 6cb098ee12 Replace py.init_[ref|mut] with Py[Ref|Mut]::new 2019-02-13 21:52:21 +01:00
konstin 1a489d2829 Make the init methods use a value instead of a function 2019-02-13 13:59:47 +01:00
konstin ce659941e8 Cleanup PyTypeObject and PyTypeCreate 2019-02-13 12:32:59 +01:00
konstin c13f0708a4 Replace IntoPyTuple with IntoPy<Py<PyTuple>> 2019-02-12 22:58:23 +01:00
kngwyu 4a552a88cf Py::new_ref -> PyRef::new 2019-02-08 23:51:14 +09:00
kngwyu f95f4e8c14 Fix python2 test 2019-02-08 14:09:49 +09:00
kngwyu c80134fbcd Refactor PyRef/PyRefMut based on reviews 2019-02-08 13:58:44 +09:00
kngwyu 1d3dd2c343 Write documents of PyRef/PyRefMut 2019-02-07 15:17:27 +09:00
kngwyu 01fc1405b0 Modify AsPyRef::as_ref to return PyRef 2019-02-07 14:27:13 +09:00
kngwyu 22687c3712 Modify PyIterProtocol to take PyRefMut 2019-02-05 17:27:34 +09:00
kngwyu 76e30b5248 Remove ToPyPointer and so on from pyclass 2019-02-04 00:34:06 +09:00
konstin 56f2257e90 rust 2018 fixes 2019-02-01 16:23:34 +01:00
konstin c71c116f29 Better trait bounds with PyMethodsProtocol 2019-02-01 16:23:34 +01:00
konstin ae8a37cd0a Allow 0..n pymethod blocks without specialization 2019-02-01 16:23:34 +01:00
konstin 829f35af5b Migrate to rust 2018 2019-02-01 16:23:34 +01:00
konstin e1154120d1 ffi2 to rust 2018 2019-02-01 16:23:34 +01:00
konstin 0495ee52d3 ffi2 to rust 2018 2019-02-01 15:25:58 +01:00
konstin 936f0153e8 Migrate to rust 2018 2019-02-01 14:23:29 +01:00
konstin 423b5d1099
Merge pull request #327 from StarryInternet/fix-cross-compilation
Implement Basic Cross Compile Support
2019-02-01 13:50:39 +01:00
Matt Pelland 80a6318b43
avoid signedness issues when cross compiling 2019-01-30 18:08:03 -05:00
Alexander Niederbühl df36292523 Add $crate:: prefix in import_exception!
Also change doctest to use Rust 2018 macro includes.
2019-01-28 18:25:02 +01:00
Alexander Niederbühl fbd012601e Fix kwargs
kwargs was broken by a check for the number of given arguments. Only
apply this check if no arbitary number of keyword arguments are allowed
by a "**" parameter of `#[args(...)`.

Closes #318
2019-01-25 00:47:28 +01:00
Joel Höner 262b708de2
Add $crate:: prefix in create_exception! 2019-01-13 22:00:52 +01:00
konstin 5edd263371 rustfmt 2019-01-08 20:18:06 +01:00
konstin 146cb31c59
Merge pull request #317 from PyO3/issue_313
Fix #313
2019-01-08 19:39:25 +01:00
konstin 27520cb683 Fix #313
Thanks to @sumeet for the patch
2018-12-28 20:41:03 +01:00
konstin 322594128c
Merge pull request #316 from kngwyu/arraylist-fix
Fix memory leak in ArrayList
2018-12-28 20:31:26 +01:00
kngwyu bbfe79fa57 Fix memory leak in ArrayList 2018-12-26 20:18:02 +09:00
kngwyu 419884c6ba Use Box::into_raw instead of forget vec 2018-12-26 17:49:08 +09:00
ijl 984751a57f Macro Rust doc 2018-12-21 02:07:43 +00:00
ijl 3452d6544a ffi3 list macros, matching ffi2 2018-12-20 23:32:35 +00:00
Pavel Potoček cbe668a0f4 Add (probably) forgotten type parameters to the pyobject_native_type_convert macro.
This is needed for `rust-numpy` to compile.
2018-12-05 10:56:39 +01:00
ijl b8a6d67e31 PyTryFrom::try_from_mut_unchecked() 2018-12-01 10:27:48 -05:00
ijl d18ebea1c2 PyTryFrom::try_from_unchecked()
This allows casting a PyObjectRef to a specific type of PyObject
with no overhead.
2018-12-01 10:12:27 -05:00
konstin 790a103753
Merge pull request #291 from PyO3/exception_macros
Refactor the exception macros
2018-12-01 13:04:06 +01:00
kngwyu 7a83c1dc0f Revert removing default from impl FromPyObject for &T and &mut T 2018-11-29 22:45:36 +09:00
konstin 9102f2e364 Refactor the exception macros
* Renamed `py_exception` to `create_exception`
  * The split up of the macros makes it possible to create exception structs with bodies to mimic python exceptions' members
  * Used `Once` to fix a (theoretical) race condition with the is_null check
2018-11-27 23:07:15 +01:00
kngwyu b8f1373bec Remove default for impl PyTryFrom for &T and &mut T 2018-11-27 14:42:09 +09:00
kngwyu 2539acc1e8 Remove default from ReturnTypeIntoPyResult 2018-11-27 14:31:00 +09:00
kngwyu 119e0abde2 Fix ArrayList::truncate 2018-11-21 16:28:26 +09:00
kngwyu 949097874f Fix bug in ArrayList::pop_back 2018-11-21 16:00:26 +09:00
kngwyu 63ec65d5ac Refactor ReleasePool 2018-11-21 16:00:26 +09:00
kngwyu acbab2b3f0 Use ArrayList::truncate for borrowed pointers 2018-11-21 16:00:26 +09:00
kngwyu 4c38b21e49 Fix ArrayList::push_back 2018-11-21 16:00:26 +09:00
kngwyu be77846979 Use LinkedList<[T; 256]> in ReleasePool 2018-11-21 16:00:26 +09:00
kngwyu 25a5b74ba6 Use linked list in ReleasePool 2018-11-21 16:00:26 +09:00
konstin 13d4d66fdb cargo fmt 2018-11-15 21:58:22 +01:00
konstin d618ca401a
Merge pull request #274 from kngwyu/releasepool-nonnull
Use NonNull in ReleasePool and add bench_dict
2018-11-15 20:27:06 +01:00
konstin f645720fe5
Merge pull request #270 from PyO3/module
Treat modules as normal objects
2018-11-15 20:26:46 +01:00
konstin 9c8c5a6063 Rename #[pymodinit] to #[pymodule] 2018-11-15 19:43:29 +01:00
konstin 863ffb161f Add wrap_module macro 2018-11-15 19:43:29 +01:00
konstin 42f84ff881 Add clippy to travis 2018-11-15 15:23:45 +01:00
konstin 3de622cdfd Better explaination for the cast 2018-11-15 12:10:16 +01:00
konstin 287a168b18 Fix test failure 2018-11-15 12:08:22 +01:00
kngwyu a73bd06c1f Replace NonNull::new_unchecked with new().unwrap() in test 2018-11-15 13:40:35 +09:00
konstin 5f175a41cf Make clippy happy 2018-11-14 16:49:48 +01:00
kngwyu 6d442e5969 Use NonNull in release pool 2018-11-14 15:39:07 +09:00
Yuji Kanagawa 42dbaeb913
Merge pull request #268 from kngwyu/fix-dict-iter
Fix PyDictIterator's segfault(for #159)
2018-11-13 14:29:42 +09:00
kngwyu 1081ba9447 Fix import module name in test_dict_iter 2018-11-13 11:50:13 +09:00
konstin 3614f38154 Remove some transmute 2018-11-12 21:38:20 +01:00
kngwyu faa5efc5a1 Remove unnecessary Drop for PyDictIterator 2018-11-13 01:00:15 +09:00
kngwyu 3b01b8f6ba Review fixes 2018-11-13 00:53:06 +09:00
konstin d1de3338d1 Refactor PyObjectAlloc 2018-11-12 16:45:57 +01:00
kngwyu 34099b33f8 Fix PyDictIterator's segfault(for #159) 2018-11-13 00:25:54 +09:00
konstin 6cec1c39cc Update changelog 2018-11-12 15:11:03 +01:00
konstin aed0466915 s/PyObjectWithToken/PyObjectWithGIL/g 2018-11-12 15:10:53 +01:00
konstin 57afb51604 Remove PyToken completely; Fixes #94 2018-11-12 14:42:21 +01:00
konstin fb2349b6ec Remove PyToken usages from tests 2018-11-12 14:41:29 +01:00
konstin d2ba436d6d Remove the unnecessary type parameter PyObjectAlloc 2018-11-12 14:37:06 +01:00
konstin 9f45efebaf Format 2018-11-11 12:25:53 +01:00
konstin 4c0ddbe61e
Merge pull request #263 from kngwyu/fix-240
Fix #240
2018-11-11 11:49:31 +01:00
kngwyu bd6f923f43 Fix #240 2018-11-09 13:11:47 +09:00
ijl 50c6129607 NonNull pointer for Py, PyObject 2018-11-08 15:09:52 +00:00
konstin 52dfc0013c Add doc example to PyIterator 2018-11-02 22:59:30 +01:00
konstin 9ffb2c617d Run rustfmt 2018-11-02 22:59:30 +01:00
konstin 569db5fb02 Add test with generator to PyIterator 2018-11-02 22:59:30 +01:00
konstin 264f642f19 Better doc comment for PyObject 2018-10-31 11:58:19 +01:00
konstin 8b27f1e412 Get ready for rust 2018 2018-10-31 11:43:21 +01:00
konstin dbaa2de061 Small improvements around function calling 2018-10-31 11:38:45 +01:00
kngwyu 625a3f6738 Added a test that call call_method with kwargs 2018-10-31 15:23:18 +09:00
kngwyu 607c23d287 kwargs: Option<PyDict> -> Option<&PyDict> 2018-10-31 15:07:28 +09:00
kngwyu 56b82c2f7d Temporary hack to compile with latest nightly 2018-10-28 18:16:44 +09:00
konstin 38651a1827 Add tox config for pyo3 itself 2018-10-09 18:49:54 +02:00
konstin 4da9110489 Add tox config for word-count 2018-10-09 18:21:52 +02:00
kngwyu 9ab63f2289 Fix build with --features="num-complex" 2018-10-04 15:47:28 +09:00
konstin 5100676497 Splitted PyTypeCreate of PyTypeObject to remove specialization 2018-10-03 22:12:22 +02:00
konstin 71c584a110 De-specialize ToBorrowedObject 2018-10-03 21:04:49 +02:00
ijl d0f79fb9fd PyObjectProtocol::get_type_ptr() 2018-10-03 13:10:41 +00:00
ijl 38c6d942b7 Document UTF-8 FFI assumptions 2018-09-28 22:01:04 +00:00
ijl 851d2207c0 Simplify PyString, PyBytes, PyUnicode
PyStringData comments mention wanting to receive interpreter-
specific unicode types. I tried implementing this, but it's
more complex and slower to call libpython to fill a buffer
of u32 or such and convert that in Rust using widestring.

This implementation receives UTF-8 from PyUnicode_AsUTF8AndSize()
in python3 and PyUnicode_AsUTF8String() in python2. PyStringData
is removed as unnecessary.

The data() method on PyString, PyBytes, and PyUnicode is
replaced with as_bytes().

The python2 API changes improve the performance of
extracting unicode strings.
2018-09-28 21:47:44 +00:00
konstin 3a95d163ca New rustfmt version
You might need to upgrade to the latest nightly to get the same results
2018-09-28 23:34:57 +02:00
konstin 8930bd00e0 Fix PyUnicode alias 2018-09-28 23:03:24 +02:00
konstin 0b1906b626
Merge branch 'master' into datetime-fix 2018-09-28 22:47:04 +02:00
kngwyu f12e299f1c Remove PyDateTime_*Types 2018-09-28 23:56:57 +09:00
Paul Ganssle b869f09808
Add documentation to types/datetime.rs
This adds some light doc comments to the safe rust bindings.
2018-09-27 09:22:31 -04:00
Paul Ganssle a528c1e877
Add documentation to the datetime ffi bindings 2018-09-27 09:20:11 -04:00
konstin ed2739829f Fix the other part from #231 2018-09-27 01:44:17 +02:00
konstin 78a5053b22 Fix #231 2018-09-27 01:11:31 +02:00
konstin 05874d3f1a Fix tests 2018-09-27 01:11:31 +02:00
ijl 28bc3cf1e6 PyDict::from_sequence() 2018-09-25 14:19:23 +00:00
ijl 868e28d5ad Fix segfault on calling unknown method 2018-09-24 02:49:52 +00:00
ijl 6a961298af PyUnicode_AsUTF8AndSize, PyUnicode_AsUTF8 *const c_char API change
Noted in https://docs.python.org/3/c-api/unicode.html
2018-09-21 21:54:51 +00:00
konstin 302c099a76 Big refactoring to shrink the prelude 2018-09-21 23:34:28 +02:00
kngwyu 247da8d341 Implement pow, abs, neg for PyComplex 2018-09-21 14:48:43 +09:00
kngwyu 6b362a4654 Implement convsersion between num_complex::Complex and PyComplex 2018-09-21 14:23:01 +09:00
kngwyu 7ea875fc49 Implement Add/Sub/Mul/Div for &PyComplex 2018-09-21 12:48:42 +09:00
kngwyu c6d588877b Intoroduce PyComplex with minimum APIs 2018-09-20 11:52:57 +09:00
konstin 2904291b9e Better code generation 2018-09-17 19:48:22 +02:00
konstin 10ef6cd111 Fix cfg on PyEval_InitThread to fix #219 2018-09-11 22:38:31 +02:00
konstin d92e522243 Syn 0.15 2018-09-09 00:20:04 +02:00
konstin ddc6313e74 #[pyclass] objects can now be returned from rust functions 2018-09-06 18:04:13 +02:00
konstin e6569ae61e Remove ::pyo3::argparse::get_kwargs for from_borrowed_ptr_or_opt 2018-09-03 20:50:02 +02:00
konstin 29c882577c Get rid of another default fn 2018-09-03 01:02:39 +02:00
konstin f58549f1d8 Get rid of a bunch of PyTokens 2018-09-02 23:33:45 +02:00
konstin 0101dc8136 Two default fn less 2018-08-31 21:11:08 +02:00
konstin aa8be251d3 Fix python 2 2018-08-29 22:47:02 +02:00
konstin 8de0574aad Clippy stuff 2018-08-26 21:35:53 +02:00
konstin 7293cdbc6f Remove dead impl 2018-08-26 19:14:55 +02:00
konstin 3b8adeb484 Rewrite sq_ass_item generation to avoid specialization 2018-08-26 19:09:34 +02:00
konstin 4847d56325 Less java-esque naming 2018-08-26 18:48:57 +02:00
konstin 6d9ee7fc38 Rewrite the set attr / del attr function to avoid specialization 2018-08-26 18:40:50 +02:00
konstin 7c0379b13a Remove many specialization uses
From over a hundret "default fn" uses down to 17
2018-08-25 20:48:17 +02:00
konstin 33e72a2b03
Merge pull request #209 from joar/fix/escape-square-brackets
Escape square brackets when they're not references
2018-08-24 19:55:11 +02:00
Joar Wandborg 47bbe8cc1e
Use backticks instead of single quotes
The backticks properly monospace the Python expressions in the rendered
docs, and also escape square brackets inside so that rustdoc isn't
trying to parse them as references.
2018-08-24 19:15:48 +02:00
Joar Wandborg b5e5bcf223
Escape square brackets in references. 2018-08-24 19:01:14 +02:00
konstin 3e7d5280ca
Merge pull request #200 from pganssle/datetime
Initial datetime bindings
2018-08-22 18:00:05 +02:00
Paul Ganssle 6202e2641b
Fix race condition in test_seq_set_item_refcnt
This test previously relied on a stable reference count for None, which
is not likely to be true in multi-threaded code. This creates an object
specifically for the test to avoid race conditions.
2018-08-21 20:32:12 -04:00
Paul Ganssle c3986a7244
Fix race condition in test_borrowed*
This fixes a race condition in test_borrowed and test_borrowed_nested
by making the object under test different in each thread.
2018-08-21 20:20:24 -04:00
Paul Ganssle c7a967c340
Silence type complexity warnings in ffi 2018-08-21 18:33:33 -04:00
Paul Ganssle a09ffad32a
Add convnience function to unwrap Option<&PyObject> 2018-08-21 18:33:33 -04:00
konstin 7053c897aa
Get rid of #[inline(always)] and replace it with #[inline]
I've just seen that this had been hidden from clippy through the ffi module reordering, but fixing this on master would cause merge conflicts, so I'm fixing this here directly
2018-08-21 18:33:33 -04:00
Paul Ganssle a05a78f7e0
Use smallest types for Py{Date}{Time} constructors
Because it's unlikely that anything other than the `year` parameter will
change in the C Python API, the rest can be restricted to their logical
ranges, which improves the compile-time error checking.
2018-08-21 18:33:33 -04:00
Paul Ganssle 5d5689f95b
Switch Py{Date}{Time} constructor parameters to i32
While the valid ranges for the constructor parameters is the same when
expressed as either u32 or i32, since the Python API uses i32 in their
public interface, we won't have to make any changes to the signatures if
the Python behavior changes (e.g. supporting negative years) without
their API changing.
2018-08-21 18:33:33 -04:00
Paul Ganssle b66ab7fabc
Move cache population logic into PyDateTime_IMPORT
This more closely mimics the CPython API, since the import logic
populates the global, it should also populate the cache.

This also allows users to eagerly initialize the Python C API if
preferred (for example, doing so before populating a bunch of threads,
or before making performance measurements that will be thrown off by a
lazy import).
2018-08-21 18:33:32 -04:00
Paul Ganssle 26c5397618
Implement Debug for PyObject in Python 2
For whatever reason I cannot build rustapi_module without this, and
rather than figure out the core problem, I figured that, for symmetry,
it makes sense to just implement Debug for PyObject.
2018-08-21 18:33:32 -04:00
Paul Ganssle cf3b1d2cc3
Remove leading __ from private cache objects
These were basically cargo culted from lazy_static's implementation, but
they are not idiomatic or necessary to indicate that these are private
variables.
2018-08-21 18:33:32 -04:00
Paul Ganssle a271ba9ed9
Use unified implementation for ffi::datetime
In the future we can make ffi::object, ffi::pycapsule, etc as
crate-public, but importing the specific symbols is a light touch way to
do this.
2018-08-21 18:33:32 -04:00
Paul Ganssle 3357fabb35
Remove 'Component' from ComponentAccess Traits 2018-08-21 18:33:32 -04:00
Paul Ganssle f68d0932f4
Unwrap PyDateTime_CAPI function fields
Because the PyDateTime_CAPI is always accessed via a lazy-initialized
static reference, it is not necessary to handle the case where the
functions on the C struct have not been initialized.
2018-08-21 18:33:32 -04:00
Paul Ganssle bcc27bd522
Change datetime constructors to use Rust Option
This makes it cleaner to call PyTime::new and PyDateTime::new from Rust
without needing to retrieve a Python None.
2018-08-21 18:33:32 -04:00
Paul Ganssle bcc42315ff
Inline parameter typecasts
Clippy complains about the one-letter variables, but it's preferable to
do the typecasts in-line anyway.
2018-08-21 18:33:31 -04:00
Paul Ganssle 94bd0d7b6d
Relax constraints on PyDateTimeAPI initialization
As noted in the comments, using call_once to initialize the
PyDateTimeAPI singleton is causing deadlocks with the GIL; these
deadlocks can be avoided by falling back on CPython's own locking
behavior.
2018-08-21 18:33:28 -04:00
konstin 771d59b913 Fix another bunch of clippy lints 2018-08-21 23:51:13 +02:00
Paul Ganssle 12c20a75d9
Move datetime interface to exclusively use functions 2018-08-21 14:29:36 -04:00
Paul Ganssle ee658de1fb
Run rustfmt after datetime changes
Most of the datetime related changes were made before pyo3 switched to
using rustfmt, so I ran rustfmt only on the final commit to make it
easier to rewrite history as necessary (for fixups and whatnot).
2018-08-21 14:29:36 -04:00
Paul Ganssle 996c2baec8
Add preliminary Python 2 support to datetime bindings
The bounds checking tests are xfail because the datetime "fast path"
constructor didn't do bounds checking until bpo-29100 was resolved in
CPython commit b67f0967386a9c90411, which was merged for Python 3.6.

This functionality should be simple to backport to earlier versions in a
future commit.

BPO issue:
https://bugs.python.org/issue29100

CPython commit:
b67f096738
2018-08-21 14:29:36 -04:00
Paul Ganssle cd6f7295a1
Add type checking FFI bindings 2018-08-21 14:29:36 -04:00
Paul Ganssle f701bccbdf
Add PyTime component accessors 2018-08-21 14:29:36 -04:00
Paul Ganssle ecf3aaafb2
Add PyDateTime component accessors 2018-08-21 14:29:35 -04:00
Paul Ganssle 0b39452276
Add accessors to PyDateTime_Date 2018-08-21 14:29:35 -04:00
Paul Ganssle 08e7e0f55a
Add PyDelta component accessors
Adds the PyDateTime_DELTA_GET_{comp} accessors and bindings to them in
the PyDelta object.
2018-08-21 14:29:35 -04:00
Paul Ganssle f47697e2b5
Refactor pyobject_* macros
See 8c26020015 for general change.
2018-08-21 14:29:35 -04:00
Paul Ganssle f5e0785654
Add time_with_fold 2018-08-21 14:29:35 -04:00
Paul Ganssle c49bbe4549
Add PyDateTime::from_timestamp 2018-08-21 14:29:34 -04:00
Paul Ganssle 7256bc85b7
Add PyDate::from_timestamp 2018-08-21 14:29:34 -04:00
Paul Ganssle e8d6a4bcc0
Version qualify PyDateTimeAPI 2018-08-21 14:29:34 -04:00
Paul Ganssle 8d781cb03f
Add datetime.timedelta 2018-08-21 14:29:34 -04:00
Paul Ganssle f45362943d
Add datetime.time 2018-08-21 14:29:34 -04:00
Paul Ganssle d7b90c1b3a
Add datetime.datetime and switch to PyResult<Py<T>> 2018-08-21 14:29:34 -04:00
Paul Ganssle 496b879525
Add objects/datetime.rs 2018-08-21 14:29:33 -04:00
Paul Ganssle 2b74cdbd57
Add initial bindings for datetime.h 2018-08-21 14:29:31 -04:00
konstin 82129c70b4 Added an explenation that the GIL can temporarily be released even while holding a GILGuard 2018-08-20 22:56:24 +02:00
konstin db4a2d9017 Get rid of the pyobject_extract macro 2018-08-20 22:53:43 +02:00
konstin 991a8b94d2 More nightly fixes 2018-08-19 20:42:17 +02:00
konstin b12b65cfae Cleanup 2018-08-19 20:06:47 +02:00
kngwyu ff2871f325 Remove unnecessary feature gates from doc tests 2018-08-14 18:29:15 +09:00
konstin d0ed68414a Many small improvements 2018-08-04 19:56:59 +02:00
konstin fe8a719ee1 Rustfmt all the things ✔️ 2018-07-30 23:05:10 +02:00
konstin 83db765889 Refactoring 2018-07-30 22:56:25 +02:00
konstin d9d1650fc4 Fix #197 - Remove tuple to dict conversions 2018-07-30 22:52:36 +02:00
konstin 27633da3b1
Merge pull request #191 from milesgranger/master
Python::run should return PyObjectRef result
2018-07-30 17:49:57 +02:00
Miles Granger a13b79459f Return PyObjectRef result from Python::run 2018-07-29 22:00:36 +02:00
kngwyu 5e1ce01251 Enable generics parameter in pyobject_native_type! 2018-07-28 14:46:00 +09:00
konstin 2627fa8a08 0.3.2 2018-07-22 21:36:18 +02:00
konstin ff70f45071 (Hopefully) get travis to build the guide for tags 2018-07-18 23:28:14 +02:00
konstin 3adcac6e61 Replace concat_idents with mashup 2018-07-18 23:17:05 +02:00
konstin 7d4381fc5d Fixed scoping bug in pyobject_native_type that would break rust-numpy 2018-07-18 14:06:17 +02:00
konstin d59bebcc38 Upgrade from proc_macro to use_extern_macros 2018-07-18 13:08:05 +02:00
konstin eb613c64d9 Add repr(transparent) where applicable 2018-07-13 18:10:09 +02:00
konstin fe931a594f #[pymodinit] now uses the function name as default module name 2018-07-10 00:13:02 +02:00
konstin 4013d40897 Add py prefix to the proc macros and move them into the root module
This is important because `proc_macro_path_invoc` isn't going to be stabilized soon.
2018-07-08 23:33:48 +02:00
konstin 68c14a5707 Merge branch 'master' of https://github.com/PyO3/pyo3 2018-07-03 21:55:43 +02:00
konstin 28d6c9986c Fix clippy errors 2018-07-03 21:32:16 +02:00
konstin 43eb5fa490 Rename prepare_pyo3_library to init_once 2018-07-03 21:12:57 +02:00
konstin 6645708e4f Get rid of #[py*] methods 2018-07-03 20:42:02 +02:00
kngwyu 7d7c1ede49 Modify pyobject_native_type to take expr
To use deref(*) expression
2018-07-02 16:31:36 +09:00
kngwyu 41f4d1d673 $crate::std to ::std
So that we can use these macros in outer crates
2018-07-02 00:06:08 +09:00
kngwyu 70e1879d59 Make python pub 2018-07-02 00:06:01 +09:00
kngwyu 3ec49b586f Modify pyobject_native_type to take path instead of ident
So that we can use this macro outside this crate.
2018-07-01 23:51:56 +09:00
konstin f9ff7cd465 Ignore test because of a docmatic bug
See https://github.com/assert-rs/docmatic/issues/4
2018-06-15 15:59:22 +02:00
konstin 1301394264 Fix c string conversion in python 2 2018-06-15 15:57:59 +02:00
konstin 7a52bf647c Apply fixes by Philip Molloy 2018-06-14 16:03:05 +02:00
konstin 54b09c704b Fix -Z minimal-versions 2018-06-06 21:18:42 +02:00
kngwyu 66183d4683 Move common functions and macros from num2&num3 to num_common 2018-06-06 01:31:40 +09:00
kngwyu 0b964b503f Rename args of _PyLong_FromByteArray/_PyLong_AsByteArray 2018-06-05 23:03:53 +09:00
kngwyu 9ffbae30ab Add 128bit integer support for python2 2018-06-02 22:10:13 +09:00
kngwyu a87ddeab21 Add 128bit integer support for python3 2018-06-02 22:08:29 +09:00
kngwyu 4795a35143 impl IntoPyDictPointer for IntoIterator<Item=(K, V)>
this commit has 2 purposes:
1. Avoid duplication of implementation(for BTreeMap & HashMap)
2. Enable conversion from Vec<(K, V)> to PyDict
2018-05-30 16:26:23 +09:00
Kevin Phillips 9544adaf1d Marked from_code on PyModule to only work with Python 3. It could work with Python 2 if you call, for example, Py_CompileStringFlags and pass std::prt::null_mut() as the last argument and when calling PyImport_ExecCodeModuleEx passing mutable pointers for the first and last arguments. I also added a test for this to test_module.rs 2018-05-21 16:03:21 +02:00
Kevin Phillips 1b1121e558 Added a function to PyModule to load a module from a string of Python 2018-05-21 16:03:20 +02:00
konstin c42b71bc55 Fix python2 2018-05-19 17:42:40 +02:00
konstin 314a4a2b3e Some more documentation work 2018-05-19 17:27:26 +02:00
konstin 46b9bd6a9f
Merge pull request #155 from PyO3/pyobject_macros
Refactor and Export Pyobject_* macros
2018-05-13 14:54:57 +02:00
konstin 5717463daf
Merge pull request #154 from konstin/capybara
Relax return types and add functions
2018-05-12 20:43:40 +02:00
Martin Larralde 416a7fd8d3
Export PyUnicode in Python3 as well 2018-05-08 12:54:21 +02:00
konstin d445d60e0a Export PyUnicode to fix #141 2018-05-08 10:42:17 +02:00
konstin cb5bae2c90 Export pyobejct_* macros
This is required for interaction with other native python extensions, e.g. numpy

Fixes #153
2018-05-07 23:47:23 +02:00
konstin 8c26020015 Refactor pyobject_* macros 2018-05-07 23:45:24 +02:00
konstin 858a124374 Merge master 2018-05-05 15:50:04 +02:00
konstin afcc87e82c Feature gate try_from
This was discovered https://github.com/PyO3/pyo3/issues/5#issuecomment-386579894
2018-05-05 14:43:37 +02:00
konstin 57048bc5fc Merge branch 'master' into capybara 2018-05-02 19:32:56 +02:00
konstin 15204bab56 Better way to add functions to modules 2018-05-02 19:26:54 +02:00
Martin Larralde cc352dade3 Fix exception tests failing with Python 2 2018-05-02 13:54:59 +02:00
Martin Larralde b80b85539b Remove occurrences of py::methods and py::class 2018-05-01 23:17:42 +02:00
konstin 0880ac166c Merge master 2018-05-01 20:41:35 +02:00
konstin d0c42dfcc1 Fix compilation on nightly 2018-05-01 15:44:38 +02:00