codeant-ai-for-open-source[bot] commented on code in PR #40906:
URL: https://github.com/apache/superset/pull/40906#discussion_r3404153709
##########
superset/mcp_service/server.py:
##########
@@ -659,6 +709,9 @@ def _make_call_tool(self) -> Any:
"""Build the normalized ``call_tool`` proxy for BM25 search."""
return make_normalizing_call_tool(self)
+ def _make_search_tool(self) -> Any:
+ return _make_optional_query_search_tool(self)
Review Comment:
**Suggestion:** Add a short docstring to this newly added method override in
the second transform class as well, to keep new methods consistently
documented. [custom_rule]
**Severity Level:** Minor ⚠️
<details>
<summary><b>Why it matters? 🤔 </b></summary>
This is also a newly added method override in the new hunk and it lacks a
docstring. That directly violates the rule requiring newly added Python
functions and classes to include docstrings.
</details>
[Fix in
Cursor](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=57239577da0e43259cd230b9133fbe48&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
| [Fix in VSCode
Claude](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=57239577da0e43259cd230b9133fbe48&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
*(Use Cmd/Ctrl + Click for best experience)*
<details>
<summary><b>Prompt for AI Agent 🤖 </b></summary>
```mdx
This is a comment left during a code review.
**Path:** superset/mcp_service/server.py
**Line:** 712:713
**Comment:**
*Custom Rule: Add a short docstring to this newly added method override
in the second transform class as well, to keep new methods consistently
documented.
Validate the correctness of the flagged issue. If correct, How can I resolve
this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask
user if the user wants to fix the rest of the comments as well. if said yes,
then fetch all the comments validate the correctness and implement a minimal fix
```
</details>
<a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=372be5f7446f179092b22ec9362854f391c3b0d66af490a4bf69d988b0ec4066&reaction=like'>👍</a>
| <a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=372be5f7446f179092b22ec9362854f391c3b0d66af490a4bf69d988b0ec4066&reaction=dislike'>👎</a>
##########
superset/mcp_service/server.py:
##########
@@ -643,6 +690,9 @@ def _make_call_tool(self) -> Any:
"""Build the normalized ``call_tool`` proxy for regex
search."""
return make_normalizing_call_tool(self)
+ def _make_search_tool(self) -> Any:
+ return _make_optional_query_search_tool(self)
Review Comment:
**Suggestion:** Add a short docstring to this newly added method override so
it matches the documentation standard for new functions. [custom_rule]
**Severity Level:** Minor ⚠️
<details>
<summary><b>Why it matters? 🤔 </b></summary>
This is a newly added Python method in the new hunk, and it does not include
a docstring. The custom rule requires newly added functions and classes to be
documented inline, so this is a real violation.
</details>
[Fix in
Cursor](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=20465dc880b34d26819f50634b17c784&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
| [Fix in VSCode
Claude](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=20465dc880b34d26819f50634b17c784&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
*(Use Cmd/Ctrl + Click for best experience)*
<details>
<summary><b>Prompt for AI Agent 🤖 </b></summary>
```mdx
This is a comment left during a code review.
**Path:** superset/mcp_service/server.py
**Line:** 693:694
**Comment:**
*Custom Rule: Add a short docstring to this newly added method override
so it matches the documentation standard for new functions.
Validate the correctness of the flagged issue. If correct, How can I resolve
this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask
user if the user wants to fix the rest of the comments as well. if said yes,
then fetch all the comments validate the correctness and implement a minimal fix
```
</details>
<a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=64a33a23f7ece89a9f1d064ba3b6d0a6268734d0f334133bb9ed67c3f3c7887a&reaction=like'>👍</a>
| <a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=64a33a23f7ece89a9f1d064ba3b6d0a6268734d0f334133bb9ed67c3f3c7887a&reaction=dislike'>👎</a>
##########
tests/unit_tests/mcp_service/test_tool_search_transform.py:
##########
@@ -1226,3 +1226,92 @@ def
test_create_serializer_include_schemas_true_with_compact():
assert result[0]["inputSchema"]["properties"]["filters"]["items"] == {
"type": "object"
}
+
+
+# -- search_tools optional query tests --
+
+
+def test_search_tool_query_is_optional_in_schema():
+ """search_tools schema marks query optional with a flat concrete type.
+
+ The query schema must not use ``anyOf`` — MCP bridges (mcp-remote,
+ Claude Desktop) strip ``anyOf`` and leave the field typeless, the same
+ failure mode ``_fix_call_tool_arguments`` guards against.
+ """
+ mock_mcp = MagicMock()
+ config = {
+ "strategy": "bm25",
+ "max_results": 5,
+ "always_visible": [],
+ "search_tool_name": "search_tools",
+ "call_tool_name": "call_tool",
+ }
+ _apply_tool_search_transform(mock_mcp, config)
+ transform = mock_mcp.add_transform.call_args[0][0]
+ search_tool = transform._make_search_tool()
+
+ params = search_tool.parameters
+ assert "query" not in params.get("required", [])
+ query_schema = params["properties"]["query"]
+ assert query_schema["type"] == "string"
+ assert "anyOf" not in query_schema
+
+
+def test_search_tool_with_no_query_returns_all_visible_tools():
+ """search_tools returns all visible tools when called with no arguments."""
+ import asyncio
+ from unittest.mock import AsyncMock
+
+ mock_mcp = MagicMock()
+ config = {
+ "strategy": "bm25",
+ "max_results": 5,
+ "always_visible": [],
+ "search_tool_name": "search_tools",
+ "call_tool_name": "call_tool",
+ }
+ _apply_tool_search_transform(mock_mcp, config)
+ transform = mock_mcp.add_transform.call_args[0][0]
+
+ tool_a = MagicMock()
+ tool_b = MagicMock()
+ all_tools = [tool_a, tool_b]
+
+ async def run():
Review Comment:
**Suggestion:** Add a return type annotation to this newly introduced async
helper function. [custom_rule]
**Severity Level:** Minor ⚠️
<details>
<summary><b>Why it matters? 🤔 </b></summary>
The nested async helper is newly introduced and has no return type
annotation. The rule explicitly requires new Python functions to be fully
typed, so this is a verified violation.
</details>
[Fix in
Cursor](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=127cede4e67a40bdb76d0fea0918ce31&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
| [Fix in VSCode
Claude](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=127cede4e67a40bdb76d0fea0918ce31&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
*(Use Cmd/Ctrl + Click for best experience)*
<details>
<summary><b>Prompt for AI Agent 🤖 </b></summary>
```mdx
This is a comment left during a code review.
**Path:** tests/unit_tests/mcp_service/test_tool_search_transform.py
**Line:** 1280:1280
**Comment:**
*Custom Rule: Add a return type annotation to this newly introduced
async helper function.
Validate the correctness of the flagged issue. If correct, How can I resolve
this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask
user if the user wants to fix the rest of the comments as well. if said yes,
then fetch all the comments validate the correctness and implement a minimal fix
```
</details>
<a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=7e6b73d3e6521f793f6306a43bcd96910150c5c3425df8e4663f27d40919080d&reaction=like'>👍</a>
| <a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=7e6b73d3e6521f793f6306a43bcd96910150c5c3425df8e4663f27d40919080d&reaction=dislike'>👎</a>
##########
tests/unit_tests/mcp_service/test_tool_search_transform.py:
##########
@@ -1226,3 +1226,92 @@ def
test_create_serializer_include_schemas_true_with_compact():
assert result[0]["inputSchema"]["properties"]["filters"]["items"] == {
"type": "object"
}
+
+
+# -- search_tools optional query tests --
+
+
+def test_search_tool_query_is_optional_in_schema():
Review Comment:
**Suggestion:** Add an explicit return type annotation to this new test
function so it is fully typed. [custom_rule]
**Severity Level:** Minor ⚠️
<details>
<summary><b>Why it matters? 🤔 </b></summary>
This is a newly added Python function in changed code, and it has no return
type annotation. The rule requires new Python functions to be fully typed, so
this is a real violation.
</details>
[Fix in
Cursor](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=01906162d64d4a7d90664b331f982b22&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
| [Fix in VSCode
Claude](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=01906162d64d4a7d90664b331f982b22&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
*(Use Cmd/Ctrl + Click for best experience)*
<details>
<summary><b>Prompt for AI Agent 🤖 </b></summary>
```mdx
This is a comment left during a code review.
**Path:** tests/unit_tests/mcp_service/test_tool_search_transform.py
**Line:** 1234:1234
**Comment:**
*Custom Rule: Add an explicit return type annotation to this new test
function so it is fully typed.
Validate the correctness of the flagged issue. If correct, How can I resolve
this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask
user if the user wants to fix the rest of the comments as well. if said yes,
then fetch all the comments validate the correctness and implement a minimal fix
```
</details>
<a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=ffb68ea12d76781156219be709963e29035f58fb195334b2d01a346c36f2ad78&reaction=like'>👍</a>
| <a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=ffb68ea12d76781156219be709963e29035f58fb195334b2d01a346c36f2ad78&reaction=dislike'>👎</a>
##########
tests/unit_tests/mcp_service/test_tool_search_transform.py:
##########
@@ -1226,3 +1226,92 @@ def
test_create_serializer_include_schemas_true_with_compact():
assert result[0]["inputSchema"]["properties"]["filters"]["items"] == {
"type": "object"
}
+
+
+# -- search_tools optional query tests --
+
+
+def test_search_tool_query_is_optional_in_schema():
+ """search_tools schema marks query optional with a flat concrete type.
+
+ The query schema must not use ``anyOf`` — MCP bridges (mcp-remote,
+ Claude Desktop) strip ``anyOf`` and leave the field typeless, the same
+ failure mode ``_fix_call_tool_arguments`` guards against.
+ """
+ mock_mcp = MagicMock()
+ config = {
+ "strategy": "bm25",
+ "max_results": 5,
+ "always_visible": [],
+ "search_tool_name": "search_tools",
+ "call_tool_name": "call_tool",
+ }
+ _apply_tool_search_transform(mock_mcp, config)
+ transform = mock_mcp.add_transform.call_args[0][0]
+ search_tool = transform._make_search_tool()
+
+ params = search_tool.parameters
+ assert "query" not in params.get("required", [])
+ query_schema = params["properties"]["query"]
+ assert query_schema["type"] == "string"
+ assert "anyOf" not in query_schema
+
+
+def test_search_tool_with_no_query_returns_all_visible_tools():
+ """search_tools returns all visible tools when called with no arguments."""
+ import asyncio
+ from unittest.mock import AsyncMock
+
+ mock_mcp = MagicMock()
+ config = {
+ "strategy": "bm25",
+ "max_results": 5,
+ "always_visible": [],
+ "search_tool_name": "search_tools",
+ "call_tool_name": "call_tool",
+ }
+ _apply_tool_search_transform(mock_mcp, config)
+ transform = mock_mcp.add_transform.call_args[0][0]
+
+ tool_a = MagicMock()
+ tool_b = MagicMock()
+ all_tools = [tool_a, tool_b]
+
+ async def run():
+ transform._get_visible_tools = AsyncMock(return_value=all_tools)
+ transform._render_results = AsyncMock(return_value=[{"name":
"tool_a"}])
+ search_tool = transform._make_search_tool()
+ await search_tool.run({}) # must not raise ValidationError
+ return transform._render_results.call_args[0][0]
+
+ rendered_with = asyncio.run(run())
+ assert rendered_with == all_tools
+
+
+def test_search_tool_regex_with_no_query_returns_all_visible_tools():
Review Comment:
**Suggestion:** Add an explicit return type annotation to this new test
function so it satisfies the typing rule. [custom_rule]
**Severity Level:** Minor ⚠️
<details>
<summary><b>Why it matters? 🤔 </b></summary>
This is a newly added Python test function in the modified section and it
lacks a return type hint. That matches the stated rule violation.
</details>
[Fix in
Cursor](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=2c6ebd4d8f254d98959d009792dda19e&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
| [Fix in VSCode
Claude](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=2c6ebd4d8f254d98959d009792dda19e&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
*(Use Cmd/Ctrl + Click for best experience)*
<details>
<summary><b>Prompt for AI Agent 🤖 </b></summary>
```mdx
This is a comment left during a code review.
**Path:** tests/unit_tests/mcp_service/test_tool_search_transform.py
**Line:** 1291:1291
**Comment:**
*Custom Rule: Add an explicit return type annotation to this new test
function so it satisfies the typing rule.
Validate the correctness of the flagged issue. If correct, How can I resolve
this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask
user if the user wants to fix the rest of the comments as well. if said yes,
then fetch all the comments validate the correctness and implement a minimal fix
```
</details>
<a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=3463581bf49fd7262397b43fdb6772be0ab813e6409a96b291e2ddf8341796f9&reaction=like'>👍</a>
| <a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=3463581bf49fd7262397b43fdb6772be0ab813e6409a96b291e2ddf8341796f9&reaction=dislike'>👎</a>
##########
tests/unit_tests/mcp_service/test_tool_search_transform.py:
##########
@@ -1226,3 +1226,92 @@ def
test_create_serializer_include_schemas_true_with_compact():
assert result[0]["inputSchema"]["properties"]["filters"]["items"] == {
"type": "object"
}
+
+
+# -- search_tools optional query tests --
+
+
+def test_search_tool_query_is_optional_in_schema():
+ """search_tools schema marks query optional with a flat concrete type.
+
+ The query schema must not use ``anyOf`` — MCP bridges (mcp-remote,
+ Claude Desktop) strip ``anyOf`` and leave the field typeless, the same
+ failure mode ``_fix_call_tool_arguments`` guards against.
+ """
+ mock_mcp = MagicMock()
+ config = {
+ "strategy": "bm25",
+ "max_results": 5,
+ "always_visible": [],
+ "search_tool_name": "search_tools",
+ "call_tool_name": "call_tool",
+ }
+ _apply_tool_search_transform(mock_mcp, config)
+ transform = mock_mcp.add_transform.call_args[0][0]
+ search_tool = transform._make_search_tool()
+
+ params = search_tool.parameters
+ assert "query" not in params.get("required", [])
+ query_schema = params["properties"]["query"]
+ assert query_schema["type"] == "string"
+ assert "anyOf" not in query_schema
+
+
+def test_search_tool_with_no_query_returns_all_visible_tools():
+ """search_tools returns all visible tools when called with no arguments."""
+ import asyncio
+ from unittest.mock import AsyncMock
+
+ mock_mcp = MagicMock()
+ config = {
+ "strategy": "bm25",
+ "max_results": 5,
+ "always_visible": [],
+ "search_tool_name": "search_tools",
+ "call_tool_name": "call_tool",
+ }
+ _apply_tool_search_transform(mock_mcp, config)
+ transform = mock_mcp.add_transform.call_args[0][0]
+
+ tool_a = MagicMock()
+ tool_b = MagicMock()
+ all_tools = [tool_a, tool_b]
+
+ async def run():
+ transform._get_visible_tools = AsyncMock(return_value=all_tools)
+ transform._render_results = AsyncMock(return_value=[{"name":
"tool_a"}])
+ search_tool = transform._make_search_tool()
+ await search_tool.run({}) # must not raise ValidationError
+ return transform._render_results.call_args[0][0]
+
+ rendered_with = asyncio.run(run())
+ assert rendered_with == all_tools
+
+
+def test_search_tool_regex_with_no_query_returns_all_visible_tools():
+ """Regex strategy returns all visible tools when called with no
arguments."""
+ import asyncio
+ from unittest.mock import AsyncMock
+
+ mock_mcp = MagicMock()
+ config = {
+ "strategy": "regex",
+ "max_results": 5,
+ "always_visible": [],
+ "search_tool_name": "search_tools",
+ "call_tool_name": "call_tool",
+ }
+ _apply_tool_search_transform(mock_mcp, config)
+ transform = mock_mcp.add_transform.call_args[0][0]
+
+ all_tools = [MagicMock(), MagicMock()]
+
+ async def run():
Review Comment:
**Suggestion:** Add a return type annotation to this new async local
function to keep new code fully typed. [custom_rule]
**Severity Level:** Minor ⚠️
<details>
<summary><b>Why it matters? 🤔 </b></summary>
This second nested async helper is also newly added and untyped. Since the
rule requires new Python functions to include type hints, the suggestion is
verified.
</details>
[Fix in
Cursor](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=12f41cc613744217895a8e7df9a2f59f&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
| [Fix in VSCode
Claude](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=12f41cc613744217895a8e7df9a2f59f&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
*(Use Cmd/Ctrl + Click for best experience)*
<details>
<summary><b>Prompt for AI Agent 🤖 </b></summary>
```mdx
This is a comment left during a code review.
**Path:** tests/unit_tests/mcp_service/test_tool_search_transform.py
**Line:** 1309:1309
**Comment:**
*Custom Rule: Add a return type annotation to this new async local
function to keep new code fully typed.
Validate the correctness of the flagged issue. If correct, How can I resolve
this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask
user if the user wants to fix the rest of the comments as well. if said yes,
then fetch all the comments validate the correctness and implement a minimal fix
```
</details>
<a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=b7d83a3a9580b35c2d080400500a2569fe49947275458bf72d7f66a1c889375a&reaction=like'>👍</a>
| <a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=b7d83a3a9580b35c2d080400500a2569fe49947275458bf72d7f66a1c889375a&reaction=dislike'>👎</a>
##########
tests/unit_tests/mcp_service/test_tool_search_transform.py:
##########
@@ -1226,3 +1226,92 @@ def
test_create_serializer_include_schemas_true_with_compact():
assert result[0]["inputSchema"]["properties"]["filters"]["items"] == {
"type": "object"
}
+
+
+# -- search_tools optional query tests --
+
+
+def test_search_tool_query_is_optional_in_schema():
+ """search_tools schema marks query optional with a flat concrete type.
+
+ The query schema must not use ``anyOf`` — MCP bridges (mcp-remote,
+ Claude Desktop) strip ``anyOf`` and leave the field typeless, the same
+ failure mode ``_fix_call_tool_arguments`` guards against.
+ """
+ mock_mcp = MagicMock()
+ config = {
+ "strategy": "bm25",
+ "max_results": 5,
+ "always_visible": [],
+ "search_tool_name": "search_tools",
+ "call_tool_name": "call_tool",
+ }
+ _apply_tool_search_transform(mock_mcp, config)
+ transform = mock_mcp.add_transform.call_args[0][0]
+ search_tool = transform._make_search_tool()
+
+ params = search_tool.parameters
+ assert "query" not in params.get("required", [])
+ query_schema = params["properties"]["query"]
+ assert query_schema["type"] == "string"
+ assert "anyOf" not in query_schema
+
+
+def test_search_tool_with_no_query_returns_all_visible_tools():
Review Comment:
**Suggestion:** Add an explicit return type annotation to this new test
function to comply with full typing requirements. [custom_rule]
**Severity Level:** Minor ⚠️
<details>
<summary><b>Why it matters? 🤔 </b></summary>
This is a newly added test function and it omits a return type annotation.
That violates the custom typing rule for new Python functions.
</details>
[Fix in
Cursor](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=829e88646d02470abc50c1f98516918a&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
| [Fix in VSCode
Claude](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=829e88646d02470abc50c1f98516918a&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
*(Use Cmd/Ctrl + Click for best experience)*
<details>
<summary><b>Prompt for AI Agent 🤖 </b></summary>
```mdx
This is a comment left during a code review.
**Path:** tests/unit_tests/mcp_service/test_tool_search_transform.py
**Line:** 1260:1260
**Comment:**
*Custom Rule: Add an explicit return type annotation to this new test
function to comply with full typing requirements.
Validate the correctness of the flagged issue. If correct, How can I resolve
this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask
user if the user wants to fix the rest of the comments as well. if said yes,
then fetch all the comments validate the correctness and implement a minimal fix
```
</details>
<a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=0ed7fc41015406b71ce36c21a9ad1193df1429a6bd78663d9792539c66afd3df&reaction=like'>👍</a>
| <a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F40906&comment_hash=0ed7fc41015406b71ce36c21a9ad1193df1429a6bd78663d9792539c66afd3df&reaction=dislike'>👎</a>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]