<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Antigravity 實踐 (Antigravity Practice) on 哈爸筆記</title>
    <link>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/</link>
    <description>Recent content in Antigravity 實踐 (Antigravity Practice) on 哈爸筆記</description>
    <image>
      <title>哈爸筆記</title>
      <url>https://wuulong.github.io/wuulong-notes-blog/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://wuulong.github.io/wuulong-notes-blog/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.152.2</generator>
    <language>zh-tw</language>
    <atom:link href="https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title></title>
      <link>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/aiqa-antigravity-practice/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/aiqa-antigravity-practice/</guid>
      <description>&lt;h1 id=&#34;背景說明&#34;&gt;背景說明&lt;a class=&#34;anchor&#34; href=&#34;#%e8%83%8c%e6%99%af%e8%aa%aa%e6%98%8e&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;模型與環境： antigravity with Gemini 3.0 Flash Think,  &amp;hellip;&lt;/li&gt;
&lt;li&gt;代號部分： Q 為哈爸提問，A 為 AI 回答，Ｍ是我對這個問題的相關註解，T 為模型提供的思考過程&lt;/li&gt;
&lt;li&gt;本文版本：&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;版本歷史&#34;&gt;版本歷史&lt;a class=&#34;anchor&#34; href=&#34;#%e7%89%88%e6%9c%ac%e6%ad%b7%e5%8f%b2&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h1 id=&#34;筆記&#34;&gt;筆記&lt;a class=&#34;anchor&#34; href=&#34;#%e7%ad%86%e8%a8%98&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h1 id=&#34;qa&#34;&gt;QA&lt;a class=&#34;anchor&#34; href=&#34;#qa&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-dataview&#34; data-lang=&#34;dataview&#34;&gt;TABLE WITHOUT ID Q,M FROM &amp;#34;ChatGPT-QA/AIQA-&amp;#34; &lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;q81-sessions-的內容架構&#34;&gt;Q8.1-sessions 的內容架構&lt;a class=&#34;anchor&#34; href=&#34;#q81-sessions-%e7%9a%84%e5%85%a7%e5%ae%b9%e6%9e%b6%e6%a7%8b&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;M::&lt;/li&gt;
&lt;li&gt;Q::能否將剛才執行的 log, 寫入 events/notes/wuulong-notes-blog/content/kb/antigravity-practice/logs，我想查看過程&lt;/li&gt;
&lt;li&gt;A::
Listed directory sessions
Edited inspect_session_db.py
Ran command: &lt;code&gt;python /Users/wuulong/.gemini/antigravity/brain/a4db2743-acdb-482d-b14c-cb343d21adea/scratch/inspect_session_db.py&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個 &lt;code&gt;.db&lt;/code&gt; 檔案的本質是一個&lt;strong&gt;標準的 SQLite 資料庫&lt;/strong&gt;。Antigravity 平台使用 SQLite 作為它的 &lt;strong&gt;State Storage Engine (狀態存儲引擎)&lt;/strong&gt;，來保存 Agent 在執行過程中的所有推理軌跡與上下文。&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/antigravity_sdk_tree/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/antigravity_sdk_tree/</guid>
      <description>&lt;h1 id=&#34;-googleantigravity-模組架構拓撲樹&#34;&gt;📄 google.antigravity 模組架構拓撲樹&lt;a class=&#34;anchor&#34; href=&#34;#-googleantigravity-%e6%a8%a1%e7%b5%84%e6%9e%b6%e6%a7%8b%e6%8b%93%e6%92%b2%e6%a8%b9&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class=&#39;book-hint &#39;&gt;
&lt;p&gt;本文件由 &lt;code&gt;dump_module_tree.py&lt;/code&gt; 自動探測生成。&lt;/p&gt;
&lt;/blockquote&gt;&lt;hr&gt;
&lt;h2 id=&#34;-模組-googleantigravity&#34;&gt;📦 模組: &lt;code&gt;google.antigravity&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravity&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/__init__.py&#34;&gt;&lt;strong&gt;init&lt;/strong&gt;.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Agent(config: google.antigravity.connections.connection.AgentConfig)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: High-level Agent API for simplified interaction.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def chat(prompt: str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand | collections.abc.Sequence[str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand])&lt;/code&gt; — &lt;em&gt;Sends a prompt and returns the final response.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AgentConfig(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Abstract base class for agent configuration.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_strategy(tool_runner: Any, hook_runner: Any)&lt;/code&gt; — &lt;em&gt;Creates the ConnectionStrategy for this config.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: Optional[Mapping[str, Any]] = None, deep: bool = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Audio(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Audio content attachment primitive.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_file(path: &#39;str | pathlib.Path&#39;, description: &#39;str | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Instantiates a media content primitive from a local file path.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class BuiltinTools(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Identifiers for common connection-provided builtin tools.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class CapabilitiesConfig(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: General agent capability configuration.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class CustomSystemInstructions(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Use this to completely replace the system instructions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Document(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Document content attachment primitive.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_file(path: &#39;str | pathlib.Path&#39;, description: &#39;str | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Instantiates a media content primitive from a local file path.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class GeminiAPIEndpoint(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Endpoint for the Gemini Developer API.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate_endpoint(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class GeminiModelOptions(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Gemini-specific model options.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Image(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Image content attachment primitive.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_file(path: &#39;str | pathlib.Path&#39;, description: &#39;str | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Instantiates a media content primitive from a local file path.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalAgentConfig(system_instructions: str | google.antigravity.types.CustomSystemInstructions | google.antigravity.types.TemplatedSystemInstructions | None = None, capabilities: google.antigravity.types.CapabilitiesConfig | None = None, tools: list[typing.Callable[..., typing.Any]] | None = None, policies: Optional[Sequence[Union[google.antigravity.hooks.policy.Policy, Sequence[google.antigravity.hooks.policy.Policy]]]] = None, hooks: list[google.antigravity.hooks.hooks.InspectHook | google.antigravity.hooks.hooks.DecideHook | google.antigravity.hooks.hooks.TransformHook] | None = None, triggers: list[typing.Callable[[google.antigravity.triggers.triggers.TriggerContext], typing.Awaitable[NoneType]]] | None = None, mcp_servers: list[google.antigravity.types.McpStdioServer | google.antigravity.types.McpStreamableHttpServer] | None = None, workspaces: list[str] | None = None, conversation_id: str | None = None, save_dir: str | None = None, app_data_dir: str | None = None, response_schema: dict[str, typing.Any] | type[pydantic.main.BaseModel] | str | None = None, skills_paths: list[str] | None = None, model: str | google.antigravity.models.ModelTarget | None = None, models: list[google.antigravity.models.ModelTarget] | None = None, api_key: str | None = None, vertex: bool | None = None, project: str | None = None, location: str | None = None, **kwargs: Any)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Configuration for the local harness backend.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_strategy(tool_runner: Any, hook_runner: Any)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: Optional[Mapping[str, Any]] = None, deep: bool = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ModelEndpoint(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Base class for model endpoint authentication &amp;amp; routing.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate_endpoint(None)&lt;/code&gt; — &lt;em&gt;Validates the configuration of the endpoint.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ModelTarget(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Configuration for a single model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ModelType(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Discriminator for model purpose.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SystemInstructionSection(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: A named section to append to the system instructions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TemplatedSystemInstructions(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Use this to override the agent&amp;rsquo;s identity and append sections to the default system instructions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ThinkingLevel(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Thinking level for Gemini models that support extended thinking.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ToolContext(conversation: google.antigravity.conversation.conversation.Conversation)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Conversation-aware context injected into tools that request it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def get_state(key: str, default: Any = None)&lt;/code&gt; — &lt;em&gt;Retrieves a value from the per-conversation state store.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def set_state(key: str, value: Any)&lt;/code&gt; — &lt;em&gt;Stores a value in the per-conversation state store.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class UsageMetadata(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Token usage metadata from the model API.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class VertexEndpoint(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Endpoint for the Vertex AI backend.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate_endpoint(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Video(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Video content attachment primitive.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_file(path: &#39;str | pathlib.Path&#39;, description: &#39;str | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Instantiates a media content primitive from a local file path.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-模組-googleantigravityagent&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.agent&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityagent&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/agent.py&#34;&gt;agent.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-1&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-1&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Agent(config: google.antigravity.connections.connection.AgentConfig)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: High-level Agent API for simplified interaction.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def chat(prompt: str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand | collections.abc.Sequence[str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand])&lt;/code&gt; — &lt;em&gt;Sends a prompt and returns the final response.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-模組-googleantigravityagent_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.agent_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityagent_test&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/agent_test.py&#34;&gt;agent_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-2&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-2&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AgentConfigTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for AgentConfig sugar, conflict guards, and defensive copy.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_with_response_schema(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_conversation_id_returns_none_before_session(None)&lt;/code&gt; — &lt;em&gt;Verifies conversation_id is None before the session starts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_conversation_id_returns_value_after_session(None)&lt;/code&gt; — &lt;em&gt;Verifies conversation_id returns the runtime-assigned ID.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_defaults(None)&lt;/code&gt; — &lt;em&gt;Verifies AgentConfig defaults: safe policies, default model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_model_sugar_does_not_clobber_image_generation(None)&lt;/code&gt; — &lt;em&gt;Verifies model sugar only sets default slot, not image_generation.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_sugar_api_key_flows_to_models(None)&lt;/code&gt; — &lt;em&gt;Verifies api_key sugar flows to config.models.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_sugar_model_flows_to_models(None)&lt;/code&gt; — &lt;em&gt;Verifies model sugar flows to config.models.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AgentTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_aexit_passes_exceptions(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_aexit_returns_suppression_status(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_api_key_env(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_chat(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_chat_before_start(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_chat_multimodal_input(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Verifies that the Agent public API method accepts multimodal Content payloads.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_conversation_after_start(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Verifies conversation returns the Conversation instance after start.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_conversation_before_start(None)&lt;/code&gt; — &lt;em&gt;Verifies conversation raises RuntimeError before session starts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_default_capabilities(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Default LocalAgentConfig enables all tools (permissive).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_is_started_after_start(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Verifies is_started returns True inside async with.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_is_started_before_start(None)&lt;/code&gt; — &lt;em&gt;Verifies is_started returns False before session starts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_lifecycle(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_mcp_server_unknown_type(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_model_sugar_flows_to_strategy(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_register_hook(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_register_trigger(mock_trigger_runner_class, mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_requires_policies_in_write_mode(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_with_policies(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_with_session_config(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_with_skills_paths(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_with_system_instructions_object(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_agent_write_mode_with_policies(mock_conv_create, mock_strategy_class)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_policy_guard_empty_disabled_tools(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Guard fires when disabled_tools=[] (= all tools enabled).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_policy_guard_explicit_all_tools(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Guard fires when all tools are listed explicitly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_policy_guard_explicit_write_tool(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Guard fires when enabled_tools includes a non-read-only tool.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_policy_guard_mcp_server_requires_policies_or_hook(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Guard fires when MCP servers are present but no policies or hooks.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_policy_guard_mcp_server_with_hook_passes(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;No guard when MCP servers are present AND a decide hook is provided.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_policy_guard_mcp_server_with_policy_passes(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;No guard when MCP servers are present AND policies are provided.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_policy_guard_read_only_explicit_passes(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;No guard when only read-only tools are explicitly enabled.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_policy_guard_write_tools_with_policy_passes(mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;No guard when write tools are enabled AND policies are provided.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-模組-googleantigravityconnections&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnections&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/__init__.py&#34;&gt;&lt;strong&gt;init&lt;/strong&gt;.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityconnectionsconnection&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections.connection&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnectionsconnection&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/connection.py&#34;&gt;connection.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-3&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-3&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AgentConfig(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Abstract base class for agent configuration.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_strategy(tool_runner: Any, hook_runner: Any)&lt;/code&gt; — &lt;em&gt;Creates the ConnectionStrategy for this config.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: Optional[Mapping[str, Any]] = None, deep: bool = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Connection(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: A live session with an agent backend.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def cancel(None)&lt;/code&gt; — &lt;em&gt;Cancels the current turn in progress.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def disconnect(None)&lt;/code&gt; — &lt;em&gt;Disconnects the session and releases resources.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def receive_steps(None)&lt;/code&gt; — &lt;em&gt;Receives steps as they complete from the agent.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send(prompt: str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand | collections.abc.Sequence[str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand] | None, **kwargs: Any)&lt;/code&gt; — &lt;em&gt;Sends a prompt to the agent.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send_trigger_notification(content: str)&lt;/code&gt; — &lt;em&gt;Sends a trigger message to the agent.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def wait_for_idle(None)&lt;/code&gt; — &lt;em&gt;Blocks until the connection becomes idle.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def wait_for_wakeup(timeout: float = 300.0)&lt;/code&gt; — &lt;em&gt;Blocks until the connection wakes up or the timeout is reached.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ConnectionStrategy(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Strategy for establishing a Connection to an agent backend.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def connect(None)&lt;/code&gt; — &lt;em&gt;Returns the established Connection.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityconnectionsconnection_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections.connection_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnectionsconnection_test&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/connection_test.py&#34;&gt;connection_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-4&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-4&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AgentConfigTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_cannot_instantiate_abc(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_concrete_subclass_works(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_model_copy_deep_preserves_executable_references(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_policies_validation(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_response_schema_invalid_json_raises(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_response_schema_unsupported_type_raises(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_response_schema_valid_json_string(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_subclass_must_implement_create_strategy(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ConnectionTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_default_implementations(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class DummyConnection(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def cancel(None)&lt;/code&gt; — &lt;em&gt;Cancels the current turn in progress.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def disconnect(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def receive_steps(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send(prompt: str, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send_trigger_notification(content: str)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def wait_for_idle(None)&lt;/code&gt; — &lt;em&gt;Blocks until the connection becomes idle.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def wait_for_wakeup(timeout: float = 300.0)&lt;/code&gt; — &lt;em&gt;Blocks until the connection wakes up or the timeout is reached.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityconnectionslocal&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections.local&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnectionslocal&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/local/__init__.py&#34;&gt;&lt;strong&gt;init&lt;/strong&gt;.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-5&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-5&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class EditFileResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from an edit_file tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class FindFileResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from a find_file tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class GenerateImageResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from a generate_image tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ListDirectoryEntry(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Single entry in a directory listing.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ListDirectoryResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from a list_directory tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalAgentConfig(system_instructions: str | google.antigravity.types.CustomSystemInstructions | google.antigravity.types.TemplatedSystemInstructions | None = None, capabilities: google.antigravity.types.CapabilitiesConfig | None = None, tools: list[typing.Callable[..., typing.Any]] | None = None, policies: Optional[Sequence[Union[google.antigravity.hooks.policy.Policy, Sequence[google.antigravity.hooks.policy.Policy]]]] = None, hooks: list[google.antigravity.hooks.hooks.InspectHook | google.antigravity.hooks.hooks.DecideHook | google.antigravity.hooks.hooks.TransformHook] | None = None, triggers: list[typing.Callable[[google.antigravity.triggers.triggers.TriggerContext], typing.Awaitable[NoneType]]] | None = None, mcp_servers: list[google.antigravity.types.McpStdioServer | google.antigravity.types.McpStreamableHttpServer] | None = None, workspaces: list[str] | None = None, conversation_id: str | None = None, save_dir: str | None = None, app_data_dir: str | None = None, response_schema: dict[str, typing.Any] | type[pydantic.main.BaseModel] | str | None = None, skills_paths: list[str] | None = None, model: str | google.antigravity.models.ModelTarget | None = None, models: list[google.antigravity.models.ModelTarget] | None = None, api_key: str | None = None, vertex: bool | None = None, project: str | None = None, location: str | None = None, **kwargs: Any)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Configuration for the local harness backend.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_strategy(tool_runner: Any, hook_runner: Any)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: Optional[Mapping[str, Any]] = None, deep: bool = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnection(process: subprocess.Popen[bytes] | None, ws: Any, tool_runner: google.antigravity.tools.tool_runner.ToolRunner | None = None, hook_runner: google.antigravity.hooks.hook_runner.HookRunner | None = None, initial_history: Optional[Sequence[google.antigravity.types.Step]] = None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Connection to the Go-based local harness.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def cancel(None)&lt;/code&gt; — &lt;em&gt;Cancels the current turn.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def disconnect(None)&lt;/code&gt; — &lt;em&gt;Tears down the harness connection in a careful order.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def receive_steps(None)&lt;/code&gt; — &lt;em&gt;Receives steps as they complete from the agent.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send(prompt: str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand | collections.abc.Sequence[str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand] | None, **kwargs: Any)&lt;/code&gt; — &lt;em&gt;Sends a prompt to the agent.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send_trigger_notification(content: str)&lt;/code&gt; — &lt;em&gt;Sends a trigger message to the agent.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def wait_for_idle(None)&lt;/code&gt; — &lt;em&gt;Blocks until the connection becomes idle.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def wait_for_wakeup(timeout: float = 300.0)&lt;/code&gt; — &lt;em&gt;Blocks until the connection wakes up or the timeout is reached.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionStep(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Connection-specific step for LocalConnection.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_dict(step_dict: dict[str, typing.Any])&lt;/code&gt; — &lt;em&gt;Creates a LocalConnectionStep from a dictionary representation of StepUpdate.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionStrategy(tool_runner: google.antigravity.tools.tool_runner.ToolRunner | None = None, hook_runner: google.antigravity.hooks.hook_runner.HookRunner | None = None, models: list[google.antigravity.models.ModelTarget] | None = None, skills_paths: list[str] | None = None, system_instructions: str | google.antigravity.types.CustomSystemInstructions | google.antigravity.types.TemplatedSystemInstructions | None = None, capabilities_config: google.antigravity.types.CapabilitiesConfig | None = None, conversation_id: str | None = None, save_dir: str | None = None, workspaces: list[str] | None = None, app_data_dir: str | None = None, mcp_servers: Optional[Sequence[google.antigravity.types.McpStdioServer | google.antigravity.types.McpStreamableHttpServer]] = None, subagents: list[google.antigravity.types.SubagentConfig] | None = None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Strategy for establishing a LocalConnection.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def connect(None)&lt;/code&gt; — &lt;em&gt;Returns the established Connection.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class RunCommandResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from a run_command tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SearchDirectoryResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from a search_directory tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TextResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Generic fallback for tools without structured output (e.g. view_file).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;-模組-googleantigravityconnectionslocalhook_router&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections.local.hook_router&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnectionslocalhook_router&#34;&gt;#&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/local/hook_router.py&#34;&gt;hook_router.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-6&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-6&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class HookRouter(hook_runner: google.antigravity.hooks.hook_runner.HookRunner, event_sender: Callable[[localharness_pb2.InputEvent], Coroutine[Any, Any, NoneType]])&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Routes and dispatches CallHookRequest messages from the local harness to the active HookRunner.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def handle(req: localharness_pb2.CallHookRequest)&lt;/code&gt; — &lt;em&gt;Handles an incoming CallHookRequest and sends a CallHookResponse back to the harness.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;-模組-googleantigravityconnectionslocalhook_router_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections.local.hook_router_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnectionslocalhook_router_test&#34;&gt;#&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/local/hook_router_test.py&#34;&gt;hook_router_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-7&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-7&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class HookRouterTest(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertBetween(value, minv, maxv, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that value is between minv and maxv (inclusive).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandFails(command, regexes, env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts a shell command fails and the error matches a regex in a list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandSucceeds(command, regexes=(b&#39;&#39;,), env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that a shell command succeeds (i.e. exits with code 0).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsExactSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as an exact subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsInOrder(strings, target, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the strings provided are found in the target in order.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as a subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubset(expected_subset, actual_set, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable is a superset of expected iterable.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDataclassEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts two dataclasses are equal with more informative errors.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictAlmostEqual(a, b, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal or almost equal dicts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictContainsSubset(subset: Mapping[Any, Any], dictionary: Mapping[Any, Any], msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if &amp;ldquo;dictionary&amp;rdquo; is not a superset of &amp;ldquo;subset&amp;rdquo;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal dictionaries.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEndsWith(actual, expected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(expected_end) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertItemsEqual(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Deprecated, please use assertCountEqual instead.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertJsonEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the JSON objects defined in two strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLen(container, expected_len, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has the expected length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMappingEqual(a, b, msg=None, mapping_type=&amp;lt;class &#39;collections.abc.Mapping&#39;&amp;gt;, check_values_equality=&amp;lt;function TestCase.&amp;lt;lambda&amp;gt; at 0x1076674c0&amp;gt;)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b differ in keys or values.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoCommonElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable and expected iterable are disjoint.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has non-zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEndsWith(actual, unexpected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(unexpected_end) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotStartsWith(actual, unexpected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(unexpected_start) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithLiteralMatch(expected_exception, expected_exception_message, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception equals the given string.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithPredicateMatch(expected_exception, predicate, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that exception is thrown and predicate(exception) is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegexMatch(actual_str, regexes, message=None)&lt;/code&gt; — &lt;em&gt;Asserts that at least one regex in regexes matches str.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two sequences have the same elements (in any order).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameStructure(a, b, aname=&#39;a&#39;, bname=&#39;b&#39;, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two values contain the same structural content.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceAlmostEqual(expected_seq, actual_seq, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;An approximate equality assertion for ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceStartsWith(prefix, whole, msg=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for the beginning of ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertStartsWith(actual, expected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(expected_start) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTotallyOrdered(*groups, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that total ordering has been implemented correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertUrlEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that urls are equal, ignoring ordering of query params.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempdir(name: Optional[str] = None, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary directory specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempfile(file_path: Optional[str] = None, content: Optional[~AnyStr] = None, mode: str = &#39;w&#39;, encoding: str = &#39;utf8&#39;, errors: str = &#39;strict&#39;, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary file specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enter_context(manager: ContextManager[~_T])&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None, user_msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately with the given standard message and user message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Formats both the test method name and the first line of its docstring.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handle_on_session_end(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handle_on_session_start(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handle_post_turn(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handle_pre_turn_allow(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handle_pre_turn_multipart_content(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handle_unknown_hook(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;-模組-googleantigravityconnectionslocallocal_connection&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections.local.local_connection&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnectionslocallocal_connection&#34;&gt;#&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/local/local_connection.py&#34;&gt;local_connection.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-8&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-8&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnection(process: subprocess.Popen[bytes] | None, ws: Any, tool_runner: google.antigravity.tools.tool_runner.ToolRunner | None = None, hook_runner: google.antigravity.hooks.hook_runner.HookRunner | None = None, initial_history: Optional[Sequence[google.antigravity.types.Step]] = None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Connection to the Go-based local harness.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def cancel(None)&lt;/code&gt; — &lt;em&gt;Cancels the current turn.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def disconnect(None)&lt;/code&gt; — &lt;em&gt;Tears down the harness connection in a careful order.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def receive_steps(None)&lt;/code&gt; — &lt;em&gt;Receives steps as they complete from the agent.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send(prompt: str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand | collections.abc.Sequence[str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand] | None, **kwargs: Any)&lt;/code&gt; — &lt;em&gt;Sends a prompt to the agent.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send_trigger_notification(content: str)&lt;/code&gt; — &lt;em&gt;Sends a trigger message to the agent.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def wait_for_idle(None)&lt;/code&gt; — &lt;em&gt;Blocks until the connection becomes idle.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def wait_for_wakeup(timeout: float = 300.0)&lt;/code&gt; — &lt;em&gt;Blocks until the connection wakes up or the timeout is reached.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionStep(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Connection-specific step for LocalConnection.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_dict(step_dict: dict[str, typing.Any])&lt;/code&gt; — &lt;em&gt;Creates a LocalConnectionStep from a dictionary representation of StepUpdate.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionStrategy(tool_runner: google.antigravity.tools.tool_runner.ToolRunner | None = None, hook_runner: google.antigravity.hooks.hook_runner.HookRunner | None = None, models: list[google.antigravity.models.ModelTarget] | None = None, skills_paths: list[str] | None = None, system_instructions: str | google.antigravity.types.CustomSystemInstructions | google.antigravity.types.TemplatedSystemInstructions | None = None, capabilities_config: google.antigravity.types.CapabilitiesConfig | None = None, conversation_id: str | None = None, save_dir: str | None = None, workspaces: list[str] | None = None, app_data_dir: str | None = None, mcp_servers: Optional[Sequence[google.antigravity.types.McpStdioServer | google.antigravity.types.McpStreamableHttpServer]] = None, subagents: list[google.antigravity.types.SubagentConfig] | None = None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Strategy for establishing a LocalConnection.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def connect(None)&lt;/code&gt; — &lt;em&gt;Returns the established Connection.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class _PendingCallKey(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Key for tracking approved built-in tool calls.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class _PendingCallValue(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Value for tracking approved built-in tool calls.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class _StepTracker(state: int = 0, handled_requests: set[str] = &amp;lt;factory&amp;gt;, pre_step_dispatched: bool = False, post_step_dispatched: bool = False)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tracks state and handled requests for a trajectory step to prevent non-linearity bugs.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def mark_handled(request_type: str)&lt;/code&gt; — &lt;em&gt;Marks a request as handled to prevent duplicate processing.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_state(new_state: int)&lt;/code&gt; — &lt;em&gt;Updates state and clears handled requests if transitioning out of waiting.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;-模組-googleantigravityconnectionslocallocal_connection_config&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections.local.local_connection_config&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnectionslocallocal_connection_config&#34;&gt;#&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/local/local_connection_config.py&#34;&gt;local_connection_config.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-9&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-9&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalAgentConfig(system_instructions: str | google.antigravity.types.CustomSystemInstructions | google.antigravity.types.TemplatedSystemInstructions | None = None, capabilities: google.antigravity.types.CapabilitiesConfig | None = None, tools: list[typing.Callable[..., typing.Any]] | None = None, policies: Optional[Sequence[Union[google.antigravity.hooks.policy.Policy, Sequence[google.antigravity.hooks.policy.Policy]]]] = None, hooks: list[google.antigravity.hooks.hooks.InspectHook | google.antigravity.hooks.hooks.DecideHook | google.antigravity.hooks.hooks.TransformHook] | None = None, triggers: list[typing.Callable[[google.antigravity.triggers.triggers.TriggerContext], typing.Awaitable[NoneType]]] | None = None, mcp_servers: list[google.antigravity.types.McpStdioServer | google.antigravity.types.McpStreamableHttpServer] | None = None, workspaces: list[str] | None = None, conversation_id: str | None = None, save_dir: str | None = None, app_data_dir: str | None = None, response_schema: dict[str, typing.Any] | type[pydantic.main.BaseModel] | str | None = None, skills_paths: list[str] | None = None, model: str | google.antigravity.models.ModelTarget | None = None, models: list[google.antigravity.models.ModelTarget] | None = None, api_key: str | None = None, vertex: bool | None = None, project: str | None = None, location: str | None = None, **kwargs: Any)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Configuration for the local harness backend.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_strategy(tool_runner: Any, hook_runner: Any)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: Optional[Mapping[str, Any]] = None, deep: bool = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;-模組-googleantigravityconnectionslocallocal_connection_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections.local.local_connection_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnectionslocallocal_connection_test&#34;&gt;#&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/local/local_connection_test.py&#34;&gt;local_connection_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-10&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-10&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class GetDefaultBinaryPathTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_raises_when_not_found(mock_which, mock_files, mock_dist)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_returns_env_path(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_returns_external_wheel_path(mock_exists, mock_files, mock_dist)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_returns_internal_pyglib_resource_path(mock_dist)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_returns_metadata_distribution_path(mock_exists, mock_dist)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_returns_system_path(mock_which, mock_files, mock_dist)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalAgentConfigTest(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertBetween(value, minv, maxv, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that value is between minv and maxv (inclusive).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandFails(command, regexes, env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts a shell command fails and the error matches a regex in a list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandSucceeds(command, regexes=(b&#39;&#39;,), env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that a shell command succeeds (i.e. exits with code 0).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsExactSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as an exact subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsInOrder(strings, target, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the strings provided are found in the target in order.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as a subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubset(expected_subset, actual_set, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable is a superset of expected iterable.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDataclassEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts two dataclasses are equal with more informative errors.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictAlmostEqual(a, b, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal or almost equal dicts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictContainsSubset(subset: Mapping[Any, Any], dictionary: Mapping[Any, Any], msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if &amp;ldquo;dictionary&amp;rdquo; is not a superset of &amp;ldquo;subset&amp;rdquo;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal dictionaries.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEndsWith(actual, expected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(expected_end) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertItemsEqual(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Deprecated, please use assertCountEqual instead.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertJsonEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the JSON objects defined in two strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLen(container, expected_len, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has the expected length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMappingEqual(a, b, msg=None, mapping_type=&amp;lt;class &#39;collections.abc.Mapping&#39;&amp;gt;, check_values_equality=&amp;lt;function TestCase.&amp;lt;lambda&amp;gt; at 0x1076674c0&amp;gt;)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b differ in keys or values.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoCommonElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable and expected iterable are disjoint.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has non-zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEndsWith(actual, unexpected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(unexpected_end) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotStartsWith(actual, unexpected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(unexpected_start) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithLiteralMatch(expected_exception, expected_exception_message, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception equals the given string.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithPredicateMatch(expected_exception, predicate, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that exception is thrown and predicate(exception) is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegexMatch(actual_str, regexes, message=None)&lt;/code&gt; — &lt;em&gt;Asserts that at least one regex in regexes matches str.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two sequences have the same elements (in any order).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameStructure(a, b, aname=&#39;a&#39;, bname=&#39;b&#39;, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two values contain the same structural content.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceAlmostEqual(expected_seq, actual_seq, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;An approximate equality assertion for ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceStartsWith(prefix, whole, msg=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for the beginning of ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertStartsWith(actual, expected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(expected_start) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTotallyOrdered(*groups, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that total ordering has been implemented correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertUrlEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that urls are equal, ignoring ordering of query params.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempdir(name: Optional[str] = None, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary directory specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempfile(file_path: Optional[str] = None, content: Optional[~AnyStr] = None, mode: str = &#39;w&#39;, encoding: str = &#39;utf8&#39;, errors: str = &#39;strict&#39;, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary file specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enter_context(manager: ContextManager[~_T])&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None, user_msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately with the given standard message and user message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Formats both the test method name and the first line of its docstring.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_app_data_dir_relative_path_raises(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_constructor_parameters_fully_typed(None)&lt;/code&gt; — &lt;em&gt;Verifies all subclass fields are accepted by the constructor under pytype.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_create_strategy(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_create_strategy_app_data_dir(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_create_strategy_with_mcp_servers(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_explicit_allow_all_overrides_default(None)&lt;/code&gt; — &lt;em&gt;Explicit allow_all() replaces the confirm_run_command default.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_merge_models_explicit_and_shorthand(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_merge_models_explicit_only(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_merge_models_only_defaults(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_merge_models_shorthand_only(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_safe_defaults(None)&lt;/code&gt; — &lt;em&gt;LocalAgentConfig defaults to confirm_run_command() — deny run_command.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_safe_defaults_with_default_workspace(None)&lt;/code&gt; — &lt;em&gt;LocalAgentConfig defaults to CWD workspace when not specified.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_workspace_policies_auto_prepended(None)&lt;/code&gt; — &lt;em&gt;workspace_only() policies are auto-prepended when workspaces are set.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalAgentConfigWorkspaceTest(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for workspace scoping policy with app_data_dir inclusion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertBetween(value, minv, maxv, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that value is between minv and maxv (inclusive).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandFails(command, regexes, env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts a shell command fails and the error matches a regex in a list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandSucceeds(command, regexes=(b&#39;&#39;,), env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that a shell command succeeds (i.e. exits with code 0).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsExactSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as an exact subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsInOrder(strings, target, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the strings provided are found in the target in order.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as a subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubset(expected_subset, actual_set, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable is a superset of expected iterable.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDataclassEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts two dataclasses are equal with more informative errors.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictAlmostEqual(a, b, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal or almost equal dicts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictContainsSubset(subset: Mapping[Any, Any], dictionary: Mapping[Any, Any], msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if &amp;ldquo;dictionary&amp;rdquo; is not a superset of &amp;ldquo;subset&amp;rdquo;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal dictionaries.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEndsWith(actual, expected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(expected_end) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertItemsEqual(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Deprecated, please use assertCountEqual instead.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertJsonEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the JSON objects defined in two strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLen(container, expected_len, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has the expected length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMappingEqual(a, b, msg=None, mapping_type=&amp;lt;class &#39;collections.abc.Mapping&#39;&amp;gt;, check_values_equality=&amp;lt;function TestCase.&amp;lt;lambda&amp;gt; at 0x1076674c0&amp;gt;)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b differ in keys or values.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoCommonElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable and expected iterable are disjoint.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has non-zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEndsWith(actual, unexpected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(unexpected_end) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotStartsWith(actual, unexpected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(unexpected_start) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithLiteralMatch(expected_exception, expected_exception_message, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception equals the given string.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithPredicateMatch(expected_exception, predicate, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that exception is thrown and predicate(exception) is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegexMatch(actual_str, regexes, message=None)&lt;/code&gt; — &lt;em&gt;Asserts that at least one regex in regexes matches str.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two sequences have the same elements (in any order).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameStructure(a, b, aname=&#39;a&#39;, bname=&#39;b&#39;, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two values contain the same structural content.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceAlmostEqual(expected_seq, actual_seq, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;An approximate equality assertion for ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceStartsWith(prefix, whole, msg=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for the beginning of ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertStartsWith(actual, expected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(expected_start) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTotallyOrdered(*groups, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that total ordering has been implemented correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertUrlEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that urls are equal, ignoring ordering of query params.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempdir(name: Optional[str] = None, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary directory specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempfile(file_path: Optional[str] = None, content: Optional[~AnyStr] = None, mode: str = &#39;w&#39;, encoding: str = &#39;utf8&#39;, errors: str = &#39;strict&#39;, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary file specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enter_context(manager: ContextManager[~_T])&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None, user_msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately with the given standard message and user message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt; — &lt;em&gt;Returns the descriptive ID of the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Formats both the test method name and the first line of its docstring.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_workspace_policy_denies_symlink_traversal(None)&lt;/code&gt; — &lt;em&gt;Tests that the workspace scoping policy correctly blocks symlinks pointing outside.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_workspace_policy_scenarios_allowed_in_custom_app_data_dir(app_data_dir_factory, path_factory, expected_allowed: bool, msg: str)&lt;/code&gt; — &lt;em&gt;test_workspace_policy_scenarios_allowed_in_custom_app_data_dir(app_data_dir_factory=&amp;lt;function LocalAgentConfigWorkspaceTest.&lt;lambda&gt; at 0x1076fc040&amp;gt;, path_factory=&amp;lt;function LocalAgentConfigWorkspaceTest.&lt;lambda&gt; at 0x1076fc0e0&amp;gt;, expected_allowed=True, msg=&amp;lsquo;Target inside custom app_data_dir should be allowed&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_workspace_policy_scenarios_allowed_in_default_app_data_dir(app_data_dir_factory, path_factory, expected_allowed: bool, msg: str)&lt;/code&gt; — &lt;em&gt;test_workspace_policy_scenarios_allowed_in_default_app_data_dir(app_data_dir_factory=&amp;lt;function LocalAgentConfigWorkspaceTest.&lt;lambda&gt; at 0x1076fc180&amp;gt;, path_factory=&amp;lt;function LocalAgentConfigWorkspaceTest.&lt;lambda&gt; at 0x1076fc220&amp;gt;, expected_allowed=True, msg=&amp;lsquo;Target inside default app_data_dir should be allowed when config is None&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_workspace_policy_scenarios_allowed_in_workspace(app_data_dir_factory, path_factory, expected_allowed: bool, msg: str)&lt;/code&gt; — &lt;em&gt;test_workspace_policy_scenarios_allowed_in_workspace(app_data_dir_factory=&amp;lt;function LocalAgentConfigWorkspaceTest.&lt;lambda&gt; at 0x1076f3ec0&amp;gt;, path_factory=&amp;lt;function LocalAgentConfigWorkspaceTest.&lt;lambda&gt; at 0x1076f3f60&amp;gt;, expected_allowed=True, msg=&amp;lsquo;Target inside workspace should be allowed&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_workspace_policy_scenarios_denied_outside_both(app_data_dir_factory, path_factory, expected_allowed: bool, msg: str)&lt;/code&gt; — &lt;em&gt;test_workspace_policy_scenarios_denied_outside_both(app_data_dir_factory=&amp;lt;function LocalAgentConfigWorkspaceTest.&lt;lambda&gt; at 0x1076fc2c0&amp;gt;, path_factory=&amp;lt;function LocalAgentConfigWorkspaceTest.&lt;lambda&gt; at 0x1076fc360&amp;gt;, expected_allowed=False, msg=&amp;lsquo;Target outside both workspace and app_data_dir should be denied&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionBuiltinDecideHookTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies Decide hooks run for built-in tool confirmations.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_decide_hooks_run_for_builtin_tools(None)&lt;/code&gt; — &lt;em&gt;Verifies PreToolCallDecideHook runs and can deny builtin tools.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionBuiltinToolHooksTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for PostToolCallHook / OnToolErrorHook dispatch for built-in tools.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_denied_builtin_not_tracked(None)&lt;/code&gt; — &lt;em&gt;Verifies denied builtin tools are not tracked for post-tool dispatch.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_no_spurious_hook_for_non_builtin_step(None)&lt;/code&gt; — &lt;em&gt;Verifies post-tool hooks don&amp;rsquo;t fire for normal model response steps.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_on_tool_error_dispatched_for_builtin_error(None)&lt;/code&gt; — &lt;em&gt;Verifies OnToolErrorHook fires when a builtin tool transitions to STATE_ERROR.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_result_fallback_for_view_file(None)&lt;/code&gt; — &lt;em&gt;Verifies PostToolCallHook falls back to step text for view_file.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_result_for_edit_file(None)&lt;/code&gt; — &lt;em&gt;Verifies PostToolCallHook receives EditFileResult for edit_file.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_result_for_find_file(None)&lt;/code&gt; — &lt;em&gt;Verifies PostToolCallHook receives FindFileResult for find_file.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_result_for_generate_image(None)&lt;/code&gt; — &lt;em&gt;Verifies PostToolCallHook receives GenerateImageResult for generate_image.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_result_for_list_directory(None)&lt;/code&gt; — &lt;em&gt;Verifies PostToolCallHook receives ListDirectoryResult for list_dir.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_result_for_run_command(None)&lt;/code&gt; — &lt;em&gt;Verifies PostToolCallHook receives RunCommandResult for run_command.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_result_for_search_directory(None)&lt;/code&gt; — &lt;em&gt;Verifies PostToolCallHook receives SearchDirectoryResult for grep_search.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_result_for_search_web(None)&lt;/code&gt; — &lt;em&gt;Verifies PostToolCallHook receives SearchWebResult for search_web.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionCompactionHookTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for compaction hook dispatch.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_compaction_step_dispatches_hook(None)&lt;/code&gt; — &lt;em&gt;Verifies OnCompactionHook fires when a compaction step is received.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionDisconnectTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for the disconnect shutdown sequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_disconnect_closes_stdin(None)&lt;/code&gt; — &lt;em&gt;Verifies stdin is closed during disconnect to trigger harness save.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_disconnect_closes_ws_before_stdin(None)&lt;/code&gt; — &lt;em&gt;Verifies the WebSocket is closed before stdin.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_disconnect_kills_on_double_timeout(None)&lt;/code&gt; — &lt;em&gt;Verifies SIGKILL is sent when SIGTERM also fails.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_disconnect_sets_disconnecting_flag(None)&lt;/code&gt; — &lt;em&gt;Verifies _disconnecting is set before any cleanup runs.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_disconnect_terminates_on_timeout(None)&lt;/code&gt; — &lt;em&gt;Verifies SIGTERM is sent when the process doesn&amp;rsquo;t exit in time.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_disconnect_waits_for_process(None)&lt;/code&gt; — &lt;em&gt;Verifies disconnect waits for the harness process to exit.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionExceptionSafetyTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests verifying that handler exceptions don&amp;rsquo;t deadlock the harness.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_question_handler_crash_sends_error(None)&lt;/code&gt; — &lt;em&gt;Verifies a crashing interaction hook sends the error message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_call_crash_sends_error_result(None)&lt;/code&gt; — &lt;em&gt;Verifies a crashing pre-tool hook sends error in ToolResponse.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_confirmation_crash_sends_rejection(None)&lt;/code&gt; — &lt;em&gt;Verifies a crashing pre-tool hook sends accepted=False.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionHookAcceptanceTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies that previously-unsupported hooks are now accepted.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_compaction_hooks_no_longer_raise(None)&lt;/code&gt; — &lt;em&gt;Compaction hooks should be accepted now.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_subagent_tool_hooks_accepted(None)&lt;/code&gt; — &lt;em&gt;Subagent lifecycle is handled by tool hooks; no special subagent lists.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionPostTurnHookTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for post-turn hook dispatch.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_post_turn_hook_dispatched_on_final_step(None)&lt;/code&gt; — &lt;em&gt;Verifies PostTurnHook fires when a terminal model step is received.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_post_turn_hook_not_fired_for_environment_step(None)&lt;/code&gt; — &lt;em&gt;Verifies PostTurnHook does NOT fire for TARGET_ENVIRONMENT steps.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_receive_steps_includes_target_environment(None)&lt;/code&gt; — &lt;em&gt;Verifies TARGET_ENVIRONMENT steps are yielded by receive_steps().&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionSendTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates multi-modal coercion and InputEvent serialization inside LocalConnection.send().&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_concurrent_receive_steps_raises(None)&lt;/code&gt; — &lt;em&gt;Verifies that a second concurrent receive_steps() call raises RuntimeError.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_flat_string_populates_user_input(None)&lt;/code&gt; — &lt;em&gt;Verifies that a standard string prompt maps to the user_input proto field.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_mixed_list_populates_multiple_complex_content(None)&lt;/code&gt; — &lt;em&gt;Verifies that a list containing both strings and rich Content primitives compiles correctly to spec.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_none_prompt_populates_blank_string(None)&lt;/code&gt; — &lt;em&gt;Verifies that passing a prompt of None maps to a blank userInput string frame.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_single_media_content_populates_complex_user_input(None)&lt;/code&gt; — &lt;em&gt;Verifies that a single rich Content primitive maps to the complex_user_input parts list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_slash_command_populates_complex_user_input(None)&lt;/code&gt; — &lt;em&gt;Verifies that a SlashCommand primitive maps to complex_user_input slash_command field.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_trigger_notification_succeeds_while_busy(None)&lt;/code&gt; — &lt;em&gt;Verifies send_trigger_notification() and send() work during an active turn.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionSerializationTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests verifying Pydantic-based normalization in _tool_result_to_dict.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_normalizes_bytes_to_string(None)&lt;/code&gt; — &lt;em&gt;Verifies _tool_result_to_dict normalizes bytes into UTF-8 strings.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_normalizes_datetime_to_iso_string(None)&lt;/code&gt; — &lt;em&gt;Verifies _tool_result_to_dict normalizes datetimes into ISO strings.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_normalizes_set_to_list(None)&lt;/code&gt; — &lt;em&gt;Verifies _tool_result_to_dict normalizes sets into JSON lists.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_preserves_pydantic_custom_serializer(None)&lt;/code&gt; — &lt;em&gt;Verifies _tool_result_to_dict respects custom @field_serializer.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionSessionHooksTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for session start/end hook dispatch.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_session_end_hook_dispatched_on_disconnect(None)&lt;/code&gt; — &lt;em&gt;Verifies OnSessionEndHook fires via LSP handshake when disconnect() is called.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_strategy_dispatches_session_start(None)&lt;/code&gt; — &lt;em&gt;Verifies the connection correctly delegates OnSessionStart hook execution to the HookRunner whenever requested by the harness engine.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionStderrReaderTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for the background stderr reader thread.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_start_stderr_reader_drains_lines(None)&lt;/code&gt; — &lt;em&gt;Verifies that _start_stderr_reader captures stderr lines.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_stderr_reader_handles_closed_stream(None)&lt;/code&gt; — &lt;em&gt;Verifies the reader thread exits cleanly when the stream closes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_stderr_reader_respects_maxlen(None)&lt;/code&gt; — &lt;em&gt;Verifies the deque drops old lines when it exceeds maxlen.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_stderr_reader_thread_is_daemon(None)&lt;/code&gt; — &lt;em&gt;Verifies the stderr reader thread is a daemon thread.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionStepFromDictTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for LocalConnectionStep.from_dict derivation logic.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_is_complete_response_false_when_error_state(None)&lt;/code&gt; — &lt;em&gt;Verifies is_complete_response is False when state is ERROR.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_is_complete_response_false_when_no_text(None)&lt;/code&gt; — &lt;em&gt;Verifies is_complete_response is False when text is empty.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_is_complete_response_false_when_not_done(None)&lt;/code&gt; — &lt;em&gt;Verifies is_complete_response is False when state is not DONE.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_is_complete_response_false_when_source_not_model(None)&lt;/code&gt; — &lt;em&gt;Verifies is_complete_response is False when source is not MODEL.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_is_complete_response_false_when_target_environment(None)&lt;/code&gt; — &lt;em&gt;Verifies is_complete_response is False for TARGET_ENVIRONMENT steps.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_is_complete_response_true(None)&lt;/code&gt; — &lt;em&gt;Verifies is_complete_response is True when source=MODEL, state=DONE, target=TARGET_USER, and text is present.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_step_from_dict_normalizes_cns_uri_arguments(None)&lt;/code&gt; — &lt;em&gt;Verifies that LocalConnectionStep.from_dict normalizes cns:// URIs.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_step_from_dict_normalizes_file_uri_arguments(None)&lt;/code&gt; — &lt;em&gt;Verifies that LocalConnectionStep.from_dict normalizes file:// URIs.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_step_type_tool_call_with_builtin(None)&lt;/code&gt; — &lt;em&gt;Verifies that a step with a builtin tool proto field is typed TOOL_CALL and parses details.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_structured_output_extracted_from_finish(None)&lt;/code&gt; — &lt;em&gt;Verifies that structured output is extracted when finish payload is present.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_structured_output_extracted_from_finish_handles_invalid_json(None)&lt;/code&gt; — &lt;em&gt;Verifies that invalid JSON in finish payload defaults to None.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionStrategyApiKeyTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for API key validation in LocalConnectionStrategy.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_accepts_env_var_api_key(mock_popen)&lt;/code&gt; — &lt;em&gt;Verifies entry does not raise when GEMINI_API_KEY env var is set.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_accepts_models_api_key(mock_popen)&lt;/code&gt; — &lt;em&gt;Verifies entry does not raise when model endpoint api_key is set.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_accepts_vertex_config_with_project_location(mock_popen)&lt;/code&gt; — &lt;em&gt;Verifies entry does not raise when Vertex is enabled and project/location are provided.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_raises_with_empty_endpoint_api_key(None)&lt;/code&gt; — &lt;em&gt;Verifies entry raises when GeminiAPIEndpoint has no api_key and env is unset.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_raises_without_api_key(None)&lt;/code&gt; — &lt;em&gt;Verifies entry raises when no API key is available.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_raises_without_auth_in_vertex_mode(None)&lt;/code&gt; — &lt;em&gt;Verifies strategy raises validation error when Vertex is set but no project/location or api_key provided.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionStrategyConfigTest(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for config-to-proto translation in LocalConnectionStrategy.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertBetween(value, minv, maxv, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that value is between minv and maxv (inclusive).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandFails(command, regexes, env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts a shell command fails and the error matches a regex in a list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandSucceeds(command, regexes=(b&#39;&#39;,), env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that a shell command succeeds (i.e. exits with code 0).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsExactSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as an exact subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsInOrder(strings, target, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the strings provided are found in the target in order.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as a subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubset(expected_subset, actual_set, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable is a superset of expected iterable.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDataclassEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts two dataclasses are equal with more informative errors.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictAlmostEqual(a, b, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal or almost equal dicts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictContainsSubset(subset: Mapping[Any, Any], dictionary: Mapping[Any, Any], msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if &amp;ldquo;dictionary&amp;rdquo; is not a superset of &amp;ldquo;subset&amp;rdquo;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal dictionaries.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEndsWith(actual, expected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(expected_end) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertItemsEqual(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Deprecated, please use assertCountEqual instead.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertJsonEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the JSON objects defined in two strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLen(container, expected_len, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has the expected length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMappingEqual(a, b, msg=None, mapping_type=&amp;lt;class &#39;collections.abc.Mapping&#39;&amp;gt;, check_values_equality=&amp;lt;function TestCase.&amp;lt;lambda&amp;gt; at 0x1076674c0&amp;gt;)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b differ in keys or values.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoCommonElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable and expected iterable are disjoint.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has non-zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEndsWith(actual, unexpected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(unexpected_end) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotStartsWith(actual, unexpected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(unexpected_start) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithLiteralMatch(expected_exception, expected_exception_message, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception equals the given string.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithPredicateMatch(expected_exception, predicate, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that exception is thrown and predicate(exception) is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegexMatch(actual_str, regexes, message=None)&lt;/code&gt; — &lt;em&gt;Asserts that at least one regex in regexes matches str.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two sequences have the same elements (in any order).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameStructure(a, b, aname=&#39;a&#39;, bname=&#39;b&#39;, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two values contain the same structural content.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceAlmostEqual(expected_seq, actual_seq, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;An approximate equality assertion for ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceStartsWith(prefix, whole, msg=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for the beginning of ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertStartsWith(actual, expected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(expected_start) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTotallyOrdered(*groups, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that total ordering has been implemented correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertUrlEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that urls are equal, ignoring ordering of query params.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempdir(name: Optional[str] = None, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary directory specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempfile(file_path: Optional[str] = None, content: Optional[~AnyStr] = None, mode: str = &#39;w&#39;, encoding: str = &#39;utf8&#39;, errors: str = &#39;strict&#39;, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary file specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enter_context(manager: ContextManager[~_T])&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None, user_msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately with the given standard message and user message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt; — &lt;em&gt;Returns the descriptive ID of the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Formats both the test method name and the first line of its docstring.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_app_data_dir_default_empty(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_app_data_dir_specified(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_capabilities_config_compaction_threshold(None)&lt;/code&gt; — &lt;em&gt;Verifies compaction_threshold maps to HarnessConfig.compaction_threshold.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_capabilities_config_disabled_tools(None)&lt;/code&gt; — &lt;em&gt;Verifies that disabling tools produces the correct proto.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_capabilities_config_enabled_tools(None)&lt;/code&gt; — &lt;em&gt;Verifies that enabled_tools allowlist excludes non-listed tools.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_capabilities_config_finish_tool_schema_json_to_proto(None)&lt;/code&gt; — &lt;em&gt;Verifies capabilities config propagates finish tool schema to the proto config.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_capabilities_config_none_uses_defaults(None)&lt;/code&gt; — &lt;em&gt;Verifies that capabilities_config=None produces default-enabled tools.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_capabilities_config_subagents_disabled_via_disabled_tools(capabilities_config)&lt;/code&gt; — &lt;em&gt;test_capabilities_config_subagents_disabled_via_disabled_tools(capabilities_config=CapabilitiesConfig(enable_subagents=True, enabled_tools=None, disabled_tools=[&amp;lt;BuiltinTools.START_SUBAGENT: &amp;lsquo;start_subagent&amp;rsquo;&amp;gt;], compaction_threshold=None, finish_tool_schema_json=None))&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_capabilities_config_subagents_disabled_via_enable_subagents_false(capabilities_config)&lt;/code&gt; — &lt;em&gt;test_capabilities_config_subagents_disabled_via_enable_subagents_false(capabilities_config=CapabilitiesConfig(enable_subagents=False, enabled_tools=None, disabled_tools=None, compaction_threshold=None, finish_tool_schema_json=None))&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_cascade_id_default_empty(None)&lt;/code&gt; — &lt;em&gt;Verifies that cascade_id defaults to empty string when no conversation_id set.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_cascade_id_passed_through(None)&lt;/code&gt; — &lt;em&gt;Verifies that session_config.conversation_id maps to HarnessConfig.cascade_id.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_default_config_produces_valid_harness_config(None)&lt;/code&gt; — &lt;em&gt;Verifies that a strategy with all defaults produces a well-formed proto.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_empty_workspaces_list(None)&lt;/code&gt; — &lt;em&gt;Verifies that an empty list produces an empty repeated field.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_full_session_config_to_proto(None)&lt;/code&gt; — &lt;em&gt;Verifies that a full session_config produces correct proto fields.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_gemini_config_none_fields_omitted(None)&lt;/code&gt; — &lt;em&gt;Verifies that None fields on ModelConfig are not set on the proto.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_gemini_config_to_proto(None)&lt;/code&gt; — &lt;em&gt;Verifies GeminiConfig fields translate to the correct proto fields.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_legacy_shorthands_api_key_produces_valid_proto(None)&lt;/code&gt; — &lt;em&gt;Verifies that the legacy api_key shorthand translates to the models proto.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_legacy_shorthands_vertex_produces_valid_proto(None)&lt;/code&gt; — &lt;em&gt;Verifies that the legacy vertex shorthands translate to the models proto.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_models_default_model_name(None)&lt;/code&gt; — &lt;em&gt;Verifies the default model name propagates correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_models_list_custom_endpoints_propagate(None)&lt;/code&gt; — &lt;em&gt;Verifies that custom endpoints in the models list propagate to proto.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_models_list_propagates(None)&lt;/code&gt; — &lt;em&gt;Verifies that the new models list propagates to HarnessConfig.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_models_stored_directly_on_strategy(None)&lt;/code&gt; — &lt;em&gt;Verifies that the models list is stored as self._models.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_models_thinking_level_all_values(None)&lt;/code&gt; — &lt;em&gt;Verifies all ThinkingLevel enum values produce correct proto strings.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_models_thinking_level_none_omitted(None)&lt;/code&gt; — &lt;em&gt;Verifies that thinking_level=None leaves the proto field at its default.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_models_thinking_level_set(None)&lt;/code&gt; — &lt;em&gt;Verifies that thinking_level on ModelTarget maps to the proto field.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_session_config_save_dir_default_none(None)&lt;/code&gt; — &lt;em&gt;Verifies that save_dir defaults to None when not provided.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_session_config_save_dir_stored(None)&lt;/code&gt; — &lt;em&gt;Verifies that session_config.save_dir is preserved on the strategy.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_skills_paths_to_proto(None)&lt;/code&gt; — &lt;em&gt;Verifies skills_paths translate directly to the proto repeated field.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_storage_directory_defaults_to_none(None)&lt;/code&gt; — &lt;em&gt;Verifies save_dir is None when not specified.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_storage_directory_from_save_dir(None)&lt;/code&gt; — &lt;em&gt;Verifies save_dir maps to InputConfig.storage_directory.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_strategy_normalizes_configured_workspaces(None)&lt;/code&gt; — &lt;em&gt;Verifies that workspace configurations using file:// URIs are canonicalized.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_system_instructions_model_custom(None)&lt;/code&gt; — &lt;em&gt;Verifies that CustomSystemInstructions sets custom on the proto.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_system_instructions_model_templated(None)&lt;/code&gt; — &lt;em&gt;Verifies that TemplatedSystemInstructions sets appended on the proto.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_system_instructions_model_templated_only_identity(None)&lt;/code&gt; — &lt;em&gt;Verifies that TemplatedSystemInstructions with only identity maps correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_system_instructions_model_templated_only_sections(None)&lt;/code&gt; — &lt;em&gt;Verifies that TemplatedSystemInstructions with only sections maps correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_system_instructions_none(None)&lt;/code&gt; — &lt;em&gt;Verifies that no system_instructions field is set when not provided.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_system_instructions_string_shorthand(None)&lt;/code&gt; — &lt;em&gt;Verifies that a plain string normalizes to AppendedSystemInstructions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_vertex_config_propagates(None)&lt;/code&gt; — &lt;em&gt;Verifies that Vertex configuration fields propagate to proto.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_workspaces_default_empty(None)&lt;/code&gt; — &lt;em&gt;Verifies no workspace protos when session_config has no workspaces.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_workspaces_none(None)&lt;/code&gt; — &lt;em&gt;Verifies that no workspaces are set when not provided.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_workspaces_to_proto(None)&lt;/code&gt; — &lt;em&gt;Verifies workspace paths translate to Workspace protos correctly.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionSubagentHookTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for subagent hook dispatch via tool hooks.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_connection_waits_for_subagents_before_idle(None)&lt;/code&gt; — &lt;em&gt;Verifies receive_steps blocks until subagents complete.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_invoke_subagent_step_classified_as_tool_call(None)&lt;/code&gt; — &lt;em&gt;Verifies invoke_subagent steps are classified as TOOL_CALL.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_post_tool_hook_on_subagent_trajectory_idle(None)&lt;/code&gt; — &lt;em&gt;Verifies post-tool-call hook fires when a non-main trajectory goes idle.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_resets_subagent_tracking(None)&lt;/code&gt; — &lt;em&gt;Verifies send() clears subagent tracking state.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_subagent_running_tracked(None)&lt;/code&gt; — &lt;em&gt;Verifies STATE_RUNNING adds subagent to active set.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ws_reader_parses_usage_metadata(None)&lt;/code&gt; — &lt;em&gt;Verifies that _ws_reader_loop parses and attaches usage_metadata to steps.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionSubagentsTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests verifying that static subagent configs are built into HarnessConfig.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_builds_subagents_proto_correctly(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_builds_subagents_proto_with_sections(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_subagent_harness_tools_as_strings_raise_if_not_registered(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_subagent_tool_not_registered_raises(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_subagent_tools_stripped_and_warned(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_async_non_blocking_dispatch(None)&lt;/code&gt; — &lt;em&gt;Verifies that wait handlers run concurrently without blocking loop.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_cancel_e2e_raises_cancelled_error(None)&lt;/code&gt; — &lt;em&gt;Verifies programmatic cancel raises AntigravityCancelledError.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_concurrent_receive_steps_raises_runtime_error(None)&lt;/code&gt; — &lt;em&gt;Verifies that concurrent receive_steps() calls raise RuntimeError.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_connection_normalizes_file_uri_arguments(None)&lt;/code&gt; — &lt;em&gt;Verifies that file:// URIs in tool confirmations are normalized before hooks.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_deduplication_of_wait_requests(None)&lt;/code&gt; — &lt;em&gt;Verifies that multiple updates for the same wait state don&amp;rsquo;t duplicate.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handle_tool_call_queues_step(None)&lt;/code&gt; — &lt;em&gt;Tests ensuring _handle_tool_call manually queues the ToolCall step in _step_queue.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_initial_handshake_synchronization(None)&lt;/code&gt; — &lt;em&gt;Verifies that L2 connections receive restored historical steps synchronously during initialization and start fully idle.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_local_connection_step_from_dict(None)&lt;/code&gt; — &lt;em&gt;Tests that LocalConnectionStep maps fields correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_local_connection_step_from_dict_content_delta(None)&lt;/code&gt; — &lt;em&gt;Tests that content_delta is correctly parsed from text_delta.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_local_connection_step_from_dict_deltas_default_empty(None)&lt;/code&gt; — &lt;em&gt;Tests that delta fields default to empty when not present.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_local_connection_step_from_dict_thinking(None)&lt;/code&gt; — &lt;em&gt;Tests that thinking field is correctly populated from step dict.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_local_connection_step_from_dict_thinking_delta(None)&lt;/code&gt; — &lt;em&gt;Tests that thinking_delta is correctly parsed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_local_connection_step_from_dict_thinking_empty_by_default(None)&lt;/code&gt; — &lt;em&gt;Tests that thinking defaults to empty string when not present.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_mcp_tool_confirmation_request_allowed(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_mcp_tool_confirmation_request_denied(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_question_hook_integration(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_question_hook_integration_empty_questions(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_question_hook_integration_unhandled_question(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_receive_steps_basic(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_receive_steps_system_error(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_receive_steps_system_error_401(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_receive_steps_system_error_429(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_receive_steps_thinking_and_text_independent(None)&lt;/code&gt; — &lt;em&gt;Tests that thinking and text are independent, non-exclusive fields.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_receive_steps_thinking_populated(None)&lt;/code&gt; — &lt;em&gt;Tests that thinking field flows from proto through to SDK Step.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_receive_steps_trajectory_error(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_none_dispatches_turn_hook_with_empty_string(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_state_transition_clears_handled_requests(None)&lt;/code&gt; — &lt;em&gt;Verifies WAITING -&amp;gt; ACTIVE -&amp;gt; WAITING transitions re-trigger handlers.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_thinking_only_step_is_target_user_not_complete(None)&lt;/code&gt; — &lt;em&gt;Tests that thinking-only steps are TARGET_USER but not is_complete_response.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_confirmation_request_has_id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_confirmation_request_integration(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_confirmation_uses_enum_value_for_find_file(None)&lt;/code&gt; — &lt;em&gt;Verifies that a find_file step update is correctly recognized.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_confirmation_uses_enum_value_for_view_file(None)&lt;/code&gt; — &lt;em&gt;Verifies that hooks receive the BuiltinTools enum value as the tool name.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_hook_deny(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_turn_hook_deny(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_wait_for_idle_does_not_deadlock(None)&lt;/code&gt; — &lt;em&gt;Verifies that wait_for_idle completes when the connection goes idle.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_yielding_wait_state_to_queue(None)&lt;/code&gt; — &lt;em&gt;Verifies that wait states are correctly yielded to the step queue for the UI to render.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionToolCallHooksTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for post-tool-call and on-tool-error hooks.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_on_tool_error_hook_receives_original_exception_type(None)&lt;/code&gt; — &lt;em&gt;Verifies OnToolErrorHook receives the original exception, not wrapped.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_on_tool_error_hook_with_recovery(None)&lt;/code&gt; — &lt;em&gt;Verifies OnToolErrorHook can provide recovery values on tool failure.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_post_tool_call_hook_dispatched(None)&lt;/code&gt; — &lt;em&gt;Verifies PostToolCallHook fires after successful tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionToolCallNoRunnerTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for tool call handling when no ToolRunner is configured.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_call_without_runner_yields_step(None)&lt;/code&gt; — &lt;em&gt;Verifies that a tool call with no ToolRunner queues a step for the user.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class LocalConnectionUnexpectedCloseTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for error surfacing when the harness crashes mid-session.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_expected_ws_close_does_not_surface_error(None)&lt;/code&gt; — &lt;em&gt;Verifies no error is queued when disconnect() initiated the close.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_unexpected_ws_close_surfaces_stderr(None)&lt;/code&gt; — &lt;em&gt;Verifies harness stderr is surfaced when the WS closes unexpectedly.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;-模組-googleantigravityconnectionslocaltest_utils&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections.local.test_utils&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnectionslocaltest_utils&#34;&gt;#&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/local/test_utils.py&#34;&gt;test_utils.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-11&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-11&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TestLocalHarness(test_case: unittest.case.TestCase, process: unittest.mock.MagicMock, ws: google.antigravity.connections.local.test_utils.TestWebSocket | None = None, tool_runner: google.antigravity.tools.tool_runner.ToolRunner | None = None, hook_runner: google.antigravity.hooks.hook_runner.HookRunner | None = None, initial_history: list[google.antigravity.types.Step] | None = None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Helper to test LocalConnection by simulating the Go harness side of the WebSocket.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def close_from_harness_side(None)&lt;/code&gt; — &lt;em&gt;Simulates the Go harness closing the WebSocket connection.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def disconnect_sdk(None)&lt;/code&gt; — &lt;em&gt;Simulates the SDK initiating a disconnect.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send_event(event: localharness_pb2.OutputEvent)&lt;/code&gt; — &lt;em&gt;Simulates the harness transmitting an OutputEvent to the SDK.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send_tool_call(id: str, name: str, arguments_json: str)&lt;/code&gt; — &lt;em&gt;Simulates the harness transmitting a ToolCall event to the SDK.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send_tool_confirmation_request(trajectory_id: str, step_index: int, **kwargs)&lt;/code&gt; — &lt;em&gt;Simulates the harness transmitting a ToolConfirmationRequest event.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def wait_for_event(event: asyncio.locks.Event, timeout=10.0)&lt;/code&gt; — &lt;em&gt;Awaits a test event to be fired with a given timeout.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def wait_for_response(timeout=10.0)&lt;/code&gt; — &lt;em&gt;Awaits the next response from the SDK and returns the parsed JSON.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TestWebSocket(None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Mock WebSocket allowing async injection and inspection of messages.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def close(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def put_event(event)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def send(message)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;-模組-googleantigravityconnectionslocaltest_utils_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections.local.test_utils_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnectionslocaltest_utils_test&#34;&gt;#&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/local/test_utils_test.py&#34;&gt;test_utils_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-12&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-12&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TestLocalHarnessTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_harness_creates_default_ws(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_event_puts_to_socket(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_tool_call(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_tool_confirmation_request(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_wait_for_response_succeeds(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_wait_for_response_times_out(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TestWebSocketTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_close_ends_iteration(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_put_event_enqueues_json(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_adds_to_sent_messages(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_puts_to_sent_queue(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;-模組-googleantigravityconnectionslocaltypes&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.connections.local.types&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityconnectionslocaltypes&#34;&gt;#&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/connections/local/types.py&#34;&gt;types.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-13&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-13&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class EditFileResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from an edit_file tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class FindFileResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from a find_file tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class GenerateImageResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from a generate_image tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ListDirectoryEntry(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Single entry in a directory listing.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ListDirectoryResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from a list_directory tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class RunCommandResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from a run_command tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SearchDirectoryResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from a search_directory tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SearchWebResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structured result from a search_web tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TextResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Generic fallback for tools without structured output (e.g. view_file).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-模組-googleantigravityhooks&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.hooks&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityhooks&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/hooks/__init__.py&#34;&gt;&lt;strong&gt;init&lt;/strong&gt;.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-14&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-14&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class DecideHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Read-only, blocking hook for policy decisions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the decision hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class HookContext(parent: &amp;quot;&#39;HookContext | None&#39;&amp;quot; = None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Base context for hooks to share state.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def get_state(key: &#39;str&#39;, default: &#39;Any&#39; = None)&lt;/code&gt; — &lt;em&gt;Gets a value from the context or its parents.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def set_state(key: &#39;str&#39;, value: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Sets a value in the local context.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class InspectHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Read-only, non-blocking hook for observability.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OnCompactionHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked when a context compaction event occurs.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OnInteractionHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Hook invoked when the agent needs user interaction.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the transformation hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OnSessionEndHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked when the session ends.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OnSessionStartHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked when the session starts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OnToolErrorHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked when a tool fails, allowing for recovery or modification.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the transformation hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class PostToolCallHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked after a tool call completes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class PostTurnHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked after a turn ends.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class PreToolCallDecideHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked before a tool call to decide if it should proceed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the decision hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class PreTurnHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked before a turn starts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the decision hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TransformHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Modifying, blocking hook for data transformation.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the transformation hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityhookshook_runner&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.hooks.hook_runner&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityhookshook_runner&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/hooks/hook_runner.py&#34;&gt;hook_runner.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-15&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-15&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class HookRunner(on_session_start_hooks: list[google.antigravity.hooks.hooks.OnSessionStartHook] | None = None, on_session_end_hooks: list[google.antigravity.hooks.hooks.OnSessionEndHook] | None = None, pre_turn_hooks: list[google.antigravity.hooks.hooks.PreTurnHook] | None = None, post_turn_hooks: list[google.antigravity.hooks.hooks.PostTurnHook] | None = None, pre_tool_call_decide_hooks: list[google.antigravity.hooks.hooks.PreToolCallDecideHook] | None = None, post_tool_call_hooks: list[google.antigravity.hooks.hooks.PostToolCallHook] | None = None, on_tool_error_hooks: list[google.antigravity.hooks.hooks.OnToolErrorHook] | None = None, on_interaction_hooks: list[google.antigravity.hooks.hooks.OnInteractionHook] | None = None, on_compaction_hooks: list[google.antigravity.hooks.hooks.OnCompactionHook] | None = None, _pre_step_hooks: list[google.antigravity.hooks.hooks._PreStepHook] | None = None, _post_step_hooks: list[google.antigravity.hooks.hooks._PostStepHook] | None = None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Manages collections of specific hook types and dispatches events.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def dispatch_compaction(turn_context: google.antigravity.hooks.hooks.TurnContext, data: Any)&lt;/code&gt; — &lt;em&gt;Dispatches compaction events.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dispatch_interaction(turn_context: google.antigravity.hooks.hooks.TurnContext, interaction_spec: Any)&lt;/code&gt; — &lt;em&gt;Dispatches interaction events.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dispatch_on_tool_error(op_context: google.antigravity.hooks.hooks.OperationContext, error: Exception)&lt;/code&gt; — &lt;em&gt;Dispatches tool error events.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dispatch_post_step(turn_context: google.antigravity.hooks.hooks.TurnContext, step: google.antigravity.types.Step)&lt;/code&gt; — &lt;em&gt;Dispatches internal post-step observability events.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dispatch_post_tool_call(op_context: google.antigravity.hooks.hooks.OperationContext, result: Any)&lt;/code&gt; — &lt;em&gt;Dispatches post-tool call events.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dispatch_post_turn(turn_context: google.antigravity.hooks.hooks.TurnContext, response: str)&lt;/code&gt; — &lt;em&gt;Dispatches post-turn events.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dispatch_pre_step(turn_context: google.antigravity.hooks.hooks.TurnContext, step: google.antigravity.types.Step)&lt;/code&gt; — &lt;em&gt;Dispatches internal pre-step observability events.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dispatch_pre_tool_call(turn_context: google.antigravity.hooks.hooks.TurnContext, tool_call: google.antigravity.types.ToolCall)&lt;/code&gt; — &lt;em&gt;Dispatches pre-tool call events.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dispatch_pre_turn(prompt: str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand | collections.abc.Sequence[str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand] | None)&lt;/code&gt; — &lt;em&gt;Dispatches pre-turn events.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dispatch_session_end(None)&lt;/code&gt; — &lt;em&gt;Dispatches session end events to all registered hooks.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dispatch_session_start(None)&lt;/code&gt; — &lt;em&gt;Dispatches session start events to all registered hooks.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def register_hook(hook: Any)&lt;/code&gt; — &lt;em&gt;Registers a hook by inferring its type.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityhookshook_runner_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.hooks.hook_runner_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityhookshook_runner_test&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/hooks/hook_runner_test.py&#34;&gt;hook_runner_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-16&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-16&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class DecoratorTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_on_interaction_decorator(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_on_tool_error_decorator(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_post_turn_decorator(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_pre_tool_call_decide_decorator(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_pre_turn_decorator(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class HookRunnerTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_base_class_calls(None)&lt;/code&gt; — &lt;em&gt;Verifies default pass implementations in base hook classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_context_scoping(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_compaction(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_interaction(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_on_tool_error_exception(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_on_tool_error_fall_through(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_on_tool_error_recovery(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_post_tool_call(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_post_turn(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_pre_model_call_exception(None)&lt;/code&gt; — &lt;em&gt;Verifies that unknown hook types raise ValueError.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_pre_tool_call_decide(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_pre_tool_call_deny(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_pre_turn_allow(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_pre_turn_deny(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_pre_turn_multimodal_list(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_pre_turn_none_normalizes_to_empty_string(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_session_end(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_dispatch_session_start(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_has_hooks_includes_compaction(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_register_hook(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityhookshooks&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.hooks.hooks&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityhookshooks&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/hooks/hooks.py&#34;&gt;hooks.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-17&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-17&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class DecideHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Read-only, blocking hook for policy decisions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the decision hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class HookContext(parent: &amp;quot;&#39;HookContext | None&#39;&amp;quot; = None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Base context for hooks to share state.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def get_state(key: &#39;str&#39;, default: &#39;Any&#39; = None)&lt;/code&gt; — &lt;em&gt;Gets a value from the context or its parents.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def set_state(key: &#39;str&#39;, value: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Sets a value in the local context.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class InspectHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Read-only, non-blocking hook for observability.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OnCompactionHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked when a context compaction event occurs.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OnInteractionHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Hook invoked when the agent needs user interaction.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the transformation hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OnSessionEndHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked when the session ends.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OnSessionStartHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked when the session starts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OnToolErrorHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked when a tool fails, allowing for recovery or modification.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the transformation hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OperationContext(turn_context: &#39;TurnContext&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Context scoped to a specific operation (e.g. tool call).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def get_state(key: &#39;str&#39;, default: &#39;Any&#39; = None)&lt;/code&gt; — &lt;em&gt;Gets a value from the context or its parents.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def set_state(key: &#39;str&#39;, value: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Sets a value in the local context.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class PostToolCallHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked after a tool call completes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class PostTurnHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked after a turn ends.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class PreToolCallDecideHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked before a tool call to decide if it should proceed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the decision hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class PreTurnHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked before a turn starts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the decision hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SessionContext(None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Context scoped to an entire session.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def get_state(key: &#39;str&#39;, default: &#39;Any&#39; = None)&lt;/code&gt; — &lt;em&gt;Gets a value from the context or its parents.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def set_state(key: &#39;str&#39;, value: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Sets a value in the local context.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TransformHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Modifying, blocking hook for data transformation.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the transformation hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TurnContext(session_context: &#39;SessionContext&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Context scoped to a single turn.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def get_state(key: &#39;str&#39;, default: &#39;Any&#39; = None)&lt;/code&gt; — &lt;em&gt;Gets a value from the context or its parents.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def set_state(key: &#39;str&#39;, value: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Sets a value in the local context.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class _PostStepHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked when a step completes (internal).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class _PreStepHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Invoked when a step is first seen in the stream (internal).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;HookContext&#39;, data: &#39;T&#39;)&lt;/code&gt; — &lt;em&gt;Runs the inspection hook.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityhookshooks_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.hooks.hooks_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityhookshooks_test&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/hooks/hooks_test.py&#34;&gt;hooks_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-18&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-18&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class BaseHookTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests default behavior of specific Hook classes and result types.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_decide_hook(None)&lt;/code&gt; — &lt;em&gt;Verifies DecideHook can be executed and returns HookResult.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_hook_result_defaults(None)&lt;/code&gt; — &lt;em&gt;Verifies the default attributes of HookResult.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_inspect_hook(None)&lt;/code&gt; — &lt;em&gt;Verifies InspectHook can be executed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_on_compaction_hook(None)&lt;/code&gt; — &lt;em&gt;Verifies OnCompactionHook can be instantiated and executed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_pre_turn_hook(None)&lt;/code&gt; — &lt;em&gt;Verifies PreTurnHook accepts types.Content and returns HookResult.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_transform_hook(None)&lt;/code&gt; — &lt;em&gt;Verifies TransformHook can be executed and modifies data.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityhookspolicy&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.hooks.policy&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityhookspolicy&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/hooks/policy.py&#34;&gt;policy.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-19&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-19&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Decision(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Outcome a policy can produce.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Policy(tool: &#39;str&#39;, decision: &#39;Decision&#39;, when: &#39;Predicate | None&#39; = None, ask_user: &#39;AskUserHandler | None&#39; = None, name: &#39;str&#39; = &#39;&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: A single tool call policy rule.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class _PolicyDecideHook(buckets: &#39;Sequence[Sequence[Policy]]&#39;, server_names: &#39;Sequence[str] | None&#39; = None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: PreToolCallDecideHook that enforces a set of policies.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;hooks.HookContext&#39;, data: &#39;types.ToolCall&#39;)&lt;/code&gt; — &lt;em&gt;Evaluates policies against the tool call.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityhookspolicy_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.hooks.policy_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityhookspolicy_test&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/hooks/policy_test.py&#34;&gt;policy_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-20&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-20&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AskUserTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies ASK_USER handler invocation.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handler_approve(None)&lt;/code&gt; — &lt;em&gt;Handler returning True → tool is allowed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handler_async(None)&lt;/code&gt; — &lt;em&gt;Async handler is awaited correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handler_deny(None)&lt;/code&gt; — &lt;em&gt;Handler returning False → tool is denied.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handler_exception_denies(None)&lt;/code&gt; — &lt;em&gt;Handler exception is caught and denies the tool call.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_handler_receives_tool_call(None)&lt;/code&gt; — &lt;em&gt;Handler receives the full ToolCall object, not just args.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class BuilderTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies that builder functions construct Policy objects correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_allow_all_creates_wildcard_approve(None)&lt;/code&gt; — &lt;em&gt;allow_all() must produce a wildcard APPROVE policy.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_allow_creates_approve_policy(None)&lt;/code&gt; — &lt;em&gt;allow() must produce a Policy with decision=APPROVE.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_user_creates_ask_user_policy(None)&lt;/code&gt; — &lt;em&gt;ask_user() must produce a Policy with decision=ASK_USER and handler.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_deny_all_creates_wildcard_deny(None)&lt;/code&gt; — &lt;em&gt;deny_all() must produce a wildcard DENY policy.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_deny_creates_deny_policy(None)&lt;/code&gt; — &lt;em&gt;deny() must produce a Policy with decision=DENY.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_deny_with_predicate(None)&lt;/code&gt; — &lt;em&gt;deny() with a when clause stores the predicate.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ConfirmCommandsTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies the confirm_run_command() preset — the default for LocalAgentConfig.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_allows_other_tools_by_default(None)&lt;/code&gt; — &lt;em&gt;Without a handler, all non-run_command tools are allowed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_denies_run_command_by_default(None)&lt;/code&gt; — &lt;em&gt;Without a handler, run_command is denied with a clear message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_returns_list_of_policies(None)&lt;/code&gt; — &lt;em&gt;confirm_run_command() always returns a list of Policy objects.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_with_handler_allows_other_tools(None)&lt;/code&gt; — &lt;em&gt;With a handler, non-run_command tools are still auto-allowed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_with_handler_asks_user_for_run_command(None)&lt;/code&gt; — &lt;em&gt;With a handler, run_command triggers ASK_USER instead of DENY.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_with_handler_deny_propagates(None)&lt;/code&gt; — &lt;em&gt;Handler returning False denies the tool call.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ConvenienceBuilderTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies allow_all() and deny_all() evaluate correctly through enforce.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_allow_all_approves_any_tool(None)&lt;/code&gt; — &lt;em&gt;allow_all() approves arbitrary tool calls.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_deny_all_denies_any_tool(None)&lt;/code&gt; — &lt;em&gt;deny_all() denies arbitrary tool calls.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_deny_all_with_specific_allow_override(None)&lt;/code&gt; — &lt;em&gt;deny_all() + allow(tool) creates deny-by-default with exceptions.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class DefaultBehaviorTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies behavior when no policies match.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_empty_policies_allows_all(None)&lt;/code&gt; — &lt;em&gt;An empty policy list allows everything.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_no_matching_policy_allows(None)&lt;/code&gt; — &lt;em&gt;When no policy matches, the tool call is allowed (open system).&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class DenyReasonTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies that deny reasons include useful context.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_named_policy_in_deny_reason(None)&lt;/code&gt; — &lt;em&gt;Policy name appears in the deny reason message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_unnamed_policy_uses_tool_name(None)&lt;/code&gt; — &lt;em&gt;When a policy has no name, the tool name is used in the reason.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class IntegrationWithHookRunnerTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies the policy hook integrates with HookRunner dispatch.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_policy_hook_in_hook_runner(None)&lt;/code&gt; — &lt;em&gt;Policy hook works when dispatched through HookRunner.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class McpPolicyTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Unit tests for overloaded MCP policy methods and structured target alignment.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_9_level_priority_specific_allow_beats_prefix_deny(None)&lt;/code&gt; — &lt;em&gt;Specific Allow (level 2) must beat Prefix Deny (level 3).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_allow_mcp_builder_specific_tools(None)&lt;/code&gt; — &lt;em&gt;allow(mcp_config, tools) must produce policies in &amp;lsquo;server/tool&amp;rsquo; format.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_allow_mcp_builder_wildcard(None)&lt;/code&gt; — &lt;em&gt;allow(mcp_config) must produce a single wildcard policy in structured target format.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_user_mcp_builder_specific_tools(None)&lt;/code&gt; — &lt;em&gt;ask_user(mcp_config, tools) must produce policies in &amp;lsquo;server/tool&amp;rsquo; format with handler.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_builder_custom_name_unique(None)&lt;/code&gt; — &lt;em&gt;Builders must append tool suffix to custom name for unique logging.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_builder_rejects_string_with_mcp_tools(None)&lt;/code&gt; — &lt;em&gt;Builders must raise ValueError if mcp_tools is provided for a string tool name.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_deny_mcp_builder_specific_tools(None)&lt;/code&gt; — &lt;em&gt;deny(mcp_config, tools) must produce policies in &amp;lsquo;server/tool&amp;rsquo; format.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enforce_fails_closed_on_missing_servers(None)&lt;/code&gt; — &lt;em&gt;enforce() must raise ValueError if MCP policies exist but mcp_servers is missing.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enforce_flattens_nested_policies(None)&lt;/code&gt; — &lt;em&gt;enforce() must successfully flatten mixed nested lists of policies.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enforce_rejects_invalid_policy_type(None)&lt;/code&gt; — &lt;em&gt;enforce() must raise ValueError if a direct invalid type is passed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enforce_rejects_non_policy_in_sequence(None)&lt;/code&gt; — &lt;em&gt;enforce() must raise ValueError if a non-Policy is found in a nested sequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_matches_target_unknown_server_prefix(None)&lt;/code&gt; — &lt;em&gt;Prefixed calls with unknown server name must be treated as standard tools.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_mcp_tools_string_type_guard(None)&lt;/code&gt; — &lt;em&gt;Builders must raise ValueError if mcp_tools is passed as a raw string.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_secure_longest_match_matching(None)&lt;/code&gt; — &lt;em&gt;math prefix must not eagerly match math_advanced tools.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class PolicyPathScopingDirectTest(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Direct unit tests for path normalization and workspace scoping.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertBetween(value, minv, maxv, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that value is between minv and maxv (inclusive).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandFails(command, regexes, env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts a shell command fails and the error matches a regex in a list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandSucceeds(command, regexes=(b&#39;&#39;,), env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that a shell command succeeds (i.e. exits with code 0).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsExactSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as an exact subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsInOrder(strings, target, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the strings provided are found in the target in order.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as a subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubset(expected_subset, actual_set, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable is a superset of expected iterable.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDataclassEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts two dataclasses are equal with more informative errors.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictAlmostEqual(a, b, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal or almost equal dicts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictContainsSubset(subset: Mapping[Any, Any], dictionary: Mapping[Any, Any], msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if &amp;ldquo;dictionary&amp;rdquo; is not a superset of &amp;ldquo;subset&amp;rdquo;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal dictionaries.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEndsWith(actual, expected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(expected_end) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertItemsEqual(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Deprecated, please use assertCountEqual instead.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertJsonEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the JSON objects defined in two strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLen(container, expected_len, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has the expected length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMappingEqual(a, b, msg=None, mapping_type=&amp;lt;class &#39;collections.abc.Mapping&#39;&amp;gt;, check_values_equality=&amp;lt;function TestCase.&amp;lt;lambda&amp;gt; at 0x1076674c0&amp;gt;)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b differ in keys or values.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoCommonElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable and expected iterable are disjoint.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has non-zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEndsWith(actual, unexpected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(unexpected_end) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotStartsWith(actual, unexpected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(unexpected_start) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithLiteralMatch(expected_exception, expected_exception_message, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception equals the given string.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithPredicateMatch(expected_exception, predicate, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that exception is thrown and predicate(exception) is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegexMatch(actual_str, regexes, message=None)&lt;/code&gt; — &lt;em&gt;Asserts that at least one regex in regexes matches str.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two sequences have the same elements (in any order).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameStructure(a, b, aname=&#39;a&#39;, bname=&#39;b&#39;, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two values contain the same structural content.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceAlmostEqual(expected_seq, actual_seq, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;An approximate equality assertion for ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceStartsWith(prefix, whole, msg=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for the beginning of ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertStartsWith(actual, expected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(expected_start) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTotallyOrdered(*groups, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that total ordering has been implemented correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertUrlEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that urls are equal, ignoring ordering of query params.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempdir(name: Optional[str] = None, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary directory specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempfile(file_path: Optional[str] = None, content: Optional[~AnyStr] = None, mode: str = &#39;w&#39;, encoding: str = &#39;utf8&#39;, errors: str = &#39;strict&#39;, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary file specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enter_context(manager: ContextManager[~_T])&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None, user_msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately with the given standard message and user message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Formats both the test method name and the first line of its docstring.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_is_case_insensitive_prober(None)&lt;/code&gt; — &lt;em&gt;_is_case_insensitive must dynamically check OS filesystem case sensitivity.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_is_path_in_workspace_case_folding(None)&lt;/code&gt; — &lt;em&gt;is_path_in_workspace must fold casing symmetrically on case-insensitive drives.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_is_path_in_workspace_structural_containment(None)&lt;/code&gt; — &lt;em&gt;is_path_in_workspace must securely check path containment component-wise.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_secure_normalize_path_resolves_existing_symlinks(None)&lt;/code&gt; — &lt;em&gt;_secure_normalize_path must follow and resolve existing symlinks.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class PredicateTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies sync, async, and failing predicates.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_allow_predicate_exception_denies(None)&lt;/code&gt; — &lt;em&gt;Exception in allow policy predicate must deny (fail-closed).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_async_predicate_false(None)&lt;/code&gt; — &lt;em&gt;Async predicate returning False skips the policy.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_async_predicate_true(None)&lt;/code&gt; — &lt;em&gt;Async predicate returning True causes the policy to match.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_parameterless_predicate(None)&lt;/code&gt; — &lt;em&gt;Predicate with no arguments should be called without arguments.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_parameterless_predicate_allow(None)&lt;/code&gt; — &lt;em&gt;Parameterless predicate in ALLOW policy works and allows/denies correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_predicate_exception_matches_fail_closed(None)&lt;/code&gt; — &lt;em&gt;Exception in predicate → policy matches (fail-closed).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_sync_predicate_false(None)&lt;/code&gt; — &lt;em&gt;Sync predicate returning False skips the policy.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_sync_predicate_true(None)&lt;/code&gt; — &lt;em&gt;Sync predicate returning True causes the policy to match.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_typed_predicate(None)&lt;/code&gt; — &lt;em&gt;Predicate expecting a Pydantic model receives the parsed object.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class PriorityEvaluationTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies the 6-level priority evaluation model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_specific_allow_overrides_wildcard_deny(None)&lt;/code&gt; — &lt;em&gt;Level 3 (specific allow) beats Level 4 (wildcard deny).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_specific_ask_overrides_wildcard_deny(None)&lt;/code&gt; — &lt;em&gt;Level 2 (specific ask) beats Level 4 (wildcard deny).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_specific_deny_overrides_specific_allow(None)&lt;/code&gt; — &lt;em&gt;Level 1 (specific deny) beats Level 3 (specific allow).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_specific_deny_overrides_wildcard_allow(None)&lt;/code&gt; — &lt;em&gt;Level 1 (specific deny) beats Level 6 (wildcard allow).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_wildcard_allow(None)&lt;/code&gt; — &lt;em&gt;Level 6 (wildcard allow) allows all tools.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_wildcard_ask_user(None)&lt;/code&gt; — &lt;em&gt;Level 5 (wildcard ask) applies to all tools.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_wildcard_deny_blocks_unmatched_tools(None)&lt;/code&gt; — &lt;em&gt;Level 4 (wildcard deny) blocks tools with no specific policy.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class RunCommandArgs(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Arguments for run_command tool.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SafeDefaultsTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies safe_defaults() preset.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_safe_defaults_allows_read_only_tools(None)&lt;/code&gt; — &lt;em&gt;safe_defaults() must allow read-only tools.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_safe_defaults_asks_for_other_tools(None)&lt;/code&gt; — &lt;em&gt;safe_defaults() must ask for non-read-only tools.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ShortCircuitTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies first-match-wins within a priority group.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_first_match_wins_within_allow_group(None)&lt;/code&gt; — &lt;em&gt;When two specific allow policies match, only the first is evaluated.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_first_match_wins_within_deny_group(None)&lt;/code&gt; — &lt;em&gt;When two specific deny policies match, only the first is evaluated.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_skips_non_matching_predicate(None)&lt;/code&gt; — &lt;em&gt;A policy whose predicate returns False is skipped; next one wins.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ValidationTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies startup validation in enforce().&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enforce_rejects_ask_user_without_handler(None)&lt;/code&gt; — &lt;em&gt;enforce() must raise ValueError when ASK_USER has no handler.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enforce_rejects_ask_user_without_handler_unnamed(None)&lt;/code&gt; — &lt;em&gt;enforce() error message includes tool name when policy has no name.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class WorkspaceOnlyTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Verifies workspace_only() — restricts file tools to workspace dirs.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_allows_files_inside_workspace(None)&lt;/code&gt; — &lt;em&gt;File tool with path inside workspace is allowed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_allows_non_file_tools(None)&lt;/code&gt; — &lt;em&gt;Non-file tools are unaffected — no matching policy, default allows.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_allows_when_no_path_arg(None)&lt;/code&gt; — &lt;em&gt;File tool with no path argument is allowed (don&amp;rsquo;t break edge cases).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_denies_create_outside_workspace(None)&lt;/code&gt; — &lt;em&gt;create_file outside workspace is denied.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_denies_edit_outside_workspace(None)&lt;/code&gt; — &lt;em&gt;edit_file outside workspace is denied.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_denies_files_outside_workspace(None)&lt;/code&gt; — &lt;em&gt;File tool with path outside workspace is denied.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_exact_workspace_path_allowed(None)&lt;/code&gt; — &lt;em&gt;A path that is exactly the workspace directory itself is allowed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_multiple_workspaces(None)&lt;/code&gt; — &lt;em&gt;Paths in any configured workspace are allowed.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_prevents_path_prefix_attack(None)&lt;/code&gt; — &lt;em&gt;Path /workspace-evil/file.txt must NOT match workspace /workspace.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-模組-googleantigravitymodels&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.models&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravitymodels&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/models.py&#34;&gt;models.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-21&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-21&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class GeminiAPIEndpoint(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Endpoint for the Gemini Developer API.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate_endpoint(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class GeminiModelOptions(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Gemini-specific model options.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ModelEndpoint(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Base class for model endpoint authentication &amp;amp; routing.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate_endpoint(None)&lt;/code&gt; — &lt;em&gt;Validates the configuration of the endpoint.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ModelTarget(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Configuration for a single model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ModelType(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Discriminator for model purpose.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ThinkingLevel(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Thinking level for Gemini models that support extended thinking.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class VertexEndpoint(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Endpoint for the Vertex AI backend.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate_endpoint(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-模組-googleantigravitytriggers&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.triggers&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravitytriggers&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/triggers/__init__.py&#34;&gt;&lt;strong&gt;init&lt;/strong&gt;.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-22&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-22&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class FileChange(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: A single filesystem change detected by a file-watching trigger.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class FileChangeKind(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Kind of filesystem change detected by a file-watching trigger.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TriggerContext(connection: &#39;TriggerConnection&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Handle provided to every trigger at startup.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def send(content: &#39;str&#39;)&lt;/code&gt; — &lt;em&gt;Sends a message to the agent.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravitytriggershelpers_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.triggers.helpers_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravitytriggershelpers_test&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/triggers/helpers_test.py&#34;&gt;helpers_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-23&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-23&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class EveryTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_every_calls_callback_on_interval(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_every_rejects_non_positive_interval(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_every_sets_name(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OnFileChangeTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_on_file_change_import_error(None)&lt;/code&gt; — &lt;em&gt;Verify helpful error when watchfiles is missing.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_on_file_change_sets_name(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_on_file_change_success(None)&lt;/code&gt; — &lt;em&gt;Verify callback is called with mapped changes.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravitytriggerstrigger_runner&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.triggers.trigger_runner&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravitytriggerstrigger_runner&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/triggers/trigger_runner.py&#34;&gt;trigger_runner.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-24&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-24&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TriggerRunner(triggers: Sequence[Callable[[google.antigravity.triggers.triggers.TriggerContext], Awaitable[NoneType]]], connection: google.antigravity.connections.connection.Connection)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Manages registration, startup, and shutdown of triggers.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def start(None)&lt;/code&gt; — &lt;em&gt;Start all triggers as concurrent asyncio tasks.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def stop(None)&lt;/code&gt; — &lt;em&gt;Cancel all trigger tasks and wait for them to finish.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravitytriggerstrigger_runner_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.triggers.trigger_runner_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravitytriggerstrigger_runner_test&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/triggers/trigger_runner_test.py&#34;&gt;trigger_runner_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-25&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-25&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TriggerRunnerTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_context_manager_starts_and_stops(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_empty_triggers_list(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_exception_in_trigger_does_not_crash_others(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_restart_after_stop(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_start_runs_triggers(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_start_twice_raises(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_stop_cancels_all_triggers(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_stop_when_not_started_is_noop(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_trigger_receives_context_with_connection(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravitytriggerstriggers&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.triggers.triggers&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravitytriggerstriggers&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/triggers/triggers.py&#34;&gt;triggers.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-26&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-26&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class FileChange(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: A single filesystem change detected by a file-watching trigger.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class FileChangeKind(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Kind of filesystem change detected by a file-watching trigger.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TriggerConnection(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def send_trigger_notification(content: &#39;str&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TriggerContext(connection: &#39;TriggerConnection&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Handle provided to every trigger at startup.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def send(content: &#39;str&#39;)&lt;/code&gt; — &lt;em&gt;Sends a message to the agent.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravitytriggerstriggers_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.triggers.triggers_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravitytriggerstriggers_test&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/triggers/triggers_test.py&#34;&gt;triggers_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-27&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-27&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class FileChangeTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_file_change_is_immutable(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TriggerContextTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_send_calls_connection_send_trigger_notification(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TriggerDecoratorTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_not_async_raises_value_error(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_valid_trigger_accepted(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_wrong_signature_raises_value_error(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TriggerTypeTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_trigger_is_callable_type(None)&lt;/code&gt; — &lt;em&gt;Verify that an async def is a valid Trigger.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-模組-googleantigravitytypes&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.types&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravitytypes&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/types.py&#34;&gt;types.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-28&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-28&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AntigravityCancelledError(message: &#39;str&#39; = &#39;The request was cancelled by the client.&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Raised when an active turn is cancelled programmatically.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AntigravityConnectionError(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Base class for connection errors in the Google Antigravity SDK.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AntigravityExecutionError(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Raised when the agent execution encounters a terminal error.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AntigravityValidationError(message: &#39;str&#39;, errors: &#39;list[dict[str, Any]] | None&#39; = None)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Wraps Pydantic ValidationError at the SDK boundary.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AskQuestionEntry(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: A single question with predefined options.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AskQuestionInteractionSpec(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Interaction spec for ask_question dialog.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AskQuestionOption(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Option for an AskQuestion entry.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Audio(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Audio content attachment primitive.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_file(path: &#39;str | pathlib.Path&#39;, description: &#39;str | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Instantiates a media content primitive from a local file path.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class BaseMcpServerConfig(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Base configuration for all Model Context Protocol (MCP) servers.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class BuiltinSlashCommandName(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Supported system slash commands.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class BuiltinTools(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Identifiers for common connection-provided builtin tools.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class CapabilitiesConfig(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: General agent capability configuration.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ChatResponse(chunk_stream: &#39;AsyncIterator[StreamChunk | ToolCall | ToolResult]&#39;, conversation: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: The turn response from Agent.chat().&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def cancel(None)&lt;/code&gt; — &lt;em&gt;Cancels the active execution turn and halts generation.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def resolve(None)&lt;/code&gt; — &lt;em&gt;Drains the underlying stream completely and returns all chunks as a flat list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def structured_output(None)&lt;/code&gt; — &lt;em&gt;Drains the stream and extracts the parsed structured output payload, if one exists.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def text(None)&lt;/code&gt; — &lt;em&gt;Drains the stream and returns the fully aggregated conversational response text.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class CustomSystemInstructions(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Use this to completely replace the system instructions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Document(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Document content attachment primitive.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_file(path: &#39;str | pathlib.Path&#39;, description: &#39;str | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Instantiates a media content primitive from a local file path.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class HookResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Result of a decision hook execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Image(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Image content attachment primitive.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_file(path: &#39;str | pathlib.Path&#39;, description: &#39;str | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Instantiates a media content primitive from a local file path.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class McpStdioServer(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Configuration for an MCP server connected via stdio.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class McpStreamableHttpServer(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Configuration for an MCP server connected via Streamable HTTP.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class QuestionHookResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Result of an interaction containing a list of responses.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class QuestionResponse(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Individual response for an AskQuestion entry.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SlashCommand(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Slash command context primitive.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Step(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Structure representing one action in the agent trajectory.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class StepSource(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Source of a step.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class StepStatus(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Status of a step.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class StepTarget(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Target of a step interaction.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class StepType(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: High-level type of a step.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class StreamChunk(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Base class for all real-time semantic chunks yielded during agent.chat() streaming.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SubagentCapabilities(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Capabilities configuration for subagents.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SubagentConfig(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Configuration for a static subagent.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SystemInstructionSection(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: A named section to append to the system instructions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TemplatedSystemInstructions(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Use this to override the agent&amp;rsquo;s identity and append sections to the default system instructions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Text(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: A delta chunk representing a piece of the model&amp;rsquo;s text output.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Thought(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: A delta chunk representing a piece of the model&amp;rsquo;s internal reasoning/thinking.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ToolCall(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: A tool call to inject into the conversation.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ToolResult(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Result of a single tool execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class TriggerDelivery(*args, **kwds)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Controls how trigger messages are delivered to the agent.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class UsageMetadata(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Token usage metadata from the model API.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Video(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Video content attachment primitive.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_file(path: &#39;str | pathlib.Path&#39;, description: &#39;str | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Instantiates a media content primitive from a local file path.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class _BaseMedia(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Base class for all rich multimedia content attachment primitives.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_file(path: &#39;str | pathlib.Path&#39;, description: &#39;str | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Instantiates a media content primitive from a local file path.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-模組-googleantigravitytypes_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.types_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravitytypes_test&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/types_test.py&#34;&gt;types_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-29&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-29&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AntigravityConnectionErrorTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the AntigravityConnectionError hierarchy.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_is_exception(None)&lt;/code&gt; — &lt;em&gt;Verifies that AntigravityConnectionError is a proper Exception.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_message(None)&lt;/code&gt; — &lt;em&gt;Verifies that the message is stored and retrievable.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AntigravityValidationErrorTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the AntigravityValidationError wrapper.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_basic_construction(None)&lt;/code&gt; — &lt;em&gt;Verifies direct construction with a message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_from_pydantic(None)&lt;/code&gt; — &lt;em&gt;Verifies construction from a real Pydantic ValidationError.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_is_exception(None)&lt;/code&gt; — &lt;em&gt;Verifies that AntigravityValidationError is a proper Exception.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_step_pydantic(None)&lt;/code&gt; — &lt;em&gt;Tests that Step can be instantiated as a Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_step_with_tool_calls(None)&lt;/code&gt; — &lt;em&gt;Tests that Step can hold multiple tool calls.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_call_pydantic(None)&lt;/code&gt; — &lt;em&gt;Tests that ToolCall can be instantiated as a Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_with_errors_list(None)&lt;/code&gt; — &lt;em&gt;Verifies construction with an explicit errors list.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AskQuestionModelsTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for AskQuestion related models.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_question_entry(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_question_interaction_spec(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_question_option(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AudioTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the Audio content attachment primitive and its validators.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_basic_construction(None)&lt;/code&gt; — &lt;em&gt;Verifies that an Audio can be successfully constructed with valid arguments.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_unsupported_mime_type_raises(None)&lt;/code&gt; — &lt;em&gt;Verifies that an unsupported Audio MIME type triggers ValidationError.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class BuiltinToolsTest(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for the BuiltinTools enum.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertBetween(value, minv, maxv, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that value is between minv and maxv (inclusive).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandFails(command, regexes, env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts a shell command fails and the error matches a regex in a list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandSucceeds(command, regexes=(b&#39;&#39;,), env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that a shell command succeeds (i.e. exits with code 0).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsExactSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as an exact subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsInOrder(strings, target, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the strings provided are found in the target in order.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as a subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubset(expected_subset, actual_set, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable is a superset of expected iterable.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDataclassEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts two dataclasses are equal with more informative errors.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictAlmostEqual(a, b, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal or almost equal dicts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictContainsSubset(subset: Mapping[Any, Any], dictionary: Mapping[Any, Any], msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if &amp;ldquo;dictionary&amp;rdquo; is not a superset of &amp;ldquo;subset&amp;rdquo;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal dictionaries.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEndsWith(actual, expected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(expected_end) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertItemsEqual(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Deprecated, please use assertCountEqual instead.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertJsonEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the JSON objects defined in two strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLen(container, expected_len, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has the expected length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMappingEqual(a, b, msg=None, mapping_type=&amp;lt;class &#39;collections.abc.Mapping&#39;&amp;gt;, check_values_equality=&amp;lt;function TestCase.&amp;lt;lambda&amp;gt; at 0x1076674c0&amp;gt;)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b differ in keys or values.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoCommonElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable and expected iterable are disjoint.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has non-zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEndsWith(actual, unexpected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(unexpected_end) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotStartsWith(actual, unexpected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(unexpected_start) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithLiteralMatch(expected_exception, expected_exception_message, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception equals the given string.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithPredicateMatch(expected_exception, predicate, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that exception is thrown and predicate(exception) is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegexMatch(actual_str, regexes, message=None)&lt;/code&gt; — &lt;em&gt;Asserts that at least one regex in regexes matches str.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two sequences have the same elements (in any order).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameStructure(a, b, aname=&#39;a&#39;, bname=&#39;b&#39;, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two values contain the same structural content.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceAlmostEqual(expected_seq, actual_seq, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;An approximate equality assertion for ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceStartsWith(prefix, whole, msg=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for the beginning of ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertStartsWith(actual, expected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(expected_start) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTotallyOrdered(*groups, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that total ordering has been implemented correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertUrlEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that urls are equal, ignoring ordering of query params.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempdir(name: Optional[str] = None, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary directory specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempfile(file_path: Optional[str] = None, content: Optional[~AnyStr] = None, mode: str = &#39;w&#39;, encoding: str = &#39;utf8&#39;, errors: str = &#39;strict&#39;, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary file specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enter_context(manager: ContextManager[~_T])&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None, user_msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately with the given standard message and user message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt; — &lt;em&gt;Returns the descriptive ID of the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Formats both the test method name and the first line of its docstring.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_all_tools_returns_every_member(None)&lt;/code&gt; — &lt;em&gt;Verifies that all_tools() returns every enum member.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enum_values_ask_question(enum_member, expected_value)&lt;/code&gt; — &lt;em&gt;test_enum_values_ask_question(&amp;lt;BuiltinTools.ASK_QUESTION: &amp;lsquo;ask_question&amp;rsquo;&amp;gt;, &amp;lsquo;ask_question&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enum_values_create_file(enum_member, expected_value)&lt;/code&gt; — &lt;em&gt;test_enum_values_create_file(&amp;lt;BuiltinTools.CREATE_FILE: &amp;lsquo;create_file&amp;rsquo;&amp;gt;, &amp;lsquo;create_file&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enum_values_edit_file(enum_member, expected_value)&lt;/code&gt; — &lt;em&gt;test_enum_values_edit_file(&amp;lt;BuiltinTools.EDIT_FILE: &amp;rsquo;edit_file&amp;rsquo;&amp;gt;, &amp;rsquo;edit_file&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enum_values_generate_image(enum_member, expected_value)&lt;/code&gt; — &lt;em&gt;test_enum_values_generate_image(&amp;lt;BuiltinTools.GENERATE_IMAGE: &amp;lsquo;generate_image&amp;rsquo;&amp;gt;, &amp;lsquo;generate_image&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enum_values_list_dir(enum_member, expected_value)&lt;/code&gt; — &lt;em&gt;test_enum_values_list_dir(&amp;lt;BuiltinTools.LIST_DIR: &amp;rsquo;list_directory&amp;rsquo;&amp;gt;, &amp;rsquo;list_directory&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enum_values_run_command(enum_member, expected_value)&lt;/code&gt; — &lt;em&gt;test_enum_values_run_command(&amp;lt;BuiltinTools.RUN_COMMAND: &amp;lsquo;run_command&amp;rsquo;&amp;gt;, &amp;lsquo;run_command&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enum_values_search_dir(enum_member, expected_value)&lt;/code&gt; — &lt;em&gt;test_enum_values_search_dir(&amp;lt;BuiltinTools.SEARCH_DIR: &amp;lsquo;search_directory&amp;rsquo;&amp;gt;, &amp;lsquo;search_directory&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enum_values_search_web(enum_member, expected_value)&lt;/code&gt; — &lt;em&gt;test_enum_values_search_web(&amp;lt;BuiltinTools.SEARCH_WEB: &amp;lsquo;search_web&amp;rsquo;&amp;gt;, &amp;lsquo;search_web&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enum_values_start_subagent(enum_member, expected_value)&lt;/code&gt; — &lt;em&gt;test_enum_values_start_subagent(&amp;lt;BuiltinTools.START_SUBAGENT: &amp;lsquo;start_subagent&amp;rsquo;&amp;gt;, &amp;lsquo;start_subagent&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enum_values_view_file(enum_member, expected_value)&lt;/code&gt; — &lt;em&gt;test_enum_values_view_file(&amp;lt;BuiltinTools.VIEW_FILE: &amp;lsquo;view_file&amp;rsquo;&amp;gt;, &amp;lsquo;view_file&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_nondestructive_covers_all_tools(None)&lt;/code&gt; — &lt;em&gt;Verifies nondestructive + destructive tools = full enum.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_none_returns_empty_list(None)&lt;/code&gt; — &lt;em&gt;Verifies that none() returns an empty list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_read_only_covers_all_tools(None)&lt;/code&gt; — &lt;em&gt;Verifies read_only + write tools = full enum.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class CapabilitiesConfigTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for the CapabilitiesConfig Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_compaction_threshold_explicit(None)&lt;/code&gt; — &lt;em&gt;Verifies that compaction_threshold accepts an explicit integer.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_default_construction(None)&lt;/code&gt; — &lt;em&gt;Verifies defaults: subagents enabled, no tool lists, no threshold.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_disabled_tools(None)&lt;/code&gt; — &lt;em&gt;Verifies that disabled_tools accepts a list of BuiltinTools.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enabled_tools(None)&lt;/code&gt; — &lt;em&gt;Verifies that enabled_tools accepts a list of BuiltinTools.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_mutually_exclusive_raises(None)&lt;/code&gt; — &lt;em&gt;Verifies that setting both enabled_tools and disabled_tools raises.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ChatResponseStreamTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for ChatResponse async stream and caching properties.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_all_three_sequential(None)&lt;/code&gt; — &lt;em&gt;Cache replay: thoughts → tool_calls → text from one response.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_cancel_completed_stream_is_noop(None)&lt;/code&gt; — &lt;em&gt;Verifies that cancel() is a safe no-op on a completed stream.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_cancel_delegates_to_conversation(None)&lt;/code&gt; — &lt;em&gt;Verifies that cancel() delegates to conversation.cancel() if not done.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_concurrent_cursors_via_gather(None)&lt;/code&gt; — &lt;em&gt;Lock safety: two cursors via asyncio.gather don&amp;rsquo;t crash.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_empty_stream_all_iterators(None)&lt;/code&gt; — &lt;em&gt;All iterators return empty on an empty stream.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_empty_stream_text(None)&lt;/code&gt; — &lt;em&gt;Verifies that an empty stream resolves text to an empty string.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_error_propagation_to_all_cursors(None)&lt;/code&gt; — &lt;em&gt;Error storage: stream error re-raised to every cursor.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_explicit_lock_contention_double_check(None)&lt;/code&gt; — &lt;em&gt;Explicitly tests the double-check condition under lock contention.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_interleaved_chunk_types(None)&lt;/code&gt; — &lt;em&gt;Thought-Text-Thought-Text-ToolCall pattern streams correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_lazy_caching_and_re_iteration(None)&lt;/code&gt; — &lt;em&gt;Verifies that stream tokens are cached in memory and replayed for re-iteration.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_resolve_then_text_then_aiter(None)&lt;/code&gt; — &lt;em&gt;resolve(), text(), and &lt;strong&gt;aiter&lt;/strong&gt; all work on the same response.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_sequential_text_then_thoughts(None)&lt;/code&gt; — &lt;em&gt;Cache replay: text first, then thoughts sees all Thought chunks.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_sequential_thoughts_then_text(None)&lt;/code&gt; — &lt;em&gt;Cache replay: thoughts first, then text sees all Text chunks.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_sequential_tool_calls_then_text(None)&lt;/code&gt; — &lt;em&gt;Cache replay: tool_calls first, then text.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_stream_cancellation_sets_is_done(None)&lt;/code&gt; — &lt;em&gt;Verifies that if stream raises CancelledError, _is_done becomes True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_structured_output_lazy_accessor(None)&lt;/code&gt; — &lt;em&gt;Verifies structured_output resolves the stream and fetches parsed payload from conversation.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_text_chunk_validation(None)&lt;/code&gt; — &lt;em&gt;Verifies that the Text subclass validates Pydantic schemas correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_text_concatenation(None)&lt;/code&gt; — &lt;em&gt;Verifies that text() aggregates and concatenates all Text chunks.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_thought_chunk_validation(None)&lt;/code&gt; — &lt;em&gt;Verifies that the Thought subclass validates Pydantic schemas correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_thoughts_sugared_stream(None)&lt;/code&gt; — &lt;em&gt;Verifies thoughts property yields only Thought delta strings.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_calls_sugared_stream(None)&lt;/code&gt; — &lt;em&gt;Verifies tool_calls property yields only ToolCall objects.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_two_chunks_cursors_independent(None)&lt;/code&gt; — &lt;em&gt;Two raw .chunks cursors both see identical output.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_usage_metadata_lazy_accessor(None)&lt;/code&gt; — &lt;em&gt;Verifies usage_metadata resolves the stream and fetches payload from conversation.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ContentFromFileResolverTest(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the global from_file content resolver helper function.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertBetween(value, minv, maxv, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that value is between minv and maxv (inclusive).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandFails(command, regexes, env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts a shell command fails and the error matches a regex in a list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandSucceeds(command, regexes=(b&#39;&#39;,), env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that a shell command succeeds (i.e. exits with code 0).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsExactSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as an exact subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsInOrder(strings, target, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the strings provided are found in the target in order.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as a subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubset(expected_subset, actual_set, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable is a superset of expected iterable.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDataclassEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts two dataclasses are equal with more informative errors.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictAlmostEqual(a, b, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal or almost equal dicts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictContainsSubset(subset: Mapping[Any, Any], dictionary: Mapping[Any, Any], msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if &amp;ldquo;dictionary&amp;rdquo; is not a superset of &amp;ldquo;subset&amp;rdquo;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal dictionaries.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEndsWith(actual, expected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(expected_end) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertItemsEqual(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Deprecated, please use assertCountEqual instead.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertJsonEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the JSON objects defined in two strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLen(container, expected_len, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has the expected length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMappingEqual(a, b, msg=None, mapping_type=&amp;lt;class &#39;collections.abc.Mapping&#39;&amp;gt;, check_values_equality=&amp;lt;function TestCase.&amp;lt;lambda&amp;gt; at 0x1076674c0&amp;gt;)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b differ in keys or values.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoCommonElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable and expected iterable are disjoint.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has non-zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEndsWith(actual, unexpected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(unexpected_end) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotStartsWith(actual, unexpected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(unexpected_start) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithLiteralMatch(expected_exception, expected_exception_message, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception equals the given string.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithPredicateMatch(expected_exception, predicate, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that exception is thrown and predicate(exception) is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegexMatch(actual_str, regexes, message=None)&lt;/code&gt; — &lt;em&gt;Asserts that at least one regex in regexes matches str.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two sequences have the same elements (in any order).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameStructure(a, b, aname=&#39;a&#39;, bname=&#39;b&#39;, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two values contain the same structural content.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceAlmostEqual(expected_seq, actual_seq, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;An approximate equality assertion for ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceStartsWith(prefix, whole, msg=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for the beginning of ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertStartsWith(actual, expected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(expected_start) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTotallyOrdered(*groups, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that total ordering has been implemented correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertUrlEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that urls are equal, ignoring ordering of query params.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempdir(name: Optional[str] = None, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary directory specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempfile(file_path: Optional[str] = None, content: Optional[~AnyStr] = None, mode: str = &#39;w&#39;, encoding: str = &#39;utf8&#39;, errors: str = &#39;strict&#39;, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary file specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enter_context(manager: ContextManager[~_T])&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None, user_msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately with the given standard message and user message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt; — &lt;em&gt;Returns the descriptive ID of the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Formats both the test method name and the first line of its docstring.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_directory_path_raises_error(None)&lt;/code&gt; — &lt;em&gt;Verifies that passing a path targeting a directory triggers IsADirectoryError.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_inference_failure_raises_clear_value_error(None)&lt;/code&gt; — &lt;em&gt;Verifies that an extensionless path failure raises a descriptive ValueError.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_non_existent_path_raises_error(None)&lt;/code&gt; — &lt;em&gt;Verifies that passing a non-existent path triggers FileNotFoundError.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_os_error_wrapping(None)&lt;/code&gt; — &lt;em&gt;Verifies that OS-level read errors are caught and wrapped appropriately.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_permission_error_wrapping(None)&lt;/code&gt; — &lt;em&gt;Verifies that permission errors are caught and wrapped appropriately.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_resolves_from_file_audio(filename, expected_class, expected_mime)&lt;/code&gt; — &lt;em&gt;test_resolves_from_file_audio(&amp;lsquo;clip.mp3&amp;rsquo;, &amp;lt;class &amp;lsquo;google.antigravity.types.Audio&amp;rsquo;&amp;gt;, &amp;lsquo;audio/mpeg&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_resolves_from_file_document(filename, expected_class, expected_mime)&lt;/code&gt; — &lt;em&gt;test_resolves_from_file_document(&amp;lsquo;report.pdf&amp;rsquo;, &amp;lt;class &amp;lsquo;google.antigravity.types.Document&amp;rsquo;&amp;gt;, &amp;lsquo;application/pdf&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_resolves_from_file_image(filename, expected_class, expected_mime)&lt;/code&gt; — &lt;em&gt;test_resolves_from_file_image(&amp;lsquo;diagram.png&amp;rsquo;, &amp;lt;class &amp;lsquo;google.antigravity.types.Image&amp;rsquo;&amp;gt;, &amp;lsquo;image/png&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_resolves_from_file_video(filename, expected_class, expected_mime)&lt;/code&gt; — &lt;em&gt;test_resolves_from_file_video(&amp;lsquo;movie.mp4&amp;rsquo;, &amp;lt;class &amp;lsquo;google.antigravity.types.Video&amp;rsquo;&amp;gt;, &amp;lsquo;video/mp4&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class HookResultTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the HookResult Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_defaults(None)&lt;/code&gt; — &lt;em&gt;Verifies that HookResult defaults to allow=True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_deny(None)&lt;/code&gt; — &lt;em&gt;Verifies construction of a deny HookResult.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_mutable(None)&lt;/code&gt; — &lt;em&gt;Verifies that HookResult is mutable.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ImageTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for the Image content attachment primitive and its validators.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_basic_construction(None)&lt;/code&gt; — &lt;em&gt;Verifies that an Image can be successfully constructed with valid arguments.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_from_file_success(None)&lt;/code&gt; — &lt;em&gt;Verifies that from_file loader loads bytes and guesses MIME correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_unsupported_mime_type_raises(None)&lt;/code&gt; — &lt;em&gt;Verifies that an unsupported Image MIME type triggers ValidationError.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class McpServerConfigTest(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the McpServerConfig Pydantic models and required fields.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertBetween(value, minv, maxv, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that value is between minv and maxv (inclusive).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandFails(command, regexes, env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts a shell command fails and the error matches a regex in a list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCommandSucceeds(command, regexes=(b&#39;&#39;,), env=None, close_fds=True, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that a shell command succeeds (i.e. exits with code 0).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsExactSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as an exact subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsInOrder(strings, target, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the strings provided are found in the target in order.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubsequence(container, subsequence, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that &amp;ldquo;container&amp;rdquo; contains &amp;ldquo;subsequence&amp;rdquo; as a subsequence.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertContainsSubset(expected_subset, actual_set, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable is a superset of expected iterable.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDataclassEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts two dataclasses are equal with more informative errors.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictAlmostEqual(a, b, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal or almost equal dicts.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictContainsSubset(subset: Mapping[Any, Any], dictionary: Mapping[Any, Any], msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if &amp;ldquo;dictionary&amp;rdquo; is not a superset of &amp;ldquo;subset&amp;rdquo;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b are not equal dictionaries.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEndsWith(actual, expected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(expected_end) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertItemsEqual(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Deprecated, please use assertCountEqual instead.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertJsonEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that the JSON objects defined in two strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLen(container, expected_len, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has the expected length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMappingEqual(a, b, msg=None, mapping_type=&amp;lt;class &#39;collections.abc.Mapping&#39;&amp;gt;, check_values_equality=&amp;lt;function TestCase.&amp;lt;lambda&amp;gt; at 0x1076674c0&amp;gt;)&lt;/code&gt; — &lt;em&gt;Raises AssertionError if a and b differ in keys or values.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoCommonElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Checks whether actual iterable and expected iterable are disjoint.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEmpty(container, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that an object has non-zero length.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEndsWith(actual, unexpected_end, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.endswith(unexpected_end) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotStartsWith(actual, unexpected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(unexpected_start) is False.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithLiteralMatch(expected_exception, expected_exception_message, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception equals the given string.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesWithPredicateMatch(expected_exception, predicate, callable_obj=None, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that exception is thrown and predicate(exception) is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegexMatch(actual_str, regexes, message=None)&lt;/code&gt; — &lt;em&gt;Asserts that at least one regex in regexes matches str.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameElements(expected_seq, actual_seq, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two sequences have the same elements (in any order).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSameStructure(a, b, aname=&#39;a&#39;, bname=&#39;b&#39;, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two values contain the same structural content.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceAlmostEqual(expected_seq, actual_seq, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;An approximate equality assertion for ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceStartsWith(prefix, whole, msg=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for the beginning of ordered sequences.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertStartsWith(actual, expected_start, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that actual.startswith(expected_start) is True.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTotallyOrdered(*groups, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that total ordering has been implemented correctly.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertUrlEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that urls are equal, ignoring ordering of query params.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempdir(name: Optional[str] = None, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary directory specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def create_tempfile(file_path: Optional[str] = None, content: Optional[~AnyStr] = None, mode: str = &#39;w&#39;, encoding: str = &#39;utf8&#39;, errors: str = &#39;strict&#39;, cleanup: Optional[absl.testing.absltest.TempFileCleanup] = None)&lt;/code&gt; — &lt;em&gt;Create a temporary file specific to the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enter_context(manager: ContextManager[~_T])&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None, user_msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately with the given standard message and user message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt; — &lt;em&gt;Returns the descriptive ID of the test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Formats both the test method name and the first line of its docstring.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_construction_success_http(server_cls, init_kwargs, expected_attrs)&lt;/code&gt; — &lt;em&gt;test_server_construction_success_http(&amp;lt;class &amp;lsquo;google.antigravity.types.McpStreamableHttpServer&amp;rsquo;&amp;gt;, {&amp;rsquo;name&amp;rsquo;: &amp;lsquo;http_server&amp;rsquo;, &amp;lsquo;url&amp;rsquo;: &amp;lsquo;http://localhost/http&amp;rsquo;}, {&amp;rsquo;name&amp;rsquo;: &amp;lsquo;http_server&amp;rsquo;, &amp;lsquo;url&amp;rsquo;: &amp;lsquo;http://localhost/http&amp;rsquo;})&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_construction_success_stdio(server_cls, init_kwargs, expected_attrs)&lt;/code&gt; — &lt;em&gt;test_server_construction_success_stdio(&amp;lt;class &amp;lsquo;google.antigravity.types.McpStdioServer&amp;rsquo;&amp;gt;, {&amp;rsquo;name&amp;rsquo;: &amp;lsquo;stdio_server&amp;rsquo;, &amp;lsquo;command&amp;rsquo;: &amp;rsquo;node&amp;rsquo;, &amp;lsquo;args&amp;rsquo;: [&amp;lsquo;index.js&amp;rsquo;]}, {&amp;rsquo;name&amp;rsquo;: &amp;lsquo;stdio_server&amp;rsquo;, &amp;lsquo;command&amp;rsquo;: &amp;rsquo;node&amp;rsquo;, &amp;lsquo;args&amp;rsquo;: [&amp;lsquo;index.js&amp;rsquo;]})&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_construction_success_stdio_with_env(server_cls, init_kwargs, expected_attrs)&lt;/code&gt; — &lt;em&gt;test_server_construction_success_stdio_with_env(&amp;lt;class &amp;lsquo;google.antigravity.types.McpStdioServer&amp;rsquo;&amp;gt;, {&amp;rsquo;name&amp;rsquo;: &amp;lsquo;stdio_server&amp;rsquo;, &amp;lsquo;command&amp;rsquo;: &amp;rsquo;node&amp;rsquo;, &amp;lsquo;args&amp;rsquo;: [&amp;lsquo;index.js&amp;rsquo;], &amp;rsquo;env&amp;rsquo;: {&amp;lsquo;FOO&amp;rsquo;: &amp;lsquo;bar&amp;rsquo;}}, {&amp;rsquo;name&amp;rsquo;: &amp;lsquo;stdio_server&amp;rsquo;, &amp;lsquo;command&amp;rsquo;: &amp;rsquo;node&amp;rsquo;, &amp;lsquo;args&amp;rsquo;: [&amp;lsquo;index.js&amp;rsquo;], &amp;rsquo;env&amp;rsquo;: {&amp;lsquo;FOO&amp;rsquo;: &amp;lsquo;bar&amp;rsquo;}})&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_construction_with_filtering_stdio_disabled(server_cls, init_kwargs, expected_attr, expected_val)&lt;/code&gt; — &lt;em&gt;test_server_construction_with_filtering_stdio_disabled(&amp;lt;class &amp;lsquo;google.antigravity.types.McpStdioServer&amp;rsquo;&amp;gt;, {&amp;rsquo;name&amp;rsquo;: &amp;lsquo;stdio_server&amp;rsquo;, &amp;lsquo;command&amp;rsquo;: &amp;rsquo;node&amp;rsquo;, &amp;lsquo;disabled_tools&amp;rsquo;: [&amp;rsquo;tool2&amp;rsquo;]}, &amp;lsquo;disabled_tools&amp;rsquo;, [&amp;rsquo;tool2&amp;rsquo;])&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_construction_with_filtering_stdio_enabled(server_cls, init_kwargs, expected_attr, expected_val)&lt;/code&gt; — &lt;em&gt;test_server_construction_with_filtering_stdio_enabled(&amp;lt;class &amp;lsquo;google.antigravity.types.McpStdioServer&amp;rsquo;&amp;gt;, {&amp;rsquo;name&amp;rsquo;: &amp;lsquo;stdio_server&amp;rsquo;, &amp;lsquo;command&amp;rsquo;: &amp;rsquo;node&amp;rsquo;, &amp;rsquo;enabled_tools&amp;rsquo;: [&amp;rsquo;tool1&amp;rsquo;]}, &amp;rsquo;enabled_tools&amp;rsquo;, [&amp;rsquo;tool1&amp;rsquo;])&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_exclusive_filtering_raises_stdio_different_tools(server_cls, init_kwargs)&lt;/code&gt; — &lt;em&gt;test_server_exclusive_filtering_raises_stdio_different_tools(&amp;lt;class &amp;lsquo;google.antigravity.types.McpStdioServer&amp;rsquo;&amp;gt;, {&amp;rsquo;name&amp;rsquo;: &amp;lsquo;stdio_server&amp;rsquo;, &amp;lsquo;command&amp;rsquo;: &amp;rsquo;node&amp;rsquo;, &amp;rsquo;enabled_tools&amp;rsquo;: [&amp;rsquo;tool1&amp;rsquo;], &amp;lsquo;disabled_tools&amp;rsquo;: [&amp;rsquo;tool2&amp;rsquo;]})&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_exclusive_filtering_raises_stdio_same_tool(server_cls, init_kwargs)&lt;/code&gt; — &lt;em&gt;test_server_exclusive_filtering_raises_stdio_same_tool(&amp;lt;class &amp;lsquo;google.antigravity.types.McpStdioServer&amp;rsquo;&amp;gt;, {&amp;rsquo;name&amp;rsquo;: &amp;lsquo;stdio_server&amp;rsquo;, &amp;lsquo;command&amp;rsquo;: &amp;rsquo;node&amp;rsquo;, &amp;rsquo;enabled_tools&amp;rsquo;: [&amp;rsquo;tool1&amp;rsquo;], &amp;lsquo;disabled_tools&amp;rsquo;: [&amp;rsquo;tool1&amp;rsquo;]})&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_invalid_names_raise0(name)&lt;/code&gt; — &lt;em&gt;test_server_invalid_names_raise(&amp;lsquo;invalid name&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_invalid_names_raise1(name)&lt;/code&gt; — &lt;em&gt;test_server_invalid_names_raise(&amp;lsquo;invalid.name&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_invalid_names_raise2(name)&lt;/code&gt; — &lt;em&gt;test_server_invalid_names_raise(&amp;lsquo;invalid/name&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_invalid_names_raise3(name)&lt;/code&gt; — &lt;em&gt;test_server_invalid_names_raise(&amp;lsquo;invalid@name&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_invalid_names_raise4(name)&lt;/code&gt; — &lt;em&gt;test_server_invalid_names_raise(&amp;lsquo;invalidName!&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_missing_name_raises_http(server_cls, init_kwargs)&lt;/code&gt; — &lt;em&gt;test_server_missing_name_raises_http(&amp;lt;class &amp;lsquo;google.antigravity.types.McpStreamableHttpServer&amp;rsquo;&amp;gt;, {&amp;lsquo;url&amp;rsquo;: &amp;lsquo;http://localhost/http&amp;rsquo;})&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_missing_name_raises_stdio(server_cls, init_kwargs)&lt;/code&gt; — &lt;em&gt;test_server_missing_name_raises_stdio(&amp;lt;class &amp;lsquo;google.antigravity.types.McpStdioServer&amp;rsquo;&amp;gt;, {&amp;lsquo;command&amp;rsquo;: &amp;rsquo;node&amp;rsquo;})&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_valid_names0(name)&lt;/code&gt; — &lt;em&gt;test_server_valid_names(&amp;lsquo;validName&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_valid_names1(name)&lt;/code&gt; — &lt;em&gt;test_server_valid_names(&amp;lsquo;valid-name&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_valid_names2(name)&lt;/code&gt; — &lt;em&gt;test_server_valid_names(&amp;lsquo;valid_name&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_server_valid_names3(name)&lt;/code&gt; — &lt;em&gt;test_server_valid_names(&amp;lsquo;valid_name-123&amp;rsquo;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_union_deserialization(None)&lt;/code&gt; — &lt;em&gt;Verifies that TypeAdapter parses McpServerConfig union variants with name correctly.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ModelTargetTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for the polymorphic ModelTarget hierarchy.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_basic_text_construction(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_image_model_construction(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_vertex_endpoint_construction(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class QuestionHookResultTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the QuestionHookResult Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_basic_construction(None)&lt;/code&gt; — &lt;em&gt;Verifies construction with a list of responses.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_cancelled(None)&lt;/code&gt; — &lt;em&gt;Verifies cancelled interaction.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_missing_responses_raises(None)&lt;/code&gt; — &lt;em&gt;Verifies that omitting required &amp;lsquo;responses&amp;rsquo; raises.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class QuestionResponseTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the QuestionResponse Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_defaults(None)&lt;/code&gt; — &lt;em&gt;Verifies QuestionResponse defaults.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_selected_options(None)&lt;/code&gt; — &lt;em&gt;Verifies construction with selected option IDs.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_skipped(None)&lt;/code&gt; — &lt;em&gt;Verifies construction of a skipped response.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_write_in(None)&lt;/code&gt; — &lt;em&gt;Verifies construction with a write-in response.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class StepTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the Step Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_basic_construction(None)&lt;/code&gt; — &lt;em&gt;Verifies that a Step can be constructed with all fields.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_defaults(None)&lt;/code&gt; — &lt;em&gt;Verifies that all Step fields have sensible defaults.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_extra_fields_allowed(None)&lt;/code&gt; — &lt;em&gt;Verifies extra=&amp;lsquo;allow&amp;rsquo; on Step as per Karmel&amp;rsquo;s model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_mutable(None)&lt;/code&gt; — &lt;em&gt;Verifies that Step is mutable as per Karmel&amp;rsquo;s model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_nested_tool_call(None)&lt;/code&gt; — &lt;em&gt;Verifies that a Step can contain a nested ToolCall.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SubagentCapabilitiesTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the SubagentCapabilities Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_defaults(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_mutually_exclusive_ok_disabled(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_mutually_exclusive_ok_enabled(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_mutually_exclusive_raises(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SubagentConfigTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the SubagentConfig Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_basic_construction(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_required_fields(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class SystemInstructionsTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for the SystemInstructions Pydantic model union.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_custom_construction(None)&lt;/code&gt; — &lt;em&gt;Verifies construction of CustomSystemInstructions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_custom_text_is_required(None)&lt;/code&gt; — &lt;em&gt;Verifies that CustomSystemInstructions raises when text is missing.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_templated_construction(None)&lt;/code&gt; — &lt;em&gt;Verifies construction of TemplatedSystemInstructions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_templated_empty_construction(None)&lt;/code&gt; — &lt;em&gt;Verifies that TemplatedSystemInstructions can be constructed empty.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_union_parsing_custom(None)&lt;/code&gt; — &lt;em&gt;Verifies that Pydantic parses CustomSystemInstructions from dict.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_union_parsing_empty_dict(None)&lt;/code&gt; — &lt;em&gt;Verifies that Pydantic parses empty dict as TemplatedSystemInstructions.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_union_parsing_templated(None)&lt;/code&gt; — &lt;em&gt;Verifies that Pydantic parses TemplatedSystemInstructions from dict.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ThinkingLevelTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for the ThinkingLevel enum.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_enum_values(None)&lt;/code&gt; — &lt;em&gt;Verifies each enum member has the expected string value.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_string_comparison(None)&lt;/code&gt; — &lt;em&gt;Verifies ThinkingLevel members compare equal to their string values.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ToolCallTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the ToolCall Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_basic_construction(None)&lt;/code&gt; — &lt;em&gt;Verifies that a ToolCall can be constructed with name and args.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_canonical_path_default_none(None)&lt;/code&gt; — &lt;em&gt;Verifies that canonical_path defaults to None.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_canonical_path_explicit(None)&lt;/code&gt; — &lt;em&gt;Verifies that canonical_path can be explicitly set.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_default_args(None)&lt;/code&gt; — &lt;em&gt;Verifies that args defaults to empty dict when omitted.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_extra_fields_ignored(None)&lt;/code&gt; — &lt;em&gt;Verifies that unknown fields are silently dropped.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_id_defaults_to_none(None)&lt;/code&gt; — &lt;em&gt;Verifies that id defaults to None when omitted.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_id_explicitly_set(None)&lt;/code&gt; — &lt;em&gt;Verifies that id can be explicitly set.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_missing_name_raises(None)&lt;/code&gt; — &lt;em&gt;Verifies that omitting required field &amp;rsquo;name&amp;rsquo; raises.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ToolResultTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the ToolResult Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_error_result(None)&lt;/code&gt; — &lt;em&gt;Verifies construction of an error ToolResult.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_extra_fields_ignored(None)&lt;/code&gt; — &lt;em&gt;Verifies extra=&amp;lsquo;ignore&amp;rsquo; on ToolResult.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_id_defaults_to_none(None)&lt;/code&gt; — &lt;em&gt;Verifies that id defaults to None when omitted.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_id_explicitly_set(None)&lt;/code&gt; — &lt;em&gt;Verifies that id can be explicitly set for call correlation.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_id_mutable(None)&lt;/code&gt; — &lt;em&gt;Verifies that id can be set after construction.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_mutable(None)&lt;/code&gt; — &lt;em&gt;Verifies that ToolResult is mutable (not frozen).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_success_result(None)&lt;/code&gt; — &lt;em&gt;Verifies construction of a successful ToolResult.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class VideoTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Validates the Video content attachment primitive and its validators.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_basic_construction(None)&lt;/code&gt; — &lt;em&gt;Verifies that a Video can be successfully constructed with valid arguments.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_unsupported_mime_type_raises(None)&lt;/code&gt; — &lt;em&gt;Verifies that an unsupported Video MIME type triggers ValidationError.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-模組-googleantigravityutils&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.utils&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityutils&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/utils/__init__.py&#34;&gt;&lt;strong&gt;init&lt;/strong&gt;.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityutilsinteractive&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.utils.interactive&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityutilsinteractive&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/utils/interactive.py&#34;&gt;interactive.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-30&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-30&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AskQuestionHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Hook that prompts the user to answer questions asked by the agent.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;hooks.HookContext&#39;, data: &#39;types.AskQuestionInteractionSpec&#39;)&lt;/code&gt; — &lt;em&gt;Asks the user for answers to each question via standard input.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class Spinner(message: &#39;str&#39; = &#39;Thinking...&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: A lightweight terminal spinner for async processing feedback.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def update(message: &#39;str&#39;)&lt;/code&gt; — &lt;em&gt;Updates the spinner display message.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ToolConfirmationHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Hook that prompts the user for confirmation before executing a tool.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: &#39;hooks.HookContext&#39;, data: &#39;types.ToolCall&#39;)&lt;/code&gt; — &lt;em&gt;Asks the user for confirmation via standard input.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityutilsinteractive_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.utils.interactive_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityutilsinteractive_test&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/utils/interactive_test.py&#34;&gt;interactive_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-31&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-31&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AskQuestionHookTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for AskQuestionHook.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_question_hook_eof(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that EOFError results in a cancelled response.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_question_hook_option_number(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that the user can select an option by its index.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_question_hook_option_text(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that the user can select an option by its exact text.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_question_hook_skip(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that the user can skip a question by providing empty input.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_question_hook_write_in(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that the user can provide a write-in response.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AskUserHandlerTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for ask_user_handler.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_user_handler_allow(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that the handler returns True when the user confirms.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_user_handler_deny(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that the handler returns False when the user declines.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_ask_user_handler_eof(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that the handler returns False on EOFError.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class AsyncInputTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for async_input.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_cancellation(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that cancelling the future does not crash the thread.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_default_prompt(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that async_input passes an empty prompt by default.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_propagates_eof_error(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that EOFError from input() is propagated.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_returns_user_input(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that async_input returns the value from input().&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class RunInteractiveLoopTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for run_interactive_loop.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_run_interactive_loop(mock_async_input, mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Verifies the basic interactive loop flow.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_run_interactive_loop_appends_ask_question_hook_when_missing(mock_async_input, mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Verifies that AskQuestionHook is added when not present.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_run_interactive_loop_does_not_duplicate_ask_question_hook_when_present(mock_async_input, mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Verifies that AskQuestionHook is not duplicated if already present.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_run_interactive_loop_interrupt(mock_async_input, mock_conv_create, mock_strategy_class)&lt;/code&gt; — &lt;em&gt;Verifies clean exit on KeyboardInterrupt.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class ToolConfirmationHookTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for ToolConfirmationHook.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_confirmation_hook_allow(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that the hook allows execution when the user confirms.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_confirmation_hook_deny(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that the hook denies execution when the user declines.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_confirmation_hook_eof(mock_input)&lt;/code&gt; — &lt;em&gt;Verifies that the hook denies execution on EOFError.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class UpgradePoliciesListTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests for _upgrade_policies_list.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt; — &lt;em&gt;Run the test without collecting errors in a TestResult&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up the test fixture before exercising it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the test fixture after testing it.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_upgrade_policies_list(None)&lt;/code&gt; — &lt;em&gt;Verifies that deny policies on run_command are converted to ask_user.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityutilsotel&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.utils.otel&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityutilsotel&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/utils/otel.py&#34;&gt;otel.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-32&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-32&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OTelOnToolErrorHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Records exceptions and ends a tool span on error.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: google.antigravity.hooks.hooks.HookContext, data: Exception)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OTelPostStepHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Ends a step span.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: google.antigravity.hooks.hooks.HookContext, data: google.antigravity.types.Step)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OTelPostToolCallHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Ends a tool span.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: google.antigravity.hooks.hooks.HookContext, data: google.antigravity.types.ToolResult)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OTelPostTurnHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Ends the Turn span.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: google.antigravity.hooks.hooks.HookContext, data: str)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OTelPreStepHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Starts a step span.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: google.antigravity.hooks.hooks.HookContext, data: google.antigravity.types.Step)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OTelPreToolCallHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Starts a tool span.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: google.antigravity.hooks.hooks.HookContext, data: google.antigravity.types.ToolCall)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OTelPreTurnHook(agent_name: str = &#39;Antigravity&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Starts the Turn span under Session.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: google.antigravity.hooks.hooks.HookContext, data: str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand | collections.abc.Sequence[str | google.antigravity.types.Image | google.antigravity.types.Document | google.antigravity.types.Audio | google.antigravity.types.Video | google.antigravity.types.SlashCommand])&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OTelSessionEndHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Closes the root session span.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: google.antigravity.hooks.hooks.HookContext, data: None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OTelSessionStartHook(*args, **kwargs)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Starts the root session span.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def run(context: google.antigravity.hooks.hooks.HookContext, data: None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;-模組-googleantigravityutilsotel_test&#34;&gt;📦 模組: &lt;code&gt;google.antigravity.utils.otel_test&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#-%e6%a8%a1%e7%b5%84-googleantigravityutilsotel_test&#34;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;實體檔案: &lt;a href=&#34;https://github.com/wuulong/wuulong-notes-blog/blob/main/content/kb/antigravity-practice/file:///Users/wuulong/opt/anaconda3/envs/m2504/lib/python3.12/site-packages/google/antigravity/utils/otel_test.py&#34;&gt;otel_test.py&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;類別-classes-33&#34;&gt;類別 (Classes)&lt;a class=&#34;anchor&#34; href=&#34;#%e9%a1%9e%e5%88%a5-classes-33&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class DummyStep(**data: &#39;Any&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def copy(include: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, exclude: &#39;AbstractSetIntStr | MappingIntStrAny | None&#39; = None, update: &#39;Dict[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;Returns a copy of the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def dict(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def from_orm(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def json(include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, by_alias: &#39;bool&#39; = False, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, encoder: &#39;Callable[[Any], Any] | None&#39; = PydanticUndefined, models_as_dict: &#39;bool&#39; = PydanticUndefined, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_construct(_fields_set: &#39;set[str] | None&#39; = None, **values: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Creates a new instance of the &lt;code&gt;Model&lt;/code&gt; class with validated data.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_copy(update: &#39;Mapping[str, Any] | None&#39; = None, deep: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump(mode: &amp;quot;Literal[&#39;json&#39;, &#39;python&#39;] | str&amp;quot; = &#39;python&#39;, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_dump_json(indent: &#39;int | None&#39; = None, include: &#39;IncEx | None&#39; = None, exclude: &#39;IncEx | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, exclude_unset: &#39;bool&#39; = False, exclude_defaults: &#39;bool&#39; = False, exclude_none: &#39;bool&#39; = False, round_trip: &#39;bool&#39; = False, warnings: &amp;quot;bool | Literal[&#39;none&#39;, &#39;warn&#39;, &#39;error&#39;]&amp;quot; = True, fallback: &#39;Callable[[Any], Any] | None&#39; = None, serialize_as_any: &#39;bool&#39; = False)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_json_schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, schema_generator: &#39;type[GenerateJsonSchema]&#39; = &amp;lt;class &#39;pydantic.json_schema.GenerateJsonSchema&#39;&amp;gt;, mode: &#39;JsonSchemaMode&#39; = &#39;validation&#39;)&lt;/code&gt; — &lt;em&gt;Generates a JSON schema for a model class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_parametrized_name(params: &#39;tuple[type[Any], ...]&#39;)&lt;/code&gt; — &lt;em&gt;Compute the class name for parametrizations of generic classes.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_post_init(context: &#39;Any&#39;)&lt;/code&gt; — &lt;em&gt;Override this method to perform additional initialization after &lt;code&gt;__init__&lt;/code&gt; and &lt;code&gt;model_construct&lt;/code&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_rebuild(force: &#39;bool&#39; = False, raise_errors: &#39;bool&#39; = True, _parent_namespace_depth: &#39;int&#39; = 2, _types_namespace: &#39;MappingNamespace | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Try to rebuild the pydantic-core schema for the model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, from_attributes: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate a pydantic model instance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_json(json_data: &#39;str | bytes | bytearray&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;!!! abstract &amp;ldquo;Usage Documentation&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def model_validate_strings(obj: &#39;Any&#39;, strict: &#39;bool | None&#39; = None, context: &#39;Any | None&#39; = None, by_alias: &#39;bool | None&#39; = None, by_name: &#39;bool | None&#39; = None)&lt;/code&gt; — &lt;em&gt;Validate the given object with string data against the Pydantic model.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_file(path: &#39;str | Path&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_obj(obj: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def parse_raw(b: &#39;str | bytes&#39;, content_type: &#39;str | None&#39; = None, encoding: &#39;str&#39; = &#39;utf8&#39;, proto: &#39;DeprecatedParseProtocol | None&#39; = None, allow_pickle: &#39;bool&#39; = False)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def schema_json(by_alias: &#39;bool&#39; = True, ref_template: &#39;str&#39; = &#39;#/$defs/{model}&#39;, **dumps_kwargs: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def update_forward_refs(**localns: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def validate(value: &#39;Any&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;class OtelHooksTest(methodName=&#39;runTest&#39;)&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;描述: Tests tracing context propagation across turns and interleaved steps.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法列表 (Methods):&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;def addAsyncCleanup(func, *args, **kwargs)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addClassCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Same as addCleanup, except the cleanup items are called even if&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addCleanup(function, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Add a function, with arguments, to be called when the test is&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def addTypeEqualityFunc(typeobj, function)&lt;/code&gt; — &lt;em&gt;Add a type specific assertEqual style function to compare a type.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertCountEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Asserts that two iterables have the same elements, the same number of&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertDictEqual(d1, d2, msg=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are unequal as determined by the &amp;lsquo;==&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertFalse(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is false.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreater(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertGreaterEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;gt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIs(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(isinstance(obj, cls)), with a nicer&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Same as self.assertTrue(obj is None), with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNot(expr1, expr2, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a is not b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertIsNotNone(obj, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsNone.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLess(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt; b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLessEqual(a, b, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a &amp;lt;= b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertListEqual(list1, list2, msg=None)&lt;/code&gt; — &lt;em&gt;A list-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless a log message of level &lt;em&gt;level&lt;/em&gt; or higher is emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertMultiLineEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Assert that two multi-line strings are equal.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNoLogs(logger=None, level=None)&lt;/code&gt; — &lt;em&gt;Fail unless no log messages of level &lt;em&gt;level&lt;/em&gt; or higher are emitted&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by their&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotEqual(first, second, msg=None)&lt;/code&gt; — &lt;em&gt;Fail if the two objects are equal as determined by the &amp;lsquo;!=&amp;rsquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIn(member, container, msg=None)&lt;/code&gt; — &lt;em&gt;Just like self.assertTrue(a not in b), but with a nicer default message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotIsInstance(obj, cls, msg=None)&lt;/code&gt; — &lt;em&gt;Included for symmetry with assertIsInstance.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertNotRegex(text, unexpected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test if the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaises(expected_exception, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless an exception of class expected_exception is raised&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRaisesRegex(expected_exception, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a raised exception matches a regex.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertRegex(text, expected_regex, msg=None)&lt;/code&gt; — &lt;em&gt;Fail the test unless the text matches the regular expression.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)&lt;/code&gt; — &lt;em&gt;An equality assertion for ordered sequences (like lists and tuples).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertSetEqual(set1, set2, msg=None)&lt;/code&gt; — &lt;em&gt;A set-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTrue(expr, msg=None)&lt;/code&gt; — &lt;em&gt;Check that the expression is true.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertTupleEqual(tuple1, tuple2, msg=None)&lt;/code&gt; — &lt;em&gt;A tuple-specific equality assertion.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarns(expected_warning, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Fail unless a warning of class warnClass is triggered&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def assertWarnsRegex(expected_warning, expected_regex, *args, **kwargs)&lt;/code&gt; — &lt;em&gt;Asserts that the message in a triggered warning matches a regexp.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncSetUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def asyncTearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def countTestCases(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def debug(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def defaultTestResult(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doClassCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all class cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def doCleanups(None)&lt;/code&gt; — &lt;em&gt;Execute all cleanup functions. Normally called for you after&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterAsyncContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied asynchronous context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterClassContext(cm)&lt;/code&gt; — &lt;em&gt;Same as enterContext, but class-wide.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def enterContext(cm)&lt;/code&gt; — &lt;em&gt;Enters the supplied context manager.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def fail(msg=None)&lt;/code&gt; — &lt;em&gt;Fail immediately, with the given message.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def id(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def run(result=None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUp(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def setUpClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for setting up class fixture before running tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def shortDescription(None)&lt;/code&gt; — &lt;em&gt;Returns a one-line description of the test, or None if no&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def skipTest(reason)&lt;/code&gt; — &lt;em&gt;Skip this test.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def subTest(msg=&amp;lt;object object at 0x10332f6f0&amp;gt;, **params)&lt;/code&gt; — &lt;em&gt;Return a context manager that will return the enclosed block&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDown(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def tearDownClass(None)&lt;/code&gt; — &lt;em&gt;Hook method for deconstructing the class fixture after running all tests in the class.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_active_tool_span_propagation(None)&lt;/code&gt; — &lt;em&gt;Verifies that nested spans started during tool execution are parented under the tool span.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_auto_cleanup_remaining_spans(None)&lt;/code&gt; — &lt;em&gt;Verifies that hooks clean up spans left open due to missing lifecycle calls.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_get_otel_hooks(None)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_interleaved_steps_tracing(None)&lt;/code&gt; — &lt;em&gt;Verifies steps and tools are correctly parented under concurrent execution.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_session_and_turn_hierarchy(None)&lt;/code&gt; — &lt;em&gt;Verifies that turn spans are nested under session spans.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_step_failure_tracing(None)&lt;/code&gt; — &lt;em&gt;Verifies that failed steps record error status on the span.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_failure_tracing(None)&lt;/code&gt; — &lt;em&gt;Verifies OTelOnToolErrorHook records exception and ends tool span.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_tool_span_context_exit_different_task(None)&lt;/code&gt; — &lt;em&gt;Verifies that exiting tool span context in a different task does not fail.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def test_trajectory_id_fallbacks(None)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/extended_labs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/extended_labs/</guid>
      <description>&lt;h1 id=&#34;-antigravity-sdk-進階延伸-labs-設計說明書&#34;&gt;🚀 Antigravity SDK 進階延伸 Labs 設計說明書&lt;a class=&#34;anchor&#34; href=&#34;#-antigravity-sdk-%e9%80%b2%e9%9a%8e%e5%bb%b6%e4%bc%b8-labs-%e8%a8%ad%e8%a8%88%e8%aa%aa%e6%98%8e%e6%9b%b8&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;本說明書為您規劃了多個具備前瞻性、解決企業級複雜場景的延伸 Labs 與 Loop Engineering 核心概念範例。此文檔主要作為系統設計與架構規劃，無須實作代碼，旨在幫助您理解未來 Agentic AI 在長週期、高安全要求、多代理對抗以及認知自我演進場景下的設計心法。&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/readme/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/readme/</guid>
      <description>&lt;h1 id=&#34;-antigravity-sdk-極簡實作練習專案指南&#34;&gt;🚀 Antigravity SDK 極簡實作練習專案指南&lt;a class=&#34;anchor&#34; href=&#34;#-antigravity-sdk-%e6%a5%b5%e7%b0%a1%e5%af%a6%e4%bd%9c%e7%b7%b4%e7%bf%92%e5%b0%88%e6%a1%88%e6%8c%87%e5%8d%97&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;本指南旨在幫助您在極簡的架構下，快速實作並掌握 Google Antigravity SDK 的核心能力，並理解其相較於傳統 Google GenAI (GAI) SDK 的優勢。&lt;/p&gt;
&lt;p&gt;專案所有的練習程式碼已為您部署在工作區&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/sdk_quiz/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/sdk_quiz/</guid>
      <description>&lt;h1 id=&#34;antigravity-sdk-觀念檢定與隨堂測驗-quiz&#34;&gt;Antigravity SDK 觀念檢定與隨堂測驗 (Quiz)&lt;a class=&#34;anchor&#34; href=&#34;#antigravity-sdk-%e8%a7%80%e5%bf%b5%e6%aa%a2%e5%ae%9a%e8%88%87%e9%9a%a8%e5%a0%82%e6%b8%ac%e9%a9%97-quiz&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;本文件整理了 15 題涵蓋基礎到進階企業級實作的核心觀念測驗。建議您在閱讀時，先自行思考或動手查閱代碼，再點開底部的折疊解析進行對合，以達到最佳的學習效果，且完全不消耗任何 LLM Token。&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/skills/music-ops/skill/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wuulong.github.io/wuulong-notes-blog/kb/antigravity-practice/skills/music-ops/skill/</guid>
      <description>提供音樂教室營運的 SOP 資訊，包含颱風天停課退費標準。</description>
    </item>
  </channel>
</rss>
