Standard library modules
Monty ships a fixed set of built-in stdlib modules. import of anything
else raises ModuleNotFoundError: there is no sys.path, no site-packages,
and no way for sandboxed code to load additional modules.
| Module | See |
|---|---|
asyncio | asyncio.md |
base64 | base64.md |
binascii | base64.md |
collections | collections.md |
dataclasses | dataclasses.md |
datetime | datetime.md |
functools | functools.md |
itertools | itertools.md |
json | json.md |
math | math.md |
os | os.md |
pathlib | pathlib.md |
re | re.md |
sys | sys.md |
typing | typing.md |
unicodedata | unicodedata.md |
collections is importable and exposes deque, Counter, defaultdict,
and namedtuple; OrderedDict, ChainMap, and the UserDict / UserList
/ UserString wrappers are missing (see collections.md).
A gc module exposing collect() / enable() / disable() is compiled
in only under the test-hooks Cargo feature, for Monty’s own test suite;
production sandboxes never see it.
Common modules that are not importable in Monty (non-exhaustive):
abc, argparse, array, bisect, contextlib, copy, csv,
ctypes, decimal, enum, fractions,
hashlib, heapq, hmac, http, inspect, io,
logging, multiprocessing, operator, pickle, queue, random,
socket, string, struct, subprocess, tempfile, threading,
time, traceback, unittest, urllib, uuid, warnings, weakref,
zipfile, zlib.
socket, subprocess, multiprocessing, threading and ctypes are
excluded because they would breach the sandbox. Others (enum, operator)
are unimplemented and may appear over time.
Some available modules cover only part of their CPython surface: itertools
implements eleven of its callables, functools only reduce and partial,
collections only the four types above, and binascii everything except the
uuencode and quoted-printable conversions. The absent names are missing from
the module namespace rather than stubbed, so they fail type checking as well
as raising AttributeError at runtime; see each module’s page for the
specifics.
abc, types, typing_extensions, _collections_abc and _typeshed back
the vendored stubs (e.g. @abstractmethod on protocol members), so they have
to resolve during type checking. Importing them therefore type-checks clean but
still raises ModuleNotFoundError at runtime.