mindroot 9.11.0__py3-none-any.whl → 9.13.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindroot might be problematic. Click here for more details.
- mindroot/coreplugins/admin/static/js/model-preferences-v2.js +1 -1
- mindroot/coreplugins/home/templates/home.jinja2 +1 -0
- mindroot/docs/Makefile +20 -0
- mindroot/docs/_build/doctrees/chat_with_assistant.doctree +0 -0
- mindroot/docs/_build/doctrees/developer_documentation.doctree +0 -0
- mindroot/docs/_build/doctrees/environment.pickle +0 -0
- mindroot/docs/_build/doctrees/getting_started.doctree +0 -0
- mindroot/docs/_build/doctrees/index.doctree +0 -0
- mindroot/docs/_build/doctrees/install_plugins_with_tools.doctree +0 -0
- mindroot/docs/_build/doctrees/installation.doctree +0 -0
- mindroot/docs/_build/doctrees/llm_api_key.doctree +0 -0
- mindroot/docs/_build/doctrees/llm_plugin_installation.doctree +0 -0
- mindroot/docs/_build/doctrees/programming_task.doctree +0 -0
- mindroot/docs/_build/doctrees/source/ahp.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.admin.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.api_keys.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat_avatar.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.check_list.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.credits.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.email.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.env_manager.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.events.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.handlers.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.jwt_auth.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.l8n.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.mcp_.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.persona.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.startup.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.subscriptions.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.usage.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.coreplugins.user_service.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.auth.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.json_str_block.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.plugins.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.providers.backup.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.lib.providers.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mindroot.registry.doctree +0 -0
- mindroot/docs/_build/doctrees/source/modules.doctree +0 -0
- mindroot/docs/_build/doctrees/source/mr_agent_expert_instr.doctree +0 -0
- mindroot/docs/_build/doctrees/starting_mindroot.doctree +0 -0
- mindroot/docs/_build/doctrees/user_documentation.doctree +0 -0
- mindroot/docs/_build/html/.buildinfo +4 -0
- mindroot/docs/_build/html/.buildinfo.bak +4 -0
- mindroot/docs/_build/html/_images/envvar.png +0 -0
- mindroot/docs/_build/html/_images/files.png +0 -0
- mindroot/docs/_build/html/_images/installopenrouter.png +0 -0
- mindroot/docs/_build/html/_images/mood.png +0 -0
- mindroot/docs/_build/html/_images/moon.png +0 -0
- mindroot/docs/_build/html/_images/openrouter.png +0 -0
- mindroot/docs/_build/html/_images/restart.png +0 -0
- mindroot/docs/_build/html/_modules/index.html +425 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_importer.html +292 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_router.html +620 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/asset_manager.html +289 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/command_router.html +518 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_catalog_routes.html +275 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_publish_routes.html +581 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_registry_routes.html +623 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_routes.html +347 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mod.html +163 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/oauth_callback_router.html +188 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_handler.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_router.html +428 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_manager.html +610 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_router.html +146 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_routes.html +230 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/registry_settings_routes.html +253 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/router.html +267 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/server_router.html +271 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/service_models.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/settings_router.html +403 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/api_key_manager.html +215 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/mod.html +127 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/router.html +170 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/commands.html +565 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/mod.html +118 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/models.html +130 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/router.html +571 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/services.html +645 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_manager.html +258 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_routes.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/check_list/mod.html +460 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/conversion.html +232 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/ledger.html +283 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/mod.html +355 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/models.html +269 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/router.html +306 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/storage.html +257 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/email_provider.html +159 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/imap_handler.html +343 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/mod.html +210 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/services.html +172 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/smtp_handler.html +188 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/test_email_service.html +179 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/mod.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/router.html +147 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/events/router.html +201 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/agent_ops.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/index_ops.html +214 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/plugin_ops.html +263 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/publish.html +225 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/mod.html +120 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/models.html +148 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/router.html +184 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/utils.html +166 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/middleware.html +400 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/mod.html +153 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/router.html +134 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/language_detection.html +296 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/middleware.html +258 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/mod.html +393 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_enhanced.html +408 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_l8n_standalone.html +379 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_middleware.html +394 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/utils.html +348 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_commands.html +456 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_manager.html +409 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/dynamic_commands.html +267 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mcp_manager.html +1186 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mod.html +510 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/oauth_storage.html +260 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/server_installer.html +195 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/testmcpclient.html +217 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/init_persona.html +117 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/mod.html +276 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/startup/mod.html +122 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/credit_integration.html +163 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/mod.html +1089 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/models.html +261 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/router.html +502 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/storage.html +413 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/stripe_integration.html +178 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/subscription_manager.html +289 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/webhook_handler.html +327 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/handlers.html +157 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/mod.html +253 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/models.html +141 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/reporting.html +226 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/router.html +228 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/storage.html +264 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/admin_init.html +234 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/email_service.html +204 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/mod.html +260 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/models.html +148 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/password_reset_service.html +336 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/role_service.html +183 -0
- mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/router.html +202 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/auth/api_key.html +129 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/auth/auth.html +203 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog.html +259 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog2.html +500 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/butemplates.html +415 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatcontext.html +401 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatlog.html +619 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/chatlog_optimized.html +655 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/json_escape.html +138 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/json_str_block/json_str_block.html +213 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/parent_templates.html +181 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/installation.html +481 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/l8n_static_handler.html +347 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader.html +403 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader_with_l8n.html +391 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/manifest.html +450 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/mapping.html +127 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins/paths.html +215 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/plugins_install.html +171 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/commands.html +125 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/hooks.html +117 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/missing.html +169 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/model_preferences_v2.html +291 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers/services.html +122 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/providers.html +465 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/route_decorators.html +175 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/session_files.html +142 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/streamcmd.html +246 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/templates.html +677 -0
- mindroot/docs/_build/html/_modules/mindroot/lib/token_counter.html +326 -0
- mindroot/docs/_build/html/_modules/mindroot/migrate.html +153 -0
- mindroot/docs/_build/html/_modules/mindroot/registry/component_manager.html +140 -0
- mindroot/docs/_build/html/_modules/mindroot/registry/data_access.html +302 -0
- mindroot/docs/_build/html/_modules/mindroot/server.html +317 -0
- mindroot/docs/_build/html/_modules/mindroot/server_missing_normal_args.html +322 -0
- mindroot/docs/_build/html/_modules/mindroot/server_prev.html +298 -0
- mindroot/docs/_build/html/_sources/chat_with_assistant.rst.txt +14 -0
- mindroot/docs/_build/html/_sources/developer_documentation.rst.txt +26 -0
- mindroot/docs/_build/html/_sources/getting_started.rst.txt +139 -0
- mindroot/docs/_build/html/_sources/index.rst.txt +38 -0
- mindroot/docs/_build/html/_sources/install_plugins_with_tools.rst.txt +25 -0
- mindroot/docs/_build/html/_sources/installation.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/llm_api_key.rst.txt +22 -0
- mindroot/docs/_build/html/_sources/llm_plugin_installation.rst.txt +27 -0
- mindroot/docs/_build/html/_sources/programming_task.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/ahp.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.admin.rst.txt +189 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.api_keys.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat.rst.txt +93 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat_avatar.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.check_list.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.credits.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.email.rst.txt +77 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.env_manager.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.events.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.handlers.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.rst.txt +53 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.jwt_auth.rst.txt +45 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.l8n.rst.txt +109 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.mcp_.rst.txt +93 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.persona.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.rst.txt +35 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.startup.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.subscriptions.rst.txt +85 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.usage.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.user_service.rst.txt +69 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.auth.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.json_str_block.rst.txt +21 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.plugins.rst.txt +69 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.backup.rst.txt +10 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.rst.txt +61 -0
- mindroot/docs/_build/html/_sources/source/mindroot.lib.rst.txt +152 -0
- mindroot/docs/_build/html/_sources/source/mindroot.registry.rst.txt +29 -0
- mindroot/docs/_build/html/_sources/source/mindroot.rst.txt +54 -0
- mindroot/docs/_build/html/_sources/source/modules.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/source/mr_agent_expert_instr.rst.txt +7 -0
- mindroot/docs/_build/html/_sources/starting_mindroot.rst.txt +12 -0
- mindroot/docs/_build/html/_sources/user_documentation.rst.txt +16 -0
- mindroot/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +123 -0
- mindroot/docs/_build/html/_static/basic.css +906 -0
- mindroot/docs/_build/html/_static/css/badge_only.css +1 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +2671 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
- mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- mindroot/docs/_build/html/_static/css/theme.css +4 -0
- mindroot/docs/_build/html/_static/custom.css +19 -0
- mindroot/docs/_build/html/_static/debug.css +69 -0
- mindroot/docs/_build/html/_static/doctools.js +149 -0
- mindroot/docs/_build/html/_static/documentation_options.js +13 -0
- mindroot/docs/_build/html/_static/file.png +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- mindroot/docs/_build/html/_static/jquery.js +2 -0
- mindroot/docs/_build/html/_static/js/badge_only.js +1 -0
- mindroot/docs/_build/html/_static/js/theme.js +1 -0
- mindroot/docs/_build/html/_static/js/versions.js +228 -0
- mindroot/docs/_build/html/_static/language_data.js +192 -0
- mindroot/docs/_build/html/_static/minus.png +0 -0
- mindroot/docs/_build/html/_static/plus.png +0 -0
- mindroot/docs/_build/html/_static/pygments.css +232 -0
- mindroot/docs/_build/html/_static/scripts/furo-extensions.js +0 -0
- mindroot/docs/_build/html/_static/scripts/furo.js +3 -0
- mindroot/docs/_build/html/_static/scripts/furo.js.LICENSE.txt +7 -0
- mindroot/docs/_build/html/_static/scripts/furo.js.map +1 -0
- mindroot/docs/_build/html/_static/searchtools.js +635 -0
- mindroot/docs/_build/html/_static/skeleton.css +296 -0
- mindroot/docs/_build/html/_static/sphinx_highlight.js +154 -0
- mindroot/docs/_build/html/_static/styles/furo-extensions.css +2 -0
- mindroot/docs/_build/html/_static/styles/furo-extensions.css.map +1 -0
- mindroot/docs/_build/html/_static/styles/furo.css +2 -0
- mindroot/docs/_build/html/_static/styles/furo.css.map +1 -0
- mindroot/docs/_build/html/chat_with_assistant.html +329 -0
- mindroot/docs/_build/html/developer_documentation.html +338 -0
- mindroot/docs/_build/html/genindex.html +4690 -0
- mindroot/docs/_build/html/getting_started.html +423 -0
- mindroot/docs/_build/html/index.html +357 -0
- mindroot/docs/_build/html/install_plugins_with_tools.html +336 -0
- mindroot/docs/_build/html/installation.html +330 -0
- mindroot/docs/_build/html/llm_api_key.html +337 -0
- mindroot/docs/_build/html/llm_plugin_installation.html +338 -0
- mindroot/docs/_build/html/objects.inv +0 -0
- mindroot/docs/_build/html/programming_task.html +326 -0
- mindroot/docs/_build/html/py-modindex.html +1307 -0
- mindroot/docs/_build/html/search.html +307 -0
- mindroot/docs/_build/html/searchindex.js +1 -0
- mindroot/docs/_build/html/source/ahp.html +302 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.admin.html +2212 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.api_keys.html +532 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.chat.html +1185 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.chat_avatar.html +311 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.check_list.html +441 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.credits.html +879 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.email.html +554 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.env_manager.html +447 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.events.html +338 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.html +1785 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.index.handlers.html +481 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.index.html +696 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.jwt_auth.html +432 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.l8n.html +933 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.mcp_.html +1271 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.persona.html +386 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.startup.html +327 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.subscriptions.html +1631 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.usage.html +677 -0
- mindroot/docs/_build/html/source/mindroot.coreplugins.user_service.html +681 -0
- mindroot/docs/_build/html/source/mindroot.html +811 -0
- mindroot/docs/_build/html/source/mindroot.lib.auth.html +407 -0
- mindroot/docs/_build/html/source/mindroot.lib.html +2027 -0
- mindroot/docs/_build/html/source/mindroot.lib.json_str_block.html +344 -0
- mindroot/docs/_build/html/source/mindroot.lib.plugins.html +1050 -0
- mindroot/docs/_build/html/source/mindroot.lib.providers.backup.html +324 -0
- mindroot/docs/_build/html/source/mindroot.lib.providers.html +572 -0
- mindroot/docs/_build/html/source/mindroot.registry.html +501 -0
- mindroot/docs/_build/html/source/modules.html +377 -0
- mindroot/docs/_build/html/source/mr_agent_expert_instr.html +302 -0
- mindroot/docs/_build/html/starting_mindroot.html +325 -0
- mindroot/docs/_build/html/user_documentation.html +333 -0
- mindroot/docs/_static/custom.css +19 -0
- mindroot/docs/chat_with_assistant.rst +14 -0
- mindroot/docs/conf.py +54 -0
- mindroot/docs/data/agents/local/Assistant/agent.json +27 -0
- mindroot/docs/data/agents/local/SysAdmin/agent.json +33 -0
- mindroot/docs/data/equivalent_flags.json +1 -0
- mindroot/docs/data/mcp/servers.json +9 -0
- mindroot/docs/data/models.json +57 -0
- mindroot/docs/data/plugin_manifest.json +95 -0
- mindroot/docs/data/preferred_models.json +12 -0
- mindroot/docs/data/providers.json +62 -0
- mindroot/docs/developer_documentation.rst +26 -0
- mindroot/docs/envvar.png +0 -0
- mindroot/docs/files.png +0 -0
- mindroot/docs/getting_started.rst +139 -0
- mindroot/docs/index.rst +38 -0
- mindroot/docs/install_plugins_with_tools.rst +25 -0
- mindroot/docs/installation.rst +21 -0
- mindroot/docs/installopenrouter.png +0 -0
- mindroot/docs/llm_api_key.rst +22 -0
- mindroot/docs/llm_plugin_installation.rst +27 -0
- mindroot/docs/make.bat +35 -0
- mindroot/docs/mood.png +0 -0
- mindroot/docs/moon.png +0 -0
- mindroot/docs/openrouter.png +0 -0
- mindroot/docs/personas/local/Assistant/avatar.png +0 -0
- mindroot/docs/personas/local/Assistant/faceref.png +0 -0
- mindroot/docs/personas/local/Assistant/persona.json +7 -0
- mindroot/docs/programming_task.rst +10 -0
- mindroot/docs/restart.png +0 -0
- mindroot/docs/source/ahp.rst +7 -0
- mindroot/docs/source/mindroot.coreplugins.admin.rst +189 -0
- mindroot/docs/source/mindroot.coreplugins.api_keys.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.chat.rst +93 -0
- mindroot/docs/source/mindroot.coreplugins.chat_avatar.rst +10 -0
- mindroot/docs/source/mindroot.coreplugins.check_list.rst +21 -0
- mindroot/docs/source/mindroot.coreplugins.credits.rst +61 -0
- mindroot/docs/source/mindroot.coreplugins.email.rst +77 -0
- mindroot/docs/source/mindroot.coreplugins.env_manager.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.events.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.index.handlers.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.index.rst +53 -0
- mindroot/docs/source/mindroot.coreplugins.jwt_auth.rst +45 -0
- mindroot/docs/source/mindroot.coreplugins.l8n.rst +109 -0
- mindroot/docs/source/mindroot.coreplugins.mcp_.rst +93 -0
- mindroot/docs/source/mindroot.coreplugins.persona.rst +29 -0
- mindroot/docs/source/mindroot.coreplugins.rst +35 -0
- mindroot/docs/source/mindroot.coreplugins.startup.rst +21 -0
- mindroot/docs/source/mindroot.coreplugins.subscriptions.rst +85 -0
- mindroot/docs/source/mindroot.coreplugins.usage.rst +61 -0
- mindroot/docs/source/mindroot.coreplugins.user_service.rst +69 -0
- mindroot/docs/source/mindroot.lib.auth.rst +29 -0
- mindroot/docs/source/mindroot.lib.json_str_block.rst +21 -0
- mindroot/docs/source/mindroot.lib.plugins.rst +69 -0
- mindroot/docs/source/mindroot.lib.providers.backup.rst +10 -0
- mindroot/docs/source/mindroot.lib.providers.rst +61 -0
- mindroot/docs/source/mindroot.lib.rst +152 -0
- mindroot/docs/source/mindroot.registry.rst +29 -0
- mindroot/docs/source/mindroot.rst +54 -0
- mindroot/docs/source/modules.rst +7 -0
- mindroot/docs/source/mr_agent_expert_instr.rst +7 -0
- mindroot/docs/starting_mindroot.rst +12 -0
- mindroot/docs/user_documentation.rst +16 -0
- mindroot/lib/providers/model_preferences_v2.py +5 -3
- mindroot/server.py +10 -1
- {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/METADATA +1 -1
- {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/RECORD +417 -10
- {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/WHEEL +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/entry_points.txt +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/licenses/LICENSE +0 -0
- {mindroot-9.11.0.dist-info → mindroot-9.13.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
<!DOCTYPE html>
|
|
4
|
+
<html class="writer-html5" lang="en" data-content_root="../../../../">
|
|
5
|
+
<head>
|
|
6
|
+
<meta charset="utf-8" />
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
|
+
<title>mindroot.lib.plugins.loader_with_l8n — MindRoot 9.10.0 documentation</title>
|
|
9
|
+
<link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=b86133f3" />
|
|
10
|
+
<link rel="stylesheet" type="text/css" href="../../../../_static/css/theme.css?v=e59714d7" />
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
<script src="../../../../_static/jquery.js?v=5d32c60e"></script>
|
|
14
|
+
<script src="../../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
15
|
+
<script src="../../../../_static/documentation_options.js?v=3c16008f"></script>
|
|
16
|
+
<script src="../../../../_static/doctools.js?v=9bcbadda"></script>
|
|
17
|
+
<script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
18
|
+
<script src="../../../../_static/js/theme.js"></script>
|
|
19
|
+
<link rel="index" title="Index" href="../../../../genindex.html" />
|
|
20
|
+
<link rel="search" title="Search" href="../../../../search.html" />
|
|
21
|
+
</head>
|
|
22
|
+
|
|
23
|
+
<body class="wy-body-for-nav">
|
|
24
|
+
<div class="wy-grid-for-nav">
|
|
25
|
+
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
26
|
+
<div class="wy-side-scroll">
|
|
27
|
+
<div class="wy-side-nav-search" style="background: #343131" >
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
<a href="../../../../index.html" class="icon icon-home">
|
|
32
|
+
MindRoot
|
|
33
|
+
</a>
|
|
34
|
+
<div role="search">
|
|
35
|
+
<form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
|
|
36
|
+
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
|
37
|
+
<input type="hidden" name="check_keywords" value="yes" />
|
|
38
|
+
<input type="hidden" name="area" value="default" />
|
|
39
|
+
</form>
|
|
40
|
+
</div>
|
|
41
|
+
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
|
42
|
+
<!-- Local TOC -->
|
|
43
|
+
<div class="local-toc"></div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</nav>
|
|
47
|
+
|
|
48
|
+
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #343131" >
|
|
49
|
+
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
50
|
+
<a href="../../../../index.html">MindRoot</a>
|
|
51
|
+
</nav>
|
|
52
|
+
|
|
53
|
+
<div class="wy-nav-content">
|
|
54
|
+
<div class="rst-content">
|
|
55
|
+
<div role="navigation" aria-label="Page navigation">
|
|
56
|
+
<ul class="wy-breadcrumbs">
|
|
57
|
+
<li><a href="../../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
58
|
+
<li class="breadcrumb-item"><a href="../../../index.html">Module code</a></li>
|
|
59
|
+
<li class="breadcrumb-item active">mindroot.lib.plugins.loader_with_l8n</li>
|
|
60
|
+
<li class="wy-breadcrumbs-aside">
|
|
61
|
+
</li>
|
|
62
|
+
</ul>
|
|
63
|
+
<hr/>
|
|
64
|
+
</div>
|
|
65
|
+
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
66
|
+
<div itemprop="articleBody">
|
|
67
|
+
|
|
68
|
+
<h1>Source code for mindroot.lib.plugins.loader_with_l8n</h1><div class="highlight"><pre>
|
|
69
|
+
<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
70
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
|
|
71
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">importlib</span>
|
|
72
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">termcolor</span>
|
|
73
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">traceback</span>
|
|
74
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">FastAPI</span>
|
|
75
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">fastapi.staticfiles</span><span class="w"> </span><span class="kn">import</span> <span class="n">StaticFiles</span>
|
|
76
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">starlette.middleware.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseHTTPMiddleware</span>
|
|
77
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">.paths</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_plugin_path</span><span class="p">,</span> <span class="n">get_plugin_import_path</span>
|
|
78
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">.manifest</span><span class="w"> </span><span class="kn">import</span> <span class="n">list_enabled</span><span class="p">,</span> <span class="n">load_plugin_manifest</span>
|
|
79
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">.installation</span><span class="w"> </span><span class="kn">import</span> <span class="n">check_plugin_dependencies</span>
|
|
80
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">.l8n_static_handler</span><span class="w"> </span><span class="kn">import</span> <span class="n">mount_translated_static_files</span>
|
|
81
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">mindroot.lib.utils.debug</span><span class="w"> </span><span class="kn">import</span> <span class="n">debug_box</span>
|
|
82
|
+
|
|
83
|
+
<span class="n">app_instance</span> <span class="o">=</span> <span class="kc">None</span>
|
|
84
|
+
|
|
85
|
+
<div class="viewcode-block" id="load_middleware">
|
|
86
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.loader_with_l8n.load_middleware">[docs]</a>
|
|
87
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">load_middleware</span><span class="p">(</span><span class="n">app</span><span class="p">,</span> <span class="n">plugin_name</span><span class="p">,</span> <span class="n">plugin_path</span><span class="p">,</span> <span class="n">category</span><span class="p">):</span>
|
|
88
|
+
<span class="w"> </span><span class="sd">"""Load plugin middleware if it exists.</span>
|
|
89
|
+
<span class="sd"> </span>
|
|
90
|
+
<span class="sd"> Args:</span>
|
|
91
|
+
<span class="sd"> app (FastAPI): The FastAPI application instance</span>
|
|
92
|
+
<span class="sd"> plugin_name (str): Name of the plugin</span>
|
|
93
|
+
<span class="sd"> plugin_path (str): Import path of the plugin</span>
|
|
94
|
+
<span class="sd"> """</span>
|
|
95
|
+
<span class="k">try</span><span class="p">:</span>
|
|
96
|
+
<span class="n">plugin_dir</span> <span class="o">=</span> <span class="n">plugin_path</span> <span class="c1"># get_plugin_path(plugin_name)</span>
|
|
97
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">plugin_dir</span><span class="p">:</span>
|
|
98
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"No plugin_dir"</span><span class="p">)</span>
|
|
99
|
+
<span class="k">return</span>
|
|
100
|
+
|
|
101
|
+
<span class="n">dir_name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">)</span>
|
|
102
|
+
|
|
103
|
+
<span class="k">if</span> <span class="n">category</span> <span class="o">!=</span> <span class="s1">'core'</span><span class="p">:</span>
|
|
104
|
+
<span class="n">middleware_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">,</span> <span class="s1">'src'</span><span class="p">,</span> <span class="n">dir_name</span><span class="p">,</span> <span class="s1">'middleware.py'</span><span class="p">)</span>
|
|
105
|
+
<span class="k">else</span><span class="p">:</span>
|
|
106
|
+
<span class="n">middleware_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">,</span> <span class="s1">'middleware.py'</span><span class="p">)</span>
|
|
107
|
+
|
|
108
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">middleware_path</span><span class="p">):</span>
|
|
109
|
+
|
|
110
|
+
<span class="n">plugin_import_path</span> <span class="o">=</span> <span class="n">get_plugin_import_path</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">)</span>
|
|
111
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">plugin_import_path</span><span class="p">:</span>
|
|
112
|
+
<span class="n">failed_plugins</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
113
|
+
<span class="p">(</span><span class="n">plugin_name</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Failed to locate plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
114
|
+
<span class="p">)</span>
|
|
115
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not load middleware for plugin, failed to locate import path </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
116
|
+
<span class="k">return</span>
|
|
117
|
+
|
|
118
|
+
<span class="n">module</span> <span class="o">=</span> <span class="kc">None</span>
|
|
119
|
+
<span class="c1"># Import plugin module</span>
|
|
120
|
+
<span class="k">try</span><span class="p">:</span>
|
|
121
|
+
<span class="n">module</span> <span class="o">=</span> <span class="n">importlib</span><span class="o">.</span><span class="n">import_module</span><span class="p">(</span><span class="n">plugin_import_path</span><span class="p">)</span>
|
|
122
|
+
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
|
123
|
+
<span class="n">module</span> <span class="o">=</span> <span class="n">importlib</span><span class="o">.</span><span class="n">import_module</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">plugin_import_path</span><span class="si">}</span><span class="s2">.mod"</span><span class="p">)</span>
|
|
124
|
+
|
|
125
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">termcolor</span><span class="o">.</span><span class="n">colored</span><span class="p">(</span>
|
|
126
|
+
<span class="sa">f</span><span class="s2">"Loaded plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">category</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span>
|
|
127
|
+
<span class="s1">'green'</span>
|
|
128
|
+
<span class="p">))</span>
|
|
129
|
+
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="s1">'middleware'</span><span class="p">):</span>
|
|
130
|
+
<span class="n">app</span><span class="o">.</span><span class="n">add_middleware</span><span class="p">(</span><span class="n">BaseHTTPMiddleware</span><span class="p">,</span> <span class="n">dispatch</span><span class="o">=</span><span class="n">module</span><span class="o">.</span><span class="n">middleware</span><span class="p">)</span>
|
|
131
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Added middleware for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
132
|
+
<span class="k">else</span><span class="p">:</span>
|
|
133
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Did not find middleware for </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> in </span><span class="si">{</span><span class="n">middleware_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
134
|
+
<span class="k">except</span> <span class="ne">ImportError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
135
|
+
<span class="n">trace</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
|
|
136
|
+
|
|
137
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not import middleware for plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> error was </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="se">\n\n</span><span class="si">{</span><span class="n">trace</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
138
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No middleware loaded for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div>
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
<div class="viewcode-block" id="mount_static_files">
|
|
142
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.loader_with_l8n.mount_static_files">[docs]</a>
|
|
143
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">mount_static_files</span><span class="p">(</span><span class="n">app</span><span class="p">,</span> <span class="n">plugin_name</span><span class="p">,</span> <span class="n">category</span><span class="p">):</span>
|
|
144
|
+
<span class="w"> </span><span class="sd">"""Mount plugin static files with translation support if available.</span>
|
|
145
|
+
<span class="sd"> </span>
|
|
146
|
+
<span class="sd"> Args:</span>
|
|
147
|
+
<span class="sd"> app (FastAPI): The FastAPI application instance</span>
|
|
148
|
+
<span class="sd"> plugin_name (str): Name of the plugin</span>
|
|
149
|
+
<span class="sd"> category (str): Plugin category ('core' or 'installed')</span>
|
|
150
|
+
<span class="sd"> """</span>
|
|
151
|
+
<span class="k">try</span><span class="p">:</span>
|
|
152
|
+
<span class="c1"># Try to use translated static files first</span>
|
|
153
|
+
<span class="n">mount_translated_static_files</span><span class="p">(</span><span class="n">app</span><span class="p">,</span> <span class="n">plugin_name</span><span class="p">,</span> <span class="n">category</span><span class="p">)</span>
|
|
154
|
+
<span class="k">return</span>
|
|
155
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
156
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not mount translated static files for </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
157
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Falling back to regular static file mounting"</span><span class="p">)</span>
|
|
158
|
+
|
|
159
|
+
<span class="c1"># Fallback to regular static file mounting</span>
|
|
160
|
+
<span class="n">plugin_dir</span> <span class="o">=</span> <span class="n">get_plugin_path</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">)</span>
|
|
161
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">plugin_dir</span><span class="p">:</span>
|
|
162
|
+
<span class="k">return</span>
|
|
163
|
+
|
|
164
|
+
<span class="n">dir_name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">)</span>
|
|
165
|
+
|
|
166
|
+
<span class="k">if</span> <span class="n">category</span> <span class="o">!=</span> <span class="s1">'core'</span><span class="p">:</span>
|
|
167
|
+
<span class="n">static_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">,</span> <span class="s1">'src'</span><span class="p">,</span> <span class="n">dir_name</span><span class="p">,</span> <span class="s1">'static'</span><span class="p">)</span>
|
|
168
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">static_path</span><span class="p">):</span>
|
|
169
|
+
<span class="n">static_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">,</span> <span class="s1">'static'</span><span class="p">)</span>
|
|
170
|
+
<span class="k">else</span><span class="p">:</span>
|
|
171
|
+
<span class="n">static_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">,</span> <span class="s1">'static'</span><span class="p">)</span>
|
|
172
|
+
|
|
173
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">static_path</span><span class="p">):</span>
|
|
174
|
+
<span class="n">app</span><span class="o">.</span><span class="n">mount</span><span class="p">(</span>
|
|
175
|
+
<span class="sa">f</span><span class="s2">"/</span><span class="si">{</span><span class="n">dir_name</span><span class="si">}</span><span class="s2">/static"</span><span class="p">,</span>
|
|
176
|
+
<span class="n">StaticFiles</span><span class="p">(</span><span class="n">directory</span><span class="o">=</span><span class="n">static_path</span><span class="p">),</span>
|
|
177
|
+
<span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"/</span><span class="si">{</span><span class="n">dir_name</span><span class="si">}</span><span class="s2">/static"</span>
|
|
178
|
+
<span class="p">)</span>
|
|
179
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">termcolor</span><span class="o">.</span><span class="n">colored</span><span class="p">(</span>
|
|
180
|
+
<span class="sa">f</span><span class="s2">"Mounted static files for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> at </span><span class="si">{</span><span class="n">static_path</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
|
181
|
+
<span class="s1">'green'</span>
|
|
182
|
+
<span class="p">))</span>
|
|
183
|
+
<span class="k">else</span><span class="p">:</span>
|
|
184
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">termcolor</span><span class="o">.</span><span class="n">colored</span><span class="p">(</span>
|
|
185
|
+
<span class="sa">f</span><span class="s2">"No static files found for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">. Searched in </span><span class="si">{</span><span class="n">static_path</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
|
186
|
+
<span class="s1">'yellow'</span>
|
|
187
|
+
<span class="p">))</span></div>
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
<span class="c1"># pre_startup (e.g. middleware)</span>
|
|
191
|
+
<div class="viewcode-block" id="pre_load">
|
|
192
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.loader_with_l8n.pre_load">[docs]</a>
|
|
193
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">pre_load</span><span class="p">(</span><span class="n">app</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
194
|
+
<span class="n">debug_box</span><span class="p">(</span><span class="s2">"Top of pre_load"</span><span class="p">)</span>
|
|
195
|
+
<span class="n">enabled_plugins</span> <span class="o">=</span> <span class="n">list_enabled</span><span class="p">()</span>
|
|
196
|
+
<span class="k">global</span> <span class="n">app_instance</span>
|
|
197
|
+
|
|
198
|
+
<span class="c1"># Setup app instance</span>
|
|
199
|
+
<span class="k">if</span> <span class="n">app</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
200
|
+
<span class="n">app_instance</span> <span class="o">=</span> <span class="n">app</span>
|
|
201
|
+
<span class="k">elif</span> <span class="n">app_instance</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
202
|
+
<span class="n">app</span> <span class="o">=</span> <span class="n">app_instance</span>
|
|
203
|
+
<span class="k">else</span><span class="p">:</span>
|
|
204
|
+
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"No FastAPI app instance provided or found"</span><span class="p">)</span>
|
|
205
|
+
|
|
206
|
+
<span class="c1"># Add project root to Python path</span>
|
|
207
|
+
<span class="n">current_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="vm">__file__</span><span class="p">))</span>
|
|
208
|
+
<span class="n">project_root</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">current_dir</span><span class="p">))</span>
|
|
209
|
+
<span class="k">if</span> <span class="n">project_root</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">:</span>
|
|
210
|
+
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">project_root</span><span class="p">)</span>
|
|
211
|
+
|
|
212
|
+
<span class="n">failed_plugins</span> <span class="o">=</span> <span class="p">[]</span>
|
|
213
|
+
|
|
214
|
+
<span class="n">enabled_plugins</span> <span class="o">=</span> <span class="p">[</span><span class="n">plugin</span> <span class="k">for</span> <span class="n">plugin</span> <span class="ow">in</span> <span class="n">enabled_plugins</span> <span class="k">if</span> <span class="n">plugin</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">'startup'</span><span class="p">]</span>
|
|
215
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"inside of pre_load"</span><span class="p">)</span>
|
|
216
|
+
<span class="k">for</span> <span class="n">plugin_name</span><span class="p">,</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">enabled_plugins</span><span class="p">:</span>
|
|
217
|
+
<span class="k">try</span><span class="p">:</span>
|
|
218
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Trying to get import path for </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
219
|
+
<span class="c1"># Get plugin import path</span>
|
|
220
|
+
<span class="n">plugin_path</span> <span class="o">=</span> <span class="n">get_plugin_path</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">)</span>
|
|
221
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">plugin_path</span><span class="p">:</span>
|
|
222
|
+
<span class="n">failed_plugins</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
223
|
+
<span class="p">(</span><span class="n">plugin_name</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Failed to locate plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
224
|
+
<span class="p">)</span>
|
|
225
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Could not get import path"</span><span class="p">)</span>
|
|
226
|
+
<span class="k">continue</span>
|
|
227
|
+
|
|
228
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Trying to load middleware (if any) for </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
229
|
+
<span class="n">load_middleware</span><span class="p">(</span><span class="n">app</span><span class="p">,</span> <span class="n">plugin_name</span><span class="p">,</span> <span class="n">plugin_path</span><span class="p">,</span> <span class="n">category</span><span class="p">)</span>
|
|
230
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
231
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Error in pre_load: "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span></div>
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
<div class="viewcode-block" id="load">
|
|
235
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.plugins.html#mindroot.lib.plugins.loader_with_l8n.load">[docs]</a>
|
|
236
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">load</span><span class="p">(</span><span class="n">app</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
237
|
+
<span class="w"> </span><span class="sd">"""Load all enabled plugins with l8n translation support.</span>
|
|
238
|
+
<span class="sd"> </span>
|
|
239
|
+
<span class="sd"> Args:</span>
|
|
240
|
+
<span class="sd"> app (FastAPI, optional): The FastAPI application instance</span>
|
|
241
|
+
<span class="sd"> </span>
|
|
242
|
+
<span class="sd"> Raises:</span>
|
|
243
|
+
<span class="sd"> Exception: If no FastAPI instance is provided or found</span>
|
|
244
|
+
<span class="sd"> """</span>
|
|
245
|
+
<span class="k">global</span> <span class="n">app_instance</span>
|
|
246
|
+
|
|
247
|
+
<span class="c1"># Setup app instance</span>
|
|
248
|
+
<span class="k">if</span> <span class="n">app</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
249
|
+
<span class="n">app_instance</span> <span class="o">=</span> <span class="n">app</span>
|
|
250
|
+
<span class="k">elif</span> <span class="n">app_instance</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
251
|
+
<span class="n">app</span> <span class="o">=</span> <span class="n">app_instance</span>
|
|
252
|
+
<span class="k">else</span><span class="p">:</span>
|
|
253
|
+
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"No FastAPI app instance provided or found"</span><span class="p">)</span>
|
|
254
|
+
|
|
255
|
+
<span class="c1"># Add project root to Python path</span>
|
|
256
|
+
<span class="n">current_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="vm">__file__</span><span class="p">))</span>
|
|
257
|
+
<span class="n">project_root</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">current_dir</span><span class="p">))</span>
|
|
258
|
+
<span class="k">if</span> <span class="n">project_root</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">:</span>
|
|
259
|
+
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">project_root</span><span class="p">)</span>
|
|
260
|
+
|
|
261
|
+
<span class="c1"># Load enabled plugins</span>
|
|
262
|
+
<span class="n">enabled_plugins</span> <span class="o">=</span> <span class="n">list_enabled</span><span class="p">()</span>
|
|
263
|
+
<span class="n">failed_plugins</span> <span class="o">=</span> <span class="p">[]</span>
|
|
264
|
+
|
|
265
|
+
<span class="n">enabled_plugins</span> <span class="o">=</span> <span class="p">[</span><span class="n">plugin</span> <span class="k">for</span> <span class="n">plugin</span> <span class="ow">in</span> <span class="n">enabled_plugins</span> <span class="k">if</span> <span class="n">plugin</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">'startup'</span><span class="p">]</span>
|
|
266
|
+
<span class="n">enabled_plugins</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s1">'startup'</span><span class="p">,</span> <span class="s1">'core'</span><span class="p">))</span>
|
|
267
|
+
|
|
268
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Enabled plugins:"</span><span class="p">)</span>
|
|
269
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">enabled_plugins</span><span class="p">)</span>
|
|
270
|
+
|
|
271
|
+
<span class="k">for</span> <span class="n">plugin_name</span><span class="p">,</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">enabled_plugins</span><span class="p">:</span>
|
|
272
|
+
<span class="k">try</span><span class="p">:</span>
|
|
273
|
+
<span class="c1"># Get plugin import path</span>
|
|
274
|
+
<span class="n">plugin_path</span> <span class="o">=</span> <span class="n">get_plugin_import_path</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">)</span>
|
|
275
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">plugin_path</span><span class="p">:</span>
|
|
276
|
+
<span class="n">failed_plugins</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
277
|
+
<span class="p">(</span><span class="n">plugin_name</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Failed to locate plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
278
|
+
<span class="p">)</span>
|
|
279
|
+
<span class="k">continue</span>
|
|
280
|
+
|
|
281
|
+
<span class="c1"># Check dependencies for non-core plugins</span>
|
|
282
|
+
<span class="k">if</span> <span class="n">category</span> <span class="o">!=</span> <span class="s1">'core'</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">check_plugin_dependencies</span><span class="p">(</span><span class="n">plugin_path</span><span class="p">):</span>
|
|
283
|
+
<span class="n">failed_plugins</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
284
|
+
<span class="p">(</span><span class="n">plugin_name</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Dependencies not met for plugin </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
285
|
+
<span class="p">)</span>
|
|
286
|
+
<span class="k">continue</span>
|
|
287
|
+
|
|
288
|
+
<span class="c1"># Import plugin module</span>
|
|
289
|
+
<span class="k">try</span><span class="p">:</span>
|
|
290
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">,</span> <span class="s2">"Trying to import plugin module: "</span> <span class="o">+</span> <span class="n">plugin_path</span><span class="p">)</span>
|
|
291
|
+
<span class="n">module</span> <span class="o">=</span> <span class="n">importlib</span><span class="o">.</span><span class="n">import_module</span><span class="p">(</span><span class="n">plugin_path</span><span class="p">)</span>
|
|
292
|
+
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
|
293
|
+
<span class="n">module</span> <span class="o">=</span> <span class="n">importlib</span><span class="o">.</span><span class="n">import_module</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">plugin_path</span><span class="si">}</span><span class="s2">.mod"</span><span class="p">)</span>
|
|
294
|
+
|
|
295
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">termcolor</span><span class="o">.</span><span class="n">colored</span><span class="p">(</span>
|
|
296
|
+
<span class="sa">f</span><span class="s2">"Loaded plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">category</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span>
|
|
297
|
+
<span class="s1">'green'</span>
|
|
298
|
+
<span class="p">))</span>
|
|
299
|
+
|
|
300
|
+
<span class="c1"># Call plugin initialization</span>
|
|
301
|
+
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="s1">'on_load'</span><span class="p">):</span>
|
|
302
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">termcolor</span><span class="o">.</span><span class="n">colored</span><span class="p">(</span>
|
|
303
|
+
<span class="sa">f</span><span class="s2">"Calling on_load() for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
|
304
|
+
<span class="s1">'yellow'</span><span class="p">,</span> <span class="s1">'on_green'</span>
|
|
305
|
+
<span class="p">))</span>
|
|
306
|
+
<span class="k">await</span> <span class="n">module</span><span class="o">.</span><span class="n">on_load</span><span class="p">(</span><span class="n">app</span><span class="p">)</span>
|
|
307
|
+
|
|
308
|
+
<span class="c1"># Load router if exists</span>
|
|
309
|
+
<span class="k">try</span><span class="p">:</span>
|
|
310
|
+
<span class="c1"># we need to see if the router.py actually exists</span>
|
|
311
|
+
<span class="c1"># because if not this isn't an error, it just means there is no router</span>
|
|
312
|
+
<span class="c1"># but if there is and we get an importerror, then we need to report that</span>
|
|
313
|
+
<span class="c1"># as an error</span>
|
|
314
|
+
<span class="c1"># so to detect if the file exists we need to import os</span>
|
|
315
|
+
<span class="n">plugin_dir</span> <span class="o">=</span> <span class="n">get_plugin_path</span><span class="p">(</span><span class="n">plugin_name</span><span class="p">)</span>
|
|
316
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">plugin_dir</span><span class="p">:</span>
|
|
317
|
+
<span class="k">return</span>
|
|
318
|
+
|
|
319
|
+
<span class="n">dir_name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">)</span>
|
|
320
|
+
|
|
321
|
+
<span class="k">if</span> <span class="n">category</span> <span class="o">!=</span> <span class="s1">'core'</span><span class="p">:</span>
|
|
322
|
+
<span class="n">router_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">,</span> <span class="s1">'src'</span><span class="p">,</span> <span class="n">dir_name</span><span class="p">,</span> <span class="s1">'router.py'</span><span class="p">)</span>
|
|
323
|
+
<span class="k">else</span><span class="p">:</span>
|
|
324
|
+
<span class="n">router_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plugin_dir</span><span class="p">,</span> <span class="s1">'router.py'</span><span class="p">)</span>
|
|
325
|
+
|
|
326
|
+
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">router_path</span><span class="p">):</span>
|
|
327
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">termcolor</span><span class="o">.</span><span class="n">colored</span><span class="p">(</span>
|
|
328
|
+
<span class="sa">f</span><span class="s2">">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Trying to load router for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
|
329
|
+
<span class="s1">'green'</span>
|
|
330
|
+
<span class="p">))</span>
|
|
331
|
+
|
|
332
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Trying to load router for plugin: "</span> <span class="o">+</span> <span class="n">plugin_name</span><span class="p">)</span>
|
|
333
|
+
<span class="n">router_module</span> <span class="o">=</span> <span class="n">importlib</span><span class="o">.</span><span class="n">import_module</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">plugin_path</span><span class="si">}</span><span class="s2">.router"</span><span class="p">)</span>
|
|
334
|
+
<span class="n">app</span><span class="o">.</span><span class="n">include_router</span><span class="p">(</span><span class="n">router_module</span><span class="o">.</span><span class="n">router</span><span class="p">)</span>
|
|
335
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">termcolor</span><span class="o">.</span><span class="n">colored</span><span class="p">(</span>
|
|
336
|
+
<span class="sa">f</span><span class="s2">"Included router for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
|
337
|
+
<span class="s1">'yellow'</span>
|
|
338
|
+
<span class="p">))</span>
|
|
339
|
+
<span class="k">else</span><span class="p">:</span>
|
|
340
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No router found for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2"> at path </span><span class="si">{</span><span class="n">plugin_path</span><span class="si">}</span><span class="s2">/router.py"</span><span class="p">)</span>
|
|
341
|
+
|
|
342
|
+
<span class="k">except</span> <span class="ne">ImportError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
343
|
+
<span class="n">trace</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
|
|
344
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">termcolor</span><span class="o">.</span><span class="n">colored</span><span class="p">(</span>
|
|
345
|
+
<span class="sa">f</span><span class="s2">"Failed to load router for plugin: </span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">trace</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span><span class="s1">'red'</span><span class="p">))</span>
|
|
346
|
+
|
|
347
|
+
<span class="c1"># Mount static files with translation support</span>
|
|
348
|
+
<span class="n">mount_static_files</span><span class="p">(</span><span class="n">app</span><span class="p">,</span> <span class="n">plugin_name</span><span class="p">,</span> <span class="n">category</span><span class="p">)</span>
|
|
349
|
+
|
|
350
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
351
|
+
<span class="n">trace</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">()</span>
|
|
352
|
+
<span class="n">failed_plugins</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
353
|
+
<span class="p">(</span><span class="n">plugin_name</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Failed to load plugin: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">trace</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
354
|
+
<span class="p">)</span>
|
|
355
|
+
|
|
356
|
+
<span class="c1"># Report failed plugins</span>
|
|
357
|
+
<span class="k">if</span> <span class="n">failed_plugins</span><span class="p">:</span>
|
|
358
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">termcolor</span><span class="o">.</span><span class="n">colored</span><span class="p">(</span><span class="s2">"Failed to load the following plugins:"</span><span class="p">,</span> <span class="s1">'red'</span><span class="p">))</span>
|
|
359
|
+
<span class="k">for</span> <span class="n">plugin_name</span><span class="p">,</span> <span class="n">reason</span> <span class="ow">in</span> <span class="n">failed_plugins</span><span class="p">:</span>
|
|
360
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">plugin_name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div>
|
|
361
|
+
|
|
362
|
+
</pre></div>
|
|
363
|
+
|
|
364
|
+
</div>
|
|
365
|
+
</div>
|
|
366
|
+
<footer>
|
|
367
|
+
|
|
368
|
+
<hr/>
|
|
369
|
+
|
|
370
|
+
<div role="contentinfo">
|
|
371
|
+
<p>© Copyright 2025, Jason Livesay.</p>
|
|
372
|
+
</div>
|
|
373
|
+
|
|
374
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
375
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
376
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
</footer>
|
|
380
|
+
</div>
|
|
381
|
+
</div>
|
|
382
|
+
</section>
|
|
383
|
+
</div>
|
|
384
|
+
<script>
|
|
385
|
+
jQuery(function () {
|
|
386
|
+
SphinxRtdTheme.Navigation.enable(true);
|
|
387
|
+
});
|
|
388
|
+
</script>
|
|
389
|
+
|
|
390
|
+
</body>
|
|
391
|
+
</html>
|