Opened 6 years ago
Closed 5 years ago
#2723 closed enhancement (fixed)
Lazy managers
| Reported by: | Eric Pettersen | Owned by: | Eric Pettersen |
|---|---|---|---|
| Priority: | moderate | Milestone: | |
| Component: | Tool Shed | Version: | |
| Keywords: | Cc: | Conrad Huang | |
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
Would like the ability to start a manager later than ChimeraX startup, for managers that are not used often. For example, the Build Structure tool has various ways of starting a structure (single atom, PubChem ID, SMILES string, etc.) that I want to be extensible through the manager/provider mechanism, but would prefer not to have the Build Structure module executed every time ChimeraX starts simply because the module has a manager.
This implies that the Toolshed needs to support lazy managers. Also, notifying managers about new providers from newly loaded bundles was overlooked, and therefore the BundleAPI needs a find_manager() method so that the Toolshed can find the manager to notify.
Change History (5)
comment:1 by , 6 years ago
| Component: | Unassigned → Tool Shed |
|---|
comment:2 by , 6 years ago
| Cc: | added |
|---|---|
| Owner: | changed from to |
comment:3 by , 6 years ago
It's fine that you assigned it to me -- I intended to implement it myself now that I've worked with the toolshed code a little and understand it somewhat.
Importing nothing else in a managers init.py is frequently awkward/ugly because that's where the bundle's public API is, and where the manager will want to put classes and functions that providers need to use.
comment:4 by , 6 years ago
| Status: | assigned → accepted |
|---|
comment:5 by , 5 years ago
| Resolution: | → fixed |
|---|---|
| Status: | accepted → closed |
A manager with the attribute autostart="false" is lazy.
Notifying managers from newly loaded bundles was done by Eric. Unclear if lazy managers are worth the work. A bundle's init.py can be structure so no additional modules are imported and minimize the overhead.