moai-adk 0.35.1__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 moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +10 -0
- moai_adk/__main__.py +199 -0
- moai_adk/cli/__init__.py +6 -0
- moai_adk/cli/commands/__init__.py +17 -0
- moai_adk/cli/commands/analyze.py +116 -0
- moai_adk/cli/commands/doctor.py +272 -0
- moai_adk/cli/commands/init.py +372 -0
- moai_adk/cli/commands/language.py +248 -0
- moai_adk/cli/commands/status.py +104 -0
- moai_adk/cli/commands/update.py +2686 -0
- moai_adk/cli/main.py +13 -0
- moai_adk/cli/prompts/__init__.py +5 -0
- moai_adk/cli/prompts/init_prompts.py +219 -0
- moai_adk/cli/spec_status.py +263 -0
- moai_adk/cli/ui/__init__.py +44 -0
- moai_adk/cli/ui/progress.py +422 -0
- moai_adk/cli/ui/prompts.py +389 -0
- moai_adk/cli/ui/theme.py +129 -0
- moai_adk/cli/worktree/__init__.py +27 -0
- moai_adk/cli/worktree/__main__.py +31 -0
- moai_adk/cli/worktree/cli.py +683 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +493 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +422 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/__init__.py +1 -0
- moai_adk/core/analysis/__init__.py +9 -0
- moai_adk/core/analysis/session_analyzer.py +400 -0
- moai_adk/core/claude_integration.py +393 -0
- moai_adk/core/command_helpers.py +270 -0
- moai_adk/core/comprehensive_monitoring_system.py +1183 -0
- moai_adk/core/config/__init__.py +19 -0
- moai_adk/core/config/auto_spec_config.py +340 -0
- moai_adk/core/config/migration.py +244 -0
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +273 -0
- moai_adk/core/diagnostics/__init__.py +19 -0
- moai_adk/core/diagnostics/slash_commands.py +159 -0
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +1902 -0
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +31 -0
- moai_adk/core/git/branch.py +25 -0
- moai_adk/core/git/branch_manager.py +129 -0
- moai_adk/core/git/checkpoint.py +134 -0
- moai_adk/core/git/commit.py +67 -0
- moai_adk/core/git/conflict_detector.py +413 -0
- moai_adk/core/git/event_detector.py +79 -0
- moai_adk/core/git/manager.py +216 -0
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/__init__.py +22 -0
- moai_adk/core/integration/engine.py +157 -0
- moai_adk/core/integration/integration_tester.py +226 -0
- moai_adk/core/integration/models.py +88 -0
- moai_adk/core/integration/utils.py +211 -0
- moai_adk/core/issue_creator.py +305 -0
- moai_adk/core/jit_context_loader.py +956 -0
- moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
- moai_adk/core/language_config.py +202 -0
- moai_adk/core/language_config_resolver.py +572 -0
- moai_adk/core/language_validator.py +543 -0
- moai_adk/core/mcp/setup.py +116 -0
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +605 -0
- moai_adk/core/migration/__init__.py +18 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
- moai_adk/core/migration/backup_manager.py +277 -0
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +209 -0
- moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
- moai_adk/core/migration/selective_restorer.py +470 -0
- moai_adk/core/migration/template_utils.py +74 -0
- moai_adk/core/migration/user_selection_ui.py +338 -0
- moai_adk/core/migration/version_detector.py +139 -0
- moai_adk/core/migration/version_migrator.py +228 -0
- moai_adk/core/performance/__init__.py +6 -0
- moai_adk/core/performance/cache_system.py +316 -0
- moai_adk/core/performance/parallel_processor.py +116 -0
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/__init__.py +1 -0
- moai_adk/core/project/backup_utils.py +70 -0
- moai_adk/core/project/checker.py +300 -0
- moai_adk/core/project/detector.py +293 -0
- moai_adk/core/project/initializer.py +387 -0
- moai_adk/core/project/phase_executor.py +716 -0
- moai_adk/core/project/validator.py +139 -0
- moai_adk/core/quality/__init__.py +6 -0
- moai_adk/core/quality/trust_checker.py +377 -0
- moai_adk/core/quality/validators/__init__.py +6 -0
- moai_adk/core/quality/validators/base_validator.py +19 -0
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +918 -0
- moai_adk/core/session_manager.py +651 -0
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec/confidence_scoring.py +680 -0
- moai_adk/core/spec/ears_template_engine.py +1247 -0
- moai_adk/core/spec/quality_validator.py +687 -0
- moai_adk/core/spec_status_manager.py +478 -0
- moai_adk/core/template/__init__.py +7 -0
- moai_adk/core/template/backup.py +174 -0
- moai_adk/core/template/config.py +191 -0
- moai_adk/core/template/languages.py +43 -0
- moai_adk/core/template/merger.py +233 -0
- moai_adk/core/template/processor.py +1200 -0
- moai_adk/core/template_engine.py +310 -0
- moai_adk/core/template_variable_synchronizer.py +417 -0
- moai_adk/core/unified_permission_manager.py +745 -0
- moai_adk/core/user_behavior_analytics.py +851 -0
- moai_adk/core/version_sync.py +429 -0
- moai_adk/foundation/__init__.py +56 -0
- moai_adk/foundation/backend.py +1027 -0
- moai_adk/foundation/database.py +1115 -0
- moai_adk/foundation/devops.py +1585 -0
- moai_adk/foundation/ears.py +431 -0
- moai_adk/foundation/frontend.py +870 -0
- moai_adk/foundation/git/commit_templates.py +557 -0
- moai_adk/foundation/git.py +376 -0
- moai_adk/foundation/langs.py +484 -0
- moai_adk/foundation/ml_ops.py +1162 -0
- moai_adk/foundation/testing.py +1524 -0
- moai_adk/foundation/trust/trust_principles.py +676 -0
- moai_adk/foundation/trust/validation_checklist.py +1573 -0
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1084 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/statusline/__init__.py +38 -0
- moai_adk/statusline/alfred_detector.py +105 -0
- moai_adk/statusline/config.py +376 -0
- moai_adk/statusline/enhanced_output_style_detector.py +372 -0
- moai_adk/statusline/git_collector.py +190 -0
- moai_adk/statusline/main.py +322 -0
- moai_adk/statusline/metrics_tracker.py +78 -0
- moai_adk/statusline/renderer.py +343 -0
- moai_adk/statusline/update_checker.py +129 -0
- moai_adk/statusline/version_reader.py +741 -0
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +714 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +637 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
- moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +513 -0
- moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +1060 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1386 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
- moai_adk/templates/.claude/hooks/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1083 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
- moai_adk/templates/.claude/settings.json +172 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +320 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +323 -0
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
- moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
- moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +649 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +478 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +376 -0
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +385 -0
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +382 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +644 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +481 -0
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +579 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +687 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +372 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +368 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +300 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +474 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/migration.md +341 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +463 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/validation.md +373 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/SKILL.md +275 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/akamai-integration.md +215 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-log-events.md +225 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/customize-mfa.md +178 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mdl-verification.md +211 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/ropg-flow-mfa.md +217 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/state-parameters.md +178 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/tenant-access-control.md +180 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
- moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
- moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +128 -0
- moai_adk/templates/.git-hooks/pre-push +365 -0
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +337 -0
- moai_adk/templates/.gitignore +222 -0
- moai_adk/templates/.mcp.json +13 -0
- moai_adk/templates/.moai/config/config.yaml +58 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +182 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
- moai_adk/templates/.moai/config/sections/language.yaml +11 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
- moai_adk/templates/.moai/config/sections/system.yaml +24 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +642 -0
- moai_adk/utils/__init__.py +30 -0
- moai_adk/utils/banner.py +38 -0
- moai_adk/utils/common.py +294 -0
- moai_adk/utils/link_validator.py +241 -0
- moai_adk/utils/logger.py +147 -0
- moai_adk/utils/safe_file_reader.py +206 -0
- moai_adk/utils/timeout.py +160 -0
- moai_adk/utils/toon_utils.py +256 -0
- moai_adk/version.py +22 -0
- moai_adk-0.35.1.dist-info/METADATA +3018 -0
- moai_adk-0.35.1.dist-info/RECORD +502 -0
- moai_adk-0.35.1.dist-info/WHEEL +4 -0
- moai_adk-0.35.1.dist-info/entry_points.txt +3 -0
- moai_adk-0.35.1.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-lang-python
|
|
3
|
+
description: Python 3.13+ development specialist covering FastAPI, Django, async patterns, data science, testing with pytest, and modern Python features. Use when developing Python APIs, web applications, data pipelines, or writing tests.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
updated: 2025-12-07
|
|
6
|
+
status: active
|
|
7
|
+
allowed-tools: Read, Grep, Glob, Bash, mcp__context7__resolve-library-id, mcp__context7__get-library-docs
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Quick Reference (30 seconds)
|
|
11
|
+
|
|
12
|
+
Python 3.13+ Development Specialist - FastAPI, Django, async patterns, pytest, and modern Python features.
|
|
13
|
+
|
|
14
|
+
Auto-Triggers: `.py` files, `pyproject.toml`, `requirements.txt`, `pytest.ini`, FastAPI/Django discussions
|
|
15
|
+
|
|
16
|
+
Core Capabilities:
|
|
17
|
+
- Python 3.13 Features: JIT compiler (PEP 744), GIL-free mode (PEP 703), pattern matching
|
|
18
|
+
- Web Frameworks: FastAPI 0.115+, Django 5.2 LTS
|
|
19
|
+
- Data Validation: Pydantic v2.9 with model_validate patterns
|
|
20
|
+
- ORM: SQLAlchemy 2.0 async patterns
|
|
21
|
+
- Testing: pytest with fixtures, async testing, parametrize
|
|
22
|
+
- Package Management: poetry, uv, pip with pyproject.toml
|
|
23
|
+
- Type Hints: Protocol, TypeVar, ParamSpec, modern typing patterns
|
|
24
|
+
- Async: asyncio, async generators, task groups
|
|
25
|
+
- Data Science: numpy, pandas, polars basics
|
|
26
|
+
|
|
27
|
+
### Quick Patterns
|
|
28
|
+
|
|
29
|
+
FastAPI Endpoint:
|
|
30
|
+
```python
|
|
31
|
+
from fastapi import FastAPI, Depends
|
|
32
|
+
from pydantic import BaseModel
|
|
33
|
+
|
|
34
|
+
app = FastAPI()
|
|
35
|
+
|
|
36
|
+
class UserCreate(BaseModel):
|
|
37
|
+
name: str
|
|
38
|
+
email: str
|
|
39
|
+
|
|
40
|
+
@app.post("/users/")
|
|
41
|
+
async def create_user(user: UserCreate) -> User:
|
|
42
|
+
return await UserService.create(user)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Pydantic v2.9 Validation:
|
|
46
|
+
```python
|
|
47
|
+
from pydantic import BaseModel, ConfigDict
|
|
48
|
+
|
|
49
|
+
class User(BaseModel):
|
|
50
|
+
model_config = ConfigDict(from_attributes=True, str_strip_whitespace=True)
|
|
51
|
+
|
|
52
|
+
id: int
|
|
53
|
+
name: str
|
|
54
|
+
email: str
|
|
55
|
+
|
|
56
|
+
user = User.model_validate(orm_obj) # from ORM object
|
|
57
|
+
user = User.model_validate_json(json_data) # from JSON
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
pytest Async Test:
|
|
61
|
+
```python
|
|
62
|
+
import pytest
|
|
63
|
+
|
|
64
|
+
@pytest.mark.asyncio
|
|
65
|
+
async def test_create_user(async_client):
|
|
66
|
+
response = await async_client.post("/users/", json={"name": "Test"})
|
|
67
|
+
assert response.status_code == 201
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Implementation Guide (5 minutes)
|
|
73
|
+
|
|
74
|
+
### Python 3.13 New Features
|
|
75
|
+
|
|
76
|
+
JIT Compiler (PEP 744):
|
|
77
|
+
- Experimental feature, disabled by default
|
|
78
|
+
- Enable: `PYTHON_JIT=1` environment variable
|
|
79
|
+
- Build option: `--enable-experimental-jit`
|
|
80
|
+
- Provides performance improvements for CPU-bound code
|
|
81
|
+
- Copy-and-patch JIT that translates specialized bytecode to machine code
|
|
82
|
+
|
|
83
|
+
GIL-Free Mode (PEP 703):
|
|
84
|
+
- Experimental free-threaded build (python3.13t)
|
|
85
|
+
- Allows true parallel thread execution
|
|
86
|
+
- Available in official Windows/macOS installers
|
|
87
|
+
- Best for: CPU-intensive multi-threaded applications
|
|
88
|
+
- Not recommended for production yet
|
|
89
|
+
|
|
90
|
+
Pattern Matching (match/case):
|
|
91
|
+
```python
|
|
92
|
+
def process_response(response: dict) -> str:
|
|
93
|
+
match response:
|
|
94
|
+
case {"status": "ok", "data": data}:
|
|
95
|
+
return f"Success: {data}"
|
|
96
|
+
case {"status": "error", "message": msg}:
|
|
97
|
+
return f"Error: {msg}"
|
|
98
|
+
case {"status": status} if status in ("pending", "processing"):
|
|
99
|
+
return "In progress..."
|
|
100
|
+
case _:
|
|
101
|
+
return "Unknown response"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### FastAPI 0.115+ Patterns
|
|
105
|
+
|
|
106
|
+
Async Dependency Injection:
|
|
107
|
+
```python
|
|
108
|
+
from fastapi import FastAPI, Depends
|
|
109
|
+
from sqlalchemy.ext.asyncio import AsyncSession
|
|
110
|
+
from contextlib import asynccontextmanager
|
|
111
|
+
|
|
112
|
+
@asynccontextmanager
|
|
113
|
+
async def lifespan(app: FastAPI):
|
|
114
|
+
# Startup
|
|
115
|
+
await init_db()
|
|
116
|
+
yield
|
|
117
|
+
# Shutdown
|
|
118
|
+
await cleanup()
|
|
119
|
+
|
|
120
|
+
app = FastAPI(lifespan=lifespan)
|
|
121
|
+
|
|
122
|
+
async def get_db() -> AsyncGenerator[AsyncSession, None]:
|
|
123
|
+
async with async_session() as session:
|
|
124
|
+
yield session
|
|
125
|
+
|
|
126
|
+
@app.get("/users/{user_id}")
|
|
127
|
+
async def get_user(
|
|
128
|
+
user_id: int,
|
|
129
|
+
db: AsyncSession = Depends(get_db)
|
|
130
|
+
) -> UserResponse:
|
|
131
|
+
user = await get_user_by_id(db, user_id)
|
|
132
|
+
return UserResponse.model_validate(user)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Class-Based Dependencies:
|
|
136
|
+
```python
|
|
137
|
+
from fastapi import Depends
|
|
138
|
+
|
|
139
|
+
class Paginator:
|
|
140
|
+
def __init__(self, page: int = 1, size: int = 20):
|
|
141
|
+
self.page = max(1, page)
|
|
142
|
+
self.size = min(100, max(1, size))
|
|
143
|
+
self.offset = (self.page - 1) * self.size
|
|
144
|
+
|
|
145
|
+
@app.get("/items/")
|
|
146
|
+
async def list_items(pagination: Paginator = Depends()) -> list[Item]:
|
|
147
|
+
return await Item.get_page(pagination.offset, pagination.size)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Django 5.2 LTS Features
|
|
151
|
+
|
|
152
|
+
Composite Primary Keys:
|
|
153
|
+
```python
|
|
154
|
+
from django.db import models
|
|
155
|
+
|
|
156
|
+
class OrderItem(models.Model):
|
|
157
|
+
order = models.ForeignKey(Order, on_delete=models.CASCADE)
|
|
158
|
+
product = models.ForeignKey(Product, on_delete=models.CASCADE)
|
|
159
|
+
quantity = models.IntegerField()
|
|
160
|
+
|
|
161
|
+
class Meta:
|
|
162
|
+
pk = models.CompositePrimaryKey("order", "product")
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
URL Reverse with Query Parameters:
|
|
166
|
+
```python
|
|
167
|
+
from django.urls import reverse
|
|
168
|
+
|
|
169
|
+
url = reverse("search", query={"q": "django", "page": 1}, fragment="results")
|
|
170
|
+
# /search/?q=django&page=1#results
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Automatic Model Imports in Shell:
|
|
174
|
+
```bash
|
|
175
|
+
python manage.py shell
|
|
176
|
+
# Models from all installed apps are automatically imported
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Pydantic v2.9 Deep Patterns
|
|
180
|
+
|
|
181
|
+
Reusable Validators with Annotated:
|
|
182
|
+
```python
|
|
183
|
+
from typing import Annotated
|
|
184
|
+
from pydantic import AfterValidator, BaseModel
|
|
185
|
+
|
|
186
|
+
def validate_positive(v: int) -> int:
|
|
187
|
+
if v <= 0:
|
|
188
|
+
raise ValueError("Must be positive")
|
|
189
|
+
return v
|
|
190
|
+
|
|
191
|
+
PositiveInt = Annotated[int, AfterValidator(validate_positive)]
|
|
192
|
+
|
|
193
|
+
class Product(BaseModel):
|
|
194
|
+
price: PositiveInt
|
|
195
|
+
quantity: PositiveInt
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Model Validator for Cross-Field Validation:
|
|
199
|
+
```python
|
|
200
|
+
from pydantic import BaseModel, model_validator
|
|
201
|
+
from typing import Self
|
|
202
|
+
|
|
203
|
+
class DateRange(BaseModel):
|
|
204
|
+
start_date: date
|
|
205
|
+
end_date: date
|
|
206
|
+
|
|
207
|
+
@model_validator(mode="after")
|
|
208
|
+
def validate_dates(self) -> Self:
|
|
209
|
+
if self.end_date < self.start_date:
|
|
210
|
+
raise ValueError("end_date must be after start_date")
|
|
211
|
+
return self
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
ConfigDict Best Practices:
|
|
215
|
+
```python
|
|
216
|
+
from pydantic import BaseModel, ConfigDict
|
|
217
|
+
|
|
218
|
+
class BaseSchema(BaseModel):
|
|
219
|
+
model_config = ConfigDict(
|
|
220
|
+
from_attributes=True, # ORM object support
|
|
221
|
+
populate_by_name=True, # Allow aliases
|
|
222
|
+
extra="forbid", # Fail on unknown fields
|
|
223
|
+
str_strip_whitespace=True, # Clean strings
|
|
224
|
+
)
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### SQLAlchemy 2.0 Async Patterns
|
|
228
|
+
|
|
229
|
+
Engine and Session Setup:
|
|
230
|
+
```python
|
|
231
|
+
from sqlalchemy.ext.asyncio import (
|
|
232
|
+
create_async_engine,
|
|
233
|
+
async_sessionmaker,
|
|
234
|
+
AsyncSession,
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
engine = create_async_engine(
|
|
238
|
+
"postgresql+asyncpg://user:pass@localhost/db",
|
|
239
|
+
pool_pre_ping=True,
|
|
240
|
+
echo=True,
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
async_session = async_sessionmaker(
|
|
244
|
+
engine,
|
|
245
|
+
class_=AsyncSession,
|
|
246
|
+
expire_on_commit=False, # Prevent detached instance errors
|
|
247
|
+
)
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Repository Pattern:
|
|
251
|
+
```python
|
|
252
|
+
from sqlalchemy import select
|
|
253
|
+
from sqlalchemy.ext.asyncio import AsyncSession
|
|
254
|
+
|
|
255
|
+
class UserRepository:
|
|
256
|
+
def __init__(self, session: AsyncSession):
|
|
257
|
+
self.session = session
|
|
258
|
+
|
|
259
|
+
async def get_by_id(self, user_id: int) -> User | None:
|
|
260
|
+
result = await self.session.execute(
|
|
261
|
+
select(User).where(User.id == user_id)
|
|
262
|
+
)
|
|
263
|
+
return result.scalar_one_or_none()
|
|
264
|
+
|
|
265
|
+
async def create(self, user: UserCreate) -> User:
|
|
266
|
+
db_user = User(**user.model_dump())
|
|
267
|
+
self.session.add(db_user)
|
|
268
|
+
await self.session.commit()
|
|
269
|
+
await self.session.refresh(db_user)
|
|
270
|
+
return db_user
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Streaming Large Results:
|
|
274
|
+
```python
|
|
275
|
+
async def stream_users(db: AsyncSession):
|
|
276
|
+
result = await db.stream(select(User))
|
|
277
|
+
async for user in result.scalars():
|
|
278
|
+
yield user
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### pytest Advanced Patterns
|
|
282
|
+
|
|
283
|
+
Async Fixtures with pytest-asyncio:
|
|
284
|
+
```python
|
|
285
|
+
import pytest
|
|
286
|
+
import pytest_asyncio
|
|
287
|
+
from httpx import AsyncClient
|
|
288
|
+
|
|
289
|
+
@pytest_asyncio.fixture
|
|
290
|
+
async def async_client(app) -> AsyncGenerator[AsyncClient, None]:
|
|
291
|
+
async with AsyncClient(app=app, base_url="http://test") as client:
|
|
292
|
+
yield client
|
|
293
|
+
|
|
294
|
+
@pytest_asyncio.fixture
|
|
295
|
+
async def db_session() -> AsyncGenerator[AsyncSession, None]:
|
|
296
|
+
async with async_session() as session:
|
|
297
|
+
async with session.begin():
|
|
298
|
+
yield session
|
|
299
|
+
await session.rollback()
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Parametrized Tests:
|
|
303
|
+
```python
|
|
304
|
+
@pytest.mark.parametrize(
|
|
305
|
+
"input_data,expected_status",
|
|
306
|
+
[
|
|
307
|
+
({"name": "Valid"}, 201),
|
|
308
|
+
({"name": ""}, 422),
|
|
309
|
+
({}, 422),
|
|
310
|
+
],
|
|
311
|
+
ids=["valid", "empty_name", "missing_name"],
|
|
312
|
+
)
|
|
313
|
+
async def test_create_user(async_client, input_data, expected_status):
|
|
314
|
+
response = await async_client.post("/users/", json=input_data)
|
|
315
|
+
assert response.status_code == expected_status
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Fixture Factories:
|
|
319
|
+
```python
|
|
320
|
+
@pytest.fixture
|
|
321
|
+
def user_factory():
|
|
322
|
+
async def _create_user(db: AsyncSession, **kwargs) -> User:
|
|
323
|
+
defaults = {"name": "Test User", "email": "test@example.com"}
|
|
324
|
+
user = User(**(defaults | kwargs))
|
|
325
|
+
db.add(user)
|
|
326
|
+
await db.commit()
|
|
327
|
+
return user
|
|
328
|
+
return _create_user
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### Type Hints Modern Patterns
|
|
332
|
+
|
|
333
|
+
Protocol for Structural Typing:
|
|
334
|
+
```python
|
|
335
|
+
from typing import Protocol, runtime_checkable
|
|
336
|
+
|
|
337
|
+
@runtime_checkable
|
|
338
|
+
class Repository(Protocol[T]):
|
|
339
|
+
async def get(self, id: int) -> T | None: ...
|
|
340
|
+
async def create(self, data: dict) -> T: ...
|
|
341
|
+
async def delete(self, id: int) -> bool: ...
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
ParamSpec for Decorators:
|
|
345
|
+
```python
|
|
346
|
+
from typing import ParamSpec, TypeVar, Callable
|
|
347
|
+
from functools import wraps
|
|
348
|
+
|
|
349
|
+
P = ParamSpec("P")
|
|
350
|
+
R = TypeVar("R")
|
|
351
|
+
|
|
352
|
+
def retry(times: int = 3) -> Callable[[Callable[P, R]], Callable[P, R]]:
|
|
353
|
+
def decorator(func: Callable[P, R]) -> Callable[P, R]:
|
|
354
|
+
@wraps(func)
|
|
355
|
+
async def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
|
|
356
|
+
for attempt in range(times):
|
|
357
|
+
try:
|
|
358
|
+
return await func(*args, **kwargs)
|
|
359
|
+
except Exception:
|
|
360
|
+
if attempt == times - 1:
|
|
361
|
+
raise
|
|
362
|
+
return wrapper
|
|
363
|
+
return decorator
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Package Management
|
|
367
|
+
|
|
368
|
+
pyproject.toml (Poetry):
|
|
369
|
+
```toml
|
|
370
|
+
[tool.poetry]
|
|
371
|
+
name = "my-project"
|
|
372
|
+
version = "1.0.0"
|
|
373
|
+
python = "^3.13"
|
|
374
|
+
|
|
375
|
+
[tool.poetry.dependencies]
|
|
376
|
+
fastapi = "^0.115.0"
|
|
377
|
+
pydantic = "^2.9.0"
|
|
378
|
+
sqlalchemy = {extras = ["asyncio"], version = "^2.0.0"}
|
|
379
|
+
|
|
380
|
+
[tool.poetry.group.dev.dependencies]
|
|
381
|
+
pytest = "^8.0"
|
|
382
|
+
pytest-asyncio = "^0.24"
|
|
383
|
+
ruff = "^0.8"
|
|
384
|
+
|
|
385
|
+
[tool.ruff]
|
|
386
|
+
line-length = 100
|
|
387
|
+
target-version = "py313"
|
|
388
|
+
|
|
389
|
+
[tool.pytest.ini_options]
|
|
390
|
+
asyncio_mode = "auto"
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
uv (Fast Package Manager):
|
|
394
|
+
```bash
|
|
395
|
+
# Install uv
|
|
396
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
397
|
+
|
|
398
|
+
# Create virtual environment
|
|
399
|
+
uv venv
|
|
400
|
+
|
|
401
|
+
# Install dependencies
|
|
402
|
+
uv pip install -r requirements.txt
|
|
403
|
+
|
|
404
|
+
# Add dependency
|
|
405
|
+
uv add fastapi
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
## Advanced Implementation (10+ minutes)
|
|
411
|
+
|
|
412
|
+
For comprehensive coverage including:
|
|
413
|
+
- Production deployment patterns (Docker, Kubernetes)
|
|
414
|
+
- Advanced async patterns (task groups, semaphores)
|
|
415
|
+
- Data science integration (numpy, pandas, polars)
|
|
416
|
+
- Performance optimization techniques
|
|
417
|
+
- Security best practices (OWASP patterns)
|
|
418
|
+
- CI/CD integration patterns
|
|
419
|
+
|
|
420
|
+
See:
|
|
421
|
+
- [reference.md](reference.md) - Complete reference documentation
|
|
422
|
+
- [examples.md](examples.md) - Production-ready code examples
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
## Context7 Library Mappings
|
|
427
|
+
|
|
428
|
+
```
|
|
429
|
+
/tiangolo/fastapi - FastAPI async web framework
|
|
430
|
+
/django/django - Django web framework
|
|
431
|
+
/pydantic/pydantic - Data validation with type annotations
|
|
432
|
+
/sqlalchemy/sqlalchemy - SQL toolkit and ORM
|
|
433
|
+
/pytest-dev/pytest - Testing framework
|
|
434
|
+
/numpy/numpy - Numerical computing
|
|
435
|
+
/pandas-dev/pandas - Data analysis library
|
|
436
|
+
/pola-rs/polars - Fast DataFrame library
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## Works Well With
|
|
442
|
+
|
|
443
|
+
- `moai-domain-backend` - REST API and microservices architecture
|
|
444
|
+
- `moai-domain-database` - SQL patterns and ORM optimization
|
|
445
|
+
- `moai-quality-testing` - TDD and testing strategies
|
|
446
|
+
- `moai-essentials-debug` - AI-powered debugging
|
|
447
|
+
- `moai-foundation-trust` - TRUST 5 quality principles
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## Troubleshooting
|
|
452
|
+
|
|
453
|
+
Common Issues:
|
|
454
|
+
|
|
455
|
+
Python Version Check:
|
|
456
|
+
```bash
|
|
457
|
+
python --version # Should be 3.13+
|
|
458
|
+
python -c "import sys; print(sys.version_info)"
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
Async Session Detached Error:
|
|
462
|
+
- Solution: Set `expire_on_commit=False` in session config
|
|
463
|
+
- Or: Use `await session.refresh(obj)` after commit
|
|
464
|
+
|
|
465
|
+
pytest asyncio Mode Warning:
|
|
466
|
+
```toml
|
|
467
|
+
# pyproject.toml
|
|
468
|
+
[tool.pytest.ini_options]
|
|
469
|
+
asyncio_mode = "auto"
|
|
470
|
+
asyncio_default_fixture_loop_scope = "function"
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
Pydantic v2 Migration:
|
|
474
|
+
- `parse_obj()` is now `model_validate()`
|
|
475
|
+
- `parse_raw()` is now `model_validate_json()`
|
|
476
|
+
- `from_orm()` requires `from_attributes=True` in ConfigDict
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
Last Updated: 2025-12-07
|
|
481
|
+
Status: Active (v1.0.0)
|