This is an automated email from the ASF dual-hosted git repository.
maximebeauchemin pushed a change to branch avatar_url
in repository https://gitbox.apache.org/repos/asf/superset.git
discard 0668e5926e test_views_are_secured
discard 56c18a12ef no-op
discard ce36d383b3 remove unused import
discard f80400e11e add param to openapi spec
discard 521448df21 fixes
discard 3496d420fb fix test
discard 8d30bf9c39 improve docs
discard aabb2ed635 minor tweaks
discard d8c6997357 feat: Slack Avatar integration
add 9fea3154fa fix: pkg-config dependency in Dockerfile (#27855)
add 12fe2929a4 fix: row limits & row count labels are confusing (#27700)
add 48bff6b352 build(deps-dev): bump @tsconfig/docusaurus from 2.0.2 to
2.0.3 in /docs (#27823)
add e2b708e8f7 build(deps-dev): bump @docusaurus/module-type-aliases from
3.1.1 to 3.2.0 in /docs (#27818)
add 29a5b72d5f build(deps-dev): bump typescript from 5.3.3 to 5.4.3 in
/docs (#27814)
add 5603453c18 chore(node): bumping Superset to Node 18 (#27198)
add 1c742f5866 feat: setup a pyproject.toml (#27859)
add 5ab95aaf7d chore(sql_parse): Strip leading/trailing whitespace in
Jinja macro extraction (#27842)
add fa74d32a6a build(deps): bump @ant-design/icons from 5.3.1 to 5.3.6 in
/docs (#27819)
add fdc2dbe7db build(deps-dev): bump react-test-renderer from 16.9.0 to
16.14.0 in /superset-frontend (#27808)
add 9022f5c519 feat(SIP-85): OAuth2 for databases (#27631)
add 8e3cecda9f feat: move supersetbot out of repo (#27647)
add 59f0057017 build(deps): update xss requirement from ^1.0.14 to ^1.0.15
in /superset-frontend/plugins/plugin-chart-table (#27835)
add c990baf96a fix: GHA update-monorepo-lockfiles (#27860)
add ad752f04c7 docs: small cleanup (#27791)
add 6683d292ce fix: run pip-compile-multi --no-upgrade (#27861)
add 08700f8cb9 chore(🦾): bump python pre-commit 3.3.3 -> 3.7.0 (#27865)
add e39bb57c07 chore(🦾): bump python pillow 10.2.0 -> 10.3.0 (#27873)
add 9c3915d42c chore(🦾): bump python freezegun 1.2.2 -> 1.4.0 (#27869)
add 976b098421 chore(🦾): bump python docker 6.1.1 -> 7.0.0 (#27870)
add 271fbc064e chore(🦾): bump python sqlglot 23.2.0 -> 23.6.3 (#27875)
add 1d3fdc74dc chore(🦾): bump python sqloxide 0.1.33 -> 0.1.43 (#27871)
add 9d0928633a chore(🦾): bump python pytest-cov 4.0.0 -> 5.0.0 (#27866)
add 87e1c3f2fd chore(🦾): bump python google-cloud-bigquery 3.20.0 ->
3.20.1 (#27868)
add 6052ef656d chore(🦾): bump python grpcio 1.60.1 -> 1.62.1 (#27872)
add 208afc96a1 chore(🦾): bump python pyfakefs 5.2.2 -> 5.3.5 (#27874)
add d318df96ae build(deps): bump dompurify from 2.4.9 to 3.0.11 in
/superset-frontend/plugins/legacy-preset-chart-nvd3 (#27816)
add c3149994ac feat(viz picker): Remove some tags, refactor Recommended
section (#27708)
add 848a7ffbf3 build(deps): bump @algolia/client-search from 4.22.1 to
4.23.2 in /docs (#27824)
add c38529741e chore(sql_parse): Provide more meaningful SQLGlot errors
(#27858)
add 6e8ea2753b build(deps-dev): bump @types/redux-mock-store from 1.0.2 to
1.0.6 in /superset-frontend (#27836)
add 2a06c08c6b chore(🦾): bump python pylint 2.17.7 -> 3.1.0 (#27867)
add 24fc2b67d8 chore: Updates CHANGELOG.md with 3.1.2 data (#27878)
add 30bc8f06dc chore: Default to engine specification regarding using
wildcard (#27843)
add a498d6d10f refactor: Move fetchTimeRange to core package (#27852)
add 1b9e2581d2 build(deps-dev): bump @types/underscore from 1.11.6 to
1.11.15 in /superset-frontend (#27343)
add 870e94809c chore(🦾): bump python pytest 7.3.1 -> 7.4.4 (#27864)
add c661518bb1 build(deps): bump @docsearch/react from 3.5.2 to 3.6.0 in
/docs (#27813)
add ebdf1bbdd5 build(deps): update @types/react-table requirement from
^7.7.19 to ^7.7.20 in /superset-frontend/plugins/plugin-chart-table (#27833)
add 5cde275965 build(deps-dev): update @types/jest requirement from
^29.5.11 to ^29.5.12 in /superset-frontend/plugins/plugin-chart-pivot-table
(#26975)
add 3f24083ed6 build(deps): bump bootstrap-slider from 10.6.2 to 11.0.2 in
/superset-frontend/plugins/legacy-preset-chart-deckgl (#27317)
add 9a4bdeabbd build(deps): update lodash requirement from ^4.17.15 to
^4.17.21 in /superset-frontend/plugins/legacy-preset-chart-deckgl (#27318)
add 394abced43 build(deps-dev): update @types/lodash requirement from
^4.14.202 to ^4.17.0 in /superset-frontend/plugins/plugin-chart-handlebars
(#27800)
add 5beda309ab build(deps): bump winston from 3.11.0 to 3.13.0 in
/superset-websocket (#27804)
add 27acc0b133 chore: Cleanup table access check naming (#27772)
add cfa0556df7 fix(bar-chart): change legend padding for horizontal
orientation (#27883)
add 949e6b52e6 build(deps): bump fetch-retry from 4.1.1 to 6.0.0 in
/superset-frontend (#27887)
add e5837b46e5 build(deps): bump @types/lodash from 4.14.202 to 4.17.0 in
/superset-websocket (#27805)
add a9681fa3f3 build(deps-dev): bump @types/node from 20.11.24 to 20.12.4
in /superset-websocket (#27888)
add 601432ad82 fix(pylint): Address errors/warnings introduced by #27867
(#27889)
add 5ed48760fb chore(sqllab): Do not strip comments when executing SQL
statements (#27725)
add 4150d400e0 feat: Slack Avatar integration
add a8f0ed8c09 minor tweaks
add 77d4c49a46 improve docs
add bdc0befa72 fix test
add 3c43ecd39e fixes
add 8068b456d2 add param to openapi spec
add 0ae3903a3d remove unused import
add 7fe45f130d test_views_are_secured
add 0acc0f706f smaller is bigger
add 23830a3b10 test
add 5951ca8b98 tries
add 09b0f00645 fix WebClient location
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (0668e5926e)
\
N -- N -- N refs/heads/avatar_url (09b0f00645)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.github/ISSUE_TEMPLATE/bug-report.yml | 2 +-
.github/actions/setup-supersetbot/action.yml | 35 +-
.github/supersetbot/.eslintrc.json | 22 -
.github/supersetbot/README.md | 37 -
.github/supersetbot/jest.config.js | 8 -
.github/supersetbot/package-lock.json | 11020 -------------------
.github/supersetbot/package.json | 36 -
.github/supersetbot/src/cli.js | 175 -
.github/supersetbot/src/cli.test.js | 12 -
.github/supersetbot/src/context.js | 152 -
.github/supersetbot/src/docker.js | 142 -
.github/supersetbot/src/docker.test.js | 244 -
.github/supersetbot/src/git.js | 120 -
.github/supersetbot/src/git_release.js | 50 -
.github/supersetbot/src/github.js | 252 -
.github/supersetbot/src/index.js | 39 -
.github/supersetbot/src/index.test.js | 51 -
.github/supersetbot/src/metadata.js | 36 -
.github/supersetbot/src/supersetbot | 27 -
.github/supersetbot/src/utils.js | 78 -
.github/workflows/docker-release.yml | 7 +-
.github/workflows/docker.yml | 5 -
.github/workflows/embedded-sdk-release.yml | 4 +-
.github/workflows/embedded-sdk-test.yml | 2 +-
.github/workflows/issue_creation.yml | 12 +-
.github/workflows/release.yml | 2 +-
.github/workflows/superset-applitool-cypress.yml | 2 +-
.../workflows/superset-applitools-storybook.yml | 2 +-
.github/workflows/superset-docs-deploy.yml | 4 +-
.github/workflows/superset-docs-verify.yml | 4 +-
.github/workflows/superset-frontend.yml | 2 +-
.github/workflows/superset-translations.yml | 2 +-
.github/workflows/supersetbot.yml | 29 +-
.github/workflows/tech-debt.yml | 2 +-
.github/workflows/update-monorepo-lockfiles.yml | 7 +-
.gitignore | 1 +
CHANGELOG.md | 1 +
CHANGELOG/3.1.2.md | 93 +
CONTRIBUTING.md | 4 +-
Dockerfile | 3 +-
docker-compose.yml | 2 +-
.../installing-superset-using-docker-compose.mdx | 41 +-
docs/docs/intro.mdx | 2 +-
docs/docs/quickstart.mdx | 12 +-
docs/package.json | 12 +-
docs/yarn.lock | 103 +-
pyproject.toml | 199 +
requirements/base.txt | 22 +-
requirements/development.in | 24 +-
requirements/development.txt | 91 +-
setup.py | 147 +-
superset-frontend/package-lock.json | 263 +-
superset-frontend/package.json | 8 +-
.../packages/superset-ui-core/package.json | 2 +-
.../superset-ui-core/src/connection/constants.ts | 5 +
.../superset-ui-core/src/connection/index.ts | 1 +
.../src/query}/getClientErrorObject.ts | 54 +-
.../packages/superset-ui-core/src/query/index.ts | 1 +
.../superset-ui-core/src/query/types/Query.ts | 21 +-
.../src/query/types/QueryResponse.ts | 1 +
.../src/time-comparison/fetchTimeRange.ts} | 34 +-
.../superset-ui-core/src/time-comparison/index.ts | 1 +
.../chart/components/ChartDataProvider.test.tsx | 13 +-
.../test/color/SharedLabelColorSingleton.test.ts | 14 +-
.../test/query/getClientErrorObject.test.ts | 233 +
.../test/time-comparison/fetchTimeRange.test.ts | 118 +
.../plugins/legacy-plugin-chart-chord/src/index.js | 8 +-
.../src/index.js | 2 +-
.../legacy-plugin-chart-world-map/src/index.js | 1 -
.../legacy-preset-chart-deckgl/package.json | 6 +-
.../src/layers/Contour/index.ts | 2 +-
.../src/layers/Geojson/index.ts | 2 +-
.../src/layers/Grid/index.ts | 2 +-
.../src/layers/Heatmap/index.ts | 2 +-
.../src/layers/Hex/index.ts | 2 +-
.../src/layers/Polygon/index.ts | 8 +-
.../src/layers/Screengrid/index.ts | 8 +-
.../plugins/legacy-preset-chart-nvd3/package.json | 2 +-
.../legacy-preset-chart-nvd3/src/Area/index.js | 2 -
.../legacy-preset-chart-nvd3/src/Bar/index.js | 2 -
.../legacy-preset-chart-nvd3/src/Bubble/index.js | 2 -
.../legacy-preset-chart-nvd3/src/DistBar/index.js | 4 -
.../legacy-preset-chart-nvd3/src/Line/index.js | 2 +-
.../legacy-preset-chart-nvd3/src/Pie/index.js | 2 +-
.../BigNumber/BigNumberPeriodOverPeriod/index.ts | 1 -
.../src/BigNumber/BigNumberTotal/index.ts | 1 -
.../src/BigNumber/BigNumberWithTrendline/index.ts | 1 -
.../plugin-chart-echarts/src/Bubble/index.ts | 1 -
.../plugin-chart-echarts/src/Graph/index.ts | 1 -
.../src/MixedTimeseries/index.ts | 2 -
.../plugins/plugin-chart-echarts/src/Pie/index.ts | 1 -
.../plugin-chart-echarts/src/Radar/index.ts | 1 -
.../plugin-chart-echarts/src/Sunburst/index.ts | 7 +-
.../src/Timeseries/Area/index.ts | 1 -
.../src/Timeseries/Regular/Bar/index.ts | 2 -
.../src/Timeseries/Regular/Line/index.ts | 1 -
.../src/Timeseries/Regular/Scatter/index.ts | 1 -
.../src/Timeseries/Regular/SmoothLine/index.ts | 1 -
.../src/Timeseries/Step/index.ts | 1 -
.../plugin-chart-echarts/src/Timeseries/index.ts | 1 -
.../src/Timeseries/transformers.ts | 13 +-
.../plugin-chart-echarts/src/Treemap/index.ts | 1 -
.../plugins/plugin-chart-handlebars/package.json | 2 +-
.../plugins/plugin-chart-pivot-table/package.json | 2 +-
.../plugins/plugin-chart-table/package.json | 4 +-
.../plugins/plugin-chart-table/src/index.ts | 1 -
.../plugins/plugin-chart-table/test/testData.ts | 1 +
.../plugin-chart-word-cloud/src/plugin/index.ts | 9 +-
superset-frontend/src/SqlLab/actions/sqlLab.js | 4 +-
.../AceEditorWrapper/useAnnotations.test.ts | 2 +-
.../components/AceEditorWrapper/useAnnotations.ts | 4 +-
.../SqlLab/components/ShareSqlLabQuery/index.tsx | 2 +-
.../src/assets/images/icons/ballot.svg | 4 +-
.../src/assets/images/icons/category.svg | 4 +-
superset-frontend/src/assets/images/icons/tags.svg | 4 +-
.../src/components/Chart/ChartErrorMessage.tsx | 2 +-
.../Chart/DrillBy/useResultsTableView.tsx | 2 +
.../src/components/Chart/chartAction.js | 2 +-
.../Datasource/ChangeDatasourceModal.tsx | 8 +-
.../src/components/Datasource/DatasourceEditor.jsx | 2 +-
.../src/components/Datasource/DatasourceModal.tsx | 4 +-
.../ErrorMessage/BasicErrorAlert.test.tsx | 3 +-
.../components/ErrorMessage/BasicErrorAlert.tsx | 3 +-
.../ErrorMessage/DatabaseErrorMessage.test.tsx | 2 +-
.../DatasetNotFoundErrorMessage.test.tsx | 2 +-
.../components/ErrorMessage/ErrorAlert.test.tsx | 3 +-
.../src/components/ErrorMessage/ErrorAlert.tsx | 9 +-
.../ErrorMessageWithStackTrace.test.tsx | 2 +-
.../ErrorMessage/ErrorMessageWithStackTrace.tsx | 3 +-
.../ErrorMessage/MarshmallowErrorMessage.test.tsx | 8 +-
.../ErrorMessage/OAuth2RedirectMessage.test.tsx | 171 +
.../ErrorMessage/OAuth2RedirectMessage.tsx | 179 +
.../ErrorMessage/ParameterErrorMessage.test.tsx | 2 +-
.../ErrorMessage/TimeoutErrorMessage.test.tsx | 2 +-
.../src/components/ErrorMessage/types.ts | 87 +-
.../src/components/FacePile/index.tsx | 2 +-
.../src/components/Select/AsyncSelect.tsx | 8 +-
.../src/components/TableSelector/index.tsx | 11 +-
superset-frontend/src/components/Tags/utils.tsx | 11 +-
.../src/dashboard/actions/dashboardInfo.ts | 8 +-
.../src/dashboard/actions/dashboardState.js | 2 +-
.../src/dashboard/actions/sliceEntities.ts | 8 +-
.../dashboard/components/PropertiesModal/index.tsx | 2 +-
.../components/URLShortLinkButton/index.tsx | 3 +-
.../FilterBar/FilterControls/FilterValue.tsx | 6 +-
.../FiltersConfigForm/ColumnSelect.test.tsx | 4 +-
.../FiltersConfigForm/ColumnSelect.tsx | 9 +-
.../FiltersConfigForm/DatasetSelect.tsx | 7 +-
.../FiltersConfigForm/FiltersConfigForm.tsx | 6 +-
.../src/explore/actions/datasourcesActions.test.ts | 4 +-
.../src/explore/actions/datasourcesActions.ts | 3 +-
.../src/explore/components/ChartPills.tsx | 2 +-
.../components/DataTableControl/RowCount.test.tsx | 36 -
.../explore/components/DataTableControl/index.tsx | 9 -
.../components/DataTableControls.tsx | 5 +-
.../DataTablesPane/components/SamplesPane.tsx | 4 +
.../components/SingleQueryResultPane.tsx | 2 +
.../DataTablesPane/components/useResultsPane.tsx | 5 +-
.../DataTablesPane/test/DataTablesPane.test.tsx | 5 +
.../test/ResultsPaneOnDashboard.test.tsx | 4 +
.../DataTablesPane/test/SamplesPane.test.tsx | 2 +
.../src/explore/components/DataTablesPane/types.ts | 2 +
.../explore/components/PropertiesModal/index.tsx | 2 +-
.../RowCountLabel/RowCountLabel.test.tsx | 2 +-
.../src/explore/components/RowCountLabel/index.tsx | 10 +-
.../controls/DateFilterControl/DateFilterLabel.tsx | 2 +-
.../DateFilterControl/components/AdvancedFrame.tsx | 3 +-
.../controls/DateFilterControl/tests/utils.test.ts | 33 -
.../DateFilterControl/utils/dateFilterUtils.ts | 47 +-
.../controls/DateFilterControl/utils/dateParser.ts | 2 +-
.../utils/useGetTimeRangeLabel.test.ts | 6 +-
.../FilterControl/utils/useGetTimeRangeLabel.tsx | 3 +-
.../controls/SelectAsyncControl/index.tsx | 3 +-
.../explore/components/controls/ViewQueryModal.tsx | 8 +-
.../controls/VizTypeControl/VizTypeGallery.tsx | 61 +-
.../src/features/reports/ReportModal/index.tsx | 3 +-
.../src/hooks/apiResources/queryApi.ts | 4 +-
.../src/middleware/asyncEvent.test.ts | 5 +-
superset-frontend/src/middleware/asyncEvent.ts | 8 +-
.../src/pages/AnnotationList/index.tsx | 9 +-
superset-frontend/src/pages/Chart/index.tsx | 2 +-
superset-frontend/src/setup/setupApp.ts | 4 +-
superset-frontend/src/setup/setupErrorMessages.ts | 7 +-
superset-frontend/src/utils/errorMessages.ts | 26 -
.../src/utils/getClientErrorObject.test.ts | 83 -
superset-frontend/src/views/CRUD/hooks.ts | 9 +-
superset-frontend/src/views/CRUD/utils.tsx | 2 +-
superset-websocket/package-lock.json | 161 +-
superset-websocket/package.json | 6 +-
superset/commands/chart/data/get_data_command.py | 1 -
superset/common/query_actions.py | 2 +
superset/common/query_context.py | 2 +-
superset/common/query_context_factory.py | 2 +-
superset/common/query_context_processor.py | 1 +
superset/common/query_object.py | 2 +-
superset/common/utils/query_cache_manager.py | 5 +
superset/config.py | 21 +-
superset/connectors/sqla/models.py | 10 +
superset/connectors/sqla/utils.py | 2 +-
superset/daos/base.py | 2 +-
superset/daos/database.py | 8 +-
superset/dashboards/api.py | 6 +-
superset/databases/api.py | 115 +-
superset/databases/decorators.py | 4 +-
superset/databases/schemas.py | 37 +-
superset/databases/utils.py | 1 -
superset/db_engine_specs/README.md | 67 +-
superset/db_engine_specs/base.py | 125 +-
superset/db_engine_specs/drill.py | 6 +-
superset/db_engine_specs/gsheets.py | 97 +-
superset/db_engine_specs/hive.py | 11 +-
superset/db_engine_specs/impala.py | 1 +
superset/db_engine_specs/postgres.py | 2 +-
superset/db_engine_specs/presto.py | 6 +-
superset/db_engine_specs/trino.py | 15 +-
superset/errors.py | 6 +-
superset/exceptions.py | 50 +
superset/key_value/types.py | 1 +
...0_16-02_678eefb4ab44_add_access_token_table.py} | 51 +-
superset/models/core.py | 42 +-
superset/models/dashboard.py | 8 +-
superset/models/helpers.py | 1 +
superset/models/slice.py | 4 -
superset/sql_lab.py | 12 +-
superset/sql_parse.py | 16 +-
superset/sql_validators/presto_db.py | 2 +-
.../superset/{public_welcome.html => oauth2.html} | 20 +-
superset/utils/lock.py | 99 +
superset/utils/oauth2.py | 176 +
superset/utils/retries.py | 2 +-
superset/views/core.py | 2 +
superset/viz.py | 2 +
tests/integration_tests/databases/api_tests.py | 4 +-
tests/integration_tests/reports/commands_tests.py | 12 +-
tests/integration_tests/security_tests.py | 1 +
tests/integration_tests/sqllab_tests.py | 37 +-
.../unit_tests/connectors}/__init__.py | 0
.../unit_tests/connectors/sqla}/__init__.py | 0
tests/unit_tests/connectors/sqla/models_test.py | 66 +
tests/unit_tests/databases/api_test.py | 170 +
tests/unit_tests/databases/schema_tests.py | 42 +
.../unit_tests/db_engine_specs/test_clickhouse.py | 5 +-
tests/unit_tests/db_engine_specs/test_databend.py | 5 +-
tests/unit_tests/db_engine_specs/test_drill.py | 8 +-
.../db_engine_specs/test_elasticsearch.py | 4 +-
tests/unit_tests/db_engine_specs/test_gsheets.py | 227 +
tests/unit_tests/sql_lab_test.py | 8 +-
tests/unit_tests/sql_parse_tests.py | 13 +-
tests/unit_tests/utils/lock_tests.py | 79 +
tests/unit_tests/utils/oauth2_tests.py | 95 +
250 files changed, 3480 insertions(+), 13808 deletions(-)
delete mode 100644 .github/supersetbot/.eslintrc.json
delete mode 100644 .github/supersetbot/README.md
delete mode 100644 .github/supersetbot/jest.config.js
delete mode 100644 .github/supersetbot/package-lock.json
delete mode 100644 .github/supersetbot/package.json
delete mode 100755 .github/supersetbot/src/cli.js
delete mode 100644 .github/supersetbot/src/cli.test.js
delete mode 100644 .github/supersetbot/src/context.js
delete mode 100644 .github/supersetbot/src/docker.js
delete mode 100644 .github/supersetbot/src/docker.test.js
delete mode 100644 .github/supersetbot/src/git.js
delete mode 100644 .github/supersetbot/src/git_release.js
delete mode 100644 .github/supersetbot/src/github.js
delete mode 100644 .github/supersetbot/src/index.js
delete mode 100644 .github/supersetbot/src/index.test.js
delete mode 100644 .github/supersetbot/src/metadata.js
delete mode 100755 .github/supersetbot/src/supersetbot
delete mode 100644 .github/supersetbot/src/utils.js
create mode 100644 CHANGELOG/3.1.2.md
create mode 100644 pyproject.toml
rename superset-frontend/{src/utils =>
packages/superset-ui-core/src/query}/getClientErrorObject.ts (97%)
copy
superset-frontend/{src/explore/components/controls/DateFilterControl/utils/dateFilterUtils.ts
=> packages/superset-ui-core/src/time-comparison/fetchTimeRange.ts} (70%)
create mode 100644
superset-frontend/packages/superset-ui-core/test/query/getClientErrorObject.test.ts
create mode 100644
superset-frontend/packages/superset-ui-core/test/time-comparison/fetchTimeRange.test.ts
create mode 100644
superset-frontend/src/components/ErrorMessage/OAuth2RedirectMessage.test.tsx
create mode 100644
superset-frontend/src/components/ErrorMessage/OAuth2RedirectMessage.tsx
delete mode 100644
superset-frontend/src/explore/components/DataTableControl/RowCount.test.tsx
delete mode 100644 superset-frontend/src/utils/errorMessages.ts
delete mode 100644 superset-frontend/src/utils/getClientErrorObject.test.ts
copy
superset/migrations/versions/{2020-07-09_17-12_73fd22e742ab_add_dynamic_plugins_py.py
=> 2024-03-20_16-02_678eefb4ab44_add_access_token_table.py} (55%)
copy superset/templates/superset/{public_welcome.html => oauth2.html} (73%)
create mode 100644 superset/utils/lock.py
create mode 100644 superset/utils/oauth2.py
copy {superset/advanced_data_type => tests/unit_tests/connectors}/__init__.py
(100%)
copy {superset/advanced_data_type =>
tests/unit_tests/connectors/sqla}/__init__.py (100%)
create mode 100644 tests/unit_tests/connectors/sqla/models_test.py
create mode 100644 tests/unit_tests/utils/lock_tests.py
create mode 100644 tests/unit_tests/utils/oauth2_tests.py