diff --git a/.pylintrc b/.pylintrc index 38954f173f083..5de0030192cb4 100644 --- a/.pylintrc +++ b/.pylintrc @@ -75,7 +75,7 @@ enable= # --disable=W" disable= cyclic-import, # re-enable once this no longer raises false positives - no-member, # re-enable once this no longer raises false positives + no-member, # re-enable once this no longer raises false positives. This will become redundant after the min required version is 3.11 missing-docstring, duplicate-code, unspecified-encoding, diff --git a/superset/models/core.py b/superset/models/core.py index 345d06584c20e..e76da0dcd5512 100755 --- a/superset/models/core.py +++ b/superset/models/core.py @@ -20,7 +20,6 @@ from __future__ import annotations import builtins -import enum import json import logging import textwrap @@ -74,6 +73,7 @@ from superset.result_set import SupersetResultSet from superset.superset_typing import ResultSetColumnType from superset.utils import cache as cache_util, core as utils +from superset.utils.backports import StrEnum from superset.utils.core import get_username config = app.config @@ -116,7 +116,7 @@ class CssTemplate(Model, AuditMixinNullable): css = Column(Text, default="") -class ConfigurationMethod(str, enum.Enum): +class ConfigurationMethod(StrEnum): SQLALCHEMY_FORM = "sqlalchemy_form" DYNAMIC_FORM = "dynamic_form" @@ -1007,7 +1007,7 @@ class Log(Model): # pylint: disable=too-few-public-methods referrer = Column(String(1024)) -class FavStarClassName(str, enum.Enum): +class FavStarClassName(StrEnum): CHART = "slice" DASHBOARD = "Dashboard" diff --git a/superset/reports/models.py b/superset/reports/models.py index a13ded6223743..5c47f414563af 100644 --- a/superset/reports/models.py +++ b/superset/reports/models.py @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. """A collection of ORM sqlalchemy models for Superset""" -import enum - from cron_descriptor import get_description from flask_appbuilder import Model from flask_appbuilder.models.decorators import renders @@ -41,28 +39,29 @@ from superset.models.helpers import AuditMixinNullable, ExtraJSONMixin from superset.models.slice import Slice from superset.reports.types import ReportScheduleExtra +from superset.utils.backports import StrEnum metadata = Model.metadata # pylint: disable=no-member -class ReportScheduleType(str, enum.Enum): +class ReportScheduleType(StrEnum): ALERT = "Alert" REPORT = "Report" -class ReportScheduleValidatorType(str, enum.Enum): +class ReportScheduleValidatorType(StrEnum): """Validator types for alerts""" NOT_NULL = "not null" OPERATOR = "operator" -class ReportRecipientType(str, enum.Enum): +class ReportRecipientType(StrEnum): EMAIL = "Email" SLACK = "Slack" -class ReportState(str, enum.Enum): +class ReportState(StrEnum): SUCCESS = "Success" WORKING = "Working" ERROR = "Error" @@ -70,19 +69,19 @@ class ReportState(str, enum.Enum): GRACE = "On Grace" -class ReportDataFormat(str, enum.Enum): +class ReportDataFormat(StrEnum): VISUALIZATION = "PNG" DATA = "CSV" TEXT = "TEXT" -class ReportCreationMethod(str, enum.Enum): +class ReportCreationMethod(StrEnum): CHARTS = "charts" DASHBOARDS = "dashboards" ALERTS_REPORTS = "alerts_reports" -class ReportSourceFormat(str, enum.Enum): +class ReportSourceFormat(StrEnum): CHART = "chart" DASHBOARD = "dashboard" diff --git a/superset/sqllab/limiting_factor.py b/superset/sqllab/limiting_factor.py index 46cbc9bd81c4e..638f9e347a166 100644 --- a/superset/sqllab/limiting_factor.py +++ b/superset/sqllab/limiting_factor.py @@ -14,10 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import enum +from superset.utils.backports import StrEnum -class LimitingFactor(str, enum.Enum): +class LimitingFactor(StrEnum): QUERY = "QUERY" DROPDOWN = "DROPDOWN" QUERY_AND_DROPDOWN = "QUERY_AND_DROPDOWN"