class_docstr: A Shillelagh adapter for Superset tables.
  
  Shillelagh adapters are responsible for fetching data from a given resource,
  allowing it to be represented as a virtual table in SQLite. This one works
  as a proxy to Superset tables.
class_docstr_tok: ["A","Shillelagh","adapter","for","Superset","tables",".","Shillelagh","adapters","are","responsible","for","fetching","data","from","a","given","resource",",","allowing","it","to","be","represented","as","a","virtual","table","in","SQLite",".","This","one","works","as","a","proxy","to","Superset","tables","."]
code: def __init__(
      self,
      uri: str,
      prefix: str | None = "superset",
      **kwargs: Any,
  ):
      if not feature_flag_manager.is_feature_enabled(
          "ENABLE_SUPERSET_META_DB"
      ):
          raise ProgrammingError("Superset meta database is disabled")
  
      super().__init__(**kwargs)
  
      parts = [urllib.parse.unquote(part) for part in uri.split(".")]
  
      if prefix is not None:
          if prefix != parts.pop(0):
              raise ProgrammingError("Invalid prefix")
          self.prefix = prefix
  
      self.database = parts.pop(0)
      self.table = parts.pop(-1)
      self.schema = parts.pop(-1) if parts else None
      self.catalog = parts.pop(-1) if parts else None
  
      if self.catalog:
          raise NotImplementedError(
              "Catalogs are not currently supported"
          )
  
      # If the table has a single integer primary key we use that as the row ID in order
      # to perform updates and deletes. Otherwise we can only do inserts and selects.
      self._rowid: str | None = None
  
      # Does the database allow DML?
      self._allow_dml: bool = False
  
      # Read column information from the database, and store it for later.
      self._set_columns()
  
imports: from __future__ import annotations
  import datetime
  import decimal
  import operator
  import urllib.parse
  from collections.abc import Iterator
  from functools import partial, wraps
  from typing import Any, Callable, cast, TypeVar
  from flask import current_app
  from shillelagh.adapters.base import Adapter
  from shillelagh.backends.apsw.dialects.base import APSWDialect
  from shillelagh.exceptions import ProgrammingError
  from shillelagh.fields import Boolean, Date, DateTime, Field, Float, Integer, Order, String, Time
  from shillelagh.filters import Equal, Filter, Range
  from shillelagh.typing import RequestedOrder, Row
  from sqlalchemy import func, MetaData, Table
  from sqlalchemy.engine.url import URL
  from sqlalchemy.exc import NoSuchTableError
  from sqlalchemy.sql import Select, select
  from superset import db, feature_flag_manager, security_manager, sql_parse
label_desc: Use image node_id 3 to create a new SupersetShillelaghAdapter object from inherited base classes: Adapter with example: obj = SupersetShillelaghAdapter(uri, prefix)