Commit graph

2686 commits

Author SHA1 Message Date
David Hewitt 96b8c9facf
migrate some final FromPyObject implementations to the Bound API (#3869)
* update `Py::extract` to use `extract_bound`

* update docstring of `FromPyObject`

* move `Option` conversions to new module & update

* move `Cell` conversions to new module & update
2024-02-19 22:14:26 +00:00
David Hewitt 4efc4b82a3
ci: fix redundant import warnings on nightly (#3873) 2024-02-19 22:07:05 +00:00
Icxolu 0bb9cab6d3
port PyComplex::from_complex to Bound API (#3866)
* port `PyComplex::from_complex` to `Bound` API

* add `PyComplexMethods` to the prelude
2024-02-18 23:37:02 +00:00
David Hewitt a85ed34c45
add Bound API constructors from borrowed pointers (#3858)
* make `Borrowed` ptr constructors public

* introduce `Bound::from_borrowed_ptr` constructors

* clippy `assert_eq` -> `assert`

* rerrange function order and correct docstrings
2024-02-18 22:03:43 +00:00
Lily Foote b4dc854585
Convert LazyTypeObject to use the Bound API (#3855) 2024-02-18 22:01:50 +00:00
Icxolu 4ce9c35983
port Python::get_type to Bound API (#3846)
* port `Python::get_type` to `Bound` API

* fix `is_subclass_and_is_instance` FIXME
2024-02-18 18:27:19 +00:00
David Hewitt f04ad56df4
implement PyTypeMethods (#3705)
* implement `PyTypeMethods`

* introduce `PyType` bound constructors

* `from_type_ptr_bound` instead of `from_type_ptr_borrowed`

* correct conditional code

* just make `from_type_ptr_bound` create an owned `Bound`

* correct docstrings

Co-authored-by: Icxolu <10486322+Icxolu@users.noreply.github.com>

* Rework as `PyType::from_borrowed_type_ptr`

* correct doc link to `from_borrowed_type_ptr`

Co-authored-by: Lily Foote <code@lilyf.org>

* remove unneeded lifetime name

---------

Co-authored-by: Icxolu <10486322+Icxolu@users.noreply.github.com>
Co-authored-by: Lily Foote <code@lilyf.org>
2024-02-18 03:07:48 +00:00
Icxolu 1d295a12a0
port PyObject::downcast to Bound API (#3856)
* port `PyObject::downcast` to `Bound` API

* relax traits bounds for unchecked variant in `Bound` API

* deprecate `Python::(checked_)cast_as`

* reword deprecation warning
2024-02-18 01:11:43 +00:00
Lily Foote 0dd568d397
Use the new bound API instead of .as_ref(py) (#3853)
* Use the new bound API instead of .as_ref(py)

* Move import into a nested scope

* Use to_cow instead of to_str for compatibility

`to_str` is not available before Python 3.10 on the limited api.

* Relax &self lifetimes

* Use Bound<'py, PyAny> in test Mapping signatures

* Use .as_bytes(py)

* Simplify ThrowCallback::throw signature

* Avoid .as_any call with Py api instead of Bound
2024-02-18 00:09:56 +00:00
Lily Foote 5f42c02e4f
Remove stray " character from docstring (#3852) 2024-02-17 17:04:35 +00:00
Icxolu c33d330b18
deprecate PyFrozenSet::empty (#3851) 2024-02-17 13:40:54 +00:00
Icxolu 1d8d81db2d
port PyFrozenSetBuilder to Bound API (#3850) 2024-02-17 12:21:41 +00:00
David Hewitt eb90b81d44
always use a Python iterator for sets and frozensets (#3849)
* always use a Python iterator for sets and frozensets

* add newsfragment
2024-02-17 10:57:53 +00:00
Lily Foote 940804fe0d
Pyerr value bound (#3820)
* Implement PyErr::value_bound

* Use PyErr::value_bound in conversions

* Implement PyErr::from_value_bound

* Remove unnecessary clone

* Return a reference from PyErr::value_bound

* Avoid clone in PyErr::from_value_bound

* Use PyErr::from_value_bound instead of from_value

* Remove unnecessary .as_borrowed() calls

* Remove unused import

* Simplify UnraisableCapture.hook

* Use Bound::from_owned_ptr_or_opt in fn cause

* Update PyErrState::lazy to take Py<PyAny>

This is easier to work with elsewhere than `&PyAny` or
`Bound<'py, PyAny>`.

* Add Bound PyUnicodeDecodeError constructors

* Update PyErr::from_value_bound to take Bound

* Simplify PyErr::from_value

* Simplify PyErr::value

* Remove unnecessary reference

* Simplify Pyerr::cause implementation

* Simplify PyUnicodeDecodeError::new_bound
2024-02-17 00:27:45 +00:00
David Hewitt ec6d587218
support Bound for classmethod and pass_module (#3831)
* support `Bound` for `classmethod` and `pass_module`

* `from_ref_to_ptr` -> `ref_from_ptr`

* add detailed docs to `ref_from_ptr`
2024-02-16 00:36:11 +00:00
Icxolu 05aedc9032
port PyErr::warn to Bound API (#3842)
* port `PyErr::new_type`

* port `PyErr::warn` and `PyErr::warn_explicit`
2024-02-16 00:12:43 +00:00
David Hewitt dc8b948201
add PyBackedStr and PyBackedBytes (#3802)
* add `PyBackedStr` and `PyBackedBytes`

* review: adamreichold feedback

* use `NonNull<[u8]>`

* clippy and newsfragment

* drop binding unused after refactoring

---------

Co-authored-by: Adam Reichold <adam.reichold@t-online.de>
2024-02-15 07:58:20 +00:00
Icxolu f3ddd023c9
convert PyBuffer to Bound API (#3836) 2024-02-14 22:10:59 +00:00
Icxolu 9902633116
allow from_py_with on function args to take a fn(&Bound) -> PyResult (#3837) 2024-02-14 22:03:04 +00:00
Icxolu 0c12d9137f
port Python::import to Bound API (#3832)
* port `Python::import` to `Bound` API

* tidy up imports in tests/test_datetime_import.rs

---------

Co-authored-by: David Hewitt <mail@davidhewitt.dev>
2024-02-14 00:24:37 +00:00
Icxolu fbfeb2ff03
update #[derive(FromPyObject)] to use extract_bound (#3828)
* update `#[derive(FromPyObject)]` to use `extract_bound`

* type inference for `from_py_with` using function pointers
2024-02-13 00:09:41 +00:00
David Hewitt 94b7d7e434
add DowncastIntoError::into_inner (#3829) 2024-02-12 21:40:05 +00:00
David Hewitt 5b9b76fe58
add _bound constructors for datetime types (#3778)
* add `_bound` constructors for datetime types

* review: Icxolu feedback

* update uses of deprecated timezone_utc
2024-02-12 20:49:58 +00:00
Lily Foote 1279467d27
Pyerr isinstance (#3826)
* Implement PyErr::is_instance_bound

* Update is_instance_bound to take a reference

Co-authored-by: David Hewitt <mail@davidhewitt.dev>

* Remove spurious clone

---------

Co-authored-by: David Hewitt <mail@davidhewitt.dev>
2024-02-12 08:32:51 +00:00
Icxolu c359f5ca1d
deprecate PyDict::new constructor (#3823)
* deprecate `PyDict::new`

* update benchmarks

* convert `test_frompyobject`
2024-02-11 23:55:56 +00:00
Lily Foote baf5c8ec0a
Implement PyErr::get_type_bound (#3819)
* Implement PyErr::get_type_bound

* Update docs for PyErr::get_type_bound

* Fix doctest for cloning PyErr

* Import the whole prelude in docs example

Co-authored-by: David Hewitt <mail@davidhewitt.dev>

* Remove unnecessary self lifetime

Co-authored-by: David Hewitt <mail@davidhewitt.dev>

* Remove more unnecessary self lifetimes

* Use variables to avoid dangling pointers

Co-authored-by: David Hewitt <mail@davidhewitt.dev>

* Avoid using ffi in fn ptype on Py_3_12

Co-authored-by: David Hewitt <mail@davidhewitt.dev>

* Add missing imports to fn ptype

---------

Co-authored-by: David Hewitt <mail@davidhewitt.dev>
2024-02-11 21:07:28 +00:00
David Hewitt 55488d3880
Merge pull request #3818 from davidhewitt/datetime-segv
fix segmentation fault when `datetime` module is invalid
2024-02-11 09:04:32 +00:00
David Hewitt 5b1104131f fix segmentation fault when datetime module is invalid 2024-02-11 02:44:31 +00:00
David Hewitt 07ea89d460
Merge pull request #3817 from Icxolu/into-pydict
port `IntoPyDict` to `Bound` API
2024-02-11 02:26:03 +00:00
Icxolu e45fbe493c port IntoPyDict to Bound API 2024-02-10 15:47:26 +01:00
David Hewitt fa53d81e5f
Merge pull request #3801 from davidhewitt/encode-utf8
add `PyStringMethods::encode_utf8`
2024-02-10 14:16:32 +00:00
Icxolu 4d423b0c67 port Python::run to Bound API 2024-02-09 22:09:16 +01:00
David Hewitt b7fb9e672e
Merge pull request #3782 from davidhewitt/type-check-bound
add `bound` method variants for `PyTypeInfo`
2024-02-09 20:22:44 +00:00
Icxolu 33dc33ecec port Python::eval to Bound API 2024-02-09 17:52:00 +01:00
David Hewitt 367eeaeeab add bound method variants for PyTypeInfo 2024-02-08 22:27:05 +00:00
David Hewitt 3541506a16 ci: allow some dead code warnings on nightly 2024-02-08 20:52:03 +00:00
David Hewitt 030a618e0d
Merge pull request #3800 from snuderl/PyCFunction-bound-api
PyCFunction bound api
2024-02-06 18:28:40 +00:00
Blaž Šnuderl aa3c938b5e PyCFunction bound api 2024-02-06 18:44:53 +01:00
David Hewitt 86f294f6e6 expose Bound::from_owned_ptr etc 2024-02-05 18:27:43 +00:00
David Hewitt 662eecfb44 add PyStringMethods::encode_utf8 2024-02-05 13:28:46 +00:00
David Hewitt 02f1df69b5
Merge pull request #3792 from davidhewitt/bound-pyclass-2
pyclass methods for `Bound`
2024-02-05 10:38:30 +00:00
Adam Reichold c995426c81
Merge pull request #3799 from davidhewitt/move-cow
move `Cow[u8]` conversions into `conversions::std::slice` module
2024-02-05 10:18:33 +00:00
David Hewitt 42843de47b pyclass methods for Bound 2024-02-05 09:41:22 +00:00
David Hewitt 7281268840 move Cow[u8] conversions into conversions::std::slice module 2024-02-05 08:52:07 +00:00
Bruno Kolenbrander 7938d4cadc
Merge pull request #3798 from davidhewitt/beta-map-clone
ci: fix beta clippy `map_clone` warning
2024-02-05 08:48:14 +00:00
David Hewitt de93d15eeb ci: fix beta clippy map_clone warning 2024-02-05 07:57:27 +00:00
Blaž Šnuderl f1384f3582 Implement PyNone.get() using PyNone.get_bound() 2024-02-05 08:06:59 +01:00
Blaž Šnuderl 1fd0aa2b19 Use new method to implement old 2024-02-05 08:03:25 +01:00
Blaz Snuderl 8388b14369 PyNotImplemented get_bound 2024-02-04 20:08:52 +01:00
Blaz Snuderl 8354590ae6 PyEllipsis get_bound method 2024-02-04 20:01:15 +01:00
David Hewitt 5dbb51b9ce
Merge pull request #3784 from davidhewitt/more-extract-bound
migrate many `FromPyObject` implementations to `Bound` API
2024-02-04 15:58:22 +00:00
Icxolu 304c8e655a convert marshal to Bound API 2024-02-04 16:25:00 +01:00
David Hewitt 0d4df9c19d adjust FromPyObject implementations to always use 'py lifetime 2024-02-04 14:22:03 +00:00
David Hewitt 2a741a21e6 migrate many FromPyObject implementations to Bound API 2024-02-04 14:22:03 +00:00
Blaž Šnuderl d1e967e9ea Uncomment a test 2024-02-04 07:31:29 +01:00
Blaž Šnuderl eca943ea35 Add new get_bound and mark old get as deprecated 2024-02-04 07:30:28 +01:00
Blaž Šnuderl 7efd412a63 Merge branch 'main' into PyNone-new-api 2024-02-04 07:29:32 +01:00
David Hewitt 76d1b34cd5 Revert "Merge pull request #3578 from davidhewitt/typed-helpers"
This reverts commit 7b07d6d21b, reversing
changes made to 99858236bd.
2024-02-03 20:56:23 +00:00
Blaz Snuderl b1863c73df clippy 2024-02-03 21:25:47 +01:00
Blaz Snuderl 507ea28b27 test 2024-02-03 21:14:31 +01:00
Blaž Šnuderl 9641b11752 hmm 2024-02-03 20:57:46 +01:00
Blaž Šnuderl a2a6062adc fmt 2024-02-03 20:48:25 +01:00
Blaž Šnuderl 5e9d97d1c6 Implement new API for PyNone #3684 2024-02-03 19:09:12 +01:00
David Hewitt d8c5e7943c
Merge pull request #3790 from Icxolu/bool
add `Bound` constructor for `PyBool`
2024-02-03 13:10:30 +00:00
Icxolu af21a9dc74 add Bound constructor for PyBool 2024-02-03 12:06:50 +01:00
David Hewitt 8f8d4d33fa
Merge pull request #3776 from davidhewitt/bound-extract
migrate `FromPyObject` for `Bound` and `Py` to new APIs
2024-02-02 23:10:47 +00:00
David Hewitt 57735540e8
Merge pull request #3736 from Tpt/tpt/systemtime
Adds conversion between SystemTime and datetime
2024-02-01 14:05:51 +00:00
David Hewitt a60c1821af implement PyFunctionArgument for &Bound<T> 2024-02-01 13:22:53 +00:00
David Hewitt d35a6a1fd6
Merge pull request #3785 from davidhewitt/bound-as-any
add `Bound::as_any` and `Bound::into_any` (and same for `Py`)
2024-02-01 10:52:25 +00:00
David Hewitt 49a57dfd18 clean up implementations in src/instance.rs 2024-02-01 10:14:58 +00:00
David Hewitt 4437e8f616 add Py::as_any and Py::into_any 2024-02-01 09:07:36 +00:00
David Hewitt cbc97f8ea9 add Bound::as_any and Bound::into_any 2024-02-01 09:01:33 +00:00
David Hewitt 4c94be51a7 add PyBytes::new_bound 2024-02-01 08:52:28 +00:00
Icxolu b14dbcf29f add Bound constructors for PyMemoryView 2024-01-30 22:52:31 +01:00
Icxolu e704a760b7 add Bound constructors for PyByteArray 2024-01-30 22:52:31 +01:00
David Hewitt 2f00eb1423 for now just change return type of intern! 2024-01-30 13:28:07 +00:00
David Hewitt aa139ad422 add intern_bound! macro 2024-01-30 10:58:19 +00:00
David Hewitt fed8bcadaf add remaining bound string constructors 2024-01-30 09:13:24 +00:00
David Hewitt 718be9fac5
Merge pull request #3770 from Icxolu/capsule
implement `PyCapsuleMethods`
2024-01-29 21:23:43 +00:00
Icxolu e323fcbb9e implement PyCapsuleMethods 2024-01-29 18:22:40 +01:00
David Hewitt a3eb328378 migrate FromPyObject for Bound and Py to extract_bound 2024-01-29 13:46:46 +00:00
David Hewitt c47565666d add PyString::new_bound 2024-01-29 13:14:00 +00:00
David Hewitt 7549a21154
Merge pull request #3773 from davidhewitt/float-new-bound
add `PyFloat::new_bound`
2024-01-29 11:52:45 +00:00
David Hewitt 345e122bbf add PyFloat::new_bound 2024-01-29 11:06:34 +00:00
David Hewitt d4d08b24b0 add PyDict::new_bound without deprecation 2024-01-29 10:17:54 +00:00
David Hewitt ffaa03e3f1 Migrate some conversions to extract_bound 2024-01-28 07:22:51 +00:00
David Hewitt 595ca4b3c1 Add extract_bound method to FromPyObject 2024-01-28 07:22:51 +00:00
David Hewitt ed7263faa2
Merge pull request #3767 from Icxolu/complex
implement `PyComplexMethods`
2024-01-27 22:06:02 +00:00
Icxolu 37e2a4d9c9 implement PyComplexMethods 2024-01-27 22:26:53 +01:00
David Hewitt 1657109ae0 documentation updates for PyList::new_bound 2024-01-27 21:12:55 +00:00
David Hewitt 674f7282d8 ToPyObject and IntoPy for Borrowed 2024-01-27 21:12:55 +00:00
David Hewitt eed196329d add list bound constructors 2024-01-27 21:12:55 +00:00
David Hewitt 0973da27e9
Merge pull request #3743 from davidhewitt/set-bound-constructors
add bound constructors for `PySet` and `PyFrozenSet`
2024-01-27 17:55:42 +00:00
Tpt f83544910f Adds conversion between SystemTime and datetime 2024-01-27 17:43:51 +01:00
David Hewitt 5f320d7a04
Merge pull request #3765 from davidhewitt/remove-py-newref
remove internal uses of `_Py_NewRef`
2024-01-27 13:35:29 +00:00
David Hewitt 87e0610b58 remove internal uses of _Py_NewRef 2024-01-27 12:07:46 +00:00
Icxolu 7918815cee implement PySliceMethods 2024-01-27 11:34:32 +01:00
Icxolu f86053e2c2 implement PyTracebackMethods 2024-01-27 11:34:32 +01:00
David Hewitt 06c95432c6 set & frozenset bound constructors 2024-01-17 09:45:41 +00:00
David Hewitt 43504cd15a
Merge pull request #3742 from samuelcolvin/int-extraction-performance
improve performance of successful int extract by ~30% by avoiding calls to `__index__` where redundant
2024-01-16 17:14:39 +00:00
Samuel Colvin 0e876d94d6
improve performance of successful int extract by ~30%
add newsfragment

formatting

skip slow path on 3.8+

formatting

cfg if,else

formatting again

dedicated macro, change int_convert_u64_or_i64 too

add float tests

force index call for PyLong_AsUnsignedLongLong

perform PyLong check for 3.8 too

perform PyLong check for <3.10
2024-01-16 13:51:19 +00:00
David Hewitt 7366b1a386
Merge pull request #3730 from Tpt/chrono-tz
Conversion between chrono_tz::Tz and zoneinfo.ZoneInfo
2024-01-15 14:48:27 +00:00
David Hewitt ab699a0727 allow dead_code in IPowModulo 2024-01-12 15:55:21 +00:00
David Hewitt 4504a7c96e fix some nightly lints 2024-01-12 2024-01-12 13:34:17 +00:00
Tpt 72f0c73925 Conversion between chrono_tz::Tz and zoneinfo.ZoneInfo 2024-01-08 15:19:49 +01:00
David Hewitt 50e33d86c7 add call_bound and call_method_bound 2024-01-03 13:24:14 +00:00
Adam Reichold e2c6eb86f9 Fix missing feature flags in implementation of Either conversion. 2024-01-02 20:47:42 +00:00
David Hewitt eceb28bc79
Merge pull request #3702 from davidhewitt/bound-iterator-constructor
introduce PyIterator::from_bound_object
2024-01-02 15:34:54 +00:00
David Hewitt 783e98b1a8 introduce PyIterator::from_bound_object 2024-01-02 14:11:26 +00:00
David Hewitt 4cf58c8303 implement IntoPy<Py<PyTuple>> for Bound<PyTuple> 2023-12-30 21:37:46 +00:00
David Hewitt 823b5feed3 improve tuple methods test coverage 2023-12-30 21:37:46 +00:00
David Hewitt 53d25f7ff2 add new PyTuple constructors 2023-12-30 21:37:46 +00:00
David Hewitt 375e3d4eee implement PyTupleMethods 2023-12-30 21:37:46 +00:00
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