This is an automated email from the ASF dual-hosted git repository. sadpandajoe pushed a commit to branch ultraset-mh-uuid-annot-oxfmt-2 in repository https://gitbox.apache.org/repos/asf/superset.git
commit 568fe1d1a9fb3eb948f10b3b1f7a0aa43c90ae92 Author: Joe Li <[email protected]> AuthorDate: Fri Sep 25 08:03:25 2026 +0000 fix(typing): drop redundant UUID annotation that defeats assert-narrowing in versioning tests PR #44424 added `assert x is not None` narrowing after nullable `.uuid` reads, but wrote the intermediate variable with an explicit `: UUID` annotation (e.g. `created_uuid: UUID = created.uuid`). mypy flags the annotated assignment itself, since `.uuid` is `UUID | None`, before the following assert gets a chance to narrow anything. Dropping the annotation matches the idiom already established and green in tests/integration_tests/charts/version_restore_tests.py (`chart_uuid = chart.uuid` / `assert chart_uuid is not None`), letting the assert narrow as intended. Co-Authored-By: Claude Sonnet 5 <[email protected]> --- .../versioning/activity_write_after_read_tests.py | 3 +-- .../versioning/conditional_token_lock_tests.py | 10 ++++------ .../integration_tests/versioning/creation_row_tests.py | 17 ++++++++--------- .../versioning/restore_fails_closed_tests.py | 12 ++++++------ 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/tests/integration_tests/versioning/activity_write_after_read_tests.py b/tests/integration_tests/versioning/activity_write_after_read_tests.py index 7a29c2938f5..a500a1e4ec2 100644 --- a/tests/integration_tests/versioning/activity_write_after_read_tests.py +++ b/tests/integration_tests/versioning/activity_write_after_read_tests.py @@ -24,7 +24,6 @@ activity read being the production shape.""" from __future__ import annotations from typing import Any -from uuid import UUID from flask_appbuilder.security.sqla.models import User from sqlalchemy import event @@ -92,7 +91,7 @@ class TestActivityReadThenWrite(SupersetTestCase): records: list[dict[str, Any]] event.listen(db.engine, "before_cursor_execute", observe_change_select) try: - slc_uuid: UUID = slc.uuid + slc_uuid = slc.uuid assert slc_uuid is not None with override_user(_admin_user()): records, _, _ = get_activity(Slice, slc_uuid, resolved_entity=slc) diff --git a/tests/integration_tests/versioning/conditional_token_lock_tests.py b/tests/integration_tests/versioning/conditional_token_lock_tests.py index af32ac24286..e8aa2b57c46 100644 --- a/tests/integration_tests/versioning/conditional_token_lock_tests.py +++ b/tests/integration_tests/versioning/conditional_token_lock_tests.py @@ -35,8 +35,6 @@ serialization failure for a locking read of a concurrently updated row instead of returning it -- a different, also-safe outcome. """ -from uuid import UUID - import pytest import sqlalchemy as sa from sqlalchemy_continuum import version_class, versioning_manager @@ -150,7 +148,7 @@ class TestConditionalTokenLockingRead(SupersetTestCase): original: str | None chart, original = self._versioned_chart() try: - chart_uuid: UUID = chart.uuid + chart_uuid = chart.uuid assert chart_uuid is not None plain: int | None = VersionDAO.current_live_transaction_id( Slice, chart.id, chart_uuid @@ -182,7 +180,7 @@ class TestConditionalTokenLockingRead(SupersetTestCase): original: str | None chart, original = self._versioned_chart() try: - chart_uuid: UUID = chart.uuid + chart_uuid = chart.uuid assert chart_uuid is not None db.session.execute( sa.text("DELETE FROM slices_version WHERE id = :id"), @@ -242,7 +240,7 @@ class TestConditionalTokenLockingRead(SupersetTestCase): original: str | None chart, original = self._versioned_chart() chart_id: int = chart.id - chart_uuid: UUID = chart.uuid + chart_uuid = chart.uuid assert chart_uuid is not None try: self._force_repeatable_read() @@ -307,7 +305,7 @@ class TestConditionalTokenLockingRead(SupersetTestCase): original: str | None chart, original = self._versioned_chart() chart_id: int = chart.id - chart_uuid: UUID = chart.uuid + chart_uuid = chart.uuid assert chart_uuid is not None ver_tbl: sa.Table = version_class(Slice).__table__ try: diff --git a/tests/integration_tests/versioning/creation_row_tests.py b/tests/integration_tests/versioning/creation_row_tests.py index 8f86b5e18b0..647a23b53db 100644 --- a/tests/integration_tests/versioning/creation_row_tests.py +++ b/tests/integration_tests/versioning/creation_row_tests.py @@ -22,7 +22,6 @@ imported).""" from __future__ import annotations from typing import Any -from uuid import UUID import sqlalchemy as sa from sqlalchemy_continuum import version_class, versioning_manager @@ -142,7 +141,7 @@ class TestActivityCreationRow(SupersetTestCase): for record in records ) assert all(record["action_kind"] is None for record in records) - created_uuid: UUID = created.uuid + created_uuid = created.uuid assert created_uuid is not None records, _, _ = get_activity(Slice, created_uuid, resolved_entity=created) assert _creation_records(records)[0]["creation_kind"] == "created" @@ -168,7 +167,7 @@ class TestActivityCreationRow(SupersetTestCase): .values(action_kind=None) ) db.session.commit() - slc_uuid: UUID = slc.uuid + slc_uuid = slc.uuid assert slc_uuid is not None records: list[dict[str, Any]] records, _, _ = get_activity(Slice, slc_uuid, resolved_entity=slc) @@ -194,7 +193,7 @@ class TestActivityCreationRow(SupersetTestCase): count: int truncated: bool try: - slc_uuid: UUID = slc.uuid + slc_uuid = slc.uuid assert slc_uuid is not None records, count, truncated = get_activity( Slice, slc_uuid, resolved_entity=slc @@ -224,7 +223,7 @@ class TestActivityCreationRow(SupersetTestCase): records: list[dict[str, Any]] count: int try: - dash_uuid: UUID = dash.uuid + dash_uuid = dash.uuid assert dash_uuid is not None records, count, _ = get_activity(Dashboard, dash_uuid, resolved_entity=dash) creations: list[dict[str, Any]] = _creation_records(records) @@ -252,7 +251,7 @@ class TestActivityCreationRow(SupersetTestCase): # pylint: disable=import-outside-toplevel from superset.utils.core import override_user - slc_uuid: UUID = slc.uuid + slc_uuid = slc.uuid assert slc_uuid is not None with override_user(_admin_user()): records, _, _ = get_activity(Slice, slc_uuid, resolved_entity=slc) @@ -272,7 +271,7 @@ class TestActivityCreationRow(SupersetTestCase): slc: Slice = self._make_chart("sc120488_imported") records: list[dict[str, Any]] try: - slc_uuid: UUID = slc.uuid + slc_uuid = slc.uuid assert slc_uuid is not None records, _, _ = get_activity(Slice, slc_uuid, resolved_entity=slc) creations: list[dict[str, Any]] = _creation_records(records) @@ -301,7 +300,7 @@ class TestActivityCreationRow(SupersetTestCase): # pylint: disable=import-outside-toplevel from superset.utils.core import override_user - slc_uuid: UUID = slc.uuid + slc_uuid = slc.uuid assert slc_uuid is not None with override_user(_admin_user()): records, count, _ = get_activity(Slice, slc_uuid, resolved_entity=slc) @@ -314,7 +313,7 @@ class TestActivityCreationRow(SupersetTestCase): slc: Slice = self._make_chart("sc120488_related_only") records: list[dict[str, Any]] try: - slc_uuid: UUID = slc.uuid + slc_uuid = slc.uuid assert slc_uuid is not None records, _, _ = get_activity( Slice, slc_uuid, resolved_entity=slc, include="related" diff --git a/tests/integration_tests/versioning/restore_fails_closed_tests.py b/tests/integration_tests/versioning/restore_fails_closed_tests.py index 5148ed7d109..33b622a4617 100644 --- a/tests/integration_tests/versioning/restore_fails_closed_tests.py +++ b/tests/integration_tests/versioning/restore_fails_closed_tests.py @@ -146,7 +146,7 @@ class TestRestoreFailsClosedOnPrunedChildHistory(SupersetTestCase): dataset, column, target_tx, _ = self._two_version_dataset() edited_description: str | None = column.description column_count: int = len(dataset.columns) - dataset_uuid: UUID = dataset.uuid + dataset_uuid = dataset.uuid assert dataset_uuid is not None column_id: int = column.id @@ -399,7 +399,7 @@ class TestRestoreFailsClosedOnPrunedChildHistory(SupersetTestCase): before: str dataset, column, target_tx, before = self._two_version_dataset() - dataset_uuid: UUID = dataset.uuid + dataset_uuid = dataset.uuid assert dataset_uuid is not None result: RestoreResult | None = restore_version( SqlaTable, dataset_uuid, target_tx, entity=dataset @@ -428,7 +428,7 @@ class TestRestoreFailsClosedOnPrunedChildHistory(SupersetTestCase): dataset, column, target_tx, _ = self._two_version_dataset() edited_description: str | None = column.description parent_description: str | None = dataset.description - dataset_uuid: UUID = dataset.uuid + dataset_uuid = dataset.uuid assert dataset_uuid is not None assert _delete_column_shadow_rows(column.id, closed_only=True) >= 1 @@ -473,7 +473,7 @@ class TestRestoreFailsClosedOnPrunedChildHistory(SupersetTestCase): dataset: SqlaTable target_tx: int dataset, _, target_tx, _ = self._two_version_dataset() - dataset_uuid: UUID = dataset.uuid + dataset_uuid = dataset.uuid assert dataset_uuid is not None versions: list[dict[str, Any]] | None = list_versions( SqlaTable, dataset_uuid, entity=dataset @@ -541,7 +541,7 @@ class TestRestoreFailsClosedOnPrunedChildHistory(SupersetTestCase): # Prune the ENTIRE chain (insert row, closed rows, delete row). assert _delete_column_shadow_rows(added_id, closed_only=False) >= 1 - dataset_uuid: UUID = dataset.uuid + dataset_uuid = dataset.uuid assert dataset_uuid is not None result: RestoreResult | None = restore_version( SqlaTable, dataset_uuid, target_tx, entity=dataset @@ -622,7 +622,7 @@ class TestRestoreFailsClosedOnPrunedChildHistory(SupersetTestCase): ) db.session.commit() - dataset_uuid: UUID = dataset.uuid + dataset_uuid = dataset.uuid assert dataset_uuid is not None result: RestoreResult | None = restore_version( SqlaTable, dataset_uuid, target_tx, entity=dataset
