aiecs 1.0.1__py3-none-any.whl → 1.7.17__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 aiecs might be problematic. Click here for more details.

Files changed (340) hide show
  1. aiecs/__init__.py +13 -16
  2. aiecs/__main__.py +7 -7
  3. aiecs/aiecs_client.py +269 -75
  4. aiecs/application/executors/operation_executor.py +79 -54
  5. aiecs/application/knowledge_graph/__init__.py +7 -0
  6. aiecs/application/knowledge_graph/builder/__init__.py +37 -0
  7. aiecs/application/knowledge_graph/builder/data_quality.py +302 -0
  8. aiecs/application/knowledge_graph/builder/data_reshaping.py +293 -0
  9. aiecs/application/knowledge_graph/builder/document_builder.py +369 -0
  10. aiecs/application/knowledge_graph/builder/graph_builder.py +490 -0
  11. aiecs/application/knowledge_graph/builder/import_optimizer.py +396 -0
  12. aiecs/application/knowledge_graph/builder/schema_inference.py +462 -0
  13. aiecs/application/knowledge_graph/builder/schema_mapping.py +563 -0
  14. aiecs/application/knowledge_graph/builder/structured_pipeline.py +1384 -0
  15. aiecs/application/knowledge_graph/builder/text_chunker.py +317 -0
  16. aiecs/application/knowledge_graph/extractors/__init__.py +27 -0
  17. aiecs/application/knowledge_graph/extractors/base.py +98 -0
  18. aiecs/application/knowledge_graph/extractors/llm_entity_extractor.py +422 -0
  19. aiecs/application/knowledge_graph/extractors/llm_relation_extractor.py +347 -0
  20. aiecs/application/knowledge_graph/extractors/ner_entity_extractor.py +241 -0
  21. aiecs/application/knowledge_graph/fusion/__init__.py +78 -0
  22. aiecs/application/knowledge_graph/fusion/ab_testing.py +395 -0
  23. aiecs/application/knowledge_graph/fusion/abbreviation_expander.py +327 -0
  24. aiecs/application/knowledge_graph/fusion/alias_index.py +597 -0
  25. aiecs/application/knowledge_graph/fusion/alias_matcher.py +384 -0
  26. aiecs/application/knowledge_graph/fusion/cache_coordinator.py +343 -0
  27. aiecs/application/knowledge_graph/fusion/entity_deduplicator.py +433 -0
  28. aiecs/application/knowledge_graph/fusion/entity_linker.py +511 -0
  29. aiecs/application/knowledge_graph/fusion/evaluation_dataset.py +240 -0
  30. aiecs/application/knowledge_graph/fusion/knowledge_fusion.py +632 -0
  31. aiecs/application/knowledge_graph/fusion/matching_config.py +489 -0
  32. aiecs/application/knowledge_graph/fusion/name_normalizer.py +352 -0
  33. aiecs/application/knowledge_graph/fusion/relation_deduplicator.py +183 -0
  34. aiecs/application/knowledge_graph/fusion/semantic_name_matcher.py +464 -0
  35. aiecs/application/knowledge_graph/fusion/similarity_pipeline.py +534 -0
  36. aiecs/application/knowledge_graph/pattern_matching/__init__.py +21 -0
  37. aiecs/application/knowledge_graph/pattern_matching/pattern_matcher.py +342 -0
  38. aiecs/application/knowledge_graph/pattern_matching/query_executor.py +366 -0
  39. aiecs/application/knowledge_graph/profiling/__init__.py +12 -0
  40. aiecs/application/knowledge_graph/profiling/query_plan_visualizer.py +195 -0
  41. aiecs/application/knowledge_graph/profiling/query_profiler.py +223 -0
  42. aiecs/application/knowledge_graph/reasoning/__init__.py +27 -0
  43. aiecs/application/knowledge_graph/reasoning/evidence_synthesis.py +341 -0
  44. aiecs/application/knowledge_graph/reasoning/inference_engine.py +500 -0
  45. aiecs/application/knowledge_graph/reasoning/logic_form_parser.py +163 -0
  46. aiecs/application/knowledge_graph/reasoning/logic_parser/__init__.py +79 -0
  47. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_builder.py +513 -0
  48. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_nodes.py +913 -0
  49. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_validator.py +866 -0
  50. aiecs/application/knowledge_graph/reasoning/logic_parser/error_handler.py +475 -0
  51. aiecs/application/knowledge_graph/reasoning/logic_parser/parser.py +396 -0
  52. aiecs/application/knowledge_graph/reasoning/logic_parser/query_context.py +208 -0
  53. aiecs/application/knowledge_graph/reasoning/logic_query_integration.py +170 -0
  54. aiecs/application/knowledge_graph/reasoning/query_planner.py +855 -0
  55. aiecs/application/knowledge_graph/reasoning/reasoning_engine.py +518 -0
  56. aiecs/application/knowledge_graph/retrieval/__init__.py +27 -0
  57. aiecs/application/knowledge_graph/retrieval/query_intent_classifier.py +211 -0
  58. aiecs/application/knowledge_graph/retrieval/retrieval_strategies.py +592 -0
  59. aiecs/application/knowledge_graph/retrieval/strategy_types.py +23 -0
  60. aiecs/application/knowledge_graph/search/__init__.py +59 -0
  61. aiecs/application/knowledge_graph/search/hybrid_search.py +457 -0
  62. aiecs/application/knowledge_graph/search/reranker.py +293 -0
  63. aiecs/application/knowledge_graph/search/reranker_strategies.py +535 -0
  64. aiecs/application/knowledge_graph/search/text_similarity.py +392 -0
  65. aiecs/application/knowledge_graph/traversal/__init__.py +15 -0
  66. aiecs/application/knowledge_graph/traversal/enhanced_traversal.py +305 -0
  67. aiecs/application/knowledge_graph/traversal/path_scorer.py +271 -0
  68. aiecs/application/knowledge_graph/validators/__init__.py +13 -0
  69. aiecs/application/knowledge_graph/validators/relation_validator.py +239 -0
  70. aiecs/application/knowledge_graph/visualization/__init__.py +11 -0
  71. aiecs/application/knowledge_graph/visualization/graph_visualizer.py +313 -0
  72. aiecs/common/__init__.py +9 -0
  73. aiecs/common/knowledge_graph/__init__.py +17 -0
  74. aiecs/common/knowledge_graph/runnable.py +471 -0
  75. aiecs/config/__init__.py +20 -5
  76. aiecs/config/config.py +762 -31
  77. aiecs/config/graph_config.py +131 -0
  78. aiecs/config/tool_config.py +435 -0
  79. aiecs/core/__init__.py +29 -13
  80. aiecs/core/interface/__init__.py +2 -2
  81. aiecs/core/interface/execution_interface.py +22 -22
  82. aiecs/core/interface/storage_interface.py +37 -88
  83. aiecs/core/registry/__init__.py +31 -0
  84. aiecs/core/registry/service_registry.py +92 -0
  85. aiecs/domain/__init__.py +270 -1
  86. aiecs/domain/agent/__init__.py +191 -0
  87. aiecs/domain/agent/base_agent.py +3949 -0
  88. aiecs/domain/agent/exceptions.py +99 -0
  89. aiecs/domain/agent/graph_aware_mixin.py +569 -0
  90. aiecs/domain/agent/hybrid_agent.py +1731 -0
  91. aiecs/domain/agent/integration/__init__.py +29 -0
  92. aiecs/domain/agent/integration/context_compressor.py +216 -0
  93. aiecs/domain/agent/integration/context_engine_adapter.py +587 -0
  94. aiecs/domain/agent/integration/protocols.py +281 -0
  95. aiecs/domain/agent/integration/retry_policy.py +218 -0
  96. aiecs/domain/agent/integration/role_config.py +213 -0
  97. aiecs/domain/agent/knowledge_aware_agent.py +1892 -0
  98. aiecs/domain/agent/lifecycle.py +291 -0
  99. aiecs/domain/agent/llm_agent.py +692 -0
  100. aiecs/domain/agent/memory/__init__.py +12 -0
  101. aiecs/domain/agent/memory/conversation.py +1124 -0
  102. aiecs/domain/agent/migration/__init__.py +14 -0
  103. aiecs/domain/agent/migration/conversion.py +163 -0
  104. aiecs/domain/agent/migration/legacy_wrapper.py +86 -0
  105. aiecs/domain/agent/models.py +894 -0
  106. aiecs/domain/agent/observability.py +479 -0
  107. aiecs/domain/agent/persistence.py +449 -0
  108. aiecs/domain/agent/prompts/__init__.py +29 -0
  109. aiecs/domain/agent/prompts/builder.py +159 -0
  110. aiecs/domain/agent/prompts/formatters.py +187 -0
  111. aiecs/domain/agent/prompts/template.py +255 -0
  112. aiecs/domain/agent/registry.py +253 -0
  113. aiecs/domain/agent/tool_agent.py +444 -0
  114. aiecs/domain/agent/tools/__init__.py +15 -0
  115. aiecs/domain/agent/tools/schema_generator.py +377 -0
  116. aiecs/domain/community/__init__.py +155 -0
  117. aiecs/domain/community/agent_adapter.py +469 -0
  118. aiecs/domain/community/analytics.py +432 -0
  119. aiecs/domain/community/collaborative_workflow.py +648 -0
  120. aiecs/domain/community/communication_hub.py +634 -0
  121. aiecs/domain/community/community_builder.py +320 -0
  122. aiecs/domain/community/community_integration.py +796 -0
  123. aiecs/domain/community/community_manager.py +803 -0
  124. aiecs/domain/community/decision_engine.py +849 -0
  125. aiecs/domain/community/exceptions.py +231 -0
  126. aiecs/domain/community/models/__init__.py +33 -0
  127. aiecs/domain/community/models/community_models.py +234 -0
  128. aiecs/domain/community/resource_manager.py +461 -0
  129. aiecs/domain/community/shared_context_manager.py +589 -0
  130. aiecs/domain/context/__init__.py +40 -10
  131. aiecs/domain/context/context_engine.py +1910 -0
  132. aiecs/domain/context/conversation_models.py +87 -53
  133. aiecs/domain/context/graph_memory.py +582 -0
  134. aiecs/domain/execution/model.py +12 -4
  135. aiecs/domain/knowledge_graph/__init__.py +19 -0
  136. aiecs/domain/knowledge_graph/models/__init__.py +52 -0
  137. aiecs/domain/knowledge_graph/models/entity.py +148 -0
  138. aiecs/domain/knowledge_graph/models/evidence.py +178 -0
  139. aiecs/domain/knowledge_graph/models/inference_rule.py +184 -0
  140. aiecs/domain/knowledge_graph/models/path.py +171 -0
  141. aiecs/domain/knowledge_graph/models/path_pattern.py +171 -0
  142. aiecs/domain/knowledge_graph/models/query.py +261 -0
  143. aiecs/domain/knowledge_graph/models/query_plan.py +181 -0
  144. aiecs/domain/knowledge_graph/models/relation.py +202 -0
  145. aiecs/domain/knowledge_graph/schema/__init__.py +23 -0
  146. aiecs/domain/knowledge_graph/schema/entity_type.py +131 -0
  147. aiecs/domain/knowledge_graph/schema/graph_schema.py +253 -0
  148. aiecs/domain/knowledge_graph/schema/property_schema.py +143 -0
  149. aiecs/domain/knowledge_graph/schema/relation_type.py +163 -0
  150. aiecs/domain/knowledge_graph/schema/schema_manager.py +691 -0
  151. aiecs/domain/knowledge_graph/schema/type_enums.py +209 -0
  152. aiecs/domain/task/dsl_processor.py +172 -56
  153. aiecs/domain/task/model.py +20 -8
  154. aiecs/domain/task/task_context.py +27 -24
  155. aiecs/infrastructure/__init__.py +0 -2
  156. aiecs/infrastructure/graph_storage/__init__.py +11 -0
  157. aiecs/infrastructure/graph_storage/base.py +837 -0
  158. aiecs/infrastructure/graph_storage/batch_operations.py +458 -0
  159. aiecs/infrastructure/graph_storage/cache.py +424 -0
  160. aiecs/infrastructure/graph_storage/distributed.py +223 -0
  161. aiecs/infrastructure/graph_storage/error_handling.py +380 -0
  162. aiecs/infrastructure/graph_storage/graceful_degradation.py +294 -0
  163. aiecs/infrastructure/graph_storage/health_checks.py +378 -0
  164. aiecs/infrastructure/graph_storage/in_memory.py +1197 -0
  165. aiecs/infrastructure/graph_storage/index_optimization.py +446 -0
  166. aiecs/infrastructure/graph_storage/lazy_loading.py +431 -0
  167. aiecs/infrastructure/graph_storage/metrics.py +344 -0
  168. aiecs/infrastructure/graph_storage/migration.py +400 -0
  169. aiecs/infrastructure/graph_storage/pagination.py +483 -0
  170. aiecs/infrastructure/graph_storage/performance_monitoring.py +456 -0
  171. aiecs/infrastructure/graph_storage/postgres.py +1563 -0
  172. aiecs/infrastructure/graph_storage/property_storage.py +353 -0
  173. aiecs/infrastructure/graph_storage/protocols.py +76 -0
  174. aiecs/infrastructure/graph_storage/query_optimizer.py +642 -0
  175. aiecs/infrastructure/graph_storage/schema_cache.py +290 -0
  176. aiecs/infrastructure/graph_storage/sqlite.py +1373 -0
  177. aiecs/infrastructure/graph_storage/streaming.py +487 -0
  178. aiecs/infrastructure/graph_storage/tenant.py +412 -0
  179. aiecs/infrastructure/messaging/celery_task_manager.py +92 -54
  180. aiecs/infrastructure/messaging/websocket_manager.py +51 -35
  181. aiecs/infrastructure/monitoring/__init__.py +22 -0
  182. aiecs/infrastructure/monitoring/executor_metrics.py +45 -11
  183. aiecs/infrastructure/monitoring/global_metrics_manager.py +212 -0
  184. aiecs/infrastructure/monitoring/structured_logger.py +3 -7
  185. aiecs/infrastructure/monitoring/tracing_manager.py +63 -35
  186. aiecs/infrastructure/persistence/__init__.py +14 -1
  187. aiecs/infrastructure/persistence/context_engine_client.py +184 -0
  188. aiecs/infrastructure/persistence/database_manager.py +67 -43
  189. aiecs/infrastructure/persistence/file_storage.py +180 -103
  190. aiecs/infrastructure/persistence/redis_client.py +74 -21
  191. aiecs/llm/__init__.py +73 -25
  192. aiecs/llm/callbacks/__init__.py +11 -0
  193. aiecs/llm/{custom_callbacks.py → callbacks/custom_callbacks.py} +26 -19
  194. aiecs/llm/client_factory.py +230 -37
  195. aiecs/llm/client_resolver.py +155 -0
  196. aiecs/llm/clients/__init__.py +38 -0
  197. aiecs/llm/clients/base_client.py +328 -0
  198. aiecs/llm/clients/google_function_calling_mixin.py +415 -0
  199. aiecs/llm/clients/googleai_client.py +314 -0
  200. aiecs/llm/clients/openai_client.py +158 -0
  201. aiecs/llm/clients/openai_compatible_mixin.py +367 -0
  202. aiecs/llm/clients/vertex_client.py +1186 -0
  203. aiecs/llm/clients/xai_client.py +201 -0
  204. aiecs/llm/config/__init__.py +51 -0
  205. aiecs/llm/config/config_loader.py +272 -0
  206. aiecs/llm/config/config_validator.py +206 -0
  207. aiecs/llm/config/model_config.py +143 -0
  208. aiecs/llm/protocols.py +149 -0
  209. aiecs/llm/utils/__init__.py +10 -0
  210. aiecs/llm/utils/validate_config.py +89 -0
  211. aiecs/main.py +140 -121
  212. aiecs/scripts/aid/VERSION_MANAGEMENT.md +138 -0
  213. aiecs/scripts/aid/__init__.py +19 -0
  214. aiecs/scripts/aid/module_checker.py +499 -0
  215. aiecs/scripts/aid/version_manager.py +235 -0
  216. aiecs/scripts/{DEPENDENCY_SYSTEM_SUMMARY.md → dependance_check/DEPENDENCY_SYSTEM_SUMMARY.md} +1 -0
  217. aiecs/scripts/{README_DEPENDENCY_CHECKER.md → dependance_check/README_DEPENDENCY_CHECKER.md} +1 -0
  218. aiecs/scripts/dependance_check/__init__.py +15 -0
  219. aiecs/scripts/dependance_check/dependency_checker.py +1835 -0
  220. aiecs/scripts/{dependency_fixer.py → dependance_check/dependency_fixer.py} +192 -90
  221. aiecs/scripts/{download_nlp_data.py → dependance_check/download_nlp_data.py} +203 -71
  222. aiecs/scripts/dependance_patch/__init__.py +7 -0
  223. aiecs/scripts/dependance_patch/fix_weasel/__init__.py +11 -0
  224. aiecs/scripts/{fix_weasel_validator.py → dependance_patch/fix_weasel/fix_weasel_validator.py} +21 -14
  225. aiecs/scripts/{patch_weasel_library.sh → dependance_patch/fix_weasel/patch_weasel_library.sh} +1 -1
  226. aiecs/scripts/knowledge_graph/__init__.py +3 -0
  227. aiecs/scripts/knowledge_graph/run_threshold_experiments.py +212 -0
  228. aiecs/scripts/migrations/multi_tenancy/README.md +142 -0
  229. aiecs/scripts/tools_develop/README.md +671 -0
  230. aiecs/scripts/tools_develop/README_CONFIG_CHECKER.md +273 -0
  231. aiecs/scripts/tools_develop/TOOLS_CONFIG_GUIDE.md +1287 -0
  232. aiecs/scripts/tools_develop/TOOL_AUTO_DISCOVERY.md +234 -0
  233. aiecs/scripts/tools_develop/__init__.py +21 -0
  234. aiecs/scripts/tools_develop/check_all_tools_config.py +548 -0
  235. aiecs/scripts/tools_develop/check_type_annotations.py +257 -0
  236. aiecs/scripts/tools_develop/pre-commit-schema-coverage.sh +66 -0
  237. aiecs/scripts/tools_develop/schema_coverage.py +511 -0
  238. aiecs/scripts/tools_develop/validate_tool_schemas.py +475 -0
  239. aiecs/scripts/tools_develop/verify_executor_config_fix.py +98 -0
  240. aiecs/scripts/tools_develop/verify_tools.py +352 -0
  241. aiecs/tasks/__init__.py +0 -1
  242. aiecs/tasks/worker.py +115 -47
  243. aiecs/tools/__init__.py +194 -72
  244. aiecs/tools/apisource/__init__.py +99 -0
  245. aiecs/tools/apisource/intelligence/__init__.py +19 -0
  246. aiecs/tools/apisource/intelligence/data_fusion.py +632 -0
  247. aiecs/tools/apisource/intelligence/query_analyzer.py +417 -0
  248. aiecs/tools/apisource/intelligence/search_enhancer.py +385 -0
  249. aiecs/tools/apisource/monitoring/__init__.py +9 -0
  250. aiecs/tools/apisource/monitoring/metrics.py +330 -0
  251. aiecs/tools/apisource/providers/__init__.py +112 -0
  252. aiecs/tools/apisource/providers/base.py +671 -0
  253. aiecs/tools/apisource/providers/census.py +397 -0
  254. aiecs/tools/apisource/providers/fred.py +535 -0
  255. aiecs/tools/apisource/providers/newsapi.py +409 -0
  256. aiecs/tools/apisource/providers/worldbank.py +352 -0
  257. aiecs/tools/apisource/reliability/__init__.py +12 -0
  258. aiecs/tools/apisource/reliability/error_handler.py +363 -0
  259. aiecs/tools/apisource/reliability/fallback_strategy.py +376 -0
  260. aiecs/tools/apisource/tool.py +832 -0
  261. aiecs/tools/apisource/utils/__init__.py +9 -0
  262. aiecs/tools/apisource/utils/validators.py +334 -0
  263. aiecs/tools/base_tool.py +415 -21
  264. aiecs/tools/docs/__init__.py +121 -0
  265. aiecs/tools/docs/ai_document_orchestrator.py +607 -0
  266. aiecs/tools/docs/ai_document_writer_orchestrator.py +2350 -0
  267. aiecs/tools/docs/content_insertion_tool.py +1320 -0
  268. aiecs/tools/docs/document_creator_tool.py +1464 -0
  269. aiecs/tools/docs/document_layout_tool.py +1160 -0
  270. aiecs/tools/docs/document_parser_tool.py +1016 -0
  271. aiecs/tools/docs/document_writer_tool.py +2008 -0
  272. aiecs/tools/knowledge_graph/__init__.py +17 -0
  273. aiecs/tools/knowledge_graph/graph_reasoning_tool.py +807 -0
  274. aiecs/tools/knowledge_graph/graph_search_tool.py +944 -0
  275. aiecs/tools/knowledge_graph/kg_builder_tool.py +524 -0
  276. aiecs/tools/langchain_adapter.py +300 -138
  277. aiecs/tools/schema_generator.py +455 -0
  278. aiecs/tools/search_tool/__init__.py +100 -0
  279. aiecs/tools/search_tool/analyzers.py +581 -0
  280. aiecs/tools/search_tool/cache.py +264 -0
  281. aiecs/tools/search_tool/constants.py +128 -0
  282. aiecs/tools/search_tool/context.py +224 -0
  283. aiecs/tools/search_tool/core.py +778 -0
  284. aiecs/tools/search_tool/deduplicator.py +119 -0
  285. aiecs/tools/search_tool/error_handler.py +242 -0
  286. aiecs/tools/search_tool/metrics.py +343 -0
  287. aiecs/tools/search_tool/rate_limiter.py +172 -0
  288. aiecs/tools/search_tool/schemas.py +275 -0
  289. aiecs/tools/statistics/__init__.py +80 -0
  290. aiecs/tools/statistics/ai_data_analysis_orchestrator.py +646 -0
  291. aiecs/tools/statistics/ai_insight_generator_tool.py +508 -0
  292. aiecs/tools/statistics/ai_report_orchestrator_tool.py +684 -0
  293. aiecs/tools/statistics/data_loader_tool.py +555 -0
  294. aiecs/tools/statistics/data_profiler_tool.py +638 -0
  295. aiecs/tools/statistics/data_transformer_tool.py +580 -0
  296. aiecs/tools/statistics/data_visualizer_tool.py +498 -0
  297. aiecs/tools/statistics/model_trainer_tool.py +507 -0
  298. aiecs/tools/statistics/statistical_analyzer_tool.py +472 -0
  299. aiecs/tools/task_tools/__init__.py +49 -36
  300. aiecs/tools/task_tools/chart_tool.py +200 -184
  301. aiecs/tools/task_tools/classfire_tool.py +268 -267
  302. aiecs/tools/task_tools/image_tool.py +220 -141
  303. aiecs/tools/task_tools/office_tool.py +226 -146
  304. aiecs/tools/task_tools/pandas_tool.py +477 -121
  305. aiecs/tools/task_tools/report_tool.py +390 -142
  306. aiecs/tools/task_tools/research_tool.py +149 -79
  307. aiecs/tools/task_tools/scraper_tool.py +339 -145
  308. aiecs/tools/task_tools/stats_tool.py +448 -209
  309. aiecs/tools/temp_file_manager.py +26 -24
  310. aiecs/tools/tool_executor/__init__.py +18 -16
  311. aiecs/tools/tool_executor/tool_executor.py +364 -52
  312. aiecs/utils/LLM_output_structor.py +74 -48
  313. aiecs/utils/__init__.py +14 -3
  314. aiecs/utils/base_callback.py +0 -3
  315. aiecs/utils/cache_provider.py +696 -0
  316. aiecs/utils/execution_utils.py +50 -31
  317. aiecs/utils/prompt_loader.py +1 -0
  318. aiecs/utils/token_usage_repository.py +37 -11
  319. aiecs/ws/socket_server.py +14 -4
  320. {aiecs-1.0.1.dist-info → aiecs-1.7.17.dist-info}/METADATA +52 -15
  321. aiecs-1.7.17.dist-info/RECORD +337 -0
  322. aiecs-1.7.17.dist-info/entry_points.txt +13 -0
  323. aiecs/config/registry.py +0 -19
  324. aiecs/domain/context/content_engine.py +0 -982
  325. aiecs/llm/base_client.py +0 -99
  326. aiecs/llm/openai_client.py +0 -125
  327. aiecs/llm/vertex_client.py +0 -186
  328. aiecs/llm/xai_client.py +0 -184
  329. aiecs/scripts/dependency_checker.py +0 -857
  330. aiecs/scripts/quick_dependency_check.py +0 -269
  331. aiecs/tools/task_tools/search_api.py +0 -7
  332. aiecs-1.0.1.dist-info/RECORD +0 -90
  333. aiecs-1.0.1.dist-info/entry_points.txt +0 -7
  334. /aiecs/scripts/{setup_nlp_data.sh → dependance_check/setup_nlp_data.sh} +0 -0
  335. /aiecs/scripts/{README_WEASEL_PATCH.md → dependance_patch/fix_weasel/README_WEASEL_PATCH.md} +0 -0
  336. /aiecs/scripts/{fix_weasel_validator.sh → dependance_patch/fix_weasel/fix_weasel_validator.sh} +0 -0
  337. /aiecs/scripts/{run_weasel_patch.sh → dependance_patch/fix_weasel/run_weasel_patch.sh} +0 -0
  338. {aiecs-1.0.1.dist-info → aiecs-1.7.17.dist-info}/WHEEL +0 -0
  339. {aiecs-1.0.1.dist-info → aiecs-1.7.17.dist-info}/licenses/LICENSE +0 -0
  340. {aiecs-1.0.1.dist-info → aiecs-1.7.17.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,397 @@
1
+ """
2
+ US Census Bureau API Provider
3
+
4
+ Provides access to US Census Bureau data including demographic,
5
+ economic, and geographic information.
6
+
7
+ API Documentation: https://www.census.gov/data/developers/guidance/api-user-guide.html
8
+ """
9
+
10
+ import logging
11
+ from typing import Any, Dict, List, Optional, Tuple
12
+
13
+ from aiecs.tools.apisource.providers.base import (
14
+ BaseAPIProvider,
15
+ expose_operation,
16
+ )
17
+
18
+ logger = logging.getLogger(__name__)
19
+
20
+ # Optional HTTP client
21
+ try:
22
+ import requests
23
+
24
+ REQUESTS_AVAILABLE = True
25
+ except ImportError:
26
+ REQUESTS_AVAILABLE = False
27
+
28
+
29
+ class CensusProvider(BaseAPIProvider):
30
+ """
31
+ US Census Bureau API provider for demographic and economic data.
32
+
33
+ Provides access to:
34
+ - American Community Survey (ACS) data
35
+ - Decennial Census
36
+ - Economic indicators
37
+ - Population estimates
38
+ - Geographic data
39
+ """
40
+
41
+ BASE_URL = "https://api.census.gov/data"
42
+
43
+ @property
44
+ def name(self) -> str:
45
+ return "census"
46
+
47
+ @property
48
+ def description(self) -> str:
49
+ return "US Census Bureau API for demographic, economic, and geographic data"
50
+
51
+ @property
52
+ def supported_operations(self) -> List[str]:
53
+ return [
54
+ "get_acs_data",
55
+ "get_population",
56
+ "get_economic_data",
57
+ "list_datasets",
58
+ "list_variables",
59
+ ]
60
+
61
+ def validate_params(self, operation: str, params: Dict[str, Any]) -> Tuple[bool, Optional[str]]:
62
+ """Validate parameters for Census API operations"""
63
+
64
+ if operation == "get_acs_data":
65
+ if "variables" not in params:
66
+ return False, "Missing required parameter: variables"
67
+ if "geography" not in params:
68
+ return False, "Missing required parameter: geography"
69
+
70
+ elif operation == "get_population":
71
+ if "geography" not in params:
72
+ return False, "Missing required parameter: geography"
73
+
74
+ elif operation == "get_economic_data":
75
+ if "variables" not in params:
76
+ return False, "Missing required parameter: variables"
77
+
78
+ return True, None
79
+
80
+ # Exposed operations for AI agent visibility
81
+
82
+ @expose_operation(
83
+ operation_name="get_acs_data",
84
+ description="Get American Community Survey (ACS) demographic and economic data",
85
+ )
86
+ def get_acs_data(self, variables: str, geography: str, year: Optional[int] = None) -> Dict[str, Any]:
87
+ """
88
+ Get ACS data.
89
+
90
+ Args:
91
+ variables: Comma-separated variable codes (e.g., 'B01001_001E,B19013_001E')
92
+ geography: Geographic level (e.g., 'state:*', 'county:*', 'tract:*')
93
+ year: Year for data (default: latest available)
94
+
95
+ Returns:
96
+ Dictionary containing ACS data and metadata
97
+ """
98
+ params: Dict[str, Any] = {"variables": variables, "geography": geography}
99
+ if year:
100
+ params["year"] = year
101
+
102
+ return self.execute("get_acs_data", params)
103
+
104
+ @expose_operation(
105
+ operation_name="get_population",
106
+ description="Get population estimates and demographic data",
107
+ )
108
+ def get_population(self, geography: str, year: Optional[int] = None) -> Dict[str, Any]:
109
+ """
110
+ Get population data.
111
+
112
+ Args:
113
+ geography: Geographic level (e.g., 'state:06', 'county:*')
114
+ year: Year for data (default: latest available)
115
+
116
+ Returns:
117
+ Dictionary containing population data
118
+ """
119
+ params: Dict[str, Any] = {"geography": geography}
120
+ if year:
121
+ params["year"] = year
122
+
123
+ return self.execute("get_population", params)
124
+
125
+ @expose_operation(
126
+ operation_name="get_economic_data",
127
+ description="Get economic indicators and business statistics",
128
+ )
129
+ def get_economic_data(
130
+ self,
131
+ variables: str,
132
+ geography: Optional[str] = None,
133
+ year: Optional[int] = None,
134
+ ) -> Dict[str, Any]:
135
+ """
136
+ Get economic data.
137
+
138
+ Args:
139
+ variables: Comma-separated variable codes
140
+ geography: Geographic level (optional)
141
+ year: Year for data (default: latest available)
142
+
143
+ Returns:
144
+ Dictionary containing economic data
145
+ """
146
+ params: Dict[str, Any] = {"variables": variables}
147
+ if geography:
148
+ params["geography"] = geography
149
+ if year:
150
+ params["year"] = year
151
+
152
+ return self.execute("get_economic_data", params)
153
+
154
+ @expose_operation(
155
+ operation_name="list_datasets",
156
+ description="List all available Census datasets",
157
+ )
158
+ def list_datasets(self) -> Dict[str, Any]:
159
+ """
160
+ List available datasets.
161
+
162
+ Returns:
163
+ Dictionary containing list of datasets
164
+ """
165
+ return self.execute("list_datasets", {})
166
+
167
+ @expose_operation(
168
+ operation_name="list_variables",
169
+ description="List available variables for a specific dataset",
170
+ )
171
+ def list_variables(self, dataset: Optional[str] = None, year: Optional[int] = None) -> Dict[str, Any]:
172
+ """
173
+ List available variables.
174
+
175
+ Args:
176
+ dataset: Dataset name (e.g., 'acs/acs5')
177
+ year: Year for dataset
178
+
179
+ Returns:
180
+ Dictionary containing list of variables
181
+ """
182
+ params: Dict[str, Any] = {}
183
+ if dataset:
184
+ params["dataset"] = dataset
185
+ if year:
186
+ params["year"] = year
187
+
188
+ return self.execute("list_variables", params)
189
+
190
+ def fetch(self, operation: str, params: Dict[str, Any]) -> Dict[str, Any]:
191
+ """Fetch data from Census API"""
192
+
193
+ if not REQUESTS_AVAILABLE:
194
+ raise ImportError("requests library is required for Census provider")
195
+
196
+ # Census API may require a key for some datasets
197
+ api_key = self._get_api_key("CENSUS_API_KEY")
198
+ timeout = self.config.get("timeout", 30)
199
+
200
+ # Build endpoint based on operation
201
+ if operation == "get_acs_data":
202
+ # American Community Survey 5-Year Data
203
+ year = params.get("year", "2021")
204
+ endpoint = f"{self.BASE_URL}/{year}/acs/acs5"
205
+
206
+ # Build query parameters
207
+ variables = params["variables"]
208
+ if isinstance(variables, list):
209
+ variables = ",".join(variables)
210
+
211
+ geography = params["geography"]
212
+
213
+ query_params = {"get": variables, "for": geography}
214
+
215
+ if api_key:
216
+ query_params["key"] = api_key
217
+
218
+ elif operation == "get_population":
219
+ # Population Estimates
220
+ year = params.get("year", "2021")
221
+ endpoint = f"{self.BASE_URL}/{year}/pep/population"
222
+
223
+ geography = params["geography"]
224
+ variables = params.get("variables", "POP")
225
+
226
+ query_params = {"get": variables, "for": geography}
227
+
228
+ if api_key:
229
+ query_params["key"] = api_key
230
+
231
+ elif operation == "get_economic_data":
232
+ # Economic Census or other economic data
233
+ year = params.get("year", "2017")
234
+ dataset = params.get("dataset", "ecnbasic")
235
+ endpoint = f"{self.BASE_URL}/{year}/ecnbasic"
236
+
237
+ variables = params["variables"]
238
+ if isinstance(variables, list):
239
+ variables = ",".join(variables)
240
+
241
+ geography = params.get("geography", "state:*")
242
+
243
+ query_params = {"get": variables, "for": geography}
244
+
245
+ if api_key:
246
+ query_params["key"] = api_key
247
+
248
+ elif operation == "list_datasets":
249
+ # List available datasets
250
+ endpoint = f"{self.BASE_URL}.json"
251
+ query_params = {}
252
+
253
+ elif operation == "list_variables":
254
+ # List variables for a dataset
255
+ year = params.get("year", "2021")
256
+ dataset = params.get("dataset", "acs/acs5")
257
+ endpoint = f"{self.BASE_URL}/{year}/{dataset}/variables.json"
258
+ query_params = {}
259
+
260
+ else:
261
+ raise ValueError(f"Unknown operation: {operation}")
262
+
263
+ # Make API request
264
+ try:
265
+ response = requests.get(endpoint, params=query_params, timeout=timeout)
266
+ response.raise_for_status()
267
+
268
+ data = response.json()
269
+
270
+ # Census API typically returns array of arrays
271
+ # First row is headers, subsequent rows are data
272
+ if operation in [
273
+ "get_acs_data",
274
+ "get_population",
275
+ "get_economic_data",
276
+ ]:
277
+ if isinstance(data, list) and len(data) > 1:
278
+ headers = data[0]
279
+ rows = data[1:]
280
+
281
+ # Convert to list of dictionaries
282
+ result_data = [dict(zip(headers, row)) for row in rows]
283
+ else:
284
+ result_data = data
285
+ else:
286
+ result_data = data
287
+
288
+ return self._format_response(
289
+ operation=operation,
290
+ data=result_data,
291
+ source=f"US Census Bureau - {endpoint}",
292
+ )
293
+
294
+ except requests.exceptions.RequestException as e:
295
+ self.logger.error(f"Census API request failed: {e}")
296
+ raise Exception(f"Census API request failed: {str(e)}")
297
+
298
+ def get_operation_schema(self, operation: str) -> Optional[Dict[str, Any]]:
299
+ """Get detailed schema for Census API operations"""
300
+
301
+ schemas = {
302
+ "get_acs_data": {
303
+ "description": "Get American Community Survey data",
304
+ "parameters": {
305
+ "variables": {
306
+ "type": "string",
307
+ "required": True,
308
+ "description": "Comma-separated variable codes",
309
+ "examples": [
310
+ "B01001_001E",
311
+ "B19013_001E",
312
+ "B25077_001E",
313
+ ],
314
+ },
315
+ "geography": {
316
+ "type": "string",
317
+ "required": True,
318
+ "description": "Geographic level specification",
319
+ "examples": [
320
+ "state:*",
321
+ "county:*",
322
+ "state:06",
323
+ "county:037",
324
+ ],
325
+ },
326
+ "year": {
327
+ "type": "integer",
328
+ "required": False,
329
+ "description": "Year for data",
330
+ "examples": [2020, 2021, 2022],
331
+ },
332
+ },
333
+ },
334
+ "get_population": {
335
+ "description": "Get population estimates",
336
+ "parameters": {
337
+ "geography": {
338
+ "type": "string",
339
+ "required": True,
340
+ "description": "Geographic level specification",
341
+ "examples": ["state:*", "state:06", "county:*"],
342
+ },
343
+ "year": {
344
+ "type": "integer",
345
+ "required": False,
346
+ "description": "Year for data",
347
+ "examples": [2020, 2021, 2022],
348
+ },
349
+ },
350
+ },
351
+ "get_economic_data": {
352
+ "description": "Get economic indicators",
353
+ "parameters": {
354
+ "variables": {
355
+ "type": "string",
356
+ "required": True,
357
+ "description": "Comma-separated variable codes",
358
+ "examples": ["EMP", "PAYANN", "ESTAB"],
359
+ },
360
+ "geography": {
361
+ "type": "string",
362
+ "required": False,
363
+ "description": "Geographic level specification",
364
+ "examples": ["state:*", "county:*"],
365
+ },
366
+ "year": {
367
+ "type": "integer",
368
+ "required": False,
369
+ "description": "Year for data",
370
+ "examples": [2020, 2021, 2022],
371
+ },
372
+ },
373
+ },
374
+ "list_datasets": {
375
+ "description": "List all available datasets",
376
+ "parameters": {},
377
+ },
378
+ "list_variables": {
379
+ "description": "List available variables",
380
+ "parameters": {
381
+ "dataset": {
382
+ "type": "string",
383
+ "required": False,
384
+ "description": "Dataset name",
385
+ "examples": ["acs/acs5", "acs/acs1", "pep/population"],
386
+ },
387
+ "year": {
388
+ "type": "integer",
389
+ "required": False,
390
+ "description": "Year for dataset",
391
+ "examples": [2020, 2021, 2022],
392
+ },
393
+ },
394
+ },
395
+ }
396
+
397
+ return schemas.get(operation)