Commit Graph

631 Commits

Author SHA1 Message Date
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