![]() |
Setuav Studio Developer Documentation 1.0
SDK and plugin development reference for Setuav Studio
|
Build Python packages that extend Setuav Studio with panels, workspaces, menu commands, editors, project-tree nodes, schemas, and analysis providers.
Only symbols imported from setuav_studio_sdk are public. Application modules outside this package are implementation details and may change at any time.
StudioPlugin lifecycle contract.StudioAPI received by activate.setuav_studio.plugins entry-point group.deactivate method.StudioAPIDeclare the plugin in its package's pyproject.toml:
The entry point may resolve to a plugin class or instance. Setuav Studio loads plugins in priority and plugin-ID order. A plugin that fails to load does not prevent other plugins from starting.
Declare the plugin package and its entry point in pyproject.toml:
The entry-point target must expose a plugin class or instance with:
id: stable reverse-domain identifier.priority: optional integer; lower values activate first.activate(api): required lifecycle method.deactivate(api): required cleanup method for every registration.Plugins that add component, assembly, or analysis data ship a plugin.json manifest that follows the core plugin-manifest schema. The manifest declares the plugin ID and version, then maps typed IDs to schema files:
Keep schema paths relative to the manifest and use the same plugin ID prefix for every type. A UI-only plugin does not need a schema manifest.
On startup the host discovers bundled plugins and installed entry points, orders them by (priority, id), and calls activate(api). Contributions, listeners, providers, and commands become available only after activation returns successfully. Remove all of them in deactivate(api) so the plugin can be disabled and re-enabled safely.
id or activate method is rejected as an invalid plugin.activate is isolated; other plugins still start.The host records these failures as load issues for diagnostics. Plugins should validate their own optional dependencies before registering UI and report actionable errors through the application logger or status service.
The repository contains a minimal installable plugin in the example-plugin repository directory. Copy it as a starting point, replace its reverse-domain IDs, and declare the SDK dependency in pyproject.toml.
Run the plugin's lifecycle test from its directory:
From the repository root, run the SDK contract tests as well:
Before publishing, verify that the plugin can be activated, deactivated, and activated again. Every registration made in activate should have a matching cleanup call in deactivate: panels, workspaces, actions, editors, icons, providers, listeners, and background resources.
PLUGIN_API_VERSION versions the public plugin contract independently from the application. The SDK package is released independently using the sdk-vX.Y.Z release process documented in the SDK release guide.
Plugins run inside the Setuav Studio process with the application's file, network, and operating-system permissions. Plugins are not sandboxed; install them only from publishers you trust.