refactor: Unify all json.(loads|dumps) usage to utils.json (#28702)

Co-authored-by: Eyal Ezer <eyal.ezer@ge.com>
This commit is contained in:
Eyal Ezer 2024-05-28 16:17:41 -05:00 committed by GitHub
parent 87110ebce4
commit 07b2449bd7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
234 changed files with 530 additions and 480 deletions

View File

@ -36,7 +36,7 @@ persistent=yes
# List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers.
load-plugins=
load-plugins=superset.extensions.pylint
# Use multiple processes to speed up Pylint.
jobs=2

View File

@ -19,8 +19,7 @@ from typing import Union
from marshmallow import fields, Schema, ValidationError
from marshmallow.validate import Length
from superset.exceptions import SupersetException
from superset.utils import json as json_utils
from superset.utils import json
openapi_spec_methods_override = {
"get": {"get": {"summary": "Get an annotation layer"}},
@ -51,8 +50,8 @@ annotation_json_metadata = "JSON metadata"
def validate_json(value: Union[bytes, bytearray, str]) -> None:
try:
json_utils.validate_json(value)
except SupersetException as ex:
json.validate_json(value)
except json.JSONDecodeError as ex:
raise ValidationError("JSON not valid") from ex

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import logging
import uuid
from typing import Any, Literal, Optional
@ -23,6 +22,7 @@ import jwt
import redis
from flask import Flask, Request, request, Response, session
from superset.utils import json
from superset.utils.core import get_user_id
logger = logging.getLogger(__name__)

View File

@ -15,7 +15,6 @@
# specific language governing permissions and limitations
# under the License.
# pylint: disable=too-many-lines
import json
import logging
from datetime import datetime
from io import BytesIO
@ -81,6 +80,7 @@ from superset.extensions import event_logger
from superset.models.slice import Slice
from superset.tasks.thumbnails import cache_chart_thumbnail
from superset.tasks.utils import get_current_user
from superset.utils import json
from superset.utils.screenshots import ChartScreenshot, DEFAULT_CHART_WINDOW_SIZE
from superset.utils.urls import get_url_path
from superset.views.base_api import (

View File

@ -17,7 +17,6 @@
from __future__ import annotations
import contextlib
import json
import logging
from typing import Any, TYPE_CHECKING
@ -46,7 +45,7 @@ from superset.daos.exceptions import DatasourceNotFound
from superset.exceptions import QueryObjectValidationError
from superset.extensions import event_logger
from superset.models.sql_lab import Query
from superset.utils import json as json_utils
from superset.utils import json
from superset.utils.core import (
create_zip,
DatasourceType,
@ -129,7 +128,7 @@ class ChartDataRestApi(ChartRestApi):
try:
json_body = json.loads(chart.query_context)
except (TypeError, json.decoder.JSONDecodeError):
except (TypeError, json.JSONDecodeError):
json_body = None
if json_body is None:
@ -171,7 +170,7 @@ class ChartDataRestApi(ChartRestApi):
try:
form_data = json.loads(chart.params)
except (TypeError, json.decoder.JSONDecodeError):
except (TypeError, json.JSONDecodeError):
form_data = {}
return self._get_data_response(
@ -395,9 +394,9 @@ class ChartDataRestApi(ChartRestApi):
)
if result_format == ChartDataResultFormat.JSON:
response_data = json_utils.dumps(
response_data = json.dumps(
{"result": result["queries"]},
default=json_utils.json_int_dttm_ser,
default=json.json_int_dttm_ser,
ignore_nan=True,
)
resp = make_response(response_data, 200)

View File

@ -16,7 +16,6 @@
# under the License.
# isort:skip_file
import json
import logging
from collections.abc import Iterator
from typing import Callable
@ -30,6 +29,7 @@ from superset.commands.export.models import ExportModelsCommand
from superset.models.slice import Slice
from superset.utils.dict_import_export import EXPORT_VERSION
from superset.utils.file import get_filename
from superset.utils import json
logger = logging.getLogger(__name__)
@ -64,7 +64,7 @@ class ExportChartsCommand(ExportModelsCommand):
if payload.get("params"):
try:
payload["params"] = json.loads(payload["params"])
except json.decoder.JSONDecodeError:
except json.JSONDecodeError:
logger.info("Unable to decode `params` field: %s", payload["params"])
payload["version"] = EXPORT_VERSION

View File

@ -16,7 +16,6 @@
# under the License.
import copy
import json
from inspect import isclass
from typing import Any
@ -25,6 +24,7 @@ from superset.commands.exceptions import ImportFailedError
from superset.migrations.shared.migrate_viz import processors
from superset.migrations.shared.migrate_viz.base import MigrateViz
from superset.models.slice import Slice
from superset.utils import json
from superset.utils.core import AnnotationType, get_user
@ -117,7 +117,7 @@ def migrate_chart(config: dict[str, Any]) -> dict[str, Any]:
# also update `query_context`
try:
query_context = json.loads(output.get("query_context") or "{}")
except (json.decoder.JSONDecodeError, TypeError):
except (json.JSONDecodeError, TypeError):
query_context = {}
if "form_data" in query_context:
query_context["form_data"] = output["params"]

View File

@ -18,7 +18,6 @@
from typing import Any, Optional, Union
import simplejson as json
from flask import g
from superset.commands.base import BaseCommand
@ -29,6 +28,7 @@ from superset.commands.chart.exceptions import (
)
from superset.extensions import db
from superset.models.slice import Slice
from superset.utils import json
from superset.utils.core import error_msg_from_exception
from superset.views.utils import get_dashboard_extra_filters, get_form_data, get_viz
from superset.viz import viz_types

View File

@ -16,7 +16,6 @@
# under the License.
# isort:skip_file
import json
import logging
import random
import string
@ -36,6 +35,7 @@ from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
from superset.utils.dict_import_export import EXPORT_VERSION
from superset.utils.file import get_filename
from superset.utils import json
logger = logging.getLogger(__name__)
@ -126,7 +126,7 @@ class ExportDashboardsCommand(ExportModelsCommand):
if value:
try:
payload[new_name] = json.loads(value)
except (TypeError, json.decoder.JSONDecodeError):
except (TypeError, json.JSONDecodeError):
logger.info("Unable to decode `%s` field: %s", key, value)
payload[new_name] = {}
@ -176,7 +176,7 @@ class ExportDashboardsCommand(ExportModelsCommand):
if value:
try:
payload[new_name] = json.loads(value)
except (TypeError, json.decoder.JSONDecodeError):
except (TypeError, json.JSONDecodeError):
logger.info("Unable to decode `%s` field: %s", key, value)
payload[new_name] = {}

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import logging
import time
from copy import copy
@ -32,6 +31,7 @@ from superset.exceptions import DashboardImportException
from superset.migrations.shared.native_filters import migrate_dashboard
from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
from superset.utils import json
from superset.utils.dashboard_filter_scopes_converter import (
convert_filter_scopes,
copy_filter_scopes,

View File

@ -15,13 +15,13 @@
# specific language governing permissions and limitations
# under the License.
import json
import logging
from typing import Any
from superset import db, security_manager
from superset.commands.exceptions import ImportFailedError
from superset.models.dashboard import Dashboard
from superset.utils import json
from superset.utils.core import get_user
logger = logging.getLogger(__name__)

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import logging
from typing import Any, Optional
@ -37,6 +36,7 @@ from superset.exceptions import SupersetSecurityException
from superset.extensions import db
from superset.models.dashboard import Dashboard
from superset.tags.models import ObjectType
from superset.utils import json
logger = logging.getLogger(__name__)

View File

@ -16,7 +16,6 @@
# under the License.
# isort:skip_file
import functools
import json
import logging
from typing import Any, Callable
from collections.abc import Iterator
@ -30,6 +29,7 @@ from superset.models.core import Database
from superset.utils.dict_import_export import EXPORT_VERSION
from superset.utils.file import get_filename
from superset.utils.ssh_tunnel import mask_password_info
from superset.utils import json
logger = logging.getLogger(__name__)
@ -37,7 +37,7 @@ logger = logging.getLogger(__name__)
def parse_extra(extra_payload: str) -> dict[str, Any]:
try:
extra = json.loads(extra_payload)
except json.decoder.JSONDecodeError:
except json.JSONDecodeError:
logger.info("Unable to decode `extra` field: %s", extra_payload)
return {}

View File

@ -15,7 +15,6 @@
# specific language governing permissions and limitations
# under the License.
import json
from typing import Any
from superset import app, db, security_manager
@ -25,6 +24,7 @@ from superset.databases.utils import make_url_safe
from superset.exceptions import SupersetSecurityException
from superset.models.core import Database
from superset.security.analytics_db_safety import check_sqlalchemy_uri
from superset.utils import json
def import_database(

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
from contextlib import closing
from typing import Any, Optional
@ -33,6 +32,7 @@ from superset.db_engine_specs import get_engine_spec
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.extensions import event_logger
from superset.models.core import Database
from superset.utils import json
BYPASS_VALIDATION_ENGINES = {"bigquery"}
@ -82,7 +82,7 @@ class ValidateDatabaseParametersCommand(BaseCommand):
)
try:
encrypted_extra = json.loads(serialized_encrypted_extra)
except json.decoder.JSONDecodeError:
except json.JSONDecodeError:
encrypted_extra = {}
# try to connect

View File

@ -16,7 +16,6 @@
# under the License.
# isort:skip_file
import json
import logging
from collections.abc import Iterator
from typing import Callable
@ -31,6 +30,7 @@ from superset.daos.dataset import DatasetDAO
from superset.utils.dict_import_export import EXPORT_VERSION
from superset.utils.file import get_filename
from superset.utils.ssh_tunnel import mask_password_info
from superset.utils import json
logger = logging.getLogger(__name__)
@ -63,14 +63,14 @@ class ExportDatasetsCommand(ExportModelsCommand):
if payload.get(key):
try:
payload[key] = json.loads(payload[key])
except json.decoder.JSONDecodeError:
except json.JSONDecodeError:
logger.info("Unable to decode `%s` field: %s", key, payload[key])
for key in ("metrics", "columns"):
for attributes in payload.get(key, []):
if attributes.get("extra"):
try:
attributes["extra"] = json.loads(attributes["extra"])
except json.decoder.JSONDecodeError:
except json.JSONDecodeError:
logger.info(
"Unable to decode `extra` field: %s", attributes["extra"]
)
@ -108,7 +108,7 @@ class ExportDatasetsCommand(ExportModelsCommand):
if payload.get("extra"):
try:
payload["extra"] = json.loads(payload["extra"])
except json.decoder.JSONDecodeError:
except json.JSONDecodeError:
logger.info("Unable to decode `extra` field: %s", payload["extra"])
if ssh_tunnel := DatabaseDAO.get_ssh_tunnel(model.database.id):

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import logging
from typing import Any, Callable, Optional
@ -34,6 +33,7 @@ from superset.connectors.sqla.models import (
TableColumn,
)
from superset.models.core import Database
from superset.utils import json
from superset.utils.dict_import_export import DATABASES_KEY
logger = logging.getLogger(__name__)

View File

@ -15,7 +15,6 @@
# specific language governing permissions and limitations
# under the License.
import gzip
import json
import logging
import re
from typing import Any
@ -33,6 +32,7 @@ from superset.commands.exceptions import ImportFailedError
from superset.connectors.sqla.models import SqlaTable
from superset.models.core import Database
from superset.sql_parse import Table
from superset.utils import json
from superset.utils.core import get_user
logger = logging.getLogger(__name__)

View File

@ -19,7 +19,6 @@ import logging
from abc import ABC
from typing import Any, cast, Optional
import simplejson as json
from flask import request
from flask_babel import lazy_gettext as _
from sqlalchemy.exc import SQLAlchemyError
@ -38,7 +37,7 @@ from superset.exceptions import SupersetException
from superset.explore.exceptions import WrongEndpointError
from superset.explore.permalink.exceptions import ExplorePermalinkGetFailedError
from superset.extensions import security_manager
from superset.utils import core as utils
from superset.utils import core as utils, json
from superset.views.utils import (
get_datasource_info,
get_form_data,

View File

@ -16,7 +16,6 @@
# under the License.
# isort:skip_file
import json
import logging
from collections.abc import Iterator
from typing import Callable
@ -29,6 +28,7 @@ from superset.models.sql_lab import SavedQuery
from superset.commands.query.exceptions import SavedQueryNotFoundError
from superset.daos.query import SavedQueryDAO
from superset.utils.dict_import_export import EXPORT_VERSION
from superset.utils import json
logger = logging.getLogger(__name__)
@ -90,7 +90,7 @@ class ExportSavedQueriesCommand(ExportModelsCommand):
if "extra" in payload:
try:
payload["extra"] = json.loads(payload["extra"])
except json.decoder.JSONDecodeError:
except json.JSONDecodeError:
logger.info("Unable to decode `extra` field: %s", payload["extra"])
payload["version"] = EXPORT_VERSION

View File

@ -16,7 +16,6 @@
# under the License.
from __future__ import annotations
import json
import logging
from operator import eq, ge, gt, le, lt, ne
from timeit import default_timer
@ -39,6 +38,7 @@ from superset.commands.report.exceptions import (
)
from superset.reports.models import ReportSchedule, ReportScheduleValidatorType
from superset.tasks.utils import get_executor
from superset.utils import json
from superset.utils.core import override_user
from superset.utils.retries import retry_call

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import logging
from typing import Any, Optional
@ -40,6 +39,7 @@ from superset.reports.models import (
ReportScheduleType,
)
from superset.reports.types import ReportScheduleExtra
from superset.utils import json
logger = logging.getLogger(__name__)

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import logging
from datetime import datetime, timedelta
from typing import Any, Optional, Union
@ -67,6 +66,7 @@ from superset.reports.notifications import create_notification
from superset.reports.notifications.base import NotificationContent
from superset.reports.notifications.exceptions import NotificationError
from superset.tasks.utils import get_executor
from superset.utils import json
from superset.utils.core import HeaderDataType, override_user
from superset.utils.csv import get_chart_csv_data, get_chart_dataframe
from superset.utils.decorators import logs_context

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import logging
from typing import Any, Optional
@ -37,6 +36,7 @@ from superset.daos.exceptions import DAOUpdateFailedError
from superset.daos.report import ReportScheduleDAO
from superset.exceptions import SupersetSecurityException
from superset.reports.models import ReportSchedule, ReportScheduleType, ReportState
from superset.utils import json
logger = logging.getLogger(__name__)

View File

@ -17,7 +17,6 @@
# pylint: disable=invalid-name
from __future__ import annotations
import json
import logging
from datetime import datetime
from pprint import pformat
@ -36,7 +35,7 @@ from superset.exceptions import (
)
from superset.sql_parse import sanitize_clause
from superset.superset_typing import Column, Metric, OrderBy
from superset.utils import pandas_postprocessing
from superset.utils import json, pandas_postprocessing
from superset.utils.core import (
DTTM_ALIAS,
find_duplicates,

View File

@ -19,14 +19,12 @@ from __future__ import annotations
import builtins
import dataclasses
import json
import logging
import re
from collections import defaultdict
from collections.abc import Hashable
from dataclasses import dataclass, field
from datetime import datetime, timedelta
from json.decoder import JSONDecodeError
from typing import Any, Callable, cast
import dateutil.parser
@ -118,7 +116,7 @@ from superset.superset_typing import (
QueryObjectDict,
ResultSetColumnType,
)
from superset.utils import core as utils
from superset.utils import core as utils, json
from superset.utils.backports import StrEnum
from superset.utils.core import GenericDataType, MediumText
@ -1051,7 +1049,7 @@ class SqlMetric(AuditMixinNullable, ImportExportMixin, CertificationMixin, Model
def currency_json(self) -> dict[str, str | None] | None:
try:
return json.loads(self.currency or "{}") or None
except (TypeError, JSONDecodeError) as exc:
except (TypeError, json.JSONDecodeError) as exc:
logger.error(
"Unable to load currency json: %r. Leaving empty.", exc, exc_info=True
)

View File

@ -16,7 +16,6 @@
# under the License.
from __future__ import annotations
import json
import logging
from datetime import datetime
from typing import Any
@ -38,6 +37,7 @@ from superset.models.core import FavStar, FavStarClassName
from superset.models.dashboard import Dashboard, id_or_slug_filter
from superset.models.embedded_dashboard import EmbeddedDashboard
from superset.models.slice import Slice
from superset.utils import json
from superset.utils.core import get_user_id
from superset.utils.dashboard_filter_scopes_converter import copy_filter_scopes

View File

@ -16,7 +16,6 @@
# under the License.
from __future__ import annotations
import json
import logging
from datetime import datetime
from typing import Any
@ -34,6 +33,7 @@ from superset.reports.models import (
ReportScheduleType,
ReportState,
)
from superset.utils import json
from superset.utils.core import get_user_id
logger = logging.getLogger(__name__)

View File

@ -16,7 +16,6 @@
# under the License.
# pylint: disable=too-many-lines
import functools
import json
import logging
from datetime import datetime
from io import BytesIO
@ -84,6 +83,7 @@ from superset.models.dashboard import Dashboard
from superset.models.embedded_dashboard import EmbeddedDashboard
from superset.tasks.thumbnails import cache_dashboard_thumbnail
from superset.tasks.utils import get_current_user
from superset.utils import json
from superset.utils.screenshots import DashboardScreenshot
from superset.utils.urls import get_url_path
from superset.views.base_api import (

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import re
from typing import Any, Union
@ -22,9 +21,8 @@ from marshmallow import fields, post_dump, post_load, pre_load, Schema
from marshmallow.validate import Length, ValidationError
from superset import security_manager
from superset.exceptions import SupersetException
from superset.tags.models import TagType
from superset.utils import json as json_utils
from superset.utils import json
get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}}
get_export_ids_schema = {"type": "array", "items": {"type": "integer"}}
@ -89,8 +87,8 @@ openapi_spec_methods_override = {
def validate_json(value: Union[bytes, bytearray, str]) -> None:
try:
json_utils.validate_json(value)
except SupersetException as ex:
json.validate_json(value)
except json.JSONDecodeError as ex:
raise ValidationError("JSON not valid") from ex
@ -99,7 +97,7 @@ def validate_json_metadata(value: Union[bytes, bytearray, str]) -> None:
return
try:
value_obj = json.loads(value)
except json.decoder.JSONDecodeError as ex:
except json.JSONDecodeError as ex:
raise ValidationError("JSON not valid") from ex
errors = DashboardJSONMetadataSchema().validate(value_obj, partial=False)
if errors:

View File

@ -18,7 +18,6 @@
from __future__ import annotations
import json
import logging
from datetime import datetime, timedelta
from io import BytesIO
@ -120,6 +119,7 @@ from superset.extensions import security_manager
from superset.models.core import Database
from superset.sql_parse import Table
from superset.superset_typing import FlaskResponse
from superset.utils import json
from superset.utils.core import error_msg_from_exception, parse_js_uri_path_item
from superset.utils.oauth2 import decode_oauth2_state
from superset.utils.ssh_tunnel import mask_password_info

View File

@ -20,7 +20,6 @@
from __future__ import annotations
import inspect
import json
import os
from pathlib import Path
from typing import Any, TypedDict
@ -53,6 +52,7 @@ from superset.db_engine_specs import get_engine_spec
from superset.exceptions import CertificateException, SupersetSecurityException
from superset.models.core import ConfigurationMethod, Database
from superset.security.analytics_db_safety import check_sqlalchemy_uri
from superset.utils import json
from superset.utils.core import markdown, parse_ssl_cert
database_schemas_query_schema = {
@ -349,7 +349,7 @@ class DatabaseParametersSchemaMixin: # pylint: disable=too-few-public-methods
serialized_encrypted_extra = data.get("masked_encrypted_extra") or "{}"
try:
encrypted_extra = json.loads(serialized_encrypted_extra)
except json.decoder.JSONDecodeError:
except json.JSONDecodeError:
encrypted_extra = {}
data["sqlalchemy_uri"] = engine_spec.build_sqlalchemy_uri(

View File

@ -15,7 +15,6 @@
# specific language governing permissions and limitations
# under the License.
# pylint: disable=too-many-lines
import json
import logging
from datetime import datetime
from io import BytesIO
@ -66,6 +65,7 @@ from superset.datasets.schemas import (
GetOrCreateDatasetSchema,
openapi_spec_methods_override,
)
from superset.utils import json
from superset.utils.core import parse_boolean_string
from superset.views.base import DatasourceFilter
from superset.views.base_api import (

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
from datetime import datetime
from typing import Any
@ -26,6 +25,7 @@ from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
from superset.datasets.models import Dataset
from superset.exceptions import SupersetMarshmallowValidationError
from superset.utils import json
get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}}
get_export_ids_schema = {"type": "array", "items": {"type": "integer"}}

View File

@ -18,7 +18,6 @@
from __future__ import annotations
import json
import logging
import re
import warnings
@ -72,7 +71,7 @@ from superset.superset_typing import (
ResultSetColumnType,
SQLAColumnType,
)
from superset.utils import core as utils
from superset.utils import core as utils, json
from superset.utils.core import ColumnSpec, GenericDataType
from superset.utils.hashing import md5_sha_from_str
from superset.utils.network import is_hostname_valid, is_port_open

View File

@ -18,7 +18,6 @@
from __future__ import annotations
import contextlib
import json
import re
import urllib
from datetime import datetime
@ -48,7 +47,7 @@ from superset.errors import SupersetError, SupersetErrorType
from superset.exceptions import SupersetException
from superset.sql_parse import Table
from superset.superset_typing import ResultSetColumnType
from superset.utils import core as utils
from superset.utils import core as utils, json
from superset.utils.hashing import md5_sha_from_str
try:

View File

@ -16,7 +16,6 @@
# under the License.
from __future__ import annotations
import json
from datetime import datetime
from typing import Any, TYPE_CHECKING, TypedDict, Union
@ -33,6 +32,7 @@ from superset.databases.utils import make_url_safe
from superset.db_engine_specs.base import BaseEngineSpec, BasicParametersMixin
from superset.db_engine_specs.hive import HiveEngineSpec
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.utils import json
from superset.utils.network import is_hostname_valid, is_port_open
if TYPE_CHECKING:

View File

@ -17,7 +17,6 @@
from __future__ import annotations
import json
import logging
from datetime import datetime
from typing import Any, TYPE_CHECKING
@ -29,7 +28,7 @@ from superset.constants import TimeGrain
from superset.db_engine_specs.base import BaseEngineSpec
from superset.db_engine_specs.exceptions import SupersetDBAPIConnectionError
from superset.exceptions import SupersetException
from superset.utils import core as utils
from superset.utils import core as utils, json
if TYPE_CHECKING:
from superset.connectors.sqla.models import TableColumn

View File

@ -18,7 +18,6 @@
from __future__ import annotations
import contextlib
import json
import logging
import re
from re import Pattern
@ -43,6 +42,7 @@ from superset.databases.schemas import encrypted_field_properties, EncryptedStri
from superset.db_engine_specs.shillelagh import ShillelaghEngineSpec
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.exceptions import SupersetException
from superset.utils import json
if TYPE_CHECKING:
from superset.models.core import Database

View File

@ -17,7 +17,6 @@
from __future__ import annotations
import json
import logging
import re
from datetime import datetime
@ -37,7 +36,7 @@ from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.exceptions import SupersetException, SupersetSecurityException
from superset.models.sql_lab import Query
from superset.sql_parse import SQLScript
from superset.utils import core as utils
from superset.utils import core as utils, json
from superset.utils.core import GenericDataType
if TYPE_CHECKING:

View File

@ -30,7 +30,6 @@ from typing import Any, cast, Optional, TYPE_CHECKING
from urllib import parse
import pandas as pd
import simplejson as json
from flask import current_app
from flask_babel import gettext as __, lazy_gettext as _
from packaging.version import Version
@ -60,7 +59,7 @@ from superset.models.sql_types.presto_sql_types import (
)
from superset.result_set import destringify
from superset.superset_typing import ResultSetColumnType
from superset.utils import core as utils
from superset.utils import core as utils, json
from superset.utils.core import GenericDataType
if TYPE_CHECKING:

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import logging
import re
from datetime import datetime
@ -39,6 +38,7 @@ from superset.db_engine_specs.base import BaseEngineSpec, BasicPropertiesType
from superset.db_engine_specs.postgres import PostgresBaseEngineSpec
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
from superset.models.sql_lab import Query
from superset.utils import json
if TYPE_CHECKING:
from superset.models.core import Database

View File

@ -22,7 +22,6 @@ import threading
import time
from typing import Any, TYPE_CHECKING
import simplejson as json
from flask import current_app
from sqlalchemy.engine.reflection import Inspector
from sqlalchemy.engine.url import URL
@ -42,7 +41,7 @@ from superset.db_engine_specs.presto import PrestoBaseEngineSpec
from superset.models.sql_lab import Query
from superset.sql_parse import Table
from superset.superset_typing import ResultSetColumnType
from superset.utils import core as utils
from superset.utils import core as utils, json
if TYPE_CHECKING:
from superset.models.core import Database

View File

@ -24,7 +24,7 @@ from flask_wtf.csrf import same_origin
from superset import event_logger, is_feature_enabled
from superset.daos.dashboard import EmbeddedDashboardDAO
from superset.superset_typing import FlaskResponse
from superset.utils import json as json_utils
from superset.utils import json
from superset.views.base import BaseSupersetView, common_bootstrap_payload
@ -86,7 +86,7 @@ class EmbeddedView(BaseSupersetView):
return self.render_template(
"superset/spa.html",
entry="embedded",
bootstrap_data=json_utils.dumps(
bootstrap_data, default=json_utils.pessimistic_json_iso_dttm_ser
bootstrap_data=json.dumps(
bootstrap_data, default=json.pessimistic_json_iso_dttm_ser
),
)

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import pandas as pd
import polyline
@ -22,6 +21,7 @@ from sqlalchemy import inspect, String, Text
from superset import db
from superset.sql_parse import Table
from superset.utils import json
from ..utils.database import get_example_database
from .helpers import get_example_url, get_table_connector_registry

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import textwrap
from typing import Union
@ -28,6 +27,7 @@ from superset.models.core import Database
from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
from superset.sql_parse import Table
from superset.utils import json
from superset.utils.core import DatasourceType
from ..utils.database import get_example_database

View File

@ -14,11 +14,11 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
from superset import db
from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
from superset.utils import json
from superset.utils.core import DatasourceType
from .helpers import (

View File

@ -16,13 +16,13 @@
# under the License.
"""Loads datasets, dashboards and slices in a new superset instance"""
import json
import os
from typing import Any
from superset import app, db
from superset.connectors.sqla.models import SqlaTable
from superset.models.slice import Slice
from superset.utils import json
BASE_URL = "https://github.com/apache-superset/examples-data/blob/master/"

View File

@ -14,11 +14,11 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import textwrap
from superset import db
from superset.models.dashboard import Dashboard
from superset.utils import json
from .helpers import update_slice_ids

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import pandas as pd
from sqlalchemy import inspect, String, Text
@ -22,6 +21,7 @@ from sqlalchemy import inspect, String, Text
import superset.utils.database as database_utils
from superset import db
from superset.sql_parse import Table
from superset.utils import json
from .helpers import get_example_url, get_table_connector_registry

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import pandas as pd
from sqlalchemy import BigInteger, Float, inspect, Text
@ -22,6 +21,7 @@ from sqlalchemy import BigInteger, Float, inspect, Text
import superset.utils.database as database_utils
from superset import db
from superset.sql_parse import Table
from superset.utils import json
from .helpers import get_example_url, get_table_connector_registry

View File

@ -17,7 +17,6 @@
# pylint: disable=too-many-lines
import json
import textwrap
from sqlalchemy import inspect
@ -27,6 +26,7 @@ from superset.connectors.sqla.models import SqlaTable
from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
from superset.sql_parse import Table
from superset.utils import json
from superset.utils.core import DatasourceType
from ..utils.database import get_example_database

View File

@ -16,11 +16,11 @@
# under the License.
"""Loads datasets, dashboards and slices in a new superset instance"""
import json
import textwrap
from superset import db
from superset.models.dashboard import Dashboard
from superset.utils import json
from .helpers import update_slice_ids

View File

@ -16,7 +16,6 @@
# under the License.
"""Loads datasets, dashboards and slices in a new superset instance"""
import json
import os
import pandas as pd
@ -38,7 +37,7 @@ from superset.examples.helpers import (
from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
from superset.sql_parse import Table
from superset.utils import core as utils
from superset.utils import core as utils, json
from superset.utils.core import DatasourceType

View File

@ -0,0 +1,60 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "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.
import os
from astroid import nodes
from pylint.checkers import BaseChecker
from pylint.lint import PyLinter
class JSONLibraryImportChecker(BaseChecker):
name = "json-library-import-checker"
priority = -1
msgs = {
"C9999": (
"Disallowed json import used, use superset.utils.json instead",
"disallowed-import",
"Used when a disallowed import is used in a specific file.",
),
}
exclude_files = [
"setup.py",
"superset/utils/json.py",
"superset/config.py",
"superset/cli/update.py",
"superset/key_value/types.py",
"superset/translations/utils.py",
"superset/extensions/__init__.py",
]
path_strip_prefix = os.getcwd() + os.sep
def visit_import(self, node: nodes.Import) -> None:
file = (node.root().file).replace(self.path_strip_prefix, "", 1)
if file not in self.exclude_files:
for module_name, _ in node.names:
if module_name in ["json", "simplejson"]:
self.add_message("disallowed-import", node=node)
def visit_importfrom(self, node: nodes.ImportFrom) -> None:
file = (node.root().file).replace(self.path_strip_prefix, "", 1)
if file not in self.exclude_files:
if node.modname in ["json", "simplejson"]:
self.add_message("disallowed-import", node=node)
def register(linter: PyLinter) -> None:
linter.register_checker(JSONLibraryImportChecker(linter))

View File

@ -16,12 +16,13 @@
# under the License.
"""Contains the logic to create cohesive forms on the explore view"""
import json
from typing import Any, Optional
from flask_appbuilder.fieldwidgets import BS3TextFieldWidget
from wtforms import Field
from superset.utils import json
class JsonListField(Field):
widget = BS3TextFieldWidget()

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
from datetime import datetime
from io import BytesIO
from zipfile import is_zipfile, ZipFile
@ -30,6 +29,7 @@ from superset.commands.importers.exceptions import (
from superset.commands.importers.v1.assets import ImportAssetsCommand
from superset.commands.importers.v1.utils import get_contents_from_bundle
from superset.extensions import event_logger
from superset.utils import json
from superset.views.base_api import BaseSupersetApi, requires_form_data, statsd_metrics

View File

@ -16,7 +16,6 @@
# under the License.
"""Defines the templating context for SQL Lab"""
import json
import re
from datetime import datetime
from functools import lru_cache, partial
@ -35,6 +34,7 @@ from superset.commands.dataset.exceptions import DatasetNotFoundError
from superset.constants import LRU_CACHE_MAX_SIZE
from superset.exceptions import SupersetTemplateException
from superset.extensions import feature_flag_manager
from superset.utils import json
from superset.utils.core import (
convert_legacy_filters_into_adhoc,
get_user_email,

View File

@ -17,7 +17,6 @@
from __future__ import annotations
import copy
import json
from typing import Any
from sqlalchemy import and_, Column, Integer, String, Text
@ -27,6 +26,7 @@ from sqlalchemy.orm import Session
from superset import conf
from superset.constants import TimeGrain
from superset.migrations.shared.utils import paginated_update, try_load_json
from superset.utils import json
Base = declarative_base()

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
from collections import defaultdict
from textwrap import dedent
from typing import Any
@ -23,6 +22,7 @@ from shortid import ShortId
from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
from superset.utils import json
from superset.utils.dashboard_filter_scopes_converter import convert_filter_scopes

View File

@ -14,7 +14,6 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import json
import logging
import os
import time
@ -29,6 +28,8 @@ from sqlalchemy.dialects.postgresql.base import PGDialect
from sqlalchemy.exc import NoSuchTableError
from sqlalchemy.orm import Query, Session
from superset.utils import json
logger = logging.getLogger(__name__)
DEFAULT_BATCH_SIZE = int(os.environ.get("BATCH_SIZE", 1000))
@ -164,6 +165,6 @@ def paginated_update(
def try_load_json(data: Optional[str]) -> dict[str, Any]:
try:
return data and json.loads(data) or {}
except json.decoder.JSONDecodeError:
except json.JSONDecodeError:
print(f"Failed to parse: {data}")
return {}

View File

@ -26,13 +26,12 @@ Create Date: 2017-01-24 12:31:06.541746
revision = "db0c65b146bd"
down_revision = "f18570e03440"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import Column, Integer, String, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -26,7 +26,6 @@ Create Date: 2017-02-08 14:16:34.948793
revision = "a99f2f7c195a"
down_revision = "db0c65b146bd"
import json # noqa: E402
from urllib import parse # noqa: E402
import sqlalchemy as sa # noqa: E402
@ -34,6 +33,7 @@ from alembic import op # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -22,13 +22,12 @@ Create Date: 2017-12-08 08:19:21.148775
"""
import json
from alembic import op
from sqlalchemy import Column, Integer, String, Text
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
# revision identifiers, used by Alembic.
revision = "67a6ac9b727b"

View File

@ -22,13 +22,12 @@ Create Date: 2017-12-17 11:06:30.180267
"""
import json
from alembic import op
from sqlalchemy import Column, Integer, or_, String, Text
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
# revision identifiers, used by Alembic.
revision = "21e88bc06c02"

View File

@ -21,13 +21,12 @@ Revises: 21e88bc06c02
Create Date: 2018-02-13 08:07:40.766277
"""
import json
import sqlalchemy as sa
from alembic import op
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
revision = "e866bd2d4976"
down_revision = "21e88bc06c02"

View File

@ -22,13 +22,12 @@ Create Date: 2018-04-10 11:19:47.621878
"""
import json
from alembic import op
from sqlalchemy import Column, Integer, String, Text
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
Base = declarative_base()

View File

@ -26,13 +26,12 @@ Create Date: 2018-06-04 11:12:59.878742
revision = "c5756bec8b47"
down_revision = "e502db2af7be"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import Column, Integer, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -26,13 +26,12 @@ Create Date: 2018-06-07 09:52:54.535961
revision = "afb7730f6a9c"
down_revision = "c5756bec8b47"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import Column, Integer, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -27,8 +27,6 @@ revision = "4451805bbaa1"
down_revision = "bddc498dd179"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import ( # noqa: E402
Column,
@ -41,6 +39,7 @@ from sqlalchemy import ( # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -27,13 +27,12 @@ revision = "bddc498dd179"
down_revision = "80a67c5192fa"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import Column, Integer, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
from superset.utils.core import ( # noqa: E402
convert_legacy_filters_into_adhoc,
split_adhoc_filters_into_base_filters,

View File

@ -27,13 +27,12 @@ revision = "80a67c5192fa"
down_revision = "afb7730f6a9c"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import Column, Integer, String, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -25,7 +25,6 @@ Create Date: 2018-07-05 15:19:14.609299
# revision identifiers, used by Alembic.
import datetime
import json
import isodate
from alembic import op
@ -33,6 +32,7 @@ from sqlalchemy import Column, Integer, String, Text
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
from superset.utils.date_parser import parse_human_timedelta
revision = "3dda56f1c4c6"

View File

@ -24,7 +24,6 @@ Create Date: 2018-07-22 11:59:07.025119
# revision identifiers, used by Alembic.
import collections
import json
import sys
import uuid
from functools import reduce
@ -35,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from superset import db
from superset.utils import json
revision = "bebcf3fed1fe"
down_revision = "fc480c87706c"

View File

@ -23,7 +23,6 @@ Create Date: 2018-08-01 11:47:02.233971
"""
# revision identifiers, used by Alembic.
import json
import re
import sqlalchemy as sa
@ -31,6 +30,7 @@ from alembic import op
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
revision = "7fcdcde0761c"
down_revision = "c18bd4186f15"

View File

@ -23,13 +23,12 @@ Create Date: 2018-11-12 13:31:07.578090
"""
# revision identifiers, used by Alembic.
import json
from alembic import op
from sqlalchemy import Column, Integer, Text
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
revision = "4ce8df208545"
down_revision = "55e910a74826"

View File

@ -22,7 +22,6 @@ Create Date: 2018-12-11 22:03:21.612516
"""
import json
import logging
from alembic import op
@ -30,6 +29,7 @@ from sqlalchemy import Column, Integer, String, Text
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
# revision identifiers, used by Alembic.
revision = "fb13d49b72f9"

View File

@ -22,7 +22,6 @@ Create Date: 2019-04-09 16:27:03.392872
"""
import json
import logging
from alembic import op
@ -30,6 +29,7 @@ from sqlalchemy import Column, Integer, Text
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
# revision identifiers, used by Alembic.
revision = "80aa3f04bc82"

View File

@ -26,7 +26,6 @@ Create Date: 2019-06-28 13:17:59.517089
revision = "ab8c66efdd01"
down_revision = "d7c1a0d6f2da"
import json # noqa: E402
import logging # noqa: E402
from alembic import op # noqa: E402
@ -34,6 +33,7 @@ from sqlalchemy import Column, Integer, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -22,7 +22,6 @@ Create Date: 2019-10-10 13:52:54.544475
"""
import json
import logging
from alembic import op
@ -31,6 +30,7 @@ from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.legacy import update_time_range
from superset.utils import json
# revision identifiers, used by Alembic.
revision = "1495eb914ad3"

View File

@ -27,7 +27,6 @@ revision = "78ee127d0d1d"
down_revision = "c2acd2cf3df2"
import copy # noqa: E402
import json # noqa: E402
import logging # noqa: E402
from alembic import op # noqa: E402
@ -35,6 +34,7 @@ from sqlalchemy import Column, Integer, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
from superset.utils.core import ( # noqa: E402
convert_legacy_filters_into_adhoc,
)

View File

@ -23,7 +23,6 @@ Create Date: 2020-02-07 14:13:51.714678
"""
# revision identifiers, used by Alembic.
import json
import logging
from alembic import op
@ -32,6 +31,7 @@ from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from superset import db
from superset.utils import json
from superset.utils.dashboard_filter_scopes_converter import convert_filter_scopes
revision = "3325d4caccc8"

View File

@ -26,13 +26,12 @@ Create Date: 2020-03-25 10:42:11.047328
revision = "f9a30386bd74"
down_revision = "b5998378c225"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import Column, Integer, String, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -26,14 +26,13 @@ Create Date: 2020-04-29 09:24:04.952368
revision = "620241d1153f"
down_revision = "f9a30386bd74"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import Column, ForeignKey, Integer, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db, db_engine_specs # noqa: E402
from superset.databases.utils import make_url_safe # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -22,7 +22,6 @@ Create Date: 2020-08-12 00:24:39.617899
"""
import json
import logging
import uuid
from collections import defaultdict
@ -33,6 +32,7 @@ from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from superset import db
from superset.utils import json
# revision identifiers, used by Alembic.
revision = "978245563a02"

View File

@ -22,9 +22,7 @@ Create Date: 2020-09-28 17:57:23.128142
"""
import json
import os
from json.decoder import JSONDecodeError
from uuid import uuid4
import sqlalchemy as sa
@ -35,7 +33,7 @@ from sqlalchemy_utils import UUIDType
from superset import db
from superset.migrations.shared.utils import assign_uuids
from superset.utils import core as utils
from superset.utils import core as utils, json
# revision identifiers, used by Alembic.
revision = "b56500de1855"
@ -81,7 +79,7 @@ default_batch_size = int(os.environ.get("BATCH_SIZE", 200))
def update_position_json(dashboard, session, uuid_map):
try:
layout = json.loads(dashboard.position_json or "{}")
except JSONDecodeError:
except json.JSONDecodeError:
layout = {}
for object_ in layout.values():

View File

@ -26,7 +26,6 @@ Create Date: 2021-01-23 16:25:14.496774
revision = "260bf0649a77"
down_revision = "c878781977c6"
import json # noqa: E402
import re # noqa: E402
import sqlalchemy as sa # noqa: E402
@ -38,6 +37,7 @@ from sqlalchemy.exc import OperationalError # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
from superset.utils.date_parser import DateRangeMigration # noqa: E402
Base = declarative_base()

View File

@ -26,13 +26,12 @@ Create Date: 2021-02-04 09:34:13.608891
revision = "070c043f2fdb"
down_revision = "41ce8799acc3"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import and_, Boolean, Column, Integer, String, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -26,13 +26,12 @@ Create Date: 2021-02-10 12:32:27.385579
revision = "41ce8799acc3"
down_revision = "e11ccdd12658"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import and_, Column, Integer, String, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -22,13 +22,12 @@ Create Date: 2021-02-14 11:46:02.379832
"""
import json
from alembic import op
from sqlalchemy import Column, Integer, String, Text
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
# revision identifiers, used by Alembic.
revision = "1412ec1e5a7b"

View File

@ -26,13 +26,12 @@ Create Date: 2021-03-24 09:47:21.569508
revision = "989bbe479899"
down_revision = "67da9ef1ef9c"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import Column, Integer, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -26,7 +26,6 @@ Create Date: 2021-04-07 07:21:27.324983
revision = "134cea61c5e7"
down_revision = "301362411006"
import json # noqa: E402
import logging # noqa: E402
from alembic import op # noqa: E402
@ -34,6 +33,7 @@ from sqlalchemy import Column, Integer, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -22,13 +22,12 @@ Create Date: 2021-04-09 16:14:19.040884
"""
import json
from alembic import op
from sqlalchemy import Column, Integer, String, Text
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
# revision identifiers, used by Alembic.
revision = "085f06488938"

View File

@ -26,7 +26,6 @@ Create Date: 2021-04-12 12:38:03.913514
revision = "fc3a3a8ff221"
down_revision = "085f06488938"
import json # noqa: E402
from collections.abc import Iterable # noqa: E402
from typing import Any # noqa: E402
@ -35,6 +34,7 @@ from sqlalchemy import Column, Integer, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -26,7 +26,6 @@ Create Date: 2021-04-29 15:32:21.939018
revision = "f1410ed7ec95"
down_revision = "d416d0d715cc"
import json # noqa: E402
from collections.abc import Iterable # noqa: E402
from typing import Any # noqa: E402
@ -35,6 +34,7 @@ from sqlalchemy import Column, Integer, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -22,7 +22,6 @@ Create Date: 2021-08-02 16:39:45.329151
"""
import json
import logging
from alembic import op
@ -30,6 +29,7 @@ from sqlalchemy import Column, Integer, Text
from sqlalchemy.ext.declarative import declarative_base
from superset import db
from superset.utils import json
# revision identifiers, used by Alembic.
revision = "e323605f370a"
@ -55,7 +55,7 @@ def upgrade():
for database in session.query(Database).all():
try:
extra = json.loads(database.extra)
except json.decoder.JSONDecodeError as ex:
except json.JSONDecodeError as ex:
logging.warning(str(ex))
continue

View File

@ -26,13 +26,12 @@ Create Date: 2021-08-03 15:36:35.925420
revision = "143b6f2815da"
down_revision = "e323605f370a"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import and_, Column, Integer, String, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -26,7 +26,6 @@ Create Date: 2021-08-31 11:37:40.604081
revision = "021b81fe4fbb"
down_revision = "07071313dd52"
import json # noqa: E402
import logging # noqa: E402
import sqlalchemy as sa # noqa: E402
@ -34,6 +33,7 @@ from alembic import op # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -26,13 +26,12 @@ Create Date: 2021-09-27 11:31:53.453164
revision = "60dc453f4e2e"
down_revision = "3ebe0993c770"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import and_, Column, Integer, String, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

View File

@ -26,13 +26,12 @@ Create Date: 2021-10-12 11:15:25.559532
revision = "32646df09c64"
down_revision = "60dc453f4e2e"
import json # noqa: E402
from alembic import op # noqa: E402
from sqlalchemy import Column, Integer, Text # noqa: E402
from sqlalchemy.ext.declarative import declarative_base # noqa: E402
from superset import db # noqa: E402
from superset.utils import json # noqa: E402
Base = declarative_base()

Some files were not shown because too many files have changed in this diff Show More