Skip to content

Commit eb1faa7

Browse files
Use Py_IS_TYPE on abi3 & python 3.15+
1 parent 962a535 commit eb1faa7

26 files changed

Lines changed: 47 additions & 38 deletions

newsfragments/5977.changed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Use `Py_IS_TYPE` on abi3 & python 3.15+

pyo3-ffi/src/boolobject.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::ffi::{c_int, c_long};
55

66
#[inline]
77
pub unsafe fn PyBool_Check(op: *mut PyObject) -> c_int {
8-
(Py_TYPE(op) == &raw mut PyBool_Type) as c_int
8+
Py_IS_TYPE(op, &raw mut PyBool_Type)
99
}
1010

1111
extern_libpython! {

pyo3-ffi/src/bytearrayobject.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ pub unsafe fn PyByteArray_Check(op: *mut PyObject) -> c_int {
3434

3535
#[inline]
3636
pub unsafe fn PyByteArray_CheckExact(op: *mut PyObject) -> c_int {
37-
(Py_TYPE(op) == &raw mut PyByteArray_Type) as c_int
37+
Py_IS_TYPE(op, &raw mut PyByteArray_Type)
3838
}
3939

4040
extern_libpython! {

pyo3-ffi/src/bytesobject.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ pub unsafe fn PyBytes_Check(op: *mut PyObject) -> c_int {
1515

1616
#[inline]
1717
pub unsafe fn PyBytes_CheckExact(op: *mut PyObject) -> c_int {
18-
(Py_TYPE(op) == &raw mut PyBytes_Type) as c_int
18+
Py_IS_TYPE(op, &raw mut PyBytes_Type)
1919
}
2020

2121
extern_libpython! {

pyo3-ffi/src/context.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::object::{PyObject, PyTypeObject, Py_TYPE};
2+
use crate::Py_IS_TYPE;
23
use std::ffi::{c_char, c_int};
34

45
extern_libpython! {
@@ -12,17 +13,17 @@ extern_libpython! {
1213

1314
#[inline]
1415
pub unsafe fn PyContext_CheckExact(op: *mut PyObject) -> c_int {
15-
(Py_TYPE(op) == &raw mut PyContext_Type) as c_int
16+
Py_IS_TYPE(op, &raw mut PyContext_Type)
1617
}
1718

1819
#[inline]
1920
pub unsafe fn PyContextVar_CheckExact(op: *mut PyObject) -> c_int {
20-
(Py_TYPE(op) == &raw mut PyContextVar_Type) as c_int
21+
Py_IS_TYPE(op, &raw mut PyContextVar_Type)
2122
}
2223

2324
#[inline]
2425
pub unsafe fn PyContextToken_CheckExact(op: *mut PyObject) -> c_int {
25-
(Py_TYPE(op) == &raw mut PyContextToken_Type) as c_int
26+
Py_IS_TYPE(op, &raw mut PyContextToken_Type)
2627
}
2728

2829
extern_libpython! {

pyo3-ffi/src/cpython/code.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ extern_libpython! {
7272
#[inline]
7373
#[cfg(not(PyPy))]
7474
pub unsafe fn PyCode_Check(op: *mut PyObject) -> c_int {
75-
(Py_TYPE(op) == &raw mut PyCode_Type) as c_int
75+
Py_IS_TYPE(op, &raw mut PyCode_Type)
7676
}
7777

7878
extern_libpython! {

pyo3-ffi/src/cpython/funcobject.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::PyObject;
1+
use crate::{PyObject, Py_IS_TYPE};
22
use std::ffi::c_int;
33

44
#[cfg(all(not(any(PyPy, GraalPy)), not(Py_3_10)))]
@@ -65,7 +65,7 @@ extern_libpython! {
6565

6666
#[inline]
6767
pub unsafe fn PyFunction_Check(op: *mut PyObject) -> c_int {
68-
(crate::Py_TYPE(op) == &raw mut PyFunction_Type) as c_int
68+
Py_IS_TYPE(op, &raw mut PyFunction_Type)
6969
}
7070

7171
extern_libpython! {

pyo3-ffi/src/cpython/genobject.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ pub unsafe fn PyGen_Check(op: *mut PyObject) -> c_int {
5050

5151
#[inline]
5252
pub unsafe fn PyGen_CheckExact(op: *mut PyObject) -> c_int {
53-
(Py_TYPE(op) == &raw mut PyGen_Type) as c_int
53+
Py_IS_TYPE(op, &raw mut PyGen_Type)
5454
}
5555

5656
extern_libpython! {

pyo3-ffi/src/cpython/methodobject.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ extern_libpython! {
1515

1616
#[inline]
1717
pub unsafe fn PyCMethod_CheckExact(op: *mut PyObject) -> c_int {
18-
(Py_TYPE(op) == &raw mut PyCMethod_Type) as c_int
18+
Py_IS_TYPE(op, &raw mut PyCMethod_Type)
1919
}
2020

2121
#[inline]

pyo3-ffi/src/cpython/pyframe.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[cfg(any(Py_3_11, all(Py_3_9, not(PyPy))))]
22
use crate::PyFrameObject;
3-
use crate::{PyObject, PyTypeObject, Py_TYPE};
3+
use crate::{PyObject, PyTypeObject, Py_IS_TYPE, Py_TYPE};
44
#[cfg(Py_3_12)]
55
use std::ffi::c_char;
66
use std::ffi::c_int;
@@ -32,13 +32,13 @@ extern_libpython! {
3232

3333
#[inline]
3434
pub unsafe fn PyFrame_Check(op: *mut PyObject) -> c_int {
35-
(Py_TYPE(op) == &raw mut PyFrame_Type) as c_int
35+
Py_IS_TYPE(op, &raw mut PyFrame_Type)
3636
}
3737

3838
#[cfg(Py_3_13)]
3939
#[inline]
4040
pub unsafe fn PyFrameLocalsProxy_Check(op: *mut PyObject) -> c_int {
41-
(Py_TYPE(op) == &raw mut PyFrameLocalsProxy_Type) as c_int
41+
Py_IS_TYPE(op, &raw mut PyFrameLocalsProxy_Type)
4242
}
4343

4444
extern_libpython! {

0 commit comments

Comments
 (0)