Alex Gaynor
54390bc50b
Merge pull request #3712 from alex/binops
...
add PyAnyMethods for binary operators
2023-12-30 13:56:45 +00:00
Alex Gaynor
339660c117
add PyAnyMethods for binary operators
...
also pow
fixes #3709
2023-12-29 18:45:18 -05:00
David Hewitt
9a5668572b
implement `PyModuleMethods`
2023-12-29 21:46:46 +00:00
David Hewitt
3da1aac2dd
add `gil-refs` feature to aid migration
2023-12-29 14:42:31 +00:00
David Hewitt
442d13dab3
introduce `Bound::unbind`
2023-12-26 13:17:12 +00:00
David Hewitt
e4fd557d2a
remove `IntoIterator` for `&Bound`
2023-12-26 13:10:36 +00:00
David Hewitt
8a28a69c3d
implement `PyFrozenSetMethods`
2023-12-26 13:10:36 +00:00
David Hewitt
271cbf9edb
implement `PySetMethods`
2023-12-26 13:10:36 +00:00
David Hewitt
d36ad8f61f
introduce `Bound::as_borrowed`
2023-12-26 09:49:03 +00:00
David Hewitt
1b61cb015a
Add `.as_borrowed()` conversion from gil-refs to `Bound<T>`
2023-12-26 09:49:03 +00:00
Adam Reichold
f37c682f8c
Merge pull request #3700 from davidhewitt/super-bound
...
introduce `PySuper::new_bound`
2023-12-25 09:48:39 +00:00
Adam Reichold
ff373eb1c6
Merge pull request #3697 from davidhewitt/as-gil-ref
...
expose `Bound::as_gil_ref` and `Bound::into_gil_ref`
2023-12-25 09:48:23 +00:00
Adam Reichold
bd660537d8
Merge pull request #3695 from davidhewitt/bound-iterator
...
implement iterator for `Bound` iterator
2023-12-25 09:46:01 +00:00
David Hewitt
38abfd2eed
expose `Bound::as_gil_ref` and `Bound::into_gil_ref`
2023-12-24 22:10:09 +00:00
David Hewitt
d9cc0c0f24
introduce `PySuper::new_bound`
2023-12-24 20:04:15 +00:00
David Hewitt
6ca63b5772
Merge pull request #3698 from davidhewitt/unraisable-bound
...
implement `PyErr::write_unraisable_bound`
2023-12-24 19:54:27 +00:00
David Hewitt
d669a943f7
implement iterator for `Bound` iterator
2023-12-24 19:52:36 +00:00
David Hewitt
1004ffa7d6
export `Bound` and `Borrowed` from lib.rs
2023-12-24 19:35:50 +00:00
David Hewitt
877e34ac86
implement `PyErr::write_unraisable_bound`
2023-12-24 19:35:29 +00:00
David Hewitt
f5b18468bc
partially revert changes to `PyTzInfoAccess` trait
2023-12-24 15:07:42 +00:00
Adam Reichold
e99058a442
Merge pull request #3679 from davidhewitt/datetime2
...
implement datetime traits for `Bound`
2023-12-23 14:54:30 +00:00
David Hewitt
6832bf88f2
implement datetime traits for Py2
2023-12-23 15:34:07 +01:00
Adam Reichold
4dc6c1643e
Turn calls of __traverse__ into no-ops for unsendable pyclass if on the wrong thread
...
Adds a "threadsafe" variant of `PyCell::try_borrow` which will fail instead of
panicking if called on the wrong thread and use it in `call_traverse` to turn GC
traversals of unsendable pyclasses into no-ops if on the wrong thread.
This can imply leaking the underlying resource if the originator thread has
already exited so that the GC will never run there again, but it does avoid hard
aborts as we cannot raise an exception from within `call_traverse`.
2023-12-23 15:01:08 +01:00
Adam Reichold
e58b251fef
Copy note on using check_signals on non-main thread/interpreter from Python docs.
2023-12-22 12:08:37 +01:00
David Hewitt
4ac6a6bf15
add safety note to `downcast_into_unchecked`
2023-12-21 15:51:56 +00:00
David Hewitt
3092289020
expose `BoundDictIterator` and `BoundListIterator`
2023-12-21 13:09:22 +00:00
David Hewitt
e8e6fb93d7
Add `Py::bind`, `Py::into_bound`, and `Py::bind_borrowed`
2023-12-21 13:03:59 +00:00
David Hewitt
0f242c399d
make `DowncastError` and `DowncastIntoError` public
2023-12-21 13:03:59 +00:00
David Hewitt
c08c6c0a41
make new downcast errors public API
2023-12-21 12:28:12 +00:00
David Hewitt
a09b9f8834
make `Bound` and `Borrowed` types public API
2023-12-21 12:20:33 +00:00
David Hewitt
704e9fc7b5
`Py2` -> `Bound`
2023-12-21 12:04:45 +00:00
David Hewitt
2f080f4075
`Py2Borrowed` -> `Borrowed`
2023-12-21 12:02:56 +00:00
David Hewitt
2788f4a110
Merge pull request #3680 from davidhewitt/list2
...
implement `PyListMethods`
2023-12-21 11:13:04 +00:00
David Hewitt
ee1272ed76
implement `Copy` for `Py2Borrowed`
2023-12-21 10:44:39 +00:00
David Hewitt
de82e2d6e2
add `Py2Borrowed::to_owned`
2023-12-21 10:44:39 +00:00
David Hewitt
337e48328f
implement `PyListMethods`
2023-12-21 10:44:37 +00:00
Adam Reichold
3c97167fd1
Use write_unraisable to report errors loading type objects for ABC checks.
2023-12-21 11:33:26 +01:00
Adam Reichold
c1f4db0a9b
Increase use of common get_or_try_init_type_ref helper when caching type objects.
2023-12-21 11:33:25 +01:00
Adam Reichold
7f626b26d4
Merge pull request #3678 from davidhewitt/mapping2
...
implement `PyMappingMethods`
2023-12-21 09:47:35 +00:00
David Hewitt
43827e39ee
Merge pull request #3677 from davidhewitt/string2
...
implement `PyStringMethods`
2023-12-20 22:04:23 +00:00
David Hewitt
f4f3169cad
implement `PyStringMethods`
2023-12-20 16:19:18 +00:00
David Hewitt
8bd2972201
Merge pull request #3675 from davidhewitt/dict2-try2
...
implement `PyDictMethods`
2023-12-20 14:59:15 +00:00
David Hewitt
8e7c90733d
implement `PyMappingMethods`
2023-12-20 14:39:40 +00:00
David Hewitt
15d309eb1f
implement `PyDictMethods`
2023-12-20 14:18:45 +00:00
Adam Reichold
fd2fc983b1
Merge pull request #3676 from davidhewitt/any-iter
...
tidy up some Py2 <-> gil-ref conversions
2023-12-20 13:31:15 +00:00
Adam Reichold
1b3dc6d7ac
Merge pull request #3661 from PyO3/iter-output-type
...
Replace (A)IterNextOutput by autoref-based specialization to allow returning arbitrary value
2023-12-20 12:53:42 +00:00
David Hewitt
5181e35a61
tidy up some Py2 <-> gil-ref conversions
2023-12-20 12:50:15 +00:00
Adam Reichold
5528895f3e
Relax the error type in the Result<Option<T>, E>> specializations for __(a)next__.
2023-12-20 13:12:16 +01:00
David Hewitt
bc87b7bac6
deprecate `PyTryFrom` and `PyTryInto`
2023-12-20 11:28:24 +00:00
Adam Reichold
83697f0c62
Also replace IterANextOutput by autoref-based specialization to allow returning arbitrary values
2023-12-20 09:56:16 +01:00
Adam Reichold
ca7d90dcf3
Replace IterNextOutput by autoref-based specialization to allow returning arbitrary values
2023-12-20 09:56:16 +01:00
Tpt
0752942c3f
Duration: drops truncation warning
2023-12-20 08:57:26 +01:00
Tpt
8b614745cf
Adds std::duration::Duration from/to Python conversions
2023-12-20 08:57:26 +01:00
Adam Reichold
ee54132ff6
Merge pull request #3671 from davidhewitt/dh/downcast-error-split
...
Add `Py2` variants of `PyDowncastError`
2023-12-19 21:31:38 +00:00
David Hewitt
1451418ee4
Add `Py2` variants of `PyDowncastError`
2023-12-19 20:59:57 +00:00
David Hewitt
54ba6e82ca
Merge pull request #3651 from davidhewitt/bytes2
...
implement `PyBytesMethods` and `PyByteArrayMethods`
2023-12-19 19:56:16 +00:00
David Hewitt
35f7f1a78c
use Py2Borrowed to make PyBytesMethods slightly nicer
2023-12-19 19:02:23 +00:00
Adam Reichold
8bb64377b8
Merge pull request #3638 from PyO3/call-op-bool
...
Try harder by looking for a __bool__ magic method when extracing bool values from Python objects.
2023-12-19 18:52:55 +00:00
Adam Reichold
4177dfcc81
Apply __bool__ conversion only to numpy.bool_ to avoid false positives.
2023-12-19 18:55:28 +01:00
Adam Reichold
57002d2389
Align error message when no method __bool__ is defined with CPython's general style.
2023-12-19 18:55:28 +01:00
Adam Reichold
3e10d64fa2
Avoid attribute lookup overhead for __bool__ if the unlimited API is available.
2023-12-19 18:55:28 +01:00
Adam Reichold
8133aaa5d8
Try harder by looking for a __bool__ magic method when extracing bool values from Python objects.
...
I decided to not implement the full protocol for truth value testing [1] as it
seems confusing in the context of function arguments if basically any instance
of custom class or non-empty collection turns into `true`.
[1] https://docs.python.org/3/library/stdtypes.html#truth
2023-12-19 18:55:28 +01:00
David Hewitt
e727640ef3
Merge pull request #3664 from Tpt/chrono-abi3
...
Chrono: compatibility with abi3
2023-12-19 17:53:30 +00:00
David Hewitt
c5dce0172b
implement `PyBytesMethods` and `PyByteArrayMethods`
2023-12-19 17:26:52 +00:00
Adam Reichold
68f417fb1c
Defend against mutable type objects when extracting their full name.
2023-12-19 16:51:24 +01:00
Adam Reichold
416d3c488f
Rename name to qualname and full_name to name to better match Python
2023-12-19 16:51:24 +01:00
Adam Reichold
2fdd52003e
Add PyType::full_name which is tp_name and has an abi3 fallback.
2023-12-19 15:47:21 +01:00
Tpt
d7eac6527b
Chrono: compatibility with abi3
2023-12-19 14:53:14 +01:00
David Hewitt
1dca87972a
Merge pull request #3662 from Tpt/chrono-test
...
Chrono: makes test independent of datetime C-API
2023-12-19 08:26:21 +00:00
Tpt
0d2387e858
Chrono: makes FromPyObject impl on DateTime generic
...
ToPyObject was already generic
2023-12-18 20:12:30 +01:00
Tpt
7705181049
Chrono: makes test independent of datetime C-API
2023-12-18 17:12:39 +01:00
Adam Reichold
ced97f80d1
Transition is_true to is_truthy to clarify that the test is not based on identity with or equality to the True singleton.
2023-12-16 14:04:37 +01:00
David Hewitt
867a273afc
Merge pull request #3648 from Tpt/timezone-constructor
...
Adds internal timezone_from_offset function
2023-12-15 16:12:32 +00:00
Tpt
dcaed199c7
Adds internal timezone_from_offset function
...
It allows to build conversions from chrono without direct access to the C API
2023-12-15 17:00:25 +01:00
David Hewitt
d7adc74ba5
implement `PyBoolMethods`
2023-12-15 14:39:04 +00:00
David Hewitt
97cf9b834c
Merge pull request #3653 from davidhewitt/native-type-source
...
Add `AsRefSource` to `PyNativeType`.
2023-12-14 22:33:49 +00:00
David Hewitt
ef8532b175
Add `AsRefSource` to `PyNativeType`.
2023-12-14 18:35:06 +00:00
Adam Reichold
d1b4b9e7d4
Merge pull request #3650 from davidhewitt/float2
...
implement `PyFloatMethods`
2023-12-14 18:07:32 +00:00
David Hewitt
8a7c5002bd
rename `floatob.rs` to `float.rs`
2023-12-14 17:14:17 +00:00
David Hewitt
8bdae345f3
implement `PyFloatMethods`
2023-12-14 17:12:06 +00:00
David Hewitt
015f028589
hold onto module name properly in `PyCFunction::internal_new`
2023-12-14 16:23:53 +00:00
David Hewitt
82ac801be4
introduce traits to make ffi ptr handling cleaner
2023-12-14 13:00:45 +00:00
David Hewitt
ac4ee2841b
implement `PySequenceMethods`
2023-12-14 13:00:45 +00:00
messense
c21a84d999
Add support for extracting Rust set types from `frozenset`
2023-12-07 20:25:31 +08:00
David Hewitt
07726aefc4
Merge pull request #3609 from wyfo/async_receiver
...
feat: allow async methods to accept `&self`/`&mut self`
2023-12-07 07:38:25 +00:00
Joseph Perez
f34c70c2da
feat: allow async methods to accept `&self`/`&mut self`
2023-12-07 07:42:10 +01:00
Adam Reichold
4baf0235c3
Merge pull request #3616 from neachdainn/3615-gilprotected-pyvisit
...
Enable `GILProtected` access via `PyVisit`
2023-12-05 20:43:38 +00:00
Nathan Kent
3249feb85c
Enable `GILProtected` access via `PyVisit`
...
Closes #3615
This simply adds a new method which uses the existence of a `PyVisit`
object as proof that the GIL is held instead of a `Python` object. This
allows `GILProtected` to be used in instances where contained Python
objects need to participate in garbage collection. Usage in this
situation should be valid since no Python calls are made and this does
not provide any additional mechanism for accessing a `Python` object.
2023-12-05 11:10:00 -08:00
David Hewitt
ed87637ebb
replace `PyTryFrom` by splitting `PyTypeInfo`
2023-12-05 08:01:30 +03:00
David Hewitt
16ae0e2efe
Merge pull request #3608 from wyfo/remove_futures
...
refactor: drop futures_util dependency
2023-12-04 19:17:43 +00:00
Joseph Perez
2ca9f59d6f
refactor: drop futures_util dependency
2023-12-04 18:56:34 +01:00
David Hewitt
e8f852bce7
Merge pull request #3599 from wyfo/coroutine_cancel
...
feat: add `coroutine::CancelHandle`
2023-12-04 12:44:36 +00:00
Joseph Perez
8a674c2bd3
feat: add `coroutine::CancelHandle`
2023-12-04 07:46:51 +01:00
Adam Reichold
e6457c5e99
Use portable-atomic for targets which lack 64-bit atomics used to check interpreter ID.
...
I chose to make the dependency mandatory instead of optional as portable-atomic
itself just forwards to the native atomics when they are available so making
that choice part of our build system is not really necessary. Personally, I was
unable to perceive any noticeable compile-time hit from adding it.
2023-12-02 07:57:00 +01:00
Alex Gaynor
dd6e0339d3
Refactor create_type_object so that most of the code is monomorphic
...
In pyca/cryptography this function is the #1 source of lines of generated LLVM IR, because it is duplicated 42x (and growing!). By rewriting it so most of the logic is monomorphic, we reduce the generated LLVM IR for this function by 4x.
2023-11-28 20:09:34 -05:00
David Hewitt
5c6d49084f
remove all functionality deprecated in 0.19
2023-11-27 22:02:19 +00:00
David Hewitt
d8002c4b2b
Merge pull request #3588 from wyfo/coroutine_name
...
feat: add coroutine `__name__`/`__qualname__`
2023-11-26 09:23:29 +00:00
Joseph Perez
781b9e3983
feat: add coroutine `__name__`/`__qualname__` and not-awaited warning
2023-11-25 21:51:20 +01:00
Adam Reichold
1203921d5c
Merge pull request #3456 from aldanor/feature/either
...
Add conversion support for `either::Either`
2023-11-25 09:37:49 +00:00
Adam Reichold
81bc838acd
Merge pull request #3577 from davidhewitt/none-typeinfo
...
Implement `PyTypeInfo` for `PyEllipsis`, `PyNone`, and `PyNotImplemented`
2023-11-25 09:36:43 +00:00
David Hewitt
9f66846238
Merge pull request #3595 from davidhewitt/ok-wrap
...
refactor `OkWrap` to not call `.into_py(py)`
2023-11-25 05:43:54 +00:00
David Hewitt
cd8526ecc6
Implement `PyTypeInfo` for `PyEllipsis`, `PyNone`, and `PyNotImplemented`
2023-11-24 22:31:39 +00:00
David Hewitt
bead83f4b0
docs: fixup docs for smallvec feature
2023-11-24 22:11:40 +00:00
Ivan Smirnov
a75464ee26
add conversion support for `either::Either`
2023-11-24 22:09:34 +00:00
David Hewitt
c814078866
refactor `OkWrap` to not call `.into_py(py)`
2023-11-24 10:41:08 +00:00
Joseph Perez
627841f1e2
feat: support `async fn` in macros with coroutine implementation
2023-11-22 20:25:36 +01:00
David Hewitt
7b07d6d21b
Merge pull request #3578 from davidhewitt/typed-helpers
...
Change return types of `py.None()`, `py.NotImplemented()` and `py.Ellipsis()` to typed singletons
2023-11-20 07:07:12 +00:00
David Hewitt
bd0174aa5d
Change return types of `py.None()`, `py.NotImplemented()` and `py.Ellipsis()` to typed singletons
2023-11-17 16:16:19 +00:00
David Hewitt
a9305ab389
ci: move lints to new 1.74 cargo.toml tables
2023-11-17 15:41:52 +00:00
Joseph Perez
1fd4090bd4
refactor: remove useless `unsafe` in `get_mut`
2023-10-29 13:50:36 +01:00
Joseph Perez
bb1cc93797
feat: add `take` and `into_inner` methods to `GILOnceCell`
2023-10-29 08:33:04 +01:00
David Hewitt
572a27d2d3
ci: fix nightly unused import warnings
2023-10-25 23:30:14 +01:00
David Hewitt
d895734499
change `PyDict::from_sequence` to take just `&PyAny`
2023-10-20 11:59:26 +01:00
David Hewitt
2ca8e573a4
remove comparison to rust-cpython
2023-10-15 22:03:24 +01:00
David Hewitt
f12f928bd5
Merge pull request #3514 from messense/memoryview
...
Add `PyMemoryView` type
2023-10-15 15:08:50 +00:00
David Hewitt
aa28cec893
Merge pull request #3507 from orhun/feat/support_smallvec_conversion
...
Add support for `SmallVec` in conversion traits (#3440 )
2023-10-15 14:43:55 +00:00
messense
f4e64aadef
Add test cases for new `TryFrom` impls
2023-10-15 21:53:31 +08:00
messense
d4ed66fff0
Add `TryFrom` impls for `PyByteArray` and `PyMemoryView`
2023-10-15 17:39:01 +08:00
messense
5b94241bd7
Add `PyMemoryView` type
2023-10-15 17:32:09 +08:00
Orhun Parmaksız
31acf0dc6f
Add an entry to features table in lib
2023-10-13 13:35:30 +03:00
David Hewitt
cac95f31c7
add Py2 as an internal API for optimization and dogfooding
2023-10-13 08:10:37 +02:00
Orhun Parmaksız
dfeae473e5
Add support for `SmallVec` in conversion traits ( #3440 )
2023-10-11 17:14:23 +03:00
David Hewitt
e1d4173827
Fix bug in default implementation of `__ne__`
2023-10-11 09:48:06 +01:00
David Hewitt
76bf521ed0
Merge pull request #3505 from davidhewitt/deprecate_dunder_new
...
deprecate undocumented `#[__new__]` form of `#[new]`
2023-10-10 21:35:10 +00:00
David Hewitt
6c90325a1c
deprecate undocumented `#[__new__]` form of `#[new]`
2023-10-10 08:47:03 +01:00
David Hewitt
c0b5004cfa
Merge pull request #3455 from davidhewitt/normalized-exceptions
...
also use `PyErr::SetObject` on Python versions before 3.12
2023-10-10 07:44:39 +00:00
mejrs
6ca573b9d0
Update clippy
2023-10-06 23:31:06 +02:00
David Hewitt
2daddb4734
unify 3.12 and pre-3.12 exception handling pathways
2023-09-30 23:27:27 +01:00
David Hewitt
f335f42197
Merge pull request #3446 from davidhewitt/relax-import-check
...
relax multiple-import check to only prevent subinterpreters
2023-09-29 16:35:31 +00:00
David Hewitt
b9e9859082
Merge pull request #3478 from mejrs/auto
...
Don't let auto trait syntax bleed through on stable Rust
2023-09-29 16:35:05 +00:00
mejrs
0c8ab98760
move it into the inline module.
2023-09-29 17:22:27 +02:00
David Hewitt
1a349c2eb7
adjust cfgs for windows 3.9
2023-09-29 14:23:18 +01:00
David Hewitt
50cb41dd0b
Merge pull request #3458 from davidhewitt/truncate-leap-seconds
...
truncate leap seconds on `chrono` to `datetime` conversions
2023-09-29 11:47:27 +00:00
David Hewitt
4b5ff05721
Merge pull request #3471 from davidhewitt/normalized-exceptions-2
...
always normalize exceptions before raising
2023-09-28 20:27:18 +00:00
mejrs
d0d4b9d3fb
Dont let auto trait syntax bleed through on stable
2023-09-28 12:26:09 +02:00
David Hewitt
0459532f69
truncate leap seconds on `chrono` to `datetime` conversions
2023-09-24 20:28:43 +01:00
David Hewitt
673c45aac3
Merge pull request #3470 from davidhewitt/tests-capture-warnings
...
add `assert_warnings` test helper
2023-09-24 13:09:01 +00:00
David Hewitt
1e8833e15e
always normalize exceptions before raising
2023-09-24 13:38:23 +01:00
David Hewitt
7d486bb72a
tests/common.rs -> src/tests/common.rs
2023-09-24 13:34:53 +01:00
David Hewitt
42f9cd4476
Merge pull request #3469 from davidhewitt/chrono-tidy-up
...
refactor chrono implementation to be more DRY
2023-09-24 09:32:43 +00:00
David Hewitt
f691a68b46
Merge pull request #3472 from davidhewitt/normalized-exceptions-3
...
unify 3.12 / non-3.12 error handling branches
2023-09-23 21:45:25 +00:00
David Hewitt
d089c92680
unify 3.12 / non-3.12 error handling branches
2023-09-23 22:18:59 +01:00
David Hewitt
97ee5967e0
increase test coverage of `chrono` feature
2023-09-23 13:51:38 +01:00
David Hewitt
20378a607b
Merge pull request #3466 from davidhewitt/docs-only-prs
...
docs: skip changelog check for docs-only PRs
2023-09-23 12:26:37 +00:00
David Hewitt
c8f82be32c
add assert_warnings test helper
2023-09-23 13:14:18 +01:00
David Hewitt
ccc22a905d
allow invalid_from_utf8 lint in tests
2023-09-23 12:54:53 +01:00
David Hewitt
2d61a73b02
refactor chrono implementation to be more DRY
2023-09-23 12:46:45 +01:00
David Hewitt
f17e703167
return existing module on Python 3.9 and up
2023-09-23 11:13:39 +01:00
David Hewitt
1338020511
relax multiple-import check to only prevent subinterpreters
2023-09-23 11:13:39 +01:00
David Hewitt
5798caf1f8
better `Some`-wrapping for default arguments
2023-09-21 21:14:44 +01:00