* Added `ToPyObject` and `Into<PyObject>` impls for `PyBackedStr`.
* Create 4205.added.md
* Added attributes limiting the `ToPyObject` and `IntoPy<PyObject>` impls to the case where `cfg(any(Py_3_10, not(Py_LIMITED_API)))`. When this cfg does not apply, the conversion is less trivial since the `storage` is actually `PyBytes`, not `PyString`.
* Fixed imports format.
* Updated the `ToPyObject` and `IntoPy<PyObject>` impls to support the `cfg(not(any(Py_3_10, not(Py_LIMITED_API))))` case by converting the `PyBytes` back to `PyString`.
* Added `ToPyObject` and `IntoPy<PyObject>` impls for `PyBackedBytes`.
* Added tests for the `PyBackedBytes` conversion impls.
* Updated newsfragment entry to include the `PyBackedBytes` impls.
* Changed the `IntoPy` and `ToPyObject` impls for `PyBackedBytes` to produce `PyBytes` regardless of the backing variant. Updated tests to demonstrate this.
* retrigger checks
* Updated `PyBackedStr` conversion tests to extract the result as a `PyBackedStr` instead of `&str` since the latter is not supported under some `cfg`'s.
* Fixed `IntoPy<PyObject> for PyBackedBytes` impl to create `bytes` for both storage types as intended. Updated test to properly catch the error.
---------
Co-authored-by: jrudolph <jrudolph@anl.gov>
* Add vscode folder to gitignore
* Initial work on PyWeakRef (weakref.ReferenceType)
* Add documentation for PyWeakRef::upgrade
* Add missing docs for PyWeakRef
* Add PyWeakProxy
* Add PyWeakCallableProxy
* Add PyWeakRefMethods::upgrade_exact and prevent unnecessary panicing
* Change PyWeakRefMethods to exclude infeasible errors.
As a result of the checks made about the objectpointers in PyO3, all
errors in PyWeakref_GetObject are already caught. Therefor there is no
need to check for these errors in the non-ffi layer.
* Add towncrier changes
* Update weakref type doctests to use `py.run_bound`
* Fix to adhere to MSRV
* Make weakref tests independent from macros feature
* Change Weakref tests
* Remove forgotten Debug marcos
* Processed .gitignore and PyResultExt feedback
* Change new methods of weakref types to remove dangling pointers
* Change to reflect deprecation of PyErr::value for PyErr::value_bound
* Change Tests so different class name in older python versions is accounted for
* Change formatting
* Make tests ABI3 compatible
* Prevent the use of PyClass in test for weakref under abi3 Python 3.7 and 3.8
* Disable weakref types when targeting PyPy
* Remove needless borrow from CallableProxy test
* Add Borrowed variants of upgrade and upgrade exact to trait
* Added tests for weakref borrow_upgrade methods
* Change PyWeakRefMethods method names to be more consistent
* Change weakref constructors to take PyAny for main target
* Add track_caller to all panicing weakref methods
* Add PyWeakRefMethods::upgrade*_as_unchecked
* Fix PyWeakProxy and PyWeakCallableProxy Documentation
* Replace deprecated wrap_pyfunction with bound equivalent
* Add (Generic) PyWeakref Type
* Reworked Proxy types into one (PyWeakrefProxy)
* Rename PyWeakRef to PyWeakrefReference
* Change PyWeakrefReference to only use type pointer when it exists
* Remove `#[track_caller]` annotations for now
* Make the gil-refs function feature dependent
* Remove unused AsPyPointer import
* Change docs links to PyNone to not include private module
* Fix string based examples
* Change tests to work for Python 3.13
* Fix cargo clippy for Python 3.13
---------
Co-authored-by: David Hewitt <mail@davidhewitt.dev>
* Add feature controlling the global reference pool to enable avoiding its overhead.
* Document reference-pool feature in the performance guide.
* Invert semantics of feature to disable reference pool so the new behaviour becomes opt-in
* Remove delayed reference count increments as we cannot prevent reference count errors as long as these are available
* Adjust tests to be compatible with disable-reference-pool feature
* Adjust tests to be compatible with py-clone feature
* Adjust the GIL benchmark to the updated reference pool semantics.
* Further extend and clarify the documentation of the py-clone and disable-reference-pool features
* Replace disable-reference-pool feature by pyo3_disable_reference_pool conditional compilation flag
Such a flag is harder to use and thereby also harder to abuse. This seems
appropriate as this is purely a performance-oriented change which show only be
enabled by leaf crates and brings with it additional highly implicit sources of
process aborts.
* Add pyo3_leak_on_drop_without_reference_pool to turn aborts into leaks when the global reference pool is disabled and the GIL is not held
* Add `num-rational` support for Python's `fractions.Fraction` type
* Add newsfragment
* Use Bound instead
* Handle objs which atts are incorrect
* Add extra test
* Add tests for wasm32 arch
* add type for wasm32 clipppy