crates/monty-types/README.md
Shared boundary types for Monty, the sandboxed Python interpreter — the owned, heap-free data types that cross between the interpreter and the hosts that embed it, with no interpreter implementation.
MontyObject / MontyType — Python values and their types at the host
boundary, including the datetime family (MontyDate, MontyDateTime,
MontyTimeDelta, MontyTimeZone), DictPairs and MontyFileHandle.MontyException / ExcType — exceptions with tracebacks (StackFrame,
CodeLoc) and structured payloads (ExcData).OsFunctionCall — the typed OS-call payloads sandboxed code suspends with
(file reads/writes, open(), os.getenv, ...), plus the stat_result
builders hosts use to answer them.ResourceTracker / ResourceLimits — the resource tracker the
interpreter uses to enforce time/memory/recursion limits.PrintStream / PrintWriter — print() output capture.CompileOptions, ExtFunctionResult, NameLookupResult, FileMode, and
the CPython-compatible formatting helpers behind their repr()s.Host-side crates that need these types without linking the interpreter —
monty-fs (which services OsFunctionCalls locally via
MountTable::handle_os_call), monty-pool (which talks to Monty workers
over the wire), the pydantic-monty-client Python bindings and the
@pydantic/monty JS bindings — depend on this crate instead of monty,
so their binaries never link the interpreter itself. Only worker-side crates
(monty-runtime, monty-wasm-runtime, and monty-proto with its worker
feature) link monty.
use monty_types::MontyObject;
let value = MontyObject::List(vec![MontyObject::Int(1), MontyObject::String("x".to_owned())]);
assert_eq!(value.py_repr(), "[1, 'x']");
monty — the core interpreter: Python parser, bytecode VM, and sandbox.monty-types — the shared boundary data types (values, exceptions, OS calls, resource limits) hosts use without linking the interpreter. this cratemonty-fs — host-side filesystem mounts: maps virtual sandbox paths to real host directories.monty-runtime — the monty binary: REPL, file runner, and subprocess worker mode.monty-pool — an elastic pool of crash-isolated monty worker subprocesses.monty-proto — the protobuf wire protocol spoken between pool parents and workers.monty-type-checking — type checking of sandboxed code, powered by ty.monty-typeshed — the trimmed typeshed stubs describing the stdlib subset Monty implements.monty-macros — the proc macros behind monty's argument parsing.MIT