Python API reference

jupyter_lecture_studio and lecture_studio expose the same objects. Component methods display in Jupyter by default; pass show=False to receive HTML in scripts.

LectureDeck

class lecture_studio.LectureDeck(course=None, *, series=None, lesson='', language='python', theme='gold', brand=None, locale=None, markup='markdown', **theme_options)

A course brand, a visual theme, a locale and the lecture’s components.

Component methods display immediately in Jupyter; show=False returns standalone HTML instead (use it in scripts). Re-running a notebook cell replaces what that cell added. export() saves every component.

Parameters:
  • course (str | None)

  • series (str | None)

  • lesson (str)

  • language (str)

  • theme (str | Theme | Mapping[str, Any])

  • brand (Brand | Mapping[str, Any] | None)

  • locale (str | Locale | None)

  • markup (str)

__init__(course=None, *, series=None, lesson='', language='python', theme='gold', brand=None, locale=None, markup='markdown', **theme_options)
Parameters:
  • course (str | None)

  • series (str | None)

  • lesson (str)

  • language (str)

  • theme (str | Theme | Mapping[str, Any])

  • brand (Brand | Mapping[str, Any] | None)

  • locale (str | Locale | None)

  • markup (str)

clear()

Remove every component and restart numbering.

Return type:

None

html(*, include_answers=True, notes=False)

Every component as one standalone HTML fragment (styles included).

Parameters:
  • include_answers (bool)

  • notes (bool)

Return type:

str

styles(*, show=True)

Display fonts and styles once, e.g. in the first cell of a notebook.

Later outputs then omit the embedded fonts. Useful when the first lecture output is far down the notebook or was cleared.

Parameters:

show (bool)

Return type:

str | None

add(component, *, id=None, show=True)

Add any registered component (including plugin components).

Parameters:
  • component (Component)

  • id (str | None)

  • show (bool)

Return type:

str | None

cover(title, description='', *, kicker='', tags=(), sections=(), hero_code='', hero_result='', hero_label=None, footer_label=None, notes='', id=None, show=True)

Lecture cover with tags, section cards and an optional code emblem.

Parameters:
  • title (str)

  • description (str | RichText)

  • kicker (str)

  • tags (Sequence[str])

  • sections (Sequence[CoverSection | Mapping])

  • hero_code (str)

  • hero_result (str)

  • hero_label (str | None)

  • footer_label (str | None)

  • notes (str)

  • id (str | None)

  • show (bool)

slide(title, description='', *, cards=(), subtitle='', diagram=None, activity=None, notes='', id=None, show=True)

Numbered concept slide: explanation cards, a diagram and an activity.

Parameters:
  • title (str)

  • description (str | RichText)

  • cards (Sequence[Card | Mapping])

  • subtitle (str)

  • diagram (Diagram | Mapping | str | None)

  • activity (Activity | Mapping | None)

  • notes (str)

  • id (str | None)

  • show (bool)

note(title, body='', *, notes='', id=None, show=True)

A light reading panel for summaries and remarks.

Parameters:
  • title (str)

  • body (str | RichText)

  • notes (str)

  • id (str | None)

  • show (bool)

table(title, headers, rows, *, notes='', id=None, show=True)

A comparison table. Cells are plain text.

Parameters:
  • title (str)

  • headers (Sequence[Any])

  • rows (Iterable[Sequence[Any]])

  • notes (str)

  • id (str | None)

  • show (bool)

callout(body, *, style='info', title=None, notes='', id=None, show=True)

A highlighted remark: info, tip, warning, mistake, success or key.

Parameters:
  • body (str | RichText)

  • style (str)

  • title (str | None)

  • notes (str)

  • id (str | None)

  • show (bool)

compare(title, before, after, *, mode='wrong-right', before_label=None, after_label=None, before_note='', after_note='', description='', language=None, notes='', id=None, show=True)

Two code versions side by side (wrong-right or before-after).

Parameters:
  • title (str)

  • before (str)

  • after (str)

  • mode (str)

  • before_label (str | None)

  • after_label (str | None)

  • before_note (str | RichText)

  • after_note (str | RichText)

  • description (str | RichText)

  • language (str | None)

  • notes (str)

  • id (str | None)

  • show (bool)

code(code, *, title='', output='', language=None, highlight=(), line_numbers=False, description='', caption='', notes='', id=None, show=True)

Displayed code with its expected output, highlighted lines and numbers.

Parameters:
  • code (str)

  • title (str)

  • output (str)

  • language (str | None)

  • highlight (Sequence[int])

  • line_numbers (bool)

  • description (str | RichText)

  • caption (str)

  • notes (str)

  • id (str | None)

  • show (bool)

quiz(question, options, answer, *, explanation='', code='', language=None, title=None, notes='', id=None, show=True)

Multiple-choice check that marks the chosen option, without JavaScript.

Parameters:
  • question (str)

  • options (Sequence[str])

  • answer (int | str)

  • explanation (str | RichText)

  • code (str)

  • language (str | None)

  • title (str | None)

  • notes (str)

  • id (str | None)

  • show (bool)

trace(code, steps, *, title='', language=None, description='', notes='', id=None, show=True)

Step-by-step execution: the current line, variables and output.

Parameters:
  • code (str)

  • steps (Sequence[TraceStep | Mapping])

  • title (str)

  • language (str | None)

  • description (str | RichText)

  • notes (str)

  • id (str | None)

  • show (bool)

exercise(title, task, *, starter='', hints=(), solution='', explanation='', language=None, notes='', id=None, show=True)

A practice task with progressive hints and a hidden solution.

Parameters:
  • title (str)

  • task (str | RichText)

  • starter (str)

  • hints (Sequence[str])

  • solution (str)

  • explanation (str | RichText)

  • language (str | None)

  • notes (str)

  • id (str | None)

  • show (bool)

agenda(items, *, title=None, mode='goals', notes='', id=None, show=True)

Learning goals (mode='goals') or key takeaways (mode='recap').

Parameters:
  • items (Sequence[str])

  • title (str | None)

  • mode (str)

  • notes (str)

  • id (str | None)

  • show (bool)

recap(items, *, title=None, notes='', id=None, show=True)

Key takeaways at the end of a lecture.

Parameters:
  • items (Sequence[str])

  • title (str | None)

  • notes (str)

  • id (str | None)

  • show (bool)

figure(src, *, caption='', alt='', title='', width=None, notes='', id=None, show=True)

An image; local files are embedded so the lecture stays self-contained.

Parameters:
  • src (str)

  • caption (str)

  • alt (str)

  • title (str)

  • width (int | None)

  • notes (str)

  • id (str | None)

  • show (bool)

divider(title, subtitle='', *, label=None, notes='', id=None, show=True)

A section break between parts of a lecture.

Parameters:
  • title (str)

  • subtitle (str)

  • label (str | None)

  • notes (str)

  • id (str | None)

  • show (bool)

math(latex, *, title='', legend=None, description='', caption='', notes='', id=None, show=True)

Display formulas written in LaTeX; legend explains the symbols.

Parameters:
  • latex (str | Sequence[str])

  • title (str)

  • legend (Mapping[str, str] | None)

  • description (str | RichText)

  • caption (str)

  • notes (str)

  • id (str | None)

  • show (bool)

array(values, *, title='', name='', highlight=(), pointers=None, slice=None, negative=False, description='', caption='', notes='', id=None, show=True)

A list drawn as indexed cells, with pointers ({'i': 0}) and a slice [start, stop].

Parameters:
  • values (Sequence[Any])

  • title (str)

  • name (str)

  • highlight (Sequence[int])

  • pointers (Mapping[str, int] | None)

  • slice (Sequence[int] | None)

  • negative (bool)

  • description (str | RichText)

  • caption (str)

  • notes (str)

  • id (str | None)

  • show (bool)

matrix(rows, *, title='', name='', row_labels=(), col_labels=(), row_title='', col_title='', heatmap=False, highlight=(), brackets=False, metrics=None, description='', caption='', notes='', id=None, show=True)

A grid of values; heatmap=True shades cells, brackets=True draws a math matrix.

Parameters:
  • rows (Sequence[Sequence[Any]])

  • title (str)

  • name (str)

  • row_labels (Sequence[str])

  • col_labels (Sequence[str])

  • row_title (str)

  • col_title (str)

  • heatmap (bool)

  • highlight (Sequence[Sequence[int]])

  • brackets (bool)

  • metrics (Mapping[str, Any] | None)

  • description (str | RichText)

  • caption (str)

  • notes (str)

  • id (str | None)

  • show (bool)

confusion_matrix(counts, labels, *, title='', description='', caption='', notes='', id=None, show=True)

A classifier’s confusion matrix: actual classes by row, predictions by column, with accuracy.

Parameters:
  • counts (Sequence[Sequence[int]])

  • labels (Sequence[str])

  • title (str)

  • description (str | RichText)

  • caption (str)

  • notes (str)

  • id (str | None)

  • show (bool)

chart(series, *, mode='line', labels=(), title='', x_label='', y_label='', y_min=None, y_max=None, description='', caption='', notes='', id=None, show=True)

A line, bar or scatter chart.

series is a list of numbers, {'loss': [...], 'accuracy': [...]} or a list of {'name', 'values', 'x'} dictionaries.

Parameters:
  • series (Any)

  • mode (str)

  • labels (Sequence[str])

  • title (str)

  • x_label (str)

  • y_label (str)

  • y_min (float | None)

  • y_max (float | None)

  • description (str | RichText)

  • caption (str)

  • notes (str)

  • id (str | None)

  • show (bool)

network(layers, *, labels=(), title='', description='', caption='', notes='', id=None, show=True)

A feed-forward neural network, e.g. [4, 6, 3] neurons per layer.

Parameters:
  • layers (Sequence[int])

  • labels (Sequence[str])

  • title (str)

  • description (str | RichText)

  • caption (str)

  • notes (str)

  • id (str | None)

  • show (bool)

tree(root, *, title='', description='', caption='', notes='', id=None, show=True)

A rooted tree: {'value': '8', 'children': [{'value': '3'}, None]}.

Parameters:
  • root (Any)

  • title (str)

  • description (str | RichText)

  • caption (str)

  • notes (str)

  • id (str | None)

  • show (bool)

graph(nodes, edges=(), *, directed=False, title='', description='', caption='', notes='', id=None, show=True)

Nodes and edges: graph(['A', 'B'], [('A', 'B', 4)], directed=True).

Parameters:
  • nodes (Sequence[Any])

  • edges (Sequence[Any])

  • directed (bool)

  • title (str)

  • description (str | RichText)

  • caption (str)

  • notes (str)

  • id (str | None)

  • show (bool)

memory(frames, objects=(), *, title='', stack_label=None, heap_label=None, description='', caption='', notes='', id=None, show=True)

Frames, variables and the objects they reference ("@id" draws an arrow).

memory({'main': {'x': 5, 'nums': '@a'}}, {'a': [1, 2]})

Parameters:
  • frames (Any)

  • objects (Any)

  • title (str)

  • stack_label (str | None)

  • heap_label (str | None)

  • description (str | RichText)

  • caption (str)

  • notes (str)

  • id (str | None)

  • show (bool)

schema(tables, *, title='', per_row=3, description='', caption='', notes='', id=None, show=True)

Database tables and relationships: {'students': ['id INT PK', 'name TEXT'], ...}.

Parameters:
  • tables (Any)

  • title (str)

  • per_row (int)

  • description (str | RichText)

  • caption (str)

  • notes (str)

  • id (str | None)

  • show (bool)

render(content, *, show=True)

Render a component dictionary ({"type": "slide", ...}) or a list.

Parameters:
  • content (Mapping[str, Any] | Sequence[Mapping[str, Any]])

  • show (bool)

classmethod from_dict(data, *, show=True, base_dir=None)

Build a deck from the portable course format (see to_dict).

Parameters:
  • data (Mapping[str, Any])

  • show (bool)

  • base_dir (str | Path | None)

Return type:

LectureDeck

classmethod from_file(path, *, show=True)

Load one portable JSON course file and render its components.

Parameters:
  • path (str | Path)

  • show (bool)

Return type:

LectureDeck

to_dict()

The deck in the portable JSON course format.

Return type:

dict[str, Any]

save(path)

Write the deck as a JSON course file that from_file reads back.

Parameters:

path (str | Path)

Return type:

Path

export(path, *, title=None, include_answers=True, present=False, notes=None, fragments=False)

Save a standalone HTML file with embedded styles and fonts.

include_answers=False removes activity answers, quiz keys and exercise solutions from the file (a student copy). present=True adds a slideshow mode: arrow keys, fullscreen (F) and speaker notes (S); fragments=True then reveals cards one at a time. Speaker notes are only included in presentation exports unless notes says otherwise.

Parameters:
  • path (str | Path)

  • title (str | None)

  • include_answers (bool)

  • present (bool)

  • notes (bool | None)

  • fragments (bool)

Return type:

Path

export_pdf(path, *, width=None, scale=2, mode='faithful', include_answers=True, title=None, timeout=60, audit_dir=None, browser_path=None)

Save the deck as a PDF using the optional pdf extra.

Faithful mode preserves screen pixels as lossless images. Vector mode keeps selectable text. Animations become a deterministic static frame. Collapsible sections are open; include_answers=False hides answers.

Parameters:
  • path (str | Path)

  • width (int | None)

  • scale (int)

  • mode (str)

  • include_answers (bool)

  • title (str | None)

  • timeout (int)

  • audit_dir (str | Path | None)

  • browser_path (str | Path | None)

Return type:

Path

Settings

class lecture_studio.Theme(preset='gold', accent=None, background=None, motion=True, direction=None, max_width=1280, notebook_style=False, external_fonts=False, tokens=None)

Visual settings. direction=None follows the deck’s locale.

Parameters:
  • preset (str)

  • accent (str | None)

  • background (str | None)

  • motion (bool)

  • direction (str | None)

  • max_width (int)

  • notebook_style (bool)

  • external_fonts (bool)

  • tokens (Mapping[str, str] | None)

class lecture_studio.Brand(course=None, series=None, lesson='', footer=None, language='python')

Course identity shown on every slide. None uses the locale default.

Parameters:
  • course (str | None)

  • series (str | None)

  • lesson (str)

  • footer (str | None)

  • language (str)

class lecture_studio.RichText(html)

Explicitly trusted author HTML. Never use for untrusted student input.

Parameters:

html (str)

Content models

class lecture_studio.Card(title: 'str', explanation: 'Content' = '', code: 'str' = '', reason: 'Content' = '', language: 'str | None' = None)
Parameters:
  • title (str)

  • explanation (str | RichText)

  • code (str)

  • reason (str | RichText)

  • language (str | None)

class lecture_studio.CoverSection(title: 'str', description: 'str' = '')
Parameters:
  • title (str)

  • description (str)

class lecture_studio.Node(value: 'str', note: 'str' = '', selected: 'bool' = False)
Parameters:
  • value (str)

  • note (str)

  • selected (bool)

class lecture_studio.Diagram(title: 'str', nodes: 'Sequence[Node]' = <factory>, caption: 'str' = '', direction: 'str' = 'ltr', arrows: 'bool' = True, kind: 'str' = 'flow')
Parameters:
  • title (str)

  • nodes (Sequence[Node])

  • caption (str)

  • direction (str)

  • arrows (bool)

  • kind (str)

class lecture_studio.Activity(question: 'str', answer: 'Content', code: 'str' = '', language: 'str | None' = None, label: 'str | None' = None, reveal: 'str | None' = None)
Parameters:
  • question (str)

  • answer (str | RichText)

  • code (str)

  • language (str | None)

  • label (str | None)

  • reveal (str | None)

class lecture_studio.TraceStep(line: 'int', variables: 'Mapping[str, Any]'=<factory>, output: 'str' = '', note: 'str' = '')
Parameters:
  • line (int)

  • variables (Mapping[str, Any])

  • output (str)

  • note (str)

Components

class lecture_studio.Component

Base class for deck components; register new ones in components.

to_dict()

A JSON-ready dictionary that LectureDeck.render accepts again.

Return type:

dict[str, Any]

class lecture_studio.Cover(title: 'str', description: 'Content' = '', kicker: 'str' = '', tags: 'Sequence[str]' = (), sections: 'Sequence[CoverSection]' = (), hero_code: 'str' = '', hero_result: 'str' = '', hero_label: 'str | None' = None, footer_label: 'str | None' = None, notes: 'str' = '')
Parameters:
  • title (str)

  • description (str | RichText)

  • kicker (str)

  • tags (Sequence[str])

  • sections (Sequence[CoverSection])

  • hero_code (str)

  • hero_result (str)

  • hero_label (str | None)

  • footer_label (str | None)

  • notes (str)

class lecture_studio.Slide(title: 'str', description: 'Content' = '', cards: 'Sequence[Card]' = (), subtitle: 'str' = '', diagram: 'Diagram | None' = None, activity: 'Activity | None' = None, notes: 'str' = '')
Parameters:
  • title (str)

  • description (str | RichText)

  • cards (Sequence[Card])

  • subtitle (str)

  • diagram (Diagram | None)

  • activity (Activity | None)

  • notes (str)

class lecture_studio.Note(title: 'str', body: 'Content' = '', notes: 'str' = '')
Parameters:
  • title (str)

  • body (str | RichText)

  • notes (str)

class lecture_studio.Table(title: 'str', headers: 'Sequence[Any]', rows: 'Sequence[Sequence[Any]]', notes: 'str' = '')
Parameters:
  • title (str)

  • headers (Sequence[Any])

  • rows (Sequence[Sequence[Any]])

  • notes (str)

class lecture_studio.Callout(body, title=None, style='info', notes='')

A highlighted remark: tip, warning, common mistake, key idea…

Parameters:
  • body (str | RichText)

  • title (str | None)

  • style (str)

  • notes (str)

class lecture_studio.Compare(title, before, after, mode='wrong-right', before_label=None, after_label=None, before_note='', after_note='', description='', language=None, notes='')

Two code versions side by side: wrong/right or before/after.

Parameters:
  • title (str)

  • before (str)

  • after (str)

  • mode (str)

  • before_label (str | None)

  • after_label (str | None)

  • before_note (str | RichText)

  • after_note (str | RichText)

  • description (str | RichText)

  • language (str | None)

  • notes (str)

class lecture_studio.CodeExample(code, title='', output='', language=None, highlight=(), line_numbers=False, description='', caption='', notes='')

Code with an optional result panel, highlighted lines and line numbers.

Parameters:
  • code (str)

  • title (str)

  • output (str)

  • language (str | None)

  • highlight (Sequence[int])

  • line_numbers (bool)

  • description (str | RichText)

  • caption (str)

  • notes (str)

class lecture_studio.Quiz(question, options, answer, explanation='', code='', language=None, title=None, notes='')

Multiple choice. answer is the option index (from 0) or its text.

Works without JavaScript: choosing an option marks it right or wrong.

Parameters:
  • question (str)

  • options (Sequence[str])

  • answer (int | str)

  • explanation (str | RichText)

  • code (str)

  • language (str | None)

  • title (str | None)

  • notes (str)

class lecture_studio.Trace(code, steps, title='', language=None, description='', notes='')

Step through code line by line, showing variables and output.

Parameters:
  • code (str)

  • steps (Sequence[TraceStep])

  • title (str)

  • language (str | None)

  • description (str | RichText)

  • notes (str)

class lecture_studio.Exercise(title: 'str', task: 'Content', starter: 'str' = '', hints: 'Sequence[str]' = (), solution: 'str' = '', explanation: 'Content' = '', language: 'str | None' = None, notes: 'str' = '')
Parameters:
  • title (str)

  • task (str | RichText)

  • starter (str)

  • hints (Sequence[str])

  • solution (str)

  • explanation (str | RichText)

  • language (str | None)

  • notes (str)

class lecture_studio.Agenda(items, title=None, mode='goals', notes='')

Learning goals at the start of a lecture, or a recap at the end.

Parameters:
  • items (Sequence[str])

  • title (str | None)

  • mode (str)

  • notes (str)

class lecture_studio.Figure(src, caption='', alt='', title='', width=None, notes='')

An image from a local file (embedded at render time) or an https URL.

Parameters:
  • src (str)

  • caption (str)

  • alt (str)

  • title (str)

  • width (int | None)

  • notes (str)

class lecture_studio.Divider(title, subtitle='', label=None, notes='')

A section break between parts of a long lecture.

Parameters:
  • title (str)

  • subtitle (str)

  • label (str | None)

  • notes (str)

Subject visuals

class lecture_studio.Equation(latex, title='', legend=<factory>, description='', caption='', notes='')

Display formulas in LaTeX, with an optional legend of their symbols.

legend maps a symbol (LaTeX) to its meaning, e.g. {r'\eta': 'learning rate'}.

Parameters:
  • latex (str | Sequence[str])

  • title (str)

  • legend (Mapping[str, str])

  • description (str | RichText)

  • caption (str)

  • notes (str)

class lecture_studio.Array(values, title='', name='', highlight=(), pointers=<factory>, slice=None, negative=False, description='', caption='', notes='')

A list or array drawn as cells with indices, pointers and a slice.

pointers maps a label to an index (len(values) marks the end); slice is [start, stop] like Python’s values[start:stop].

Parameters:
  • values (Sequence[Any])

  • title (str)

  • name (str)

  • highlight (Sequence[int])

  • pointers (Mapping[str, int])

  • slice (Sequence[int] | None)

  • negative (bool)

  • description (str | RichText)

  • caption (str)

  • notes (str)

class lecture_studio.Matrix(rows, title='', name='', row_labels=(), col_labels=(), row_title='', col_title='', heatmap=False, highlight=(), brackets=False, metrics=<factory>, description='', caption='', notes='')

A grid of values: matrices, tables of weights, heatmaps, confusion matrices.

heatmap=True shades numeric cells by value; highlight lists [row, column] cells; metrics adds labelled figures below the grid.

Parameters:
  • rows (Sequence[Sequence[Any]])

  • title (str)

  • name (str)

  • row_labels (Sequence[str])

  • col_labels (Sequence[str])

  • row_title (str)

  • col_title (str)

  • heatmap (bool)

  • highlight (Sequence[Sequence[int]])

  • brackets (bool)

  • metrics (Mapping[str, str])

  • description (str | RichText)

  • caption (str)

  • notes (str)

class lecture_studio.Chart(series, mode='line', labels=(), title='', x_label='', y_label='', y_min=None, y_max=None, description='', caption='', notes='')

A line, bar or scatter chart drawn as inline SVG (training curves, results…).

Parameters:
  • series (Sequence[Series])

  • mode (str)

  • labels (Sequence[str])

  • title (str)

  • x_label (str)

  • y_label (str)

  • y_min (float | None)

  • y_max (float | None)

  • description (str | RichText)

  • caption (str)

  • notes (str)

class lecture_studio.Series(name: 'str', values: 'Sequence[float]', x: 'Sequence[float]' = ())
Parameters:
  • name (str)

  • values (Sequence[float])

  • x (Sequence[float])

class lecture_studio.Network(layers, labels=(), title='', description='', caption='', notes='')

A feed-forward neural network: neurons per layer, fully connected.

Parameters:
  • layers (Sequence[int])

  • labels (Sequence[str])

  • title (str)

  • description (str | RichText)

  • caption (str)

  • notes (str)

class lecture_studio.Tree(root, title='', description='', caption='', notes='')

A rooted tree (search trees, parse trees, decision trees…).

None children keep an empty slot, so binary trees keep left and right.

Parameters:
  • root (TreeNode)

  • title (str)

  • description (str | RichText)

  • caption (str)

  • notes (str)

class lecture_studio.TreeNode(value: 'str', children: 'Sequence[TreeNode | None]' = (), selected: 'bool' = False, note: 'str' = '')
Parameters:
  • value (str)

  • children (Sequence[TreeNode | None])

  • selected (bool)

  • note (str)

class lecture_studio.Graph(nodes, edges=(), directed=False, title='', description='', caption='', notes='')

Nodes and edges (search, shortest paths, networks, state machines).

Nodes are ids or {"id", "label", "x", "y"} on a 0-100 grid; without positions they are placed on a circle. Edges are [source, target] or [source, target, label].

Parameters:
  • nodes (Sequence[GraphNode])

  • edges (Sequence[GraphEdge])

  • directed (bool)

  • title (str)

  • description (str | RichText)

  • caption (str)

  • notes (str)

class lecture_studio.GraphNode(id: 'str', label: 'str' = '', x: 'float | None' = None, y: 'float | None' = None, selected: 'bool' = False)
Parameters:
  • id (str)

  • label (str)

  • x (float | None)

  • y (float | None)

  • selected (bool)

class lecture_studio.GraphEdge(source: 'str', target: 'str', label: 'str' = '', selected: 'bool' = False)
Parameters:
  • source (str)

  • target (str)

  • label (str)

  • selected (bool)

class lecture_studio.Memory(frames, objects=(), title='', stack_label=None, heap_label=None, description='', caption='', notes='')

A memory diagram: stack frames with variables and the objects they reference.

Values written "@id" draw an arrow to the object with that id, so the same component shows Python names and objects, C/C++ pointers, linked lists and recursion (the last frame is the active one).

Parameters:
  • frames (Sequence[Frame])

  • objects (Sequence[HeapObject])

  • title (str)

  • stack_label (str | None)

  • heap_label (str | None)

  • description (str | RichText)

  • caption (str)

  • notes (str)

class lecture_studio.Frame(name, variables=<factory>)

A stack frame (or a scope) and its variables. "@id" points to an object.

Parameters:
  • name (str)

  • variables (Mapping[str, Any])

class lecture_studio.HeapObject(id, value='', type='')

An object in memory. value is text, a list (indexed slots) or a dict (fields).

Parameters:
  • id (str)

  • value (Any)

  • type (str)

class lecture_studio.Schema(tables, title='', per_row=3, description='', caption='', notes='')

Database tables with keys and the relationships between them.

Parameters:
  • tables (Sequence[SchemaTable])

  • title (str)

  • per_row (int)

  • description (str | RichText)

  • caption (str)

  • notes (str)

class lecture_studio.SchemaTable(name: 'str', columns: 'Sequence[Column]')
Parameters:
  • name (str)

  • columns (Sequence[Column])

class lecture_studio.Column(name, type='', key='', references='')

A table column. Shorthand: "student_id INT FK -> students.id".

Parameters:
  • name (str)

  • type (str)

  • key (str)

  • references (str)

lecture_studio.to_mathml(latex, *, display=True)

Convert a LaTeX formula (without $ delimiters) to a MathML element.

Parameters:
  • latex (str)

  • display (bool)

Return type:

str

Extension points

lecture_studio.register_component(model, render, *, replace=False)

Register a component model (a Component dataclass) and its renderer.

Parameters:
Return type:

ComponentSpec

lecture_studio.get_component(name)
Parameters:

name (str)

Return type:

ComponentSpec

lecture_studio.component_names()
Return type:

tuple[str, …]

class lecture_studio.RenderContext(brand, theme, locale, direction, markup='markdown', ordinal=1, uid='ls', include_answers=True, include_notes=False, base_dir=<factory>)

Everything a renderer needs besides the component itself.

ordinal counts components of the same kind (slide 1, 2, 3…). uid is stable for the same content and position, for form controls.

Parameters:
  • brand (Brand)

  • theme (Theme)

  • locale (Locale)

  • direction (str)

  • markup (str)

  • ordinal (int)

  • uid (str)

  • include_answers (bool)

  • include_notes (bool)

  • base_dir (Path)

line(value)

One line of author text: escaped, with inline code and bold.

Parameters:

value (str)

Return type:

str

text(value)

Multi-line author content (plain text or trusted RichText).

Return type:

str

lecture_studio.register_theme(name, *, accent, background, palette='custom', tokens=None)

Register a reusable theme, e.g. a university or department identity.

Parameters:
  • name (str)

  • accent (str)

  • background (str)

  • palette (str)

  • tokens (Mapping[str, str] | None)

Return type:

ThemePreset

lecture_studio.get_theme(name)
Parameters:

name (str)

Return type:

ThemePreset

lecture_studio.theme_names()
Return type:

tuple[str, …]

lecture_studio.register_locale(code, labels, *, direction='ltr', base='en')

Add or replace a locale. Missing labels fall back to base.

>>> register_locale('fr', {'reveal': 'Voir la réponse'})
Locale(code='fr', ...)
Parameters:
  • code (str)

  • labels (Mapping[str, str])

  • direction (str)

  • base (str)

Return type:

Locale

lecture_studio.get_locale(code)
Parameters:

code (str | Locale)

Return type:

Locale

lecture_studio.available_locales()
Return type:

tuple[str, …]

class lecture_studio.Locale(code, direction, labels=<factory>)

A language code, its writing direction and the interface labels.

Parameters:
  • code (str)

  • direction (str)

  • labels (Mapping[str, str])

with_labels(**overrides)

Return a copy with some labels replaced (use underscores for dots).

Parameters:

overrides (str)

Return type:

Locale

lecture_studio.register_highlighter(names, highlighter, *, label=None, replace=False)

Use highlighter(code) -> html for these language names.

The function must escape the code it returns (only <span class> markup is expected). label is shown in the code toolbar.

Parameters:
  • names (Iterable[str])

  • highlighter (Callable[[str], str])

  • label (str | None)

  • replace (bool)

Return type:

None

lecture_studio.highlighter_names()
Return type:

tuple[str, …]

Helpers

lecture_studio.preset_diagram(name)
Parameters:

name (str)

Return type:

Diagram

lecture_studio.diagram_names()
Return type:

tuple[str, …]

lecture_studio.export_pdf(source, destination, *, width=1328, scale=2, mode='faithful', include_answers=True, title=None, timeout=60, audit_dir=None, browser_path=None)

Export saved HTML/JSON/notebook content without executing notebook code.

faithful embeds lossless high-resolution screen images; text is not selectable. vector preserves selectable text and embedded fonts, with possible differences in effects rendered by Chromium’s PDF engine; lecture shadows are omitted because PDF viewers flatten them unevenly. Each slide gets its own fitted page. Notebook practice cells are grouped. Collapsible sections and answers are expanded by default. Set include_answers=False to hide activity answers only. Fonts are local; external network access is disabled. Browser installation is explicit. audit_dir optionally saves PNG references and dimensions.

jupyter_lecture_studio.documentation_path()

Return the bundled offline documentation index as an absolute Path.

A source checkout needs python tools/build_docs.py first. Published wheels and source archives already contain the generated documentation.