Compare commits

..

4 Commits

Author SHA1 Message Date
Joe Li
f5ada27129 Merge branch 'master' into showtime-master 2026-07-02 13:40:34 -07:00
Joe Li
c31d38267f Merge branch 'master' into showtime-master 2026-07-01 09:13:03 -07:00
Joe Li
9ed50d2a8c Merge branch 'master' into showtime-master 2026-06-29 14:59:16 -07:00
Joe Li
c7534cb13d chore: fix spacing in AGENTS.md 2026-06-25 07:40:45 -07:00
6 changed files with 10 additions and 19 deletions

View File

@@ -297,7 +297,7 @@ pre-commit run eslint # Frontend linting
## Platform-Specific Instructions
- **[CLAUDE.md](CLAUDE.md)** - For Claude/Anthropic tools
- **[.github/copilot-instructions.md](.github/copilot-instructions.md)** - For GitHub Copilot
- **[.github/copilot-instructions.md](.github/copilot-instructions.md)** - For GitHub Copilot
- **[GEMINI.md](GEMINI.md)** - For Google Gemini tools
- **[GPT.md](GPT.md)** - For OpenAI/ChatGPT tools
- **[.cursor/rules/dev-standard.mdc](.cursor/rules/dev-standard.mdc)** - For Cursor editor

View File

@@ -14,7 +14,7 @@
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
under the License
-->
# Change Log

View File

@@ -29,7 +29,6 @@ import { waitForPost } from '../../helpers/api/intercepts';
import { expectStatusOneOf } from '../../helpers/api/assertions';
import { getDatabaseByName } from '../../helpers/api/database';
import { apiExecuteSql } from '../../helpers/api/sqllab';
import { TIMEOUT } from '../../utils/constants';
interface ExamplesSetupResult {
tableName: string;
@@ -117,7 +116,7 @@ async function dropTempTable(
// Uses test.describe only because Playwright's serial mode API requires it -
// (Deviation from "avoid describe" guideline is necessary for functional reasons)
test.describe('create dataset wizard', () => {
test.describe.configure({ mode: 'serial', timeout: TIMEOUT.SLOW_TEST });
test.describe.configure({ mode: 'serial' });
test('should create a dataset via wizard', async ({ page, testAssets }) => {
const { tableName, dbId, createDatasetPage } = await setupExamplesDataset(

View File

@@ -17,7 +17,6 @@
"""Unit tests for the MCP get_dashboard_datasets tool."""
from importlib import import_module
from unittest.mock import Mock, patch
import pytest
@@ -30,10 +29,6 @@ from superset.mcp_service.utils.sanitization import (
)
from superset.utils import json
get_dashboard_datasets_module = import_module(
"superset.mcp_service.dashboard.tool.get_dashboard_datasets"
)
def _wrapped(value: str) -> str:
return f"{LLM_CONTEXT_OPEN_DELIMITER}\n{value}\n{LLM_CONTEXT_CLOSE_DELIMITER}"
@@ -147,8 +142,8 @@ def mock_dataset_access():
@pytest.fixture(autouse=True)
def allow_data_model_metadata():
"""Keep tests in the metadata-allowed path unless a test overrides it."""
with patch.object(
get_dashboard_datasets_module,
with patch(
"superset.mcp_service.dashboard.tool.get_dashboard_datasets."
"user_can_view_data_model_metadata",
return_value=True,
) as mock_allow:

View File

@@ -15,7 +15,6 @@
# specific language governing permissions and limitations
# under the License.
from datetime import datetime
from importlib import import_module
from importlib.util import find_spec
from unittest.mock import patch
@@ -27,8 +26,6 @@ from superset.utils.core import DTTM_ALIAS
from superset.utils.pandas_postprocessing import prophet
from tests.unit_tests.fixtures.dataframes import prophet_df
prophet_module = import_module("superset.utils.pandas_postprocessing.prophet")
def test_prophet_valid():
df = prophet(df=prophet_df, time_grain="P1M", periods=3, confidence_interval=0.9)
@@ -210,7 +207,9 @@ def test_prophet_fit_error():
if find_spec("prophet") is None:
pytest.skip("prophet not installed")
with patch.object(prophet_module, "_prophet_fit_and_predict") as mock_fit:
with patch(
"superset.utils.pandas_postprocessing.prophet._prophet_fit_and_predict"
) as mock_fit:
mock_fit.side_effect = InvalidPostProcessingError(
"Unable to generate forecast: Dataframe has fewer than 2 non-NaN rows."
)

View File

@@ -2983,9 +2983,8 @@ def test_coerce_integer_rejects_non_integer_float() -> None:
def test_coerce_integer_rejects_other_types() -> None:
raw: Any = [1]
with pytest.raises(ValueError, match="Invalid integer value"):
_coerce_scalar_filter_value(raw, _dim(pa.int64()))
_coerce_scalar_filter_value([1], _dim(pa.int64()))
@pytest.mark.parametrize(
@@ -3009,9 +3008,8 @@ def test_coerce_floating_invalid_string_raises() -> None:
def test_coerce_floating_rejects_other_types() -> None:
raw: Any = [1.0]
with pytest.raises(ValueError, match="Invalid numeric value"):
_coerce_scalar_filter_value(raw, _dim(pa.float64()))
_coerce_scalar_filter_value([1.0], _dim(pa.float64()))
def test_coerce_date_from_datetime() -> None: