Compare commits

..
20 Commits
Author SHA1 Message Date
Beto Dealmeidaandhenryyeh f7727d4b50 feat: handle subtle bug with load-examples (#16052)
(cherry picked from commit 69c5cd7922)
2021-08-03 15:12:13 -07:00
Geidoandhenryyeh a87c5b89d6 fix: Edit physical dataset from the Edit Dataset modal (#15770)
* Remove unnecessary onChange

* Remove confliciting onChange

* Revert unnecessary change

* Enhance and fix tests

(cherry picked from commit a7cbcde9bf)
2021-07-19 12:17:11 -07:00
Elizabeth Thompsonandhenryyeh 4243730933 Revert "quote column name if db requires (#15465)" (#15752)
This reverts commit 80b8df0673.

(cherry picked from commit 618a354ca1)
2021-07-19 12:17:10 -07:00
Hugh A. Miles IIandhenryyeh 4f9ba43bc5 fix: Fixing schemas_allowed_for_upload field in database connection UX (#15750)
(cherry picked from commit 7d0f6ab7f5)
2021-07-19 12:17:10 -07:00
Yongjie Zhaoandhenryyeh 65a4504b81 fix: use expected label in the metrics map (#15707)
* fix: use expected label in metrics map

* added comments

* fix type

(cherry picked from commit 0721f54580)
2021-07-19 12:17:10 -07:00
David Aaron Suddjianandhenryyeh 9c9fcaf7fd fix(dashboard): Make the View Chart In Explore menu option a link (#15668)
* hey look, it's a real anchor tag!

* get the explore chart url into the link

* add doc comments to the functions

* remove pointless test

* update weird tests

Co-authored-by: Evan Rusackas <evan@preset.io>
(cherry picked from commit 985af72ac3)
2021-07-19 12:17:10 -07:00
Evan Rusackasandhenryyeh 0dc4007586 fix: safe removal of tab with filters still scoped to a non-existing chart (#15650)
(cherry picked from commit 52ad779a27)
2021-07-13 10:41:27 -07:00
Hugh A. Miles IIandhenryyeh 551ad60c76 fix: Fix test connection for extra fields (#15645)
* create serialize json function

* remove console.log

* use function

(cherry picked from commit 2dc8bd6c30)
2021-07-13 10:41:27 -07:00
Hugh A. Miles IIandhenryyeh a98949e2f9 fix: change sslmode to require for Postgres (#15642)
* change sslmode to require

* fix test

(cherry picked from commit f39582c900)
2021-07-13 10:41:27 -07:00
Hugh A. Miles IIandhenryyeh be2ae92b08 fix: Remove default values for engine and schemas (#15635)
* remove default values

* don't set initial value on save

* set defaults for engine_params

* update with JSON.parse

(cherry picked from commit 2252f3396c)
2021-07-13 10:41:27 -07:00
Beto Dealmeidaandhenryyeh 2c963f1848 fix: duplicate DB names (#15614)
(cherry picked from commit 5d86ffe768)
2021-07-13 10:41:27 -07:00
simcha90andhenryyeh f0f0838ec5 fix(native-filters): Fix required filters (#15572)
* fix:fix get permission function

* fix: filters required state

* fix: fix CR notes

* fix: removre required message

* fix: fix validation state

(cherry picked from commit d70ac21054)
2021-07-13 10:41:27 -07:00
AAfghahiandhenryyeh 52fe1bb0c8 clears errors when closing out of modal (#15623)
(cherry picked from commit 2ebba519c9)
2021-07-13 10:41:27 -07:00
AAfghahiandhenryyeh 78e7d13ff9 fix: Database List Sorted (#15619)
* sorted the database list

* revisions

* cloned the array

* one more time with feeling

* added documentation link as well

(cherry picked from commit faf6fcd83e)
2021-07-13 10:41:27 -07:00
Hugh A. Miles IIandhenryyeh 5ce67b7666 update db for expose in sqllab param (#15609)
(cherry picked from commit f67e40236d)
2021-07-13 10:41:27 -07:00
Lyndsi Kay Williamsandhenryyeh 85d4359ac3 fix: Database Connection Modal - corrected tooltip alignment and info alert width (#15612)
* Added margins to info alerts

* Tooltips aligned

(cherry picked from commit b5fc03f964)
2021-07-13 10:41:27 -07:00
AAfghahiandhenryyeh bd629ec3ab added isEditMode (#15594)
(cherry picked from commit ad85e7be52)
2021-07-08 14:21:59 -07:00
Hugh A. Miles IIandhenryyeh 26cdcd0611 fix: DBC UI tooltip aligment (#15595)
(cherry picked from commit e539d08074)
2021-07-08 14:21:59 -07:00
Beto Dealmeidaandhenryyeh cec5b4cdfd fix: available endpoint showing specs without drivers (#15587)
(cherry picked from commit 301b94f49a)
2021-07-08 14:21:59 -07:00
Phillip Kelley-Dotsonandhenryyeh 847e3f441a initial fix (#15581)
(cherry picked from commit 86a59a2927)
2021-07-08 14:21:59 -07:00
726 changed files with 11248 additions and 28968 deletions
-1
View File
@@ -1 +0,0 @@
docker/**/*.sh text eol=lf
+3 -3
View File
@@ -3,6 +3,6 @@
/superset/migrations/ @apache/superset-committers
# Notify Preset team when ephemeral env settings are changed
.github/workflows/ecs-task-definition.json @robdiciuccio @craig-rueda @rusackas @eschutho @dpgaspar @nytai @mistercrunch
.github/workflows/docker-ephemeral-env.yml @robdiciuccio @craig-rueda @rusackas @eschutho @dpgaspar @nytai @mistercrunch
.github/workflows/ephemeral*.yml @robdiciuccio @craig-rueda @rusackas @eschutho @dpgaspar @nytai @mistercrunch
.github/workflows/ecs-task-definition.json @robdiciuccio @craig-rueda @willbarrett @rusackas @eschutho @dpgaspar @nytai @mistercrunch
.github/workflows/docker-ephemeral-env.yml @robdiciuccio @craig-rueda @willbarrett @rusackas @eschutho @dpgaspar @nytai @mistercrunch
.github/workflows/ephemeral*.yml @robdiciuccio @craig-rueda @willbarrett @rusackas @eschutho @dpgaspar @nytai @mistercrunch
-1
View File
@@ -33,7 +33,6 @@ If applicable, add screenshots to help explain your problem.
- superset version: `superset version`
- python version: `python --version`
- node.js version: `node -v`
- any feature flags active:
### Checklist
-7
View File
@@ -1,9 +1,3 @@
<!---
Please write the PR title following the conventions at https://www.conventionalcommits.org/en/v1.0.0/
Example:
fix(dashboard): load charts correctly
-->
### SUMMARY
<!--- Describe the change below, including rationale and design decisions -->
@@ -17,7 +11,6 @@ fix(dashboard): load charts correctly
<!--- Check any relevant boxes with "x" -->
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
- [ ] Has associated issue:
- [ ] Required feature flags:
- [ ] Changes UI
- [ ] Includes DB Migration (follow approval process in [SIP-59](https://github.com/apache/superset/issues/13351))
- [ ] Migration is atomic, supports rollback & is backwards-compatible
+1 -2
View File
@@ -55,8 +55,7 @@ npm-install() {
cd "$GITHUB_WORKSPACE/superset-frontend"
# cache-restore npm
say "::group::Install npm@7"
sudo npm i -g npm@7 --registry=https://registry.npmjs.org
say "::group::Install npm packages"
echo "npm: $(npm --version)"
echo "node: $(node --version)"
@@ -1,193 +0,0 @@
# Python integration tests
name: Python-Integration
on:
push:
branches-ignore:
- "dependabot/npm_and_yarn/**"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
jobs:
test-mysql:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: |
mysql+mysqldb://superset:superset@127.0.0.1:13306/superset?charset=utf8mb4&binary_prefix=true
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: root
ports:
- 13306:3306
redis:
image: redis:5-alpine
options: --entrypoint redis-server
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
- name: Check if python changes are present
id: check
env:
GITHUB_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
run: ./scripts/ci_check_no_file_changes.sh python
- name: Setup Python
if: steps.check.outcome == 'failure'
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
with:
run: |
apt-get-install
pip-upgrade
pip install -r requirements/testing.txt
setup-mysql
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python integration tests (MySQL)
if: steps.check.outcome == 'failure'
run: |
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F mysql
test-postgres:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7, 3.8]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
services:
postgres:
image: postgres:10-alpine
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
ports:
# Use custom ports for services to avoid accidentally connecting to
# GitHub action runner's default installations
- 15432:5432
redis:
image: redis:5-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
- name: Check if python changes are present
id: check
env:
GITHUB_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
run: ./scripts/ci_check_no_file_changes.sh python
- name: Setup Python
if: steps.check.outcome == 'failure'
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
with:
run: |
apt-get-install
pip-upgrade
pip install -r requirements/testing.txt
setup-postgres
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python integration tests (PostgreSQL)
if: steps.check.outcome == 'failure'
run: |
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F postgres
test-sqlite:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: |
sqlite:///${{ github.workspace }}/.temp/unittest.db
services:
redis:
image: redis:5-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
- name: Check if python changes are present
id: check
env:
GITHUB_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
run: ./scripts/ci_check_no_file_changes.sh python
- name: Setup Python
if: steps.check.outcome == 'failure'
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
with:
run: |
apt-get-install
pip-upgrade
pip install -r requirements/testing.txt
mkdir ${{ github.workspace }}/.temp
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python integration tests (SQLite)
if: steps.check.outcome == 'failure'
run: |
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F sqlite
+145 -7
View File
@@ -1,5 +1,5 @@
# Python unit tests
name: Python-Unit
name: Python
on:
push:
@@ -9,14 +9,150 @@ on:
types: [synchronize, opened, reopened, ready_for_review]
jobs:
unit-tests:
test-mysql:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7,3.8]
python-version: [3.7]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: |
mysql+mysqldb://superset:superset@127.0.0.1:13306/superset?charset=utf8mb4&binary_prefix=true
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: root
ports:
- 13306:3306
redis:
image: redis:5-alpine
options: --entrypoint redis-server
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
- name: Check if python changes are present
id: check
env:
GITHUB_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
run: ./scripts/ci_check_no_file_changes.sh python
- name: Setup Python
if: steps.check.outcome == 'failure'
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
with:
run: |
apt-get-install
pip-upgrade
pip install -r requirements/testing.txt
setup-mysql
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python unit tests (MySQL)
if: steps.check.outcome == 'failure'
run: |
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F mysql
test-postgres:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7, 3.8]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset
services:
postgres:
image: postgres:10-alpine
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
ports:
# Use custom ports for services to avoid accidentally connecting to
# GitHub action runner's default installations
- 15432:5432
redis:
image: redis:5-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
- name: Check if python changes are present
id: check
env:
GITHUB_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
continue-on-error: true
run: ./scripts/ci_check_no_file_changes.sh python
- name: Setup Python
if: steps.check.outcome == 'failure'
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
with:
run: |
apt-get-install
pip-upgrade
pip install -r requirements/testing.txt
setup-postgres
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python unit tests (PostgreSQL)
if: steps.check.outcome == 'failure'
run: |
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F postgres
test-sqlite:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.7]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
REDIS_PORT: 16379
SUPERSET__SQLALCHEMY_DATABASE_URI: |
sqlite:///${{ github.workspace }}/.temp/unittest.db
services:
redis:
image: redis:5-alpine
ports:
- 16379:6379
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
@@ -35,7 +171,6 @@ jobs:
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
# TODO: separated requiermentes.txt file just for unit tests
- name: Install dependencies
if: steps.check.outcome == 'failure'
uses: ./.github/actions/cached-dependencies
@@ -45,11 +180,14 @@ jobs:
pip-upgrade
pip install -r requirements/testing.txt
mkdir ${{ github.workspace }}/.temp
- name: Python unit tests
- name: Run celery
if: steps.check.outcome == 'failure'
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
- name: Python unit tests (SQLite)
if: steps.check.outcome == 'failure'
run: |
pytest ./tests/unit_tests --cache-clear
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash .github/workflows/codecov.sh -c -F python -F unit
bash .github/workflows/codecov.sh -c -F python -F sqlite
+1 -2
View File
@@ -24,10 +24,9 @@ repos:
hooks:
- id: isort
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.910
rev: v0.790
hooks:
- id: mypy
additional_dependencies: [types-all]
- repo: https://github.com/peterdemin/pip-compile-multi
rev: v2.4.1
hooks:
+8 -13
View File
@@ -70,8 +70,7 @@ confidence=
# either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once). See also the "--disable" option for examples.
enable=
useless-suppression,
#enable=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
@@ -82,12 +81,8 @@ enable=
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
disable=
missing-docstring,
duplicate-code,
unspecified-encoding,
# re-enable once this no longer raises false positives
too-many-instance-attributes
disable=long-builtin,dict-view-method,intern-builtin,suppressed-message,no-absolute-import,unpacking-in-except,apply-builtin,delslice-method,indexing-exception,old-raise-syntax,print-statement,cmp-builtin,reduce-builtin,useless-suppression,coerce-method,input-builtin,cmp-method,raw_input-builtin,nonzero-method,backtick,basestring-builtin,setslice-method,reload-builtin,oct-method,map-builtin-not-iterating,execfile-builtin,old-octal-literal,zip-builtin-not-iterating,buffer-builtin,getslice-method,metaclass-assignment,xrange-builtin,long-suffix,round-builtin,range-builtin-not-iterating,next-method-called,parameter-unpacking,unicode-builtin,unichr-builtin,import-star-module-level,raising-string,filter-builtin-not-iterating,using-cmp-argument,coerce-builtin,file-builtin,old-division,hex-method,missing-docstring,too-many-lines,ungrouped-imports,import-outside-toplevel,raise-missing-from,super-with-arguments,bad-option-value,too-few-public-methods,too-many-locals
[REPORTS]
@@ -120,7 +115,7 @@ evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / stateme
[BASIC]
# Good variable names which should always be accepted, separated by a comma
good-names=_,df,ex,f,i,id,j,k,l,o,pk,Run,ts,v,x,y
good-names=_,df,ex,f,i,id,j,k,l,o,pk,Run,ts,v,x
# Bad variable names which should always be refused, separated by a comma
bad-names=fd,foo,bar,baz,toto,tutu,tata
@@ -214,7 +209,7 @@ max-nested-blocks=5
[FORMAT]
# Maximum number of characters on a single line.
max-line-length=90
max-line-length=88
# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
@@ -313,7 +308,7 @@ generated-members=
# List of decorators that produce context managers, such as
# contextlib.contextmanager. Add to this list to register other decorators that
# produce valid context managers.
contextmanager-decorators=contextlib.contextmanager
contextmanager-decorators=contextlib.contextmanager,contextlib2.contextmanager
[VARIABLES]
@@ -370,7 +365,7 @@ max-locals=15
max-returns=10
# Maximum number of branch for function / method body
max-branches=15
max-branches=12
# Maximum number of statements in function / method body
max-statements=50
@@ -379,7 +374,7 @@ max-statements=50
max-parents=7
# Maximum number of attributes for a class (see R0902).
max-attributes=8
max-attributes=7
# Minimum number of public methods for a class (see R0903).
min-public-methods=2
+1 -741
View File
@@ -17,747 +17,7 @@ specific language governing permissions and limitations
under the License.
-->
## Change Log
### 1.3.0 (2021-08-13)
**Database Migrations**
- [#16160](https://github.com/apache/superset/pull/16160) feat: change query predicate to text (@eschutho)
- [#16077](https://github.com/apache/superset/pull/16077) fix: ensure that users viewing chart does not automatically save edit data (@pkdotson)
- [#16098](https://github.com/apache/superset/pull/16098) fix: migrate_roles (@betodealmeida)
- [#16078](https://github.com/apache/superset/pull/16078) chore: simplify chart permissions (@betodealmeida)
- [#16045](https://github.com/apache/superset/pull/16045) feat(explore): add automatic conditional formatter to pivot table v2 (@villebro)
- [#16038](https://github.com/apache/superset/pull/16038) fix: handle schemas_allowed_for_csv_upload serde (@betodealmeida)
- [#15909](https://github.com/apache/superset/pull/15909) fix: Ensure table uniqueness on update (@john-bodley)
- [#15747](https://github.com/apache/superset/pull/15747) feat: migration to add timezone to report schedule (@eschutho)
- [#15824](https://github.com/apache/superset/pull/15824) feat: store query context when saving charts (@betodealmeida)
- [#15822](https://github.com/apache/superset/pull/15822) fix: benchmark_migration.py needs to close sssion (@betodealmeida)
- [#15807](https://github.com/apache/superset/pull/15807) fix: migration script can't drop constraint (@betodealmeida)
- [#15791](https://github.com/apache/superset/pull/15791) fix: migration downgrade references wrong column (@betodealmeida)
- [#15725](https://github.com/apache/superset/pull/15725) fix: change to alerts_reports (@AAfghahi)
- [#15683](https://github.com/apache/superset/pull/15683) feat: add Column to reports model (@AAfghahi)
- [#15507](https://github.com/apache/superset/pull/15507) chore(python-testing): move memoized tests to unit tests (@amitmiran137)
- [#15032](https://github.com/apache/superset/pull/15032) fix: benchmark migration script (@betodealmeida)
- [#14433](https://github.com/apache/superset/pull/14433) feat: Adding configuration_method column to Database Model (@AAfghahi)
**Features**
- [#16199](https://github.com/apache/superset/pull/16199) feat: Changing Dataset names (@AAfghahi)
- [#16183](https://github.com/apache/superset/pull/16183) feat: update covid dashboard (@eschutho)
- [#16178](https://github.com/apache/superset/pull/16178) feat: CLI cleanup (@AAfghahi)
- [#16170](https://github.com/apache/superset/pull/16170) feat: Added multi-regional IPs to Database Connections (@AAfghahi)
- [#16158](https://github.com/apache/superset/pull/16158) feat: add chart image info to reports from charts (@eschutho)
- [#16139](https://github.com/apache/superset/pull/16139) feat(cross-filters): add support for temporal filters (@villebro)
- [#16156](https://github.com/apache/superset/pull/16156) feat: add config to hide some user menu items (@eschutho)
- [#16102](https://github.com/apache/superset/pull/16102) feat: add sticky state to tables and loadingcards state. (@pkdotson)
- [#16131](https://github.com/apache/superset/pull/16131) feat: better errors for report in charts and dashboard (@AAfghahi)
- [#16095](https://github.com/apache/superset/pull/16095) feat: added google alert to DB Connection Form (@AAfghahi)
- [#16052](https://github.com/apache/superset/pull/16052) feat: handle subtle bug with load-examples (@betodealmeida)
- [#16027](https://github.com/apache/superset/pull/16027) feat: Self subscribe reports (@eschutho)
- [#15887](https://github.com/apache/superset/pull/15887) feat: auto sync table columns when change dataset (@zhaoyongjie)
- [#15953](https://github.com/apache/superset/pull/15953) feat: send post-processed data in reports (@betodealmeida)
- [#15853](https://github.com/apache/superset/pull/15853) feat(homepage): add more cards and new layout (@pkdotson)
- [#15879](https://github.com/apache/superset/pull/15879) feat: post-processing for pivot table v2 (@betodealmeida)
- [#15806](https://github.com/apache/superset/pull/15806) feat: send report data to Slack (@betodealmeida)
- [#15801](https://github.com/apache/superset/pull/15801) feat(dbc ui): Adding Google Sheets Dynamic Form (@hughhhh)
- [#15920](https://github.com/apache/superset/pull/15920) feat: add timezone selector to alerts and reports (@eschutho)
- [#15805](https://github.com/apache/superset/pull/15805) feat: send data embedded in report email (@betodealmeida)
- [#15279](https://github.com/apache/superset/pull/15279) feat: run extra query on QueryObject and add compare operator for post_processing (@zhaoyongjie)
- [#15849](https://github.com/apache/superset/pull/15849) feat: add timezones to report cron (@eschutho)
- [#15846](https://github.com/apache/superset/pull/15846) feat: call screenshot to store `query_context` (@betodealmeida)
- [#15864](https://github.com/apache/superset/pull/15864) feat(explore): new datasets have autocomplete filters enabled if UX_BETA is set (@kgabryje)
- [#15843](https://github.com/apache/superset/pull/15843) feat: apply post processing to chart data (@betodealmeida)
- [#15880](https://github.com/apache/superset/pull/15880) feat: add timezone selector component (@eschutho)
- [#15882](https://github.com/apache/superset/pull/15882) feat: deprecate plugins by their metadata (@suddjian)
- [#15792](https://github.com/apache/superset/pull/15792) feat(homepage): conditionally render viewed tab and move examples to chart and dashboard table (@pkdotson)
- [#15798](https://github.com/apache/superset/pull/15798) feat(explore): default aggregate for string/numeric columns when creating metric (@kgabryje)
- [#15830](https://github.com/apache/superset/pull/15830) feat: use new API endpoint to build CSV reports (@betodealmeida)
- [#15827](https://github.com/apache/superset/pull/15827) feat: add `GET /api/v1/chart/{chart_id}/data/?format{format}` API (@betodealmeida)
- [#15719](https://github.com/apache/superset/pull/15719) feat: adding Progress Bar to Benchmark script (@AAfghahi)
- [#15712](https://github.com/apache/superset/pull/15712) feat: add show columns to Reports model (@AAfghahi)
- [#15740](https://github.com/apache/superset/pull/15740) feat(explore): UX improvements for drag'n'dropping time column (@kgabryje)
- [#15685](https://github.com/apache/superset/pull/15685) feat: add logic to creation_method for reports schedule (@AAfghahi)
- [#15711](https://github.com/apache/superset/pull/15711) feat(homepage): move savequeries table and render open conditionally (@pkdotson)
- [#15628](https://github.com/apache/superset/pull/15628) feat(menu): expand support for custom branding (@nytai)
- [#15403](https://github.com/apache/superset/pull/15403) feat: cancel db query on stop (@koszti)
- [#15651](https://github.com/apache/superset/pull/15651) feat(explore): Implement conditional formatting component (@kgabryje)
- [#15303](https://github.com/apache/superset/pull/15303) feat(explore): Upgraded viz select gallery (@suddjian)
- [#15578](https://github.com/apache/superset/pull/15578) feat: validate_parameters for GSheets (@betodealmeida)
- [#15502](https://github.com/apache/superset/pull/15502) feat: supporting jinja templating in saved metrics (@guydou)
- [#15500](https://github.com/apache/superset/pull/15500) feat(cross-filters): add option to clear set cross filters (@villebro)
- [#14775](https://github.com/apache/superset/pull/14775) feat: extra table metadata for Google Sheets (@betodealmeida)
- [#14881](https://github.com/apache/superset/pull/14881) feat: Database Connection UI (@hughhhh)
- [#15419](https://github.com/apache/superset/pull/15419) feat(native-filters): add null option to value filter (@mironovmeow)
- [#15273](https://github.com/apache/superset/pull/15273) feat: update ingress api version to v1 (@mvoitko)
- [#15454](https://github.com/apache/superset/pull/15454) feat(dashboard-groupby): group by - add ability to exclude columns (@einatbar)
- [#15482](https://github.com/apache/superset/pull/15482) feat: more SIP-40 errors (@betodealmeida)
- [#15475](https://github.com/apache/superset/pull/15475) feat(add IBM Netezza support): documentation changes for Netezza (@abhishekjog)
- [#15450](https://github.com/apache/superset/pull/15450) feat(add Netezza database): Add IBM Netezza support (@abhishekjog)
- [#15177](https://github.com/apache/superset/pull/15177) feat(trino): add support for query cost estimate #15166 (@rijojoseph07)
- [#15426](https://github.com/apache/superset/pull/15426) feat: add env vars from multiple secrets in Helm chart (@mvoitko)
- [#15436](https://github.com/apache/superset/pull/15436) feat: add more SIP-40 errors to SQL Lab (@betodealmeida)
- [#15432](https://github.com/apache/superset/pull/15432) feat: Better Errors in SQL Lab (@AAfghahi)
- [#15427](https://github.com/apache/superset/pull/15427) feat(native-filters): add support for preselect filters (@villebro)
- [#15409](https://github.com/apache/superset/pull/15409) feat: more SIP-40 error messages for SQL Lab (@betodealmeida)
- [#15153](https://github.com/apache/superset/pull/15153) feat: Adding a show all button to the column/metrics list in the explore view (Allow more than 50 columns to be shown) (@cccs-RyanS)
- [#15385](https://github.com/apache/superset/pull/15385) feat(native-filters): Hide non-numeric columns in numeric range filter (@kgabryje)
- [#15340](https://github.com/apache/superset/pull/15340) feat: add possibility to specify Service Account name for the Deployment in the Helm chart (@mvoitko)
- [#15342](https://github.com/apache/superset/pull/15342) feat: custom error SQL Lab timeout (@betodealmeida)
- [#15302](https://github.com/apache/superset/pull/15302) feat(native-filters): Set default scope by filters' and charts' datasets (@kgabryje)
- [#15206](https://github.com/apache/superset/pull/15206) feat: implement specific errors for SQL Lab (@betodealmeida)
- [#15270](https://github.com/apache/superset/pull/15270) feat(editable-title): move cursor and scroll to the end (@stephenLYZ)
- [#15157](https://github.com/apache/superset/pull/15157) feat: Synchronously return cached charts (@benjreinhart)
- [#15276](https://github.com/apache/superset/pull/15276) feat(native-filters): Show/Highlight errored/focused status (@simcha90)
- [#15253](https://github.com/apache/superset/pull/15253) feat(native-filters): add support for import/export dashboard (@villebro)
- [#15247](https://github.com/apache/superset/pull/15247) feat(sql): add jinja support to metrics and expressions (@villebro)
- [#14682](https://github.com/apache/superset/pull/14682) feat(db_engine_specs): Add quirks to support Ascend.io/HiveServer2 with Impala driver. (@danielewood)
- [#15225](https://github.com/apache/superset/pull/15225) feat(native-filters): Hide time filters if loaded datasets don't have temporal columns (@kgabryje)
- [#15222](https://github.com/apache/superset/pull/15222) feat(native-filters): Disable Apply button if filter required (@simcha90)
- [#15158](https://github.com/apache/superset/pull/15158) feat: show rich error messages on past failed queries (@betodealmeida)
- [#15121](https://github.com/apache/superset/pull/15121) feat: Select component (Iteration 1) (@geido)
- [#15188](https://github.com/apache/superset/pull/15188) feat(api): add featured datatypes to dashboard dataset ep (@villebro)
- [#14703](https://github.com/apache/superset/pull/14703) feat(helm): Make local admin optional (@danielewood)
- [#15117](https://github.com/apache/superset/pull/15117) feat(native-filters): add optional time col to time range (@villebro)
- [#15105](https://github.com/apache/superset/pull/15105) feat(webpack): configure publicPath via ASSET_BASE_URL env var (@nytai)
- [#14872](https://github.com/apache/superset/pull/14872) feat(Explore): add sort to edit dataset modal (@pkdotson)
- [#15046](https://github.com/apache/superset/pull/15046) feat(dashboard): Let users download full CSV of a table (@m-ajay)
- [#15107](https://github.com/apache/superset/pull/15107) feat: show spinner on exports (@betodealmeida)
- [#15120](https://github.com/apache/superset/pull/15120) feat(native-filters): Defer loading filters data until filter is visible (@kgabryje)
- [#15063](https://github.com/apache/superset/pull/15063) feat(native-filters): Hide filters which don't affect any visible charts (@kgabryje)
- [#15055](https://github.com/apache/superset/pull/15055) feat: spinner for imports (@betodealmeida)
- [#15057](https://github.com/apache/superset/pull/15057) feat: style import button (@betodealmeida)
- [#14868](https://github.com/apache/superset/pull/14868) feat: add more timeout configuration on screenshots (@dpgaspar)
- [#14921](https://github.com/apache/superset/pull/14921) feat(filter-box): hide druid options if druid not enabled (@villebro)
- [#14869](https://github.com/apache/superset/pull/14869) feat(native-filters): Support default to first value in select filter (@simcha90)
- [#14981](https://github.com/apache/superset/pull/14981) feat(native-filters): add markers and number formatter to range filter (@villebro)
- [#14966](https://github.com/apache/superset/pull/14966) feat(native-filters): apply cascading without instant filtering (@villebro)
- [#14863](https://github.com/apache/superset/pull/14863) feat: add type_generic and is_dttm to table metadata (@zhaoyongjie)
- [#14934](https://github.com/apache/superset/pull/14934) feat: Adding FORCE_SSL as feature flag in config.py (@AAfghahi)
- [#14933](https://github.com/apache/superset/pull/14933) feat(dashboard/native-filters): Hide filters out of scope of current tab (@kgabryje)
- [#14818](https://github.com/apache/superset/pull/14818) feat: Icon Button (@lyndsiWilliams)
- [#14832](https://github.com/apache/superset/pull/14832) feat: validation db modal (@eschutho)
- [#14765](https://github.com/apache/superset/pull/14765) feat: add support for filters in sqlLab (@cccs-jc)
- [#14784](https://github.com/apache/superset/pull/14784) feat(native-filter): Hide native filters (@simcha90)
- [#14843](https://github.com/apache/superset/pull/14843) feat(trino): add support for user impersonation (@rijojoseph07)
- [#14865](https://github.com/apache/superset/pull/14865) feat(dashboard): Highlight tabs that contain a chart in scope of focused native filter (@kgabryje)
- [#14873](https://github.com/apache/superset/pull/14873) feat(native-filters): improve inverse selection indicators (@villebro)
- [#14883](https://github.com/apache/superset/pull/14883) feat: validate database parameters (@betodealmeida)
- [#14842](https://github.com/apache/superset/pull/14842) feat(native-filters): sort selected values on blur (@villebro)
- [#14486](https://github.com/apache/superset/pull/14486) feat(native-filter): limit max tag count for selected filter values (@einatbar)
- [#14686](https://github.com/apache/superset/pull/14686) feat: ability to pull from your own docker registry using a secret (@jmistry)
- [#14803](https://github.com/apache/superset/pull/14803) feat: return parameters only for DB with default driver (@betodealmeida)
- [#14484](https://github.com/apache/superset/pull/14484) feat: chart gallery search improvement (@einatbar)
- [#14661](https://github.com/apache/superset/pull/14661) feat(explore): Remove default for time range filter and Metrics (@kgabryje)
- [#14710](https://github.com/apache/superset/pull/14710) feat(native-filters): add search all filter options (@villebro)
- [#14721](https://github.com/apache/superset/pull/14721) feat: Create BigQuery Parameters for DatabaseModal (@hughhhh)
- [#14767](https://github.com/apache/superset/pull/14767) feat: enable user impersonation in GSheets (@betodealmeida)
- [#14583](https://github.com/apache/superset/pull/14583) feat: save database with new dynamic form (@eschutho)
- [#14695](https://github.com/apache/superset/pull/14695) feat: make tabs sticky in homepage (@pkdotson)
- [#14507](https://github.com/apache/superset/pull/14507) feat: Add a remove_filter flag to the jinja filter_values function and add a new get_filters function (see issue 13943 for more details) (@cccs-jc)
- [#14693](https://github.com/apache/superset/pull/14693) feat(native-filters): Highlight charts affected by focused native filter (@kgabryje)
- [#14530](https://github.com/apache/superset/pull/14530) feat: Labeled Error-bound Input (@lyndsiWilliams)
- [#14652](https://github.com/apache/superset/pull/14652) feat: Add `make update` cmd (@hughhhh)
- [#14724](https://github.com/apache/superset/pull/14724) feat: do not redirect on 404/500 (@betodealmeida)
- [#14647](https://github.com/apache/superset/pull/14647) feat: Add headers for DatabaseModal (@hughhhh)
- [#14680](https://github.com/apache/superset/pull/14680) feat: Expanded Parameters for Mysql (@AAfghahi)
- [#14653](https://github.com/apache/superset/pull/14653) feat: Add Parameters fields to GET Database (@hughhhh)
- [#14677](https://github.com/apache/superset/pull/14677) feat: redirect 404/500 to static pages (@betodealmeida)
- [#14675](https://github.com/apache/superset/pull/14675) feat: redirect to /login when CSRF expired (@betodealmeida)
- [#14667](https://github.com/apache/superset/pull/14667) feat(dashboard): View query of the chart in dashboard (@m-ajay)
- [#14381](https://github.com/apache/superset/pull/14381) feat: Better return messages in SQL Editor (@AAfghahi)
- [#14673](https://github.com/apache/superset/pull/14673) feat: add SSL to new DB parameters (@betodealmeida)
- [#14668](https://github.com/apache/superset/pull/14668) feat: make config method optional (@AAfghahi)
- [#14451](https://github.com/apache/superset/pull/14451) feat: Configuration Method and expanded parameters for Database Model (@AAfghahi)
- [#14560](https://github.com/apache/superset/pull/14560) feat: bumping echarts plugin, adding new treemap plugin (@rusackas)
- [#14547](https://github.com/apache/superset/pull/14547) feat: add generic type to column payload (@villebro)
- [#14420](https://github.com/apache/superset/pull/14420) feat: API endpoint to validate databases using separate parameters (@betodealmeida)
- [#14527](https://github.com/apache/superset/pull/14527) feat(alert&report): set image width for email (@lilykuang)
- [#14514](https://github.com/apache/superset/pull/14514) feat: Containerize WebSocket server (@benjreinhart)
- [#14493](https://github.com/apache/superset/pull/14493) feat(explore): collapse time section if no ts columns (@villebro)
- [#14516](https://github.com/apache/superset/pull/14516) feat(viz): new tree chart (@mayurnewase)
- [#14491](https://github.com/apache/superset/pull/14491) feat: add `make format` command (@hughhhh)
- [#14470](https://github.com/apache/superset/pull/14470) feat: db modal split (@eschutho)
- [#14480](https://github.com/apache/superset/pull/14480) feat(viz): add funnel chart (@villebro)
**Fixes**
- [#16260](https://github.com/apache/superset/pull/16260) fix: check roles before fetching reports (@eschutho)
- [#16259](https://github.com/apache/superset/pull/16259) fix: pivot columns with ints for name (@betodealmeida)
- [#16253](https://github.com/apache/superset/pull/16253) fix: Homepage dashboard examples tab does not show user created objects (@pkdotson)
- [#16233](https://github.com/apache/superset/pull/16233) fix(dashboard): cross filter chart highlight when filters badge icon clicked (@kgabryje)
- [#16241](https://github.com/apache/superset/pull/16241) fix: validate_parameters and query (@betodealmeida)
- [#16240](https://github.com/apache/superset/pull/16240) fix: Remove Advanced Analytics tag for 2 charts (@rusackas)
- [#16214](https://github.com/apache/superset/pull/16214) fix: remove encryption from db params (@eschutho)
- [#16230](https://github.com/apache/superset/pull/16230) fix(explore): conditional formatting value validators (@kgabryje)
- [#16212](https://github.com/apache/superset/pull/16212) fix: example tabs filter (@pkdotson)
- [#16208](https://github.com/apache/superset/pull/16208) fix: sorting on "Modified By" in chart table (@pkdotson)
- [#16196](https://github.com/apache/superset/pull/16196) fix(explore): adhoc metrics popover resets label after hovering outside (@kgabryje)
- [#16190](https://github.com/apache/superset/pull/16190) fix(explore): metric label disappearing in some scenarios (@kgabryje)
- [#16171](https://github.com/apache/superset/pull/16171) fix: change listivew card layouts to the new homepage card layout (@pkdotson)
- [#16176](https://github.com/apache/superset/pull/16176) fix: ensure created user entities do not show inside examples (@pkdotson)
- [#16175](https://github.com/apache/superset/pull/16175) fix: isDynamic function (@betodealmeida)
- [#16162](https://github.com/apache/superset/pull/16162) fix: revert data endpoint name (@betodealmeida)
- [#16151](https://github.com/apache/superset/pull/16151) fix: turn on SSL in database edit form show 500 error (@hughhhh)
- [#16089](https://github.com/apache/superset/pull/16089) fix: Safari is not showing scroll bars in Explore (@michael-s-molina)
- [#16094](https://github.com/apache/superset/pull/16094) fix: Multiple dashboard refresh triggers for the same session (@michael-s-molina)
- [#16107](https://github.com/apache/superset/pull/16107) fix: boolean type into SQL 'in' operator (@zhaoyongjie)
- [#16053](https://github.com/apache/superset/pull/16053) fix(dashboard): 500 error caused by data_for_slices API (@ktmud)
- [#16161](https://github.com/apache/superset/pull/16161) fix: Big Query additional parameters field doesn't keep value (@lyndsiWilliams)
- [#16118](https://github.com/apache/superset/pull/16118) fix: change Alert Permissions (@AAfghahi)
- [#16088](https://github.com/apache/superset/pull/16088) fix(explore): dnd error when dragging metric if multi: false (@kgabryje)
- [#16092](https://github.com/apache/superset/pull/16092) fix(Explore): Adjust width of cell in Time-Series Table chart (@geido)
- [#16132](https://github.com/apache/superset/pull/16132) fix: virtual dataset wont work (@zhaoyongjie)
- [#16115](https://github.com/apache/superset/pull/16115) fix(explore): revert dnd column dependency array change to fix infinite rerenders (@kgabryje)
- [#16097](https://github.com/apache/superset/pull/16097) fix: move watermark to about section (@nytai)
- [#16073](https://github.com/apache/superset/pull/16073) fix(explore): drag & drop column select component triggering onChange unnecessarily (@suddjian)
- [#15592](https://github.com/apache/superset/pull/15592) fix(dashboard): user id can be null when there is an anonymous user (@suddjian)
- [#16091](https://github.com/apache/superset/pull/16091) fix: load tabbed dash only for tests (@betodealmeida)
- [#16093](https://github.com/apache/superset/pull/16093) fix: Calendar color change (@AAfghahi)
- [#16054](https://github.com/apache/superset/pull/16054) fix: Remove grey bar for TableElement component when `metadata` is empty (@hughhhh)
- [#16065](https://github.com/apache/superset/pull/16065) fix: Adding report bug (@AAfghahi)
- [#16061](https://github.com/apache/superset/pull/16061) fix(native-filters): add support for boolean cols to select (@villebro)
- [#16062](https://github.com/apache/superset/pull/16062) fix: Fixes the Select unselect for object values (@michael-s-molina)
- [#16042](https://github.com/apache/superset/pull/16042) fix: sync columns in explore page (@zhaoyongjie)
- [#16044](https://github.com/apache/superset/pull/16044) fix: make dataset update methods static instead of global (@etr2460)
- [#16037](https://github.com/apache/superset/pull/16037) fix: DB exported with incorrect type (@betodealmeida)
- [#15954](https://github.com/apache/superset/pull/15954) fix: Fix long dashboards screenshot emails (@hughhhh)
- [#16024](https://github.com/apache/superset/pull/16024) fix(explore): filter popover opening after removing a filter (@kgabryje)
- [#16035](https://github.com/apache/superset/pull/16035) fix: Modal is blinking when opening (@michael-s-molina)
- [#16022](https://github.com/apache/superset/pull/16022) fix: Select the right section when categories and tags have the same name in Viz Gallery (@geido)
- [#16026](https://github.com/apache/superset/pull/16026) fix: missing mulitiple metrics on pivot operator (@zhaoyongjie)
- [#16031](https://github.com/apache/superset/pull/16031) fix: add feature flag to header bar (@eschutho)
- [#16020](https://github.com/apache/superset/pull/16020) fix(explore): fix undefined error when using dnd (@kgabryje)
- [#16017](https://github.com/apache/superset/pull/16017) fix(native-filters): add support for versioned import/export (@villebro)
- [#15971](https://github.com/apache/superset/pull/15971) fix: Sort Metrics by ID DESC (order of creation) in the Datasource Editor (@geido)
- [#15994](https://github.com/apache/superset/pull/15994) fix(explore): highlight Run button correctly when query is stale (@suddjian)
- [#15991](https://github.com/apache/superset/pull/15991) fix: save DB with with query (@betodealmeida)
- [#15975](https://github.com/apache/superset/pull/15975) fix: eliminate cartesian product columns in pivot operator (@zhaoyongjie)
- [#15993](https://github.com/apache/superset/pull/15993) fix(dashboard): FilterBox JS error when datasets API is slow (@ktmud)
- [#15978](https://github.com/apache/superset/pull/15978) fix: three button styles to tertiary (@stellalc7)
- [#15992](https://github.com/apache/superset/pull/15992) fix(sqllab): revert #15891 to fix sqllab delay (@serenajiang)
- [#15986](https://github.com/apache/superset/pull/15986) fix: remove select width (@eschutho)
- [#15985](https://github.com/apache/superset/pull/15985) fix: Dataset field required 2 clicks to select when dashboard was empty (@michael-s-molina)
- [#15981](https://github.com/apache/superset/pull/15981) fix: DB add modal (@betodealmeida)
- [#15925](https://github.com/apache/superset/pull/15925) fix: Cancel alert is not appearing to all native filters modal fields (@michael-s-molina)
- [#15952](https://github.com/apache/superset/pull/15952) fix: Name change is not lost in left side of modal when return to edition after aborting changes (@michael-s-molina)
- [#15946](https://github.com/apache/superset/pull/15946) fix: Drag inner tab to outer tab while editing a dashboard will show an error (@michael-s-molina)
- [#15941](https://github.com/apache/superset/pull/15941) fix(dashboard): Add required message in the tooltip for the time range filter (@geido)
- [#15949](https://github.com/apache/superset/pull/15949) fix: Update gsheets mapping for documentation (@hughhhh)
- [#15933](https://github.com/apache/superset/pull/15933) fix(dashboard): Show the filters popover behind the dashboard header when scrolling (@geido)
- [#15921](https://github.com/apache/superset/pull/15921) fix(dashboard): check dashboard id before calling redux methods (@suddjian)
- [#15918](https://github.com/apache/superset/pull/15918) fix: Keep chosen columns sort option when changing a column (@geido)
- [#14969](https://github.com/apache/superset/pull/14969) fix: remove unused time column when update dataset (@zhaoyongjie)
- [#15891](https://github.com/apache/superset/pull/15891) fix: Select a query from History and Run (@graceguo-supercat)
- [#15585](https://github.com/apache/superset/pull/15585) fix: no roles being returned for anonymous user (@aspedrosa)
- [#15893](https://github.com/apache/superset/pull/15893) fix: dashboard url error when edit slug (@zhaoyongjie)
- [#15813](https://github.com/apache/superset/pull/15813) fix: Incorrect translations in Chinese in messages.po (@chuancyzhang)
- [#15841](https://github.com/apache/superset/pull/15841) fix(Explore): "Customize" tab rendering behavior (@geido)
- [#15890](https://github.com/apache/superset/pull/15890) fix(dashboard): Refresh Native Filters when Dashboard refreshes (@geido)
- [#15865](https://github.com/apache/superset/pull/15865) fix: Update Query Context on Explore loading (@hughhhh)
- [#15896](https://github.com/apache/superset/pull/15896) fix: Charts sort by in edit mode gets cut off (@michael-s-molina)
- [#15897](https://github.com/apache/superset/pull/15897) fix: Download as image of dashboard chart did not work (@michael-s-molina)
- [#15888](https://github.com/apache/superset/pull/15888) fix: Side menu of the dashboard component will scroll out of dashboard (@michael-s-molina)
- [#15889](https://github.com/apache/superset/pull/15889) fix: New time range filter initially show advance section (@michael-s-molina)
- [#15878](https://github.com/apache/superset/pull/15878) fix(15403): Re-enable canceling query for Hive and Presto (@john-bodley)
- [#15874](https://github.com/apache/superset/pull/15874) fix(15482): Propagate SupersetSecurityException error (@john-bodley)
- [#15848](https://github.com/apache/superset/pull/15848) fix: Ensure DatabaseErrorMessage works when extra is undefined (@john-bodley)
- [#15760](https://github.com/apache/superset/pull/15760) fix: Unable to create alerts/report after introduced creation_method (@duynguyenhoang)
- [#15869](https://github.com/apache/superset/pull/15869) fix: revert DEFAULT_SQLLAB_LIMIT to default (@betodealmeida)
- [#15840](https://github.com/apache/superset/pull/15840) fix(explore): show multi queries results in View query modal and data pane (@kgabryje)
- [#15709](https://github.com/apache/superset/pull/15709) fix(dashboard): Remove edit from url params when discarding changes (@geido)
- [#15820](https://github.com/apache/superset/pull/15820) fix: Render value immediately on SQL Editor for Calculated Columns in Edit Dataset modal (@geido)
- [#15817](https://github.com/apache/superset/pull/15817) fix: dataTablesPane cell render undefine when the dot in metric label (@zhaoyongjie)
- [#15803](https://github.com/apache/superset/pull/15803) fix: publish the new example dashboards (@betodealmeida)
- [#15828](https://github.com/apache/superset/pull/15828) fix: Report Schema fix (@AAfghahi)
- [#15821](https://github.com/apache/superset/pull/15821) fix(Explore): Cell height and spacing for Data panel (@geido)
- [#15786](https://github.com/apache/superset/pull/15786) fix: Bust chart cache when metric/column is changed (@etr2460)
- [#15804](https://github.com/apache/superset/pull/15804) fix: create fk model in benchmark script (@betodealmeida)
- [#15800](https://github.com/apache/superset/pull/15800) fix(dashboard): Add z-index to dashboard only when maximizing chart (@geido)
- [#15778](https://github.com/apache/superset/pull/15778) fix(dashboard): Add resize handles to right and bottom of component (@kgabryje)
- [#15715](https://github.com/apache/superset/pull/15715) fix: margin right on warning icon to 8px (@stellalc7)
- [#15770](https://github.com/apache/superset/pull/15770) fix: Edit physical dataset from the Edit Dataset modal (@geido)
- [#15781](https://github.com/apache/superset/pull/15781) fix(explore): dnd multiple columns doesn't work (@kgabryje)
- [#15752](https://github.com/apache/superset/pull/15752) fix: Revert "quote column name if db requires (#15465)" (@eschutho)
- [#15750](https://github.com/apache/superset/pull/15750) fix: Fixing `schemas_allowed_for_upload` field in database connection UX (@hughhhh)
- [#15710](https://github.com/apache/superset/pull/15710) fix(explore): Set label max width with Drag&Drop in Datasource panel (@geido)
- [#15732](https://github.com/apache/superset/pull/15732) fix(explore): wrong error message in conditional formatting (@kgabryje)
- [#15721](https://github.com/apache/superset/pull/15721) fix: Reduce js bundle size (@etr2460)
- [#15731](https://github.com/apache/superset/pull/15731) fix(explore): DndColumnSelect sometimes not working with multi: false (@kgabryje)
- [#15707](https://github.com/apache/superset/pull/15707) fix: use expected label in metrics map (@zhaoyongjie)
- [#15727](https://github.com/apache/superset/pull/15727) fix: Incorrect translations in the SQLLab in Chinese (@chuancyzhang)
- [#15610](https://github.com/apache/superset/pull/15610) fix: Add waiting time for chart animation when screenshot (@u-aiaa)
- [#15662](https://github.com/apache/superset/pull/15662) fix: Action icons on Antd Card in Homepage (@geido)
- [#15669](https://github.com/apache/superset/pull/15669) fix: no lazy translation on SupersetError (@betodealmeida)
- [#15680](https://github.com/apache/superset/pull/15680) fix: remove form title (@xiezhongfu)
- [#15668](https://github.com/apache/superset/pull/15668) fix(dashboard): Make the View Chart In Explore menu option a link (@suddjian)
- [#15634](https://github.com/apache/superset/pull/15634) fix: Show affected charts when interacting with the filters (@michael-s-molina)
- [#15661](https://github.com/apache/superset/pull/15661) fix(dashboard): Filters panel height (@geido)
- [#15670](https://github.com/apache/superset/pull/15670) fix: small fixes for Makefile (@betodealmeida)
- [#15650](https://github.com/apache/superset/pull/15650) fix: safe removal of empty tab with scoped filters (@rusackas)
- [#15645](https://github.com/apache/superset/pull/15645) fix: Fix test connection for extra fields (@hughhhh)
- [#15642](https://github.com/apache/superset/pull/15642) fix: change sslmode to require for Postgres (@hughhhh)
- [#15635](https://github.com/apache/superset/pull/15635) fix: Remove default values for engine and schemas (@hughhhh)
- [#15614](https://github.com/apache/superset/pull/15614) fix: duplicate DB names (@betodealmeida)
- [#15572](https://github.com/apache/superset/pull/15572) fix(native-filters): Fix required filters (@simcha90)
- [#15590](https://github.com/apache/superset/pull/15590) fix: avoid fetching favorite status for anonymous user (@aspedrosa)
- [#15623](https://github.com/apache/superset/pull/15623) fix: clear errors on closing DB Connection Modal (@AAfghahi)
- [#15620](https://github.com/apache/superset/pull/15620) fix: error page status codes (@etr2460)
- [#15619](https://github.com/apache/superset/pull/15619) fix: Database List Sorted (@AAfghahi)
- [#15609](https://github.com/apache/superset/pull/15609) fix: update db for expose in sqllab param (@hughhhh)
- [#15612](https://github.com/apache/superset/pull/15612) fix: Database Connection Modal - corrected tooltip alignment and info alert width (@lyndsiWilliams)
- [#15186](https://github.com/apache/superset/pull/15186) fix(dashboard-list): change name of dashboard is not reflected instantly (@stephenLYZ)
- [#15588](https://github.com/apache/superset/pull/15588) fix: Revert "fix(dashboard): Open "View Chart in Explore" in the same window" (@rusackas)
- [#15589](https://github.com/apache/superset/pull/15589) fix: Revert "chore: Bump @svgr/webpack to 5.5.0" (@rusackas)
- [#15594](https://github.com/apache/superset/pull/15594) fix: Hide Dynamic Link when editing (@AAfghahi)
- [#15595](https://github.com/apache/superset/pull/15595) fix: DBC UI tooltip aligment (@hughhhh)
- [#15587](https://github.com/apache/superset/pull/15587) fix: available endpoint showing specs without drivers (@betodealmeida)
- [#15581](https://github.com/apache/superset/pull/15581) fix: downloadasimage for dashboard (@pkdotson)
- [#15558](https://github.com/apache/superset/pull/15558) fix: revert #15405 #15435 #15444 (@betodealmeida)
- [#15546](https://github.com/apache/superset/pull/15546) fix: examples remove app context at the module level (@dpgaspar)
- [#15547](https://github.com/apache/superset/pull/15547) fix: indentation in helm chart (@mvoitko)
- [#15511](https://github.com/apache/superset/pull/15511) fix: variable context (@jeffreykoetsier)
- [#15526](https://github.com/apache/superset/pull/15526) fix: chartlist card-link to 404 (@xiezhongfu)
- [#15506](https://github.com/apache/superset/pull/15506) fix(native-filters): Fix native filters config modal (@simcha90)
- [#15527](https://github.com/apache/superset/pull/15527) fix: base requirements missing deprecation pkg (@dpgaspar)
- [#15534](https://github.com/apache/superset/pull/15534) fix: show all DBs in available endpoint (@betodealmeida)
- [#15465](https://github.com/apache/superset/pull/15465) fix: quote column name if db requires (@eschutho)
- [#15486](https://github.com/apache/superset/pull/15486) fix: Database connection R6 fixes (@lyndsiWilliams)
- [#15519](https://github.com/apache/superset/pull/15519) fix: Utilizing dashboard native filter feature flag (@john-bodley)
- [#15492](https://github.com/apache/superset/pull/15492) fix(sqllab): add new tab when add sql query (@stephenLYZ)
- [#15487](https://github.com/apache/superset/pull/15487) fix: GSheets supports JOINs (@betodealmeida)
- [#15498](https://github.com/apache/superset/pull/15498) fix(native-filters): chartsInScope were not recalculated in some cases (@kgabryje)
- [#15493](https://github.com/apache/superset/pull/15493) fix: skip set and log when use NullCache (@zhaoyongjie)
- [#15430](https://github.com/apache/superset/pull/15430) fix: bump Redis minor version (@mvoitko)
- [#15438](https://github.com/apache/superset/pull/15438) fix(native-filters): Fix clear all button (@simcha90)
- [#15318](https://github.com/apache/superset/pull/15318) fix: nvd3 bar chart sortby metric (@zhaoyongjie)
- [#15353](https://github.com/apache/superset/pull/15353) fix: raise unexpected error when orderby is empty (@zhaoyongjie)
- [#15455](https://github.com/apache/superset/pull/15455) fix(dashboard): native filters highlight with multiple tabs jumps to first tab (@kgabryje)
- [#15448](https://github.com/apache/superset/pull/15448) fix: refactor(feature_flags configurations): revert of "remove redundant addi… (@villebro)
- [#15446](https://github.com/apache/superset/pull/15446) fix(native-filters): filter type check when using experimental flag (@villebro)
- [#15422](https://github.com/apache/superset/pull/15422) fix: remove unnecessary app context on celery (@dpgaspar)
- [#15444](https://github.com/apache/superset/pull/15444) fix: import superset_config (@villebro)
- [#15314](https://github.com/apache/superset/pull/15314) fix(explore): switch to correct scheme registry for custom sequential color schemes (@sonyasha)
- [#15418](https://github.com/apache/superset/pull/15418) fix: add dashboard markdown id (@krsnik93)
- [#14778](https://github.com/apache/superset/pull/14778) fix(dashboard): Open "View Chart in Explore" in the same window (@geido)
- [#15435](https://github.com/apache/superset/pull/15435) fix: remove pydash merge (@betodealmeida)
- [#15328](https://github.com/apache/superset/pull/15328) fix: downgrade selenium log level on timeout (@dpgaspar)
- [#15429](https://github.com/apache/superset/pull/15429) fix: Select item when allowNewOptions is true and Enter is pressed (@michael-s-molina)
- [#15390](https://github.com/apache/superset/pull/15390) fix: Cascading filter popover widens automatically (@michael-s-molina)
- [#15400](https://github.com/apache/superset/pull/15400) fix: double click slq lab table cell (@graceguo-supercat)
- [#13467](https://github.com/apache/superset/pull/13467) fix: Typo in the `positionJSON` too large warning (@mrshu)
- [#15411](https://github.com/apache/superset/pull/15411) fix(native-filters): show human readable time grain label in indicator (@villebro)
- [#15297](https://github.com/apache/superset/pull/15297) fix: bootstrapScript in values.yaml of the helm chart (@mvoitko)
- [#15407](https://github.com/apache/superset/pull/15407) fix(regression): removed flask_app property can break derived class (@ofekisr)
- [#15373](https://github.com/apache/superset/pull/15373) fix: Enlarged select filter value (@michael-s-molina)
- [#15355](https://github.com/apache/superset/pull/15355) fix: follow up pr 15343 (@zhaoyongjie)
- [#15343](https://github.com/apache/superset/pull/15343) fix: missing orderby in query on the nvd3 timeseries chart (@zhaoyongjie)
- [#15351](https://github.com/apache/superset/pull/15351) fix(native-filters): show default text on filter scoping tree (@villebro)
- [#15339](https://github.com/apache/superset/pull/15339) fix(explore): Fix issue #15335 - Filter comparator losing focus (@m-ajay)
- [#15315](https://github.com/apache/superset/pull/15315) fix(api): handle undefined column type_generic (@serenajiang)
- [#15285](https://github.com/apache/superset/pull/15285) fix: Revert "build(webpack): use [contenthash] instead of [chunkhash]" (@etr2460)
- [#15319](https://github.com/apache/superset/pull/15319) fix: Capitalize time granularity weekdays (@john-bodley)
- [#15184](https://github.com/apache/superset/pull/15184) fix: datasource payload is incorrect (@betodealmeida)
- [#15324](https://github.com/apache/superset/pull/15324) fix(native-filters): Assume that temporal columns exist if column_types is undefined (@kgabryje)
- [#15305](https://github.com/apache/superset/pull/15305) fix(dashboard): Close FiltersBadge popover on window resize (@kgabryje)
- [#15207](https://github.com/apache/superset/pull/15207) fix: return query if it already exists (@eschutho)
- [#15301](https://github.com/apache/superset/pull/15301) fix: Revert "fix: SQL Lab show "Refetch Results" button while fetching new query results" (@graceguo-supercat)
- [#15238](https://github.com/apache/superset/pull/15238) fix: adding new feature flag (@AAfghahi)
- [#15295](https://github.com/apache/superset/pull/15295) fix(native-filters): improve time range filter performance (@villebro)
- [#14704](https://github.com/apache/superset/pull/14704) fix(helm): Use import_datasources.yaml, if it exists (@danielewood)
- [#15257](https://github.com/apache/superset/pull/15257) fix(native-filters): default value checkbox in config modal (@villebro)
- [#15228](https://github.com/apache/superset/pull/15228) fix: Filter bar not occupying 100% height when filter sets FF unset (@michael-s-molina)
- [#15173](https://github.com/apache/superset/pull/15173) fix(examples): calendar chart metric should be metrics (@villebro)
- [#15219](https://github.com/apache/superset/pull/15219) fix(native-filters): Fix Select `Default First Value` by clicked `Clear All` (@simcha90)
- [#15134](https://github.com/apache/superset/pull/15134) fix(dashboard): charts in nested tab is missing control and filter indicator (@stephenLYZ)
- [#15203](https://github.com/apache/superset/pull/15203) fix: fix dataset select list (@pkdotson)
- [#15198](https://github.com/apache/superset/pull/15198) fix: Fix dremio dialect not having a `driver` field (@hughhhh)
- [#15109](https://github.com/apache/superset/pull/15109) fix: SQL Lab show "Refetch Results" button while fetching new query results (@graceguo-supercat)
- [#15123](https://github.com/apache/superset/pull/15123) fix(logging): downgrade csv export log to debug (@nytai)
- [#14891](https://github.com/apache/superset/pull/14891) fix(aarch64): Bump pyarrow version to 4.0.1 (@danielewood)
- [#13614](https://github.com/apache/superset/pull/13614) fix(helm): Set working defaults for google OAuth2 example (@danielewood)
- [#15138](https://github.com/apache/superset/pull/15138) fix(dashboard): avoid duplicated toast component (@stephenLYZ)
- [#15007](https://github.com/apache/superset/pull/15007) fix(docker/helm): Make webserver query timeout adjustable (@danielewood)
- [#15181](https://github.com/apache/superset/pull/15181) fix: ignore errors in GetLog (@betodealmeida)
- [#15175](https://github.com/apache/superset/pull/15175) fix: trim string value of spaces in listview search (@pkdotson)
- [#15108](https://github.com/apache/superset/pull/15108) fix: add another wait for chart element (@eschutho)
- [#15160](https://github.com/apache/superset/pull/15160) fix: use npm v7 in docker compose (@suddjian)
- [#15163](https://github.com/apache/superset/pull/15163) fix: Presto postgres test (@betodealmeida)
- [#15172](https://github.com/apache/superset/pull/15172) fix(dashboard): Prevent rerendering View Query modal on window resize (@kgabryje)
- [#15155](https://github.com/apache/superset/pull/15155) fix: validate DB-specific parameters (@betodealmeida)
- [#15152](https://github.com/apache/superset/pull/15152) fix(typo): in contributing.md (@stellalc7)
- [#15100](https://github.com/apache/superset/pull/15100) fix: Test connection before starting on create transaction (@hughhhh)
- [#15140](https://github.com/apache/superset/pull/15140) fix: Filter overlay in dashboard when scrolling (@michael-s-molina)
- [#15146](https://github.com/apache/superset/pull/15146) fix(native-filters): Don't send unnecessary PUT request on dashboard render (@kgabryje)
- [#15139](https://github.com/apache/superset/pull/15139) fix: improve dashboard fullscreen text (@xiezhongfu)
- [#15091](https://github.com/apache/superset/pull/15091) fix(explore): fix y-axis lower bound 0 value (@stephenLYZ)
- [#15112](https://github.com/apache/superset/pull/15112) fix(native-filters): handle descending sorting correctly (@villebro)
- [#15090](https://github.com/apache/superset/pull/15090) fix(native-filters): fix Select filter crashing when changing filter type (@kgabryje)
- [#14959](https://github.com/apache/superset/pull/14959) fix: show custom errors in SQL Lab (@betodealmeida)
- [#14952](https://github.com/apache/superset/pull/14952) fix(explore): Explore page boolean filter is broken for Presto DB (@m-ajay)
- [#15084](https://github.com/apache/superset/pull/15084) fix(native-filters): empty label indicator (@villebro)
- [#15005](https://github.com/apache/superset/pull/15005) fix(native-filters): show error if default value query failed (@villebro)
- [#15015](https://github.com/apache/superset/pull/15015) fix(native-filters): remove hard-coded default time range (@villebro)
- [#15080](https://github.com/apache/superset/pull/15080) fix(dnd): add isExtra prop to Option (@villebro)
- [#15014](https://github.com/apache/superset/pull/15014) fix(datasets): consistent dataset list (@zhaoyongjie)
- [#15073](https://github.com/apache/superset/pull/15073) fix: disappearing tooltips on dashboards (@etr2460)
- [#15056](https://github.com/apache/superset/pull/15056) fix: confirm overwrite and password on import (@betodealmeida)
- [#15069](https://github.com/apache/superset/pull/15069) fix: move metric parsing to state instantiation (@eschutho)
- [#15047](https://github.com/apache/superset/pull/15047) fix: import metrics with extra (@betodealmeida)
- [#14960](https://github.com/apache/superset/pull/14960) fix: font regression in SQL Lab (@betodealmeida)
- [#15048](https://github.com/apache/superset/pull/15048) fix: edit BQ w/o encrypted_extra (@betodealmeida)
- [#15024](https://github.com/apache/superset/pull/15024) fix: Adds left padding to dashboard edit mode when filter bar is closed (@michael-s-molina)
- [#15038](https://github.com/apache/superset/pull/15038) fix(native-filters): show overridden chart name on scoping tree (@villebro)
- [#15033](https://github.com/apache/superset/pull/15033) fix(explore): Datepicker glitch on hover outside the modal (@kgabryje)
- [#14878](https://github.com/apache/superset/pull/14878) fix: Empty tab component in Dashboard cannot be deleted (@geido)
- [#14954](https://github.com/apache/superset/pull/14954) fix(explore): Long labels should wrap to new line (@geido)
- [#15031](https://github.com/apache/superset/pull/15031) fix: display all metric results in editor (@eschutho)
- [#15025](https://github.com/apache/superset/pull/15025) fix(dashboard): custom css should be removed on unmount (@suddjian)
- [#14995](https://github.com/apache/superset/pull/14995) fix: adding additional configs and colors for queryHistory (@AAfghahi)
- [#15012](https://github.com/apache/superset/pull/15012) fix(native-filters): avoid double load on select initialization (@villebro)
- [#14996](https://github.com/apache/superset/pull/14996) fix: apply template_params on external_metadata (@betodealmeida)
- [#14979](https://github.com/apache/superset/pull/14979) fix: toggle fullscreen on the dashboard (@zhaoyongjie)
- [#14984](https://github.com/apache/superset/pull/14984) fix(native-filters): Fix "undefined" error after editing a filter (@kgabryje)
- [#14982](https://github.com/apache/superset/pull/14982) fix(native-filters): remove implied fetch predicate (@villebro)
- [#14980](https://github.com/apache/superset/pull/14980) fix(native-filters): update cascaded filter state on change (@villebro)
- [#14900](https://github.com/apache/superset/pull/14900) fix(filter box): replace freeform where clause with ilike (@villebro)
- [#14971](https://github.com/apache/superset/pull/14971) fix: renamed sqllab filters to _filters (@cccs-jc)
- [#14964](https://github.com/apache/superset/pull/14964) fix(native-filters): cascading filters not rendering in tab (@villebro)
- [#14953](https://github.com/apache/superset/pull/14953) fix: additional safeguard for ResultSet (@AAfghahi)
- [#14945](https://github.com/apache/superset/pull/14945) fix: time parser truncate to first day of year/month (@zhaoyongjie)
- [#14894](https://github.com/apache/superset/pull/14894) fix: is_temporal should overwrite is_dttm (@zhaoyongjie)
- [#14902](https://github.com/apache/superset/pull/14902) fix: Remove Icon and align close button on DatasetModal (@AAfghahi)
- [#14885](https://github.com/apache/superset/pull/14885) fix: Query History cosmetic issues (@AAfghahi)
- [#14840](https://github.com/apache/superset/pull/14840) fix: Full width tabs flaky behavior (@geido)
- [#14903](https://github.com/apache/superset/pull/14903) fix: permission denied when starting docker with uid 1000 (@shawnzhu)
- [#14855](https://github.com/apache/superset/pull/14855) fix: leverage qs to create new tab (@hughhhh)
- [#14888](https://github.com/apache/superset/pull/14888) fix: Redshift parameters not rendering (@hughhhh)
- [#14839](https://github.com/apache/superset/pull/14839) fix(explore): Icons in "Customize Columns" in "Customize" tab break to a new line (@geido)
- [#14890](https://github.com/apache/superset/pull/14890) fix: time range in filter box error (@zhaoyongjie)
- [#14851](https://github.com/apache/superset/pull/14851) fix: show error on invalid import (@betodealmeida)
- [#14687](https://github.com/apache/superset/pull/14687) fix(explore): Don't run data panel query when control panel has errors (@kgabryje)
- [#14849](https://github.com/apache/superset/pull/14849) fix: DatabaseConnection Modal Margin Bottom (@AAfghahi)
- [#14756](https://github.com/apache/superset/pull/14756) fix: small code review fix (@cccs-jc)
- [#14816](https://github.com/apache/superset/pull/14816) fix(native-filter): Default value multi-select height in native filters (@geido)
- [#14841](https://github.com/apache/superset/pull/14841) fix: filterbox apply single value (@zhaoyongjie)
- [#14838](https://github.com/apache/superset/pull/14838) fix(native-filters): remove indicators outside scope (@villebro)
- [#14852](https://github.com/apache/superset/pull/14852) fix: report dropdown (@AAfghahi)
- [#14850](https://github.com/apache/superset/pull/14850) fix: Big Query Edit Form (@hughhhh)
- [#14813](https://github.com/apache/superset/pull/14813) fix: the calculated columns explicit type convert into date (@zhaoyongjie)
- [#14736](https://github.com/apache/superset/pull/14736) fix(docker): superset permissions and firefox config (@dpgaspar)
- [#14827](https://github.com/apache/superset/pull/14827) fix: OpenAPI boolean type (@betodealmeida)
- [#14822](https://github.com/apache/superset/pull/14822) fix: Fix Big Query API for POST w/ no parameters (@hughhhh)
- [#14489](https://github.com/apache/superset/pull/14489) fix: set table name width to not hide icons when name is too long (@einatbar)
- [#14788](https://github.com/apache/superset/pull/14788) fix(native-filters): fix loop caused by external state handler (@villebro)
- [#14785](https://github.com/apache/superset/pull/14785) fix(native-filters): Manage default value of filters by superset (@simcha90)
- [#14741](https://github.com/apache/superset/pull/14741) fix: Additional ResultSet tests (@AAfghahi)
- [#14528](https://github.com/apache/superset/pull/14528) fix: make dataset list sort case insensitive (@mistercrunch)
- [#14790](https://github.com/apache/superset/pull/14790) fix: use encodeURIComponent when getting table metadata (@betodealmeida)
- [#14787](https://github.com/apache/superset/pull/14787) fix: ensure engine is outside parameters (@betodealmeida)
- [#14771](https://github.com/apache/superset/pull/14771) fix: database modal should close on connect with tab layout (@eschutho)
- [#14770](https://github.com/apache/superset/pull/14770) fix: extra query in Dashboard when native filter enabled (@zhaoyongjie)
- [#14779](https://github.com/apache/superset/pull/14779) fix(native filters): Fix explore state - backend pagination checkbox in table (@simcha90)
- [#14737](https://github.com/apache/superset/pull/14737) fix(explore): DndColumnSelect not handling controls with "multi: false" (@kgabryje)
- [#14766](https://github.com/apache/superset/pull/14766) fix: add DB should not say it's Postgres (@betodealmeida)
- [#14759](https://github.com/apache/superset/pull/14759) fix: save non-parameter DBs (@betodealmeida)
- [#14717](https://github.com/apache/superset/pull/14717) fix(explore): Icons width (@geido)
- [#14742](https://github.com/apache/superset/pull/14742) fix: Set g.user to anon user in Celery (@benjreinhart)
- [#14702](https://github.com/apache/superset/pull/14702) fix: Use g.user for getting the user_id for async queries (@benjreinhart)
- [#14689](https://github.com/apache/superset/pull/14689) fix: Fixes right menu layout in different screen sizes (@michael-s-molina)
- [#14734](https://github.com/apache/superset/pull/14734) fix(dashboard): multiple query trigger when native filter enabled (@zhaoyongjie)
- [#14748](https://github.com/apache/superset/pull/14748) fix(pivot): default missing series to NULL_STRING (@villebro)
- [#14725](https://github.com/apache/superset/pull/14725) fix: homepage card layout (@pkdotson)
- [#14739](https://github.com/apache/superset/pull/14739) fix(native-filters): Unable to clear default value in native select filter (@michael-s-molina)
- [#14722](https://github.com/apache/superset/pull/14722) fix(sqllab): don't store user in localstorage (@suddjian)
- [#14708](https://github.com/apache/superset/pull/14708) fix: reindex when combine metric in legacy pivot table (@zhaoyongjie)
- [#14221](https://github.com/apache/superset/pull/14221) fix(explore): fix clearing select data causes popover dismiss (@stephenLYZ)
- [#14719](https://github.com/apache/superset/pull/14719) fix: check limiting factor on query results (@eschutho)
- [#14679](https://github.com/apache/superset/pull/14679) fix(explore): add margin to the adhoc filter value select (@suddjian)
- [#14701](https://github.com/apache/superset/pull/14701) fix(explore): checkbox form control formatting (@suddjian)
- [#14657](https://github.com/apache/superset/pull/14657) fix(explore): Filter box full chart height (@geido)
- [#14529](https://github.com/apache/superset/pull/14529) fix(Explore): fixes broken layout of tooltips (@rusackas)
- [#14698](https://github.com/apache/superset/pull/14698) fix: import dataset with extra; Vertica URI (@betodealmeida)
- [#14567](https://github.com/apache/superset/pull/14567) fix(explore): #10098 boolean filter not working (@m-ajay)
- [#14664](https://github.com/apache/superset/pull/14664) fix: Fixes email body when sharing a chart by email (@michael-s-molina)
- [#14651](https://github.com/apache/superset/pull/14651) fix(sqllab): fix error message (@stephenLYZ)
- [#14656](https://github.com/apache/superset/pull/14656) fix: Tooltip position of table title (@geido)
- [#14663](https://github.com/apache/superset/pull/14663) fix(explore): Tag component overlap (@geido)
- [#14665](https://github.com/apache/superset/pull/14665) fix(explore): Fix column number calculation (@geido)
- [#14580](https://github.com/apache/superset/pull/14580) fix: nav submenu dropdown styles (@pkdotson)
- [#14674](https://github.com/apache/superset/pull/14674) fix: Fixes group by control icon colors (@michael-s-molina)
- [#14655](https://github.com/apache/superset/pull/14655) fix: Clear search on deleting search keyword (@geido)
- [#14631](https://github.com/apache/superset/pull/14631) fix: fix submenu header double line (@pkdotson)
- [#14648](https://github.com/apache/superset/pull/14648) fix: roles undefined on public dashboards (@suddjian)
- [#14636](https://github.com/apache/superset/pull/14636) fix: DB parameter validation API (@betodealmeida)
- [#14626](https://github.com/apache/superset/pull/14626) fix(dashboard): check edit permissions correctly on frontend (@suddjian)
- [#14624](https://github.com/apache/superset/pull/14624) fix: Fixes top level tabs and automatic scroll (@michael-s-molina)
- [#14609](https://github.com/apache/superset/pull/14609) fix(explore): Missing border in the Popover SQL Editor (@geido)
- [#14120](https://github.com/apache/superset/pull/14120) fix: do not render favorite favStars and filters for anonymous user (@trepmag)
- [#14637](https://github.com/apache/superset/pull/14637) fix: Removing specific column widths, letting things flex naturally. (@rusackas)
- [#14478](https://github.com/apache/superset/pull/14478) fix: fix adhocpopovers tab animate. (@pkdotson)
- [#14627](https://github.com/apache/superset/pull/14627) fix: Pin itsdangerous (@john-bodley)
- [#14557](https://github.com/apache/superset/pull/14557) fix: Consolidating dropdown/NavDropdown user experience (removing React-bootstrap, using AntD) (@michael-s-molina)
- [#14525](https://github.com/apache/superset/pull/14525) fix: add action buttons to time series column popover (@michael-s-molina)
- [#14618](https://github.com/apache/superset/pull/14618) fix(explore): Filters Tooltip is not showing the full content (@geido)
- [#14585](https://github.com/apache/superset/pull/14585) fix: don't show busted label for unknown data types (@rusackas)
- [#14597](https://github.com/apache/superset/pull/14597) fix: error icon spacing in explore (@pkdotson)
- [#14579](https://github.com/apache/superset/pull/14579) fix: properly keep state on queryEditorSetSql on tabstateview PUT (@hughhhh)
- [#14584](https://github.com/apache/superset/pull/14584) fix: bring back dashboard perf logger (@graceguo-supercat)
- [#14582](https://github.com/apache/superset/pull/14582) fix: Adds space under dataset change warning (@rusackas)
- [#14566](https://github.com/apache/superset/pull/14566) fix: Menu does not appear on scroll in Dashboard (@geido)
- [#14551](https://github.com/apache/superset/pull/14551) fix: Column name and icons alignment in the Datasource Panel (Explore) (@geido)
- [#14561](https://github.com/apache/superset/pull/14561) fix: select country in examples chart (@betodealmeida)
- [#14495](https://github.com/apache/superset/pull/14495) fix: White space between Chart and Data panel in Explore (@geido)
- [#14539](https://github.com/apache/superset/pull/14539) fix(viz): apply uniform sorting to all nvd3 timeseries charts (@villebro)
- [#14544](https://github.com/apache/superset/pull/14544) fix: flaky test on reports (@dpgaspar)
- [#14531](https://github.com/apache/superset/pull/14531) fix: bringing metric type icon styles into SelectControl (@rusackas)
- [#14492](https://github.com/apache/superset/pull/14492) fix: Add extra check to loggerMiddleware (@geido)
- [#14506](https://github.com/apache/superset/pull/14506) fix: disable pylint error breaking CI (@hughhhh)
- [#14498](https://github.com/apache/superset/pull/14498) fix: Query History (@AAfghahi)
- [#14490](https://github.com/apache/superset/pull/14490) fix: Fix #13831 (@michael-s-molina)
- [#14467](https://github.com/apache/superset/pull/14467) fix(dashboard): Prevent char overflow when displaying chart description (@m-ajay)
- [#14481](https://github.com/apache/superset/pull/14481) fix: Explore layout is sometimes too short for the viewport (@rusackas)
- [#14471](https://github.com/apache/superset/pull/14471) fix: dashboard datasources filter None (@etr2460)
- [#14465](https://github.com/apache/superset/pull/14465) fix: Ignore database extra fields when saving (@michael-s-molina)
- [#14466](https://github.com/apache/superset/pull/14466) fix: Revert "refactor: split db modal file (#14436)" (@eschutho)
- [#13713](https://github.com/apache/superset/pull/13713) fix(explore): CSV Export Permission is incorrect on Explore page (@duynguyenhoang)
- [#14450](https://github.com/apache/superset/pull/14450) fix: dashboard changed on calculation (@etr2460)
- [#14399](https://github.com/apache/superset/pull/14399) fix(logging): log unexpected exceptions as exceptions (@nytai)
- [#14416](https://github.com/apache/superset/pull/14416) fix: fixing mysql error message (@AAfghahi)
- [#14435](https://github.com/apache/superset/pull/14435) fix: Change relationship filter for datasets to relationOneMany (@hughhhh)
- [#14348](https://github.com/apache/superset/pull/14348) fix: bootstrap data permissions (@dpgaspar)
- [#14360](https://github.com/apache/superset/pull/14360) fix: parse simple string error message values (@samtfm)
**Others**
- [#16251](https://github.com/apache/superset/pull/16251) chore: bump superset-ui packages to 0.17.84 (@pkdotson)
- [#16186](https://github.com/apache/superset/pull/16186) chore: bump superset-ui to 0.17.81 (@villebro)
- [#16174](https://github.com/apache/superset/pull/16174) chore: switch back tag name to popular from highly-used (@junlincc)
- [#16116](https://github.com/apache/superset/pull/16116) chore(explore): change dnd placeholders (@kgabryje)
- [#16133](https://github.com/apache/superset/pull/16133) chore: add stats logging to thumbnail api (@mistercrunch)
- [#16086](https://github.com/apache/superset/pull/16086) chore(explore): bump deckgl to 0.4.9 (@kgabryje)
- [#15942](https://github.com/apache/superset/pull/15942) chore(explore): Create new entrypoints for Echarts Timeseries (@kgabryje)
- [#16058](https://github.com/apache/superset/pull/16058) chore: bump superset-ui to 0.17.78 (@villebro)
- [#16039](https://github.com/apache/superset/pull/16039) chore: Revert Celery 5 upgrade (@robdiciuccio)
- [#16029](https://github.com/apache/superset/pull/16029) chore: Use datetime.timedelta for defining durations in config (@john-bodley)
- [#16034](https://github.com/apache/superset/pull/16034) chore: bump superset-ui to 0.17.77 (@villebro)
- [#16025](https://github.com/apache/superset/pull/16025) chore: Auto focus the viz gallery select (@michael-s-molina)
- [#16032](https://github.com/apache/superset/pull/16032) docs: update api 2 (@nytai)
- [#15927](https://github.com/apache/superset/pull/15927) chore: Bump Celery to 5.1.2 (@john-bodley)
- [#15936](https://github.com/apache/superset/pull/15936) docs: add instructions for how to connect to local database from docker container (@sarthak)
- [#15950](https://github.com/apache/superset/pull/15950) docs: add Hydrolix to users list (@dsztykman)
- [#16005](https://github.com/apache/superset/pull/16005) docs: update api (@nytai)
- [#15958](https://github.com/apache/superset/pull/15958) chore: change dropdown icons from horizontal to vertical (@pkdotson)
- [#15987](https://github.com/apache/superset/pull/15987) chore: Add feature flags to bug report template (@suddjian)
- [#15929](https://github.com/apache/superset/pull/15929) chore: Changes the main menu order as defined in SIP-34 (@michael-s-molina)
- [#15931](https://github.com/apache/superset/pull/15931) docs: add .asf.yaml (@nytai)
- [#15823](https://github.com/apache/superset/pull/15823) chore: Mypy fix **kwargs type (@john-bodley)
- [#15923](https://github.com/apache/superset/pull/15923) chore: bump superset-ui to 0.17.74 (@villebro)
- [#15900](https://github.com/apache/superset/pull/15900) chore: small viz gallery tweaks (@suddjian)
- [#15907](https://github.com/apache/superset/pull/15907) chore: Improves the layout of the VizTypeGallery component (@michael-s-molina)
- [#15904](https://github.com/apache/superset/pull/15904) docs: Slack integration requires "chat:write" permissions scope (@jpuris)
- [#15901](https://github.com/apache/superset/pull/15901) chore: bumping superset-ui 0.17.73 (@zhaoyongjie)
- [#15724](https://github.com/apache/superset/pull/15724) chore: freeze the UUID of examples DB (@betodealmeida)
- [#15868](https://github.com/apache/superset/pull/15868) chore: implement new mockup to the new viz gallery (2nd iteration) (@stephenLYZ)
- [#15895](https://github.com/apache/superset/pull/15895) chore: bumping superset-ui 0.17.72 (@zhaoyongjie)
- [#15885](https://github.com/apache/superset/pull/15885) chore: Adds the tests that need to be coded for the Select component (@michael-s-molina)
- [#15847](https://github.com/apache/superset/pull/15847) chore: bump typescript (@eschutho)
- [#15799](https://github.com/apache/superset/pull/15799) chore: Adds lazy loading and fetchOnlyOnSearch to the Select component (@michael-s-molina)
- [#15839](https://github.com/apache/superset/pull/15839) chore: bump superset-ui to 0.17.71 (@kgabryje)
- [#15802](https://github.com/apache/superset/pull/15802) chore: Changes the pagination API of the Select component (@michael-s-molina)
- [#15787](https://github.com/apache/superset/pull/15787) chore: remove unnecessary deps (@betodealmeida)
- [#15757](https://github.com/apache/superset/pull/15757) chore: Enforce Mypy for non-tests (@john-bodley)
- [#15775](https://github.com/apache/superset/pull/15775) chore: Pylint reenable bad-option-value message (@john-bodley)
- [#15772](https://github.com/apache/superset/pull/15772) chore: Pylint reenable non-problematic messages (@john-bodley)
- [#15788](https://github.com/apache/superset/pull/15788) chore: remove `retry` dependency in favor of `backoff` (@betodealmeida)
- [#15480](https://github.com/apache/superset/pull/15480) chore: Improves the Select component UI/UX - iteration 4 (@michael-s-molina)
- [#15794](https://github.com/apache/superset/pull/15794) docs: Adding Sunbird to users list (@kumarks1122)
- [#15795](https://github.com/apache/superset/pull/15795) chore: bump superset-ui 0.17.70 (@zhaoyongjie)
- [#15734](https://github.com/apache/superset/pull/15734) chore: Add tags to the new viz gallery (@zhaoyongjie)
- [#15776](https://github.com/apache/superset/pull/15776) docs: Update INTHEWILD.md (@MaiTiano)
- [#15555](https://github.com/apache/superset/pull/15555) chore: Select component refactoring - ColorSchemeControl - Iteration 5 (@geido)
- [#15571](https://github.com/apache/superset/pull/15571) chore: Select component refactoring - DateFilterControl - Iteration 5 (@geido)
- [#15753](https://github.com/apache/superset/pull/15753) chore: Reformat Pylint disable checks to multiline (@john-bodley)
- [#15767](https://github.com/apache/superset/pull/15767) chore: bump superet-ui 0.17.69 (@zhaoyongjie)
- [#15742](https://github.com/apache/superset/pull/15742) chore(explore): Bump plugin-chart-pivot-table (@kgabryje)
- [#15718](https://github.com/apache/superset/pull/15718) docs: update dev superset version (@nytai)
- [#15699](https://github.com/apache/superset/pull/15699) perf(dashboard): make loading datasets non-blocking (@ktmud)
- [#15714](https://github.com/apache/superset/pull/15714) chore: better copy for SQL dialog (@betodealmeida)
- [#15690](https://github.com/apache/superset/pull/15690) refactor: remove old Icon component (@pkdotson)
- [#15647](https://github.com/apache/superset/pull/15647) refactor: icon to icons for IconButton and Header component (@pkdotson)
- [#15688](https://github.com/apache/superset/pull/15688) chore: Removes unnecessary uses of preselectNativeFilters (@michael-s-molina)
- [#15648](https://github.com/apache/superset/pull/15648) perf: Refactor Dashboard.datasets_trimmed_for_slices et al. (@john-bodley)
- [#15599](https://github.com/apache/superset/pull/15599) chore: Add documentation for DB Connection UI (@hughhhh)
- [#15646](https://github.com/apache/superset/pull/15646) chore: Add metrics_b as viable metric form data parameter (@john-bodley)
- [#15665](https://github.com/apache/superset/pull/15665) refactor: icon to icons for Querytable, datasource test, and copyclipboard story (@pkdotson)
- [#15574](https://github.com/apache/superset/pull/15574) docs: Add section about updating Python requirements (@john-bodley)
- [#15583](https://github.com/apache/superset/pull/15583) chore: Preserve native filters selection after refresh (@michael-s-molina)
- [#15643](https://github.com/apache/superset/pull/15643) refactor: icon to icons for navbar (@pkdotson)
- [#15644](https://github.com/apache/superset/pull/15644) chore: Reverts reset form in native filters (@michael-s-molina)
- [#15633](https://github.com/apache/superset/pull/15633) chore: bump superset-ui/plugin-chart-echarts 0.17.65 (@zhaoyongjie)
- [#15618](https://github.com/apache/superset/pull/15618) refactor: icon to icons for syntaxhighlighter and querylist components (@pkdotson)
- [#15593](https://github.com/apache/superset/pull/15593) refactor: icon to icons for sqllab (@pkdotson)
- [#15624](https://github.com/apache/superset/pull/15624) refactor: icon to icons for homepage and card compompents (@pkdotson)
- [#15113](https://github.com/apache/superset/pull/15113) docs: fix typos in docs (@jacobhjkim)
- [#15410](https://github.com/apache/superset/pull/15410) docs: Small addition in add new databases with docker (@JavierLopezT)
- [#15607](https://github.com/apache/superset/pull/15607) docs(docker): update README (@jhult)
- [#15579](https://github.com/apache/superset/pull/15579) refactor: icon to icons for toasts component (@pkdotson)
- [#15611](https://github.com/apache/superset/pull/15611) refactor: icon to icons for annotations & css templates modals (@pkdotson)
- [#15597](https://github.com/apache/superset/pull/15597) refactor: icon to icons for Alert & Reports (@pkdotson)
- [#15608](https://github.com/apache/superset/pull/15608) chore: update dataset count badge and tash icon sizing (@andrewbastian)
- [#15615](https://github.com/apache/superset/pull/15615) chore: bumping superset-ui 0.17.64 (@zhaoyongjie)
- [#15359](https://github.com/apache/superset/pull/15359) refactor(annotation): improve annotation modal (@stephenLYZ)
- [#15568](https://github.com/apache/superset/pull/15568) refactor: icon to icons for controls (@pkdotson)
- [#15567](https://github.com/apache/superset/pull/15567) refactor: icon to icons for sliceheader component (@pkdotson)
- [#15591](https://github.com/apache/superset/pull/15591) chore: results of npm audit fix on superset-websocket (@rusackas)
- [#15557](https://github.com/apache/superset/pull/15557) refactor: icon to icons for filterbadge components (@pkdotson)
- [#15542](https://github.com/apache/superset/pull/15542) chore: add changed_on_delta_humanized field on dashboard schema (@zhaoyongjie)
- [#15528](https://github.com/apache/superset/pull/15528) refactor: icon to icons for nativeFilter components (@pkdotson)
- [#15575](https://github.com/apache/superset/pull/15575) docs: updated dremio connection string (@srinify)
- [#15551](https://github.com/apache/superset/pull/15551) refactor: icon to icons for tabs (@pkdotson)
- [#15560](https://github.com/apache/superset/pull/15560) refactor: icon to icons for headeractionsdropdown (@pkdotson)
- [#15550](https://github.com/apache/superset/pull/15550) chore: Enhance Select component (@geido)
- [#15540](https://github.com/apache/superset/pull/15540) refactor: type hints should not be load in runtime (@ofekisr)
- [#15461](https://github.com/apache/superset/pull/15461) refactor: icon to icons for popoversection (@pkdotson)
- [#15521](https://github.com/apache/superset/pull/15521) chore: add metadata for filter box plugin (@suddjian)
- [#15533](https://github.com/apache/superset/pull/15533) refactor: migrate to icons for searchinput icons (@pkdotson)
- [#15523](https://github.com/apache/superset/pull/15523) chore(release-docs): svn update after svn commit (@amitmiran137)
- [#15514](https://github.com/apache/superset/pull/15514) chore(docs): update DASHBOARD_RBAC (@amitmiran137)
- [#15451](https://github.com/apache/superset/pull/15451) refactor: icon to icons for popovercomponent (@pkdotson)
- [#15384](https://github.com/apache/superset/pull/15384) refactor(dashboard): [chart-maximize-mode]put chart full-size state in redux (@stephenLYZ)
- [#15408](https://github.com/apache/superset/pull/15408) refactor: icon to icons for listviewcomponent (@pkdotson)
- [#15398](https://github.com/apache/superset/pull/15398) refactor: icon to icons for infotooltip component (@pkdotson)
- [#15473](https://github.com/apache/superset/pull/15473) refactor(tests): decouple unittests from integration tests (@ofekisr)
- [#14102](https://github.com/apache/superset/pull/14102) docs: improve docs on running tests locally (@EBoisseauSierra)
- [#15365](https://github.com/apache/superset/pull/15365) chore(native-filters): remove instant filtering option (@villebro)
- [#15467](https://github.com/apache/superset/pull/15467) refactor: Moving get_user_datasources to security manager (@john-bodley)
- [#15466](https://github.com/apache/superset/pull/15466) refactor: icon to icons for refreshlabel (@pkdotson)
- [#15437](https://github.com/apache/superset/pull/15437) chore: simplify errors and issue codes (@betodealmeida)
- [#15424](https://github.com/apache/superset/pull/15424) perf(dashboard): Improve perf of highlighting charts in scope of active filter (@kgabryje)
- [#15413](https://github.com/apache/superset/pull/15413) chore(docs): Manage access to Dashboards (@amitmiran137)
- [#14994](https://github.com/apache/superset/pull/14994) docs: add missing logging import (@Bonifacio2)
- [#14630](https://github.com/apache/superset/pull/14630) docs: fix wrong filename mentioned in INSTALL.md (@jeverling)
- [#15401](https://github.com/apache/superset/pull/15401) refactor: icon to icons for lastupdated component (@pkdotson)
- [#15397](https://github.com/apache/superset/pull/15397) refactor: icon to icons for inderteminatecheckbox icon (@pkdotson)
- [#15433](https://github.com/apache/superset/pull/15433) chore: Uses mixed case for native filters headers (@michael-s-molina)
- [#14880](https://github.com/apache/superset/pull/14880) chore: Update CONTRIBUTING.md (@Ibby-B)
- [#15425](https://github.com/apache/superset/pull/15425) refactor(feature_flags configurations): remove defaults values (@ofekisr)
- [#15405](https://github.com/apache/superset/pull/15405) chore(refactor): load configuration and merge recursively (@ofekisr)
- [#15417](https://github.com/apache/superset/pull/15417) chore: add DASHBOARD_FILTERS_EXPERIMENTAL ff to BE default value (@amitmiran137)
- [#14278](https://github.com/apache/superset/pull/14278) docs: Update SIP template (@john-bodley)
- [#14908](https://github.com/apache/superset/pull/14908) chore: Add Slovenian (sl_SI) translation (@dkrat7)
- [#14572](https://github.com/apache/superset/pull/14572) docs: release documentation for 1.2 (@garden-of-delete)
- [#15392](https://github.com/apache/superset/pull/15392) chore: remove unused icon from ImportModal (@pkdotson)
- [#14174](https://github.com/apache/superset/pull/14174) chore: Rewrites dashboard IconButton component (@michael-s-molina)
- [#15265](https://github.com/apache/superset/pull/15265) chore: Migrates ControlHeader icons (@michael-s-molina)
- [#15363](https://github.com/apache/superset/pull/15363) chore: Improves the Select component UI/UX - iteration 3 (@michael-s-molina)
- [#15371](https://github.com/apache/superset/pull/15371) refactor: icon to icons for favestar component (@pkdotson)
- [#15380](https://github.com/apache/superset/pull/15380) refactor: icon to icons infotooltip (@pkdotson)
- [#15320](https://github.com/apache/superset/pull/15320) chore: Add Druid SQL time grains for parity with Druid NoSQL (@john-bodley)
- [#15349](https://github.com/apache/superset/pull/15349) chore: Bump @svgr/webpack to 5.5.0 (@kgabryje)
- [#15341](https://github.com/apache/superset/pull/15341) refactor: icon to icons in erroralert component (@pkdotson)
- [#15336](https://github.com/apache/superset/pull/15336) refactor: icon to icons for basicerror componenet (@pkdotson)
- [#15200](https://github.com/apache/superset/pull/15200) style(sqllab): update table count styling (@stellalc7)
- [#15306](https://github.com/apache/superset/pull/15306) refactor: Icon to icons for certifiedIcon (@pkdotson)
- [#15245](https://github.com/apache/superset/pull/15245) docs: fix hyperlink (@kamalkeshavani-aiinside)
- [#15309](https://github.com/apache/superset/pull/15309) refactor: migrate icon to icons in tablecollection (@pkdotson)
- [#15240](https://github.com/apache/superset/pull/15240) refactor: icon to icons in DatasourceEditor (@pkdotson)
- [#15235](https://github.com/apache/superset/pull/15235) chore: Improves the Select component UI/UX - iteration 2 (@michael-s-molina)
- [#15281](https://github.com/apache/superset/pull/15281) chore: encapsulate flask app into superset app (@ofekisr)
- [#15278](https://github.com/apache/superset/pull/15278) refactor: move SupersetAppInitializer to specific initialization package (@ofekisr)
- [#15223](https://github.com/apache/superset/pull/15223) chore: move calling configure_feature_flags more earlier (@ofekisr)
- [#14691](https://github.com/apache/superset/pull/14691) chore: add dry false config to CleanWebpackPlugin (@MatanBobi)
- [#15040](https://github.com/apache/superset/pull/15040) chore(docs): update releasing docs (@amitmiran137)
- [#15261](https://github.com/apache/superset/pull/15261) refactor: icon to icons for alerts component (@pkdotson)
- [#14956](https://github.com/apache/superset/pull/14956) chore: Add height/width TrashIcon SVG(18px/18px)-Edit Dataset modal (@andrewbastian)
- [#15233](https://github.com/apache/superset/pull/15233) docs: fix naming: Flask-Cache -> Flask-Caching (@shawnzhu)
- [#15220](https://github.com/apache/superset/pull/15220) chore: bump superset-ui to 0.17.58 (@villebro)
- [#14463](https://github.com/apache/superset/pull/14463) refactor: refactor Icon to Icons in sqlEditor component (@pkdotson)
- [#15192](https://github.com/apache/superset/pull/15192) chore: Changes the dashboard highlight color when selecting a filter (@michael-s-molina)
- [#15194](https://github.com/apache/superset/pull/15194) chore: Makes the refresh button only appear when the filter has a datasource (@michael-s-molina)
- [#15178](https://github.com/apache/superset/pull/15178) chore: Allows the user to force fetch the default values (@michael-s-molina)
- [#15115](https://github.com/apache/superset/pull/15115) chore: Improves the native filters bar layout (@michael-s-molina)
- [#14978](https://github.com/apache/superset/pull/14978) refactor: Convert TableElement to TypeScript (@corbinrobb)
- [#15147](https://github.com/apache/superset/pull/15147) refactor(explore): remove side effect in render from CalendarFrame for DatePicker (@MatanBobi)
- [#15168](https://github.com/apache/superset/pull/15168) chore: Bump plugin-chart-pivot-table to 0.17.57 (@kgabryje)
- [#15141](https://github.com/apache/superset/pull/15141) chore: Scrolls top when opening a select filter (@michael-s-molina)
- [#15156](https://github.com/apache/superset/pull/15156) chore: Disable comment logging for ephemeral envs (@robdiciuccio)
- [#15093](https://github.com/apache/superset/pull/15093) chore: update documentation for frontend feature flags (@etr2460)
- [#14823](https://github.com/apache/superset/pull/14823) chore: Homepage cleanup (@pkdotson)
- [#14928](https://github.com/apache/superset/pull/14928) docs: add Ontruck to users list (@rc-ontruck)
- [#15062](https://github.com/apache/superset/pull/15062) refactor: stop using deprecated celery task API (@shawnzhu)
- [#15078](https://github.com/apache/superset/pull/15078) chore: rename 'tables' to 'datasets' in error message (@mistercrunch)
- [#15017](https://github.com/apache/superset/pull/15017) chore: Improves the native filters UI/UX - iteration 7 (@michael-s-molina)
- [#15064](https://github.com/apache/superset/pull/15064) chore: Add 'fetching' status to QueryStatus (@AAfghahi)
- [#14942](https://github.com/apache/superset/pull/14942) build(webpack): use [contenthash] instead of [chunkhash] (@nytai)
- [#15019](https://github.com/apache/superset/pull/15019) docs: jinja (@srinify)
- [#15053](https://github.com/apache/superset/pull/15053) refactor: adopt --app as celery global option (@shawnzhu)
- [#15044](https://github.com/apache/superset/pull/15044) docs: provide config option for openid-connect provider #13948 (@shawnzhu)
- [#14870](https://github.com/apache/superset/pull/14870) chore: Bulk Select X Button Alignment (@lyndsiWilliams)
- [#14846](https://github.com/apache/superset/pull/14846) chore: Align down icons on header (@lyndsiWilliams)
- [#15013](https://github.com/apache/superset/pull/15013) refactor: Add "is_select_query" method to base engine spec to unlock non-SQL dialects (@Ceridan)
- [#15021](https://github.com/apache/superset/pull/15021) chore: rename 'Source' to 'Database' for consistency (@mistercrunch)
- [#15016](https://github.com/apache/superset/pull/15016) chore(ci): fix ci conflict (@villebro)
- [#15010](https://github.com/apache/superset/pull/15010) docs: required information for OAuth2 configuration (@shawnzhu)
- [#14990](https://github.com/apache/superset/pull/14990) docs: Updates index.mdx (@brian-childress)
- [#14950](https://github.com/apache/superset/pull/14950) docs: fix typos on installation.rst (@Bonifacio2)
- [#14997](https://github.com/apache/superset/pull/14997) docs: fix custom oauth config (@nytai)
- [#14830](https://github.com/apache/superset/pull/14830) refactor: Convert TableElement.jsx component from class to functional with hooks (@corbinrobb)
- [#14968](https://github.com/apache/superset/pull/14968) chore: bump superset-ui to 0.17.53 (@villebro)
- [#14932](https://github.com/apache/superset/pull/14932) chore: Improves the native filters UI/UX - iteration 6 (@michael-s-molina)
- [#14896](https://github.com/apache/superset/pull/14896) chore: customize adhoc filter icon and fix creatable label (@villebro)
- [#14919](https://github.com/apache/superset/pull/14919) test(native-filters): add test for Select filter (@simcha90)
- [#14907](https://github.com/apache/superset/pull/14907) chore: upgrade bleach dependency (@willbarrett)
- [#14906](https://github.com/apache/superset/pull/14906) chore: Upgrade cryptography package (@willbarrett)
- [#14871](https://github.com/apache/superset/pull/14871) chore: Bump @superset-ui/legacy-preset-chart-deckgl to 0.4.7 (@kgabryje)
- [#14882](https://github.com/apache/superset/pull/14882) chore: Improves the native filters UI/UX - iteration 5 (@michael-s-molina)
- [#14854](https://github.com/apache/superset/pull/14854) chore: Improves the native filters UI/UX - iteration 4 (@michael-s-molina)
- [#14814](https://github.com/apache/superset/pull/14814) chore(native-filters): introduce experimental feature flag (@villebro)
- [#14824](https://github.com/apache/superset/pull/14824) chore: Improves the native filters UI/UX - iteration 3 (@michael-s-molina)
- [#14826](https://github.com/apache/superset/pull/14826) chore: Update docs on MySQL recommended driver (@betodealmeida)
- [#14752](https://github.com/apache/superset/pull/14752) chore: added BasicParametersMixin to Redshift (@AAfghahi)
- [#14753](https://github.com/apache/superset/pull/14753) chore: Improves the native filters UI/UX - iteration 2 (@michael-s-molina)
- [#14762](https://github.com/apache/superset/pull/14762) other: "revert fix(dashboard): multiple query trigger when native filter enabled" (@zhaoyongjie)
- [#14199](https://github.com/apache/superset/pull/14199) chore: Removes ColorSchemeControl.less (@michael-s-molina)
- [#14684](https://github.com/apache/superset/pull/14684) chore: Perform feature/config condition checks at request time (@benjreinhart)
- [#14723](https://github.com/apache/superset/pull/14723) chore: Update pull request template (@suddjian)
- [#14714](https://github.com/apache/superset/pull/14714) chore: Improves the native filters UI/UX - iteration 1 (@michael-s-molina)
- [#14448](https://github.com/apache/superset/pull/14448) chore: Removes less from SliceAdder (@michael-s-molina)
- [#14558](https://github.com/apache/superset/pull/14558) docs: Update docs for GLOBAL_ASYNC_QUERIES_TRANSPORT (@robdiciuccio)
- [#14650](https://github.com/apache/superset/pull/14650) chore: Register dynamic plugins and add feature checks (@benjreinhart)
- [#14469](https://github.com/apache/superset/pull/14469) chore: Replaces Icon with Icons component - iteration 1 (@michael-s-molina)
- [#14644](https://github.com/apache/superset/pull/14644) chore: Adjust language picker theme to match other menus (@michael-s-molina)
- [#14641](https://github.com/apache/superset/pull/14641) chore: Removes react-bootstrap and react-bootstrap-slider (@michael-s-molina)
- [#14568](https://github.com/apache/superset/pull/14568) chore: use before_request hook for dynamic routes (@benjreinhart)
- [#14633](https://github.com/apache/superset/pull/14633) chore: Bump pip-compile-multi (@john-bodley)
- [#14638](https://github.com/apache/superset/pull/14638) perf: memoize db_engine_spec in database (@villebro)
- [#14625](https://github.com/apache/superset/pull/14625) chore: Change name to `BaseParameters` to `BasicParameters` (@hughhhh)
- [#14546](https://github.com/apache/superset/pull/14546) chore: Consolidating form experience (Bootstrap to AntD) - iteration 4 (@michael-s-molina)
- [#14419](https://github.com/apache/superset/pull/14419) refactor: change xsm Icons and dnd icons to new dynamic icons (@pkdotson)
- [#14581](https://github.com/apache/superset/pull/14581) chore: Update `make py-format` to use pre-commit (@hughhhh)
- [#14227](https://github.com/apache/superset/pull/14227) build(deps): bump ssri from 6.0.1 to 6.0.2 in /docs (@dependabot[bot])
- [#14569](https://github.com/apache/superset/pull/14569) style: adds padding badges to look less claustrophobic (@rusackas)
- [#14536](https://github.com/apache/superset/pull/14536) docs: typo on CONTRIBUTING.md (@Bonifacio2)
- [#14556](https://github.com/apache/superset/pull/14556) chore: Update FAB to 3.3.0 (@benjreinhart)
- [#14476](https://github.com/apache/superset/pull/14476) chore: Adding logging for datasource/save requests (@michellethomas)
- [#13095](https://github.com/apache/superset/pull/13095) chore: update CONTRIBUTING.md tag --lts (@bawantha)
- [#14364](https://github.com/apache/superset/pull/14364) refactor: remove panel from userinfo component (@pkdotson)
- [#14184](https://github.com/apache/superset/pull/14184) refactor(navbar): migrate Bootstrap navbar to AntD menus (@pkdotson)
- [#14496](https://github.com/apache/superset/pull/14496) chore: Removes tabs pane animation by default (@michael-s-molina)
- [#14502](https://github.com/apache/superset/pull/14502) refactor: Bootstrap to AntD - Form - iteration 3 (@michael-s-molina)
- [#14513](https://github.com/apache/superset/pull/14513) docs(UPDATING): Adding downtime for #14234 (@john-bodley)
- [#14412](https://github.com/apache/superset/pull/14412) chore: Improved translation into Russian language (@aleksandrgordienko)
- [#14515](https://github.com/apache/superset/pull/14515) chore: bump superset-ui to 0.17.44 (@villebro)
- [#14494](https://github.com/apache/superset/pull/14494) refactor(utils): replace strtobool with parse_boolean_string (@villebro)
- [#14380](https://github.com/apache/superset/pull/14380) chore: Moves spec files to the src folder - iteration 4 (@michael-s-molina)
- [#14379](https://github.com/apache/superset/pull/14379) refactor: Bootstrap to AntD - Form - iteration 2 (@michael-s-molina)
- [#14195](https://github.com/apache/superset/pull/14195) chore: Adds QueryParamProvider to the testing helper (@michael-s-molina)
- [#14497](https://github.com/apache/superset/pull/14497) test: Attempt to reduce asyncEvent test flakiness (@robdiciuccio)
- [#14477](https://github.com/apache/superset/pull/14477) chore: bump sankey and pivot table chart to 0.17.43 (@ktmud)
- [#14418](https://github.com/apache/superset/pull/14418) chore: Removes common storybook (@michael-s-molina)
- [#14485](https://github.com/apache/superset/pull/14485) chore: Move styles from .less stylesheet to emotion in Explore (@kgabryje)
- [#14417](https://github.com/apache/superset/pull/14417) chore: Update WebSocket server code from feedback (@benjreinhart)
- [#14454](https://github.com/apache/superset/pull/14454) chore: upgrade @emotion (@ktmud)
- [#14356](https://github.com/apache/superset/pull/14356) chore(dashboard): Integrate dashboard app into the SPA bundle (@suddjian)
- [#14436](https://github.com/apache/superset/pull/14436) refactor: split db modal file (@eschutho)
- [#14382](https://github.com/apache/superset/pull/14382) chore: add stack trace to all calls of logger.error (@samtfm)
- [#14432](https://github.com/apache/superset/pull/14432) docs: update README with new docs and recordings (@srinify)
- [#14425](https://github.com/apache/superset/pull/14425) docs: Renamed impyla from implya and updated PIP name to impyla from impala. (@jagamts1)
### 1.2.0 (2021-06-04)
### 1.2 (Date TBD)
**Features**
- [11498](https://github.com/apache/superset/pull/11498) feat(SIP-39): Websocket sidecar app (#11498) (@Rob DiCiuccio)
- [13894](https://github.com/apache/superset/pull/13894) feat(alert/report): add ALERTS_ATTACH_REPORTS feature flags + feature (#13894) (@Lily Kuang)
+1 -1
View File
@@ -106,7 +106,7 @@ This statement thanks the following, on which it draws for content and inspirati
# Slack Community Guidelines
If you decide to join the [Community Slack](https://join.slack.com/t/apache-superset/shared_invite/zt-uxbh5g36-AISUtHbzOXcu0BIj7kgUaw), please adhere to the following rules:
If you decide to join the [Community Slack](https://join.slack.com/t/apache-superset/shared_invite/zt-l5f5e0av-fyYu8tlfdqbMdz_sPLwUqQ), please adhere to the following rules:
**1. Treat everyone in the community with respect.**
-12
View File
@@ -453,7 +453,6 @@ superset load-examples
# Note that your page may not have CSS at this point.
# See instructions below how to build the front-end assets.
FLASK_ENV=development superset run -p 8088 --with-threads --reload --debugger
```
Or you can install via our Makefile
@@ -478,17 +477,6 @@ via `.flaskenv`, however if needed, it should be set to `superset.app:create_app
If you have made changes to the FAB-managed templates, which are not built the same way as the newer, React-powered front-end assets, you need to start the app without the `--with-threads` argument like so:
`FLASK_ENV=development superset run -p 8088 --reload --debugger`
#### Dependencies
If you add a new requirement or update an existing requirement (per the `install_requires` section in `setup.py`) you must recompile (freeze) the Python dependencies to ensure that for CI, testing, etc. the build is deterministic. This can be achieved via,
```bash
$ python3 -m venv venv
$ source venv/bin/activate
$ python3 -m pip install -r requirements/integration.txt
$ pip-compile-multi --no-upgrade
```
#### Logging to the browser console
This feature is only available on Python 3. When debugging your application, you can have the server logs sent directly to the browser console using the [ConsoleLog](https://github.com/betodealmeida/consolelog) package. You need to mutate the app, by adding the following to your `config.py` or `superset_config.py`:
+1 -1
View File
@@ -64,7 +64,7 @@ RUN /frontend-mem-nag.sh \
# Next, copy in the rest and let webpack do its thing
COPY ./superset-frontend /app/superset-frontend
# This seems to be the most expensive step
# This is BY FAR the most expensive step (thanks Terser!)
RUN cd /app/superset-frontend \
&& npm run ${BUILD_CMD} \
&& rm -rf node_modules
+2 -18
View File
@@ -15,9 +15,6 @@
# limitations under the License.
#
# Python version installed; we need 3.8 or 3.7
PYTHON=`command -v python3.8 || command -v python3.7`
.PHONY: install superset venv pre-commit
install: superset pre-commit
@@ -58,15 +55,11 @@ update-py:
update-js:
# Install js packages
cd superset-frontend; npm ci
cd superset-frontend; npm install
venv:
# Create a virtual environment and activate it (recommended)
if ! [ -x "${PYTHON}" ]; then echo "You need Python 3.7 or 3.8 installed"; exit 1; fi
test -d venv || ${PYTHON} -m venv venv # setup a python3 virtualenv
. venv/bin/activate
make activate:
python3 -m venv venv # setup a python3 virtualenv
source venv/bin/activate
pre-commit:
@@ -79,14 +72,5 @@ format: py-format js-format
py-format: pre-commit
pre-commit run black --all-files
py-lint: pre-commit
pylint -j 0 superset
js-format:
cd superset-frontend; npm run prettier
flask-app:
flask run -p 8088 --with-threads --reload --debugger
node-app:
cd superset-frontend; npm run dev-server
+2 -2
View File
@@ -25,7 +25,7 @@ under the License.
[![PyPI version](https://badge.fury.io/py/apache-superset.svg)](https://badge.fury.io/py/apache-superset)
[![Coverage Status](https://codecov.io/github/apache/superset/coverage.svg?branch=master)](https://codecov.io/github/apache/superset)
[![PyPI](https://img.shields.io/pypi/pyversions/apache-superset.svg?maxAge=2592000)](https://pypi.python.org/pypi/apache-superset)
[![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](https://join.slack.com/t/apache-superset/shared_invite/zt-uxbh5g36-AISUtHbzOXcu0BIj7kgUaw)
[![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](https://join.slack.com/t/apache-superset/shared_invite/zt-l5f5e0av-fyYu8tlfdqbMdz_sPLwUqQ)
[![Documentation](https://img.shields.io/badge/docs-apache.org-blue.svg)](https://superset.apache.org)
[![Dependencies Status](https://david-dm.org/apache/superset/status.svg?path=superset-frontend)](https://david-dm.org/apache/superset?path=superset-frontend)
@@ -136,7 +136,7 @@ Want to add support for your datastore or data engine? Read more [here](https://
## Get Involved
- Ask and answer questions on [StackOverflow](https://stackoverflow.com/questions/tagged/apache-superset) using the **apache-superset** tag
- [Join our community's Slack](https://join.slack.com/t/apache-superset/shared_invite/zt-uxbh5g36-AISUtHbzOXcu0BIj7kgUaw)
- [Join our community's Slack](https://join.slack.com/t/apache-superset/shared_invite/zt-l5f5e0av-fyYu8tlfdqbMdz_sPLwUqQ)
and please read our [Slack Community Guidelines](https://github.com/apache/superset/blob/master/CODE_OF_CONDUCT.md#slack-community-guidelines)
- [Join our dev@superset.apache.org Mailing list](https://lists.apache.org/list.html?dev@superset.apache.org)
-2
View File
@@ -29,8 +29,6 @@ on the Superset Slack. People crafting releases and those interested in
partaking in the process should join the channel.
## Release notes for recent releases
- [1.3](release-notes-1-3/README.md)
- [1.2](release-notes-1-2/README.md)
- [1.1](release-notes-1-1/README.md)
- [1.0](release-notes-1-0/README.md)
+11 -9
View File
@@ -13,6 +13,9 @@
# 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.
#
# pylint: disable=no-value-for-parameter
import csv as lib_csv
import os
import re
@@ -21,7 +24,6 @@ from dataclasses import dataclass
from typing import Any, Dict, Iterator, List, Optional, Union
import click
from click.core import Context
try:
from github import BadCredentialsException, Github, PullRequest, Repository
@@ -48,7 +50,7 @@ class GitLog:
author_email: str = ""
def __eq__(self, other: object) -> bool:
"""A log entry is considered equal if it has the same PR number"""
""" A log entry is considered equal if it has the same PR number """
if isinstance(other, self.__class__):
return other.pr_number == self.pr_number
return False
@@ -168,7 +170,7 @@ class GitChangeLog:
def _parse_change_log(
self, changelog: Dict[str, str], pr_info: Dict[str, str], github_login: str,
) -> None:
):
formatted_pr = (
f"- [#{pr_info.get('id')}]"
f"(https://github.com/{SUPERSET_REPO}/pull/{pr_info.get('id')}) "
@@ -322,8 +324,8 @@ def print_title(message: str) -> None:
@click.pass_context
@click.option("--previous_version", help="The previous release version", required=True)
@click.option("--current_version", help="The current release version", required=True)
def cli(ctx: Context, previous_version: str, current_version: str) -> None:
"""Welcome to change log generator"""
def cli(ctx, previous_version: str, current_version: str) -> None:
""" Welcome to change log generator """
previous_logs = GitLogs(previous_version)
current_logs = GitLogs(current_version)
previous_logs.fetch()
@@ -335,7 +337,7 @@ def cli(ctx: Context, previous_version: str, current_version: str) -> None:
@cli.command("compare")
@click.pass_obj
def compare(base_parameters: BaseParameters) -> None:
"""Compares both versions (by PR)"""
""" Compares both versions (by PR) """
previous_logs = base_parameters.previous_logs
current_logs = base_parameters.current_logs
print_title(
@@ -367,7 +369,7 @@ def compare(base_parameters: BaseParameters) -> None:
def change_log(
base_parameters: BaseParameters, csv: str, access_token: str, risk: bool
) -> None:
"""Outputs a changelog (by PR)"""
""" Outputs a changelog (by PR) """
previous_logs = base_parameters.previous_logs
current_logs = base_parameters.current_logs
previous_diff_logs = previous_logs.diff(current_logs)
@@ -381,12 +383,12 @@ def change_log(
with open(csv, "w") as csv_file:
log_items = list(logs)
field_names = log_items[0].keys()
writer = lib_csv.DictWriter( # type: ignore
writer = lib_csv.DictWriter(
csv_file,
delimiter=",",
quotechar='"',
quoting=lib_csv.QUOTE_ALL,
fieldnames=field_names, # type: ignore
fieldnames=field_names,
)
writer.writeheader()
for log in logs:
-73
View File
@@ -1,73 +0,0 @@
<!--
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.
-->
# Release Notes for Superset 1.3
Superset 1.3 focuses on hardening and polishing the superset user experience, with tons of UX improvements and bug fixes focused on charts, dashboards, and the new dashboard-native filters.
- [**User Experience**](#user-experience)
- [**PR Highlights**](#pr-highlights)
- [**Breaking Changes and Full Changelog**](#breaking-changes-and-full-changelog)
# User Experience
One major goal of this release is to improve and harden dashboard-native filters. These filters live at the dashboard level instead of within a chart and affect all charts under their scope within a dashboard. Improvements in this release include clearer visual indicators of what charts are within the scope of a selected filter.
![dashboard native filter scoping](media/dashboard_native_filters_1.jpg)
Native-filters can also be set to load collapsed, which also improves connected thumbnail and alerts/reports functionality.
![dashboard native filter collapsed](media/native_filters_collapsed.png)
For charts, we've added a new funnel chart.
![funnel chart](media/funnel_chart.png)
Users can also now use Jinja templating in calculated columns and SQL metrics.
![jinja templating](media/jinja_templating.png)
At the dashboard level, work has been focused on improving available information and UX ergonomics. Users can now download a full .csv of the full dataset behind a table chart from the dashboard.
![export full csv](media/export_full_csv.png)
Continuing on the theme of making more things accessible directly from the dashboard, users can now view the SQL Query behind any chart directly from the dashboard as well.
![view query dashboard](media/view_query_dashboard.png)
# Developer Experience
The API has received a new endpoint to allow the developer to pass DB-specific parameters instead of the full SQLAlchemy URI.
# Database Connectivity
We have improved support for Ascend.io's engine spec and fixed a long list of bugs.
Also in the works is a new database connection UI, which should make connecting to a database easier without having to put together a SQLAlchemy URI. It's behind a feature flag for now, but it can be turned on in config.py with `FORCE_DATABASE_CONNECTIONS_SSL = True`.
# PR Highlights
- [14682](https://github.com/apache/superset/pull/14682) add ascend engine spec (#14682) (@Daniel Wood)
- [14420](https://github.com/apache/superset/pull/14420) feat: API endpoint to validate databases using separate parameters (#14420) (@Beto Dealmeida)
- [14934](https://github.com/apache/superset/pull/14934) feat: Adding FORCE_SSL as feature flag in config.py (#14934) (@AAfghahi)
- [14480](https://github.com/apache/superset/pull/14480) feat(viz): add funnel chart (#14480) (@Ville Brofeldt)
## Breaking Changes and Full Changelog
- To see the complete changelog in this release, head to [CHANGELOG.MD](../../CHANGELOG.md).
- 1.3.0 does not contain any backwards incompatible changes.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 KiB

+19 -30
View File
@@ -17,9 +17,7 @@
#
import smtplib
import ssl
from typing import Any, Dict, List, Optional
from click.core import Context
from typing import List
try:
import jinja2
@@ -52,7 +50,7 @@ def send_email(
sender_email: str,
receiver_email: str,
message: str,
) -> None:
):
"""
Send a simple text email (SMTP)
"""
@@ -63,7 +61,7 @@ def send_email(
server.sendmail(sender_email, receiver_email, message)
def render_template(template_file: str, **kwargs: Any) -> str:
def render_template(template_file: str, **kwargs) -> str:
"""
Simple render template based on named parameters
@@ -75,9 +73,7 @@ def render_template(template_file: str, **kwargs: Any) -> str:
return template.render(kwargs)
def inter_send_email(
username: str, password: str, sender_email: str, receiver_email: str, message: str
) -> None:
def inter_send_email(username, password, sender_email, receiver_email, message):
print("--------------------------")
print("SMTP Message")
print("--------------------------")
@@ -106,16 +102,16 @@ def inter_send_email(
class BaseParameters(object):
def __init__(
self, email: str, username: str, password: str, version: str, version_rc: str,
) -> None:
self, email=None, username=None, password=None, version=None, version_rc=None
):
self.email = email
self.username = username
self.password = password
self.version = version
self.version_rc = version_rc
self.template_arguments: Dict[str, Any] = {}
self.template_arguments = dict()
def __repr__(self) -> str:
def __repr__(self):
return f"Apache Credentials: {self.email}/{self.username}/{self.version}/{self.version_rc}"
@@ -137,15 +133,8 @@ class BaseParameters(object):
)
@click.option("--version", envvar="SUPERSET_VERSION")
@click.option("--version_rc", envvar="SUPERSET_VERSION_RC")
def cli(
ctx: Context,
apache_email: str,
apache_username: str,
apache_password: str,
version: str,
version_rc: str,
) -> None:
"""Welcome to releasing send email CLI interface!"""
def cli(ctx, apache_email, apache_username, apache_password, version, version_rc):
""" Welcome to releasing send email CLI interface! """
base_parameters = BaseParameters(
apache_email, apache_username, apache_password, version, version_rc
)
@@ -166,7 +155,7 @@ def cli(
prompt="The receiver email (To:)",
)
@click.pass_obj
def vote_pmc(base_parameters: BaseParameters, receiver_email: str) -> None:
def vote_pmc(base_parameters, receiver_email):
template_file = "email_templates/vote_pmc.j2"
base_parameters.template_arguments["receiver_email"] = receiver_email
message = render_template(template_file, **base_parameters.template_arguments)
@@ -213,13 +202,13 @@ def vote_pmc(base_parameters: BaseParameters, receiver_email: str) -> None:
)
@click.pass_obj
def result_pmc(
base_parameters: BaseParameters,
receiver_email: str,
vote_bindings: str,
vote_nonbindings: str,
vote_negatives: str,
vote_thread: str,
) -> None:
base_parameters,
receiver_email,
vote_bindings,
vote_nonbindings,
vote_negatives,
vote_thread,
):
template_file = "email_templates/result_pmc.j2"
base_parameters.template_arguments["receiver_email"] = receiver_email
base_parameters.template_arguments["vote_bindings"] = string_comma_to_list(
@@ -250,7 +239,7 @@ def result_pmc(
prompt="The receiver email (To:)",
)
@click.pass_obj
def announce(base_parameters: BaseParameters, receiver_email: str) -> None:
def announce(base_parameters, receiver_email):
template_file = "email_templates/announce.j2"
base_parameters.template_arguments["receiver_email"] = receiver_email
message = render_template(template_file, **base_parameters.template_arguments)
+2 -6
View File
@@ -61,7 +61,6 @@ Join our growing community!
- [Tails.com](https://tails.com) [@alanmcruickshank]
- [THE ICONIC](http://theiconic.com.au/) [@ksaagariconic]
- [Utair](https://www.utair.ru) [@utair-digital]
- [VkusVill](https://www.vkusvill.ru) [@ETselikov]
- [Zalando](https://www.zalando.com) [@dmigo]
- [Zalora](https://www.zalora.com) [@ksaagariconic]
@@ -80,7 +79,6 @@ Join our growing community!
- [FBK - ICT center](http://ict.fbk.eu)
- [GfK Data Lab](http://datalab.gfk.com) [@mherr]
- [GrowthSimple](https://growthsimple.ai/)
- [Hydrolix](https://www.hydrolix.io/)
- [Intercom](https://www.intercom.com/) [@kate-gallo]
- [jampp](https://jampp.com/)
- [Konfío](http://konfio.mx) [@uis-rodriguez]
@@ -97,7 +95,6 @@ Join our growing community!
- [Showmax](https://tech.showmax.com) [@bobek]
- [source{d}](https://www.sourced.tech) [@marnovo]
- [Steamroot](https://streamroot.io/)
- [TechAudit](https://www.techaudit.info) [@ETselikov]
- [Tenable](https://www.tenable.com) [@dflionis]
- [timbr.ai](https://timbr.ai/) [@semantiDan]
- [Tobii](http://www.tobii.com/) [@dwa]
@@ -106,13 +103,14 @@ Join our growing community!
- [Windsor.ai](https://www.windsor.ai/) [@octaviancorlade]
- [Zeta](https://www.zeta.tech/) [@shaikidris]
### Entertainment
- [6play](https://www.6play.fr) [@CoryChaplin]
- [bilibili](https://www.bilibili.com) [@Moinheart]
- [Douban](https://www.douban.com/) [@luchuan]
- [Kuaishou](https://www.kuaishou.com/) [@zhaoyu89730105]
- [Netflix](https://www.netflix.com/)
- [TME QQMUSIC/WESING](https://www.tencentmusic.com/)[@shenyuanli,@marklaw]
- [TME QQMUSIC/WESING](https://www.tencentmusic.com/)
- [Xite](https://xite.com/) [@shashankkoppar]
- [Zaihang](http://www.zaih.com/)
@@ -120,7 +118,6 @@ Join our growing community!
- [Brilliant.org](https://brilliant.org/)
- [Udemy](https://www.udemy.com/) [@sungjuly]
- [VIPKID](https://www.vipkid.com.cn/) [@illpanda]
- [Sunbird](https://www.sunbird.org/) [@eksteporg]
### Energy
- [Airboxlab](https://foobot.io) [@antoine-galataud]
@@ -130,7 +127,6 @@ Join our growing community!
### Healthcare
- [Amino](https://amino.com) [@shkr]
- [Care](https://www.getcare.io/)[@alandao2021]
- [Living Goods](https://www.livinggoods.org) [@chelule]
- [Maieutical Labs](https://maieuticallabs.it) [@xrmx]
- [QPID Health](http://www.qpidhealth.com/)
+5 -23
View File
@@ -23,30 +23,17 @@ This file documents any backwards-incompatible changes in Superset and
assists people when migrating to a new version.
## Next
- [13772](https://github.com/apache/superset/pull/13772): Row level security (RLS) is now enabled by default. To activate the feature, please run `superset init` to expose the RLS menus to Admin users.
- [13980](https://github.com/apache/superset/pull/13980): Data health checks no longer use the metadata database as an interim cache. Though non-breaking, deployments which implement complex logic should likely memoize the callback function. Refer to documentation in the confg.py file for more detail.
- [14255](https://github.com/apache/superset/pull/14255): The default `CSV_TO_HIVE_UPLOAD_DIRECTORY_FUNC` callable logic has been updated to leverage the specified database and schema to ensure the upload S3 key prefix is unique. Previously tables generated via upload from CSV with the same name but differ schema and/or cluster would use the same S3 key prefix. Note this change does not impact previously imported tables.
### Breaking Changes
- [16660](https://github.com/apache/incubator-superset/pull/16660): The `columns` Jinja parameter has been renamed `table_columns` to make the `columns` query object parameter available in the Jinja context.
- [16711](https://github.com/apache/incubator-superset/pull/16711): The `url_param` Jinja function will now by default escape the result. For instance, the value `O'Brien` will now be changed to `O''Brien`. To disable this behavior, call `url_param` with `escape_result` set to `False`: `url_param("my_key", "my default", escape_result=False)`.
### Potential Downtime
### Deprecations
### Other
## 1.3.0
### Breaking Changes
- [15909](https://github.com/apache/incubator-superset/pull/15909): a change which
drops a uniqueness criterion (which may or may not have existed) to the tables table. This constraint was obsolete as it is handled by the ORM due to differences in how MySQL, PostgreSQL, etc. handle uniqueness for NULL values.
### Potential Downtime
- [14234](https://github.com/apache/superset/pull/14234): Adds the `limiting_factor` column to the `query` table. Give the migration includes a DDL operation on a heavily trafficed table, potential service downtime may be required.
## 1.2.0
### Deprecations
- [13440](https://github.com/apache/superset/pull/13440): Dashboard/Charts reports and old Alerts is deprecated. The following config keys are deprecated:
- ENABLE_ALERTS
- SCHEDULED_EMAIL_DEBUG_MODE
@@ -54,13 +41,8 @@ drops a uniqueness criterion (which may or may not have existed) to the tables t
- EMAIL_ASYNC_TIME_LIMIT_SEC
- EMAIL_REPORT_BCC_ADDRESS
- EMAIL_REPORTS_USER
### Other
- [13772](https://github.com/apache/superset/pull/13772): Row level security (RLS) is now enabled by default. To activate the feature, please run `superset init` to expose the RLS menus to Admin users.
- [13980](https://github.com/apache/superset/pull/13980): Data health checks no longer use the metadata database as an interim cache. Though non-breaking, deployments which implement complex logic should likely memoize the callback function. Refer to documentation in the confg.py file for more detail.
- [14255](https://github.com/apache/superset/pull/14255): The default `CSV_TO_HIVE_UPLOAD_DIRECTORY_FUNC` callable logic has been updated to leverage the specified database and schema to ensure the upload S3 key prefix is unique. Previously tables generated via upload from CSV with the same name but differ schema and/or cluster would use the same S3 key prefix. Note this change does not impact previously imported tables.
## 1.1.0
### Breaking Changes
+1 -1
View File
@@ -33,7 +33,7 @@ services:
- redis:/data
db:
env_file: docker/.env-non-dev
env_file: docker/.env
image: postgres:10
container_name: superset_db
restart: unless-stopped
-3
View File
@@ -118,9 +118,6 @@ services:
depends_on: *superset-depends-on
user: *superset-user
volumes: *superset-volumes
# Bump memory limit if processing selenium / thumbails on superset-worker
# mem_limit: 2038m
# mem_reservation: 128M
superset-worker-beat:
image: *superset-image
+25 -19
View File
@@ -24,52 +24,58 @@ Docker is an easy way to get started with Superset.
## Prerequisites
1. Docker! [link](https://www.docker.com/get-started)
2. Docker-compose [link](https://docs.docker.com/compose/install/)
1. Docker-compose [link](https://docs.docker.com/compose/install/)
## Configuration
The `/app/pythonpath` folder is mounted from [`./docker/pythonpath_dev`](./pythonpath_dev)
which contains a base configuration [`./docker/pythonpath_dev/superset_config.py`](./pythonpath_dev/superset_config.py)
The `/app/pythonpath` folder is mounted from [./docker/pythonpath_dev](./docker/pythonpath_dev)
which contains a base configuration [./docker/pythonpath_dev/superset_config.py](./docker/pythonpath_dev/superset_config.py)
intended for use with local development.
### Local overrides
In order to override configuration settings locally, simply make a copy of [`./docker/pythonpath_dev/superset_config_local.example`](./pythonpath_dev/superset_config_local.example)
into `./docker/pythonpath_dev/superset_config_docker.py` (git ignored) and fill in your overrides.
In order to override configuration settings locally, simply make a copy of [./docker/pythonpath_dev/superset_config_local.example](./docker/pythonpath_dev/superset_config_local.example)
into [./docker/pythonpath_dev/superset_config_docker.py](./docker/pythonpath_dev/superset_config_docker.py) (git ignored) and fill in your overrides.
### Local packages
If you want to add Python packages in order to test things like databases locally, you can simply add a local requirements.txt (`./docker/requirements-local.txt`)
and rebuild your Docker stack.
If you want to add python packages in order to test things like DBs locally, you can simply add a local requirements.txt (./docker/requirements-local.txt)
and rebuild your docker stack.
Steps:
1. Create `./docker/requirements-local.txt`
2. Add your new packages
3. Rebuild docker-compose
1. `docker-compose down -v`
2. `docker-compose up`
1. Create ./docker/requirements-local.txt
2. Add your new packages
3. Rebuild docker-compose
a. `docker-compose down -v`
b. `docker-compose up`
## Initializing Database
The database will initialize itself upon startup via the init container ([`superset-init`](./docker-init.sh)). This may take a minute.
The DB will initialize itself upon startup via the init container (superset-init)
(This may take a minute.)
## Normal Operation
To run the container, simply run: `docker-compose up`
To run the container, simply run:
After waiting several minutes for Superset initialization to finish, you can open a browser and view [`http://localhost:8088`](http://localhost:8088)
```bash
docker-compose up
```
After several minutes for superset initialization to finish, you can open a browser and view [`http://localhost:8088`](http://localhost:8088)
to start your journey.
## Developing
While running, the container server will reload on modification of the Superset Python and JavaScript source code.
While running, the container server will reload on modification of the superset python and javascript source code.
Don't forget to reload the page to take the new frontend into account though.
## Production
It is possible to run Superset in non-development mode by using [`docker-compose-non-dev.yml`](../docker-compose-non-dev.yml). This file excludes the volumes needed for development and uses [`./docker/.env-non-dev`](./.env-non-dev) which sets the variable `SUPERSET_ENV` to `production`.
It is also possible to run Superset in non-development mode: in the `docker-compose.yml` file remove
the volumes needed for development and change the variable `SUPERSET_ENV` to `production`.
## Resource Constraints
If you are attempting to build on macOS and it exits with 137 you need to increase your Docker resources. See instructions [here](https://docs.docker.com/docker-for-mac/#advanced) (search for memory)
If you are attempting to build on a Mac and it exits with 137 you need to increase your docker resources.
OSX instructions: https://docs.docker.com/docker-for-mac/#advanced (Search for memory)
+3 -4
View File
@@ -23,7 +23,6 @@
import logging
import os
from datetime import timedelta
from typing import Optional
from cachelib.file import FileSystemCache
from celery.schedules import crontab
@@ -31,7 +30,7 @@ from celery.schedules import crontab
logger = logging.getLogger()
def get_env_variable(var_name: str, default: Optional[str] = None) -> str:
def get_env_variable(var_name, default=None):
"""Get the environment variable or raise exception."""
try:
return os.environ[var_name]
@@ -64,8 +63,8 @@ SQLALCHEMY_DATABASE_URI = "%s://%s:%s@%s:%s/%s" % (
REDIS_HOST = get_env_variable("REDIS_HOST")
REDIS_PORT = get_env_variable("REDIS_PORT")
REDIS_CELERY_DB = get_env_variable("REDIS_CELERY_DB", "0")
REDIS_RESULTS_DB = get_env_variable("REDIS_RESULTS_DB", "1")
REDIS_CELERY_DB = get_env_variable("REDIS_CELERY_DB", 0)
REDIS_RESULTS_DB = get_env_variable("REDIS_RESULTS_DB", 1)
RESULTS_BACKEND = FileSystemCache("/app/superset_home/sqllab")
-22
View File
@@ -1,22 +0,0 @@
# 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.
publish:
whoami: asf-site
staging:
whoami: asf-site
+2 -2
View File
@@ -443,7 +443,7 @@ This is an optional feature that can be turned on by activating its feature flag
}
For this feature you will need a cache system and celery workers. All thumbnails are stored on cache and are processed
For this feature you will need a cache system and celery workers. All thumbnails are store on cache and are processed
asynchronously by the workers.
An example config where images are stored on S3 could be:
@@ -1465,7 +1465,7 @@ install from pip: ::
and run via: ::
celery --app=superset.tasks.celery_app:app flower
celery flower --app=superset.tasks.celery_app:app
Building from source
---------------------
+1 -1
View File
@@ -52,7 +52,7 @@
],
"license": "0BSD",
"scripts": {
"build": "gatsby build && cp .htaccess .asf.yaml public/",
"build": "gatsby build && cp .htaccess public/",
"develop": "gatsby develop",
"develop-ga": "GATSBY_GTAG_DEBUG=true gatsby develop",
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md,mdx}\"",
+1 -1
View File
@@ -26,7 +26,7 @@ import { pmc } from '../resources/data';
const links = [
[
'https://join.slack.com/t/apache-superset/shared_invite/zt-uxbh5g36-AISUtHbzOXcu0BIj7kgUaw',
'https://join.slack.com/t/apache-superset/shared_invite/zt-l5f5e0av-fyYu8tlfdqbMdz_sPLwUqQ',
'Slack',
'interact with other Superset users and community members',
],
@@ -53,18 +53,12 @@ Rebuild your local image with the new driver baked in:
docker-compose build --force-rm
```
After the rebuild of the Docker images is complete (which make take a few minutes) you can relaunch using the following command:
After the rebuild is complete, which make take a few minutes, relaunch:
```
docker-compose up
```
The other option is to start Superset via Docker Compose is using the recipe in `docker-compose-non-dev.yml`, which will use pre-built frontend assets and skip the building of front-end assets:
```
docker-compose -f docker-compose-non-dev.yml up
```
### 3. Connect to MySQL
Now that you've got a MySQL driver installed locally, you should be able to test it out.
@@ -14,7 +14,7 @@ The recommended connector library for Dremio is
The expected connection string for ODBC (Default port is 31010) is formatted as follows:
```
dremio://{username}:{password}@{host}:{port}/{database_name}/dremio?SSL=1
dremio://{username}:{password}@{host}:{port}/dremio
```
The expected connection string for Arrow Flight (Dremio 4.9.1+. Default port is 32010) is formatted as follows:
@@ -47,7 +47,7 @@ A list of some of the recommended packages.
|[IBM Netezza Performance Server](/docs/databases/netezza)|```pip install nzalchemy```|```netezza+nzpy://<UserName>:<DBPassword>@<Database Host>/<Database Name>```|
|[MySQL](/docs/databases/mysql)|```pip install mysqlclient```|```mysql://<UserName>:<DBPassword>@<Database Host>/<Database Name>```|
|[Oracle](/docs/databases/oracle)|```pip install cx_Oracle```|```oracle://```|
|[PostgreSQL](/docs/databases/postgres)|```pip install psycopg2```|```postgresql://<UserName>:<DBPassword>@<Database Host>/<Database Name>```|
|[PostgreSQL](/docs/databases/postgresql)|```pip install psycopg2```|```postgresql://<UserName>:<DBPassword>@<Database Host>/<Database Name>```|
|[Trino](/docs/databases/trino)|```pip install sqlalchemy-trino```|```trino://{username}:{password}@{hostname}:{port}/{catalog}```|
|[Presto](/docs/databases/presto)|```pip install pyhive```|```presto://```|
|[SAP Hana](/docs/databases/hana)|```pip install hdbcli sqlalchemy-hana or pip install apache-superset[hana]```|```hana://{username}:{password}@{host}:{port}```|
@@ -69,5 +69,5 @@ exists, please file an issue on the
supporting it.
[StackOverflow](https://stackoverflow.com/questions/tagged/apache-superset+superset) and the
[Superset community Slack](https://join.slack.com/t/apache-superset/shared_invite/zt-uxbh5g36-AISUtHbzOXcu0BIj7kgUaw)
[Superset community Slack](https://join.slack.com/t/apache-superset/shared_invite/zt-l5f5e0av-fyYu8tlfdqbMdz_sPLwUqQ)
are great places to get help with connecting to databases in Superset.
@@ -8,8 +8,8 @@ version: 1
## Postgres
Note that, if you're using docker-compose, the Postgres connector library [psycopg2](https://www.psycopg.org/docs/)
comes out of the box with Superset.
Note that the Postgres connector library [psycopg2](https://www.psycopg.org/docs/) comes out of the
box with Superset.
Postgres sample connection parameters:
@@ -9,7 +9,7 @@ version: 1
## Snowflake
The recommended connector library for Snowflake is
[snowflake-sqlalchemy](https://pypi.org/project/snowflake-sqlalchemy/1.2.4/)<=1.2.4. (This version is required until Superset migrates to sqlalchemy>=1.4.0)
[snowflake-sqlalchemy](https://pypi.org/project/snowflake-sqlalchemy/).
The connection string for Snowflake looks like this:
@@ -1,77 +0,0 @@
---
name: Using Database Connection UI
menu: Connecting to Databases
route: /docs/databases/db-connection-ui
index: 1
version: 1
---
Here is the documentation on how to leverage the new DB Connection UI. This will provide admins the ability to enhance the UX for users who want to connect to new databases.
![db-conn-docs](https://user-images.githubusercontent.com/27827808/125499607-94e300aa-1c0f-4c60-b199-3f9de41060a3.gif)
There are now 3 steps when connecting to a database in the new UI:
Step 1: First the admin must inform superset what engine they want to connect to. This page is powered by the `/available` endpoint which pulls on the engines currently installed in your environment, so that only supported databases are shown.
Step 2: Next, the admin is prompted to enter database specific parameters. Depending on whether there is a dynamic form available for that specific engine, the admin will either see the new custom form or the legacy SQLAlchemy form. We currently have built dynamic forms for (Redshift, MySQL, Postgres, and BigQuery). The new form prompts the user for the parameters needed to connect (for example, username, password, host, port, etc.) and provides immediate feedback on errors.
Step 3: Finally, once the admin has connected to their DB using the dynamic form they have the opportunity to update any optional advanced settings.
We hope this feature will help eliminate a huge bottleneck for users to get into the application and start crafting datasets.
### How to setup up preferred database options and images
We added a new configuration option where the admin can define their preferred databases, in order:
```python
# A list of preferred databases, in order. These databases will be
# displayed prominently in the "Add Database" dialog. You should
# use the "engine_name" attribute of the corresponding DB engine spec
# in `superset/db_engine_specs/`.
PREFERRED_DATABASES: List[str] = [
"PostgreSQL",
"Presto",
"MySQL",
"SQLite",
]
```
For copyright reasons the logos for each database are not distributed with Superset.
### Setting images
- To set the images of your preferred database, admins must create a mapping in the `superset_text.yml` file with engine and location of the image. The image can be host locally inside your static/file directory or online (e.g. S3)
```python
DB_IMAGES:
postgresql: "path/to/image/postgres.jpg"
bigquery: "path/to/s3bucket/bigquery.jpg"
snowflake: "path/to/image/snowflake.jpg"
```
### How to add new database engines to available endpoint
Currently the new modal supports the following databases:
- Postgres
- Redshift
- MySQL
- BigQuery
When the user selects a database not in this list they will see the old dialog asking for the SQLAlchemy URI. New databases can be added gradually to the new flow. In order to support the rich configuration a DB engine spec needs to have the following attributes:
1. `parameters_schema`: a Marshmallow schema defining the parameters needed to configure the database. For Postgres this includes username, password, host, port, etc. ([see](https://github.com/apache/superset/blob/accee507c0819cd0d7bcfb5a3e1199bc81eeebf2/superset/db_engine_specs/base.py#L1309-L1320)).
2. `default_driver`: the name of the recommended driver for the DB engine spec. Many SQLAlchemy dialects support multiple drivers, but usually one is the official recommendation. For Postgres we use "psycopg2".
3. `sqlalchemy_uri_placeholder`: a string that helps the user in case they want to type the URI directly.
4. `encryption_parameters`: parameters used to build the URI when the user opts for an encrypted connection. For Postgres this is `{"sslmode": "require"}`.
In addition, the DB engine spec must implement these class methods:
- `build_sqlalchemy_uri(cls, parameters, encrypted_extra)`: this method receives the distinct parameters and builds the URI from them.
- `get_parameters_from_uri(cls, uri, encrypted_extra)`: this method does the opposite, extracting the parameters from a given URI.
- `validate_parameters(cls, parameters)`: this method is used for `onBlur` validation of the form. It should return a list of `SupersetError` indicating which parameters are missing, and which parameters are definitely incorrect ([example](https://github.com/apache/superset/blob/accee507c0819cd0d7bcfb5a3e1199bc81eeebf2/superset/db_engine_specs/base.py#L1404)).
For databases like MySQL and Postgres that use the standard format of `engine+driver://user:password@host:port/dbname` all you need to do is add the `BasicParametersMixin` to the DB engine spec, and then define the parameters 2-4 (`parameters_schema` is already present in the mixin).
For other databases you need to implement these methods yourself. The BigQuery DB engine spec is a good example of how to do that.
+1 -1
View File
@@ -11,7 +11,7 @@ The core contributors (or committers) to Superset communicate primarily in the f
which you can join):
- [Mailing list](https://lists.apache.org/list.html?dev@superset.apache.org)
- [Apache Superset Slack community](https://join.slack.com/t/apache-superset/shared_invite/zt-uxbh5g36-AISUtHbzOXcu0BIj7kgUaw)
- [Apache Superset Slack community](https://join.slack.com/t/apache-superset/shared_invite/zt-l5f5e0av-fyYu8tlfdqbMdz_sPLwUqQ)
- [Github issues and PR's](https://github.com/apache/superset/issues)
If you're interested in contributing, we recommend reading the Community Contribution Guide
@@ -38,7 +38,6 @@ To send alerts and reports to Slack channels, you need to create a new Slack App
3. Go to "OAuth & Permissions" section, and give the following scopes to your app:
- `incoming-webhook`
- `files:write`
- `chat:write`
4. At the top of the "OAuth and Permissions" section, click "install to workspace".
5. Select a default channel for your app and continue.
(You can post to any channel by inviting your Superset app into that channel).
@@ -114,5 +114,5 @@ pip install flower
You can run flower using:
```
celery --app=superset.tasks.celery_app:app flower
celery flower --app=superset.tasks.celery_app:app
```
+1 -1
View File
@@ -71,7 +71,7 @@ FEATURE_FLAGS = {
}
```
For this feature you will need a cache system and celery workers. All thumbnails are stored on cache
For this feature you will need a cache system and celery workers. All thumbnails are store on cache
and are processed asynchronously by the workers.
An example config where images are stored on S3 could be:
@@ -201,29 +201,6 @@ CUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager
]
```
### Flask app Configuration Hook
`FLASK_APP_MUTATOR` is a configuration function that can be provided in your environment, receives
the app object and can alter it in any way. For example, add `FLASK_APP_MUTATOR` into your
`superset_config.py` to setup session cookie expiration time to 24 hours:
```python
from flask import session
from flask import Flask
def make_session_permanent():
'''
Enable maxAge for the cookie 'session'
'''
session.permanent = True
# Set up max age of session to 24 hours
PERMANENT_SESSION_LIFETIME = timedelta(hours=24)
def FLASK_APP_MUTATOR(app: Flask) -> None:
app.before_request_funcs.setdefault(None, []).append(make_session_permanent)
```
### Feature Flags
To support a diverse set of users, Superset has some features that are not enabled by default. For
@@ -241,7 +218,7 @@ FEATURE_FLAGS = {
}
```
A current list of feature flags can be found in [RESOURCES/FEATURE_FLAGS.md](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md).
A current list of feature flags can be found in `RESOURCES/FEATURE_FLAGS.md`
### SIP 15
@@ -100,13 +100,3 @@ username: admin
```bash
password: admin
```
### 5. Connecting your local database instance to superset
When running Superset using `docker` or `docker-compose` it runs in its own docker container, as if the Superset was running in a separate machine entirely. Therefore attempts to connect to your local database with hostname `localhost` won't work as `localhost` refers to the docker container Superset is running in, and not your actual host machine. Fortunately, docker provides an easy way to access network resources in the host machine from inside a container, and we will leverage this capability to connect to our local database instance.
Here the instructions are for connecting to postgresql (which is running on your host machine) from Superset (which is running in its docker container). Other databases may have slightly different configurations but gist would be same and boils down to 2 steps -
1. **(Mac users may skip this step)** Configuring the local postgresql/database instance to accept public incoming connections. By default postgresql only allows incoming connections from `localhost` only, but re-iterating once again, `localhosts` are different for host machine and docker container. For postgresql this involves make one-line changes to the files `postgresql.conf` and `pg_hba.conf`, you can find helpful links tailored to your OS / PG version on the web easily for this task. For docker it suffices to only whitelist IPs `172.0.0.0/8` instead of `*`, but in any case you are *warned* that doing this in a production database *may* have disastrous consequences as you are opening your database to the public internet.
2. Instead of `localhost`, try using `host.docker.internal` (Mac users) or `172.18.0.1` (Linux users) as the host name when attempting to connect to the database. This is docker internal detail, what is happening is that in Mac systems docker creates a dns entry for the host name `host.docker.internal` which resolves to the correct address for the host machine, whereas in linux this is not the case (at least by default). If neither of these 2 hostnames work then you may want to find the exact host name you want to use, for that you can do `ifconfig` or `ip addr show` and look at the IP address of `docker0` interface that must have been created by docker for you. Alternately if you don't even see the `docker0` interface try (if needed with sudo) `docker network inspect bridge` and see if there is an entry for `"Gateway"` and note the IP address.
@@ -36,18 +36,6 @@ Install the following packages using the `yum` package manager:
sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel
```
In more recent versions of CentOS and Fedora, you may need to install a slightly different set of packages using `dnf`:
```
sudo dnf install gcc gcc-c++ libffi-devel python3-devel python3-pip python3-wheel openssl-devel cyrus-sasl-devel openldap-devel
```
Also, on CentOS, you may need to upgrade pip for the install to work:
```
pip3 install --upgrade pip
```
**Mac OS X**
If you're not on the latest version of OS X, we recommend upgrading because we've found that many
@@ -32,7 +32,7 @@ cross-domain request).
Add the following setting in your `superset_config.py` file:
- `SUPERSET_WEBSERVER_DOMAINS`: list of allowed hostnames for domain sharding feature.
- `SUPERSET_WEBSERVER_DOMAINS`: list of allowed hostnames for domain shareding feature.
### Middleware
@@ -10,34 +10,10 @@ version: 1
### Jinja Templates
SQL Lab and Explore supports [Jinja templating](https://jinja.palletsprojects.com/en/2.11.x/) in queries.
To enable templating, the `ENABLE_TEMPLATE_PROCESSING` feature flag needs to be enabled in
`superset_config.py`. When templating is enabled, python code can be embedded in virtual datasets and
in Custom SQL in the filter and metric controls in Explore. By default, the following variables are
made available in the Jinja context:
- `columns`: columns which to group by in the query
- `filter`: filters applied in the query
- `from_dttm`: start `datetime` value from the selected time range (`None` if undefined)
- `to_dttm`: end `datetime` value from the selected time range (`None` if undefined)
- `groupby`: columns which to group by in the query (deprecated)
- `metrics`: aggregate expressions in the query
- `row_limit`: row limit of the query
- `row_offset`: row offset of the query
- `table_columns`: columns available in the dataset
- `time_column`: temporal column of the query (`None` if undefined)
- `time_grain`: selected time grain (`None` if undefined)
For example, to add a time range to a virtual dataset, you can write the following:
```sql
SELECT * from tbl where dttm_col > '{{ from_dttm }}' and dttm_col < '{{ to_dttm }}'
```
To add custom functionality to the Jinja context, you need to to to overload the default Jinja
context in your environment by defining the `JINJA_CONTEXT_ADDONS` in your superset configuration
(`superset_config.py`). Objects referenced in this dictionary are made available for users to use
where the Jinja context is made available.
SQL Lab supports [Jinja templating](https://jinja.palletsprojects.com/en/2.11.x/) in queries. You'll
need to to overload the default Jinja context in your environment by defining the
JINJA_CONTEXT_ADDONS in your superset configuration (`superset_config.py`). Objects referenced in
this dictionary are made available for users to use in their SQL code.
```python
JINJA_CONTEXT_ADDONS = {
@@ -198,7 +174,7 @@ You can retrieve the value for a specific filter as a list using `{{ filter_valu
This is useful if:
- you want to use a filter component to filter a query where the name of filter component column doesn't match the one in the select statement
- you want to have the ability for filter inside the main query for performance purposes
- you want to have the ability for filter inside the main query for speed purposes
Here's a concrete example:
@@ -210,6 +186,11 @@ WHERE
GROUP BY action
```
You can use thisfeature to reference the start & end datetimes from a time filter using:
- `{{ from_dttm }}`: start datetime value
- `{{ to_dttm }}`: end datetime value
**Filters for a Specific Column**
The `{{ get_filters() }}` macro returns the filters applied to a given column. In addition to
+2 -2
View File
@@ -7,7 +7,7 @@ route: /docs/security
### Roles
Security in Superset is handled by Flask AppBuilder (FAB), an application development framework
built on top of Flask. FAB provides authentication, user management, permissions and roles.
built on top of Flask.”. FAB provides authentication, user management, permissions and roles.
Please read its [Security documentation](https://flask-appbuilder.readthedocs.io/en/latest/security.html).
### Provided Roles
@@ -15,7 +15,7 @@ Please read its [Security documentation](https://flask-appbuilder.readthedocs.io
Superset ships with a set of roles that are handled by Superset itself. You can assume
that these roles will stay up-to-date as Superset evolves (and as you update Superset versions).
Even though **Admin** users have the ability, we don't recommend altering the
Even though **Admin** users have the ability, we don't recommend that altering the
permissions associated with each role (e.g. by removing or adding permissions to them). The permissions
associated with each role will be re-synchronized to their original values when you run
the **superset init** command (often done between Superset versions).
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -22,7 +22,7 @@ maintainers:
- name: craig-rueda
email: craig@craigrueda.com
url: https://github.com/craig-rueda
version: 0.3.8
version: 0.3.4
dependencies:
- name: postgresql
version: 10.2.0
@@ -61,9 +61,6 @@ spec:
initContainers:
{{- tpl (toYaml .Values.supersetCeleryBeat.initContainers) . | nindent 6 }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{ toYaml . | nindent 6 }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
@@ -89,9 +86,6 @@ spec:
- name: superset-config
mountPath: {{ .Values.configMountPath | quote }}
readOnly: true
{{- with .Values.extraVolumeMounts }}
{{- tpl (toYaml .) $ | nindent 12 -}}
{{- end }}
resources:
{{ toYaml .Values.resources | indent 12 }}
{{- with .Values.nodeSelector }}
@@ -114,7 +108,4 @@ spec:
- name: superset-config
secret:
secretName: {{ tpl .Values.configFromSecret . }}
{{- with .Values.extraVolumes }}
{{- tpl (toYaml .) $ | nindent 8 -}}
{{- end }}
{{- end -}}
@@ -62,9 +62,6 @@ spec:
initContainers:
{{- tpl (toYaml .Values.supersetWorker.initContainers) . | nindent 6 }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{ toYaml . | nindent 6 }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
@@ -90,9 +87,6 @@ spec:
- name: superset-config
mountPath: {{ .Values.configMountPath | quote }}
readOnly: true
{{- with .Values.extraVolumeMounts }}
{{- tpl (toYaml .) $ | nindent 12 -}}
{{- end }}
resources:
{{ toYaml .Values.resources | indent 12 }}
{{- with .Values.nodeSelector }}
@@ -115,6 +109,3 @@ spec:
- name: superset-config
secret:
secretName: {{ tpl .Values.configFromSecret . }}
{{- with .Values.extraVolumes }}
{{- tpl (toYaml .) $ | nindent 8 -}}
{{- end }}
-15
View File
@@ -65,9 +65,6 @@ spec:
initContainers:
{{- tpl (toYaml .Values.supersetNode.initContainers) . | nindent 6 }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{ toYaml . | nindent 6 }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
@@ -82,12 +79,6 @@ spec:
value: {{ $value | quote }}
{{- end }}
{{- end }}
{{- if .Values.supersetNode.env }}
{{- range $key, $value := .Values.supersetNode.env }}
- name: {{ $key | quote}}
value: {{ $value | quote }}
{{- end }}
{{- end }}
envFrom:
- secretRef:
name: {{ tpl .Values.envFromSecret . | quote }}
@@ -104,9 +95,6 @@ spec:
mountPath: {{ .Values.extraConfigMountPath | quote }}
readOnly: true
{{- end }}
{{- with .Values.extraVolumeMounts }}
{{- tpl (toYaml .) $ | nindent 12 -}}
{{- end }}
ports:
- name: http
containerPort: {{ .Values.service.port }}
@@ -139,6 +127,3 @@ spec:
configMap:
name: {{ template "superset.fullname" . }}-extra-config
{{- end }}
{{- with .Values.extraVolumes }}
{{- tpl (toYaml .) $ | nindent 8 -}}
{{- end }}
-6
View File
@@ -60,9 +60,6 @@ spec:
mountPath: {{ .Values.extraConfigMountPath | quote }}
readOnly: true
{{- end }}
{{- with .Values.extraVolumeMounts }}
{{- tpl (toYaml .) $ | nindent 10 -}}
{{- end }}
command: {{ tpl (toJson .Values.init.command) . }}
resources:
{{ toYaml .Values.init.resources | indent 10 }}
@@ -79,8 +76,5 @@ spec:
configMap:
name: {{ template "superset.fullname" . }}-extra-config
{{- end }}
{{- with .Values.extraVolumes }}
{{- tpl (toYaml .) $ | nindent 8 -}}
{{- end }}
restartPolicy: Never
{{- end }}
+1 -27
View File
@@ -82,22 +82,6 @@ extraConfigs: {}
extraSecrets: {}
extraVolumes: []
# - name: customConfig
# configMap:
# name: '{{ template "superset.fullname" . }}-custom-config'
# - name: additionalSecret
# secret:
# secretName: my-secret
# defaultMode: 0600
extraVolumeMounts: []
# - name: customConfig
# mountPath: /mnt/config
# readOnly: true
# - name: additionalSecret:
# mountPath: /mnt/secret
# A dictionary of overrides to append at the end of superset_config.py - the name does not matter
# WARNING: the order is not guaranteed
configOverrides: {}
@@ -183,15 +167,6 @@ resources: {}
# cpu: 100m
# memory: 128Mi
##
## Custom hostAliases for all superset pods
## https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/
hostAliases: []
# - hostnames:
# - nodns.my.lan
# ip: 18.27.36.45
##
## Superset node configuration
supersetNode:
@@ -207,7 +182,6 @@ supersetNode:
db_user: superset
db_pass: superset
db_name: superset
env: {}
forceReload: false # If true, forces deployment to reload on each upgrade
initContainers:
- name: wait-for-postgres
@@ -270,7 +244,7 @@ supersetCeleryBeat:
## Init job configuration
init:
# Configure resources
# Warning: fab command consumes a lot of ram and can
# Warning: fab commant consumes a lot of ram and can
# cause the process to be killed due to OOM if it exceeds limit
resources: {}
# limits:
-1
View File
@@ -18,4 +18,3 @@
-e file:.
pyrsistent>=0.16.1,<0.17
zipp==3.4.1
sasl==0.3.1
+101 -85
View File
@@ -1,4 +1,4 @@
# SHA1:04efc15075d69b1a2b5fa6c76b84c77a2f5c04e3
# SHA1:0862095245a068ae2fc00217da78331e1e7ae505
#
# This file is autogenerated by pip-compile-multi
# To update, run:
@@ -7,9 +7,9 @@
#
-e file:.
# via -r requirements/base.in
aiohttp==3.7.4.post0
aiohttp==3.7.2
# via slackclient
alembic==1.6.5
alembic==1.4.3
# via flask-migrate
amqp==2.6.1
# via kombu
@@ -17,17 +17,17 @@ apispec[yaml]==3.3.2
# via flask-appbuilder
async-timeout==3.0.1
# via aiohttp
attrs==21.2.0
attrs==20.2.0
# via
# aiohttp
# jsonschema
babel==2.9.1
babel==2.8.0
# via flask-babel
backoff==1.11.1
backoff==1.10.0
# via apache-superset
billiard==3.6.4.0
billiard==3.6.3.0
# via celery
bleach==3.3.1
bleach==3.3.0
# via apache-superset
brotli==1.0.9
# via flask-compress
@@ -35,9 +35,9 @@ cachelib==0.1.1
# via apache-superset
celery==4.4.7
# via apache-superset
cffi==1.14.6
cffi==1.14.3
# via cryptography
chardet==4.0.0
chardet==3.0.4
# via aiohttp
click==7.1.2
# via
@@ -48,23 +48,53 @@ colorama==0.4.4
# via
# apache-superset
# flask-appbuilder
convertdate==2.3.2
contextlib2==0.6.0.post1
# via apache-superset
convertdate==2.3.0
# via holidays
cron-descriptor==1.2.24
# via apache-superset
croniter==1.0.15
croniter==0.3.36
# via apache-superset
cryptography==3.4.7
cryptography==3.3.2
# via apache-superset
defusedxml==0.7.1
decorator==4.4.2
# via retry
defusedxml==0.6.0
# via python3-openid
deprecation==2.1.0
# via apache-superset
dnspython==2.1.0
dnspython==2.0.0
# via email-validator
email-validator==1.1.3
email-validator==1.1.1
# via flask-appbuilder
flask==1.1.4
flask-appbuilder==3.3.0
# via apache-superset
flask-babel==1.0.0
# via flask-appbuilder
flask-caching==1.10.1
# via apache-superset
flask-compress==1.8.0
# via apache-superset
flask-jwt-extended==3.24.1
# via flask-appbuilder
flask-login==0.4.1
# via flask-appbuilder
flask-migrate==2.5.3
# via apache-superset
flask-openid==1.2.5
# via flask-appbuilder
flask-sqlalchemy==2.4.4
# via
# flask-appbuilder
# flask-migrate
flask-talisman==0.7.0
# via apache-superset
flask-wtf==0.14.3
# via
# apache-superset
# flask-appbuilder
flask==1.1.2
# via
# apache-superset
# flask-appbuilder
@@ -77,35 +107,9 @@ flask==1.1.4
# flask-openid
# flask-sqlalchemy
# flask-wtf
flask-appbuilder==3.3.2
# via apache-superset
flask-babel==1.0.0
# via flask-appbuilder
flask-caching==1.10.1
# via apache-superset
flask-compress==1.10.1
# via apache-superset
flask-jwt-extended==3.25.1
# via flask-appbuilder
flask-login==0.4.1
# via flask-appbuilder
flask-migrate==3.1.0
# via apache-superset
flask-openid==1.3.0
# via flask-appbuilder
flask-sqlalchemy==2.5.1
# via
# flask-appbuilder
# flask-migrate
flask-talisman==0.8.1
# via apache-superset
flask-wtf==0.14.3
# via
# apache-superset
# flask-appbuilder
geographiclib==1.52
geographiclib==1.50
# via geopy
geopy==2.2.0
geopy==2.0.0
# via apache-superset
graphlib-backport==1.0.3
# via apache-superset
@@ -113,12 +117,17 @@ gunicorn==20.0.4
# via apache-superset
holidays==0.10.3
# via apache-superset
humanize==3.11.0
humanize==3.1.0
# via apache-superset
idna==3.2
idna==2.10
# via
# email-validator
# yarl
importlib-metadata==2.1.1
# via
# jsonschema
# kombu
# markdown
isodate==0.6.0
# via apache-superset
itsdangerous==1.1.0
@@ -136,48 +145,52 @@ kombu==4.6.11
# via celery
korean-lunar-calendar==0.2.1
# via holidays
mako==1.1.4
mako==1.1.3
# via alembic
markdown==3.3.4
markdown==3.3.3
# via apache-superset
markupsafe==2.0.1
markupsafe==1.1.1
# via
# jinja2
# mako
# wtforms
marshmallow==3.13.0
# via
# flask-appbuilder
# marshmallow-enum
# marshmallow-sqlalchemy
marshmallow-enum==1.5.1
# via flask-appbuilder
marshmallow-sqlalchemy==0.23.1
# via flask-appbuilder
msgpack==1.0.2
marshmallow==3.9.0
# via
# flask-appbuilder
# marshmallow-enum
# marshmallow-sqlalchemy
msgpack==1.0.0
# via apache-superset
multidict==5.1.0
multidict==5.0.0
# via
# aiohttp
# yarl
numpy==1.21.1
natsort==7.0.1
# via croniter
numpy==1.19.4
# via
# pandas
# pyarrow
packaging==21.0
# via
# bleach
# deprecation
pandas==1.2.5
packaging==20.4
# via bleach
pandas==1.2.2
# via apache-superset
parsedatetime==2.6
# via apache-superset
pathlib2==2.3.5
# via apache-superset
pgsanity==0.2.9
# via apache-superset
polyline==1.4.0
# via apache-superset
prison==0.1.3
# via flask-appbuilder
py==1.9.0
# via retry
pyarrow==4.0.1
# via apache-superset
pycparser==2.20
@@ -187,7 +200,7 @@ pyjwt==1.7.1
# apache-superset
# flask-appbuilder
# flask-jwt-extended
pymeeus==0.5.11
pymeeus==0.3.7
# via convertdate
pyparsing==2.4.7
# via
@@ -197,7 +210,7 @@ pyrsistent==0.16.1
# via
# -r requirements/base.in
# jsonschema
python-dateutil==2.8.2
python-dateutil==2.8.1
# via
# alembic
# apache-superset
@@ -205,7 +218,7 @@ python-dateutil==2.8.2
# flask-appbuilder
# holidays
# pandas
python-dotenv==0.19.0
python-dotenv==0.15.0
# via apache-superset
python-editor==1.0.4
# via alembic
@@ -213,7 +226,7 @@ python-geohash==0.8.5
# via apache-superset
python3-openid==3.2.0
# via flask-openid
pytz==2021.1
pytz==2020.4
# via
# babel
# celery
@@ -226,30 +239,36 @@ pyyaml==5.4.1
# apispec
redis==3.5.3
# via apache-superset
sasl==0.3.1
# via -r requirements/base.in
retry==0.9.2
# via apache-superset
selenium==3.141.0
# via apache-superset
simplejson==3.17.3
simplejson==3.17.2
# via apache-superset
six==1.16.0
six==1.15.0
# via
# bleach
# cryptography
# flask-jwt-extended
# flask-talisman
# holidays
# isodate
# jsonschema
# packaging
# pathlib2
# polyline
# prison
# pyrsistent
# python-dateutil
# sasl
# sqlalchemy-utils
# wtforms-json
slackclient==2.5.0
# via apache-superset
sqlalchemy==1.3.24
sqlalchemy-utils==0.36.8
# via
# apache-superset
# flask-appbuilder
sqlalchemy==1.3.20
# via
# alembic
# apache-superset
@@ -257,19 +276,14 @@ sqlalchemy==1.3.24
# flask-sqlalchemy
# marshmallow-sqlalchemy
# sqlalchemy-utils
sqlalchemy-utils==0.36.8
# via
# apache-superset
# flask-appbuilder
sqlparse==0.3.0
# via apache-superset
tabulate==0.8.9
# via apache-superset
typing-extensions==3.10.0.0
typing-extensions==3.7.4.3
# via
# aiohttp
# apache-superset
urllib3==1.26.6
# yarl
urllib3==1.25.11
# via selenium
vine==1.3.0
# via
@@ -281,16 +295,18 @@ werkzeug==1.0.1
# via
# flask
# flask-jwt-extended
wtforms-json==0.3.3
# via apache-superset
wtforms==2.3.3
# via
# flask-wtf
# wtforms-json
wtforms-json==0.3.3
# via apache-superset
yarl==1.6.3
yarl==1.6.2
# via aiohttp
zipp==3.4.1
# via -r requirements/base.in
# via
# -r requirements/base.in
# importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
# setuptools
+1 -2
View File
@@ -24,5 +24,4 @@ pyhive[hive]>=0.6.1
psycopg2-binary==2.8.5
tableschema
thrift>=0.11.0,<1.0.0
progress>=1.5,<2
pyinstrument>=4.0.2,<5
pygithub>=1.54.1,<2.0.0
+31 -26
View File
@@ -1,4 +1,4 @@
# SHA1:e4f3ea65026a8aec3735d6d9977f89fef4a1a4f9
# SHA1:1b4d15a41f3498d2eb930ac3d3d4ce5d1f218a2f
#
# This file is autogenerated by pip-compile-multi
# To update, run:
@@ -8,77 +8,82 @@
-r base.txt
-e file:.
# via -r requirements/base.in
boto3==1.18.19
boto3==1.16.10
# via tabulator
botocore==1.21.19
botocore==1.19.10
# via
# boto3
# s3transfer
cached-property==1.5.2
# via tableschema
certifi==2021.5.30
certifi==2020.6.20
# via requests
charset-normalizer==2.0.4
# via requests
et-xmlfile==1.1.0
deprecated==1.2.11
# via pygithub
et-xmlfile==1.0.1
# via openpyxl
flask-cors==3.0.10
flask-cors==3.0.9
# via -r requirements/development.in
future==0.18.2
# via pyhive
ijson==3.1.4
ijson==3.1.2.post0
# via tabulator
jdcal==1.4.1
# via openpyxl
jmespath==0.10.0
# via
# boto3
# botocore
jsonlines==2.0.0
jsonlines==1.2.0
# via tabulator
linear-tsv==1.1.0
# via tabulator
mysqlclient==1.4.2.post1
# via -r requirements/development.in
openpyxl==3.0.7
openpyxl==3.0.5
# via tabulator
pillow==7.2.0
# via -r requirements/development.in
progress==1.6
# via -r requirements/development.in
psycopg2-binary==2.8.5
# via -r requirements/development.in
pure-sasl==0.6.2
# via thrift-sasl
pydruid==0.6.2
pydruid==0.6.1
# via -r requirements/development.in
pyhive[hive]==0.6.4
pygithub==1.54.1
# via -r requirements/development.in
pyinstrument==4.0.2
pyhive[hive]==0.6.3
# via -r requirements/development.in
requests==2.26.0
requests==2.24.0
# via
# pydruid
# pygithub
# tableschema
# tabulator
rfc3986==1.5.0
rfc3986==1.4.0
# via tableschema
s3transfer==0.5.0
s3transfer==0.3.3
# via boto3
tableschema==1.20.2
sasl==0.2.1
# via
# pyhive
# thrift-sasl
tableschema==1.20.0
# via -r requirements/development.in
tabulator==1.53.5
tabulator==1.52.5
# via tableschema
thrift-sasl==0.4.2
# via pyhive
thrift==0.13.0
# via
# -r requirements/development.in
# pyhive
# thrift-sasl
thrift-sasl==0.4.3
# via pyhive
unicodecsv==0.14.1
# via
# tableschema
# tabulator
xlrd==2.0.1
wrapt==1.12.1
# via deprecated
xlrd==1.2.0
# via tabulator
# The following packages are considered to be unsafe in a requirements file:
+4 -4
View File
@@ -8,15 +8,15 @@
-r base.txt
-e file:.
# via -r requirements/base.in
gevent==21.8.0
gevent==20.9.0
# via -r requirements/docker.in
greenlet==1.1.1
greenlet==0.4.17
# via gevent
psycopg2-binary==2.9.1
psycopg2-binary==2.8.6
# via -r requirements/docker.in
zope.event==4.5.0
# via gevent
zope.interface==5.4.0
zope.interface==5.1.2
# via gevent
# The following packages are considered to be unsafe in a requirements file:
-3
View File
@@ -17,6 +17,3 @@
pip-compile-multi!=1.5.9
pre-commit
tox
py>=1.10.0
click==7.1.2
packaging==21.0
+25 -29
View File
@@ -1,74 +1,70 @@
# SHA1:17ab2346746deadfc557e1df96014e77c8337f4b
# SHA1:f95c1152ed0bcc554f3668440d63eec2a7d1567c
#
# This file is autogenerated by pip-compile-multi
# To update, run:
#
# pip-compile-multi
#
backports.entry-points-selectable==1.1.0
appdirs==1.4.4
# via virtualenv
cfgv==3.3.0
cfgv==3.2.0
# via pre-commit
click==7.1.2
# via
# -r requirements/integration.in
# pip-compile-multi
# pip-tools
distlib==0.3.2
distlib==0.3.1
# via virtualenv
filelock==3.0.12
# via
# tox
# virtualenv
identify==2.2.13
identify==1.5.9
# via pre-commit
nodeenv==1.6.0
# via pre-commit
packaging==21.0
importlib-metadata==2.1.1
# via
# -r requirements/integration.in
# pluggy
# pre-commit
# tox
pep517==0.11.0
# via pip-tools
# virtualenv
nodeenv==1.5.0
# via pre-commit
packaging==20.4
# via tox
pip-compile-multi==2.4.1
# via -r requirements/integration.in
pip-tools==6.2.0
pip-tools==5.3.1
# via pip-compile-multi
platformdirs==2.2.0
# via virtualenv
pluggy==0.13.1
# via tox
pre-commit==2.14.0
pre-commit==2.8.2
# via -r requirements/integration.in
py==1.10.0
# via
# -r requirements/integration.in
# tox
py==1.9.0
# via tox
pyparsing==2.4.7
# via packaging
pyyaml==5.4.1
# via pre-commit
six==1.16.0
six==1.15.0
# via
# packaging
# pip-tools
# tox
# virtualenv
toml==0.10.2
# via
# pre-commit
# tox
tomli==1.2.1
# via pep517
toposort==1.6
toposort==1.5
# via pip-compile-multi
tox==3.24.1
tox==3.20.1
# via -r requirements/integration.in
virtualenv==20.7.2
virtualenv==20.1.0
# via
# pre-commit
# tox
wheel==0.37.0
# via pip-tools
zipp==3.4.1
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
# pip
# setuptools
+2 -4
View File
@@ -22,15 +22,13 @@ freezegun
ipdb
# pinning ipython as pip-compile-multi was bringing higher version
# of the ipython that was not found in CI
ipython
ipython==7.16.1
openapi-spec-validator
openpyxl
parameterized
pyfakefs
pyhive[presto]>=0.6.3
pylint==2.9.6
pylint
pytest
pytest-cov
statsd
pytest-mock
packaging==21.0
+29 -44
View File
@@ -1,4 +1,4 @@
# SHA1:97a1d3094738243d47824948a0d6fdcb4a784524
# SHA1:dba8c39bbdcb85b86e83af855d023b55a2674e87
#
# This file is autogenerated by pip-compile-multi
# To update, run:
@@ -9,91 +9,76 @@
-r integration.txt
-e file:.
# via -r requirements/base.in
appnope==0.1.2
# via ipython
astroid==2.6.6
astroid==2.4.2
# via pylint
backcall==0.2.0
# via ipython
coverage==5.5
coverage==5.3
# via pytest-cov
decorator==5.0.9
# via
# ipdb
# ipython
docker==5.0.0
docker==4.3.1
# via -r requirements/testing.in
flask-testing==0.8.1
flask-testing==0.8.0
# via -r requirements/testing.in
freezegun==1.1.0
freezegun==1.0.0
# via -r requirements/testing.in
iniconfig==1.1.1
# via pytest
ipdb==0.13.9
ipdb==0.13.4
# via -r requirements/testing.in
ipython==7.26.0
ipython-genutils==0.2.0
# via traitlets
ipython==7.16.1
# via
# -r requirements/testing.in
# ipdb
ipython-genutils==0.2.0
# via traitlets
isort==5.9.3
isort==5.6.4
# via pylint
jedi==0.18.0
jedi==0.17.2
# via ipython
lazy-object-proxy==1.6.0
lazy-object-proxy==1.4.3
# via astroid
matplotlib-inline==0.1.2
# via ipython
mccabe==0.6.1
# via pylint
openapi-schema-validator==0.1.5
# via openapi-spec-validator
openapi-spec-validator==0.3.1
openapi-spec-validator==0.2.9
# via -r requirements/testing.in
parameterized==0.8.1
parameterized==0.7.4
# via -r requirements/testing.in
parso==0.8.2
parso==0.7.1
# via jedi
pexpect==4.8.0
# via ipython
pickleshare==0.7.5
# via ipython
prompt-toolkit==3.0.19
prompt-toolkit==3.0.8
# via ipython
ptyprocess==0.7.0
ptyprocess==0.6.0
# via pexpect
pyfakefs==4.5.0
pyfakefs==4.4.0
# via -r requirements/testing.in
pygments==2.9.0
pygments==2.7.2
# via ipython
pyhive[hive,presto]==0.6.4
pyhive[hive,presto]==0.6.3
# via
# -r requirements/development.in
# -r requirements/testing.in
pylint==2.9.6
pylint==2.6.0
# via -r requirements/testing.in
pytest==6.2.4
pytest-cov==2.10.1
# via -r requirements/testing.in
pytest==6.1.2
# via
# -r requirements/testing.in
# pytest-cov
# pytest-mock
pytest-cov==2.12.1
# via -r requirements/testing.in
pytest-mock==3.6.1
# via -r requirements/testing.in
statsd==3.3.0
# via -r requirements/testing.in
traitlets==5.0.5
# via
# ipython
# matplotlib-inline
# via ipython
typed-ast==1.4.3
# via astroid
wcwidth==0.2.5
# via prompt-toolkit
websocket-client==1.2.0
websocket-client==0.57.0
# via docker
wrapt==1.12.1
# via astroid
# The following packages are considered to be unsafe in a requirements file:
# pip
+13 -35
View File
@@ -29,8 +29,7 @@ from flask import current_app
from flask_appbuilder import Model
from flask_migrate import downgrade, upgrade
from graphlib import TopologicalSorter # pylint: disable=wrong-import-order
from progress.bar import ChargingBar
from sqlalchemy import create_engine, inspect
from sqlalchemy import create_engine, inspect, Table
from sqlalchemy.ext.automap import automap_base
from superset import db
@@ -44,13 +43,9 @@ def import_migration_script(filepath: Path) -> ModuleType:
Import migration script as if it were a module.
"""
spec = importlib.util.spec_from_file_location(filepath.stem, filepath)
if spec:
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module) # type: ignore
return module
raise Exception(
"No module spec found in location: `{path}`".format(path=str(filepath))
)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module) # type: ignore
return module
def extract_modified_tables(module: ModuleType) -> Set[str]:
@@ -98,22 +93,11 @@ def find_models(module: ModuleType) -> List[Type[Model]]:
engine = create_engine(sqlalchemy_uri)
Base = automap_base()
Base.prepare(engine, reflect=True)
seen = set()
while tables:
table = tables.pop()
seen.add(table)
for table in tables:
model = getattr(Base.classes, table)
model.__tablename__ = table
models.append(model)
# add other models referenced in foreign keys
inspector = inspect(model)
for column in inspector.columns.values():
for foreign_key in column.foreign_keys:
table = foreign_key.column.table.name
if table not in seen:
tables.add(table)
# sort topologically so we can create entities in order and
# maintain relationships (eg, create a database before creating
# a slice)
@@ -123,8 +107,7 @@ def find_models(module: ModuleType) -> List[Type[Model]]:
dependent_tables: List[str] = []
for column in inspector.columns.values():
for foreign_key in column.foreign_keys:
if foreign_key.column.table.name != model.__tablename__:
dependent_tables.append(foreign_key.column.table.name)
dependent_tables.append(foreign_key.target_fullname.split(".")[0])
sorter.add(model.__tablename__, *dependent_tables)
order = list(sorter.static_order())
models.sort(key=lambda model: order.index(model.__tablename__))
@@ -194,23 +177,18 @@ def main(
for model in models:
missing = min_entities - model_rows[model]
if missing > 0:
entities: List[Model] = []
print(f"- Adding {missing} entities to the {model.__name__} model")
bar = ChargingBar("Processing", max=missing)
try:
for entity in add_sample_rows(session, model, missing):
entities.append(entity)
bar.next()
added_models = add_sample_rows(session, model, missing)
except Exception:
session.rollback()
raise
bar.finish()
model_rows[model] = min_entities
session.add_all(entities)
session.commit()
if auto_cleanup:
new_models[model].extend(entities)
new_models[model].extend(added_models)
start = time.time()
upgrade(revision=revision)
duration = time.time() - start
@@ -218,10 +196,6 @@ def main(
results[f"{min_entities}+"] = duration
min_entities *= 10
print("\nResults:\n")
for label, duration in results.items():
print(f"{label}: {duration:.2f} s")
if auto_cleanup:
print("Cleaning up DB")
# delete in reverse order of creation to handle relationships
@@ -236,6 +210,10 @@ def main(
upgrade(revision=revision)
print("Reverted")
print("\nResults:\n")
for label, duration in results.items():
print(f"{label}: {duration:.2f} s")
if __name__ == "__main__":
from superset.app import create_app
+9 -15
View File
@@ -33,7 +33,7 @@ Example:
./cancel_github_workflows.py 1024 --include-last
"""
import os
from typing import Any, Dict, Iterable, Iterator, List, Optional, Union
from typing import Iterable, List, Optional, Union
import click
import requests
@@ -45,9 +45,7 @@ github_token = os.environ.get("GITHUB_TOKEN")
github_repo = os.environ.get("GITHUB_REPOSITORY", "apache/superset")
def request(
method: Literal["GET", "POST", "DELETE", "PUT"], endpoint: str, **kwargs: Any
) -> Dict[str, Any]:
def request(method: Literal["GET", "POST", "DELETE", "PUT"], endpoint: str, **kwargs):
resp = requests.request(
method,
f"https://api.github.com/{endpoint.lstrip('/')}",
@@ -59,14 +57,10 @@ def request(
return resp
def list_runs(
repo: str, params: Optional[Dict[str, str]] = None,
) -> Iterator[Dict[str, Any]]:
def list_runs(repo: str, params=None):
"""List all github workflow runs.
Returns:
An iterator that will iterate through all pages of matching runs."""
if params is None:
params = {}
page = 1
total_count = 10000
while page * 100 < total_count:
@@ -81,11 +75,11 @@ def list_runs(
page += 1
def cancel_run(repo: str, run_id: Union[str, int]) -> Dict[str, Any]:
def cancel_run(repo: str, run_id: Union[str, int]):
return request("POST", f"/repos/{repo}/actions/runs/{run_id}/cancel")
def get_pull_request(repo: str, pull_number: Union[str, int]) -> Dict[str, Any]:
def get_pull_request(repo: str, pull_number: Union[str, int]):
return request("GET", f"/repos/{repo}/pulls/{pull_number}")
@@ -95,7 +89,7 @@ def get_runs(
user: Optional[str] = None,
statuses: Iterable[str] = ("queued", "in_progress"),
events: Iterable[str] = ("pull_request", "push"),
) -> List[Dict[str, Any]]:
):
"""Get workflow runs associated with the given branch"""
return [
item
@@ -107,7 +101,7 @@ def get_runs(
]
def print_commit(commit: Dict[str, Any], branch: str) -> None:
def print_commit(commit, branch):
"""Print out commit message for verification"""
indented_message = " \n".join(commit["message"].split("\n"))
date_str = (
@@ -157,7 +151,7 @@ def cancel_github_workflows(
event: List[str],
include_last: bool,
include_running: bool,
) -> None:
):
"""Cancel running or queued GitHub workflows by branch or pull request ID"""
if not github_token:
raise ClickException("Please provide GITHUB_TOKEN as an env variable")
@@ -237,7 +231,7 @@ def cancel_github_workflows(
try:
print(f"[{entry['status']}] {entry['name']}", end="\r")
cancel_run(repo, entry["id"])
print(f"[Canceled] {entry['name']} ")
print(f"[Cancled] {entry['name']} ")
except ClickException as error:
print(f"[Error: {error.message}] {entry['name']} ")
print("")
+2 -2
View File
@@ -34,10 +34,10 @@ REGEXES=()
for CHECK in "$@"
do
if [[ ${CHECK} == "python" ]]; then
REGEX="(^\.github\/workflows\/.*python|^tests\/|^superset\/|^setup\.py|^requirements\/.+\.txt|^\.pylintrc)"
REGEX="(^\.github\/workflows\/.*python|^tests\/|^superset\/|^setup\.py|^requirements\/.+\.txt)"
echo "Searching for changes in python files"
elif [[ ${CHECK} == "frontend" ]]; then
REGEX="(^\.github\/workflows\/.*(bashlib|frontend|e2e)|^superset-frontend\/)"
REGEX="(^\.github\/workflows\/.*(frontend|e2e)|^superset-frontend\/)"
echo "Searching for changes in frontend files"
else
echo "Invalid check: \"${CHECK}\". Falling back to exiting with FAILURE code"
+1 -1
View File
@@ -19,7 +19,7 @@ from collections import defaultdict
from superset import security_manager
def cleanup_permissions() -> None:
def cleanup_permissions():
# 1. Clean up duplicates.
pvms = security_manager.get_session.query(
security_manager.permissionview_model
+7 -9
View File
@@ -30,23 +30,21 @@ combine_as_imports = true
include_trailing_comma = true
line_length = 88
known_first_party = superset
known_third_party =alembic,apispec,backoff,bleach,cachelib,celery,click,colorama,cron_descriptor,croniter,cryptography,dateutil,deprecation,flask,flask_appbuilder,flask_babel,flask_caching,flask_compress,flask_jwt_extended,flask_login,flask_migrate,flask_sqlalchemy,flask_talisman,flask_testing,flask_wtf,freezegun,geohash,geopy,graphlib,holidays,humanize,isodate,jinja2,jwt,markdown,markupsafe,marshmallow,marshmallow_enum,msgpack,numpy,pandas,parameterized,parsedatetime,pgsanity,pkg_resources,polyline,prison,progress,pyarrow,pyhive,pyparsing,pytest,pytest_mock,pytz,redis,requests,selenium,setuptools,simplejson,slack,sqlalchemy,sqlalchemy_utils,sqlparse,typing_extensions,urllib3,werkzeug,wtforms,wtforms_json,yaml
known_third_party =alembic,apispec,backoff,bleach,cachelib,celery,click,colorama,contextlib2,cron_descriptor,croniter,cryptography,dateutil,deprecation,flask,flask_appbuilder,flask_babel,flask_caching,flask_compress,flask_jwt_extended,flask_login,flask_migrate,flask_sqlalchemy,flask_talisman,flask_testing,flask_wtf,freezegun,geohash,geopy,graphlib,holidays,humanize,isodate,jinja2,jwt,markdown,markupsafe,marshmallow,marshmallow_enum,msgpack,numpy,pandas,parameterized,parsedatetime,pathlib2,pgsanity,pkg_resources,polyline,prison,pyarrow,pyhive,pyparsing,pytest,pytz,redis,requests,retry,selenium,setuptools,simplejson,slack,sqlalchemy,sqlalchemy_utils,sqlparse,typing_extensions,werkzeug,wtforms,wtforms_json,yaml
multi_line_output = 3
order_by_type = false
[mypy]
check_untyped_defs = true
disallow_any_generics = true
disallow_untyped_calls = true
disallow_untyped_defs = true
ignore_missing_imports = true
no_implicit_optional = true
warn_unused_ignores = true
[mypy-superset.*]
check_untyped_defs = true
disallow_untyped_calls = true
disallow_untyped_defs = true
warn_unused_ignores = false
[mypy-superset.migrations.versions.*]
ignore_errors = true
[mypy-tests.*]
check_untyped_defs = false
disallow_untyped_calls = false
disallow_untyped_defs = false
+14 -16
View File
@@ -32,7 +32,7 @@ with io.open("README.md", "r", encoding="utf-8") as f:
long_description = f.read()
def get_git_sha() -> str:
def get_git_sha():
try:
s = subprocess.check_output(["git", "rev-parse", "HEAD"])
return s.decode().strip()
@@ -70,12 +70,13 @@ setup(
"celery>=4.3.0, <5.0.0, !=4.4.1",
"click<8",
"colorama",
"contextlib2",
"croniter>=0.3.28",
"cron-descriptor",
"cryptography>=3.3.2",
"deprecation>=2.1.0, <2.2.0",
"flask>=1.1.0, <2.0.0",
"flask-appbuilder>=3.3.2, <4.0.0",
"flask-appbuilder>=3.3.0, <4.0.0",
"flask-caching>=1.10.0",
"flask-compress",
"flask-talisman",
@@ -86,12 +87,13 @@ setup(
"gunicorn>=20.0.2, <20.1",
"holidays==0.10.3", # PINNED! https://github.com/dr-prodigy/python-holidays/issues/406
"humanize",
"itsdangerous>=1.0.0, <2.0.0", # https://github.com/apache/superset/pull/14627
"itsdangerous>=1.0.0, <2.0.0",
"isodate",
"markdown>=3.0",
"msgpack>=1.0.0, <1.1",
"pandas>=1.2.2, <1.3",
"parsedatetime",
"pathlib2",
"pgsanity",
"polyline",
"pyparsing>=2.4.7, <3.0.0",
@@ -102,19 +104,21 @@ setup(
"pyyaml>=5.4",
"PyJWT>=1.7.1, <2",
"redis",
"retry>=0.9.2",
"selenium>=3.141.0",
"simplejson>=3.15.0",
"slackclient==2.5.0", # PINNED! slack changes file upload api in the future versions
"sqlalchemy>=1.3.16, <1.4, !=1.3.21",
"sqlalchemy-utils>=0.36.6, <0.37",
"sqlalchemy-utils>=0.36.6,<0.37",
"sqlparse==0.3.0", # PINNED! see https://github.com/andialbrecht/sqlparse/issues/562
"tabulate==0.8.9",
"typing-extensions>=3.10, <4", # needed to support Literal (3.8) and TypeGuard (3.10)
"typing-extensions>=3.7.4.3,<4", # needed to support typing.Literal on py37
"wtforms-json",
"pyparsing>=2.4.7, <3.0.0",
"holidays==0.10.3", # PINNED! https://github.com/dr-prodigy/python-holidays/issues/406
"deprecation>=2.1.0, <2.2.0",
],
extras_require={
"athena": ["pyathena>=1.10.8, <1.11"],
"aurora-data-api": ["preset-sqlalchemy-aurora-data-api>=0.2.8,<0.3"],
"athena": ["pyathena>=1.10.8,<1.11"],
"bigquery": [
"pandas_gbq>=0.10.0",
"pybigquery>=0.4.10",
@@ -134,7 +138,7 @@ setup(
"exasol": ["sqlalchemy-exasol>=2.1.0, <2.2"],
"excel": ["xlrd>=1.2.0, <1.3"],
"firebird": ["sqlalchemy-firebird>=0.7.0, <0.8"],
"gsheets": ["shillelagh[gsheetsapi]>=1.0.3, <2"],
"gsheets": ["shillelagh[gsheetsapi]>=0.7.1, <0.8"],
"hana": ["hdbcli==2.4.162", "sqlalchemy_hana==0.4.0"],
"hive": ["pyhive[hive]>=0.6.1", "tableschema", "thrift>=0.11.0, <1.0.0"],
"impala": ["impyla>0.16.2, <0.17"],
@@ -148,13 +152,7 @@ setup(
"trino": ["sqlalchemy-trino>=0.2"],
"prophet": ["prophet>=1.0.1, <1.1", "pystan<3.0"],
"redshift": ["sqlalchemy-redshift>=0.8.1, < 0.9"],
"rockset": ["rockset>=0.7.68, <0.8"],
"shillelagh": [
"shillelagh[datasetteapi,gsheetsapi,socrata,weatherapi]>=1.0.3, <2"
],
"snowflake": [
"snowflake-sqlalchemy==1.2.4"
], # PINNED! 1.2.5 introduced breaking changes requiring sqlalchemy>=1.4.0
"snowflake": ["snowflake-sqlalchemy>=1.2.3, <1.3"],
"teradata": ["sqlalchemy-teradata==0.9.0.dev0"],
"thumbnails": ["Pillow>=7.0.0, <8.0.0"],
"vertica": ["sqlalchemy-vertica-python>=0.5.9, < 0.6"],
+2 -5
View File
@@ -18,11 +18,11 @@
*/
const path = require('path');
// Superset's webpack.config.js
// Suerset's webpack.config.js
const customConfig = require('../webpack.config.js');
module.exports = {
stories: ['../src/@(components|common|filters)/**/*.stories.@(t|j)sx'],
stories: ['../src/@(components|common|filters)/**/*.stories.@(t|j)sx'],
addons: [
'@storybook/addon-essentials',
'@storybook/addon-links',
@@ -43,7 +43,4 @@ module.exports = {
},
plugins: [...config.plugins, ...customConfig.plugins],
}),
typescript: {
reactDocgen: 'none',
},
};
-4
View File
@@ -45,7 +45,6 @@ module.exports = {
['@babel/plugin-proposal-class-properties', { loose: true }],
['@babel/plugin-proposal-optional-chaining', { loose: true }],
['@babel/plugin-proposal-private-methods', { loose: true }],
['@babel/plugin-proposal-nullish-coalescing-operator', { loose: true }],
['@babel/plugin-transform-runtime', { corejs: 3 }],
'react-hot-loader/babel',
],
@@ -82,8 +81,5 @@ module.exports = {
],
],
},
testableProduction: {
plugins: [],
},
},
};
@@ -63,7 +63,7 @@ describe('Dashboard top-level controls', () => {
// should allow force refresh
WORLD_HEALTH_CHARTS.forEach(waitForChartLoad);
getChartAliasesBySpec(WORLD_HEALTH_CHARTS).then(aliases => {
cy.get('[aria-label="more-horiz"]').click();
cy.get('[data-test="more-horiz"]').click();
cy.get('[data-test="refresh-dashboard-menu-item"]').should(
'not.have.class',
'ant-dropdown-menu-item-disabled',
@@ -92,7 +92,7 @@ describe('Dashboard top-level controls', () => {
});
});
});
cy.get('[aria-label="more-horiz"]').click();
cy.get('[data-test="more-horiz"]').click();
cy.get('[data-test="refresh-dashboard-menu-item"]').and(
'not.have.class',
'ant-dropdown-menu-item-disabled',
@@ -23,7 +23,7 @@ describe('Dashboard edit mode', () => {
cy.login();
cy.visit(WORLD_HEALTH_DASHBOARD);
cy.get('[data-test="dashboard-header"]')
.find('[aria-label=edit-alt]')
.find('[data-test=edit-alt]')
.click();
});
@@ -96,7 +96,7 @@ describe('Dashboard edit mode', () => {
.click();
cy.get('[data-test="dashboard-header"]').within(() => {
cy.get('[data-test="dashboard-edit-actions"]').should('not.be.visible');
cy.get('[aria-label="edit-alt"]').should('be.visible');
cy.get('[data-test="edit-alt"]').should('be.visible');
});
});
});
@@ -77,7 +77,7 @@ describe('Dashboard edit action', () => {
cy.get('.dashboard-grid', { timeout: 50000 })
.should('be.visible') // wait for 50 secs to load dashboard
.then(() => {
cy.get('.dashboard-header [aria-label=edit-alt]')
cy.get('.dashboard-header [data-test=edit-alt]')
.should('be.visible')
.click();
openDashboardEditProperties();
@@ -38,7 +38,7 @@ describe('Dashboard filter', () => {
cy.get('.Select__placeholder:first').click();
// should show the filter indicator
cy.get('span[aria-label="filter"]:visible').should(nodes => {
cy.get('svg[data-test="filter"]:visible').should(nodes => {
expect(nodes.length).to.least(9);
});
@@ -50,7 +50,7 @@ describe('Dashboard filter', () => {
cy.get('.Select__menu').first().contains('South Asia').click();
// should still have all filter indicators
cy.get('span[aria-label="filter"]:visible').should(nodes => {
cy.get('svg[data-test="filter"]:visible').should(nodes => {
expect(nodes.length).to.least(9);
});
@@ -30,12 +30,12 @@ describe('Dashboard edit markdown', () => {
numScripts = nodes.length;
});
cy.get('[data-test="dashboard-header"]')
.find('[aria-label="edit-alt"]')
.find('[data-test="edit-alt"]')
.click();
// lazy load - need to open dropdown for the scripts to load
cy.get('[data-test="dashboard-header"]')
.find('[aria-label="more-horiz"]')
.find('[data-test="more-horiz"]')
.click();
cy.get('script').then(nodes => {
// load 5 new script chunks for css editor
@@ -70,7 +70,7 @@ describe('Dashboard edit markdown', () => {
.type('Test resize');
resize(
'[data-test="dashboard-markdown-editor"] .resizable-container span div:last-child',
'[data-test="dashboard-markdown-editor"] .resizable-container span div',
).to(500, 600);
cy.get('[data-test="dashboard-markdown-editor"]').contains('Test resize');
@@ -25,7 +25,7 @@ import {
} from './dashboard.helper';
function openDashboardEditProperties() {
cy.get('.dashboard-header [aria-label=edit-alt]').click();
cy.get('.dashboard-header [data-test=edit-alt]').click();
cy.get('#save-dash-split-button').trigger('click', { force: true });
cy.get('.dropdown-menu').contains('Edit dashboard properties').click();
}
@@ -42,7 +42,7 @@ describe('Dashboard save action', () => {
'copyRequest',
);
cy.get('[aria-label="more-horiz"]').trigger('click', { force: true });
cy.get('[data-test="more-horiz"]').trigger('click', { force: true });
cy.get('[data-test="save-as-menu-item"]').trigger('click', {
force: true,
});
@@ -68,7 +68,7 @@ describe('Dashboard save action', () => {
WORLD_HEALTH_CHARTS.forEach(waitForChartLoad);
// remove box_plot chart from dashboard
cy.get('[aria-label="edit-alt"]').click({ timeout: 5000 });
cy.get('[data-test="edit-alt"]').click({ timeout: 5000 });
cy.get('[data-test="dashboard-delete-component-button"]')
.last()
.trigger('moustenter')
@@ -87,7 +87,7 @@ describe('Dashboard save action', () => {
// go back to view mode
cy.wait('@saveRequest');
cy.get('[data-test="dashboard-header"]')
.find('[aria-label="edit-alt"]')
.find('[data-test="edit-alt"]')
.click();
// deleted boxplot should still not exist
@@ -59,13 +59,13 @@ describe('dashboard filters card view', () => {
// filter by published
cy.get('.Select__control').eq(2).click();
cy.get('.Select__menu').contains('Published').click({ timeout: 5000 });
cy.get('[data-test="styled-card"]').should('have.length', 3);
cy.get('[data-test="styled-card"]').should('have.length', 2);
cy.get('[data-test="styled-card"]')
.contains('USA Births Names')
.should('be.visible');
cy.get('.Select__control').eq(1).click();
cy.get('.Select__control').eq(1).type('unpub{enter}');
cy.get('[data-test="styled-card"]').should('have.length', 3);
cy.get('[data-test="styled-card"]').should('have.length', 2);
});
});
@@ -110,12 +110,12 @@ describe('dashboard filters list view', () => {
// filter by published
cy.get('.Select__control').eq(2).click();
cy.get('.Select__menu').contains('Published').click();
cy.get('[data-test="table-row"]').should('have.length', 3);
cy.get('[data-test="table-row"]').should('have.length', 2);
cy.get('[data-test="table-row"]')
.contains('USA Births Names')
.should('be.visible');
cy.get('.Select__control').eq(2).click();
cy.get('.Select__control').eq(2).type('unpub{enter}');
cy.get('[data-test="table-row"]').should('have.length', 3);
cy.get('[data-test="table-row"]').should('have.length', 2);
});
});
@@ -99,14 +99,20 @@ describe('VizType control', () => {
cy.visitChartByName('Daily Totals');
cy.verifySliceSuccess({ waitAlias: '@tableChartData' });
let numScripts = 0;
cy.get('script').then(nodes => {
numScripts = nodes.length;
});
cy.get('[data-test="visualization-type"]').contains('Table').click();
cy.get('button').contains('Evolution').click(); // change categories
cy.get('[role="button"]').contains('Line Chart').click();
cy.get('button').contains('Select').click();
// should load mathjs for line chart
cy.get('script[src*="mathjs"]').should('have.length', 1);
cy.get('script').then(nodes => {
expect(nodes.length).to.greaterThan(numScripts);
});
cy.get('button[data-test="run-query-button"]').click();
cy.verifySliceSuccess({
@@ -73,12 +73,13 @@ describe('Visualization > Line', () => {
it('should allow type to search color schemes', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
cy.get('.Control[data-test="color_scheme"] input[type="text"]')
.focus()
.type('bnbColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item > ul[data-test="bnbColors"]',
).should('exist');
.type('air{enter}');
cy.get('input[name="select-color_scheme"]').should(
'have.value',
'bnbColors',
);
});
it('should work with adhoc metric', () => {
@@ -17,6 +17,6 @@ specific language governing permissions and limitations
under the License.
-->
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.345929226875306,14.745929226875305 L13.320909226875305,7.7459292268753055 C13.055999226875306,7.270969226875306 12.554749226875305,6.9766122268753055 12.010909226875306,6.9766122268753055 C11.467069226875305,6.9766122268753055 10.965829226875307,7.270969226875306 10.700909226875304,7.7459292268753055 L6.700913226875306,14.745929226875305 C6.426938226875307,15.207989226875306 6.420966226875306,15.781289226875305 6.685256226875307,16.248929226875305 C6.949546226875305,16.716629226875305 7.443749226875305,17.007229226875303 7.980909226875305,17.010929226875305 H16.040929226875306 C16.582529226875305,17.016229226875307 17.085029226875307,16.729129226875305 17.355429226875305,16.259829226875304 C17.625829226875304,15.790499226875305 17.622229226875305,15.211839226875306 17.345929226875306,14.745929226875305 z" fill="currentColor" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.510929226875305,10.510929226875305 C11.510929226875305,10.234789226875305 11.734789226875307,10.010929226875307 12.010929226875305,10.010929226875307 C12.287069226875303,10.010929226875307 12.510929226875305,10.234789226875305 12.510929226875305,10.510929226875305 V12.510929226875305 C12.510929226875305,12.787069226875305 12.287069226875303,13.010929226875307 12.010929226875305,13.010929226875307 C11.734789226875307,13.010929226875307 11.510929226875305,12.787069226875305 11.510929226875305,12.510929226875305 V10.510929226875305 zM11.510929226875305,14.510929226875305 C11.510929226875305,14.234789226875305 11.734789226875307,14.010929226875307 12.010929226875305,14.010929226875307 C12.287069226875303,14.010929226875307 12.510929226875305,14.234789226875305 12.510929226875305,14.510929226875305 C12.510929226875305,14.787069226875305 12.287069226875303,15.010929226875307 12.010929226875305,15.010929226875307 C11.734789226875307,15.010929226875307 11.510929226875305,14.787069226875305 11.510929226875305,14.510929226875305 z" fill="white" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.335 8.735L7.30998 1.735C7.04507 1.26004 6.54382 0.965683 5.99998 0.965683C5.45614 0.965683 4.9549 1.26004 4.68998 1.735L0.689984 8.735C0.416009 9.19706 0.410037 9.77036 0.674327 10.238C0.938617 10.7057 1.43282 10.9963 1.96998 11H10.03C10.5716 11.0053 11.0741 10.7182 11.3445 10.2489C11.6149 9.77957 11.6113 9.20091 11.335 8.735Z" fill="currentColor"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.5 4.5C5.5 4.22386 5.72386 4 6 4C6.27614 4 6.5 4.22386 6.5 4.5V6.5C6.5 6.77614 6.27614 7 6 7C5.72386 7 5.5 6.77614 5.5 6.5V4.5ZM5.5 8.5C5.5 8.22386 5.72386 8 6 8C6.27614 8 6.5 8.22386 6.5 8.5C6.5 8.77614 6.27614 9 6 9C5.72386 9 5.5 8.77614 5.5 8.5Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

-22
View File
@@ -1,22 +0,0 @@
<!--
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.
-->
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.66667 5H12V6.33333H8.66667V5ZM8.66667 9.66667H12V11H8.66667V9.66667ZM12.6667 2H3.33333C2.6 2 2 2.6 2 3.33333V12.6667C2 13.4 2.6 14 3.33333 14H12.6667C13.4 14 14 13.4 14 12.6667V3.33333C14 2.6 13.4 2 12.6667 2ZM12.6667 12.6667H3.33333V3.33333H12.6667V12.6667ZM7.33333 4H4V7.33333H7.33333V4ZM6.66667 6.66667H4.66667V4.66667H6.66667V6.66667ZM7.33333 8.66667H4V12H7.33333V8.66667ZM6.66667 11.3333H4.66667V9.33333H6.66667V11.3333Z" fill="currentColor"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

@@ -1,22 +0,0 @@
<!--
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.
-->
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.73967 1.7002L4.04888 7.79629H11.4305L7.73967 1.7002ZM7.73967 4.3012L9.0348 6.4416H6.43783L7.73967 4.3012ZM11.4305 9.15098C9.75954 9.15098 8.41072 10.5124 8.41072 12.199C8.41072 13.8856 9.75954 15.2471 11.4305 15.2471C13.1014 15.2471 14.4502 13.8856 14.4502 12.199C14.4502 10.5124 13.1014 9.15098 11.4305 9.15098ZM11.4305 13.8924C10.5044 13.8924 9.75283 13.1338 9.75283 12.199C9.75283 11.2643 10.5044 10.5057 11.4305 10.5057C12.3565 10.5057 13.1081 11.2643 13.1081 12.199C13.1081 13.1338 12.3565 13.8924 11.4305 13.8924ZM1.7002 14.9084H7.06862V9.48965H1.7002V14.9084ZM3.0423 10.8443H5.72651V13.5537H3.0423V10.8443Z" fill="currentColor" fill-opacity="0.85"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

@@ -1,21 +0,0 @@
<!--
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.
-->
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 12C10 13.1046 10.8954 14 12 14C13.1046 14 14 13.1046 14 12C14 10.8954 13.1046 10 12 10C10.8954 10 10 10.8954 10 12ZM10 19C10 20.1046 10.8954 21 12 21C13.1046 21 14 20.1046 14 19C14 17.8954 13.1046 17 12 17C10.8954 17 10 17.8954 10 19ZM10 5C10 6.10457 10.8954 7 12 7C13.1046 7 14 6.10457 14 5C14 3.89543 13.1046 3 12 3C10.8954 3 10 3.89543 10 5Z" fill="currentColor"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

-22
View File
@@ -1,22 +0,0 @@
<!--
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.
-->
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.1668 7.0835V5.66683H11.3335V2.8335H9.91683V5.66683H7.0835V2.8335H5.66683V5.66683H2.8335V7.0835H5.66683V9.91683H2.8335V11.3335H5.66683V14.1668H7.0835V11.3335H9.91683V14.1668H11.3335V11.3335H14.1668V9.91683H11.3335V7.0835H14.1668ZM9.91683 9.91683H7.0835V7.0835H9.91683V9.91683Z" fill="currentColor" fill-opacity="0.85"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

+2 -2
View File
@@ -19,8 +19,8 @@
module.exports = {
testRegex: '(\\/spec|\\/src)\\/.*(_spec|\\.test)\\.(j|t)sx?$',
moduleNameMapper: {
'\\.(css|less|geojson)$': '<rootDir>/spec/__mocks__/mockExportObject.js',
'\\.(gif|ttf|eot|png|jpg)$': '<rootDir>/spec/__mocks__/mockExportString.js',
'\\.(css|less)$': '<rootDir>/spec/__mocks__/styleMock.js',
'\\.(gif|ttf|eot|png)$': '<rootDir>/spec/__mocks__/fileMock.js',
'\\.svg$': '<rootDir>/spec/__mocks__/svgrMock.tsx',
'^src/(.*)$': '<rootDir>/src/$1',
'^spec/(.*)$': '<rootDir>/spec/$1',
+1382 -2849
View File
File diff suppressed because it is too large Load Diff
+40 -42
View File
@@ -1,6 +1,6 @@
{
"name": "superset",
"version": "0.0.0dev",
"version": "0.999.0dev",
"description": "Superset is a data exploration platform designed to be visual, intuitive, and interactive.",
"license": "Apache-2.0",
"directories": {
@@ -17,7 +17,7 @@
"prod": "npm run build",
"build-dev": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=development webpack --mode=development --colors",
"build-instrumented": "cross-env NODE_ENV=development BABEL_ENV=instrumented webpack --mode=development --colors",
"build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=production BABEL_ENV=\"${BABEL_ENV:=production}\" webpack --mode=production --colors",
"build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=production BABEL_ENV=production webpack --mode=production --colors",
"lint": "eslint --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx . && npm run type",
"prettier-check": "prettier --check '{src,stylesheets}/**/*.{css,less,sass,scss}'",
"lint-fix": "eslint --fix --ignore-path=.eslintignore --ext .js,.jsx,.ts,tsx . && npm run clean-css && npm run type",
@@ -65,38 +65,37 @@
"@babel/runtime-corejs3": "^7.12.5",
"@data-ui/sparkline": "^0.0.84",
"@emotion/babel-preset-css-prop": "^11.2.0",
"@emotion/cache": "^11.4.0",
"@emotion/react": "^11.4.1",
"@emotion/styled": "^11.3.0",
"@superset-ui/chart-controls": "^0.18.5",
"@superset-ui/core": "^0.18.5",
"@superset-ui/legacy-plugin-chart-calendar": "^0.18.5",
"@superset-ui/legacy-plugin-chart-chord": "^0.18.5",
"@superset-ui/legacy-plugin-chart-country-map": "^0.18.5",
"@superset-ui/legacy-plugin-chart-event-flow": "^0.18.5",
"@superset-ui/legacy-plugin-chart-force-directed": "^0.18.5",
"@superset-ui/legacy-plugin-chart-heatmap": "^0.18.5",
"@superset-ui/legacy-plugin-chart-histogram": "^0.18.5",
"@superset-ui/legacy-plugin-chart-horizon": "^0.18.5",
"@superset-ui/legacy-plugin-chart-map-box": "^0.18.5",
"@superset-ui/legacy-plugin-chart-paired-t-test": "^0.18.5",
"@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.18.5",
"@superset-ui/legacy-plugin-chart-partition": "^0.18.5",
"@superset-ui/legacy-plugin-chart-pivot-table": "^0.18.5",
"@superset-ui/legacy-plugin-chart-rose": "^0.18.5",
"@superset-ui/legacy-plugin-chart-sankey": "^0.18.5",
"@superset-ui/legacy-plugin-chart-sankey-loop": "^0.18.5",
"@superset-ui/legacy-plugin-chart-sunburst": "^0.18.5",
"@superset-ui/legacy-plugin-chart-treemap": "^0.18.5",
"@superset-ui/legacy-plugin-chart-world-map": "^0.18.5",
"@superset-ui/legacy-preset-chart-big-number": "^0.18.5",
"@superset-ui/legacy-preset-chart-deckgl": "^0.4.12",
"@superset-ui/legacy-preset-chart-nvd3": "^0.18.5",
"@superset-ui/plugin-chart-echarts": "^0.18.5",
"@superset-ui/plugin-chart-pivot-table": "^0.18.5",
"@superset-ui/plugin-chart-table": "^0.18.5",
"@superset-ui/plugin-chart-word-cloud": "^0.18.5",
"@superset-ui/preset-chart-xy": "^0.18.5",
"@emotion/cache": "^11.1.3",
"@emotion/react": "^11.1.5",
"@superset-ui/chart-controls": "^0.17.58",
"@superset-ui/core": "^0.17.58",
"@superset-ui/legacy-plugin-chart-calendar": "^0.17.58",
"@superset-ui/legacy-plugin-chart-chord": "^0.17.58",
"@superset-ui/legacy-plugin-chart-country-map": "^0.17.58",
"@superset-ui/legacy-plugin-chart-event-flow": "^0.17.58",
"@superset-ui/legacy-plugin-chart-force-directed": "^0.17.58",
"@superset-ui/legacy-plugin-chart-heatmap": "^0.17.58",
"@superset-ui/legacy-plugin-chart-histogram": "^0.17.58",
"@superset-ui/legacy-plugin-chart-horizon": "^0.17.58",
"@superset-ui/legacy-plugin-chart-map-box": "^0.17.58",
"@superset-ui/legacy-plugin-chart-paired-t-test": "^0.17.58",
"@superset-ui/legacy-plugin-chart-parallel-coordinates": "^0.17.58",
"@superset-ui/legacy-plugin-chart-partition": "^0.17.58",
"@superset-ui/legacy-plugin-chart-pivot-table": "^0.17.58",
"@superset-ui/legacy-plugin-chart-rose": "^0.17.58",
"@superset-ui/legacy-plugin-chart-sankey": "^0.17.58",
"@superset-ui/legacy-plugin-chart-sankey-loop": "^0.17.58",
"@superset-ui/legacy-plugin-chart-sunburst": "^0.17.58",
"@superset-ui/legacy-plugin-chart-treemap": "^0.17.58",
"@superset-ui/legacy-plugin-chart-world-map": "^0.17.58",
"@superset-ui/legacy-preset-chart-big-number": "^0.17.58",
"@superset-ui/legacy-preset-chart-deckgl": "^0.4.7",
"@superset-ui/legacy-preset-chart-nvd3": "^0.17.58",
"@superset-ui/plugin-chart-echarts": "^0.17.58",
"@superset-ui/plugin-chart-pivot-table": "^0.17.58",
"@superset-ui/plugin-chart-table": "^0.17.58",
"@superset-ui/plugin-chart-word-cloud": "^0.17.58",
"@superset-ui/preset-chart-xy": "^0.17.58",
"@vx/responsive": "^0.0.195",
"abortcontroller-polyfill": "^1.1.9",
"antd": "^4.9.4",
@@ -114,11 +113,10 @@
"emotion-rgba": "0.0.9",
"fontsource-fira-code": "^3.0.5",
"fontsource-inter": "^3.0.5",
"fuse.js": "^6.4.6",
"geolib": "^2.0.24",
"global-box": "^1.2.0",
"html-webpack-plugin": "^4.5.1",
"immer": "^9.0.6",
"immer": "^8.0.1",
"immutable": "^4.0.0-rc.12",
"interweave": "^11.2.0",
"jquery": "^3.5.1",
@@ -132,7 +130,6 @@
"mathjs": "^8.0.1",
"memoize-one": "^5.1.1",
"moment": "^2.26.0",
"moment-timezone": "^0.5.33",
"mousetrap": "^1.6.1",
"mustache": "^2.2.1",
"omnibar": "^2.1.1",
@@ -148,9 +145,9 @@
"react-dnd": "^11.1.3",
"react-dnd-html5-backend": "^11.1.3",
"react-dom": "^16.13.0",
"react-draggable": "^4.4.3",
"react-gravatar": "^2.6.1",
"react-hot-loader": "^4.12.20",
"react-icons": "^4.2.0",
"react-js-cron": "^1.2.0",
"react-json-tree": "^0.11.2",
"react-jsonschema-form": "^1.2.0",
@@ -181,10 +178,9 @@
"redux-undo": "^1.0.0-beta9-9-7",
"regenerator-runtime": "^0.13.5",
"rison": "^0.1.1",
"scroll-into-view-if-needed": "^2.2.28",
"shortid": "^2.2.6",
"urijs": "^1.19.6",
"use-immer": "^0.6.0",
"use-immer": "^0.4.2",
"use-query-params": "^1.1.9"
},
"devDependencies": {
@@ -194,6 +190,7 @@
"@babel/node": "^7.12.10",
"@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/plugin-proposal-optional-chaining": "^7.12.7",
"@babel/plugin-proposal-private-methods": "^7.14.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-transform-runtime": "^7.12.10",
"@babel/preset-env": "^7.12.11",
@@ -210,7 +207,7 @@
"@storybook/client-api": "^6.1.17",
"@storybook/preset-typescript": "^3.0.0",
"@storybook/react": "^6.1.20",
"@svgr/webpack": "^5.4.0",
"@svgr/webpack": "^5.5.0",
"@testing-library/dom": "^7.29.4",
"@testing-library/jest-dom": "^5.11.6",
"@testing-library/react": "^11.2.0",
@@ -301,11 +298,12 @@
"storybook-addon-jsx": "^7.3.3",
"storybook-addon-paddings": "^3.2.0",
"style-loader": "^1.0.0",
"terser-webpack-plugin": "^1.1.0",
"thread-loader": "^1.2.0",
"transform-loader": "^0.2.3",
"ts-jest": "^26.4.2",
"ts-loader": "^8.0.7",
"typescript": "^4.1.6",
"typescript": "^4.0.3",
"url-loader": "^1.0.1",
"webpack": "^4.42.0",
"webpack-bundle-analyzer": "^3.6.1",
-3
View File
@@ -17,7 +17,6 @@
* under the License.
*/
import { ExtraFormData } from '@superset-ui/core';
import { NativeFilterType } from 'src/dashboard/components/nativeFilters/types';
import { NativeFiltersState } from 'src/dashboard/reducers/types';
import { DataMaskStateWithId } from '../../src/dataMask/types';
@@ -51,7 +50,6 @@ export const nativeFilters: NativeFiltersState = {
enableEmptyFilter: false,
inverseSelection: false,
},
type: NativeFilterType.NATIVE_FILTER,
},
'NATIVE_FILTER-x9QPw0so1': {
id: 'NATIVE_FILTER-x9QPw0so1',
@@ -80,7 +78,6 @@ export const nativeFilters: NativeFiltersState = {
enableEmptyFilter: false,
inverseSelection: false,
},
type: NativeFilterType.NATIVE_FILTER,
},
},
};
-38
View File
@@ -1,38 +0,0 @@
/**
* 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 dashboardInfo from './mockDashboardInfo';
import { user } from '../javascripts/sqllab/fixtures';
export default {
active: true,
creation_method: 'dashboards',
crontab: '0 12 * * 1',
dashboard: dashboardInfo.id,
name: 'Weekly Report',
owners: [user.userId],
recipients: [
{
recipient_config_json: {
target: user.email,
},
type: 'Email',
},
],
type: 'Report',
};
-2
View File
@@ -28,7 +28,6 @@ import dashboardInfo from './mockDashboardInfo';
import { emptyFilters } from './mockDashboardFilters';
import dashboardState from './mockDashboardState';
import { sliceEntitiesForChart } from './mockSliceEntities';
import { user } from '../javascripts/sqllab/fixtures';
export default {
datasources,
@@ -41,6 +40,5 @@ export default {
dashboardState,
dashboardLayout,
messageToasts,
user,
impressionId: 'mock_impression_id',
};
@@ -1,46 +0,0 @@
/**
* 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 datasources from 'spec/fixtures/mockDatasource';
import messageToasts from 'spec/javascripts/messageToasts/mockMessageToasts';
import {
nativeFiltersInfo,
mockDataMaskInfo,
} from 'spec/javascripts/dashboard/fixtures/mockNativeFilters';
import chartQueries from 'spec/fixtures/mockChartQueries';
import { dashboardLayout } from 'spec/fixtures/mockDashboardLayout';
import dashboardInfo from 'spec/fixtures/mockDashboardInfo';
import { emptyFilters } from 'spec/fixtures/mockDashboardFilters';
import dashboardState from 'spec/fixtures/mockDashboardState';
import { sliceEntitiesForChart } from 'spec/fixtures/mockSliceEntities';
import reports from 'spec/fixtures/mockReportState';
export default {
datasources,
sliceEntities: sliceEntitiesForChart,
charts: chartQueries,
nativeFilters: nativeFiltersInfo,
dataMask: mockDataMaskInfo,
dashboardInfo,
dashboardFilters: emptyFilters,
dashboardState,
dashboardLayout,
messageToasts,
impressionId: 'mock_impression_id',
reports,
};
@@ -30,7 +30,6 @@ import saveModal from 'src/explore/reducers/saveModalReducer';
import explore from 'src/explore/reducers/exploreReducer';
import sqlLab from 'src/SqlLab/reducers/sqlLab';
import localStorageUsageInKilobytes from 'src/SqlLab/reducers/localStorageUsage';
import reports from 'src/reports/reducers/reports';
const impressionId = (state = '') => state;
@@ -54,6 +53,5 @@ export default {
explore,
sqlLab,
localStorageUsageInKilobytes,
reports,
common: () => common,
};
-2
View File
@@ -23,5 +23,3 @@ import { configure as configureTestingLibrary } from '@testing-library/react';
configureTestingLibrary({
testIdAttribute: 'data-test',
});
document.body.innerHTML = '<div id="app" data-bootstrap="{}"></div>';

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