springbootAI 2.3.5__tar.gz → 2.3.6__tar.gz

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 (351) hide show
  1. {springbootai-2.3.5 → springbootai-2.3.6}/CHANGELOG.md +8 -0
  2. {springbootai-2.3.5 → springbootai-2.3.6}/MANIFEST.in +1 -1
  3. springbootai-2.3.6/PKG-INFO +299 -0
  4. {springbootai-2.3.5 → springbootai-2.3.6}/README.md +11 -10
  5. springbootai-2.3.6/README_PYPI.md +137 -0
  6. {springbootai-2.3.5 → springbootai-2.3.6}/pyproject.toml +2 -2
  7. springbootai-2.3.6/springbootAI.egg-info/PKG-INFO +299 -0
  8. {springbootai-2.3.5 → springbootai-2.3.6}/springbootAI.egg-info/SOURCES.txt +1 -0
  9. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/__init__.py +1 -1
  10. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/__init__.py +1 -1
  11. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/csv/__init__.py +1 -1
  12. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/data/__init__.py +1 -1
  13. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/datasource/__init__.py +1 -1
  14. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/excel/__init__.py +1 -1
  15. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/i18n/__init__.py +1 -1
  16. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/__init__.py +1 -1
  17. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/__init__.py +1 -1
  18. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/version.py +1 -1
  19. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/test/__init__.py +1 -1
  20. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/tx/__init__.py +1 -1
  21. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/utils/banner.py +2 -2
  22. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/validation/__init__.py +1 -1
  23. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/websocket/__init__.py +1 -1
  24. springbootai-2.3.5/PKG-INFO +0 -2008
  25. springbootai-2.3.5/springbootAI.egg-info/PKG-INFO +0 -2008
  26. {springbootai-2.3.5 → springbootai-2.3.6}/LICENSE +0 -0
  27. {springbootai-2.3.5 → springbootai-2.3.6}/SECURITY.md +0 -0
  28. {springbootai-2.3.5 → springbootai-2.3.6}/requirements-ai.txt +0 -0
  29. {springbootai-2.3.5 → springbootai-2.3.6}/requirements-langgraph.txt +0 -0
  30. {springbootai-2.3.5 → springbootai-2.3.6}/requirements-mcp.txt +0 -0
  31. {springbootai-2.3.5 → springbootai-2.3.6}/requirements.txt +0 -0
  32. {springbootai-2.3.5 → springbootai-2.3.6}/setup.cfg +0 -0
  33. {springbootai-2.3.5 → springbootai-2.3.6}/setup.py +0 -0
  34. {springbootai-2.3.5 → springbootai-2.3.6}/springbootAI.egg-info/dependency_links.txt +0 -0
  35. {springbootai-2.3.5 → springbootai-2.3.6}/springbootAI.egg-info/entry_points.txt +0 -0
  36. {springbootai-2.3.5 → springbootai-2.3.6}/springbootAI.egg-info/requires.txt +0 -0
  37. {springbootai-2.3.5 → springbootai-2.3.6}/springbootAI.egg-info/top_level.txt +0 -0
  38. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/advisors.py +0 -0
  39. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/annotation_runtime.py +0 -0
  40. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/annotations.py +0 -0
  41. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/autoconfig.py +0 -0
  42. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/core.py +0 -0
  43. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/etl.py +0 -0
  44. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/memory.py +0 -0
  45. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/observability.py +0 -0
  46. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/providers.py +0 -0
  47. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/resilience.py +0 -0
  48. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/tools.py +0 -0
  49. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/ai/vectorstore.py +0 -0
  50. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/__init__.py +0 -0
  51. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/batch.py +0 -0
  52. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/cache.py +0 -0
  53. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/cloud.py +0 -0
  54. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/conditional.py +0 -0
  55. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/core.py +0 -0
  56. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/data.py +0 -0
  57. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/enterprise.py +0 -0
  58. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/langchain.py +0 -0
  59. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/langgraph.py +0 -0
  60. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/lombok.py +0 -0
  61. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/messaging.py +0 -0
  62. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/annotations/security.py +0 -0
  63. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/aop/__init__.py +0 -0
  64. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/aop/aspect.py +0 -0
  65. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/aop/cloud_aop.py +0 -0
  66. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/aop/comprehensive_aop.py +0 -0
  67. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/aop/method_interceptor.py +0 -0
  68. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/aop/proxy_factory.py +0 -0
  69. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/batch/__init__.py +0 -0
  70. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cli/__init__.py +0 -0
  71. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cli/main.py +0 -0
  72. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cli/scaffold.py +0 -0
  73. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/__init__.py +0 -0
  74. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/bus.py +0 -0
  75. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/config_center.py +0 -0
  76. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/discovery.py +0 -0
  77. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/feign.py +0 -0
  78. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/gateway.py +0 -0
  79. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/load_balancer.py +0 -0
  80. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/nacos_config.py +0 -0
  81. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/seata.py +0 -0
  82. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/seata_at_proxy.py +0 -0
  83. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/seata_bridge.py +0 -0
  84. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/sentinel.py +0 -0
  85. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/tracer.py +0 -0
  86. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/cloud/transaction_store.py +0 -0
  87. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/config/__init__.py +0 -0
  88. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/config/binding.py +0 -0
  89. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/config/config_loader.py +0 -0
  90. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/config/spring-configuration-metadata.json +0 -0
  91. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/context/__init__.py +0 -0
  92. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/context/application_context.py +0 -0
  93. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/context/bean_definition.py +0 -0
  94. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/context/bean_factory.py +0 -0
  95. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/context/lifecycle.py +0 -0
  96. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/context/registry.py +0 -0
  97. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/context/scanner.py +0 -0
  98. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/core/__init__.py +0 -0
  99. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/core/graceful_shutdown.py +0 -0
  100. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/core/typing_utils.py +0 -0
  101. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/csv/annotations.py +0 -0
  102. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/csv/converters.py +0 -0
  103. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/csv/easy_csv.py +0 -0
  104. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/csv/exceptions.py +0 -0
  105. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/csv/reader.py +0 -0
  106. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/csv/writer.py +0 -0
  107. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/data/page.py +0 -0
  108. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/data/repository.py +0 -0
  109. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/data/rest.py +0 -0
  110. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/data/specification.py +0 -0
  111. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/datasource/annotations.py +0 -0
  112. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/datasource/context.py +0 -0
  113. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/datasource/dynamic.py +0 -0
  114. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/devtools.py +0 -0
  115. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/event/__init__.py +0 -0
  116. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/event/publisher.py +0 -0
  117. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/excel/annotations.py +0 -0
  118. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/excel/converters.py +0 -0
  119. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/excel/easy_excel.py +0 -0
  120. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/excel/exceptions.py +0 -0
  121. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/excel/reader.py +0 -0
  122. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/excel/style.py +0 -0
  123. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/excel/writer.py +0 -0
  124. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/i18n/accessor.py +0 -0
  125. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/i18n/auto_config.py +0 -0
  126. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/i18n/holder.py +0 -0
  127. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/i18n/locale.py +0 -0
  128. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/i18n/locale_resolver.py +0 -0
  129. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/i18n/message_source.py +0 -0
  130. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/i18n/middleware.py +0 -0
  131. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/i18n/properties.py +0 -0
  132. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/i18n/sources.py +0 -0
  133. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/adapters.py +0 -0
  134. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/agents/__init__.py +0 -0
  135. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/agents/services.py +0 -0
  136. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/annotations.py +0 -0
  137. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/autoconfig.py +0 -0
  138. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/callbacks/__init__.py +0 -0
  139. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/callbacks/handlers.py +0 -0
  140. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/chains/__init__.py +0 -0
  141. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/chains/services.py +0 -0
  142. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/core.py +0 -0
  143. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/indexes/__init__.py +0 -0
  144. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/indexes/index.py +0 -0
  145. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/loaders/__init__.py +0 -0
  146. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/loaders/loaders.py +0 -0
  147. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/memory/__init__.py +0 -0
  148. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/memory/memory.py +0 -0
  149. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/parsers/__init__.py +0 -0
  150. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/parsers/parsers.py +0 -0
  151. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/partners.py +0 -0
  152. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/prompts/__init__.py +0 -0
  153. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/prompts/templates.py +0 -0
  154. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/retrievers/__init__.py +0 -0
  155. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/retrievers/retrievers.py +0 -0
  156. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/tools/__init__.py +0 -0
  157. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/tools/tools.py +0 -0
  158. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/utilities/__init__.py +0 -0
  159. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/utilities/utils.py +0 -0
  160. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/vectorstores/__init__.py +0 -0
  161. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langchain/vectorstores/stores.py +0 -0
  162. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langgraph/__init__.py +0 -0
  163. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langgraph/annotation_runtime.py +0 -0
  164. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langgraph/annotations.py +0 -0
  165. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langgraph/autoconfig.py +0 -0
  166. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langgraph/checkpoint.py +0 -0
  167. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langgraph/config.py +0 -0
  168. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/langgraph/runtime.py +0 -0
  169. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/logging/__init__.py +0 -0
  170. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/logging/loguru_logger.py +0 -0
  171. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/main.py +0 -0
  172. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/mcp/__init__.py +0 -0
  173. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/mcp/annotation_runtime.py +0 -0
  174. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/mcp/annotations.py +0 -0
  175. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/mcp/autoconfig.py +0 -0
  176. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/mcp/client.py +0 -0
  177. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/mcp/config.py +0 -0
  178. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/mcp/server.py +0 -0
  179. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/messaging/__init__.py +0 -0
  180. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/messaging/kafka.py +0 -0
  181. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/messaging/rabbitmq.py +0 -0
  182. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/monitoring/__init__.py +0 -0
  183. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/monitoring/admin_client.py +0 -0
  184. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/monitoring/prometheus.py +0 -0
  185. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/__init__.py +0 -0
  186. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/database.py +0 -0
  187. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/ddl_auto.py +0 -0
  188. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/migration.py +0 -0
  189. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/mybatis_integration.py +0 -0
  190. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/annotations/__init__.py +0 -0
  191. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/annotations/annotations.py +0 -0
  192. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/cache/__init__.py +0 -0
  193. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/cache/cache.py +0 -0
  194. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/cache/redis_cache.py +0 -0
  195. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/circuit_breaker/__init__.py +0 -0
  196. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/circuit_breaker/circuit_breaker.py +0 -0
  197. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/configuration.py +0 -0
  198. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/core/__init__.py +0 -0
  199. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/core/sql_session.py +0 -0
  200. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/core/sql_session_factory.py +0 -0
  201. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/dialect/__init__.py +0 -0
  202. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/dialect/dialect.py +0 -0
  203. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/dynamic_sql/__init__.py +0 -0
  204. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/dynamic_sql/dynamic_sql.py +0 -0
  205. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/interceptor/__init__.py +0 -0
  206. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/interceptor/interceptor.py +0 -0
  207. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/mapper/__init__.py +0 -0
  208. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/mapper/mapper.py +0 -0
  209. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/metrics/__init__.py +0 -0
  210. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/metrics/metrics.py +0 -0
  211. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/pool/__init__.py +0 -0
  212. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/pool/connection_pool.py +0 -0
  213. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/security/__init__.py +0 -0
  214. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/security/access_control.py +0 -0
  215. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/security/password_encoder.py +0 -0
  216. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/security/sensitive_data_masker.py +0 -0
  217. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/security/sql_injection_detector.py +0 -0
  218. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/transaction/__init__.py +0 -0
  219. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/transaction/transaction.py +0 -0
  220. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/type_handler/__init__.py +0 -0
  221. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/type_handler/type_handler.py +0 -0
  222. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/xml_parser/__init__.py +0 -0
  223. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/orm/pymybatis/xml_parser/xml_parser.py +0 -0
  224. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/retry/__init__.py +0 -0
  225. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/retry/recovery.py +0 -0
  226. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/retry/retry_annotations.py +0 -0
  227. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/retry/retry_decorator.py +0 -0
  228. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/scheduling/__init__.py +0 -0
  229. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/scheduling/scheduler.py +0 -0
  230. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/security/__init__.py +0 -0
  231. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/security/jwt_utils.py +0 -0
  232. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/security/oauth2.py +0 -0
  233. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/security/replay_protection.py +0 -0
  234. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/security/secret_manager.py +0 -0
  235. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/security/security_aop.py +0 -0
  236. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/security/security_context.py +0 -0
  237. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/test/slicing.py +0 -0
  238. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/tracing/__init__.py +0 -0
  239. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/tracing/skywalking.py +0 -0
  240. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/tx/events.py +0 -0
  241. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/tx/synchronization.py +0 -0
  242. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/utils/__init__.py +0 -0
  243. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/utils/bean_utils.py +0 -0
  244. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/utils/logger.py +0 -0
  245. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/utils/redis_client.py +0 -0
  246. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/validation/aop.py +0 -0
  247. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/validation/constraints.py +0 -0
  248. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/validation/exceptions.py +0 -0
  249. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/validation/validator.py +0 -0
  250. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/web/__init__.py +0 -0
  251. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/web/actuator.py +0 -0
  252. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/web/csrf.py +0 -0
  253. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/web/exception_handler.py +0 -0
  254. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/web/hateoas.py +0 -0
  255. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/web/health.py +0 -0
  256. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/web/interceptor.py +0 -0
  257. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/web/request_metrics.py +0 -0
  258. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/web/result.py +0 -0
  259. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/web/swagger.py +0 -0
  260. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/web/web_context.py +0 -0
  261. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/websocket/annotations.py +0 -0
  262. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/websocket/broker.py +0 -0
  263. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/websocket/exceptions.py +0 -0
  264. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/websocket/handler.py +0 -0
  265. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/websocket/router.py +0 -0
  266. {springbootai-2.3.5 → springbootai-2.3.6}/springbootai/websocket/session.py +0 -0
  267. {springbootai-2.3.5 → springbootai-2.3.6}/sql/seata_undo_log.sql +0 -0
  268. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_actuator.py +0 -0
  269. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_actuator_prometheus_admin.py +0 -0
  270. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_ai_annotations.py +0 -0
  271. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_ai_comprehensive.py +0 -0
  272. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_ai_declarative_annotations.py +0 -0
  273. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_ai_module.py +0 -0
  274. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_annotation_combinations.py +0 -0
  275. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_annotations_contract.py +0 -0
  276. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_aop_annotations_full.py +0 -0
  277. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_aop_pointcut_enhancements.py +0 -0
  278. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_audit_time.py +0 -0
  279. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_batch.py +0 -0
  280. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_bean_utils.py +0 -0
  281. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_bus.py +0 -0
  282. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_cache_annotations.py +0 -0
  283. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_cli.py +0 -0
  284. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_cloud_embedded_full.py +0 -0
  285. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_component_init_error.py +0 -0
  286. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_compositional_annotations.py +0 -0
  287. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_conditional_annotations.py +0 -0
  288. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_config_binding.py +0 -0
  289. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_config_center.py +0 -0
  290. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_config_fixes_185.py +0 -0
  291. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_connection_resilience.py +0 -0
  292. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_core.py +0 -0
  293. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_core_annotations_full.py +0 -0
  294. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_csrf.py +0 -0
  295. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_csv_module.py +0 -0
  296. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_data_repository.py +0 -0
  297. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_data_rest.py +0 -0
  298. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_datasource_routing.py +0 -0
  299. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_ddl_auto.py +0 -0
  300. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_declarative_aop_post_authorize_recover.py +0 -0
  301. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_devtools.py +0 -0
  302. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_di_config_event_full.py +0 -0
  303. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_excel_module.py +0 -0
  304. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_hateoas.py +0 -0
  305. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_i18n_module.py +0 -0
  306. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_ioc_lifecycle_enhancements.py +0 -0
  307. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_jpa_version_transient.py +0 -0
  308. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_kafka.py +0 -0
  309. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_langchain_comprehensive.py +0 -0
  310. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_langchain_ext.py +0 -0
  311. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_langchain_module.py +0 -0
  312. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_langgraph_comprehensive.py +0 -0
  313. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_langgraph_module.py +0 -0
  314. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_logging_config.py +0 -0
  315. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_lombok_annotations.py +0 -0
  316. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_mcp_module.py +0 -0
  317. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_metadata.py +0 -0
  318. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_migration.py +0 -0
  319. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_nacos_config.py +0 -0
  320. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_new_annotations.py +0 -0
  321. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_new_features.py +0 -0
  322. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_oauth2.py +0 -0
  323. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_orm_pymybatis_full.py +0 -0
  324. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_production_readiness.py +0 -0
  325. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_pymybatis_configuration_hardening.py +0 -0
  326. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_pymybatis_contract.py +0 -0
  327. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_request_metrics.py +0 -0
  328. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_retry.py +0 -0
  329. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_runtime_configuration_fixes.py +0 -0
  330. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_scaffold_hardening.py +0 -0
  331. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_scheduling.py +0 -0
  332. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_seata_at_proxy.py +0 -0
  333. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_seata_bridge.py +0 -0
  334. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_seata_durable_store.py +0 -0
  335. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_security.py +0 -0
  336. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_security_full.py +0 -0
  337. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_security_hardening.py +0 -0
  338. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_select_page.py +0 -0
  339. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_starter.py +0 -0
  340. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_startup_lifecycle.py +0 -0
  341. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_swagger_module.py +0 -0
  342. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_test_slicing.py +0 -0
  343. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_tracing.py +0 -0
  344. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_transactional_events.py +0 -0
  345. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_validation_module.py +0 -0
  346. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_web_annotations_full.py +0 -0
  347. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_web_file_upload.py +0 -0
  348. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_web_root_mapping.py +0 -0
  349. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_web_security_responses.py +0 -0
  350. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_web_static_files.py +0 -0
  351. {springbootai-2.3.5 → springbootai-2.3.6}/tests/test_websocket_module.py +0 -0
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.3.6] - 2026-08-20
4
+
5
+ ### PyPI 展示修复
6
+
7
+ - 新增不含外链图片的 `README_PYPI.md`,作为 PyPI 项目说明,避免外链图片被转换到不可访问的 PyPI Camo 代理后显示为破损图片。
8
+ - GitHub 继续使用包含功能总览图和状态徽章的 `README.md`,两端展示互不影响。
9
+ - 发布版本升级到 `2.3.6`,同步框架主包、扩展模块、PyMyBatis 内嵌版本、README 版本矩阵和打包元数据。
10
+
3
11
  ## [2.3.5] - 2026-08-20
4
12
 
5
13
  ### 文档与发布
@@ -1,4 +1,4 @@
1
- include README.md
1
+ include README.md README_PYPI.md
2
2
  include LICENSE
3
3
  include CHANGELOG.md
4
4
  include SECURITY.md
@@ -0,0 +1,299 @@
1
+ Metadata-Version: 2.4
2
+ Name: springbootAI
3
+ Version: 2.3.6
4
+ Summary: Spring-style Python framework with Web, ORM, Cloud and AI integrations
5
+ Author-email: YuConggen <1516933915@qq.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/YUCONGGEN/springbootAI
8
+ Project-URL: Repository, https://github.com/YUCONGGEN/springbootAI.git
9
+ Project-URL: Documentation, https://github.com/YUCONGGEN/springbootAI#readme
10
+ Project-URL: Changelog, https://github.com/YUCONGGEN/springbootAI/blob/master/CHANGELOG.md
11
+ Project-URL: Issues, https://github.com/YUCONGGEN/springbootAI/issues
12
+ Keywords: spring,springboot,mybatis,orm,web,framework,python,ai,langchain,langgraph,mcp
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
20
+ Classifier: Topic :: Database
21
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
22
+ Requires-Python: >=3.10
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: fastapi==0.141.1
26
+ Requires-Dist: uvicorn==0.39.0
27
+ Requires-Dist: websockets==15.0.1
28
+ Requires-Dist: pyyaml==6.0.3
29
+ Requires-Dist: python-dotenv==1.2.2
30
+ Requires-Dist: DBUtils==3.1.2
31
+ Requires-Dist: cryptography==50.0.0
32
+ Requires-Dist: bcrypt==5.0.0
33
+ Requires-Dist: pyjwt==2.13.0
34
+ Requires-Dist: pydantic==2.13.4
35
+ Requires-Dist: requests==2.34.2
36
+ Requires-Dist: httpx==0.28.1
37
+ Requires-Dist: defusedxml==0.7.1
38
+ Provides-Extra: mysql
39
+ Requires-Dist: PyMySQL==1.2.0; extra == "mysql"
40
+ Provides-Extra: postgresql
41
+ Requires-Dist: psycopg2-binary==2.9.12; extra == "postgresql"
42
+ Provides-Extra: sqlalchemy
43
+ Requires-Dist: sqlalchemy==2.0.40; extra == "sqlalchemy"
44
+ Provides-Extra: redis
45
+ Requires-Dist: redis==8.1.0; extra == "redis"
46
+ Provides-Extra: rabbitmq
47
+ Requires-Dist: pika==1.4.4; extra == "rabbitmq"
48
+ Provides-Extra: kafka
49
+ Requires-Dist: kafka-python==2.0.2; extra == "kafka"
50
+ Provides-Extra: nacos
51
+ Requires-Dist: nacos-sdk-python==2.0.11; extra == "nacos"
52
+ Provides-Extra: prometheus
53
+ Requires-Dist: prometheus-client==0.26.0; extra == "prometheus"
54
+ Provides-Extra: logging
55
+ Requires-Dist: loguru==0.7.3; extra == "logging"
56
+ Provides-Extra: ast
57
+ Requires-Dist: sqlglot==27.28.1; extra == "ast"
58
+ Provides-Extra: excel
59
+ Requires-Dist: openpyxl==3.1.5; extra == "excel"
60
+ Provides-Extra: ai
61
+ Requires-Dist: langchain-openai==1.4.2; extra == "ai"
62
+ Requires-Dist: langchain-core==1.5.4; extra == "ai"
63
+ Requires-Dist: langchain-classic==1.0.8; extra == "ai"
64
+ Requires-Dist: langchain-text-splitters==1.1.2; extra == "ai"
65
+ Requires-Dist: langchain-community==0.4.2; extra == "ai"
66
+ Requires-Dist: numpy==2.2.6; extra == "ai"
67
+ Requires-Dist: pydantic==2.13.4; extra == "ai"
68
+ Provides-Extra: langchain
69
+ Requires-Dist: langchain-openai==1.4.2; extra == "langchain"
70
+ Requires-Dist: langchain-core==1.5.4; extra == "langchain"
71
+ Requires-Dist: langchain-classic==1.0.8; extra == "langchain"
72
+ Requires-Dist: langchain-text-splitters==1.1.2; extra == "langchain"
73
+ Requires-Dist: langchain-community==0.4.2; extra == "langchain"
74
+ Requires-Dist: numpy==2.2.6; extra == "langchain"
75
+ Requires-Dist: pydantic==2.13.4; extra == "langchain"
76
+ Requires-Dist: faiss-cpu<2,>=1.7.4; extra == "langchain"
77
+ Requires-Dist: pypdf<6,>=4.0.0; extra == "langchain"
78
+ Requires-Dist: beautifulsoup4<5,>=4.12.0; extra == "langchain"
79
+ Requires-Dist: sqlalchemy<3,>=2.0.0; extra == "langchain"
80
+ Requires-Dist: langchain-anthropic<2,>=0.2.0; extra == "langchain"
81
+ Requires-Dist: langchain-ollama<2,>=0.2.0; extra == "langchain"
82
+ Requires-Dist: langchain-chroma<2,>=0.1.0; extra == "langchain"
83
+ Requires-Dist: langchain-mistralai<2,>=0.2.0; extra == "langchain"
84
+ Requires-Dist: langchain-cohere<2,>=0.3.0; extra == "langchain"
85
+ Requires-Dist: langchain-google-vertexai<3,>=2.0.0; extra == "langchain"
86
+ Requires-Dist: langchain-deepseek<2,>=0.1.0; extra == "langchain"
87
+ Requires-Dist: langchain-zhipuai<2,>=0.0.1; extra == "langchain"
88
+ Requires-Dist: langchain-experimental<2,>=0.3.0; extra == "langchain"
89
+ Provides-Extra: langgraph
90
+ Requires-Dist: langgraph==1.2.9; extra == "langgraph"
91
+ Requires-Dist: langgraph-checkpoint-sqlite==3.1.1; extra == "langgraph"
92
+ Provides-Extra: mcp
93
+ Requires-Dist: mcp==2.0.0; extra == "mcp"
94
+ Provides-Extra: web
95
+ Requires-Dist: fastapi==0.141.1; extra == "web"
96
+ Requires-Dist: uvicorn==0.39.0; extra == "web"
97
+ Requires-Dist: pydantic==2.13.4; extra == "web"
98
+ Requires-Dist: python-multipart==0.0.20; extra == "web"
99
+ Provides-Extra: cloud
100
+ Requires-Dist: springbootAI[web]; extra == "cloud"
101
+ Requires-Dist: springbootAI[redis]; extra == "cloud"
102
+ Requires-Dist: springbootAI[rabbitmq]; extra == "cloud"
103
+ Requires-Dist: springbootAI[kafka]; extra == "cloud"
104
+ Requires-Dist: httpx==0.28.1; extra == "cloud"
105
+ Provides-Extra: all
106
+ Requires-Dist: springbootAI[web]; extra == "all"
107
+ Requires-Dist: springbootAI[mysql]; extra == "all"
108
+ Requires-Dist: springbootAI[redis]; extra == "all"
109
+ Requires-Dist: springbootAI[rabbitmq]; extra == "all"
110
+ Requires-Dist: springbootAI[kafka]; extra == "all"
111
+ Requires-Dist: springbootAI[prometheus]; extra == "all"
112
+ Requires-Dist: springbootAI[logging]; extra == "all"
113
+ Requires-Dist: springbootAI[excel]; extra == "all"
114
+ Requires-Dist: springbootAI[ai]; extra == "all"
115
+ Requires-Dist: springbootAI[langchain]; extra == "all"
116
+ Requires-Dist: springbootAI[langgraph]; extra == "all"
117
+ Requires-Dist: springbootAI[mcp]; extra == "all"
118
+ Requires-Dist: httpx==0.28.1; extra == "all"
119
+ Requires-Dist: psutil==6.1.1; extra == "all"
120
+ Provides-Extra: dev
121
+ Requires-Dist: pytest==9.1.1; extra == "dev"
122
+ Requires-Dist: pytest-cov==7.1.0; extra == "dev"
123
+ Requires-Dist: redis==8.1.0; extra == "dev"
124
+ Requires-Dist: sqlglot==27.28.1; extra == "dev"
125
+ Provides-Extra: full
126
+ Requires-Dist: PyMySQL==1.2.0; extra == "full"
127
+ Requires-Dist: psycopg2-binary==2.9.12; extra == "full"
128
+ Requires-Dist: sqlalchemy==2.0.40; extra == "full"
129
+ Requires-Dist: redis==8.1.0; extra == "full"
130
+ Requires-Dist: pika==1.4.4; extra == "full"
131
+ Requires-Dist: nacos-sdk-python==2.0.11; extra == "full"
132
+ Requires-Dist: prometheus-client==0.26.0; extra == "full"
133
+ Requires-Dist: loguru==0.7.3; extra == "full"
134
+ Requires-Dist: sqlglot==27.28.1; extra == "full"
135
+ Requires-Dist: defusedxml==0.7.1; extra == "full"
136
+ Requires-Dist: requests==2.34.2; extra == "full"
137
+ Requires-Dist: httpx==0.28.1; extra == "full"
138
+ Requires-Dist: openpyxl==3.1.5; extra == "full"
139
+ Requires-Dist: langchain-openai==1.4.2; extra == "full"
140
+ Requires-Dist: langchain-core==1.5.4; extra == "full"
141
+ Requires-Dist: langchain-classic==1.0.8; extra == "full"
142
+ Requires-Dist: langchain-text-splitters==1.1.2; extra == "full"
143
+ Requires-Dist: langchain-community==0.4.2; extra == "full"
144
+ Requires-Dist: numpy==2.2.6; extra == "full"
145
+ Requires-Dist: pydantic==2.13.4; extra == "full"
146
+ Requires-Dist: faiss-cpu<2,>=1.7.4; extra == "full"
147
+ Requires-Dist: pypdf<6,>=4.0.0; extra == "full"
148
+ Requires-Dist: beautifulsoup4<5,>=4.12.0; extra == "full"
149
+ Requires-Dist: langchain-experimental<2,>=0.3.0; extra == "full"
150
+ Requires-Dist: langchain-anthropic<2,>=0.2.0; extra == "full"
151
+ Requires-Dist: langchain-ollama<2,>=0.2.0; extra == "full"
152
+ Requires-Dist: langchain-chroma<2,>=0.1.0; extra == "full"
153
+ Requires-Dist: langchain-mistralai<2,>=0.2.0; extra == "full"
154
+ Requires-Dist: langchain-cohere<2,>=0.3.0; extra == "full"
155
+ Requires-Dist: langchain-google-vertexai<3,>=2.0.0; extra == "full"
156
+ Requires-Dist: langchain-deepseek<2,>=0.1.0; extra == "full"
157
+ Requires-Dist: langchain-zhipuai<2,>=0.0.1; extra == "full"
158
+ Requires-Dist: langgraph==1.2.9; extra == "full"
159
+ Requires-Dist: langgraph-checkpoint-sqlite==3.1.1; extra == "full"
160
+ Requires-Dist: mcp==2.0.0; extra == "full"
161
+ Dynamic: license-file
162
+
163
+ # SpringBootAI
164
+
165
+ SpringBootAI 是一个采用 Spring 风格注解和分层结构的 Python 应用框架。你可以使用 Python 编写 `@RestController`、`@Service`、`@Mapper` 和 `@Autowired`,框架负责组件扫描、依赖注入、Web 路由、事务切面及应用生命周期。
166
+
167
+ Web 运行时建立在 FastAPI、Starlette 和 Uvicorn 之上,同时提供 ORM、事务、缓存、消息队列、服务发现、生产治理以及 AI 生态集成。
168
+
169
+ > SpringBootAI 不是 Java Spring Boot 的 Python 绑定,也不是 Spring 官方项目。它适合熟悉 Controller、Service、Mapper 分层方式的团队,用统一写法开发 Web API、内部管理系统、数据服务和 AI 应用。
170
+
171
+ ## 安装
172
+
173
+ SpringBootAI 2.3.6 支持 Python 3.10、3.11 和 3.12:
174
+
175
+ ```bash
176
+ python -m pip install springbootAI
177
+ ```
178
+
179
+ 需要可选模块时,可以按需安装:
180
+
181
+ ```bash
182
+ python -m pip install "springbootAI[ai]"
183
+ python -m pip install "springbootAI[langchain]"
184
+ python -m pip install "springbootAI[langgraph]"
185
+ python -m pip install "springbootAI[mcp]"
186
+ python -m pip install "springbootAI[mysql]"
187
+ python -m pip install "springbootAI[redis]"
188
+ ```
189
+
190
+ 安装全部可选能力:
191
+
192
+ ```bash
193
+ python -m pip install "springbootAI[all]"
194
+ ```
195
+
196
+ ## 快速开始
197
+
198
+ 创建应用入口 `demo/Application.py`:
199
+
200
+ ```python
201
+ from springbootai.annotations import SpringBootApplication
202
+ from springbootai.main import run
203
+
204
+
205
+ @SpringBootApplication(scan_base_packages=["demo"])
206
+ class Application:
207
+ pass
208
+
209
+
210
+ if __name__ == "__main__":
211
+ run(Application)
212
+ ```
213
+
214
+ 创建控制器 `demo/controller/HelloController.py`:
215
+
216
+ ```python
217
+ from springbootai.annotations import GetMapping, RequestMapping, RestController
218
+ from springbootai.web.swagger import Operation, Tag
219
+
220
+
221
+ @Tag(name="入门接口", description="确认应用已经正常运行")
222
+ @RequestMapping("/api")
223
+ @RestController
224
+ class HelloController:
225
+ @Operation(summary="打招呼")
226
+ @GetMapping("/hello/{name}")
227
+ def hello(self, name: str):
228
+ return {"message": f"Hello, {name}"}
229
+ ```
230
+
231
+ 创建 `demo/application.yml`,首次运行时关闭暂时不需要的外部资源:
232
+
233
+ ```yaml
234
+ server:
235
+ host: 127.0.0.1
236
+ port: 8080
237
+
238
+ database:
239
+ enabled: false
240
+
241
+ redis:
242
+ enabled: false
243
+ ```
244
+
245
+ 启动应用:
246
+
247
+ ```bash
248
+ python -m demo.Application
249
+ ```
250
+
251
+ 访问 `http://127.0.0.1:8080/api/hello/Alice` 验证接口,访问 `http://127.0.0.1:8080/docs` 查看 Swagger 文档。
252
+
253
+ ## 核心能力
254
+
255
+ | 方向 | 能力 |
256
+ |---|---|
257
+ | Web 与 IoC | 路由映射、参数绑定、组件扫描、依赖注入、生命周期、Swagger |
258
+ | 数据与事务 | PyMyBatis Mapper、XML Mapper、分页、动态 SQL、事务和自动回滚 |
259
+ | 中间件与 Cloud | Redis、RabbitMQ、Kafka、Nacos、Feign、Gateway |
260
+ | 工程治理 | 配置合并、Profile、日志、健康检查、Prometheus、限流、熔断和链路追踪 |
261
+ | 安全能力 | JWT、OAuth2、CSRF、访问控制、密码加密和 SQL 注入防护 |
262
+ | AI 生态 | ChatClient、Tools、RAG、Advisor、LangChain、LangGraph 和 MCP client/server |
263
+ | 测试能力 | 测试切片、MockBean、TestPropertySource、集成测试和性能测试脚本 |
264
+
265
+ ## 考试认证与证书
266
+
267
+ SpringBootAI 提供配套的在线考试认证平台。学习者、团队成员和项目使用方可以通过认证考试检验自己对框架核心能力的掌握情况,并在通过考试后获得对应证书。
268
+
269
+ 认证入口:[http://www.yucg.cn:8230](http://www.yucg.cn:8230)
270
+
271
+ 认证内容建议重点关注:
272
+
273
+ - 安装、项目结构、启动入口、扫描包、配置文件和 Swagger。
274
+ - Controller、Service、Mapper 分层以及 Bean 注册、依赖注入和生命周期。
275
+ - PyMyBatis、动态 SQL、分页、事务边界和回滚行为。
276
+ - Profile、日志、健康检查、Prometheus、限流、熔断和测试切片。
277
+ - JWT、OAuth2、CSRF、访问控制和常见安全错误处理。
278
+ - ChatClient、Tools、RAG、LangChain、LangGraph 和 MCP。
279
+
280
+ 考试规则、题量、通过标准、证书领取方式和有效期以认证平台展示为准。
281
+
282
+ ## 文档
283
+
284
+ - [GitHub 项目主页](https://github.com/YUCONGGEN/springbootAI)
285
+ - [完整 README](https://github.com/YUCONGGEN/springbootAI#readme)
286
+ - [新手指南](https://github.com/YUCONGGEN/springbootAI/blob/master/doc/BEGINNER_GUIDE.md)
287
+ - [全部模块文档](https://github.com/YUCONGGEN/springbootAI/tree/master/doc)
288
+ - [变更日志](https://github.com/YUCONGGEN/springbootAI/blob/master/CHANGELOG.md)
289
+ - [安全报告](https://github.com/YUCONGGEN/springbootAI/blob/master/SECURITY.md)
290
+
291
+ ## 生产使用说明
292
+
293
+ 项目当前标记为 Beta。用于公网高并发、合规敏感或支付、订单、库存等核心系统前,请完成目标数据库、流量模型、故障恢复和安全基线验证。
294
+
295
+ 内嵌 Gateway 适合内部路由,不替代公网 Nginx、Kong 或 WAF。Seata `distributed` 模式对接官方 TC 与 TCC 回调;`at` 模式通过 ORM 拦截器生成 `undo_log` 实现自动回滚。
296
+
297
+ ## 许可证
298
+
299
+ SpringBootAI 使用 [MIT License](https://github.com/YUCONGGEN/springbootAI/blob/master/LICENSE)。
@@ -4,6 +4,12 @@
4
4
  <img src="https://raw.githubusercontent.com/YUCONGGEN/springbootAI/master/doc/images/hero-banner.png" alt="SpringBootAI 功能总览" width="100%" />
5
5
  </p>
6
6
 
7
+ [![PyPI](https://img.shields.io/pypi/v/springbootAI)](https://pypi.org/project/springbootAI/)
8
+ [![Python](https://img.shields.io/pypi/pyversions/springbootAI)](https://pypi.org/project/springbootAI/)
9
+ [![CI](https://github.com/YUCONGGEN/springbootAI/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/YUCONGGEN/springbootAI/actions/workflows/ci.yml)
10
+ [![Security](https://github.com/YUCONGGEN/springbootAI/actions/workflows/security.yml/badge.svg?branch=master)](https://github.com/YUCONGGEN/springbootAI/actions/workflows/security.yml)
11
+ [![License](https://img.shields.io/pypi/l/springbootAI)](https://github.com/YUCONGGEN/springbootAI/blob/master/LICENSE)
12
+
7
13
  ## SpringBootAI 考试认证与证书
8
14
 
9
15
  SpringBootAI 已提供配套的在线考试认证平台,学习者、团队成员和项目使用方可以通过认证考试检验自己对框架核心能力的掌握情况,并在通过考试后获得对应证书。
@@ -36,11 +42,6 @@ SpringBootAI 已提供配套的在线考试认证平台,学习者、团队成
36
42
  | 安全能力 | JWT、密码加密、SQL 注入防护、CSRF、OAuth2、访问控制与常见错误处理 |
37
43
  | AI 生态 | ChatClient、Tools、RAG、Advisor、LangChain、LangGraph、MCP client/server |
38
44
 
39
- [![PyPI](https://img.shields.io/pypi/v/springbootAI)](https://pypi.org/project/springbootAI/)
40
- [![Python](https://img.shields.io/pypi/pyversions/springbootAI)](https://pypi.org/project/springbootAI/)
41
- [![CI](https://github.com/YUCONGGEN/springbootAI/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/YUCONGGEN/springbootAI/actions/workflows/ci.yml)
42
- [![Security](https://github.com/YUCONGGEN/springbootAI/actions/workflows/security.yml/badge.svg?branch=master)](https://github.com/YUCONGGEN/springbootAI/actions/workflows/security.yml)
43
- [![License](https://img.shields.io/pypi/l/springbootAI)](https://github.com/YUCONGGEN/springbootAI/blob/master/LICENSE)
44
45
 
45
46
  SpringBootAI 是一个采用 Spring 风格注解和分层结构的 Python 应用框架。你使用 Python 编写 `@RestController`、`@Service`、`@Mapper` 和 `@Autowired`,框架负责组件扫描、依赖注入、Web 路由、事务切面及生命周期;Web 运行时建立在 FastAPI/Starlette/Uvicorn 之上。
46
47
 
@@ -53,7 +54,7 @@ SpringBootAI 是一个采用 Spring 风格注解和分层结构的 Python 应用
53
54
  | AI 与编排 | 模型调用、Tools、RAG、Chain、状态图、MCP client/server | LangChain / LangGraph / 官方 MCP SDK |
54
55
  | 生产治理 | 健康检查、Prometheus、限流熔断、追踪、Swagger | prometheus-client / OpenTelemetry / OpenAPI |
55
56
 
56
- 当前版本是 `2.3.5`;支持 Python 3.10、3.11 和 3.12,许可证为 MIT。项目仍标记为 Beta。用于公网高并发、合规敏感或支付/订单/库存等核心系统前,必须完成目标数据库、流量模型、故障恢复和安全基线验证。内嵌 Gateway 适合内部路由,不替代公网 Nginx/Kong/WAF;Seata `distributed` 对接官方 TC + TCC 回调;`at` 模式通过 ORM 拦截器自动生成 undo_log 实现自动回滚。
57
+ 当前版本是 `2.3.6`;支持 Python 3.10、3.11 和 3.12,许可证为 MIT。项目仍标记为 Beta。用于公网高并发、合规敏感或支付/订单/库存等核心系统前,必须完成目标数据库、流量模型、故障恢复和安全基线验证。内嵌 Gateway 适合内部路由,不替代公网 Nginx/Kong/WAF;Seata `distributed` 对接官方 TC + TCC 回调;`at` 模式通过 ORM 拦截器自动生成 undo_log 实现自动回滚。
57
58
 
58
59
  [新手指南](https://github.com/YUCONGGEN/springbootAI/blob/master/doc/BEGINNER_GUIDE.md) | [全部文档](https://github.com/YUCONGGEN/springbootAI/tree/master/doc) | [变更日志](https://github.com/YUCONGGEN/springbootAI/blob/master/CHANGELOG.md) | [安全报告](https://github.com/YUCONGGEN/springbootAI/blob/master/SECURITY.md) | [发布检查](https://github.com/YUCONGGEN/springbootAI/blob/master/doc/RELEASE_CHECKLIST.md)
59
60
 
@@ -234,10 +235,10 @@ SpringBootAI 是一个 **Python Web 框架**。它把 Java Spring Boot 的"注
234
235
 
235
236
  | 组件 | 当前版本 |
236
237
  |------|----------|
237
- | `springbootai` 框架 API | 2.3.5 |
238
- | `springbootai.orm.pymybatis` | 2.3.5 |
239
- | `springbootai.ai` AI 模块 | 2.3.5 |
240
- | `springbootai.langchain` LangChain 模块 | 2.3.5 |
238
+ | `springbootai` 框架 API | 2.3.6 |
239
+ | `springbootai.orm.pymybatis` | 2.3.6 |
240
+ | `springbootai.ai` AI 模块 | 2.3.6 |
241
+ | `springbootai.langchain` LangChain 模块 | 2.3.6 |
241
242
  | Python | 3.10+ |
242
243
 
243
244
  ### 1.4 适合什么场景
@@ -0,0 +1,137 @@
1
+ # SpringBootAI
2
+
3
+ SpringBootAI 是一个采用 Spring 风格注解和分层结构的 Python 应用框架。你可以使用 Python 编写 `@RestController`、`@Service`、`@Mapper` 和 `@Autowired`,框架负责组件扫描、依赖注入、Web 路由、事务切面及应用生命周期。
4
+
5
+ Web 运行时建立在 FastAPI、Starlette 和 Uvicorn 之上,同时提供 ORM、事务、缓存、消息队列、服务发现、生产治理以及 AI 生态集成。
6
+
7
+ > SpringBootAI 不是 Java Spring Boot 的 Python 绑定,也不是 Spring 官方项目。它适合熟悉 Controller、Service、Mapper 分层方式的团队,用统一写法开发 Web API、内部管理系统、数据服务和 AI 应用。
8
+
9
+ ## 安装
10
+
11
+ SpringBootAI 2.3.6 支持 Python 3.10、3.11 和 3.12:
12
+
13
+ ```bash
14
+ python -m pip install springbootAI
15
+ ```
16
+
17
+ 需要可选模块时,可以按需安装:
18
+
19
+ ```bash
20
+ python -m pip install "springbootAI[ai]"
21
+ python -m pip install "springbootAI[langchain]"
22
+ python -m pip install "springbootAI[langgraph]"
23
+ python -m pip install "springbootAI[mcp]"
24
+ python -m pip install "springbootAI[mysql]"
25
+ python -m pip install "springbootAI[redis]"
26
+ ```
27
+
28
+ 安装全部可选能力:
29
+
30
+ ```bash
31
+ python -m pip install "springbootAI[all]"
32
+ ```
33
+
34
+ ## 快速开始
35
+
36
+ 创建应用入口 `demo/Application.py`:
37
+
38
+ ```python
39
+ from springbootai.annotations import SpringBootApplication
40
+ from springbootai.main import run
41
+
42
+
43
+ @SpringBootApplication(scan_base_packages=["demo"])
44
+ class Application:
45
+ pass
46
+
47
+
48
+ if __name__ == "__main__":
49
+ run(Application)
50
+ ```
51
+
52
+ 创建控制器 `demo/controller/HelloController.py`:
53
+
54
+ ```python
55
+ from springbootai.annotations import GetMapping, RequestMapping, RestController
56
+ from springbootai.web.swagger import Operation, Tag
57
+
58
+
59
+ @Tag(name="入门接口", description="确认应用已经正常运行")
60
+ @RequestMapping("/api")
61
+ @RestController
62
+ class HelloController:
63
+ @Operation(summary="打招呼")
64
+ @GetMapping("/hello/{name}")
65
+ def hello(self, name: str):
66
+ return {"message": f"Hello, {name}"}
67
+ ```
68
+
69
+ 创建 `demo/application.yml`,首次运行时关闭暂时不需要的外部资源:
70
+
71
+ ```yaml
72
+ server:
73
+ host: 127.0.0.1
74
+ port: 8080
75
+
76
+ database:
77
+ enabled: false
78
+
79
+ redis:
80
+ enabled: false
81
+ ```
82
+
83
+ 启动应用:
84
+
85
+ ```bash
86
+ python -m demo.Application
87
+ ```
88
+
89
+ 访问 `http://127.0.0.1:8080/api/hello/Alice` 验证接口,访问 `http://127.0.0.1:8080/docs` 查看 Swagger 文档。
90
+
91
+ ## 核心能力
92
+
93
+ | 方向 | 能力 |
94
+ |---|---|
95
+ | Web 与 IoC | 路由映射、参数绑定、组件扫描、依赖注入、生命周期、Swagger |
96
+ | 数据与事务 | PyMyBatis Mapper、XML Mapper、分页、动态 SQL、事务和自动回滚 |
97
+ | 中间件与 Cloud | Redis、RabbitMQ、Kafka、Nacos、Feign、Gateway |
98
+ | 工程治理 | 配置合并、Profile、日志、健康检查、Prometheus、限流、熔断和链路追踪 |
99
+ | 安全能力 | JWT、OAuth2、CSRF、访问控制、密码加密和 SQL 注入防护 |
100
+ | AI 生态 | ChatClient、Tools、RAG、Advisor、LangChain、LangGraph 和 MCP client/server |
101
+ | 测试能力 | 测试切片、MockBean、TestPropertySource、集成测试和性能测试脚本 |
102
+
103
+ ## 考试认证与证书
104
+
105
+ SpringBootAI 提供配套的在线考试认证平台。学习者、团队成员和项目使用方可以通过认证考试检验自己对框架核心能力的掌握情况,并在通过考试后获得对应证书。
106
+
107
+ 认证入口:[http://www.yucg.cn:8230](http://www.yucg.cn:8230)
108
+
109
+ 认证内容建议重点关注:
110
+
111
+ - 安装、项目结构、启动入口、扫描包、配置文件和 Swagger。
112
+ - Controller、Service、Mapper 分层以及 Bean 注册、依赖注入和生命周期。
113
+ - PyMyBatis、动态 SQL、分页、事务边界和回滚行为。
114
+ - Profile、日志、健康检查、Prometheus、限流、熔断和测试切片。
115
+ - JWT、OAuth2、CSRF、访问控制和常见安全错误处理。
116
+ - ChatClient、Tools、RAG、LangChain、LangGraph 和 MCP。
117
+
118
+ 考试规则、题量、通过标准、证书领取方式和有效期以认证平台展示为准。
119
+
120
+ ## 文档
121
+
122
+ - [GitHub 项目主页](https://github.com/YUCONGGEN/springbootAI)
123
+ - [完整 README](https://github.com/YUCONGGEN/springbootAI#readme)
124
+ - [新手指南](https://github.com/YUCONGGEN/springbootAI/blob/master/doc/BEGINNER_GUIDE.md)
125
+ - [全部模块文档](https://github.com/YUCONGGEN/springbootAI/tree/master/doc)
126
+ - [变更日志](https://github.com/YUCONGGEN/springbootAI/blob/master/CHANGELOG.md)
127
+ - [安全报告](https://github.com/YUCONGGEN/springbootAI/blob/master/SECURITY.md)
128
+
129
+ ## 生产使用说明
130
+
131
+ 项目当前标记为 Beta。用于公网高并发、合规敏感或支付、订单、库存等核心系统前,请完成目标数据库、流量模型、故障恢复和安全基线验证。
132
+
133
+ 内嵌 Gateway 适合内部路由,不替代公网 Nginx、Kong 或 WAF。Seata `distributed` 模式对接官方 TC 与 TCC 回调;`at` 模式通过 ORM 拦截器生成 `undo_log` 实现自动回滚。
134
+
135
+ ## 许可证
136
+
137
+ SpringBootAI 使用 [MIT License](https://github.com/YUCONGGEN/springbootAI/blob/master/LICENSE)。
@@ -12,9 +12,9 @@ build-backend = "setuptools.build_meta"
12
12
  [project]
13
13
  # Distribution name: springbootAI (pip install springbootAI); import package: springbootai.
14
14
  name = "springbootAI"
15
- version = "2.3.5"
15
+ version = "2.3.6"
16
16
  description = "Spring-style Python framework with Web, ORM, Cloud and AI integrations"
17
- readme = "README.md"
17
+ readme = "README_PYPI.md"
18
18
  license = "MIT"
19
19
  license-files = ["LICENSE"]
20
20
  authors = [