Skip to content

Commit

Permalink
Merge pull request #2408 from alex/frame-code-objects
Browse files Browse the repository at this point in the history
Added new PyCode and PyFrame objects.
  • Loading branch information
messense committed Jun 1, 2022
2 parents 4f9d3d7 + f6a2497 commit 8191153
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Added the internal `IntoPyResult` trait to give better error messages when function return types do not implement `IntoPy`. [#2326](https://github.com/PyO3/pyo3/pull/2326)
- Add `PyDictKeys`, `PyDictValues` and `PyDictItems` Rust types to represent `dict_keys`, `dict_values` and `dict_items` types. [#2358](https://github.com/PyO3/pyo3/pull/2358)
- Add macro `append_to_inittab`. [#2377](https://github.com/PyO3/pyo3/pull/2377)
- Added `PyCode` and `PyFrame` high level objects. [#2408](https://github.com/PyO3/pyo3/pull/2408)

### Changed

Expand Down
14 changes: 14 additions & 0 deletions src/types/code.rs
@@ -0,0 +1,14 @@
// Copyright (c) 2022-present PyO3 Project and Contributors

use crate::ffi;
use crate::PyAny;

/// Represents a Python code object.
#[repr(transparent)]
pub struct PyCode(PyAny);

pyobject_native_type_core!(
PyCode,
ffi::PyCode_Type,
#checkfunction=ffi::PyCode_Check
);
14 changes: 14 additions & 0 deletions src/types/frame.rs
@@ -0,0 +1,14 @@
// Copyright (c) 2022-present PyO3 Project and Contributors

use crate::ffi;
use crate::PyAny;

/// Represents a Python frame.
#[repr(transparent)]
pub struct PyFrame(PyAny);

pyobject_native_type_core!(
PyFrame,
ffi::PyFrame_Type,
#checkfunction=ffi::PyFrame_Check
);
8 changes: 8 additions & 0 deletions src/types/mod.rs
Expand Up @@ -7,6 +7,8 @@ pub use self::boolobject::PyBool;
pub use self::bytearray::PyByteArray;
pub use self::bytes::PyBytes;
pub use self::capsule::PyCapsule;
#[cfg(not(Py_LIMITED_API))]
pub use self::code::PyCode;
pub use self::complex::PyComplex;
#[cfg(not(Py_LIMITED_API))]
pub use self::datetime::{
Expand All @@ -15,6 +17,8 @@ pub use self::datetime::{
};
pub use self::dict::{IntoPyDict, PyDict};
pub use self::floatob::PyFloat;
#[cfg(all(not(Py_LIMITED_API), not(PyPy)))]
pub use self::frame::PyFrame;
pub use self::frozenset::PyFrozenSet;
pub use self::function::{PyCFunction, PyFunction};
pub use self::iterator::PyIterator;
Expand Down Expand Up @@ -257,11 +261,15 @@ mod boolobject;
mod bytearray;
mod bytes;
mod capsule;
#[cfg(not(Py_LIMITED_API))]
mod code;
mod complex;
#[cfg(not(Py_LIMITED_API))]
mod datetime;
mod dict;
mod floatob;
#[cfg(all(not(Py_LIMITED_API), not(PyPy)))]
mod frame;
mod frozenset;
mod function;
mod iterator;
Expand Down

0 comments on commit 8191153

Please sign in to comment.