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,394 @@
|
|
|
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.coreplugins.l8n.test_middleware — 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.coreplugins.l8n.test_middleware</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.coreplugins.l8n.test_middleware</h1><div class="highlight"><pre>
|
|
69
|
+
<span></span><span class="ch">#!/usr/bin/env python3</span>
|
|
70
|
+
<span class="sd">"""</span>
|
|
71
|
+
<span class="sd">Test script for the l8n middleware functionality.</span>
|
|
72
|
+
|
|
73
|
+
<span class="sd">This script simulates FastAPI request objects to test the middleware.</span>
|
|
74
|
+
<span class="sd">"""</span>
|
|
75
|
+
|
|
76
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">asyncio</span>
|
|
77
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
78
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">unittest.mock</span><span class="w"> </span><span class="kn">import</span> <span class="n">Mock</span>
|
|
79
|
+
|
|
80
|
+
<span class="c1"># Mock FastAPI Request for testing</span>
|
|
81
|
+
<div class="viewcode-block" id="MockRequest">
|
|
82
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_middleware.MockRequest">[docs]</a>
|
|
83
|
+
<span class="k">class</span><span class="w"> </span><span class="nc">MockRequest</span><span class="p">:</span>
|
|
84
|
+
<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">path</span><span class="o">=</span><span class="s2">"/"</span><span class="p">,</span> <span class="n">query_params</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">cookies</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
85
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">()</span>
|
|
86
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="o">.</span><span class="n">path</span> <span class="o">=</span> <span class="n">path</span>
|
|
87
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">query_params</span> <span class="o">=</span> <span class="n">query_params</span> <span class="ow">or</span> <span class="p">{}</span>
|
|
88
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">cookies</span> <span class="o">=</span> <span class="n">cookies</span> <span class="ow">or</span> <span class="p">{}</span>
|
|
89
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">headers</span> <span class="o">=</span> <span class="n">headers</span> <span class="ow">or</span> <span class="p">{}</span>
|
|
90
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">()</span></div>
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
<span class="c1"># Mock Response for testing</span>
|
|
94
|
+
<div class="viewcode-block" id="MockResponse">
|
|
95
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_middleware.MockResponse">[docs]</a>
|
|
96
|
+
<span class="k">class</span><span class="w"> </span><span class="nc">MockResponse</span><span class="p">:</span>
|
|
97
|
+
<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>
|
|
98
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">cookies_set</span> <span class="o">=</span> <span class="p">{}</span>
|
|
99
|
+
|
|
100
|
+
<div class="viewcode-block" id="MockResponse.set_cookie">
|
|
101
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_middleware.MockResponse.set_cookie">[docs]</a>
|
|
102
|
+
<span class="k">def</span><span class="w"> </span><span class="nf">set_cookie</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">max_age</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">httponly</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">samesite</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
103
|
+
<span class="bp">self</span><span class="o">.</span><span class="n">cookies_set</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
|
104
|
+
<span class="s1">'value'</span><span class="p">:</span> <span class="n">value</span><span class="p">,</span>
|
|
105
|
+
<span class="s1">'max_age'</span><span class="p">:</span> <span class="n">max_age</span><span class="p">,</span>
|
|
106
|
+
<span class="s1">'httponly'</span><span class="p">:</span> <span class="n">httponly</span><span class="p">,</span>
|
|
107
|
+
<span class="s1">'samesite'</span><span class="p">:</span> <span class="n">samesite</span>
|
|
108
|
+
<span class="p">}</span></div>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
<span class="c1"># Import the middleware functions with sys.path manipulation</span>
|
|
113
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
|
|
114
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
|
|
115
|
+
<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="nb">str</span><span class="p">(</span><span class="n">Path</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span><span class="o">.</span><span class="n">parent</span><span class="p">))</span>
|
|
116
|
+
|
|
117
|
+
<span class="c1"># Now import with absolute imports</span>
|
|
118
|
+
<span class="kn">import</span><span class="w"> </span><span class="nn">middleware</span>
|
|
119
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">language_detection</span><span class="w"> </span><span class="kn">import</span> <span class="n">_parse_accept_language_header</span><span class="p">,</span> <span class="n">get_fallback_language</span>
|
|
120
|
+
|
|
121
|
+
<span class="c1"># Create aliases for easier use</span>
|
|
122
|
+
<span class="n">middleware_func</span> <span class="o">=</span> <span class="n">middleware</span><span class="o">.</span><span class="n">middleware</span>
|
|
123
|
+
<span class="n">detect_language_from_request</span> <span class="o">=</span> <span class="n">middleware</span><span class="o">.</span><span class="n">detect_language_from_request</span>
|
|
124
|
+
<span class="n">get_request_language</span> <span class="o">=</span> <span class="n">middleware</span><span class="o">.</span><span class="n">get_request_language</span>
|
|
125
|
+
|
|
126
|
+
<div class="viewcode-block" id="mock_call_next">
|
|
127
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_middleware.mock_call_next">[docs]</a>
|
|
128
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">mock_call_next</span><span class="p">(</span><span class="n">request</span><span class="p">):</span>
|
|
129
|
+
<span class="w"> </span><span class="sd">"""Mock the next handler in the middleware chain."""</span>
|
|
130
|
+
<span class="k">return</span> <span class="n">MockResponse</span><span class="p">()</span></div>
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
<div class="viewcode-block" id="test_language_detection">
|
|
134
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_middleware.test_language_detection">[docs]</a>
|
|
135
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">test_language_detection</span><span class="p">():</span>
|
|
136
|
+
<span class="w"> </span><span class="sd">"""Test language detection from various request sources."""</span>
|
|
137
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Testing Language Detection from Requests...</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
138
|
+
|
|
139
|
+
<span class="c1"># Test 1: URL parameter</span>
|
|
140
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"1. Testing URL parameter detection..."</span><span class="p">)</span>
|
|
141
|
+
<span class="n">request</span> <span class="o">=</span> <span class="n">MockRequest</span><span class="p">(</span>
|
|
142
|
+
<span class="n">path</span><span class="o">=</span><span class="s2">"/chat"</span><span class="p">,</span>
|
|
143
|
+
<span class="n">query_params</span><span class="o">=</span><span class="p">{</span><span class="s1">'lang'</span><span class="p">:</span> <span class="s1">'es'</span><span class="p">}</span>
|
|
144
|
+
<span class="p">)</span>
|
|
145
|
+
<span class="n">detected</span> <span class="o">=</span> <span class="n">detect_language_from_request</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
|
146
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" URL param 'lang=es' -> </span><span class="si">{</span><span class="n">detected</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
147
|
+
|
|
148
|
+
<span class="c1"># Test 2: Cookie value</span>
|
|
149
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">2. Testing cookie detection..."</span><span class="p">)</span>
|
|
150
|
+
<span class="n">request</span> <span class="o">=</span> <span class="n">MockRequest</span><span class="p">(</span>
|
|
151
|
+
<span class="n">path</span><span class="o">=</span><span class="s2">"/admin"</span><span class="p">,</span>
|
|
152
|
+
<span class="n">cookies</span><span class="o">=</span><span class="p">{</span><span class="s1">'mindroot_language'</span><span class="p">:</span> <span class="s1">'fr'</span><span class="p">}</span>
|
|
153
|
+
<span class="p">)</span>
|
|
154
|
+
<span class="n">detected</span> <span class="o">=</span> <span class="n">detect_language_from_request</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
|
155
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" Cookie 'mindroot_language=fr' -> </span><span class="si">{</span><span class="n">detected</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
156
|
+
|
|
157
|
+
<span class="c1"># Test 3: Accept-Language header</span>
|
|
158
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">3. Testing Accept-Language header..."</span><span class="p">)</span>
|
|
159
|
+
<span class="n">test_headers</span> <span class="o">=</span> <span class="p">[</span>
|
|
160
|
+
<span class="s1">'en-US,en;q=0.9,es;q=0.8'</span><span class="p">,</span>
|
|
161
|
+
<span class="s1">'es-ES,es;q=0.9,en;q=0.8'</span><span class="p">,</span>
|
|
162
|
+
<span class="s1">'fr-FR,fr;q=0.9'</span><span class="p">,</span>
|
|
163
|
+
<span class="s1">'de-DE,de;q=0.8,en;q=0.5'</span><span class="p">,</span>
|
|
164
|
+
<span class="s1">'zh-CN,zh;q=0.9,en;q=0.1'</span>
|
|
165
|
+
<span class="p">]</span>
|
|
166
|
+
|
|
167
|
+
<span class="k">for</span> <span class="n">header</span> <span class="ow">in</span> <span class="n">test_headers</span><span class="p">:</span>
|
|
168
|
+
<span class="n">request</span> <span class="o">=</span> <span class="n">MockRequest</span><span class="p">(</span>
|
|
169
|
+
<span class="n">path</span><span class="o">=</span><span class="s2">"/test"</span><span class="p">,</span>
|
|
170
|
+
<span class="n">headers</span><span class="o">=</span><span class="p">{</span><span class="s1">'accept-language'</span><span class="p">:</span> <span class="n">header</span><span class="p">}</span>
|
|
171
|
+
<span class="p">)</span>
|
|
172
|
+
<span class="n">detected</span> <span class="o">=</span> <span class="n">detect_language_from_request</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
|
173
|
+
<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">header</span><span class="si">}</span><span class="s2">' -> </span><span class="si">{</span><span class="n">detected</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
174
|
+
|
|
175
|
+
<span class="c1"># Test 4: Environment variable</span>
|
|
176
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">4. Testing environment variable..."</span><span class="p">)</span>
|
|
177
|
+
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">'MINDROOT_LANGUAGE'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'de'</span>
|
|
178
|
+
<span class="n">request</span> <span class="o">=</span> <span class="n">MockRequest</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">"/test"</span><span class="p">)</span>
|
|
179
|
+
<span class="n">detected</span> <span class="o">=</span> <span class="n">detect_language_from_request</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
|
180
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" MINDROOT_LANGUAGE=de -> </span><span class="si">{</span><span class="n">detected</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
181
|
+
|
|
182
|
+
<span class="c1"># Test 5: Priority order (URL param should override everything)</span>
|
|
183
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">5. Testing priority order..."</span><span class="p">)</span>
|
|
184
|
+
<span class="n">request</span> <span class="o">=</span> <span class="n">MockRequest</span><span class="p">(</span>
|
|
185
|
+
<span class="n">path</span><span class="o">=</span><span class="s2">"/test"</span><span class="p">,</span>
|
|
186
|
+
<span class="n">query_params</span><span class="o">=</span><span class="p">{</span><span class="s1">'lang'</span><span class="p">:</span> <span class="s1">'es'</span><span class="p">},</span>
|
|
187
|
+
<span class="n">cookies</span><span class="o">=</span><span class="p">{</span><span class="s1">'mindroot_language'</span><span class="p">:</span> <span class="s1">'fr'</span><span class="p">},</span>
|
|
188
|
+
<span class="n">headers</span><span class="o">=</span><span class="p">{</span><span class="s1">'accept-language'</span><span class="p">:</span> <span class="s1">'de-DE,de;q=0.9'</span><span class="p">}</span>
|
|
189
|
+
<span class="p">)</span>
|
|
190
|
+
<span class="n">detected</span> <span class="o">=</span> <span class="n">detect_language_from_request</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
|
191
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" URL=es, Cookie=fr, Header=de -> </span><span class="si">{</span><span class="n">detected</span><span class="si">}</span><span class="s2"> (should be es)"</span><span class="p">)</span>
|
|
192
|
+
|
|
193
|
+
<span class="c1"># Clean up</span>
|
|
194
|
+
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s1">'MINDROOT_LANGUAGE'</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
195
|
+
|
|
196
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">✅ Language detection tests completed!"</span><span class="p">)</span></div>
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
<div class="viewcode-block" id="test_middleware_functionality">
|
|
200
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_middleware.test_middleware_functionality">[docs]</a>
|
|
201
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">test_middleware_functionality</span><span class="p">():</span>
|
|
202
|
+
<span class="w"> </span><span class="sd">"""Test the complete middleware functionality."""</span>
|
|
203
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Testing Middleware Functionality...</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
204
|
+
|
|
205
|
+
<span class="c1"># Test 1: Basic middleware flow</span>
|
|
206
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"1. Testing basic middleware flow..."</span><span class="p">)</span>
|
|
207
|
+
<span class="n">request</span> <span class="o">=</span> <span class="n">MockRequest</span><span class="p">(</span>
|
|
208
|
+
<span class="n">path</span><span class="o">=</span><span class="s2">"/chat"</span><span class="p">,</span>
|
|
209
|
+
<span class="n">query_params</span><span class="o">=</span><span class="p">{</span><span class="s1">'lang'</span><span class="p">:</span> <span class="s1">'es'</span><span class="p">},</span>
|
|
210
|
+
<span class="n">headers</span><span class="o">=</span><span class="p">{</span><span class="s1">'accept-language'</span><span class="p">:</span> <span class="s1">'en-US,en;q=0.9'</span><span class="p">}</span>
|
|
211
|
+
<span class="p">)</span>
|
|
212
|
+
|
|
213
|
+
<span class="n">response</span> <span class="o">=</span> <span class="k">await</span> <span class="n">middleware_func</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">mock_call_next</span><span class="p">)</span>
|
|
214
|
+
|
|
215
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" Request language set to: </span><span class="si">{</span><span class="n">request</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">language</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
216
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" Global language: </span><span class="si">{</span><span class="n">get_request_language</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
217
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" Cookie set: </span><span class="si">{</span><span class="s1">'mindroot_language'</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">response</span><span class="o">.</span><span class="n">cookies_set</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
218
|
+
|
|
219
|
+
<span class="k">if</span> <span class="s1">'mindroot_language'</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">cookies_set</span><span class="p">:</span>
|
|
220
|
+
<span class="n">cookie_info</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">cookies_set</span><span class="p">[</span><span class="s1">'mindroot_language'</span><span class="p">]</span>
|
|
221
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" Cookie value: </span><span class="si">{</span><span class="n">cookie_info</span><span class="p">[</span><span class="s1">'value'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
222
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" Cookie max_age: </span><span class="si">{</span><span class="n">cookie_info</span><span class="p">[</span><span class="s1">'max_age'</span><span class="p">]</span><span class="si">}</span><span class="s2"> seconds"</span><span class="p">)</span>
|
|
223
|
+
|
|
224
|
+
<span class="c1"># Test 2: Different language sources</span>
|
|
225
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">2. Testing different language sources..."</span><span class="p">)</span>
|
|
226
|
+
|
|
227
|
+
<span class="n">test_cases</span> <span class="o">=</span> <span class="p">[</span>
|
|
228
|
+
<span class="p">{</span>
|
|
229
|
+
<span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Accept-Language only'</span><span class="p">,</span>
|
|
230
|
+
<span class="s1">'request'</span><span class="p">:</span> <span class="n">MockRequest</span><span class="p">(</span>
|
|
231
|
+
<span class="n">path</span><span class="o">=</span><span class="s2">"/admin"</span><span class="p">,</span>
|
|
232
|
+
<span class="n">headers</span><span class="o">=</span><span class="p">{</span><span class="s1">'accept-language'</span><span class="p">:</span> <span class="s1">'fr-FR,fr;q=0.9,en;q=0.8'</span><span class="p">}</span>
|
|
233
|
+
<span class="p">),</span>
|
|
234
|
+
<span class="s1">'expected'</span><span class="p">:</span> <span class="s1">'fr'</span>
|
|
235
|
+
<span class="p">},</span>
|
|
236
|
+
<span class="p">{</span>
|
|
237
|
+
<span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Cookie preference'</span><span class="p">,</span>
|
|
238
|
+
<span class="s1">'request'</span><span class="p">:</span> <span class="n">MockRequest</span><span class="p">(</span>
|
|
239
|
+
<span class="n">path</span><span class="o">=</span><span class="s2">"/settings"</span><span class="p">,</span>
|
|
240
|
+
<span class="n">cookies</span><span class="o">=</span><span class="p">{</span><span class="s1">'mindroot_language'</span><span class="p">:</span> <span class="s1">'de'</span><span class="p">}</span>
|
|
241
|
+
<span class="p">),</span>
|
|
242
|
+
<span class="s1">'expected'</span><span class="p">:</span> <span class="s1">'de'</span>
|
|
243
|
+
<span class="p">},</span>
|
|
244
|
+
<span class="p">{</span>
|
|
245
|
+
<span class="s1">'name'</span><span class="p">:</span> <span class="s1">'URL override'</span><span class="p">,</span>
|
|
246
|
+
<span class="s1">'request'</span><span class="p">:</span> <span class="n">MockRequest</span><span class="p">(</span>
|
|
247
|
+
<span class="n">path</span><span class="o">=</span><span class="s2">"/dashboard"</span><span class="p">,</span>
|
|
248
|
+
<span class="n">query_params</span><span class="o">=</span><span class="p">{</span><span class="s1">'lang'</span><span class="p">:</span> <span class="s1">'es'</span><span class="p">},</span>
|
|
249
|
+
<span class="n">cookies</span><span class="o">=</span><span class="p">{</span><span class="s1">'mindroot_language'</span><span class="p">:</span> <span class="s1">'fr'</span><span class="p">}</span>
|
|
250
|
+
<span class="p">),</span>
|
|
251
|
+
<span class="s1">'expected'</span><span class="p">:</span> <span class="s1">'es'</span>
|
|
252
|
+
<span class="p">}</span>
|
|
253
|
+
<span class="p">]</span>
|
|
254
|
+
|
|
255
|
+
<span class="k">for</span> <span class="n">case</span> <span class="ow">in</span> <span class="n">test_cases</span><span class="p">:</span>
|
|
256
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> Testing: </span><span class="si">{</span><span class="n">case</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
257
|
+
<span class="n">response</span> <span class="o">=</span> <span class="k">await</span> <span class="n">middleware_func</span><span class="p">(</span><span class="n">case</span><span class="p">[</span><span class="s1">'request'</span><span class="p">],</span> <span class="n">mock_call_next</span><span class="p">)</span>
|
|
258
|
+
<span class="n">actual</span> <span class="o">=</span> <span class="n">case</span><span class="p">[</span><span class="s1">'request'</span><span class="p">]</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">language</span>
|
|
259
|
+
<span class="n">expected</span> <span class="o">=</span> <span class="n">case</span><span class="p">[</span><span class="s1">'expected'</span><span class="p">]</span>
|
|
260
|
+
<span class="n">status</span> <span class="o">=</span> <span class="s2">"✅"</span> <span class="k">if</span> <span class="n">actual</span> <span class="o">==</span> <span class="n">expected</span> <span class="k">else</span> <span class="s2">"❌"</span>
|
|
261
|
+
<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">status</span><span class="si">}</span><span class="s2"> Expected: </span><span class="si">{</span><span class="n">expected</span><span class="si">}</span><span class="s2">, Got: </span><span class="si">{</span><span class="n">actual</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
262
|
+
|
|
263
|
+
<span class="c1"># Test 3: Error handling</span>
|
|
264
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">3. Testing error handling..."</span><span class="p">)</span>
|
|
265
|
+
|
|
266
|
+
<span class="c1"># Create a request that might cause issues</span>
|
|
267
|
+
<span class="n">request</span> <span class="o">=</span> <span class="n">MockRequest</span><span class="p">(</span>
|
|
268
|
+
<span class="n">path</span><span class="o">=</span><span class="s2">"/test"</span><span class="p">,</span>
|
|
269
|
+
<span class="n">headers</span><span class="o">=</span><span class="p">{</span><span class="s1">'accept-language'</span><span class="p">:</span> <span class="s1">'invalid-header-format'</span><span class="p">}</span>
|
|
270
|
+
<span class="p">)</span>
|
|
271
|
+
|
|
272
|
+
<span class="k">try</span><span class="p">:</span>
|
|
273
|
+
<span class="n">response</span> <span class="o">=</span> <span class="k">await</span> <span class="n">middleware_func</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">mock_call_next</span><span class="p">)</span>
|
|
274
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" ✅ Error handled gracefully, language: </span><span class="si">{</span><span class="n">request</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">language</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
275
|
+
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
276
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" ❌ Unexpected error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
277
|
+
|
|
278
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">✅ Middleware functionality tests completed!"</span><span class="p">)</span></div>
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
<div class="viewcode-block" id="test_integration_with_templates">
|
|
282
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_middleware.test_integration_with_templates">[docs]</a>
|
|
283
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">test_integration_with_templates</span><span class="p">():</span>
|
|
284
|
+
<span class="w"> </span><span class="sd">"""Test integration with the template system."""</span>
|
|
285
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Testing Integration with Template System...</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
286
|
+
|
|
287
|
+
<span class="c1"># Import template-related functions</span>
|
|
288
|
+
<span class="kn">from</span><span class="w"> </span><span class="nn">test_l8n_standalone</span><span class="w"> </span><span class="kn">import</span> <span class="n">set_translations</span><span class="p">,</span> <span class="n">replace_placeholders</span>
|
|
289
|
+
|
|
290
|
+
<span class="c1"># Set up some translations</span>
|
|
291
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"1. Setting up translations..."</span><span class="p">)</span>
|
|
292
|
+
<span class="k">await</span> <span class="n">set_translations</span><span class="p">(</span><span class="s1">'en'</span><span class="p">,</span> <span class="p">{</span>
|
|
293
|
+
<span class="s1">'page_title'</span><span class="p">:</span> <span class="s1">'Welcome to MindRoot'</span><span class="p">,</span>
|
|
294
|
+
<span class="s1">'nav_home'</span><span class="p">:</span> <span class="s1">'Home'</span><span class="p">,</span>
|
|
295
|
+
<span class="s1">'nav_settings'</span><span class="p">:</span> <span class="s1">'Settings'</span>
|
|
296
|
+
<span class="p">})</span>
|
|
297
|
+
|
|
298
|
+
<span class="k">await</span> <span class="n">set_translations</span><span class="p">(</span><span class="s1">'es'</span><span class="p">,</span> <span class="p">{</span>
|
|
299
|
+
<span class="s1">'page_title'</span><span class="p">:</span> <span class="s1">'Bienvenido a MindRoot'</span><span class="p">,</span>
|
|
300
|
+
<span class="s1">'nav_home'</span><span class="p">:</span> <span class="s1">'Inicio'</span><span class="p">,</span>
|
|
301
|
+
<span class="s1">'nav_settings'</span><span class="p">:</span> <span class="s1">'Configuración'</span>
|
|
302
|
+
<span class="p">})</span>
|
|
303
|
+
|
|
304
|
+
<span class="k">await</span> <span class="n">set_translations</span><span class="p">(</span><span class="s1">'fr'</span><span class="p">,</span> <span class="p">{</span>
|
|
305
|
+
<span class="s1">'page_title'</span><span class="p">:</span> <span class="s1">'Bienvenue à MindRoot'</span><span class="p">,</span>
|
|
306
|
+
<span class="s1">'nav_home'</span><span class="p">:</span> <span class="s1">'Accueil'</span><span class="p">,</span>
|
|
307
|
+
<span class="s1">'nav_settings'</span><span class="p">:</span> <span class="s1">'Paramètres'</span>
|
|
308
|
+
<span class="p">})</span>
|
|
309
|
+
|
|
310
|
+
<span class="c1"># Template content</span>
|
|
311
|
+
<span class="n">template</span> <span class="o">=</span> <span class="s2">"<title>__TRANSLATE_page_title__</title><nav><a>__TRANSLATE_nav_home__</a><a>__TRANSLATE_nav_settings__</a></nav>"</span>
|
|
312
|
+
|
|
313
|
+
<span class="c1"># Test different language requests</span>
|
|
314
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">2. Testing template translation with different requests..."</span><span class="p">)</span>
|
|
315
|
+
|
|
316
|
+
<span class="n">test_requests</span> <span class="o">=</span> <span class="p">[</span>
|
|
317
|
+
<span class="p">(</span><span class="s1">'English (default)'</span><span class="p">,</span> <span class="n">MockRequest</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">"/"</span><span class="p">)),</span>
|
|
318
|
+
<span class="p">(</span><span class="s1">'Spanish (URL param)'</span><span class="p">,</span> <span class="n">MockRequest</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">"/"</span><span class="p">,</span> <span class="n">query_params</span><span class="o">=</span><span class="p">{</span><span class="s1">'lang'</span><span class="p">:</span> <span class="s1">'es'</span><span class="p">})),</span>
|
|
319
|
+
<span class="p">(</span><span class="s1">'French (cookie)'</span><span class="p">,</span> <span class="n">MockRequest</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">"/"</span><span class="p">,</span> <span class="n">cookies</span><span class="o">=</span><span class="p">{</span><span class="s1">'mindroot_language'</span><span class="p">:</span> <span class="s1">'fr'</span><span class="p">})),</span>
|
|
320
|
+
<span class="p">(</span><span class="s1">'German (header)'</span><span class="p">,</span> <span class="n">MockRequest</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">"/"</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="p">{</span><span class="s1">'accept-language'</span><span class="p">:</span> <span class="s1">'de-DE,de;q=0.9,en;q=0.8'</span><span class="p">}))</span>
|
|
321
|
+
<span class="p">]</span>
|
|
322
|
+
|
|
323
|
+
<span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">request</span> <span class="ow">in</span> <span class="n">test_requests</span><span class="p">:</span>
|
|
324
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> Testing: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
325
|
+
|
|
326
|
+
<span class="c1"># Process request through middleware</span>
|
|
327
|
+
<span class="k">await</span> <span class="n">middleware_func</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">mock_call_next</span><span class="p">)</span>
|
|
328
|
+
|
|
329
|
+
<span class="c1"># Get the detected language</span>
|
|
330
|
+
<span class="n">detected_lang</span> <span class="o">=</span> <span class="n">get_request_language</span><span class="p">()</span>
|
|
331
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" Detected language: </span><span class="si">{</span><span class="n">detected_lang</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
332
|
+
|
|
333
|
+
<span class="c1"># Translate the template</span>
|
|
334
|
+
<span class="n">translated</span> <span class="o">=</span> <span class="n">replace_placeholders</span><span class="p">(</span><span class="n">template</span><span class="p">,</span> <span class="n">detected_lang</span><span class="p">)</span>
|
|
335
|
+
|
|
336
|
+
<span class="c1"># Extract title for display</span>
|
|
337
|
+
<span class="n">title_start</span> <span class="o">=</span> <span class="n">translated</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'<title>'</span><span class="p">)</span> <span class="o">+</span> <span class="mi">7</span>
|
|
338
|
+
<span class="n">title_end</span> <span class="o">=</span> <span class="n">translated</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'</title>'</span><span class="p">)</span>
|
|
339
|
+
<span class="n">title</span> <span class="o">=</span> <span class="n">translated</span><span class="p">[</span><span class="n">title_start</span><span class="p">:</span><span class="n">title_end</span><span class="p">]</span>
|
|
340
|
+
|
|
341
|
+
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" Translated title: </span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
342
|
+
|
|
343
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">✅ Template integration tests completed!"</span><span class="p">)</span></div>
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
<div class="viewcode-block" id="main">
|
|
347
|
+
<a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_middleware.main">[docs]</a>
|
|
348
|
+
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">():</span>
|
|
349
|
+
<span class="w"> </span><span class="sd">"""Run all middleware tests."""</span>
|
|
350
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"="</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span>
|
|
351
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"MindRoot l8n Plugin - Middleware Testing Suite"</span><span class="p">)</span>
|
|
352
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"="</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span>
|
|
353
|
+
|
|
354
|
+
<span class="k">await</span> <span class="n">test_language_detection</span><span class="p">()</span>
|
|
355
|
+
<span class="k">await</span> <span class="n">test_middleware_functionality</span><span class="p">()</span>
|
|
356
|
+
<span class="k">await</span> <span class="n">test_integration_with_templates</span><span class="p">()</span>
|
|
357
|
+
|
|
358
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">"="</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span>
|
|
359
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"✅ All middleware tests completed successfully!"</span><span class="p">)</span>
|
|
360
|
+
<span class="nb">print</span><span class="p">(</span><span class="s2">"="</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span></div>
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
|
364
|
+
<span class="n">asyncio</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">main</span><span class="p">())</span>
|
|
365
|
+
</pre></div>
|
|
366
|
+
|
|
367
|
+
</div>
|
|
368
|
+
</div>
|
|
369
|
+
<footer>
|
|
370
|
+
|
|
371
|
+
<hr/>
|
|
372
|
+
|
|
373
|
+
<div role="contentinfo">
|
|
374
|
+
<p>© Copyright 2025, Jason Livesay.</p>
|
|
375
|
+
</div>
|
|
376
|
+
|
|
377
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
378
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
379
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
</footer>
|
|
383
|
+
</div>
|
|
384
|
+
</div>
|
|
385
|
+
</section>
|
|
386
|
+
</div>
|
|
387
|
+
<script>
|
|
388
|
+
jQuery(function () {
|
|
389
|
+
SphinxRtdTheme.Navigation.enable(true);
|
|
390
|
+
});
|
|
391
|
+
</script>
|
|
392
|
+
|
|
393
|
+
</body>
|
|
394
|
+
</html>
|