diff --git a/CHANGELOG.md b/CHANGELOG.md index 86055a9a80c..128544202cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,69 @@ To see unreleased changes, please see the [CHANGELOG on the main branch guide](h +## [0.22.0] - 2024-06-24 + +### Packaging + +- Update `heck` dependency to 0.5. [#3966](https://github.com/PyO3/pyo3/pull/3966) +- Extend range of supported versions of `chrono-tz` optional dependency to include version 0.10. [#4061](https://github.com/PyO3/pyo3/pull/4061) +- Update MSRV to 1.63. [#4129](https://github.com/PyO3/pyo3/pull/4129) +- Add optional `num-rational` feature to add conversions with Python's `fractions.Fraction`. [#4148](https://github.com/PyO3/pyo3/pull/4148) +- Support Python 3.13. [#4184](https://github.com/PyO3/pyo3/pull/4184) + +### Added + +- Add `PyWeakref`, `PyWeakrefReference` and `PyWeakrefProxy`. [#3835](https://github.com/PyO3/pyo3/pull/3835) +- Support `#[pyclass]` on enums that have tuple variants. [#4072](https://github.com/PyO3/pyo3/pull/4072) +- Add support for scientific notation in `Decimal` conversion. [#4079](https://github.com/PyO3/pyo3/pull/4079) +- Add `pyo3_disable_reference_pool` conditional compilation flag to avoid the overhead of the global reference pool at the cost of known limitations as explained in the performance section of the guide. [#4095](https://github.com/PyO3/pyo3/pull/4095) +- Add `#[pyo3(constructor = (...))]` to customize the generated constructors for complex enum variants. [#4158](https://github.com/PyO3/pyo3/pull/4158) +- Add `PyType::module`, which always matches Python `__module__`. [#4196](https://github.com/PyO3/pyo3/pull/4196) +- Add `PyType::fully_qualified_name` which matches the "fully qualified name" defined in [PEP 737](https://peps.python.org/pep-0737). [#4196](https://github.com/PyO3/pyo3/pull/4196) +- Add `PyTypeMethods::mro` and `PyTypeMethods::bases`. [#4197](https://github.com/PyO3/pyo3/pull/4197) +- Add `#[pyclass(ord)]` to implement ordering based on `PartialOrd`. [#4202](https://github.com/PyO3/pyo3/pull/4202) +- Implement `ToPyObject` and `IntoPy` for `PyBackedStr` and `PyBackedBytes`. [#4205](https://github.com/PyO3/pyo3/pull/4205) +- Add `#[pyclass(hash)]` option to implement `__hash__` in terms of the `Hash` implementation [#4206](https://github.com/PyO3/pyo3/pull/4206) +- Add `#[pyclass(eq)]` option to generate `__eq__` based on `PartialEq`, and `#[pyclass(eq_int)]` for simple enums to implement equality based on their discriminants. [#4210](https://github.com/PyO3/pyo3/pull/4210) +- Implement `From>` for `PyClassInitializer`. [#4214](https://github.com/PyO3/pyo3/pull/4214) +- Add `as_super` methods to `PyRef` and `PyRefMut` for accesing the base class by reference. [#4219](https://github.com/PyO3/pyo3/pull/4219) +- Implement `PartialEq` for `Bound<'py, PyString>`. [#4245](https://github.com/PyO3/pyo3/pull/4245) +- Implement `PyModuleMethods::filename` on PyPy. [#4249](https://github.com/PyO3/pyo3/pull/4249) +- Implement `PartialEq<[u8]>` for `Bound<'py, PyBytes>`. [#4250](https://github.com/PyO3/pyo3/pull/4250) +- Add `pyo3_ffi::c_str` macro to create `&'static CStr` on Rust versions which don't have 1.77's `c""` literals. [#4255](https://github.com/PyO3/pyo3/pull/4255) +- Support `bool` conversion with `numpy` 2.0's `numpy.bool` type [#4258](https://github.com/PyO3/pyo3/pull/4258) +- Add `PyAnyMethods::{bitnot, matmul, floor_div, rem, divmod}`. [#4264](https://github.com/PyO3/pyo3/pull/4264) + +### Changed + +- Change the type of `PySliceIndices::slicelength` and the `length` parameter of `PySlice::indices()`. [#3761](https://github.com/PyO3/pyo3/pull/3761) +- Deprecate implicit default for trailing optional arguments [#4078](https://github.com/PyO3/pyo3/pull/4078) +- `Clone`ing pointers into the Python heap has been moved behind the `py-clone` feature, as it must panic without the GIL being held as a soundness fix. [#4095](https://github.com/PyO3/pyo3/pull/4095) +- Add `#[track_caller]` to all `Py`, `Bound<'py, T>` and `Borrowed<'a, 'py, T>` methods which can panic. [#4098](https://github.com/PyO3/pyo3/pull/4098) +- Change `PyAnyMethods::dir` to be fallible and return `PyResult>` (and similar for `PyAny::dir`). [#4100](https://github.com/PyO3/pyo3/pull/4100) +- The global reference pool (to track pending reference count decrements) is now initialized lazily to avoid the overhead of taking a mutex upon function entry when the functionality is not actually used. [#4178](https://github.com/PyO3/pyo3/pull/4178) +- Emit error messages when using `weakref` or `dict` when compiling for `abi3` for Python older than 3.9. [#4194](https://github.com/PyO3/pyo3/pull/4194) +- Change `PyType::name` to always match Python `__name__`. [#4196](https://github.com/PyO3/pyo3/pull/4196) +- Remove CPython internal ffi call for complex number including: add, sub, mul, div, neg, abs, pow. Added PyAnyMethods::{abs, pos, neg} [#4201](https://github.com/PyO3/pyo3/pull/4201) +- Deprecate implicit integer comparision for simple enums in favor of `#[pyclass(eq_int)]`. [#4210](https://github.com/PyO3/pyo3/pull/4210) +- Set the `module=` attribute of declarative modules' child `#[pymodule]`s and `#[pyclass]`es. [#4213](https://github.com/PyO3/pyo3/pull/4213) +- Set the `module` option for complex enum variants from the value set on the complex enum `module`. [#4228](https://github.com/PyO3/pyo3/pull/4228) +- Respect the Python "limited API" when building for the `abi3` feature on PyPy or GraalPy. [#4237](https://github.com/PyO3/pyo3/pull/4237) +- Optimize code generated by `#[pyo3(get)]` on `#[pyclass]` fields. [#4254](https://github.com/PyO3/pyo3/pull/4254) +- `PyCFunction::new`, `PyCFunction::new_with_keywords` and `PyCFunction::new_closure` now take `&'static CStr` name and doc arguments (previously was `&'static str`). [#4255](https://github.com/PyO3/pyo3/pull/4255) +- The `experimental-declarative-modules` feature is now stabilized and available by default. [#4257](https://github.com/PyO3/pyo3/pull/4257) + +### Fixed + +- Fix panic when `PYO3_CROSS_LIB_DIR` is set to a missing path. [#4043](https://github.com/PyO3/pyo3/pull/4043) +- Fix a compile error when exporting an exception created with `create_exception!` living in a different Rust module using the `declarative-module` feature. [#4086](https://github.com/PyO3/pyo3/pull/4086) +- Fix FFI definitions of `PY_VECTORCALL_ARGUMENTS_OFFSET` and `PyVectorcall_NARGS` to fix a false-positive assertion. [#4104](https://github.com/PyO3/pyo3/pull/4104) +- Disable `PyUnicode_DATA` on PyPy: not exposed by PyPy. [#4116](https://github.com/PyO3/pyo3/pull/4116) +- Correctly handle `#[pyo3(from_py_with = ...)]` attribute on dunder (`__magic__`) method arguments instead of silently ignoring it. [#4117](https://github.com/PyO3/pyo3/pull/4117) +- Fix a compile error when declaring a standalone function or class method with a Python name that is a Rust keyword. [#4226](https://github.com/PyO3/pyo3/pull/4226) +- Fix declarative modules discarding doc comments on the `mod` node. [#4236](https://github.com/PyO3/pyo3/pull/4236) +- Fix `__dict__` attribute missing for `#[pyclass(dict)]` instances when building for `abi3` on Python 3.9. [#4251](https://github.com/PyO3/pyo3/pull/4251) + ## [0.21.2] - 2024-04-16 ### Changed @@ -1745,7 +1808,8 @@ Yanked - Initial release -[Unreleased]: https://github.com/pyo3/pyo3/compare/v0.21.2...HEAD +[Unreleased]: https://github.com/pyo3/pyo3/compare/v0.22.0...HEAD +[0.22.0]: https://github.com/pyo3/pyo3/compare/v0.21.2...v0.22.0 [0.21.2]: https://github.com/pyo3/pyo3/compare/v0.21.1...v0.21.2 [0.21.1]: https://github.com/pyo3/pyo3/compare/v0.21.0...v0.21.1 [0.21.0]: https://github.com/pyo3/pyo3/compare/v0.20.3...v0.21.0 diff --git a/Cargo.toml b/Cargo.toml index 9ab15c1d052..5d3888dfda1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3" -version = "0.22.0-dev" +version = "0.22.0" description = "Bindings to Python interpreter" authors = ["PyO3 Project and Contributors "] readme = "README.md" @@ -21,10 +21,10 @@ memoffset = "0.9" once_cell = "1.13.0" # ffi bindings to the python interpreter, split into a separate crate so they can be used independently -pyo3-ffi = { path = "pyo3-ffi", version = "=0.22.0-dev" } +pyo3-ffi = { path = "pyo3-ffi", version = "=0.22.0" } # support crates for macros feature -pyo3-macros = { path = "pyo3-macros", version = "=0.22.0-dev", optional = true } +pyo3-macros = { path = "pyo3-macros", version = "=0.22.0", optional = true } indoc = { version = "2.0.1", optional = true } unindent = { version = "0.2.1", optional = true } @@ -63,7 +63,7 @@ rayon = "1.6.1" futures = "0.3.28" [build-dependencies] -pyo3-build-config = { path = "pyo3-build-config", version = "=0.22.0-dev", features = ["resolve-config"] } +pyo3-build-config = { path = "pyo3-build-config", version = "=0.22.0", features = ["resolve-config"] } [features] default = ["macros"] diff --git a/README.md b/README.md index ed77a62b28a..69f7e1740db 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ name = "string_sum" crate-type = ["cdylib"] [dependencies] -pyo3 = { version = "0.21.2", features = ["extension-module"] } +pyo3 = { version = "0.22.0", features = ["extension-module"] } ``` **`src/lib.rs`** @@ -137,7 +137,7 @@ Start a new project with `cargo new` and add `pyo3` to the `Cargo.toml` like th ```toml [dependencies.pyo3] -version = "0.21.2" +version = "0.22.0" features = ["auto-initialize"] ``` diff --git a/examples/decorator/.template/pre-script.rhai b/examples/decorator/.template/pre-script.rhai index 37372854cd8..aea6c46edc6 100644 --- a/examples/decorator/.template/pre-script.rhai +++ b/examples/decorator/.template/pre-script.rhai @@ -1,4 +1,4 @@ -variable::set("PYO3_VERSION", "0.21.2"); +variable::set("PYO3_VERSION", "0.22.0"); file::rename(".template/Cargo.toml", "Cargo.toml"); file::rename(".template/pyproject.toml", "pyproject.toml"); file::delete(".template"); diff --git a/examples/maturin-starter/.template/pre-script.rhai b/examples/maturin-starter/.template/pre-script.rhai index 37372854cd8..aea6c46edc6 100644 --- a/examples/maturin-starter/.template/pre-script.rhai +++ b/examples/maturin-starter/.template/pre-script.rhai @@ -1,4 +1,4 @@ -variable::set("PYO3_VERSION", "0.21.2"); +variable::set("PYO3_VERSION", "0.22.0"); file::rename(".template/Cargo.toml", "Cargo.toml"); file::rename(".template/pyproject.toml", "pyproject.toml"); file::delete(".template"); diff --git a/examples/plugin/.template/pre-script.rhai b/examples/plugin/.template/pre-script.rhai index 7c2f375fbfb..d5f84ed3ff8 100644 --- a/examples/plugin/.template/pre-script.rhai +++ b/examples/plugin/.template/pre-script.rhai @@ -1,4 +1,4 @@ -variable::set("PYO3_VERSION", "0.21.2"); +variable::set("PYO3_VERSION", "0.22.0"); file::rename(".template/Cargo.toml", "Cargo.toml"); file::rename(".template/plugin_api/Cargo.toml", "plugin_api/Cargo.toml"); file::delete(".template"); diff --git a/examples/setuptools-rust-starter/.template/pre-script.rhai b/examples/setuptools-rust-starter/.template/pre-script.rhai index dd2950665eb..5ea757803da 100644 --- a/examples/setuptools-rust-starter/.template/pre-script.rhai +++ b/examples/setuptools-rust-starter/.template/pre-script.rhai @@ -1,4 +1,4 @@ -variable::set("PYO3_VERSION", "0.21.2"); +variable::set("PYO3_VERSION", "0.22.0"); file::rename(".template/Cargo.toml", "Cargo.toml"); file::rename(".template/setup.cfg", "setup.cfg"); file::delete(".template"); diff --git a/examples/word-count/.template/pre-script.rhai b/examples/word-count/.template/pre-script.rhai index 37372854cd8..aea6c46edc6 100644 --- a/examples/word-count/.template/pre-script.rhai +++ b/examples/word-count/.template/pre-script.rhai @@ -1,4 +1,4 @@ -variable::set("PYO3_VERSION", "0.21.2"); +variable::set("PYO3_VERSION", "0.22.0"); file::rename(".template/Cargo.toml", "Cargo.toml"); file::rename(".template/pyproject.toml", "pyproject.toml"); file::delete(".template"); diff --git a/newsfragments/3761.changed.md b/newsfragments/3761.changed.md deleted file mode 100644 index fd0847211d8..00000000000 --- a/newsfragments/3761.changed.md +++ /dev/null @@ -1 +0,0 @@ -Change the type of `PySliceIndices::slicelength` and the `length` parameter of `PySlice::indices()`. diff --git a/newsfragments/3835.added.md b/newsfragments/3835.added.md deleted file mode 100644 index 2970a4c8db4..00000000000 --- a/newsfragments/3835.added.md +++ /dev/null @@ -1 +0,0 @@ -Add `PyWeakref`, `PyWeakrefReference` and `PyWeakrefProxy`. diff --git a/newsfragments/3966.packaging.md b/newsfragments/3966.packaging.md deleted file mode 100644 index 81220bc4e85..00000000000 --- a/newsfragments/3966.packaging.md +++ /dev/null @@ -1 +0,0 @@ -Update `heck` dependency to 0.5. diff --git a/newsfragments/4043.fixed.md b/newsfragments/4043.fixed.md deleted file mode 100644 index 7653eb295bf..00000000000 --- a/newsfragments/4043.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Don't panic when `PYO3_CROSS_LIB_DIR` is set to a missing path. \ No newline at end of file diff --git a/newsfragments/4061.packaging.md b/newsfragments/4061.packaging.md deleted file mode 100644 index 5e51f50290d..00000000000 --- a/newsfragments/4061.packaging.md +++ /dev/null @@ -1 +0,0 @@ -Extend range of supported versions of `chrono-tz` optional dependency to include version 0.10. diff --git a/newsfragments/4072.added.md b/newsfragments/4072.added.md deleted file mode 100644 index 23207c849d8..00000000000 --- a/newsfragments/4072.added.md +++ /dev/null @@ -1 +0,0 @@ -Support `#[pyclass]` on enums that have tuple variants. \ No newline at end of file diff --git a/newsfragments/4078.changed.md b/newsfragments/4078.changed.md deleted file mode 100644 index 45f160f5556..00000000000 --- a/newsfragments/4078.changed.md +++ /dev/null @@ -1 +0,0 @@ -deprecate implicit default for trailing optional arguments diff --git a/newsfragments/4079.added.md b/newsfragments/4079.added.md deleted file mode 100644 index afe26728f9a..00000000000 --- a/newsfragments/4079.added.md +++ /dev/null @@ -1 +0,0 @@ -Added support for scientific notation in `Decimal` conversion diff --git a/newsfragments/4086.fixed.md b/newsfragments/4086.fixed.md deleted file mode 100644 index e9cae7733f9..00000000000 --- a/newsfragments/4086.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Fixes a compile error when exporting an exception created with `create_exception!` living in a different Rust module using the `declarative-module` feature. \ No newline at end of file diff --git a/newsfragments/4095.added.md b/newsfragments/4095.added.md deleted file mode 100644 index c9940f70f12..00000000000 --- a/newsfragments/4095.added.md +++ /dev/null @@ -1 +0,0 @@ -Add `pyo3_disable_reference_pool` conditional compilation flag to avoid the overhead of the global reference pool at the cost of known limitations as explained in the performance section of the guide. diff --git a/newsfragments/4095.changed.md b/newsfragments/4095.changed.md deleted file mode 100644 index 7f155ae04ef..00000000000 --- a/newsfragments/4095.changed.md +++ /dev/null @@ -1 +0,0 @@ -`Clone`ing pointers into the Python heap has been moved behind the `py-clone` feature, as it must panic without the GIL being held as a soundness fix. diff --git a/newsfragments/4098.changed.md b/newsfragments/4098.changed.md deleted file mode 100644 index 5df526a52e3..00000000000 --- a/newsfragments/4098.changed.md +++ /dev/null @@ -1 +0,0 @@ -Add `#[track_caller]` to all `Py`, `Bound<'py, T>` and `Borrowed<'a, 'py, T>` methods which can panic. diff --git a/newsfragments/4100.changed.md b/newsfragments/4100.changed.md deleted file mode 100644 index 13fd2e02aa8..00000000000 --- a/newsfragments/4100.changed.md +++ /dev/null @@ -1 +0,0 @@ -Change `PyAnyMethods::dir` to be fallible and return `PyResult>` (and similar for `PyAny::dir`). diff --git a/newsfragments/4104.fixed.md b/newsfragments/4104.fixed.md deleted file mode 100644 index 3eff1654b4f..00000000000 --- a/newsfragments/4104.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Changes definitions of `PY_VECTORCALL_ARGUMENTS_OFFSET` and `PyVectorcall_NARGS` to fix a false-positive assertion. diff --git a/newsfragments/4116.fixed.md b/newsfragments/4116.fixed.md deleted file mode 100644 index 63531aceb39..00000000000 --- a/newsfragments/4116.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Disable `PyUnicode_DATA` on PyPy: Not exposed by PyPy. diff --git a/newsfragments/4117.fixed.md b/newsfragments/4117.fixed.md deleted file mode 100644 index c3bb4c144b6..00000000000 --- a/newsfragments/4117.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Correctly handle `#[pyo3(from_py_with = ...)]` attribute on dunder (`__magic__`) method arguments instead of silently ignoring it. diff --git a/newsfragments/4129.changed.md b/newsfragments/4129.changed.md deleted file mode 100644 index 6818181ad0c..00000000000 --- a/newsfragments/4129.changed.md +++ /dev/null @@ -1 +0,0 @@ -Raised the MSRV to 1.63 diff --git a/newsfragments/4148.added.md b/newsfragments/4148.added.md deleted file mode 100644 index 16da3d2db37..00000000000 --- a/newsfragments/4148.added.md +++ /dev/null @@ -1 +0,0 @@ -Conversion between [num-rational](https://github.com/rust-num/num-rational) and Python's fractions.Fraction. diff --git a/newsfragments/4158.added.md b/newsfragments/4158.added.md deleted file mode 100644 index 42e6d3ff4b4..00000000000 --- a/newsfragments/4158.added.md +++ /dev/null @@ -1 +0,0 @@ -Added `#[pyo3(constructor = (...))]` to customize the generated constructors for complex enum variants diff --git a/newsfragments/4178.changed.md b/newsfragments/4178.changed.md deleted file mode 100644 index a97c1ec8f6e..00000000000 --- a/newsfragments/4178.changed.md +++ /dev/null @@ -1 +0,0 @@ -The global reference pool (to track pending reference count decrements) is now initialized lazily to avoid the overhead of taking a mutex upon function entry when the functionality is not actually used. diff --git a/newsfragments/4184.packaging.md b/newsfragments/4184.packaging.md deleted file mode 100644 index c12302a7029..00000000000 --- a/newsfragments/4184.packaging.md +++ /dev/null @@ -1 +0,0 @@ -Support Python 3.13. diff --git a/newsfragments/4194.added.md b/newsfragments/4194.added.md deleted file mode 100644 index 6f032138d25..00000000000 --- a/newsfragments/4194.added.md +++ /dev/null @@ -1 +0,0 @@ -Added error messages when using `weakref` or `dict` when compiling for `abi3` for Python older than 3.9 diff --git a/newsfragments/4196.added.md b/newsfragments/4196.added.md deleted file mode 100644 index d9c295d551c..00000000000 --- a/newsfragments/4196.added.md +++ /dev/null @@ -1,4 +0,0 @@ -Add `PyType::module`, which always matches Python `__module__`. -Add `PyType::fully_qualified_name` which matches the "fully qualified name" -defined in https://peps.python.org/pep-0737 (not exposed in Python), -which is useful for error messages and `repr()` implementations. diff --git a/newsfragments/4196.changed.md b/newsfragments/4196.changed.md deleted file mode 100644 index 4ea69180a2d..00000000000 --- a/newsfragments/4196.changed.md +++ /dev/null @@ -1 +0,0 @@ -Change `PyType::name` to always match Python `__name__`. diff --git a/newsfragments/4197.added.md b/newsfragments/4197.added.md deleted file mode 100644 index 5652028cb76..00000000000 --- a/newsfragments/4197.added.md +++ /dev/null @@ -1 +0,0 @@ -Add `PyTypeMethods::mro` and `PyTypeMethods::bases`. diff --git a/newsfragments/4201.changed.md b/newsfragments/4201.changed.md deleted file mode 100644 index c236dd27210..00000000000 --- a/newsfragments/4201.changed.md +++ /dev/null @@ -1 +0,0 @@ -Remove CPython internal ffi call for complex number including: add, sub, mul, div, neg, abs, pow. Added PyAnyMethods::{abs, pos, neg} diff --git a/newsfragments/4202.added.md b/newsfragments/4202.added.md deleted file mode 100644 index d15b6ce810c..00000000000 --- a/newsfragments/4202.added.md +++ /dev/null @@ -1 +0,0 @@ -Add `#[pyclass(ord)]` to implement ordering based on `PartialOrd`. \ No newline at end of file diff --git a/newsfragments/4205.added.md b/newsfragments/4205.added.md deleted file mode 100644 index 86ce9fc32ae..00000000000 --- a/newsfragments/4205.added.md +++ /dev/null @@ -1 +0,0 @@ -Added `ToPyObject` and `IntoPy` impls for `PyBackedStr` and `PyBackedBytes`. diff --git a/newsfragments/4206.added.md b/newsfragments/4206.added.md deleted file mode 100644 index 90a74af329c..00000000000 --- a/newsfragments/4206.added.md +++ /dev/null @@ -1 +0,0 @@ -Added `#[pyclass(hash)]` option to implement `__hash__` in terms of the `Hash` implementation diff --git a/newsfragments/4210.added.md b/newsfragments/4210.added.md deleted file mode 100644 index dae8cd8dabb..00000000000 --- a/newsfragments/4210.added.md +++ /dev/null @@ -1,2 +0,0 @@ -Added `#[pyclass(eq)]` option to generate `__eq__` based on `PartialEq`. -Added `#[pyclass(eq_int)]` for simple enums to implement equality based on their discriminants. \ No newline at end of file diff --git a/newsfragments/4210.changed.md b/newsfragments/4210.changed.md deleted file mode 100644 index a69e3c3a37e..00000000000 --- a/newsfragments/4210.changed.md +++ /dev/null @@ -1 +0,0 @@ -Deprecate implicit integer comparision for simple enums in favor of `#[pyclass(eq_int)]`. \ No newline at end of file diff --git a/newsfragments/4213.added.md b/newsfragments/4213.added.md deleted file mode 100644 index 6f553dc93ab..00000000000 --- a/newsfragments/4213.added.md +++ /dev/null @@ -1 +0,0 @@ -Properly fills the `module=` attribute of declarative modules child `#[pymodule]` and `#[pyclass]`. \ No newline at end of file diff --git a/newsfragments/4214.added.md b/newsfragments/4214.added.md deleted file mode 100644 index 943e1e99e60..00000000000 --- a/newsfragments/4214.added.md +++ /dev/null @@ -1 +0,0 @@ -Added `From>` impl for `PyClassInitializer`. \ No newline at end of file diff --git a/newsfragments/4219.added.md b/newsfragments/4219.added.md deleted file mode 100644 index cea8fa1c314..00000000000 --- a/newsfragments/4219.added.md +++ /dev/null @@ -1,3 +0,0 @@ -- Added `as_super` methods to `PyRef` and `PyRefMut` for accesing the base class by reference -- Updated user guide to recommend `as_super` for referencing the base class instead of `as_ref` -- Added `pyo3::internal_tricks::ptr_from_mut` function for casting `&mut T` to `*mut T` \ No newline at end of file diff --git a/newsfragments/4226.fixed.md b/newsfragments/4226.fixed.md deleted file mode 100644 index b2b7d7d12a2..00000000000 --- a/newsfragments/4226.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Fixes a compile error when declaring a standalone function or class method with a Python name that is a Rust keyword. diff --git a/newsfragments/4228.changed.md b/newsfragments/4228.changed.md deleted file mode 100644 index 84323876b42..00000000000 --- a/newsfragments/4228.changed.md +++ /dev/null @@ -1 +0,0 @@ -Changed the `module` option for complex enum variants to inherit from the value set on the complex enum `module`. diff --git a/newsfragments/4236.fixed.md b/newsfragments/4236.fixed.md deleted file mode 100644 index f87d16941c7..00000000000 --- a/newsfragments/4236.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Declarative modules: do not discard doc comments on the `mod` node. \ No newline at end of file diff --git a/newsfragments/4237.changed.md b/newsfragments/4237.changed.md deleted file mode 100644 index 25dd922d668..00000000000 --- a/newsfragments/4237.changed.md +++ /dev/null @@ -1 +0,0 @@ -Respect the Python "limited API" when building for the `abi3` feature on PyPy or GraalPy. diff --git a/newsfragments/4249.added.md b/newsfragments/4249.added.md deleted file mode 100644 index 8037f562699..00000000000 --- a/newsfragments/4249.added.md +++ /dev/null @@ -1 +0,0 @@ -Implement `PyModuleMethods::filename` on PyPy. diff --git a/newsfragments/4250.added.md b/newsfragments/4250.added.md deleted file mode 100644 index bc179d120a3..00000000000 --- a/newsfragments/4250.added.md +++ /dev/null @@ -1 +0,0 @@ -Implement `PartialEq` for `Bound<'py, PyBytes>`. diff --git a/newsfragments/4251.fixed.md b/newsfragments/4251.fixed.md deleted file mode 100644 index 5cc23c7a126..00000000000 --- a/newsfragments/4251.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Fix `__dict__` attribute missing for `#[pyclass(dict)]` instances when building for `abi3` on Python 3.9. diff --git a/newsfragments/4254.changed.md b/newsfragments/4254.changed.md deleted file mode 100644 index e58e0345696..00000000000 --- a/newsfragments/4254.changed.md +++ /dev/null @@ -1 +0,0 @@ -Optimize code generated by `#[pyo3(get)]` on `#[pyclass]` fields. diff --git a/newsfragments/4255.added.md b/newsfragments/4255.added.md deleted file mode 100644 index c70c5da279d..00000000000 --- a/newsfragments/4255.added.md +++ /dev/null @@ -1 +0,0 @@ -Add `pyo3_ffi::c_str` macro to create `&'static CStr` on Rust versions which don't have 1.77's `c""` literals. diff --git a/newsfragments/4255.changed.md b/newsfragments/4255.changed.md deleted file mode 100644 index 185bd5cc39d..00000000000 --- a/newsfragments/4255.changed.md +++ /dev/null @@ -1 +0,0 @@ -`PyCFunction::new`, `PyCFunction::new_with_keywords` and `PyCFunction::new_closure` now take `&'static CStr` name and doc arguments (previously was `&'static str`). diff --git a/newsfragments/4257.changed.md b/newsfragments/4257.changed.md deleted file mode 100644 index dee4a7ae13d..00000000000 --- a/newsfragments/4257.changed.md +++ /dev/null @@ -1 +0,0 @@ -The `experimental-declarative-modules` feature is now stabilized and available by default diff --git a/newsfragments/4258.added.md b/newsfragments/4258.added.md deleted file mode 100644 index 0ceea11f91e..00000000000 --- a/newsfragments/4258.added.md +++ /dev/null @@ -1 +0,0 @@ -Added support for `bool` conversion with `numpy` 2.0's `numpy.bool` type diff --git a/newsfragments/4259.added.md b/newsfragments/4259.added.md deleted file mode 100644 index 692fb277422..00000000000 --- a/newsfragments/4259.added.md +++ /dev/null @@ -1 +0,0 @@ -Implement `PartialEq` for `Bound<'py, PyString>`. diff --git a/newsfragments/4264.changed.md b/newsfragments/4264.changed.md deleted file mode 100644 index a3e89c6f98c..00000000000 --- a/newsfragments/4264.changed.md +++ /dev/null @@ -1 +0,0 @@ -Added `PyAnyMethods::{bitnot, matmul, floor_div, rem, divmod}` for completeness. diff --git a/pyo3-build-config/Cargo.toml b/pyo3-build-config/Cargo.toml index 600237f8646..6ab56e2ee14 100644 --- a/pyo3-build-config/Cargo.toml +++ b/pyo3-build-config/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-build-config" -version = "0.22.0-dev" +version = "0.22.0" description = "Build configuration for the PyO3 ecosystem" authors = ["PyO3 Project and Contributors "] keywords = ["pyo3", "python", "cpython", "ffi"] diff --git a/pyo3-ffi/Cargo.toml b/pyo3-ffi/Cargo.toml index 865da93926a..c3d9c608b0c 100644 --- a/pyo3-ffi/Cargo.toml +++ b/pyo3-ffi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-ffi" -version = "0.22.0-dev" +version = "0.22.0" description = "Python-API bindings for the PyO3 ecosystem" authors = ["PyO3 Project and Contributors "] keywords = ["pyo3", "python", "cpython", "ffi"] @@ -38,7 +38,7 @@ abi3-py312 = ["abi3", "pyo3-build-config/abi3-py312"] generate-import-lib = ["pyo3-build-config/python3-dll-a"] [build-dependencies] -pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.0-dev", features = ["resolve-config"] } +pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.0", features = ["resolve-config"] } [lints] workspace = true diff --git a/pyo3-macros-backend/Cargo.toml b/pyo3-macros-backend/Cargo.toml index 54220ab462b..264134d5249 100644 --- a/pyo3-macros-backend/Cargo.toml +++ b/pyo3-macros-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-macros-backend" -version = "0.22.0-dev" +version = "0.22.0" description = "Code generation for PyO3 package" authors = ["PyO3 Project and Contributors "] keywords = ["pyo3", "python", "cpython", "ffi"] @@ -16,7 +16,7 @@ edition = "2021" [dependencies] heck = "0.5" proc-macro2 = { version = "1.0.60", default-features = false } -pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.0-dev", features = ["resolve-config"] } +pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.0", features = ["resolve-config"] } quote = { version = "1", default-features = false } [dependencies.syn] @@ -25,7 +25,7 @@ default-features = false features = ["derive", "parsing", "printing", "clone-impls", "full", "extra-traits"] [build-dependencies] -pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.0-dev" } +pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.0" } [lints] workspace = true diff --git a/pyo3-macros/Cargo.toml b/pyo3-macros/Cargo.toml index 04c0ae6fb28..0dbbdd7cac9 100644 --- a/pyo3-macros/Cargo.toml +++ b/pyo3-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-macros" -version = "0.22.0-dev" +version = "0.22.0" description = "Proc macros for PyO3 package" authors = ["PyO3 Project and Contributors "] keywords = ["pyo3", "python", "cpython", "ffi"] @@ -22,7 +22,7 @@ gil-refs = ["pyo3-macros-backend/gil-refs"] proc-macro2 = { version = "1.0.60", default-features = false } quote = "1" syn = { version = "2", features = ["full", "extra-traits"] } -pyo3-macros-backend = { path = "../pyo3-macros-backend", version = "=0.22.0-dev" } +pyo3-macros-backend = { path = "../pyo3-macros-backend", version = "=0.22.0" } [lints] workspace = true diff --git a/pyproject.toml b/pyproject.toml index a007ee6dc7a..ab846250956 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ [tool.towncrier] filename = "CHANGELOG.md" -version = "0.22.0-dev" +version = "0.22.0" start_string = "\n" template = ".towncrier.template.md" title_format = "## [{version}] - {project_date}"