aiecs 1.5.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.
Files changed (302) hide show
  1. aiecs/__init__.py +72 -0
  2. aiecs/__main__.py +41 -0
  3. aiecs/aiecs_client.py +469 -0
  4. aiecs/application/__init__.py +10 -0
  5. aiecs/application/executors/__init__.py +10 -0
  6. aiecs/application/executors/operation_executor.py +363 -0
  7. aiecs/application/knowledge_graph/__init__.py +7 -0
  8. aiecs/application/knowledge_graph/builder/__init__.py +37 -0
  9. aiecs/application/knowledge_graph/builder/document_builder.py +375 -0
  10. aiecs/application/knowledge_graph/builder/graph_builder.py +356 -0
  11. aiecs/application/knowledge_graph/builder/schema_mapping.py +531 -0
  12. aiecs/application/knowledge_graph/builder/structured_pipeline.py +443 -0
  13. aiecs/application/knowledge_graph/builder/text_chunker.py +319 -0
  14. aiecs/application/knowledge_graph/extractors/__init__.py +27 -0
  15. aiecs/application/knowledge_graph/extractors/base.py +100 -0
  16. aiecs/application/knowledge_graph/extractors/llm_entity_extractor.py +327 -0
  17. aiecs/application/knowledge_graph/extractors/llm_relation_extractor.py +349 -0
  18. aiecs/application/knowledge_graph/extractors/ner_entity_extractor.py +244 -0
  19. aiecs/application/knowledge_graph/fusion/__init__.py +23 -0
  20. aiecs/application/knowledge_graph/fusion/entity_deduplicator.py +387 -0
  21. aiecs/application/knowledge_graph/fusion/entity_linker.py +343 -0
  22. aiecs/application/knowledge_graph/fusion/knowledge_fusion.py +580 -0
  23. aiecs/application/knowledge_graph/fusion/relation_deduplicator.py +189 -0
  24. aiecs/application/knowledge_graph/pattern_matching/__init__.py +21 -0
  25. aiecs/application/knowledge_graph/pattern_matching/pattern_matcher.py +344 -0
  26. aiecs/application/knowledge_graph/pattern_matching/query_executor.py +378 -0
  27. aiecs/application/knowledge_graph/profiling/__init__.py +12 -0
  28. aiecs/application/knowledge_graph/profiling/query_plan_visualizer.py +199 -0
  29. aiecs/application/knowledge_graph/profiling/query_profiler.py +223 -0
  30. aiecs/application/knowledge_graph/reasoning/__init__.py +27 -0
  31. aiecs/application/knowledge_graph/reasoning/evidence_synthesis.py +347 -0
  32. aiecs/application/knowledge_graph/reasoning/inference_engine.py +504 -0
  33. aiecs/application/knowledge_graph/reasoning/logic_form_parser.py +167 -0
  34. aiecs/application/knowledge_graph/reasoning/logic_parser/__init__.py +79 -0
  35. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_builder.py +513 -0
  36. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_nodes.py +630 -0
  37. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_validator.py +654 -0
  38. aiecs/application/knowledge_graph/reasoning/logic_parser/error_handler.py +477 -0
  39. aiecs/application/knowledge_graph/reasoning/logic_parser/parser.py +390 -0
  40. aiecs/application/knowledge_graph/reasoning/logic_parser/query_context.py +217 -0
  41. aiecs/application/knowledge_graph/reasoning/logic_query_integration.py +169 -0
  42. aiecs/application/knowledge_graph/reasoning/query_planner.py +872 -0
  43. aiecs/application/knowledge_graph/reasoning/reasoning_engine.py +554 -0
  44. aiecs/application/knowledge_graph/retrieval/__init__.py +19 -0
  45. aiecs/application/knowledge_graph/retrieval/retrieval_strategies.py +596 -0
  46. aiecs/application/knowledge_graph/search/__init__.py +59 -0
  47. aiecs/application/knowledge_graph/search/hybrid_search.py +423 -0
  48. aiecs/application/knowledge_graph/search/reranker.py +295 -0
  49. aiecs/application/knowledge_graph/search/reranker_strategies.py +553 -0
  50. aiecs/application/knowledge_graph/search/text_similarity.py +398 -0
  51. aiecs/application/knowledge_graph/traversal/__init__.py +15 -0
  52. aiecs/application/knowledge_graph/traversal/enhanced_traversal.py +329 -0
  53. aiecs/application/knowledge_graph/traversal/path_scorer.py +269 -0
  54. aiecs/application/knowledge_graph/validators/__init__.py +13 -0
  55. aiecs/application/knowledge_graph/validators/relation_validator.py +189 -0
  56. aiecs/application/knowledge_graph/visualization/__init__.py +11 -0
  57. aiecs/application/knowledge_graph/visualization/graph_visualizer.py +321 -0
  58. aiecs/common/__init__.py +9 -0
  59. aiecs/common/knowledge_graph/__init__.py +17 -0
  60. aiecs/common/knowledge_graph/runnable.py +484 -0
  61. aiecs/config/__init__.py +16 -0
  62. aiecs/config/config.py +498 -0
  63. aiecs/config/graph_config.py +137 -0
  64. aiecs/config/registry.py +23 -0
  65. aiecs/core/__init__.py +46 -0
  66. aiecs/core/interface/__init__.py +34 -0
  67. aiecs/core/interface/execution_interface.py +152 -0
  68. aiecs/core/interface/storage_interface.py +171 -0
  69. aiecs/domain/__init__.py +289 -0
  70. aiecs/domain/agent/__init__.py +189 -0
  71. aiecs/domain/agent/base_agent.py +697 -0
  72. aiecs/domain/agent/exceptions.py +103 -0
  73. aiecs/domain/agent/graph_aware_mixin.py +559 -0
  74. aiecs/domain/agent/hybrid_agent.py +490 -0
  75. aiecs/domain/agent/integration/__init__.py +26 -0
  76. aiecs/domain/agent/integration/context_compressor.py +222 -0
  77. aiecs/domain/agent/integration/context_engine_adapter.py +252 -0
  78. aiecs/domain/agent/integration/retry_policy.py +219 -0
  79. aiecs/domain/agent/integration/role_config.py +213 -0
  80. aiecs/domain/agent/knowledge_aware_agent.py +646 -0
  81. aiecs/domain/agent/lifecycle.py +296 -0
  82. aiecs/domain/agent/llm_agent.py +300 -0
  83. aiecs/domain/agent/memory/__init__.py +12 -0
  84. aiecs/domain/agent/memory/conversation.py +197 -0
  85. aiecs/domain/agent/migration/__init__.py +14 -0
  86. aiecs/domain/agent/migration/conversion.py +160 -0
  87. aiecs/domain/agent/migration/legacy_wrapper.py +90 -0
  88. aiecs/domain/agent/models.py +317 -0
  89. aiecs/domain/agent/observability.py +407 -0
  90. aiecs/domain/agent/persistence.py +289 -0
  91. aiecs/domain/agent/prompts/__init__.py +29 -0
  92. aiecs/domain/agent/prompts/builder.py +161 -0
  93. aiecs/domain/agent/prompts/formatters.py +189 -0
  94. aiecs/domain/agent/prompts/template.py +255 -0
  95. aiecs/domain/agent/registry.py +260 -0
  96. aiecs/domain/agent/tool_agent.py +257 -0
  97. aiecs/domain/agent/tools/__init__.py +12 -0
  98. aiecs/domain/agent/tools/schema_generator.py +221 -0
  99. aiecs/domain/community/__init__.py +155 -0
  100. aiecs/domain/community/agent_adapter.py +477 -0
  101. aiecs/domain/community/analytics.py +481 -0
  102. aiecs/domain/community/collaborative_workflow.py +642 -0
  103. aiecs/domain/community/communication_hub.py +645 -0
  104. aiecs/domain/community/community_builder.py +320 -0
  105. aiecs/domain/community/community_integration.py +800 -0
  106. aiecs/domain/community/community_manager.py +813 -0
  107. aiecs/domain/community/decision_engine.py +879 -0
  108. aiecs/domain/community/exceptions.py +225 -0
  109. aiecs/domain/community/models/__init__.py +33 -0
  110. aiecs/domain/community/models/community_models.py +268 -0
  111. aiecs/domain/community/resource_manager.py +457 -0
  112. aiecs/domain/community/shared_context_manager.py +603 -0
  113. aiecs/domain/context/__init__.py +58 -0
  114. aiecs/domain/context/context_engine.py +989 -0
  115. aiecs/domain/context/conversation_models.py +354 -0
  116. aiecs/domain/context/graph_memory.py +467 -0
  117. aiecs/domain/execution/__init__.py +12 -0
  118. aiecs/domain/execution/model.py +57 -0
  119. aiecs/domain/knowledge_graph/__init__.py +19 -0
  120. aiecs/domain/knowledge_graph/models/__init__.py +52 -0
  121. aiecs/domain/knowledge_graph/models/entity.py +130 -0
  122. aiecs/domain/knowledge_graph/models/evidence.py +194 -0
  123. aiecs/domain/knowledge_graph/models/inference_rule.py +186 -0
  124. aiecs/domain/knowledge_graph/models/path.py +179 -0
  125. aiecs/domain/knowledge_graph/models/path_pattern.py +173 -0
  126. aiecs/domain/knowledge_graph/models/query.py +272 -0
  127. aiecs/domain/knowledge_graph/models/query_plan.py +187 -0
  128. aiecs/domain/knowledge_graph/models/relation.py +136 -0
  129. aiecs/domain/knowledge_graph/schema/__init__.py +23 -0
  130. aiecs/domain/knowledge_graph/schema/entity_type.py +135 -0
  131. aiecs/domain/knowledge_graph/schema/graph_schema.py +271 -0
  132. aiecs/domain/knowledge_graph/schema/property_schema.py +155 -0
  133. aiecs/domain/knowledge_graph/schema/relation_type.py +171 -0
  134. aiecs/domain/knowledge_graph/schema/schema_manager.py +496 -0
  135. aiecs/domain/knowledge_graph/schema/type_enums.py +205 -0
  136. aiecs/domain/task/__init__.py +13 -0
  137. aiecs/domain/task/dsl_processor.py +613 -0
  138. aiecs/domain/task/model.py +62 -0
  139. aiecs/domain/task/task_context.py +268 -0
  140. aiecs/infrastructure/__init__.py +24 -0
  141. aiecs/infrastructure/graph_storage/__init__.py +11 -0
  142. aiecs/infrastructure/graph_storage/base.py +601 -0
  143. aiecs/infrastructure/graph_storage/batch_operations.py +449 -0
  144. aiecs/infrastructure/graph_storage/cache.py +429 -0
  145. aiecs/infrastructure/graph_storage/distributed.py +226 -0
  146. aiecs/infrastructure/graph_storage/error_handling.py +390 -0
  147. aiecs/infrastructure/graph_storage/graceful_degradation.py +306 -0
  148. aiecs/infrastructure/graph_storage/health_checks.py +378 -0
  149. aiecs/infrastructure/graph_storage/in_memory.py +514 -0
  150. aiecs/infrastructure/graph_storage/index_optimization.py +483 -0
  151. aiecs/infrastructure/graph_storage/lazy_loading.py +410 -0
  152. aiecs/infrastructure/graph_storage/metrics.py +357 -0
  153. aiecs/infrastructure/graph_storage/migration.py +413 -0
  154. aiecs/infrastructure/graph_storage/pagination.py +471 -0
  155. aiecs/infrastructure/graph_storage/performance_monitoring.py +466 -0
  156. aiecs/infrastructure/graph_storage/postgres.py +871 -0
  157. aiecs/infrastructure/graph_storage/query_optimizer.py +635 -0
  158. aiecs/infrastructure/graph_storage/schema_cache.py +290 -0
  159. aiecs/infrastructure/graph_storage/sqlite.py +623 -0
  160. aiecs/infrastructure/graph_storage/streaming.py +495 -0
  161. aiecs/infrastructure/messaging/__init__.py +13 -0
  162. aiecs/infrastructure/messaging/celery_task_manager.py +383 -0
  163. aiecs/infrastructure/messaging/websocket_manager.py +298 -0
  164. aiecs/infrastructure/monitoring/__init__.py +34 -0
  165. aiecs/infrastructure/monitoring/executor_metrics.py +174 -0
  166. aiecs/infrastructure/monitoring/global_metrics_manager.py +213 -0
  167. aiecs/infrastructure/monitoring/structured_logger.py +48 -0
  168. aiecs/infrastructure/monitoring/tracing_manager.py +410 -0
  169. aiecs/infrastructure/persistence/__init__.py +24 -0
  170. aiecs/infrastructure/persistence/context_engine_client.py +187 -0
  171. aiecs/infrastructure/persistence/database_manager.py +333 -0
  172. aiecs/infrastructure/persistence/file_storage.py +754 -0
  173. aiecs/infrastructure/persistence/redis_client.py +220 -0
  174. aiecs/llm/__init__.py +86 -0
  175. aiecs/llm/callbacks/__init__.py +11 -0
  176. aiecs/llm/callbacks/custom_callbacks.py +264 -0
  177. aiecs/llm/client_factory.py +420 -0
  178. aiecs/llm/clients/__init__.py +33 -0
  179. aiecs/llm/clients/base_client.py +193 -0
  180. aiecs/llm/clients/googleai_client.py +181 -0
  181. aiecs/llm/clients/openai_client.py +131 -0
  182. aiecs/llm/clients/vertex_client.py +437 -0
  183. aiecs/llm/clients/xai_client.py +184 -0
  184. aiecs/llm/config/__init__.py +51 -0
  185. aiecs/llm/config/config_loader.py +275 -0
  186. aiecs/llm/config/config_validator.py +236 -0
  187. aiecs/llm/config/model_config.py +151 -0
  188. aiecs/llm/utils/__init__.py +10 -0
  189. aiecs/llm/utils/validate_config.py +91 -0
  190. aiecs/main.py +363 -0
  191. aiecs/scripts/__init__.py +3 -0
  192. aiecs/scripts/aid/VERSION_MANAGEMENT.md +97 -0
  193. aiecs/scripts/aid/__init__.py +19 -0
  194. aiecs/scripts/aid/version_manager.py +215 -0
  195. aiecs/scripts/dependance_check/DEPENDENCY_SYSTEM_SUMMARY.md +242 -0
  196. aiecs/scripts/dependance_check/README_DEPENDENCY_CHECKER.md +310 -0
  197. aiecs/scripts/dependance_check/__init__.py +17 -0
  198. aiecs/scripts/dependance_check/dependency_checker.py +938 -0
  199. aiecs/scripts/dependance_check/dependency_fixer.py +391 -0
  200. aiecs/scripts/dependance_check/download_nlp_data.py +396 -0
  201. aiecs/scripts/dependance_check/quick_dependency_check.py +270 -0
  202. aiecs/scripts/dependance_check/setup_nlp_data.sh +217 -0
  203. aiecs/scripts/dependance_patch/__init__.py +7 -0
  204. aiecs/scripts/dependance_patch/fix_weasel/README_WEASEL_PATCH.md +126 -0
  205. aiecs/scripts/dependance_patch/fix_weasel/__init__.py +11 -0
  206. aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.py +128 -0
  207. aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.sh +82 -0
  208. aiecs/scripts/dependance_patch/fix_weasel/patch_weasel_library.sh +188 -0
  209. aiecs/scripts/dependance_patch/fix_weasel/run_weasel_patch.sh +41 -0
  210. aiecs/scripts/tools_develop/README.md +449 -0
  211. aiecs/scripts/tools_develop/TOOL_AUTO_DISCOVERY.md +234 -0
  212. aiecs/scripts/tools_develop/__init__.py +21 -0
  213. aiecs/scripts/tools_develop/check_type_annotations.py +259 -0
  214. aiecs/scripts/tools_develop/validate_tool_schemas.py +422 -0
  215. aiecs/scripts/tools_develop/verify_tools.py +356 -0
  216. aiecs/tasks/__init__.py +1 -0
  217. aiecs/tasks/worker.py +172 -0
  218. aiecs/tools/__init__.py +299 -0
  219. aiecs/tools/apisource/__init__.py +99 -0
  220. aiecs/tools/apisource/intelligence/__init__.py +19 -0
  221. aiecs/tools/apisource/intelligence/data_fusion.py +381 -0
  222. aiecs/tools/apisource/intelligence/query_analyzer.py +413 -0
  223. aiecs/tools/apisource/intelligence/search_enhancer.py +388 -0
  224. aiecs/tools/apisource/monitoring/__init__.py +9 -0
  225. aiecs/tools/apisource/monitoring/metrics.py +303 -0
  226. aiecs/tools/apisource/providers/__init__.py +115 -0
  227. aiecs/tools/apisource/providers/base.py +664 -0
  228. aiecs/tools/apisource/providers/census.py +401 -0
  229. aiecs/tools/apisource/providers/fred.py +564 -0
  230. aiecs/tools/apisource/providers/newsapi.py +412 -0
  231. aiecs/tools/apisource/providers/worldbank.py +357 -0
  232. aiecs/tools/apisource/reliability/__init__.py +12 -0
  233. aiecs/tools/apisource/reliability/error_handler.py +375 -0
  234. aiecs/tools/apisource/reliability/fallback_strategy.py +391 -0
  235. aiecs/tools/apisource/tool.py +850 -0
  236. aiecs/tools/apisource/utils/__init__.py +9 -0
  237. aiecs/tools/apisource/utils/validators.py +338 -0
  238. aiecs/tools/base_tool.py +201 -0
  239. aiecs/tools/docs/__init__.py +121 -0
  240. aiecs/tools/docs/ai_document_orchestrator.py +599 -0
  241. aiecs/tools/docs/ai_document_writer_orchestrator.py +2403 -0
  242. aiecs/tools/docs/content_insertion_tool.py +1333 -0
  243. aiecs/tools/docs/document_creator_tool.py +1317 -0
  244. aiecs/tools/docs/document_layout_tool.py +1166 -0
  245. aiecs/tools/docs/document_parser_tool.py +994 -0
  246. aiecs/tools/docs/document_writer_tool.py +1818 -0
  247. aiecs/tools/knowledge_graph/__init__.py +17 -0
  248. aiecs/tools/knowledge_graph/graph_reasoning_tool.py +734 -0
  249. aiecs/tools/knowledge_graph/graph_search_tool.py +923 -0
  250. aiecs/tools/knowledge_graph/kg_builder_tool.py +476 -0
  251. aiecs/tools/langchain_adapter.py +542 -0
  252. aiecs/tools/schema_generator.py +275 -0
  253. aiecs/tools/search_tool/__init__.py +100 -0
  254. aiecs/tools/search_tool/analyzers.py +589 -0
  255. aiecs/tools/search_tool/cache.py +260 -0
  256. aiecs/tools/search_tool/constants.py +128 -0
  257. aiecs/tools/search_tool/context.py +216 -0
  258. aiecs/tools/search_tool/core.py +749 -0
  259. aiecs/tools/search_tool/deduplicator.py +123 -0
  260. aiecs/tools/search_tool/error_handler.py +271 -0
  261. aiecs/tools/search_tool/metrics.py +371 -0
  262. aiecs/tools/search_tool/rate_limiter.py +178 -0
  263. aiecs/tools/search_tool/schemas.py +277 -0
  264. aiecs/tools/statistics/__init__.py +80 -0
  265. aiecs/tools/statistics/ai_data_analysis_orchestrator.py +643 -0
  266. aiecs/tools/statistics/ai_insight_generator_tool.py +505 -0
  267. aiecs/tools/statistics/ai_report_orchestrator_tool.py +694 -0
  268. aiecs/tools/statistics/data_loader_tool.py +564 -0
  269. aiecs/tools/statistics/data_profiler_tool.py +658 -0
  270. aiecs/tools/statistics/data_transformer_tool.py +573 -0
  271. aiecs/tools/statistics/data_visualizer_tool.py +495 -0
  272. aiecs/tools/statistics/model_trainer_tool.py +487 -0
  273. aiecs/tools/statistics/statistical_analyzer_tool.py +459 -0
  274. aiecs/tools/task_tools/__init__.py +86 -0
  275. aiecs/tools/task_tools/chart_tool.py +732 -0
  276. aiecs/tools/task_tools/classfire_tool.py +922 -0
  277. aiecs/tools/task_tools/image_tool.py +447 -0
  278. aiecs/tools/task_tools/office_tool.py +684 -0
  279. aiecs/tools/task_tools/pandas_tool.py +635 -0
  280. aiecs/tools/task_tools/report_tool.py +635 -0
  281. aiecs/tools/task_tools/research_tool.py +392 -0
  282. aiecs/tools/task_tools/scraper_tool.py +715 -0
  283. aiecs/tools/task_tools/stats_tool.py +688 -0
  284. aiecs/tools/temp_file_manager.py +130 -0
  285. aiecs/tools/tool_executor/__init__.py +37 -0
  286. aiecs/tools/tool_executor/tool_executor.py +881 -0
  287. aiecs/utils/LLM_output_structor.py +445 -0
  288. aiecs/utils/__init__.py +34 -0
  289. aiecs/utils/base_callback.py +47 -0
  290. aiecs/utils/cache_provider.py +695 -0
  291. aiecs/utils/execution_utils.py +184 -0
  292. aiecs/utils/logging.py +1 -0
  293. aiecs/utils/prompt_loader.py +14 -0
  294. aiecs/utils/token_usage_repository.py +323 -0
  295. aiecs/ws/__init__.py +0 -0
  296. aiecs/ws/socket_server.py +52 -0
  297. aiecs-1.5.1.dist-info/METADATA +608 -0
  298. aiecs-1.5.1.dist-info/RECORD +302 -0
  299. aiecs-1.5.1.dist-info/WHEEL +5 -0
  300. aiecs-1.5.1.dist-info/entry_points.txt +10 -0
  301. aiecs-1.5.1.dist-info/licenses/LICENSE +225 -0
  302. aiecs-1.5.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,217 @@
1
+ #!/bin/bash
2
+ # Setup NLP Data for AIECS ClassifierTool
3
+ # This script downloads required NLTK and spaCy data packages
4
+
5
+ set -e # Exit on any error
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
9
+
10
+ echo "=================================================="
11
+ echo "AIECS NLP Data Setup"
12
+ echo "=================================================="
13
+ echo "This script will download required NLP data for:"
14
+ echo " - NLTK stopwords corpus"
15
+ echo " - spaCy English model (en_core_web_sm)"
16
+ echo " - spaCy Chinese model (zh_core_web_sm)"
17
+ echo "=================================================="
18
+ echo
19
+
20
+ # Function to check if a command exists
21
+ command_exists() {
22
+ command -v "$1" >/dev/null 2>&1
23
+ }
24
+
25
+ # Function to activate virtual environment if it exists
26
+ activate_venv() {
27
+ if [[ -n "$VIRTUAL_ENV" ]]; then
28
+ echo "āœ… Virtual environment already active: $VIRTUAL_ENV"
29
+ return 0
30
+ fi
31
+
32
+ # Check for common virtual environment locations
33
+ local venv_paths=(
34
+ "$PROJECT_ROOT/venv"
35
+ "$PROJECT_ROOT/.venv"
36
+ "$PROJECT_ROOT/env"
37
+ "$PROJECT_ROOT/.env"
38
+ )
39
+
40
+ for venv_path in "${venv_paths[@]}"; do
41
+ if [[ -f "$venv_path/bin/activate" ]]; then
42
+ echo "šŸ“¦ Activating virtual environment: $venv_path"
43
+ source "$venv_path/bin/activate"
44
+ return 0
45
+ fi
46
+ done
47
+
48
+ echo "āš ļø No virtual environment found. Using system Python."
49
+ return 1
50
+ }
51
+
52
+ # Function to check Python and packages
53
+ check_dependencies() {
54
+ echo "šŸ” Checking dependencies..."
55
+
56
+ if ! command_exists python3; then
57
+ echo "āŒ Python 3 is not installed or not in PATH"
58
+ exit 1
59
+ fi
60
+
61
+ local python_version=$(python3 --version 2>&1 | cut -d' ' -f2)
62
+ echo "āœ… Python version: $python_version"
63
+
64
+ # Check if we're in the project directory and can import aiecs
65
+ cd "$PROJECT_ROOT"
66
+ if python3 -c "import aiecs" 2>/dev/null; then
67
+ echo "āœ… AIECS package is available"
68
+ else
69
+ echo "āš ļø AIECS package not found. You may need to install it first:"
70
+ echo " pip install -e ."
71
+ fi
72
+ }
73
+
74
+ # Function to run the Python download script
75
+ run_download_script() {
76
+ echo
77
+ echo "šŸš€ Starting NLP data download..."
78
+ echo
79
+
80
+ cd "$PROJECT_ROOT"
81
+
82
+ # Try multiple ways to run the script
83
+ if python3 -m aiecs.scripts.download_nlp_data; then
84
+ echo "āœ… NLP data download completed successfully!"
85
+ return 0
86
+ elif python3 aiecs/scripts/download_nlp_data.py; then
87
+ echo "āœ… NLP data download completed successfully!"
88
+ return 0
89
+ else
90
+ echo "āŒ Failed to run NLP data download script"
91
+ return 1
92
+ fi
93
+ }
94
+
95
+ # Function to verify installation
96
+ verify_installation() {
97
+ echo
98
+ echo "šŸ” Verifying NLP data installation..."
99
+
100
+ # Test NLTK
101
+ if python3 -c "
102
+ import nltk
103
+ from nltk.corpus import stopwords
104
+ stopwords.words('english')
105
+ print('āœ… NLTK stopwords data available')
106
+ " 2>/dev/null; then
107
+ echo "āœ… NLTK verification passed"
108
+ else
109
+ echo "āš ļø NLTK verification failed"
110
+ fi
111
+
112
+ # Test spaCy English model
113
+ if python3 -c "
114
+ import spacy
115
+ nlp = spacy.load('en_core_web_sm')
116
+ doc = nlp('This is a test.')
117
+ print('āœ… spaCy English model available')
118
+ " 2>/dev/null; then
119
+ echo "āœ… spaCy English model verification passed"
120
+ else
121
+ echo "āš ļø spaCy English model verification failed"
122
+ fi
123
+
124
+ # Test spaCy Chinese model (optional)
125
+ if python3 -c "
126
+ import spacy
127
+ nlp = spacy.load('zh_core_web_sm')
128
+ doc = nlp('čæ™ę˜Æęµ‹čÆ•ć€‚')
129
+ print('āœ… spaCy Chinese model available')
130
+ " 2>/dev/null; then
131
+ echo "āœ… spaCy Chinese model verification passed"
132
+ else
133
+ echo "āš ļø spaCy Chinese model not available (optional)"
134
+ fi
135
+ }
136
+
137
+ # Function to display usage information
138
+ show_usage() {
139
+ echo "Usage: $0 [OPTIONS]"
140
+ echo
141
+ echo "Options:"
142
+ echo " -h, --help Show this help message"
143
+ echo " -v, --verify Only verify existing installations"
144
+ echo " --no-venv Skip virtual environment activation"
145
+ echo
146
+ echo "This script downloads required NLP data for AIECS ClassifierTool:"
147
+ echo " - NLTK stopwords corpus"
148
+ echo " - spaCy English model (en_core_web_sm)"
149
+ echo " - spaCy Chinese model (zh_core_web_sm, optional)"
150
+ echo
151
+ }
152
+
153
+ # Parse command line arguments
154
+ VERIFY_ONLY=false
155
+ SKIP_VENV=false
156
+
157
+ while [[ $# -gt 0 ]]; do
158
+ case $1 in
159
+ -h|--help)
160
+ show_usage
161
+ exit 0
162
+ ;;
163
+ -v|--verify)
164
+ VERIFY_ONLY=true
165
+ shift
166
+ ;;
167
+ --no-venv)
168
+ SKIP_VENV=true
169
+ shift
170
+ ;;
171
+ *)
172
+ echo "Unknown option: $1"
173
+ show_usage
174
+ exit 1
175
+ ;;
176
+ esac
177
+ done
178
+
179
+ # Main execution
180
+ main() {
181
+ echo "šŸ“ Project root: $PROJECT_ROOT"
182
+ echo
183
+
184
+ # Activate virtual environment if available and not skipped
185
+ if [[ "$SKIP_VENV" != true ]]; then
186
+ activate_venv || true
187
+ fi
188
+
189
+ # Check dependencies
190
+ check_dependencies
191
+
192
+ if [[ "$VERIFY_ONLY" == true ]]; then
193
+ echo
194
+ echo "šŸ” Running verification only..."
195
+ verify_installation
196
+ else
197
+ # Download NLP data
198
+ if run_download_script; then
199
+ verify_installation
200
+ echo
201
+ echo "šŸŽ‰ NLP data setup completed successfully!"
202
+ echo "AIECS ClassifierTool is ready to use."
203
+ else
204
+ echo
205
+ echo "āŒ NLP data setup failed. Please check the errors above."
206
+ exit 1
207
+ fi
208
+ fi
209
+
210
+ echo
211
+ echo "=================================================="
212
+ echo "Setup complete!"
213
+ echo "=================================================="
214
+ }
215
+
216
+ # Run main function
217
+ main "$@"
@@ -0,0 +1,7 @@
1
+ """
2
+ ä¾čµ–č”„äøå·„å…·
3
+
4
+ ęä¾›å„ē§ä¾čµ–åŗ“ēš„č”„äøäæ®å¤åŠŸčƒ½ć€‚
5
+ """
6
+
7
+ __all__ = []
@@ -0,0 +1,126 @@
1
+ # Weasel Library Patch Scripts
2
+
3
+ čæ™äøŖē›®å½•åŒ…å«ē”ØäŗŽäæ®å¤weaselåŗ“é‡å¤éŖŒčÆå™Øå‡½ę•°é”™čÆÆēš„č„šęœ¬ļ¼ŒčÆ„é”™čÆÆåÆ¼č‡“ęµ‹čÆ•å¤±č“„ć€‚
4
+
5
+ ## é—®é¢˜ęčæ°
6
+
7
+ é”™čÆÆå‘ē”Ÿę˜Æå› äøŗweaselåŗ“äø­ęœ‰é‡å¤ēš„éŖŒčÆå™Øå‡½ę•°ļ¼Œä½†ę²”ęœ‰`allow_reuse=True`å‚ę•°ļ¼š
8
+
9
+ ```
10
+ pydantic.v1.errors.ConfigError: duplicate validator function "weasel.schemas.ProjectConfigSchema.check_legacy_keys"; if this is intended, set `allow_reuse=True`
11
+ ```
12
+
13
+ **ę³Øę„**: å®žé™…ēš„é—®é¢˜ę˜ÆåœØ `@root_validator` č£…é„°å™Øäø­ļ¼Œč€Œäøę˜Æ `@validator`怂
14
+
15
+ ## åÆē”Øč„šęœ¬
16
+
17
+ ### 1. `run_weasel_patch.sh` (ęŽØčä½æē”Ø)
18
+ ęœ€ē®€å•ēš„č§£å†³ę–¹ę”ˆļ¼Œé€ščæ‡poetry运蔌蔄丁:
19
+ - č‡ŖåŠØę£€ęµ‹poetryč™šę‹ŸēŽÆå¢ƒ
20
+ - åœØę­£ē”®ēš„ēŽÆå¢ƒäø­čæč”ŒPythonč”„äøč„šęœ¬
21
+ - ęä¾›ęø…ę™°ēš„åé¦ˆå’ŒčÆ“ę˜Ž
22
+
23
+ **使用方法:**
24
+ ```bash
25
+ cd python-middleware
26
+ ./scripts/run_weasel_patch.sh
27
+ ```
28
+
29
+ ### 2. `fix_weasel_validator.py`
30
+ åŸŗäŗŽPythonēš„ę–¹ę³•ļ¼š
31
+ - ä½æē”Øę­£åˆ™č”Øč¾¾å¼ęØ”å¼čÆ†åˆ«å’Œäæ®å¤éŖŒčÆå™Øč£…é„°å™Ø
32
+ - ęä¾›čÆ¦ē»†ēš„å‰åŽåÆ¹ęÆ”
33
+ - åˆ›å»ŗåø¦ę—¶é—“ęˆ³ēš„å¤‡ä»½
34
+
35
+ **使用方法:**
36
+ ```bash
37
+ cd python-middleware
38
+ poetry run python3 ./scripts/fix_weasel_validator.py
39
+ ```
40
+
41
+ ### 3. `fix_weasel_validator.sh`
42
+ åŸŗäŗŽbashēš„ę–¹ę³•ļ¼Œä½æē”Øsedčæ›č”Œę–‡ęœ¬ę›æę¢ļ¼š
43
+ - ē®€å•ēš„sedę–‡ęœ¬ę›æę¢
44
+ - åˆ›å»ŗå¤‡ä»½
45
+ - ę˜¾ē¤ŗå‰åŽå†…å®¹
46
+
47
+ **使用方法:**
48
+ ```bash
49
+ cd python-middleware
50
+ ./scripts/fix_weasel_validator.sh
51
+ ```
52
+
53
+ ### 4. `patch_weasel_library.sh`
54
+ ē»¼åˆč§£å†³ę–¹ę”ˆļ¼š
55
+ - ē»“åˆå¤šē§ę–¹ę³•
56
+ - åŒ…å«ęµ‹čÆ•éŖŒčÆ
57
+ - čÆ¦ē»†ēš„é”™čÆÆå¤„ē†
58
+
59
+ **使用方法:**
60
+ ```bash
61
+ cd python-middleware
62
+ ./scripts/patch_weasel_library.sh
63
+ ```
64
+
65
+ ## č„šęœ¬åŠŸčƒ½
66
+
67
+ ę‰€ęœ‰č„šęœ¬éƒ½ę‰§č”Œä»„äø‹ę“ä½œļ¼š
68
+
69
+ 1. **å®šä½č™šę‹ŸēŽÆå¢ƒ**: ę‰¾åˆ°poetryč™šę‹ŸēŽÆå¢ƒč·Æå¾„
70
+ 2. **ę‰¾åˆ°é—®é¢˜ę–‡ä»¶**: 在site-packagesäø­å®šä½`weasel/schemas.py`
71
+ 3. **åˆ›å»ŗå¤‡ä»½**: åˆ¶ä½œåŽŸå§‹ę–‡ä»¶ēš„åø¦ę—¶é—“ęˆ³å¤‡ä»½
72
+ 4. **应用蔄丁**: å‘éœ€č¦ēš„éŖŒčÆå™Øč£…é„°å™Øę·»åŠ `allow_reuse=True`
73
+ 5. **éŖŒčÆäæ®å¤**: ę£€ęŸ„č”„äøę˜Æå¦ę­£ē”®åŗ”ē”Ø
74
+
75
+ ## äæ®å¤å†…å®¹
76
+
77
+ č„šęœ¬å°†ä»„äø‹ä»£ē ļ¼š
78
+ ```python
79
+ @root_validator(pre=True)
80
+ def check_legacy_keys(cls, obj: Dict[str, Any]) -> Dict[str, Any]:
81
+ ```
82
+
83
+ äæ®ę”¹äøŗļ¼š
84
+ ```python
85
+ @root_validator(pre=True, allow_reuse=True)
86
+ def check_legacy_keys(cls, obj: Dict[str, Any]) -> Dict[str, Any]:
87
+ ```
88
+
89
+ č„šęœ¬åŒę—¶ę”ÆęŒ `@validator` 和 `@root_validator` č£…é„°å™Øēš„äæ®å¤ć€‚
90
+
91
+ ## å›žę»š
92
+
93
+ å¦‚ęžœéœ€č¦ę¢å¤ę›“ę”¹ļ¼ŒęÆäøŖč„šęœ¬éƒ½ä¼šåˆ›å»ŗå¤‡ä»½ę–‡ä»¶ć€‚ę‚ØåÆä»„ä½æē”Øä»„äø‹å‘½ä»¤ę¢å¤ļ¼š
94
+ ```bash
95
+ cp /path/to/backup/file /path/to/original/schemas.py
96
+ ```
97
+
98
+ ē”®åˆ‡ēš„č·Æå¾„å°†åœØč„šęœ¬č¾“å‡ŗäø­ę˜¾ē¤ŗć€‚
99
+
100
+ ## ꕅ障ꎒ除
101
+
102
+ 1. **ę‰¾äøåˆ°Poetry**: ē”®äæå·²å®‰č£…poetryå¹¶äø”ę‚ØåœØé”¹ē›®ē›®å½•äø­
103
+ 2. **ę‰¾äøåˆ°č™šę‹ŸēŽÆå¢ƒ**: 运蔌`poetry install`åˆ›å»ŗč™šę‹ŸēŽÆå¢ƒ
104
+ 3. **ę‰¾äøåˆ°ę–‡ä»¶**: weaselåŒ…åÆčƒ½ęœŖå®‰č£… - ę£€ęŸ„ę‚Øēš„ä¾čµ–é”¹
105
+ 4. **ęƒé™é”™čÆÆ**: ę‚ØåÆčƒ½éœ€č¦ä½æē”Øé€‚å½“ēš„ęƒé™čæč”Œ
106
+
107
+ ## čæč”Œč”„äøåŽ
108
+
109
+ 1. å†ę¬”å°čÆ•čæč”Œę‚Øēš„ęµ‹čÆ•ļ¼š`poetry run pytest`
110
+ 2. å¦‚ęžœé—®é¢˜ä»ē„¶å­˜åœØļ¼Œé‡åÆę‚Øēš„PythonēŽÆå¢ƒ/IDE
111
+ 3. äæ®å¤åŗ”čÆ„č§£å†³é‡å¤éŖŒčÆå™Øå‡½ę•°é”™čÆÆ
112
+
113
+ ## ę³Øę„äŗ‹é”¹
114
+
115
+ - čæ™äŗ›č„šęœ¬åÆä»„å®‰å…Øåœ°å¤šę¬”čæč”Œ
116
+ - å®ƒä»¬åœØčæ›č”Œę›“ę”¹ä¹‹å‰ę£€ęŸ„č”„äøę˜Æå¦å·²åŗ”ē”Ø
117
+ - ę‰€ęœ‰ę›“ę”¹éƒ½ä¼šč‡ŖåŠØå¤‡ä»½
118
+ - č„šęœ¬é’ˆåÆ¹ē‰¹å®šé—®é¢˜ļ¼Œäøä¼šå½±å“å…¶ä»–åŠŸčƒ½
119
+
120
+ ## ęŽØčä½æē”ØęµēØ‹
121
+
122
+ 1. é¦–å…ˆå°čÆ•ä½æē”Ø `run_weasel_patch.sh`ļ¼ˆęœ€ē®€å•ļ¼‰
123
+ 2. å¦‚ęžœé‡åˆ°é—®é¢˜ļ¼ŒåÆä»„å°čÆ•ē›“ęŽ„čæč”Œ `poetry run python3 scripts/fix_weasel_validator.py`
124
+ 3. ä½œäøŗęœ€åŽę‰‹ę®µļ¼ŒåÆä»„ä½æē”Ø `patch_weasel_library.sh`ļ¼ˆęœ€å…Øé¢ļ¼‰
125
+
126
+ ę‰€ęœ‰č„šęœ¬éƒ½ä¼šåœØäæ®ę”¹å‰åˆ›å»ŗå¤‡ä»½ļ¼Œå› ę­¤ę‚ØåÆä»„å®‰å…Øåœ°å°čÆ•äøåŒēš„ę–¹ę³•ć€‚
@@ -0,0 +1,11 @@
1
+ """
2
+ Weasel 库蔄丁巄具
3
+
4
+ äæ®å¤ Weasel åŗ“ēš„éŖŒčÆå™Øé—®é¢˜ć€‚
5
+ """
6
+
7
+ from .fix_weasel_validator import main as fix_weasel_validator_main
8
+
9
+ __all__ = [
10
+ "fix_weasel_validator_main",
11
+ ]
@@ -0,0 +1,128 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Script to fix weasel library duplicate validator function error.
4
+ This script patches the weasel schemas.py file to add allow_reuse=True to duplicate validators.
5
+ """
6
+
7
+ import os
8
+ import sys
9
+ import shutil
10
+ from datetime import datetime
11
+ import re
12
+
13
+
14
+ def get_weasel_path():
15
+ """Get the weasel package path in the current Python environment."""
16
+ try:
17
+ import weasel
18
+ import inspect
19
+
20
+ weasel_file = inspect.getfile(weasel)
21
+ weasel_dir = os.path.dirname(weasel_file)
22
+ return os.path.join(weasel_dir, "schemas.py")
23
+ except ImportError:
24
+ print("āŒ Error: weasel package not found")
25
+ print("Please install aiecs with all dependencies")
26
+ return None
27
+ except Exception as e:
28
+ print(f"āŒ Error finding weasel package: {e}")
29
+ return None
30
+
31
+
32
+ def backup_file(file_path):
33
+ """Create a backup of the file."""
34
+ timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
35
+ backup_path = f"{file_path}.backup.{timestamp}"
36
+ shutil.copy2(file_path, backup_path)
37
+ return backup_path
38
+
39
+
40
+ def fix_weasel_schemas(schemas_file_path):
41
+ """Fix the weasel schemas.py file by adding allow_reuse=True to validators."""
42
+
43
+ print(f"šŸ“ Processing file: {schemas_file_path}")
44
+
45
+ # Read the original file
46
+ with open(schemas_file_path, "r", encoding="utf-8") as f:
47
+ content = f.read()
48
+
49
+ # Check if already patched
50
+ if "allow_reuse=True" in content:
51
+ print("āœ… File already patched with allow_reuse=True")
52
+ return True
53
+
54
+ # Create backup
55
+ backup_path = backup_file(schemas_file_path)
56
+ print(f"šŸ’¾ Created backup at: {backup_path}")
57
+
58
+ # Show current problematic area
59
+ lines = content.split("\n")
60
+ print("\nšŸ“– Current content around line 89:")
61
+ for i, line in enumerate(lines[84:94], 85):
62
+ print(f"{i:3d} | {line}")
63
+
64
+ # Pattern to match both @validator and @root_validator decorators without
65
+ # allow_reuse
66
+ validator_pattern = r"(@(?:root_)?validator\([^)]*)\)(?!\s*,\s*allow_reuse=True)"
67
+
68
+ # Replace @validator(...) or @root_validator(...) with allow_reuse=True if
69
+ # not already present
70
+ def replace_validator(match):
71
+ validator_call = match.group(1)
72
+ # Check if allow_reuse is already in the parameters
73
+ if "allow_reuse" in validator_call:
74
+ return match.group(0) # Return unchanged
75
+ else:
76
+ return f"{validator_call}, allow_reuse=True)"
77
+
78
+ # Apply the fix
79
+ fixed_content = re.sub(validator_pattern, replace_validator, content)
80
+
81
+ # Write the fixed content back
82
+ with open(schemas_file_path, "w", encoding="utf-8") as f:
83
+ f.write(fixed_content)
84
+
85
+ # Show the fixed content
86
+ fixed_lines = fixed_content.split("\n")
87
+ print("\nšŸ“– Patched content around line 89:")
88
+ for i, line in enumerate(fixed_lines[84:94], 85):
89
+ print(f"{i:3d} | {line}")
90
+
91
+ # Verify the fix
92
+ if "allow_reuse=True" in fixed_content:
93
+ print("āœ… Verification successful: allow_reuse=True found in file")
94
+ return True
95
+ else:
96
+ print("āš ļø Warning: allow_reuse=True not found after patching")
97
+ return False
98
+
99
+
100
+ def main():
101
+ """Main function to execute the patch."""
102
+ print("šŸ”§ Starting weasel library patch for duplicate validator function...")
103
+
104
+ # Get weasel schemas.py path
105
+ schemas_file = get_weasel_path()
106
+ if not schemas_file:
107
+ sys.exit(1)
108
+
109
+ print(f"šŸ“ Found weasel schemas.py at: {schemas_file}")
110
+
111
+ if not os.path.exists(schemas_file):
112
+ print(f"āŒ Error: weasel schemas.py file not found at {schemas_file}")
113
+ sys.exit(1)
114
+
115
+ # Apply the fix
116
+ success = fix_weasel_schemas(schemas_file)
117
+
118
+ if success:
119
+ print("\nšŸŽ‰ Weasel library patch completed successfully!")
120
+ print("\nYou can now run your tests again.")
121
+ print("\nIf you need to revert the changes, restore from the backup file.")
122
+ else:
123
+ print("\nāŒ Patch may not have been applied correctly. Please check manually.")
124
+ sys.exit(1)
125
+
126
+
127
+ if __name__ == "__main__":
128
+ main()
@@ -0,0 +1,82 @@
1
+ #!/bin/bash
2
+
3
+ # Script to fix weasel library duplicate validator function error
4
+ # This script patches the weasel schemas.py file to add allow_reuse=True
5
+
6
+ set -e
7
+
8
+ echo "šŸ”§ Starting weasel library patch for duplicate validator function..."
9
+
10
+ # Get the poetry virtual environment path
11
+ VENV_PATH=$(poetry env info --path 2>/dev/null || echo "")
12
+
13
+ if [ -z "$VENV_PATH" ]; then
14
+ echo "āŒ Error: Could not find poetry virtual environment"
15
+ echo "Please make sure you're in the project directory and poetry is installed"
16
+ exit 1
17
+ fi
18
+
19
+ echo "šŸ“ Found virtual environment at: $VENV_PATH"
20
+
21
+ # Path to the problematic weasel schemas.py file
22
+ WEASEL_SCHEMAS_FILE="$VENV_PATH/lib/python3.10/site-packages/weasel/schemas.py"
23
+
24
+ if [ ! -f "$WEASEL_SCHEMAS_FILE" ]; then
25
+ echo "āŒ Error: weasel schemas.py file not found at $WEASEL_SCHEMAS_FILE"
26
+ exit 1
27
+ fi
28
+
29
+ echo "šŸ“ Found weasel schemas.py at: $WEASEL_SCHEMAS_FILE"
30
+
31
+ # Create backup of original file
32
+ BACKUP_FILE="${WEASEL_SCHEMAS_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
33
+ cp "$WEASEL_SCHEMAS_FILE" "$BACKUP_FILE"
34
+ echo "šŸ’¾ Created backup at: $BACKUP_FILE"
35
+
36
+ # Check if the file already has allow_reuse=True
37
+ if grep -q "allow_reuse=True" "$WEASEL_SCHEMAS_FILE"; then
38
+ echo "āœ… File already patched with allow_reuse=True"
39
+ exit 0
40
+ fi
41
+
42
+ # Apply the patch using sed
43
+ # Look for @validator and @root_validator decorators and add allow_reuse=True if not present
44
+ echo "šŸ”Ø Applying patch..."
45
+
46
+ # First, let's check the current content around the problematic line
47
+ echo "šŸ“– Current content around line 89:"
48
+ sed -n '85,95p' "$WEASEL_SCHEMAS_FILE"
49
+
50
+ # Apply the patch - add allow_reuse=True to validator decorators that don't have it
51
+ sed -i.tmp '
52
+ /^[[:space:]]*@\(root_\)\?validator(/,/^[[:space:]]*def/ {
53
+ /^[[:space:]]*@\(root_\)\?validator(/ {
54
+ # If the line contains @validator or @root_validator but not allow_reuse, add it
55
+ /allow_reuse/! {
56
+ s/@\(root_\)\?validator(\([^)]*\))/@\1validator(\2, allow_reuse=True)/
57
+ }
58
+ }
59
+ }
60
+ ' "$WEASEL_SCHEMAS_FILE"
61
+
62
+ # Remove the temporary file
63
+ rm -f "${WEASEL_SCHEMAS_FILE}.tmp"
64
+
65
+ echo "āœ… Patch applied successfully!"
66
+
67
+ # Show the patched content
68
+ echo "šŸ“– Patched content around line 89:"
69
+ sed -n '85,95p' "$WEASEL_SCHEMAS_FILE"
70
+
71
+ # Verify the patch by checking if allow_reuse=True is now present
72
+ if grep -q "allow_reuse=True" "$WEASEL_SCHEMAS_FILE"; then
73
+ echo "āœ… Verification successful: allow_reuse=True found in file"
74
+ else
75
+ echo "āš ļø Warning: allow_reuse=True not found after patching"
76
+ fi
77
+
78
+ echo "šŸŽ‰ Weasel library patch completed!"
79
+ echo "šŸ“ Backup saved at: $BACKUP_FILE"
80
+ echo ""
81
+ echo "You can now run your tests again. If you need to revert the changes:"
82
+ echo "cp '$BACKUP_FILE' '$WEASEL_SCHEMAS_FILE'"