Repository navigation
v4.0.0
pysepal 4.0.0 is the first stable release of the 4.0 line. It is a breaking release and nothing here is deprecated: the removals are final. The upgrade path is in docs/guides/migration-v4.md, and its audit checklist at the end is the fastest way to find what a module has to change.
pip install -U pysepal
Earth Engine credentials are per session. Every GEEInterface call routes through its session, a session-less GEEInterface is refused in a per-connection runtime, and ambient credentials no longer leak into maps or AOI processing. create_session dispatches on the runtime topology, and PYSEPAL_DEV_AUTH replaces SOLARA_TEST.
One scope registry. SessionManager, the notification bus and the theme state sit on one ScopeRegistry keyed by scope_id, with no process-wide fallback. use_notifications() raises NotificationProviderError when no provider is mounted; pass required=False from components published for reuse. The theme belongs to its kernel, and pysepal.solara.ui_state is gone.
Translations are one msg() lookup. catalog() registers a module's messages, msg("a.key") reads them, every locale falls back to English and plurals follow each locale's CLDR rules. LocaleState, use_locale() and pysepal.message.ms are gone; use pysepal.i18n.current_locale() and set_locale(). Only MapApp.element(...) builds a language selector.
Serializable AOI selections. Every AoiResult carries an AoiSpec, AoiView restores from one, and the pickers seed from a value set outside them, so an app can save what the user chose and put it back on the next visit.
Removals. The sepal_ui compatibility package, the vendored SepalClient (it comes from pysepal-api now), ~/.sepal-ui-config with its readers and CLI tools, and the GEE asset helpers deprecated in 3.2.0.
Dependency floors. ee-client>=3.2.1,<4, pysepal-api>=0.3.0,<0.4, solara>=1.60.3,<2, ipyvuetify>=1.8,<3, localtileserver>=1.0.0.
Since rc2: MapApp renders step and dialog content again, accepts a bare widget as step or panel content, and no longer throws n[i].bind is not a function on every language switch. The pysepal and pysepal-app Claude Code skills are now distributed from this repository as a plugin; see skills/README.md.