aip-agents-binary 0.6.1__py3-none-any.whl → 0.6.2__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 (304) hide show
  1. aip_agents/examples/hello_world_ptc.py +1 -3
  2. aip_agents/tools/execute_ptc_code.py +19 -16
  3. {aip_agents_binary-0.6.1.dist-info → aip_agents_binary-0.6.2.dist-info}/METADATA +1 -1
  4. {aip_agents_binary-0.6.1.dist-info → aip_agents_binary-0.6.2.dist-info}/RECORD +6 -304
  5. aip_agents/__init__.pyi +0 -19
  6. aip_agents/a2a/__init__.pyi +0 -3
  7. aip_agents/a2a/server/__init__.pyi +0 -4
  8. aip_agents/a2a/server/base_executor.pyi +0 -73
  9. aip_agents/a2a/server/google_adk_executor.pyi +0 -51
  10. aip_agents/a2a/server/langflow_executor.pyi +0 -43
  11. aip_agents/a2a/server/langgraph_executor.pyi +0 -47
  12. aip_agents/a2a/types.pyi +0 -132
  13. aip_agents/agent/__init__.pyi +0 -9
  14. aip_agents/agent/base_agent.pyi +0 -221
  15. aip_agents/agent/base_langgraph_agent.pyi +0 -233
  16. aip_agents/agent/google_adk_agent.pyi +0 -141
  17. aip_agents/agent/google_adk_constants.pyi +0 -3
  18. aip_agents/agent/hitl/__init__.pyi +0 -6
  19. aip_agents/agent/hitl/config.pyi +0 -15
  20. aip_agents/agent/hitl/langgraph_hitl_mixin.pyi +0 -42
  21. aip_agents/agent/hitl/manager.pyi +0 -200
  22. aip_agents/agent/hitl/models.pyi +0 -3
  23. aip_agents/agent/hitl/prompt/__init__.pyi +0 -4
  24. aip_agents/agent/hitl/prompt/base.pyi +0 -24
  25. aip_agents/agent/hitl/prompt/deferred.pyi +0 -30
  26. aip_agents/agent/hitl/registry.pyi +0 -101
  27. aip_agents/agent/interface.pyi +0 -81
  28. aip_agents/agent/interfaces.pyi +0 -44
  29. aip_agents/agent/langflow_agent.pyi +0 -133
  30. aip_agents/agent/langgraph_memory_enhancer_agent.pyi +0 -49
  31. aip_agents/agent/langgraph_react_agent.pyi +0 -170
  32. aip_agents/agent/system_instruction_context.pyi +0 -13
  33. aip_agents/clients/__init__.pyi +0 -4
  34. aip_agents/clients/langflow/__init__.pyi +0 -4
  35. aip_agents/clients/langflow/client.pyi +0 -140
  36. aip_agents/clients/langflow/types.pyi +0 -7
  37. aip_agents/constants.pyi +0 -7
  38. aip_agents/examples/__init__.pyi +0 -0
  39. aip_agents/examples/compare_streaming_client.pyi +0 -48
  40. aip_agents/examples/compare_streaming_server.pyi +0 -18
  41. aip_agents/examples/demo_memory_recall.pyi +0 -58
  42. aip_agents/examples/hello_world_a2a_google_adk_client.pyi +0 -9
  43. aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +0 -9
  44. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +0 -9
  45. aip_agents/examples/hello_world_a2a_google_adk_server.pyi +0 -15
  46. aip_agents/examples/hello_world_a2a_langchain_client.pyi +0 -5
  47. aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +0 -5
  48. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +0 -5
  49. aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +0 -5
  50. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +0 -5
  51. aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +0 -15
  52. aip_agents/examples/hello_world_a2a_langchain_server.pyi +0 -15
  53. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +0 -15
  54. aip_agents/examples/hello_world_a2a_langflow_client.pyi +0 -9
  55. aip_agents/examples/hello_world_a2a_langflow_server.pyi +0 -14
  56. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +0 -5
  57. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +0 -5
  58. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +0 -16
  59. aip_agents/examples/hello_world_a2a_langgraph_client.pyi +0 -9
  60. aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +0 -9
  61. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +0 -2
  62. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +0 -9
  63. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +0 -5
  64. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +0 -5
  65. aip_agents/examples/hello_world_a2a_langgraph_server.pyi +0 -14
  66. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +0 -15
  67. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +0 -15
  68. aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +0 -48
  69. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +0 -48
  70. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +0 -45
  71. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +0 -5
  72. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +0 -15
  73. aip_agents/examples/hello_world_google_adk.pyi +0 -5
  74. aip_agents/examples/hello_world_google_adk_mcp_http.pyi +0 -5
  75. aip_agents/examples/hello_world_google_adk_mcp_http_stream.pyi +0 -5
  76. aip_agents/examples/hello_world_google_adk_mcp_sse.pyi +0 -5
  77. aip_agents/examples/hello_world_google_adk_mcp_sse_stream.pyi +0 -5
  78. aip_agents/examples/hello_world_google_adk_mcp_stdio.pyi +0 -5
  79. aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.pyi +0 -5
  80. aip_agents/examples/hello_world_google_adk_stream.pyi +0 -5
  81. aip_agents/examples/hello_world_langchain.pyi +0 -5
  82. aip_agents/examples/hello_world_langchain_lm_invoker.pyi +0 -2
  83. aip_agents/examples/hello_world_langchain_mcp_http.pyi +0 -5
  84. aip_agents/examples/hello_world_langchain_mcp_http_interactive.pyi +0 -16
  85. aip_agents/examples/hello_world_langchain_mcp_http_stream.pyi +0 -5
  86. aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +0 -18
  87. aip_agents/examples/hello_world_langchain_mcp_sse.pyi +0 -5
  88. aip_agents/examples/hello_world_langchain_mcp_sse_stream.pyi +0 -5
  89. aip_agents/examples/hello_world_langchain_mcp_stdio.pyi +0 -5
  90. aip_agents/examples/hello_world_langchain_mcp_stdio_stream.pyi +0 -5
  91. aip_agents/examples/hello_world_langchain_stream.pyi +0 -5
  92. aip_agents/examples/hello_world_langchain_stream_lm_invoker.pyi +0 -5
  93. aip_agents/examples/hello_world_langflow_agent.pyi +0 -35
  94. aip_agents/examples/hello_world_langgraph.pyi +0 -5
  95. aip_agents/examples/hello_world_langgraph_gl_connector_twitter.pyi +0 -5
  96. aip_agents/examples/hello_world_langgraph_mcp_http.pyi +0 -5
  97. aip_agents/examples/hello_world_langgraph_mcp_http_stream.pyi +0 -5
  98. aip_agents/examples/hello_world_langgraph_mcp_sse.pyi +0 -5
  99. aip_agents/examples/hello_world_langgraph_mcp_sse_stream.pyi +0 -5
  100. aip_agents/examples/hello_world_langgraph_mcp_stdio.pyi +0 -5
  101. aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.pyi +0 -5
  102. aip_agents/examples/hello_world_langgraph_stream.pyi +0 -5
  103. aip_agents/examples/hello_world_langgraph_stream_lm_invoker.pyi +0 -5
  104. aip_agents/examples/hello_world_model_switch_cli.pyi +0 -30
  105. aip_agents/examples/hello_world_multi_agent_adk.pyi +0 -6
  106. aip_agents/examples/hello_world_multi_agent_langchain.pyi +0 -5
  107. aip_agents/examples/hello_world_multi_agent_langgraph.pyi +0 -5
  108. aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.pyi +0 -5
  109. aip_agents/examples/hello_world_pii_logger.pyi +0 -5
  110. aip_agents/examples/hello_world_ptc.pyi +0 -5
  111. aip_agents/examples/hello_world_sentry.pyi +0 -21
  112. aip_agents/examples/hello_world_step_limits.pyi +0 -17
  113. aip_agents/examples/hello_world_stock_a2a_server.pyi +0 -17
  114. aip_agents/examples/hello_world_tool_output_client.pyi +0 -5
  115. aip_agents/examples/hello_world_tool_output_server.pyi +0 -19
  116. aip_agents/examples/hitl_demo.pyi +0 -67
  117. aip_agents/examples/pii_demo_langgraph_client.pyi +0 -5
  118. aip_agents/examples/pii_demo_langgraph_server.pyi +0 -20
  119. aip_agents/examples/pii_demo_multi_agent_client.pyi +0 -5
  120. aip_agents/examples/pii_demo_multi_agent_server.pyi +0 -40
  121. aip_agents/examples/todolist_planning_a2a_langchain_client.pyi +0 -5
  122. aip_agents/examples/todolist_planning_a2a_langgraph_server.pyi +0 -19
  123. aip_agents/examples/tools/__init__.pyi +0 -9
  124. aip_agents/examples/tools/adk_arithmetic_tools.pyi +0 -24
  125. aip_agents/examples/tools/adk_weather_tool.pyi +0 -18
  126. aip_agents/examples/tools/data_generator_tool.pyi +0 -15
  127. aip_agents/examples/tools/data_visualization_tool.pyi +0 -19
  128. aip_agents/examples/tools/image_artifact_tool.pyi +0 -26
  129. aip_agents/examples/tools/langchain_arithmetic_tools.pyi +0 -17
  130. aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +0 -20
  131. aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +0 -25
  132. aip_agents/examples/tools/langchain_weather_tool.pyi +0 -19
  133. aip_agents/examples/tools/langgraph_streaming_tool.pyi +0 -43
  134. aip_agents/examples/tools/mock_retrieval_tool.pyi +0 -13
  135. aip_agents/examples/tools/pii_demo_tools.pyi +0 -54
  136. aip_agents/examples/tools/random_chart_tool.pyi +0 -20
  137. aip_agents/examples/tools/serper_tool.pyi +0 -16
  138. aip_agents/examples/tools/stock_tools.pyi +0 -36
  139. aip_agents/examples/tools/table_generator_tool.pyi +0 -22
  140. aip_agents/examples/tools/time_tool.pyi +0 -15
  141. aip_agents/examples/tools/weather_forecast_tool.pyi +0 -14
  142. aip_agents/guardrails/__init__.pyi +0 -6
  143. aip_agents/guardrails/engines/__init__.pyi +0 -4
  144. aip_agents/guardrails/engines/base.pyi +0 -61
  145. aip_agents/guardrails/engines/nemo.pyi +0 -46
  146. aip_agents/guardrails/engines/phrase_matcher.pyi +0 -48
  147. aip_agents/guardrails/exceptions.pyi +0 -23
  148. aip_agents/guardrails/manager.pyi +0 -42
  149. aip_agents/guardrails/middleware.pyi +0 -87
  150. aip_agents/guardrails/schemas.pyi +0 -43
  151. aip_agents/guardrails/utils.pyi +0 -19
  152. aip_agents/mcp/__init__.pyi +0 -0
  153. aip_agents/mcp/client/__init__.pyi +0 -5
  154. aip_agents/mcp/client/base_mcp_client.pyi +0 -148
  155. aip_agents/mcp/client/connection_manager.pyi +0 -51
  156. aip_agents/mcp/client/google_adk/__init__.pyi +0 -3
  157. aip_agents/mcp/client/google_adk/client.pyi +0 -75
  158. aip_agents/mcp/client/langchain/__init__.pyi +0 -3
  159. aip_agents/mcp/client/langchain/client.pyi +0 -48
  160. aip_agents/mcp/client/persistent_session.pyi +0 -122
  161. aip_agents/mcp/client/session_pool.pyi +0 -101
  162. aip_agents/mcp/client/transports.pyi +0 -132
  163. aip_agents/mcp/utils/__init__.pyi +0 -0
  164. aip_agents/mcp/utils/config_validator.pyi +0 -82
  165. aip_agents/memory/__init__.pyi +0 -5
  166. aip_agents/memory/adapters/__init__.pyi +0 -4
  167. aip_agents/memory/adapters/base_adapter.pyi +0 -150
  168. aip_agents/memory/adapters/mem0.pyi +0 -22
  169. aip_agents/memory/base.pyi +0 -60
  170. aip_agents/memory/constants.pyi +0 -25
  171. aip_agents/memory/factory.pyi +0 -24
  172. aip_agents/memory/guidance.pyi +0 -3
  173. aip_agents/memory/simple_memory.pyi +0 -23
  174. aip_agents/middleware/__init__.pyi +0 -5
  175. aip_agents/middleware/base.pyi +0 -75
  176. aip_agents/middleware/manager.pyi +0 -84
  177. aip_agents/middleware/todolist.pyi +0 -125
  178. aip_agents/ptc/__init__.pyi +0 -10
  179. aip_agents/ptc/doc_gen.pyi +0 -40
  180. aip_agents/ptc/exceptions.pyi +0 -22
  181. aip_agents/ptc/executor.pyi +0 -73
  182. aip_agents/ptc/mcp/__init__.pyi +0 -7
  183. aip_agents/ptc/mcp/sandbox_bridge.pyi +0 -47
  184. aip_agents/ptc/mcp/templates/__init__.pyi +0 -0
  185. aip_agents/ptc/naming.pyi +0 -76
  186. aip_agents/ptc/payload.pyi +0 -15
  187. aip_agents/ptc/prompt_builder.pyi +0 -55
  188. aip_agents/ptc/ptc_helper.pyi +0 -1
  189. aip_agents/ptc/sandbox_bridge.pyi +0 -25
  190. aip_agents/ptc/template_utils.pyi +0 -13
  191. aip_agents/ptc/templates/__init__.pyi +0 -0
  192. aip_agents/sandbox/__init__.pyi +0 -5
  193. aip_agents/sandbox/defaults.pyi +0 -2
  194. aip_agents/sandbox/e2b_runtime.pyi +0 -51
  195. aip_agents/sandbox/template_builder.pyi +0 -36
  196. aip_agents/sandbox/types.pyi +0 -14
  197. aip_agents/sandbox/validation.pyi +0 -20
  198. aip_agents/schema/__init__.pyi +0 -9
  199. aip_agents/schema/a2a.pyi +0 -40
  200. aip_agents/schema/agent.pyi +0 -65
  201. aip_agents/schema/hitl.pyi +0 -89
  202. aip_agents/schema/langgraph.pyi +0 -28
  203. aip_agents/schema/model_id.pyi +0 -54
  204. aip_agents/schema/step_limit.pyi +0 -63
  205. aip_agents/schema/storage.pyi +0 -21
  206. aip_agents/sentry/__init__.pyi +0 -3
  207. aip_agents/sentry/sentry.pyi +0 -48
  208. aip_agents/storage/__init__.pyi +0 -8
  209. aip_agents/storage/base.pyi +0 -58
  210. aip_agents/storage/clients/__init__.pyi +0 -3
  211. aip_agents/storage/clients/minio_client.pyi +0 -137
  212. aip_agents/storage/config.pyi +0 -29
  213. aip_agents/storage/providers/__init__.pyi +0 -5
  214. aip_agents/storage/providers/base.pyi +0 -88
  215. aip_agents/storage/providers/memory.pyi +0 -79
  216. aip_agents/storage/providers/object_storage.pyi +0 -98
  217. aip_agents/tools/__init__.pyi +0 -10
  218. aip_agents/tools/browser_use/__init__.pyi +0 -14
  219. aip_agents/tools/browser_use/action_parser.pyi +0 -18
  220. aip_agents/tools/browser_use/browser_use_tool.pyi +0 -50
  221. aip_agents/tools/browser_use/llm_config.pyi +0 -52
  222. aip_agents/tools/browser_use/minio_storage.pyi +0 -109
  223. aip_agents/tools/browser_use/schemas.pyi +0 -32
  224. aip_agents/tools/browser_use/session.pyi +0 -4
  225. aip_agents/tools/browser_use/session_errors.pyi +0 -53
  226. aip_agents/tools/browser_use/steel_session_recording.pyi +0 -63
  227. aip_agents/tools/browser_use/streaming.pyi +0 -81
  228. aip_agents/tools/browser_use/structured_data_parser.pyi +0 -86
  229. aip_agents/tools/browser_use/structured_data_recovery.pyi +0 -43
  230. aip_agents/tools/browser_use/types.pyi +0 -45
  231. aip_agents/tools/code_sandbox/__init__.pyi +0 -3
  232. aip_agents/tools/code_sandbox/constant.pyi +0 -4
  233. aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.pyi +0 -102
  234. aip_agents/tools/code_sandbox/e2b_sandbox_tool.pyi +0 -29
  235. aip_agents/tools/constants.pyi +0 -138
  236. aip_agents/tools/document_loader/__init__.pyi +0 -7
  237. aip_agents/tools/document_loader/base_reader.pyi +0 -75
  238. aip_agents/tools/document_loader/docx_reader_tool.pyi +0 -10
  239. aip_agents/tools/document_loader/excel_reader_tool.pyi +0 -26
  240. aip_agents/tools/document_loader/pdf_reader_tool.pyi +0 -11
  241. aip_agents/tools/document_loader/pdf_splitter.pyi +0 -18
  242. aip_agents/tools/execute_ptc_code.pyi +0 -87
  243. aip_agents/tools/gl_connector/__init__.pyi +0 -3
  244. aip_agents/tools/gl_connector/tool.pyi +0 -74
  245. aip_agents/tools/gl_connector_tools.pyi +0 -39
  246. aip_agents/tools/memory_search/__init__.pyi +0 -5
  247. aip_agents/tools/memory_search/base.pyi +0 -69
  248. aip_agents/tools/memory_search/mem0.pyi +0 -19
  249. aip_agents/tools/memory_search/schema.pyi +0 -15
  250. aip_agents/tools/memory_search_tool.pyi +0 -3
  251. aip_agents/tools/time_tool.pyi +0 -16
  252. aip_agents/tools/tool_config_injector.pyi +0 -26
  253. aip_agents/tools/web_search/__init__.pyi +0 -3
  254. aip_agents/tools/web_search/serper_tool.pyi +0 -19
  255. aip_agents/types/__init__.pyi +0 -36
  256. aip_agents/types/a2a_events.pyi +0 -3
  257. aip_agents/utils/__init__.pyi +0 -11
  258. aip_agents/utils/a2a_connector.pyi +0 -146
  259. aip_agents/utils/artifact_helpers.pyi +0 -203
  260. aip_agents/utils/constants.pyi +0 -10
  261. aip_agents/utils/datetime/__init__.pyi +0 -4
  262. aip_agents/utils/datetime/normalization.pyi +0 -95
  263. aip_agents/utils/datetime/timezone.pyi +0 -48
  264. aip_agents/utils/env_loader.pyi +0 -10
  265. aip_agents/utils/event_handler_registry.pyi +0 -23
  266. aip_agents/utils/file_prompt_utils.pyi +0 -21
  267. aip_agents/utils/final_response_builder.pyi +0 -34
  268. aip_agents/utils/formatter_llm_client.pyi +0 -71
  269. aip_agents/utils/langgraph/__init__.pyi +0 -3
  270. aip_agents/utils/langgraph/converter.pyi +0 -49
  271. aip_agents/utils/langgraph/tool_managers/__init__.pyi +0 -5
  272. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +0 -35
  273. aip_agents/utils/langgraph/tool_managers/base_tool_manager.pyi +0 -48
  274. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +0 -56
  275. aip_agents/utils/langgraph/tool_output_management.pyi +0 -329
  276. aip_agents/utils/logger.pyi +0 -60
  277. aip_agents/utils/metadata/__init__.pyi +0 -5
  278. aip_agents/utils/metadata/activity_metadata_helper.pyi +0 -25
  279. aip_agents/utils/metadata/activity_narrative/__init__.pyi +0 -7
  280. aip_agents/utils/metadata/activity_narrative/builder.pyi +0 -35
  281. aip_agents/utils/metadata/activity_narrative/constants.pyi +0 -10
  282. aip_agents/utils/metadata/activity_narrative/context.pyi +0 -32
  283. aip_agents/utils/metadata/activity_narrative/formatters.pyi +0 -48
  284. aip_agents/utils/metadata/activity_narrative/utils.pyi +0 -12
  285. aip_agents/utils/metadata/schemas/__init__.pyi +0 -4
  286. aip_agents/utils/metadata/schemas/activity_schema.pyi +0 -18
  287. aip_agents/utils/metadata/schemas/thinking_schema.pyi +0 -20
  288. aip_agents/utils/metadata/thinking_metadata_helper.pyi +0 -4
  289. aip_agents/utils/metadata_helper.pyi +0 -117
  290. aip_agents/utils/name_preprocessor/__init__.pyi +0 -6
  291. aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +0 -52
  292. aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +0 -38
  293. aip_agents/utils/name_preprocessor/name_preprocessor.pyi +0 -41
  294. aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +0 -34
  295. aip_agents/utils/pii/__init__.pyi +0 -5
  296. aip_agents/utils/pii/pii_handler.pyi +0 -96
  297. aip_agents/utils/pii/pii_helper.pyi +0 -78
  298. aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +0 -73
  299. aip_agents/utils/reference_helper.pyi +0 -81
  300. aip_agents/utils/sse_chunk_transformer.pyi +0 -166
  301. aip_agents/utils/step_limit_manager.pyi +0 -112
  302. aip_agents/utils/token_usage_helper.pyi +0 -60
  303. {aip_agents_binary-0.6.1.dist-info → aip_agents_binary-0.6.2.dist-info}/WHEEL +0 -0
  304. {aip_agents_binary-0.6.1.dist-info → aip_agents_binary-0.6.2.dist-info}/top_level.txt +0 -0
aip_agents/ptc/naming.pyi DELETED
@@ -1,76 +0,0 @@
1
- from _typeshed import Incomplete
2
- from typing import Any
3
-
4
- RESERVED_MODULE_NAMES: Incomplete
5
- DEFAULT_EXAMPLE_PLACEHOLDER: str
6
-
7
- def sanitize_module_name(name: str) -> str:
8
- """Sanitize server name for use as Python module name.
9
-
10
- Args:
11
- name: Original server name.
12
-
13
- Returns:
14
- Valid Python module name (lowercase, underscored).
15
- """
16
- def sanitize_module_name_with_reserved(name: str) -> str:
17
- """Sanitize server name, avoiding reserved module names.
18
-
19
- If the sanitized name collides with a reserved name (e.g., ptc_helper),
20
- appends '_mcp' suffix to avoid collision.
21
-
22
- Args:
23
- name: Original server name.
24
-
25
- Returns:
26
- Valid Python module name that does not collide with reserved names.
27
- """
28
- def sanitize_function_name(name: str) -> str:
29
- """Sanitize tool name for use as Python function name.
30
-
31
- Args:
32
- name: Original tool name.
33
-
34
- Returns:
35
- Valid Python function name (lowercase, underscored).
36
- """
37
- def sanitize_param_name(name: str) -> str:
38
- """Sanitize parameter name for use as Python parameter.
39
-
40
- Args:
41
- name: Original parameter name (e.g., userId, user-id).
42
-
43
- Returns:
44
- Valid Python parameter name (lowercase, underscored).
45
- """
46
- def json_type_to_python(json_type: str | list) -> str:
47
- """Convert JSON schema type to Python type hint.
48
-
49
- Args:
50
- json_type: JSON schema type.
51
-
52
- Returns:
53
- Python type hint string.
54
- """
55
- def schema_to_params(schema: dict[str, Any]) -> str:
56
- """Convert JSON schema to Python function parameters.
57
-
58
- Args:
59
- schema: JSON schema for tool input.
60
-
61
- Returns:
62
- Function parameter string.
63
- """
64
- def example_value_from_schema(prop_schema: dict[str, Any], default_placeholder: str = ...) -> str:
65
- """Return an example value for a schema property.
66
-
67
- Prefers schema-provided examples, defaults, or enums, and falls back
68
- to type-based placeholders.
69
-
70
- Args:
71
- prop_schema: Property schema from JSON schema.
72
- default_placeholder: Placeholder value to use for unknown types.
73
-
74
- Returns:
75
- Example value as a Python literal string.
76
- """
@@ -1,15 +0,0 @@
1
- from dataclasses import dataclass, field
2
-
3
- @dataclass
4
- class SandboxPayload:
5
- """Payload to upload to the sandbox for PTC execution.
6
-
7
- Attributes:
8
- files: Mapping of file path -> content to upload (static bundle).
9
- per_run_files: Mapping of file path -> content to upload on every run.
10
- These files are always re-uploaded, even when the static bundle is cached.
11
- env: Environment variables to set in the sandbox.
12
- """
13
- files: dict[str, str] = field(default_factory=dict)
14
- per_run_files: dict[str, str] = field(default_factory=dict)
15
- env: dict[str, str] = field(default_factory=dict)
@@ -1,55 +0,0 @@
1
- from _typeshed import Incomplete
2
- from aip_agents.mcp.client.base_mcp_client import BaseMCPClient as BaseMCPClient
3
- from aip_agents.ptc.naming import example_value_from_schema as example_value_from_schema, sanitize_function_name as sanitize_function_name, sanitize_module_name_with_reserved as sanitize_module_name_with_reserved, sanitize_param_name as sanitize_param_name, schema_to_params as schema_to_params
4
- from aip_agents.utils.logger import get_logger as get_logger
5
- from dataclasses import dataclass
6
-
7
- logger: Incomplete
8
- PromptMode: Incomplete
9
- PYTHON_BLOCK_START: str
10
-
11
- @dataclass
12
- class PromptConfig:
13
- """Configuration for PTC prompt generation.
14
-
15
- Attributes:
16
- mode: Prompt mode - minimal, index, full, or auto.
17
- auto_threshold: Total tool count threshold for auto mode (default 10).
18
- include_example: Whether to include example code in prompt.
19
- """
20
- mode: PromptMode = ...
21
- auto_threshold: int = ...
22
- include_example: bool = ...
23
-
24
- PTC_USAGE_RULES: str
25
-
26
- def build_ptc_prompt(mcp_client: BaseMCPClient | None = None, config: PromptConfig | None = None) -> str:
27
- """Build PTC usage guidance prompt from MCP configuration.
28
-
29
- Generates a short usage block that includes:
30
- - The import pattern: MCP (`from tools.<server> import <tool>`)
31
- - Rule: use `print()`; only printed output returns
32
- - Rule: parameter names are sanitized to lowercase/underscored
33
- - Prompt mode content (minimal/index/full)
34
- - Examples based on the resolved prompt mode
35
-
36
- Args:
37
- mcp_client: The MCP client with configured servers.
38
- config: Prompt configuration. If None, uses default PromptConfig.
39
-
40
- Returns:
41
- PTC usage guidance prompt string.
42
- """
43
- def compute_ptc_prompt_hash(mcp_client: BaseMCPClient | None = None, config: PromptConfig | None = None) -> str:
44
- """Compute a hash of the MCP configuration for change detection.
45
-
46
- Includes PromptConfig fields and allowed_tools in hash computation
47
- so prompt updates re-sync correctly when configuration changes.
48
-
49
- Args:
50
- mcp_client: MCP client instance.
51
- config: Prompt configuration. If None, uses default PromptConfig.
52
-
53
- Returns:
54
- Hash string representing current configuration.
55
- """
@@ -1 +0,0 @@
1
- from aip_agents.ptc.template_utils import render_template as render_template
@@ -1,25 +0,0 @@
1
- from aip_agents.mcp.client.base_mcp_client import BaseMCPClient as BaseMCPClient
2
- from aip_agents.ptc.mcp.sandbox_bridge import build_mcp_payload as build_mcp_payload
3
- from aip_agents.ptc.payload import SandboxPayload as SandboxPayload
4
-
5
- async def build_sandbox_payload(mcp_client: BaseMCPClient | None = None, default_tool_timeout: float = 60.0) -> SandboxPayload:
6
- """Build sandbox payload from MCP client configuration (MCP-only).
7
-
8
- Args:
9
- mcp_client: The MCP client with configured servers.
10
- default_tool_timeout: Default timeout for tool calls in seconds.
11
-
12
- Returns:
13
- SandboxPayload containing files and env vars for the sandbox.
14
- """
15
- def wrap_ptc_code(code: str) -> str:
16
- """Wrap user PTC code with necessary imports and setup (MCP-only).
17
-
18
- This prepends sys.path setup to ensure the tools package is importable.
19
-
20
- Args:
21
- code: User-provided Python code.
22
-
23
- Returns:
24
- Wrapped code ready for sandbox execution.
25
- """
@@ -1,13 +0,0 @@
1
- from collections.abc import Mapping
2
-
3
- def render_template(package: str, template_name: str, values: Mapping[str, str] | None = None) -> str:
4
- """Render a template from package resources with optional substitutions.
5
-
6
- Args:
7
- package: Package path containing the template.
8
- template_name: Template filename.
9
- values: Optional mapping of template variables.
10
-
11
- Returns:
12
- Rendered template content.
13
- """
File without changes
@@ -1,5 +0,0 @@
1
- from aip_agents.sandbox.e2b_runtime import E2BSandboxRuntime as E2BSandboxRuntime
2
- from aip_agents.sandbox.template_builder import ensure_ptc_template as ensure_ptc_template
3
- from aip_agents.sandbox.types import SandboxExecutionResult as SandboxExecutionResult
4
-
5
- __all__ = ['E2BSandboxRuntime', 'ensure_ptc_template', 'SandboxExecutionResult']
@@ -1,2 +0,0 @@
1
- DEFAULT_PTC_TEMPLATE: str
2
- DEFAULT_PTC_PACKAGES: tuple[str, ...]
@@ -1,51 +0,0 @@
1
- from _typeshed import Incomplete
2
- from aip_agents.sandbox.defaults import DEFAULT_PTC_PACKAGES as DEFAULT_PTC_PACKAGES, DEFAULT_PTC_TEMPLATE as DEFAULT_PTC_TEMPLATE
3
- from aip_agents.sandbox.types import SandboxExecutionResult as SandboxExecutionResult
4
- from aip_agents.sandbox.validation import validate_package_names as validate_package_names
5
- from aip_agents.utils.logger import get_logger as get_logger
6
-
7
- logger: Incomplete
8
- SANDBOX_NOT_INITIALIZED_ERROR: str
9
-
10
- class E2BSandboxRuntime:
11
- '''E2B Sandbox runtime for executing code in isolated environments.
12
-
13
- This runtime manages per-run sandbox lifecycle:
14
- - Create sandbox on first execute
15
- - Reuse sandbox for subsequent executes
16
- - Destroy sandbox on cleanup
17
-
18
- Example:
19
- runtime = E2BSandboxRuntime()
20
- result = await runtime.execute(
21
- code="print(\'Hello\')",
22
- timeout=60.0,
23
- files={"tools/mcp.py": "# MCP client code"},
24
- )
25
- await runtime.cleanup()
26
- '''
27
- def __init__(self, template: str | None = None, ptc_packages: list[str] | None = None) -> None:
28
- """Initialize E2B sandbox runtime.
29
-
30
- Args:
31
- template: Optional E2B template ID for custom sandbox environments.
32
- ptc_packages: Packages to install in sandbox. If None or empty, skip install.
33
- """
34
- async def execute(self, code: str, *, timeout: float = 300.0, files: dict[str, str] | None = None, env: dict[str, str] | None = None, template: str | None = None) -> SandboxExecutionResult:
35
- """Execute code inside the sandbox.
36
-
37
- Args:
38
- code: Python code to execute.
39
- timeout: Execution timeout in seconds.
40
- files: Files to upload to the sandbox (path -> content).
41
- env: Environment variables to set.
42
- template: Optional template override for this execution.
43
-
44
- Returns:
45
- SandboxExecutionResult with stdout, stderr, and exit_code.
46
- """
47
- async def cleanup(self) -> None:
48
- """Destroy the sandbox and release resources."""
49
- @property
50
- def is_active(self) -> bool:
51
- """Check if a sandbox is currently active."""
@@ -1,36 +0,0 @@
1
- from _typeshed import Incomplete
2
- from aip_agents.sandbox.validation import validate_package_names as validate_package_names
3
- from aip_agents.utils.logger import get_logger as get_logger
4
- from e2b import Template
5
-
6
- logger: Incomplete
7
-
8
- def create_ptc_template(base_template: str, ptc_packages: list[str] | None) -> Template:
9
- '''Create a PTC template definition based on a base template.
10
-
11
- Args:
12
- base_template: Base template alias to build from (e.g., "code-interpreter-v1").
13
- ptc_packages: List of packages to install in the template.
14
- If None or empty, skips pip install step.
15
-
16
- Returns:
17
- Template: A configured template ready to be built.
18
- '''
19
- def ensure_ptc_template(template_id: str, base_template: str, ptc_packages: list[str] | None, force_rebuild: bool = False) -> str | None:
20
- '''Ensure a PTC sandbox template exists, creating it if necessary.
21
-
22
- This is an explicit helper that apps can call at startup to ensure the
23
- template exists. It is never run implicitly by the SDK.
24
-
25
- Args:
26
- template_id: Unique alias for the template (e.g., "aip-agents-ptc-v1").
27
- base_template: Base template alias to build from
28
- (e.g., "code-interpreter-v1").
29
- ptc_packages: List of packages to install in the template.
30
- If None or empty, skips pip install step.
31
- force_rebuild: If True, rebuild even if alias exists.
32
-
33
- Returns:
34
- The template_id on success, None if creation failed.
35
- Never raises exceptions.
36
- '''
@@ -1,14 +0,0 @@
1
- from dataclasses import dataclass
2
-
3
- @dataclass
4
- class SandboxExecutionResult:
5
- """Result of a sandbox code execution.
6
-
7
- Attributes:
8
- stdout: Standard output from the execution.
9
- stderr: Standard error from the execution.
10
- exit_code: Exit code (0 for success, non-zero for failure).
11
- """
12
- stdout: str
13
- stderr: str
14
- exit_code: int
@@ -1,20 +0,0 @@
1
- def validate_package_name(package: str) -> bool:
2
- """Validate package name/specifier format for pip install.
3
-
4
- Allows standard pip formats: package, package==version, package[extra].
5
-
6
- Args:
7
- package: Package name or specifier to validate.
8
-
9
- Returns:
10
- True if package name is valid, False otherwise.
11
- """
12
- def validate_package_names(packages: list[str]) -> None:
13
- """Validate all package names in a list.
14
-
15
- Args:
16
- packages: List of package names or specifiers to validate.
17
-
18
- Raises:
19
- ValueError: If any package name is invalid.
20
- """
@@ -1,9 +0,0 @@
1
- from aip_agents.schema.a2a import A2AEvent as A2AEvent, A2AStreamEventType as A2AStreamEventType, ToolCallInfo as ToolCallInfo, ToolResultInfo as ToolResultInfo
2
- from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig, AgentConfig as AgentConfig, BaseAgentConfig as BaseAgentConfig, CredentialType as CredentialType, HttpxClientOptions as HttpxClientOptions, LangflowAgentConfig as LangflowAgentConfig, StreamMode as StreamMode
3
- from aip_agents.schema.hitl import ApprovalDecision as ApprovalDecision, ApprovalDecisionType as ApprovalDecisionType, ApprovalLogEntry as ApprovalLogEntry, ApprovalRequest as ApprovalRequest, HitlMetadata as HitlMetadata
4
- from aip_agents.schema.langgraph import ToolCallResult as ToolCallResult, ToolStorageParams as ToolStorageParams
5
- from aip_agents.schema.model_id import ModelId as ModelId, ModelProvider as ModelProvider
6
- from aip_agents.schema.step_limit import MaxDelegationDepthExceededError as MaxDelegationDepthExceededError, MaxStepsExceededError as MaxStepsExceededError, StepLimitConfig as StepLimitConfig, StepLimitError as StepLimitError, StepLimitErrorResponse as StepLimitErrorResponse, StepLimitErrorType as StepLimitErrorType
7
- from aip_agents.schema.storage import OBJECT_STORAGE_PREFIX as OBJECT_STORAGE_PREFIX, StorageConfig as StorageConfig, StorageType as StorageType
8
-
9
- __all__ = ['A2AEvent', 'A2AStreamEventType', 'ToolCallInfo', 'ToolResultInfo', 'A2AClientConfig', 'AgentConfig', 'BaseAgentConfig', 'CredentialType', 'HttpxClientOptions', 'LangflowAgentConfig', 'StreamMode', 'ApprovalDecision', 'ApprovalDecisionType', 'ApprovalLogEntry', 'ApprovalRequest', 'HitlMetadata', 'ToolCallResult', 'ToolStorageParams', 'ModelId', 'ModelProvider', 'OBJECT_STORAGE_PREFIX', 'StorageConfig', 'StorageType', 'MaxDelegationDepthExceededError', 'MaxStepsExceededError', 'StepLimitConfig', 'StepLimitError', 'StepLimitErrorResponse', 'StepLimitErrorType']
aip_agents/schema/a2a.pyi DELETED
@@ -1,40 +0,0 @@
1
- from enum import Enum
2
- from typing import Any
3
- from typing_extensions import TypedDict
4
-
5
- __all__ = ['A2AStreamEventType', 'A2AEvent', 'ToolCallInfo', 'ToolResultInfo']
6
-
7
- class A2AStreamEventType(Enum):
8
- """Semantic event types for A2A agent-executor communication."""
9
- STATUS_UPDATE: str
10
- CONTENT_CHUNK: str
11
- FINAL_RESPONSE: str
12
- TOOL_CALL: str
13
- TOOL_RESULT: str
14
- ERROR: str
15
- STEP_LIMIT_EXCEEDED: str
16
-
17
- class A2AEvent(TypedDict):
18
- """Structured event data used by the A2A connector."""
19
- event_type: A2AStreamEventType
20
- content: str
21
- metadata: dict[str, Any]
22
- tool_info: dict[str, Any] | None
23
- is_final: bool
24
- artifacts: list[dict[str, Any]] | None
25
- references: list[Any] | None
26
- step_usage: dict[str, Any] | None
27
- total_usage: dict[str, Any] | None
28
- thinking_and_activity_info: dict[str, Any] | None
29
-
30
- class ToolCallInfo(TypedDict):
31
- """Structured information for tool invocation events."""
32
- tool_calls: list[dict[str, Any]]
33
- status: str
34
-
35
- class ToolResultInfo(TypedDict):
36
- """Structured information for tool completion events."""
37
- name: str
38
- args: dict[str, Any]
39
- output: str
40
- execution_time: float | None
@@ -1,65 +0,0 @@
1
- from _typeshed import Incomplete
2
- from a2a.types import AgentCard
3
- from enum import StrEnum
4
- from gllm_core.utils.retry import RetryConfig
5
- from pydantic import BaseModel
6
- from typing import Any
7
-
8
- __all__ = ['CredentialType', 'StreamMode', 'HttpxClientOptions', 'A2AClientConfig', 'BaseAgentConfig', 'AgentConfig', 'LangflowAgentConfig']
9
-
10
- class CredentialType(StrEnum):
11
- """Credential type enumeration for type safety and better developer experience."""
12
- API_KEY: str
13
- FILE: str
14
- DICT: str
15
-
16
- class StreamMode(StrEnum):
17
- """LangGraph stream modes for astream operations."""
18
- VALUES: str
19
- CUSTOM: str
20
- MESSAGES: str
21
-
22
- class HttpxClientOptions(BaseModel):
23
- """Options for the HTTP client."""
24
- timeout: float
25
- trust_env: bool
26
- follow_redirects: bool
27
- model_config: Incomplete
28
- class Config:
29
- """Pydantic v1 fallback config for HttpxClientOptions."""
30
- extra: str
31
-
32
- class A2AClientConfig(BaseModel):
33
- """Configuration for A2A client."""
34
- discovery_urls: list[str] | None
35
- known_agents: dict[str, AgentCard]
36
- httpx_client_options: HttpxClientOptions | None
37
-
38
- class BaseAgentConfig(BaseModel):
39
- """Base configuration for agent implementations."""
40
- tools: list[Any] | None
41
- default_hyperparameters: dict[str, Any] | None
42
- model_config: Incomplete
43
- class Config:
44
- """Pydantic v1 fallback config for BaseAgentConfig."""
45
- extra: str
46
-
47
- class AgentConfig(BaseAgentConfig):
48
- """Configuration for agent implementations with language model settings."""
49
- lm_name: str | None
50
- lm_hyperparameters: dict[str, Any] | None
51
- lm_provider: str | None
52
- lm_base_url: str | None
53
- lm_api_key: str | None
54
- lm_credentials: str | dict[str, Any] | None
55
- lm_retry_config: RetryConfig | None
56
-
57
- class LangflowAgentConfig(BaseAgentConfig):
58
- """Configuration for Langflow agent implementations."""
59
- flow_id: str
60
- base_url: str | None
61
- api_key: str | None
62
- model_config: Incomplete
63
- class Config:
64
- """Pydantic v1 fallback config for LangflowAgentConfig."""
65
- extra: str
@@ -1,89 +0,0 @@
1
- from _typeshed import Incomplete
2
- from dataclasses import dataclass
3
- from datetime import datetime
4
- from enum import StrEnum
5
- from pydantic import BaseModel
6
- from typing import Any
7
-
8
- __all__ = ['ApprovalDecisionType', 'ApprovalRequest', 'ApprovalDecision', 'ApprovalLogEntry', 'HitlMetadata']
9
-
10
- class ApprovalDecisionType(StrEnum):
11
- """Enumeration of possible approval decision types."""
12
- APPROVED: str
13
- REJECTED: str
14
- SKIPPED: str
15
- TIMEOUT_SKIP: str
16
- PENDING: str
17
-
18
- @dataclass
19
- class ApprovalRequest:
20
- """Represents an in-flight prompt shown to the operator."""
21
- request_id: str
22
- tool_name: str
23
- arguments_preview: str
24
- context: dict[str, str] | None = ...
25
- created_at: datetime | None = ...
26
- timeout_at: datetime | None = ...
27
- def __post_init__(self) -> None:
28
- """Initialize timestamps if not provided."""
29
- @classmethod
30
- def create(cls, tool_name: str, arguments_preview: str, context: dict[str, str] | None = None) -> ApprovalRequest:
31
- """Create a new approval request with generated request_id.
32
-
33
- Args:
34
- tool_name (str): The name of the tool requiring approval.
35
- arguments_preview (str): A preview of the arguments for display.
36
- context (dict[str, str] | None, optional): Additional context information.
37
-
38
- Returns:
39
- ApprovalRequest: A new approval request instance.
40
- """
41
-
42
- @dataclass
43
- class ApprovalDecision:
44
- """Captures the operator outcome."""
45
- request_id: str
46
- decision: ApprovalDecisionType
47
- operator_input: str
48
- decided_at: datetime | None = ...
49
- latency_ms: int | None = ...
50
- def __post_init__(self) -> None:
51
- """Initialize timestamp if not provided."""
52
-
53
- @dataclass
54
- class ApprovalLogEntry:
55
- """Structured log entry for HITL decisions."""
56
- request_id: str
57
- tool_name: str
58
- decision: str
59
- event: str = ...
60
- agent_id: str | None = ...
61
- thread_id: str | None = ...
62
- additional_context: dict[str, Any] | None = ...
63
- timestamp: datetime | None = ...
64
- def __post_init__(self) -> None:
65
- """Initialize timestamp if not provided."""
66
-
67
- class HitlMetadata(BaseModel):
68
- """Structured metadata payload included in agent streaming events."""
69
- required: bool
70
- decision: ApprovalDecisionType
71
- request_id: str
72
- timeout_seconds: int | None
73
- timeout_at: datetime | None
74
- model_config: Incomplete
75
- def as_payload(self) -> dict[str, Any]:
76
- """Return a JSON-ready metadata payload."""
77
- @classmethod
78
- def from_decision(cls, decision: ApprovalDecision, *, required: bool = True, timeout_seconds: int | None = None, timeout_at: datetime | None = None) -> HitlMetadata:
79
- """Build metadata from an ``ApprovalDecision``.
80
-
81
- Args:
82
- decision (ApprovalDecision): The approval decision to build metadata from.
83
- required (bool, optional): Whether approval is required. Defaults to True.
84
- timeout_seconds (int | None, optional): Timeout in seconds for the decision.
85
- timeout_at (datetime | None, optional): Specific timeout datetime.
86
-
87
- Returns:
88
- HitlMetadata: The constructed metadata instance.
89
- """
@@ -1,28 +0,0 @@
1
- from dataclasses import dataclass
2
- from gllm_core.schema import Chunk
3
- from langchain_core.messages import ToolMessage
4
- from langchain_core.messages.ai import UsageMetadata
5
- from langchain_core.tools import BaseTool
6
- from typing import Any
7
-
8
- __all__ = ['ToolCallResult', 'ToolStorageParams']
9
-
10
- @dataclass
11
- class ToolCallResult:
12
- """Container for the results of a single tool call execution."""
13
- messages: list[ToolMessage]
14
- artifacts: list[dict[str, Any]]
15
- metadata_delta: dict[str, Any]
16
- references: list[Chunk]
17
- step_usage: UsageMetadata | None
18
- pii_mapping: dict[str, str] | None = ...
19
-
20
- @dataclass
21
- class ToolStorageParams:
22
- """Parameters required for automatically storing tool outputs."""
23
- tool: BaseTool
24
- tool_output: Any
25
- tool_call: dict[str, Any]
26
- tool_call_id: str
27
- resolved_args: dict[str, Any]
28
- state: dict[str, Any]
@@ -1,54 +0,0 @@
1
- from _typeshed import Incomplete
2
- from enum import StrEnum
3
-
4
- __all__ = ['ModelId', 'ModelProvider']
5
-
6
- class ModelProvider(StrEnum):
7
- """Enumeration of supported model providers for the AI agent platform."""
8
- OPENAI: str
9
- ANTHROPIC: str
10
- AZURE_OPENAI: str
11
- GOOGLE_GENAI: str
12
- GROQ: str
13
- TOGETHER_AI: str
14
- DEEPINFRA: str
15
- DEEPSEEK: str
16
- OPENAI_COMPATIBLE: str
17
-
18
- class ModelId:
19
- """Model identifier class for representing language models."""
20
- provider: Incomplete
21
- name: Incomplete
22
- path: Incomplete
23
- def __init__(self, provider: str, name: str, path: str | None = None) -> None:
24
- """Initialize a ModelId.
25
-
26
- Args:
27
- provider: The model provider (e.g., 'openai', 'anthropic')
28
- name: The specific model name
29
- path: Optional path component for some providers
30
- """
31
- @classmethod
32
- def from_string(cls, model_string: str) -> ModelId:
33
- """Create a ModelId from a string representation.
34
-
35
- Args:
36
- model_string: String in format 'provider:name' or 'provider/path:name'
37
-
38
- Returns:
39
- ModelId instance
40
-
41
- Raises:
42
- ValueError: If the string format is invalid
43
- """
44
- def __eq__(self, other: object) -> bool:
45
- """Check equality with another ModelId object.
46
-
47
- Args:
48
- other (object): The object to compare with.
49
-
50
- Returns:
51
- bool: True if the objects are equal, False otherwise.
52
- """
53
- def __hash__(self) -> int:
54
- """Return hash of the ModelId."""