mindroot 9.10.0__py3-none-any.whl → 9.12.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/__init__.py +1 -0
- mindroot/coreplugins/__init__.py +2 -0
- 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/plugins/default_plugin_manifest.json +1 -1
- mindroot/server.py +10 -1
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/METADATA +1 -1
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/RECORD +418 -10
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/WHEEL +0 -0
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/entry_points.txt +0 -0
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/licenses/LICENSE +0 -0
- {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,138 @@
|
|
|
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.json_escape — 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.json_escape</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.json_escape</h1><div class="highlight"><pre>
|
|
69
|
+
<div class="viewcode-block" id="escape_for_json">
|
|
70
|
+
<a class="viewcode-back" href="../../../source/mindroot.lib.html#mindroot.lib.json_escape.escape_for_json">[docs]</a>
|
|
71
|
+
<span></span><span class="k">def</span><span class="w"> </span><span class="nf">escape_for_json</span><span class="p">(</span><span class="n">s</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
72
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
73
|
+
<span class="sd"> Escape a string to make it safe for use as a JSON property value or JSON string.</span>
|
|
74
|
+
<span class="sd"> </span>
|
|
75
|
+
<span class="sd"> Args:</span>
|
|
76
|
+
<span class="sd"> s (str): The input string to escape</span>
|
|
77
|
+
<span class="sd"> </span>
|
|
78
|
+
<span class="sd"> Returns:</span>
|
|
79
|
+
<span class="sd"> str: The escaped string safe for JSON</span>
|
|
80
|
+
<span class="sd"> </span>
|
|
81
|
+
<span class="sd"> Examples:</span>
|
|
82
|
+
<span class="sd"> >>> escape_for_json('Hello "world"')</span>
|
|
83
|
+
<span class="sd"> 'Hello \\"world\\"'</span>
|
|
84
|
+
<span class="sd"> >>> escape_for_json('Line 1\nLine 2')</span>
|
|
85
|
+
<span class="sd"> 'Line 1\\nLine 2'</span>
|
|
86
|
+
<span class="sd"> """</span>
|
|
87
|
+
<span class="c1"># Define escapes for control characters</span>
|
|
88
|
+
<span class="n">escapes</span> <span class="o">=</span> <span class="p">{</span>
|
|
89
|
+
<span class="s1">'</span><span class="se">\\</span><span class="s1">'</span><span class="p">:</span> <span class="s1">'</span><span class="se">\\\\</span><span class="s1">'</span><span class="p">,</span>
|
|
90
|
+
<span class="s1">'"'</span><span class="p">:</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">"'</span><span class="p">,</span>
|
|
91
|
+
<span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">:</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">n'</span><span class="p">,</span>
|
|
92
|
+
<span class="s1">'</span><span class="se">\r</span><span class="s1">'</span><span class="p">:</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">r'</span><span class="p">,</span>
|
|
93
|
+
<span class="s1">'</span><span class="se">\t</span><span class="s1">'</span><span class="p">:</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">t'</span><span class="p">,</span>
|
|
94
|
+
<span class="s1">'</span><span class="se">\b</span><span class="s1">'</span><span class="p">:</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">b'</span><span class="p">,</span>
|
|
95
|
+
<span class="s1">'</span><span class="se">\f</span><span class="s1">'</span><span class="p">:</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">f'</span>
|
|
96
|
+
<span class="p">}</span>
|
|
97
|
+
|
|
98
|
+
<span class="c1"># Process each character and escape as needed</span>
|
|
99
|
+
<span class="n">result</span> <span class="o">=</span> <span class="s1">''</span>
|
|
100
|
+
<span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">s</span><span class="p">:</span>
|
|
101
|
+
<span class="n">result</span> <span class="o">+=</span> <span class="n">escapes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">char</span><span class="p">,</span> <span class="n">char</span><span class="p">)</span>
|
|
102
|
+
|
|
103
|
+
<span class="c1"># remove any trailing \\n</span>
|
|
104
|
+
<span class="k">if</span> <span class="n">result</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">:]</span> <span class="o">==</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">n'</span><span class="p">:</span>
|
|
105
|
+
<span class="n">result</span> <span class="o">=</span> <span class="n">result</span><span class="p">[:</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span>
|
|
106
|
+
<span class="k">return</span> <span class="n">result</span></div>
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
</pre></div>
|
|
110
|
+
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
<footer>
|
|
114
|
+
|
|
115
|
+
<hr/>
|
|
116
|
+
|
|
117
|
+
<div role="contentinfo">
|
|
118
|
+
<p>© Copyright 2025, Jason Livesay.</p>
|
|
119
|
+
</div>
|
|
120
|
+
|
|
121
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
122
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
123
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
</footer>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
</section>
|
|
130
|
+
</div>
|
|
131
|
+
<script>
|
|
132
|
+
jQuery(function () {
|
|
133
|
+
SphinxRtdTheme.Navigation.enable(true);
|
|
134
|
+
});
|
|
135
|
+
</script>
|
|
136
|
+
|
|
137
|
+
</body>
|
|
138
|
+
</html>
|
|
@@ -0,0 +1,213 @@
|
|
|
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.json_str_block.json_str_block — 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.json_str_block.json_str_block</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.json_str_block.json_str_block</h1><div class="highlight"><pre>
|
|
69
|
+
<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
|
|
70
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">partial_json_parser</span><span class="w"> </span><span class="kn">import</span> <span class="n">loads</span><span class="p">,</span> <span class="n">ensure_json</span>
|
|
71
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
72
|
+
|
|
73
|
+
<div class="viewcode-block" id="replace_raw_blocks">
|
|
74
|
+
<a class="viewcode-back" href="../../../../source/mindroot.lib.json_str_block.html#mindroot.lib.json_str_block.json_str_block.replace_raw_blocks">[docs]</a>
|
|
75
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">replace_raw_blocks</span><span class="p">(</span><span class="n">jsonish</span><span class="p">):</span>
|
|
76
|
+
<span class="w"> </span><span class="sd">"""</span>
|
|
77
|
+
<span class="sd"> Allows embedding raw text blocks for JSON properties, e.g.:</span>
|
|
78
|
+
|
|
79
|
+
<span class="sd"> [ {"write": { "filename": "/test.py",</span>
|
|
80
|
+
<span class="sd"> "text": START_RAW</span>
|
|
81
|
+
<span class="sd"> def foo():</span>
|
|
82
|
+
<span class="sd"> print('hello world')</span>
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
<span class="sd"> (with optional END_RAW and continuation of JSON):</span>
|
|
86
|
+
|
|
87
|
+
<span class="sd"> [ {"write": { "filename": "/test.py",</span>
|
|
88
|
+
<span class="sd"> "text": START_RAW</span>
|
|
89
|
+
<span class="sd"> def foo():</span>
|
|
90
|
+
<span class="sd"> print('hello world')</span>
|
|
91
|
+
<span class="sd"> END_RAW }</span>
|
|
92
|
+
<span class="sd"> } </span>
|
|
93
|
+
<span class="sd"> ]</span>
|
|
94
|
+
<span class="sd"> """</span>
|
|
95
|
+
<span class="n">final_string</span> <span class="o">=</span> <span class="s2">""</span>
|
|
96
|
+
<span class="n">in_raw</span> <span class="o">=</span> <span class="kc">False</span>
|
|
97
|
+
<span class="n">raw_string</span> <span class="o">=</span> <span class="s2">""</span>
|
|
98
|
+
<span class="n">lines</span> <span class="o">=</span> <span class="n">jsonish</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
99
|
+
|
|
100
|
+
<span class="n">lines_</span> <span class="o">=</span> <span class="p">[]</span>
|
|
101
|
+
<span class="k">for</span> <span class="n">line_</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
|
|
102
|
+
<span class="k">if</span> <span class="s2">"START_RAW"</span> <span class="ow">in</span> <span class="n">line_</span><span class="p">:</span>
|
|
103
|
+
<span class="nb">all</span> <span class="o">=</span> <span class="n">line_</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">n"</span><span class="p">)</span>
|
|
104
|
+
<span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="nb">all</span><span class="p">:</span>
|
|
105
|
+
<span class="n">lines_</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
|
|
106
|
+
<span class="k">elif</span> <span class="s2">"END_RAW"</span> <span class="ow">in</span> <span class="n">line_</span><span class="p">:</span>
|
|
107
|
+
<span class="nb">all</span> <span class="o">=</span> <span class="n">line_</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">n"</span><span class="p">)</span>
|
|
108
|
+
<span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="nb">all</span><span class="p">:</span>
|
|
109
|
+
<span class="n">lines_</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
|
|
110
|
+
<span class="k">else</span><span class="p">:</span>
|
|
111
|
+
<span class="n">lines_</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line_</span><span class="p">)</span>
|
|
112
|
+
|
|
113
|
+
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines_</span><span class="p">:</span>
|
|
114
|
+
<span class="k">if</span> <span class="n">in_raw</span><span class="p">:</span>
|
|
115
|
+
<span class="k">if</span> <span class="s2">"END_RAW"</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
|
|
116
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">nEND_RAW</span><span class="se">\n\"</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
117
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">END_RAW</span><span class="se">\n\"</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
118
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">END_RAW</span><span class="se">\"</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
119
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">END_RAW"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
120
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"END_RAW</span><span class="se">\"</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
121
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"END_RAW"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
122
|
+
<span class="n">final_string</span> <span class="o">+=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">raw_string</span><span class="p">)</span> <span class="o">+</span> <span class="n">line</span>
|
|
123
|
+
<span class="n">in_raw</span> <span class="o">=</span> <span class="kc">False</span>
|
|
124
|
+
<span class="k">else</span><span class="p">:</span>
|
|
125
|
+
<span class="n">raw_string</span> <span class="o">+=</span> <span class="n">line</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
|
|
126
|
+
<span class="k">else</span><span class="p">:</span>
|
|
127
|
+
<span class="k">if</span> <span class="s2">"START_RAW"</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
|
|
128
|
+
<span class="n">in_raw</span> <span class="o">=</span> <span class="kc">True</span>
|
|
129
|
+
<span class="n">raw_string</span> <span class="o">=</span> <span class="s2">""</span>
|
|
130
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\"</span><span class="s2">START_RAW</span><span class="se">\\</span><span class="s2">n"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
131
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\"</span><span class="s2">START_RAW</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
132
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\"</span><span class="s2">START_RAW"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
133
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"START_RAW </span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
134
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"START_RAW</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
135
|
+
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"START_RAW"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
136
|
+
<span class="n">final_string</span> <span class="o">+=</span> <span class="n">line</span>
|
|
137
|
+
<span class="k">else</span><span class="p">:</span>
|
|
138
|
+
<span class="n">final_string</span> <span class="o">+=</span> <span class="n">line</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
|
|
139
|
+
<span class="k">if</span> <span class="n">in_raw</span><span class="p">:</span>
|
|
140
|
+
<span class="n">final_string</span> <span class="o">+=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">raw_string</span><span class="p">)</span>
|
|
141
|
+
|
|
142
|
+
<span class="n">final_string</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s1">'(?<!")""(?!")'</span><span class="p">,</span> <span class="s1">'"'</span><span class="p">,</span> <span class="n">final_string</span><span class="p">)</span>
|
|
143
|
+
<span class="k">if</span> <span class="s2">"START_RAW"</span> <span class="ow">in</span> <span class="n">final_string</span><span class="p">:</span>
|
|
144
|
+
<span class="n">final_string</span> <span class="o">=</span> <span class="n">final_string</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"START_RAW"</span><span class="p">,</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">"</span><span class="p">)</span>
|
|
145
|
+
<span class="c1">#else:</span>
|
|
146
|
+
<span class="c1"># print('did not find START_RAW')</span>
|
|
147
|
+
<span class="c1"># check if parsable as partial json</span>
|
|
148
|
+
<span class="k">try</span><span class="p">:</span>
|
|
149
|
+
<span class="c1">#print("should be json: \n", final_string)</span>
|
|
150
|
+
<span class="n">ensure_json</span><span class="p">(</span><span class="n">final_string</span><span class="p">)</span>
|
|
151
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
152
|
+
<span class="n">escaped_nl_in_fenced</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s1">'```[\s\S]*?```'</span><span class="p">,</span>
|
|
153
|
+
<span class="k">lambda</span> <span class="n">m</span><span class="p">:</span> <span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">,</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">n'</span><span class="p">),</span>
|
|
154
|
+
<span class="n">final_string</span><span class="p">)</span>
|
|
155
|
+
<span class="k">try</span><span class="p">:</span>
|
|
156
|
+
<span class="n">ensure_json</span><span class="p">(</span><span class="n">escaped_nl_in_fenced</span><span class="p">)</span>
|
|
157
|
+
<span class="k">return</span> <span class="n">escaped_nl_in_fenced</span>
|
|
158
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
159
|
+
<span class="k">try</span><span class="p">:</span>
|
|
160
|
+
<span class="n">final_string</span> <span class="o">=</span> <span class="n">final_string</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">n"</span><span class="p">)</span>
|
|
161
|
+
<span class="n">ensure_json</span><span class="p">(</span><span class="n">final_string</span><span class="p">)</span>
|
|
162
|
+
<span class="k">return</span> <span class="n">final_string</span>
|
|
163
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
164
|
+
<span class="k">return</span> <span class="n">final_string</span>
|
|
165
|
+
<span class="k">return</span> <span class="n">final_string</span></div>
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
|
170
|
+
<span class="c1"># read test example 1 from ex1.txt</span>
|
|
171
|
+
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">"ex9.txt"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
172
|
+
<span class="c1"># #with open("test_case_1.json") as f:</span>
|
|
173
|
+
<span class="n">jsonish</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
|
174
|
+
<span class="n">new_json</span> <span class="o">=</span> <span class="n">replace_raw_blocks</span><span class="p">(</span><span class="n">jsonish</span><span class="p">)</span>
|
|
175
|
+
|
|
176
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">new_json</span><span class="p">)</span>
|
|
177
|
+
|
|
178
|
+
<span class="n">data</span> <span class="o">=</span> <span class="n">loads</span><span class="p">(</span><span class="n">new_json</span><span class="p">)</span>
|
|
179
|
+
|
|
180
|
+
<span class="nb">print</span><span class="p">(</span><span class="s1">'-----------------------------------------'</span><span class="p">)</span>
|
|
181
|
+
<span class="nb">print</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
</pre></div>
|
|
185
|
+
|
|
186
|
+
</div>
|
|
187
|
+
</div>
|
|
188
|
+
<footer>
|
|
189
|
+
|
|
190
|
+
<hr/>
|
|
191
|
+
|
|
192
|
+
<div role="contentinfo">
|
|
193
|
+
<p>© Copyright 2025, Jason Livesay.</p>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
197
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
198
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
</footer>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
</section>
|
|
205
|
+
</div>
|
|
206
|
+
<script>
|
|
207
|
+
jQuery(function () {
|
|
208
|
+
SphinxRtdTheme.Navigation.enable(true);
|
|
209
|
+
});
|
|
210
|
+
</script>
|
|
211
|
+
|
|
212
|
+
</body>
|
|
213
|
+
</html>
|
|
@@ -0,0 +1,181 @@
|
|
|
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.parent_templates — 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.parent_templates</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.parent_templates</h1><div class="highlight"><pre>
|
|
69
|
+
<span></span><span class="sd">"""Parent template environment with single template per filename."""</span>
|
|
70
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
71
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">jinja2</span><span class="w"> </span><span class="kn">import</span> <span class="n">Environment</span><span class="p">,</span> <span class="n">FileSystemLoader</span><span class="p">,</span> <span class="n">ChoiceLoader</span>
|
|
72
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">.plugins</span><span class="w"> </span><span class="kn">import</span> <span class="n">list_enabled</span><span class="p">,</span> <span class="n">get_plugin_path</span>
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
<div class="viewcode-block" id="FirstMatchLoader">
|
|
76
|
+
<a class="viewcode-back" href="../../../source/mindroot.lib.html#mindroot.lib.parent_templates.FirstMatchLoader">[docs]</a>
|
|
77
|
+
<span class="k">class</span><span class="w"> </span><span class="nc">FirstMatchLoader</span><span class="p">(</span><span class="n">ChoiceLoader</span><span class="p">):</span>
|
|
78
|
+
<span class="w"> </span><span class="sd">"""Custom loader that only returns the first matching template."""</span>
|
|
79
|
+
|
|
80
|
+
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">loaders</span><span class="p">):</span>
|
|
81
|
+
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">loaders</span><span class="p">)</span>
|
|
82
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">_template_cache</span> <span class="o">=</span> <span class="p">{}</span>
|
|
83
|
+
|
|
84
|
+
<div class="viewcode-block" id="FirstMatchLoader.get_source">
|
|
85
|
+
<a class="viewcode-back" href="../../../source/mindroot.lib.html#mindroot.lib.parent_templates.FirstMatchLoader.get_source">[docs]</a>
|
|
86
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">get_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">environment</span><span class="p">,</span> <span class="n">template</span><span class="p">):</span>
|
|
87
|
+
<span class="w"> </span><span class="sd">"""Get template source, returning only first match for each template name."""</span>
|
|
88
|
+
<span class="k">if</span> <span class="n">template</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_template_cache</span><span class="p">:</span>
|
|
89
|
+
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_template_cache</span><span class="p">[</span><span class="n">template</span><span class="p">]</span>
|
|
90
|
+
|
|
91
|
+
<span class="c1"># Try each loader until we find the first match</span>
|
|
92
|
+
<span class="k">for</span> <span class="n">loader</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">loaders</span><span class="p">:</span>
|
|
93
|
+
<span class="k">try</span><span class="p">:</span>
|
|
94
|
+
<span class="n">source</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">get_source</span><span class="p">(</span><span class="n">environment</span><span class="p">,</span> <span class="n">template</span><span class="p">)</span>
|
|
95
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">_template_cache</span><span class="p">[</span><span class="n">template</span><span class="p">]</span> <span class="o">=</span> <span class="n">source</span>
|
|
96
|
+
<span class="k">return</span> <span class="n">source</span>
|
|
97
|
+
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
|
98
|
+
<span class="k">continue</span>
|
|
99
|
+
|
|
100
|
+
<span class="c1"># If we get here, no loader could find the template</span>
|
|
101
|
+
<span class="k">raise</span> <span class="n">TemplateNotFound</span><span class="p">(</span><span class="n">template</span><span class="p">)</span></div>
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
<div class="viewcode-block" id="get_parent_templates_env">
|
|
107
|
+
<a class="viewcode-back" href="../../../source/mindroot.lib.html#mindroot.lib.parent_templates.get_parent_templates_env">[docs]</a>
|
|
108
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">get_parent_templates_env</span><span class="p">(</span><span class="n">plugins</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
109
|
+
<span class="w"> </span><span class="sd">"""Set up Jinja2 environment that only loads first matching template.</span>
|
|
110
|
+
<span class="sd"> </span>
|
|
111
|
+
<span class="sd"> Args:</span>
|
|
112
|
+
<span class="sd"> plugins (list, optional): List of plugin names. Defaults to enabled plugins.</span>
|
|
113
|
+
<span class="sd"> </span>
|
|
114
|
+
<span class="sd"> Returns:</span>
|
|
115
|
+
<span class="sd"> Environment: Configured Jinja2 environment with FirstMatchLoader</span>
|
|
116
|
+
<span class="sd"> """</span>
|
|
117
|
+
<span class="k">if</span> <span class="n">plugins</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
118
|
+
<span class="n">plugins</span> <span class="o">=</span> <span class="n">list_enabled</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
|
|
119
|
+
|
|
120
|
+
<span class="n">template_paths</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># Use list to maintain order</span>
|
|
121
|
+
|
|
122
|
+
<span class="c1"># Add plugin template paths in priority order</span>
|
|
123
|
+
<span class="k">for</span> <span class="n">plugin</span> <span class="ow">in</span> <span class="n">plugins</span><span class="p">:</span>
|
|
124
|
+
<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</span><span class="p">)</span>
|
|
125
|
+
<span class="k">if</span> <span class="ow">not</span> <span class="n">plugin_path</span><span class="p">:</span>
|
|
126
|
+
<span class="k">continue</span>
|
|
127
|
+
|
|
128
|
+
<span class="c1"># Add main template directory</span>
|
|
129
|
+
<span class="n">template_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">join</span><span class="p">(</span><span class="n">plugin_path</span><span class="p">,</span> <span class="s1">'templates'</span><span class="p">)</span>
|
|
130
|
+
<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">template_dir</span><span class="p">):</span>
|
|
131
|
+
<span class="n">template_paths</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">template_dir</span><span class="p">)</span>
|
|
132
|
+
|
|
133
|
+
<span class="c1"># Add parent directories to handle absolute paths</span>
|
|
134
|
+
<span class="c1"># if it doesn't already exist in the list</span>
|
|
135
|
+
<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">dirname</span><span class="p">(</span><span class="n">plugin_path</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">template_paths</span><span class="p">:</span>
|
|
136
|
+
<span class="n">template_paths</span><span class="o">.</span><span class="n">append</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">plugin_path</span><span class="p">))</span>
|
|
137
|
+
<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">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">plugin_path</span><span class="p">))</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">template_paths</span><span class="p">:</span>
|
|
138
|
+
<span class="n">template_paths</span><span class="o">.</span><span class="n">append</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">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">plugin_path</span><span class="p">)))</span>
|
|
139
|
+
|
|
140
|
+
<span class="c1"># Add default templates directory last</span>
|
|
141
|
+
<span class="n">template_paths</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'templates'</span><span class="p">)</span>
|
|
142
|
+
|
|
143
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"**************************************************************************************"</span><span class="p">)</span>
|
|
144
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Loading templates from:"</span><span class="p">,</span> <span class="n">template_paths</span><span class="p">)</span>
|
|
145
|
+
|
|
146
|
+
<span class="c1"># Create environment with FirstMatchLoader</span>
|
|
147
|
+
<span class="n">loaders</span> <span class="o">=</span> <span class="p">[</span><span class="n">FileSystemLoader</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">template_paths</span><span class="p">]</span>
|
|
148
|
+
<span class="n">env</span> <span class="o">=</span> <span class="n">Environment</span><span class="p">(</span><span class="n">loader</span><span class="o">=</span><span class="n">FirstMatchLoader</span><span class="p">(</span><span class="n">loaders</span><span class="p">))</span>
|
|
149
|
+
|
|
150
|
+
<span class="k">return</span> <span class="n">env</span></div>
|
|
151
|
+
|
|
152
|
+
</pre></div>
|
|
153
|
+
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
<footer>
|
|
157
|
+
|
|
158
|
+
<hr/>
|
|
159
|
+
|
|
160
|
+
<div role="contentinfo">
|
|
161
|
+
<p>© Copyright 2025, Jason Livesay.</p>
|
|
162
|
+
</div>
|
|
163
|
+
|
|
164
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
165
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
166
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
</footer>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
</section>
|
|
173
|
+
</div>
|
|
174
|
+
<script>
|
|
175
|
+
jQuery(function () {
|
|
176
|
+
SphinxRtdTheme.Navigation.enable(true);
|
|
177
|
+
});
|
|
178
|
+
</script>
|
|
179
|
+
|
|
180
|
+
</body>
|
|
181
|
+
</html>
|