Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-skills/src/lexigram/ai/skills/__init__.py: 50%
18 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
1"""Lexigram AI Skills — composable, registry-based skill execution platform."""
3from __future__ import annotations
5import importlib.metadata
6from typing import TYPE_CHECKING
8__path__ = __import__("pkgutil").extend_path(__path__, __name__)
10from lexigram.ai.skills.constants import __version__ as __version__
12if TYPE_CHECKING:
13 from lexigram.ai.skills.base import AbstractSkill
14 from lexigram.ai.skills.executor import SkillExecutor
15 from lexigram.ai.skills.hooks import (
16 SkillExecutedHook,
17 SkillExecutionFailedHook,
18 SkillRegisteredHook,
19 )
20 from lexigram.ai.skills.registry import SkillRegistry
22_LAZY_IMPORTS: dict[str, str] = {
23 # --- Base ---
24 "AbstractSkill": "lexigram.ai.skills.base",
25 "FunctionSkill": "lexigram.ai.skills.base",
26 "ToolSkillAdapter": "lexigram.ai.skills.base",
27 # --- Hooks ---
28 "SkillExecutedHook": "lexigram.ai.skills.hooks",
29 "SkillExecutionFailedHook": "lexigram.ai.skills.hooks",
30 "SkillRegisteredHook": "lexigram.ai.skills.hooks",
31 # --- Builtin ---
32 "CodeExecutionSkill": "lexigram.ai.skills.builtin.code_execution",
33 "DatabaseQuerySkill": "lexigram.ai.skills.builtin.database_query",
34 "DateTimeSkill": "lexigram.ai.skills.builtin.datetime_skill",
35 "FileReadSkill": "lexigram.ai.skills.builtin.file_operations",
36 "FileWriteSkill": "lexigram.ai.skills.builtin.file_operations",
37 "HTTPRequestSkill": "lexigram.ai.skills.builtin.http_request",
38 "MathSkill": "lexigram.ai.skills.builtin.math_skill",
39 "TextSummarizeSkill": "lexigram.ai.skills.builtin.text_processing",
40 "TextTranslateSkill": "lexigram.ai.skills.builtin.text_processing",
41 "WebSearchSkill": "lexigram.ai.skills.builtin.web_search",
42 # --- Caching ---
43 "SkillResultCache": "lexigram.ai.skills.caching.skill_cache",
44 # --- Composition ---
45 "SkillChain": "lexigram.ai.skills.composition.chain",
46 "ParallelSkills": "lexigram.ai.skills.composition.parallel",
47 "SkillPipeline": "lexigram.ai.skills.composition.pipeline",
48 "SkillRouter": "lexigram.ai.skills.composition.router",
49 # --- Config ---
50 "SkillsConfig": "lexigram.ai.skills.config",
51 # --- Decorators ---
52 "skill": "lexigram.ai.skills.decorators",
53 "skill_param": "lexigram.ai.skills.decorators",
54 # --- DI ---
55 "SkillsProvider": "lexigram.ai.skills.di.provider",
56 # --- Discovery ---
57 "MCPSkillBridge": "lexigram.ai.skills.discovery.mcp_bridge",
58 "ModuleScanner": "lexigram.ai.skills.discovery.module_scanner",
59 "SkillSourceScanner": "lexigram.ai.skills.discovery.skill_source_scanner",
60 "SkillLoader": "lexigram.ai.skills.discovery.skill_loader",
61 # --- Exceptions ---
62 "SkillAlreadyRegisteredError": "lexigram.ai.skills.exceptions",
63 "SkillExecutionError": "lexigram.ai.skills.exceptions",
64 "SkillNotFoundError": "lexigram.ai.skills.exceptions",
65 "SkillPermissionDeniedError": "lexigram.ai.skills.exceptions",
66 "SkillRoutingError": "lexigram.ai.skills.exceptions",
67 "SkillTimeoutError": "lexigram.ai.skills.exceptions",
68 "SkillValidationError": "lexigram.ai.skills.exceptions",
69 # --- Executor ---
70 "SkillExecutor": "lexigram.ai.skills.executor",
71 # --- Module ---
72 "SkillsModule": "lexigram.ai.skills.module",
73 # --- Permissions ---
74 "PermissionChecker": "lexigram.ai.skills.permissions.permission_checker",
75 # --- Registry ---
76 "SkillRegistry": "lexigram.ai.skills.registry",
77 # --- Validation ---
78 "validate_params": "lexigram.ai.skills.validation.schema",
79 "validate_non_empty_string": "lexigram.ai.skills.validation.validators",
80 "validate_positive_int": "lexigram.ai.skills.validation.validators",
81 "validate_range": "lexigram.ai.skills.validation.validators",
82 # --- Contracts ---
83 "SkillDefinition": "lexigram.contracts.ai.skills",
84 "SkillError": "lexigram.contracts.ai.skills",
85 "SkillExecutorProtocol": "lexigram.contracts.ai.skills",
86 "SkillProtocol": "lexigram.contracts.ai.skills",
87 "SkillRegistryProtocol": "lexigram.contracts.ai.skills",
88 "SkillResult": "lexigram.contracts.ai.skills",
89 # --- Events ---
90 "SkillExecutedEvent": "lexigram.ai.skills.events",
91}
94def __getattr__(name: str) -> object:
95 if name in _LAZY_IMPORTS:
96 import importlib
98 module = importlib.import_module(_LAZY_IMPORTS[name])
99 value = getattr(module, name)
100 globals()[name] = value
101 return value
102 msg = f"module {__name__!r} has no attribute {name!r}"
103 raise AttributeError(msg)
106def __dir__() -> list[str]:
107 return sorted(set(__all__) | set(_LAZY_IMPORTS.keys()))
110__all__ = list(_LAZY_IMPORTS.keys())