Armin Ronacher
066880e7d5
Added support for PyErr_WriteUnraisable
2023-01-29 20:01:22 +00:00
Nate Kent
f11290d314
Add additional unit test for GC traversal
...
Since we're just testing a bug during traversal, we don't actually have
to reap the object, we just have to make a reference cycle so that it's
traverse method is called.
2023-01-26 16:27:54 -08:00
mejrs
2052269aea
Update rust 1.67
2023-01-26 21:44:05 +01:00
David Hewitt
586fed2c4b
send errors in __releasebuffer__
to sys.unraisablehook
2023-01-19 19:10:06 +00:00
David Hewitt
8f48d157d6
deprecate required arguments after option arguments without signature
2023-01-15 10:17:20 +00:00
bors[bot]
8af48bbb53
Merge #2796
...
2796: Forward cfgs on pyclass fields to the method defs r=davidhewitt a=mejrs
With this and the cfg_attr PR, I don't need cfg_eval at all anymore :)
- [x] needs some more tests
Co-authored-by: mejrs <>
2022-12-29 16:28:26 +00:00
mejrs
5198722dd9
Add test
2022-12-28 23:11:39 +01:00
Alex Gaynor
4875e4b6bf
update URL in comment to point at correct place
...
The branch has drifted and those line ranges are no longer accurate.
2022-12-28 20:48:11 +01:00
David Hewitt
f2608a923c
remove functionality deprecated in 0.16
2022-12-28 12:23:53 +00:00
David Hewitt
5039fd746a
add automatic text signature generation
2022-12-24 09:43:02 +00:00
David Hewitt
33871b7aea
allow **kwargs to take arguments which conflict with positional-only parameters
2022-12-17 07:22:28 +00:00
David Hewitt
f01b245d85
update ui tests for Rust 1.66
2022-12-16 20:56:15 +00:00
bors[bot]
08423557d4
Merge #2739
...
2739: error when `#[pyo3(signature = ())]` used on invalid methods r=davidhewitt a=davidhewitt
A follow-up to #2702 to reject some invalid applications of `#[pyo3(signature = (...))]` attribute, specifically on magic methods and getters / setters / class attributes.
Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
2022-11-22 19:41:27 +00:00
Georg Brandl
99c8dea30e
Use Python::get_type() instead of PyTypeInfo::type_object()
...
The former needs one less import and uses a familiar object.
2022-11-20 15:16:18 +01:00
Georg Brandl
2a630a2a52
Fix being able to call arg-less #[new]
with any args from Python
...
Fixes #2748
2022-11-20 08:25:19 +01:00
Georg Brandl
c489809938
Py/PyAny: deprecate cast_as() in favor of downcast()
...
They are (practically) identical on PyAny, and `downcast()` is the more
useful name.
2022-11-18 07:00:40 +01:00
David Hewitt
00fc0358b9
error when #[pyo3(signature = ())]
used on invalid methods
2022-11-17 08:28:34 +00:00
Bruno Kolenbrander
6766d9f93b
Merge pull request #2686 from dalcde/closure-name-doc
...
Support passing name and doc to new_closure.
2022-11-06 17:35:20 +01:00
messense
0e770a8458
Update ui tests for Rust 1.65.0
2022-11-04 06:35:30 +00:00
Dexter Chua
9201a7dd48
Support passing name and doc to PyCFunction::new_closure. Fixes #2665
2022-10-29 12:26:09 +08:00
David Hewitt
8e8b484169
add #[pyo3(signature = (...))]
attribute ( #2702 )
2022-10-25 07:23:21 +01:00
David Hewitt
747d791f1f
introduce trampolines for methods ( #2705 )
2022-10-25 07:22:36 +01:00
David Hewitt
446c0e82f0
Merge pull request #2692 from mejrs/all
...
Implement get/set all on pyclass
2022-10-18 21:39:44 +01:00
mejrs
08c8b845aa
Create better error spans/messages
2022-10-18 21:14:22 +02:00
mejrs
d254134154
Implement get/set all on pyclass
2022-10-17 02:37:43 +02:00
Bruno Kolenbrander
4a04603c2c
Don't use intocallback in method macros ( #2664 )
...
* Don't use intocallback in method macros
Co-authored-by: mejrs <>
2022-10-16 10:35:58 +01:00
David Hewitt
8102ad1a1b
rust: updates for 1.64
2022-09-22 21:03:34 +02:00
David Hewitt
c5ba1f0632
pyclass: better error and explanation why lifetimes are disallowed ( #2633 )
...
* pyclass: better error and explanation why lifetimes are disallowed
* extend detail on lifetimes
2022-09-22 11:14:06 +02:00
David Hewitt
c445eba28d
pyfunction: fix compile error for Option<&T> argument with a default
2022-09-20 15:44:55 +02:00
Jonathan Coates
26a9603519
Some improvements to __richcmp__ on enums
...
- Implement __ne__ as well as __eq__.
- Return NotImplemented when types cannot be converted, rather than
throwing.
- Compare the integer ids inside the __eq__/__ne__ implementation.
Previously a match block was generated.
2022-09-16 15:30:56 +01:00
Ivan “CLOVIS” Canet
d7c1a2906a
IntoPy and FromPyObject allow the retrieval of the type information
2022-09-06 21:30:36 +02:00
David Hewitt
5718adeec7
pyproto: remove deprecated feature
2022-09-06 08:38:44 +01:00
David Hewitt
9d543b3f4b
pyfunction: fix from_py_with on Option<T> argument
2022-08-25 18:57:17 +01:00
David Hewitt
36ecadd69f
ci: unpin serde, fixup nightly ui tests
2022-08-23 08:07:26 +01:00
David Hewitt
d0492b7c72
Merge pull request #2570 from davidhewitt/pyclass-frozen-tidy
...
pyclass: tidy up frozen implementation
2022-08-21 09:35:51 +01:00
David Hewitt
24456f3f41
pyclass: tidy up frozen implementation
2022-08-21 08:21:06 +01:00
David Hewitt
fd8026c7bb
pyclass: add sequence
option to implement sq_length
2022-08-20 07:14:26 +01:00
mejrs
fc6121eafe
Deprecate acquire_gil
2022-08-15 03:34:47 +02:00
David Hewitt
c58ff7758c
pypy: disable PyFunction
2022-08-13 17:51:10 +01:00
David Hewitt
987858f5fa
ci: ui tests for 1.63
2022-08-12 07:26:29 +01:00
messense
db177a07ad
Fix new clippy warnings in Rust 1.63.0
2022-08-12 11:50:23 +08:00
Ashley Anderson
5d88e1d1c4
Update PyTryFrom for PyMapping and PySequence to more accurately check types ( #2477 )
...
Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
2022-08-10 21:03:18 +01:00
David Hewitt
78ba70d2b4
pymodule: only allow initializing once per process
2022-08-09 19:52:25 +01:00
mejrs
984fdf57c7
Use Python:;with_gil in tests
2022-07-19 19:34:23 +02:00
David Hewitt
d5e99b635d
refactor: remove all 0.15 deprecations
2022-07-15 06:33:14 +01:00
David Hewitt
7babd13830
datetime: support timezone bindings
2022-07-13 22:05:17 +01:00
David Hewitt
97ce1f6892
ci: fix nightly UI tests
2022-07-13 08:06:14 +01:00
Ivan Krivosheev
1cd1dbfe8b
Add super object ( #2486 )
2022-07-03 19:21:15 +01:00
Bruno Kolenbrander
58d4ba833e
Rust 1.62 ( #2489 )
...
* Rust 1.62
* Make rust happy
* Just use a doctest instead
Co-authored-by: mejrs <>
2022-07-02 16:08:01 +01:00
David Hewitt
4da9c3a55f
llvm-lines: use iterator to collect class items
2022-06-25 22:03:28 +01:00
David Hewitt
62f27caffe
ci: fix nightly ui tests
2022-06-25 21:12:14 +01:00
Ashley Anderson
bde5102eb8
Increasing test coverage ( #2462 )
...
* cov: src/buffer.rs - add tests for debug and element from format
* cov: src/buffer.rs - add some fortran-specific calls in test_array_buffer
* fix issues in MSRV
* cov: src/types/function.rs - directly call PyCFunction::new and PyCFunction::new_with_keywords
* docs: clarify docs of PyCFunction::new and PyCFunction::new_with_keywords
* revert added rust-version for MSRV in Cargo.toml
* cov: src/types/slice.rs - simple tests for PySliceIndices::new
* fix for multi-platform
* Update src/types/function.rs
Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
* cov: src/buffer.rs - a better PyBuffer Debug test
Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
2022-06-23 21:30:22 +01:00
Gabriel Smith
75656949f9
macros: Support #[pyo3(name)] on enum variants
2022-06-22 09:36:40 -04:00
Gabriel Smith
2122faa547
macros: Use macro-defined name for enums in __repr__
2022-06-21 16:31:23 -04:00
David Hewitt
7725f17c46
pyclass: switch from immutable to frozen
2022-06-19 21:18:15 +01:00
David Hewitt
517f4a87a9
Merge pull request #2450 from mejrs/misc
...
Fix UB in *_offset functions
2022-06-18 08:53:10 +01:00
David Hewitt
f81a01b604
macros: emit pymethod associated methods as a single block
2022-06-16 22:15:29 +01:00
Ivan Krivosheev
f19561c745
Allow #[classattr] take Python argument
2022-06-16 13:08:53 +03:00
mejrs
2d3a5852ed
Avoid UB in *_offset methods
2022-06-12 15:11:39 +02:00
David Hewitt
7c56a03d64
frompyobject: fix from_py_with
ignored for transparent structs
2022-06-09 06:49:25 +01:00
Hood Chatham
da5b9814cc
Set up CI for wasm32-emscripten target ( #2436 )
...
* ci: test on emscripten target
This adds CI to build libpython3.11 for wasm32-emscripten and
running tests against it. We need to patch instant to work
around the emscripten_get_now:
https://github.com/sebcrozet/instant/pull/47
We also have to patch emscripten to work aroung the "undefined
symbol gxx_personality_v0" error:
https://github.com/emscripten-core/emscripten/issues/17128
I set up a nox file to download and install emscripten,
download and build cpython, set appropriate environment variables
then run cargo test. The workflow just installs python, rust,
node, and nox and runs the nox session.
I xfailed all the test failures. There are problems with datetime.
iter_dict_nosegv and test_filenotfounderror should probably be
fixable. The tests that involve threads or asyncio probably can't
be fixed.
* Some cleanup
* Remove instant patch
* Add explanations for xfails
2022-06-08 05:59:18 +01:00
David Hewitt
cdf86482d8
ffi: many fixes to pypy definitions
2022-06-04 12:47:40 +01:00
David Hewitt
a746411b24
Merge pull request #2422 from davidhewitt/frompyobject-fixes
...
frompyobject: improve error messages of derived impls
2022-06-02 13:30:03 +01:00
David Hewitt
f50406a034
Merge pull request #2413 from davidhewitt/simpler-interned
...
macros: simpler expansion for `intern!`
2022-06-02 12:54:11 +01:00
David Hewitt
0aa4f95a98
frompyobject: improve error messages of derived impls
2022-06-02 11:13:35 +01:00
David Hewitt
261c0c5f56
macros: simpler expansion for intern!
2022-06-02 09:57:58 +01:00
David Hewitt
cfb91057af
frompyobject: improve error message for tuple case
2022-06-02 08:54:20 +01:00
David Hewitt
eafbbc5417
Merge pull request #2399 from davidhewitt/avoid-duplicate-pymethods
...
pymethods: prevent methods sharing the same name
2022-05-24 22:22:31 +01:00
David Hewitt
879eb14e27
Merge pull request #2395 from davidhewitt/fix-class-raw-ident
...
macros: fix raw-ident pyclasses having r# at the start of the Python name
2022-05-24 22:08:56 +01:00
David Hewitt
71abeeff8b
macros: fix raw-ident pyclasses having r# at the start of the Python name
2022-05-24 21:34:23 +01:00
David Hewitt
a306365db8
pymethods: prevent methods sharing the same name
2022-05-24 21:15:30 +01:00
David Hewitt
126bf49b8b
Merge pull request #2377 from herquan/herquan_cr1
...
Add macro append_to_inittab (issue #2359 )
2022-05-24 08:02:47 +01:00
herquan
2ec477344d
Add macro append_to_inittab
...
Sometimes we need to debug in a real environment with our module installed. `append_to_inittab` will be a wrapper for PyImport_AppendInittab (https://docs.python.org/3/c-api/import.html#c.PyImport_AppendInittab ) and help us to do this
2022-05-24 07:42:15 +01:00
David Hewitt
0de0e3f8d6
Allow #[classattr]
methods to be fallible
2022-05-17 21:19:41 +01:00
David Hewitt
8636db67f5
add regression test for PEP 587
2022-05-15 16:08:21 +01:00
Bruno Kolenbrander
c57e5098b8
Fix IntoPyCallbackOutput paper cuts ( #2326 )
...
* Implement IntoPy for arrays of IntoPy
* Improve `IntoPyCallbackOutput` compile error
2022-05-09 18:15:43 +01:00
Bruno Kolenbrander
dce4377eb4
Allow more methods to take interned arguments ( #2312 )
...
* Allow more methods to take interned arguments
* Changelog
* Unify name bounds
* Resolve merge conflict
* reduce use of py_decref
* Add some attr tests
* Update migration
2022-05-02 11:13:15 +02:00
David Hewitt
4168feed1b
opt: tidy some generic code bloat
2022-04-26 05:36:57 +01:00
cuishuang
19e32a0621
fix some typos
...
Signed-off-by: cuishuang <imcusg@gmail.com>
2022-04-24 22:06:32 +08:00
David Hewitt
7e2d3117ce
cleanup: deprecate PyTypeObject trait
2022-04-23 13:36:32 +01:00
David Hewitt
e9bd41efb2
better mutability inheritance rules
2022-04-21 20:51:28 +01:00
mejrs
53a642eda7
Fix ui test
2022-04-12 15:49:23 +02:00
Bruno Kolenbrander
bc6bd6099c
Merge branch 'main' into immutable
2022-04-12 14:22:33 +02:00
mejrs
b7745dffc8
Fix everything
2022-04-12 14:19:02 +02:00
mejrs
4fc0cdd636
Fix ui test
2022-04-07 23:56:15 +02:00
David Hewitt
c16cc35b30
pyclass: mapping flag
2022-04-02 16:15:44 +01:00
mejrs
086424b88c
Merge branch 'main' of https://github.com/mejrs/pyo3 into immutable
2022-04-01 23:11:02 +02:00
mejrs
9ab1e6927a
Merge branch 'immutable' of https://github.com/mejrs/pyo3 into immutable
2022-04-01 22:59:59 +02:00
Bruno Kolenbrander
43944aef76
Create a better error message for moving self ( #2238 )
2022-03-24 10:27:37 +01:00
Bruno Kolenbrander
fb689340b4
Merge branch 'main' into lint-more
2022-03-23 09:34:31 +01:00
mejrs
6f1cf1b662
Add more lints
2022-03-23 08:07:28 +01:00
David Hewitt
87c79c0319
Merge pull request #2234 from davidhewitt/pyclass-args-refactor
...
pyclass: unify pyclass with its pyo3 arguments
2022-03-22 11:38:05 +00:00
David Hewitt
5cc3ce99f1
pyclass: unify pyclass with its pyo3 arguments
2022-03-20 08:24:09 +00:00
Alex Gaynor
69655454c1
Added an as_bytes method for Py<PyBytes>
...
This allows for obtaining a slice that's not lexically bound to the GIL which can be helpful to avoid copying.
2022-03-19 13:28:06 -04:00
David Hewitt
ddf13ea98f
clippy: enable some more lints
2022-03-03 07:23:28 +00:00
David Hewitt
b59ee9b54b
misc: tidy ups pre 0.16
2022-02-27 10:02:28 +00:00
Georg Brandl
0678f11266
Protocols: implement __getattribute__
...
converting tp_getattro to a shared slot
Fixes #2186
2022-02-26 20:05:50 +01:00
Georg Brandl
03dc96bff1
Py/PyAny: remove PartialEq impl and add is() ( #2183 )
2022-02-25 19:39:45 +00:00
David Hewitt
7c865fcc25
Merge pull request #2173 from davidhewitt/deprecate-pyproto
...
pyproto: deprecate protocol traits
2022-02-24 23:54:40 +00:00
David Hewitt
424644181b
pymethods: add support for inplace concat & repeat
2022-02-24 23:07:24 +00:00