Skip to main content

StackFrame

Struct StackFrame 

Source
pub struct StackFrame {
    pub filename: String,
    pub start: CodeLoc,
    pub end: CodeLoc,
    pub frame_name: Option<String>,
    pub preview_line: Option<Arc<str>>,
    pub hide_caret: bool,
    pub hide_frame_name: bool,
}
Expand description

A single frame in a Python traceback.

Contains all the information needed to display a traceback line: the file location, function name, and optional source code preview.

§Caret Markers

Monty uses only ~ characters for caret markers in tracebacks, unlike CPython 3.11+ which uses ~ for the function name and ^ for arguments (e.g., ~~~~~~~~~~~^^^^^^^^^^^). This simplification is intentional - Monty marks the entire expression span uniformly.

Fields§

§filename: String

The filename where the code is located.

§start: CodeLoc

Start position in the source code.

§end: CodeLoc

End position in the source code.

§frame_name: Option<String>

The name of the frame (function name, or None for module-level code).

§preview_line: Option<Arc<str>>

The source code line for preview in the traceback.

Stored as Arc<str> rather than String so that consecutive frames referencing the same source line — typical of recursion and tight helper-function loops — share a single allocation. Without sharing, a 1000-deep recursive call into code on a long line would clone the entire line into each frame and amplify memory usage by the call depth. Serialization roundtrips lose the sharing (each frame gets its own Arc), but that is bounded by the wire size of the traceback so does not regress the amplification.

§hide_caret: bool

Whether to hide the caret marker in the traceback for this frame.

Set to true for:

  • raise statements (CPython doesn’t show carets for raise)
  • AttributeError on attribute access (CPython doesn’t show carets for these)
§hide_frame_name: bool

Whether to hide the , in <name> part of the frame line.

Set to true for SyntaxError where CPython doesn’t show the frame name. CPython’s SyntaxError format: File "...", line N vs runtime error format: File "...", line N, in <module>

Trait Implementations§

Source§

impl Clone for StackFrame

Source§

fn clone(&self) -> StackFrame

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StackFrame

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for StackFrame

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for StackFrame

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for StackFrame

Source§

fn eq(&self, other: &StackFrame) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for StackFrame

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for StackFrame

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.