Yuji Kanagawa
05b0cb66f8
Merge pull request #506 from PyO3/more_error_information
...
Print error before on class init panic
2019-06-14 14:16:47 +09:00
kngwyu
0f9a3b1194
Expose py_run macro
2019-06-13 18:18:06 +09:00
konstin
dfd5a2abb8
Print error before on class init panic
...
Inspired by https://github.com/rust-numpy/rust-numpy/issues/97 , also fixes some warnings from the latest nightly
2019-06-05 12:01:09 +02:00
kngwyu
35f5301675
Reject generics explicitly for #[pyclass]
2019-06-05 18:46:17 +09:00
Martin Larralde
99fdafbb88
Allow setting the module name for a pyclass ( #499 )
...
* Add `MODULE` const value to `PyTypeInfo` trait
* Allow setting module name in `pyclass` macro arguments
* Add `$module` argument to `pyobject_native_type` macro in `pyo3::types`
* Set the right module for builtin types in `pyo3::types`
* Add `module` argument to example `word_count.WordCounter` class
* Add `module` argument of `pyclass` macro to guide
* Reformat code using `rustfmt`
* Add tests and entry in CHANGELOG.md for `module` argument in `pyclass`
* Make `$module` parameter in `pyobject_native_type` optional
* Make `pyobject_native_type` declare module as `Some("builtins")` by default
2019-06-03 12:18:44 +09:00
kngwyu
4bf448ecaa
Complete the PR
2019-05-25 23:19:07 +09:00
Georg Brandl
39d3ceb551
Make PyTuple constructors return &PyTuple
2019-05-25 22:40:32 +09:00
Alexander Niederbühl
299d325375
Enable setting the module name of a class
...
This is relevant for pickling objects.
2019-05-08 23:39:22 +02:00
kngwyu
cf689840ef
Allow lifetime in pymethods
2019-04-26 14:28:29 +09:00
Yuji Kanagawa
60cd0d09c4
Merge pull request #419 from kngwyu/pyclass-regression
...
Allow slf: PyRef<Self>/PyRefMut<Self> in pymethods
2019-04-24 14:10:28 +09:00
Alexander Niederbühl
faa3feda3f
Merge branch 'master' into doctest
2019-04-23 21:58:09 +02:00
kngwyu
a7736dd51b
Add test of slf: PyRefMut<_>
2019-04-23 23:16:09 +09:00
kngwyu
09bf9bbf4a
Allow slf: PyRef<Self> by replacing Self
2019-04-23 23:16:09 +09:00
kngwyu
b2e01066f0
Introduce FromPyPointer for slf: PyRef/PyRefMut
2019-04-23 23:16:09 +09:00
kngwyu
515c7beac0
Allow slf: Py<Self>/PyRef<Self>/PyRefMut<Self> in pymethods
2019-04-23 23:16:08 +09:00
Alexander Niederbühl
f1b0288d3c
Remove docmatic and several workarounds for the doctests
2019-04-19 22:47:21 +02:00
Alexander Niederbühl
5858823e83
Test readme and user guide with doc-comment
...
Also rename some files for consistency.
2019-04-19 22:38:11 +02:00
Georg Brandl
117f6eb47d
Allow omitting PyResult wrapping in property get/set methods
...
fixes #443
2019-04-17 22:29:12 +02:00
Martin Larralde
edd2fba2d6
Add tests for quotes in class/method documentation
2019-04-15 01:29:13 +02:00
Martin Larralde
51be6a60fe
Run `cargo fmt` on `pyo3-derive-backend` and `tests`
2019-04-14 01:50:00 +02:00
Martin Larralde
3f4f068c7f
Ensure `#[getter]` doc is exposed as the `__doc__` of the descriptor
2019-04-14 00:23:59 +02:00
Martin Larralde
569a7e9e95
Add more tests for `#[pymethods]` docstrings
2019-04-13 23:25:45 +02:00
Martin Larralde
dfd1fa55c0
Remove dead code from `tests/test_sequence.rs`
2019-03-31 05:29:25 +02:00
Martin Larralde
3b7e83fb7c
Run `cargo fmt` on `tests/test_sequence.rs`
2019-03-31 05:28:52 +02:00
Martin Larralde
dd2f1ba16a
Add tests for `PySequenceProtocol` in `tests/test_sequence.rs`
2019-03-31 05:28:52 +02:00
ijl
2bb0d05a30
Drop support for python2
2019-03-29 12:37:26 +00: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
59a9d4fd9f
Merge branch 'master' into pyany
2019-03-18 01:00: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
konstin
6540a374af
Export pyo3_derive_backend::pyimpl::impl_methods
2019-03-16 11:38:05 +01:00
Alexander Niederbühl
e2e4733b82
Test examples in user guide with travis
...
Test could only be activated for Python 3.5 and some tests had to be
ignored, see #381 and #387 .
2019-03-09 23:54:28 +01:00
kngwyu
874d8a0835
Rename PyObjectRef with PyAny
2019-03-04 13:50:43 +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
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
konstin
2105fa896b
Add PyTuple tests
...
Initially proposed by athre0z in #307 , with the changes from latest master
2019-02-13 22:30:46 +01: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
kngwyu
4a552a88cf
Py::new_ref -> PyRef::new
2019-02-08 23:51:14 +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
9e53418aad
Less feature(specialization)
2019-02-01 18:09:51 +01:00
konstin
328d61ca3b
Fix test for python2
2019-02-01 17:15:33 +01:00
konstin
c868cc3e4b
Fix test
2019-02-01 16:31:18 +01:00
konstin
c71c116f29
Better trait bounds with PyMethodsProtocol
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
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
Alexander Niederbühl
053fa5b984
Avoid race condition in gc tests
...
To avoid a segfault when the object is collected, disable garbage
collection for the duration of `gc_integration2`.
Closes #198
2019-01-10 00:46:24 +01:00
konstin
89872dceb9
Replace deprecated methods
2018-12-15 14:15:43 +01:00
kngwyu
25a5b74ba6
Use linked list in ReleasePool
2018-11-21 16:00:26 +09: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
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
dbaa2de061
Small improvements around function calling
2018-10-31 11:38:45 +01:00
konstin
71c584a110
De-specialize ToBorrowedObject
2018-10-03 21:04:49 +02: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
302c099a76
Big refactoring to shrink the prelude
2018-09-21 23:34:28 +02:00
konstin
d92e522243
Syn 0.15
2018-09-09 00:20:04 +02:00
konstin
4c1ff24b2b
Fix raw identifiers
2018-09-03 20:50:18 +02:00
konstin
f58549f1d8
Get rid of a bunch of PyTokens
2018-09-02 23:33:45 +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
3e7d5280ca
Merge pull request #200 from pganssle/datetime
...
Initial datetime bindings
2018-08-22 18:00:05 +02: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
078bea4345
Move rustapi_module into examples
...
This is really a test module, but the Rust convention is to put
something like this under examples/, and when it lands, we can take
advantage of "Project-based Examples for Cargo Projects" - RFC link
at https://github.com/rust-lang/rfcs/pull/2517
2018-08-21 18:33:33 -04:00
Paul Ganssle
3357fabb35
Remove 'Component' from ComponentAccess Traits
2018-08-21 18:33:32 -04:00
Paul Ganssle
003351ba61
Get rid of unwrap_py! macro
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
09ee50d4ca
Add tests for datetime overflow behavior
...
It *should* be safe to cast u32 to i32 in the case of the Py{Date}{Time}
constructors, because any unsigned values that would overflow would
raise an error anyway.
This adds tests to ensure that this is the case - they currently fail on
Python <3.6 because of a known issue with the Python C API.
2018-08-21 18:33:31 -04:00
konstin
771d59b913
Fix another bunch of clippy lints
2018-08-21 23:51:13 +02: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
149a13cbfa
Fix how the test rustapi_module is built
2018-08-21 14:29:35 -04:00
Paul Ganssle
cca8eb43d6
Add gitignore to rustapi_module
2018-08-21 14:29:35 -04:00
Paul Ganssle
d67d2c4265
Update rustapi_module to new macro methods
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
ee85940579
Add new requirements-dev.txt file
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
52a64a9240
Add rustapi_module test
2018-08-21 14:29:34 -04: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
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
3adcac6e61
Replace concat_idents with mashup
2018-07-18 23:17:05 +02:00