Built-in sandbox SHIM: zoneinfo, pytz and dateutil for the model's Python
sandbox, backed by the JVM's java.time IANA time-zone database.
GraalPy ships no writable filesystem, so the real zoneinfo / pytz /
tzdata crash at import (_tzpath calls getcwd, which the denied FS refuses
with an UN-catchable Java SecurityException that aborts the whole eval). This
extension contributes a :ext/sandbox-shims entry that
env-python/build-agent-context installs into every sandbox Context (main +
every sub_loop fork): host callables resolve zone offsets / DST / names via
java.time.ZoneId (604+ zones, no data files), then a Python preamble publishes
zoneinfo, pytz, tzdata and the dateutil package (dateutil.tz,
dateutil.parser, dateutil.relativedelta) into sys.modules and staples them
onto builtins. All tz math happens on the JVM; only small metadata vectors cross
the strings-only boundary. Kills the whole class of tz-aware-datetime failures.
Built-in sandbox SHIM: `zoneinfo`, `pytz` and `dateutil` for the model's Python sandbox, backed by the JVM's `java.time` IANA time-zone database. GraalPy ships no writable filesystem, so the real `zoneinfo` / `pytz` / `tzdata` crash at import (`_tzpath` calls `getcwd`, which the denied FS refuses with an UN-catchable Java `SecurityException` that aborts the whole eval). This extension contributes a `:ext/sandbox-shims` entry that `env-python/build-agent-context` installs into every sandbox Context (main + every `sub_loop` fork): host callables resolve zone offsets / DST / names via `java.time.ZoneId` (604+ zones, no data files), then a Python preamble publishes `zoneinfo`, `pytz`, `tzdata` and the `dateutil` package (`dateutil.tz`, `dateutil.parser`, `dateutil.relativedelta`) into `sys.modules` and staples them onto builtins. All tz math happens on the JVM; only small metadata vectors cross the strings-only boundary. Kills the whole class of tz-aware-`datetime` failures.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |