diff --git a/.github/workflows/bump-python-package.yml b/.github/workflows/bump-python-package.yml index 6a57d20f1b5c5..36da48fbb105f 100644 --- a/.github/workflows/bump-python-package.yml +++ b/.github/workflows/bump-python-package.yml @@ -23,7 +23,7 @@ on: jobs: bump-python-package: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: actions: write contents: write diff --git a/.github/workflows/cancel_duplicates.yml b/.github/workflows/cancel_duplicates.yml index a749a2add605b..24e1eb40afca8 100644 --- a/.github/workflows/cancel_duplicates.yml +++ b/.github/workflows/cancel_duplicates.yml @@ -9,7 +9,7 @@ on: jobs: cancel-duplicate-runs: name: Cancel duplicate workflow runs - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: actions: write contents: read diff --git a/.github/workflows/check_db_migration_confict.yml b/.github/workflows/check_db_migration_confict.yml index af291becde6f3..d9a6ca85e8cc5 100644 --- a/.github/workflows/check_db_migration_confict.yml +++ b/.github/workflows/check_db_migration_confict.yml @@ -19,7 +19,7 @@ concurrency: jobs: check_db_migration_conflict: name: Check DB migration conflict - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: contents: read pull-requests: write diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d9d5abdbdb562..b038a5723adf2 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -17,7 +17,7 @@ concurrency: jobs: analyze: name: Analyze - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: actions: read contents: read diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 0b98678bb1fb6..01e0503ad7d81 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -24,7 +24,7 @@ permissions: jobs: dependency-review: if: github.event_name == 'pull_request' - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: "Checkout Repository" uses: actions/checkout@v4 diff --git a/.github/workflows/embedded-sdk-release.yml b/.github/workflows/embedded-sdk-release.yml index 3ca29013e6b6d..66fd44bea61fc 100644 --- a/.github/workflows/embedded-sdk-release.yml +++ b/.github/workflows/embedded-sdk-release.yml @@ -8,7 +8,7 @@ on: jobs: config: - runs-on: "ubuntu-22.04" + runs-on: ubuntu-24.04 outputs: has-secrets: ${{ steps.check.outputs.has-secrets }} steps: @@ -23,7 +23,7 @@ jobs: build: needs: config if: needs.config.outputs.has-secrets - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 defaults: run: working-directory: superset-embedded-sdk diff --git a/.github/workflows/embedded-sdk-test.yml b/.github/workflows/embedded-sdk-test.yml index 62add4b25745e..3120608db05dc 100644 --- a/.github/workflows/embedded-sdk-test.yml +++ b/.github/workflows/embedded-sdk-test.yml @@ -13,7 +13,7 @@ concurrency: jobs: embedded-sdk-test: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 defaults: run: working-directory: superset-embedded-sdk diff --git a/.github/workflows/ephemeral-env-pr-close.yml b/.github/workflows/ephemeral-env-pr-close.yml index 5fc634f6cdf7a..60cf75dac828e 100644 --- a/.github/workflows/ephemeral-env-pr-close.yml +++ b/.github/workflows/ephemeral-env-pr-close.yml @@ -6,7 +6,7 @@ on: jobs: config: - runs-on: "ubuntu-22.04" + runs-on: ubuntu-24.04 outputs: has-secrets: ${{ steps.check.outputs.has-secrets }} steps: @@ -22,7 +22,7 @@ jobs: needs: config if: needs.config.outputs.has-secrets name: Cleanup ephemeral envs - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: pull-requests: write steps: diff --git a/.github/workflows/ephemeral-env.yml b/.github/workflows/ephemeral-env.yml index 92a0512b0bd75..91a3b54b7371a 100644 --- a/.github/workflows/ephemeral-env.yml +++ b/.github/workflows/ephemeral-env.yml @@ -21,7 +21,7 @@ jobs: group: ${{ github.workflow }}-${{ github.event.inputs.issue_number || github.event.issue.number || github.run_id }}-comment cancel-in-progress: true name: Evaluate ephemeral env comment trigger (/testenv) - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: pull-requests: write outputs: @@ -115,7 +115,7 @@ jobs: needs: ephemeral-env-comment if: needs.ephemeral-env-comment.outputs.slash-command == 'up' name: ephemeral-docker-build - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Get Info from comment uses: actions/github-script@v7 @@ -190,7 +190,7 @@ jobs: needs: [ephemeral-env-comment, ephemeral-docker-build] if: needs.ephemeral-env-comment.outputs.slash-command == 'up' name: Spin up an ephemeral environment - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: contents: read pull-requests: write diff --git a/.github/workflows/generate-FOSSA-report.yml b/.github/workflows/generate-FOSSA-report.yml index 807c8ea40fc2d..9f51a396c2227 100644 --- a/.github/workflows/generate-FOSSA-report.yml +++ b/.github/workflows/generate-FOSSA-report.yml @@ -8,7 +8,7 @@ on: jobs: config: - runs-on: "ubuntu-22.04" + runs-on: ubuntu-24.04 outputs: has-secrets: ${{ steps.check.outputs.has-secrets }} steps: @@ -24,7 +24,7 @@ jobs: needs: config if: needs.config.outputs.has-secrets name: Generate Report - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@v4 diff --git a/.github/workflows/github-action-validator.yml b/.github/workflows/github-action-validator.yml index adc8397817ab1..3bdefddc00806 100644 --- a/.github/workflows/github-action-validator.yml +++ b/.github/workflows/github-action-validator.yml @@ -11,7 +11,7 @@ on: jobs: validate-all-ghas: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout Repository uses: actions/checkout@v4 diff --git a/.github/workflows/issue_creation.yml b/.github/workflows/issue_creation.yml index fc3b3e45bdf7c..1d531e7796791 100644 --- a/.github/workflows/issue_creation.yml +++ b/.github/workflows/issue_creation.yml @@ -9,7 +9,7 @@ on: jobs: superbot-orglabel: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: contents: read pull-requests: write diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 5af67547f982f..c29387bcc8535 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -7,7 +7,7 @@ jobs: permissions: contents: read pull-requests: write - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/labeler@v5 with: diff --git a/.github/workflows/latest-release-tag.yml b/.github/workflows/latest-release-tag.yml index 659214af9e09e..72f63d1e8ccc8 100644 --- a/.github/workflows/latest-release-tag.yml +++ b/.github/workflows/latest-release-tag.yml @@ -6,7 +6,7 @@ on: jobs: latest-release: name: Add/update tag to new release - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: contents: write diff --git a/.github/workflows/license-check.yml b/.github/workflows/license-check.yml index 8974c5ae43ff4..6001eede70da3 100644 --- a/.github/workflows/license-check.yml +++ b/.github/workflows/license-check.yml @@ -12,7 +12,7 @@ concurrency: jobs: license_check: name: License Check - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@v4 diff --git a/.github/workflows/no-hold-label.yml b/.github/workflows/no-hold-label.yml index 866650ece4c11..f5d739bad5666 100644 --- a/.github/workflows/no-hold-label.yml +++ b/.github/workflows/no-hold-label.yml @@ -11,7 +11,7 @@ concurrency: jobs: check-hold-label: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Check for 'hold' label uses: actions/github-script@v7 diff --git a/.github/workflows/pr-lint.yml b/.github/workflows/pr-lint.yml index 5ba91fee6ebf2..230af3d19c097 100644 --- a/.github/workflows/pr-lint.yml +++ b/.github/workflows/pr-lint.yml @@ -10,7 +10,7 @@ on: jobs: lint-check: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: contents: read pull-requests: write diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 72eaeebb039e4..e102e630c813b 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -15,7 +15,7 @@ concurrency: jobs: pre-commit: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: python-version: ["current", "next", "previous"] diff --git a/.github/workflows/prefer-typescript.yml b/.github/workflows/prefer-typescript.yml index 4739ae8b6bf89..d243c8f5289f5 100644 --- a/.github/workflows/prefer-typescript.yml +++ b/.github/workflows/prefer-typescript.yml @@ -21,7 +21,7 @@ jobs: prefer_typescript: if: github.ref == 'ref/heads/master' && github.event_name == 'pull_request' name: Prefer TypeScript - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: contents: read pull-requests: write diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0fb4afa4fc525..3e76a1d14b8d9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,7 +8,7 @@ on: jobs: config: - runs-on: "ubuntu-22.04" + runs-on: ubuntu-24.04 outputs: has-secrets: ${{ steps.check.outputs.has-secrets }} steps: @@ -25,7 +25,7 @@ jobs: if: needs.config.outputs.has-secrets name: Bump version and publish package(s) - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: diff --git a/.github/workflows/superset-applitool-cypress.yml b/.github/workflows/superset-applitool-cypress.yml index 627c729a22492..0786abe4142a4 100644 --- a/.github/workflows/superset-applitool-cypress.yml +++ b/.github/workflows/superset-applitool-cypress.yml @@ -6,7 +6,7 @@ on: jobs: config: - runs-on: "ubuntu-22.04" + runs-on: ubuntu-24.04 outputs: has-secrets: ${{ steps.check.outputs.has-secrets }} steps: @@ -21,7 +21,7 @@ jobs: cypress-applitools: needs: config if: needs.config.outputs.has-secrets - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: diff --git a/.github/workflows/superset-applitools-storybook.yml b/.github/workflows/superset-applitools-storybook.yml index 583bfbea5b54a..c0c6e83e0bbee 100644 --- a/.github/workflows/superset-applitools-storybook.yml +++ b/.github/workflows/superset-applitools-storybook.yml @@ -12,7 +12,7 @@ env: jobs: config: - runs-on: "ubuntu-22.04" + runs-on: ubuntu-24.04 outputs: has-secrets: ${{ steps.check.outputs.has-secrets }} steps: @@ -27,7 +27,7 @@ jobs: cron: needs: config if: needs.config.outputs.has-secrets - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: node: [20] diff --git a/.github/workflows/superset-cli.yml b/.github/workflows/superset-cli.yml index 29dd87adfe173..a2d1d54279e4f 100644 --- a/.github/workflows/superset-cli.yml +++ b/.github/workflows/superset-cli.yml @@ -15,7 +15,7 @@ concurrency: jobs: test-load-examples: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 env: PYTHONPATH: ${{ github.workspace }} SUPERSET_CONFIG: tests.integration_tests.superset_test_config diff --git a/.github/workflows/superset-docs-deploy.yml b/.github/workflows/superset-docs-deploy.yml index 5ce2251ee526c..3f03e482d8069 100644 --- a/.github/workflows/superset-docs-deploy.yml +++ b/.github/workflows/superset-docs-deploy.yml @@ -12,7 +12,7 @@ on: jobs: config: - runs-on: "ubuntu-22.04" + runs-on: ubuntu-24.04 outputs: has-secrets: ${{ steps.check.outputs.has-secrets }} steps: @@ -28,7 +28,7 @@ jobs: needs: config if: needs.config.outputs.has-secrets name: Build & Deploy - runs-on: "ubuntu-22.04" + runs-on: ubuntu-24.04 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@v4 diff --git a/.github/workflows/superset-docs-verify.yml b/.github/workflows/superset-docs-verify.yml index 139cd0ae88aaa..7fcc7309a50bb 100644 --- a/.github/workflows/superset-docs-verify.yml +++ b/.github/workflows/superset-docs-verify.yml @@ -51,7 +51,7 @@ jobs: https://www.plaidcloud.com/ build-deploy: name: Build & Deploy - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 defaults: run: working-directory: docs diff --git a/.github/workflows/superset-e2e.yml b/.github/workflows/superset-e2e.yml index 134daebb2f4e7..b5646e8f41704 100644 --- a/.github/workflows/superset-e2e.yml +++ b/.github/workflows/superset-e2e.yml @@ -28,6 +28,7 @@ concurrency: jobs: cypress-matrix: + # Somehow one test flakes on 24.04 for unknown reasons, this is the only GHA left on 22.04 runs-on: ubuntu-22.04 permissions: contents: read diff --git a/.github/workflows/superset-frontend.yml b/.github/workflows/superset-frontend.yml index 41c3dfa9fa862..9451692f5f7a5 100644 --- a/.github/workflows/superset-frontend.yml +++ b/.github/workflows/superset-frontend.yml @@ -15,7 +15,7 @@ concurrency: jobs: frontend-build: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@v4 diff --git a/.github/workflows/superset-helm-lint.yml b/.github/workflows/superset-helm-lint.yml index 36ef523fe4fae..05071025173aa 100644 --- a/.github/workflows/superset-helm-lint.yml +++ b/.github/workflows/superset-helm-lint.yml @@ -13,7 +13,7 @@ concurrency: jobs: lint-test: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@v4 diff --git a/.github/workflows/superset-helm-release.yml b/.github/workflows/superset-helm-release.yml index abb25886d7e07..639bb4e7204e9 100644 --- a/.github/workflows/superset-helm-release.yml +++ b/.github/workflows/superset-helm-release.yml @@ -20,7 +20,7 @@ on: jobs: release: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: contents: write pull-requests: write diff --git a/.github/workflows/superset-python-integrationtest.yml b/.github/workflows/superset-python-integrationtest.yml index cdac8b03104f4..a511882e6563d 100644 --- a/.github/workflows/superset-python-integrationtest.yml +++ b/.github/workflows/superset-python-integrationtest.yml @@ -15,7 +15,7 @@ concurrency: jobs: test-mysql: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 env: PYTHONPATH: ${{ github.workspace }} SUPERSET_CONFIG: tests.integration_tests.superset_test_config @@ -74,7 +74,7 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} verbose: true test-postgres: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: python-version: ["current", "next", "previous"] @@ -136,7 +136,7 @@ jobs: verbose: true test-sqlite: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 env: PYTHONPATH: ${{ github.workspace }} SUPERSET_CONFIG: tests.integration_tests.superset_test_config diff --git a/.github/workflows/superset-python-presto-hive.yml b/.github/workflows/superset-python-presto-hive.yml index 2918689067286..ba17dd41d1c2d 100644 --- a/.github/workflows/superset-python-presto-hive.yml +++ b/.github/workflows/superset-python-presto-hive.yml @@ -16,7 +16,7 @@ concurrency: jobs: test-postgres-presto: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 env: PYTHONPATH: ${{ github.workspace }} SUPERSET_CONFIG: tests.integration_tests.superset_test_config @@ -84,7 +84,7 @@ jobs: verbose: true test-postgres-hive: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 env: PYTHONPATH: ${{ github.workspace }} SUPERSET_CONFIG: tests.integration_tests.superset_test_config diff --git a/.github/workflows/superset-python-unittest.yml b/.github/workflows/superset-python-unittest.yml index 8b4ef40f03991..c7bb82a73363c 100644 --- a/.github/workflows/superset-python-unittest.yml +++ b/.github/workflows/superset-python-unittest.yml @@ -16,7 +16,7 @@ concurrency: jobs: unit-tests: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: python-version: ["current", "next"] diff --git a/.github/workflows/superset-translations.yml b/.github/workflows/superset-translations.yml index 292a42afdb83b..94babe7c47eda 100644 --- a/.github/workflows/superset-translations.yml +++ b/.github/workflows/superset-translations.yml @@ -15,7 +15,7 @@ concurrency: jobs: frontend-check-translations: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@v4 @@ -46,7 +46,7 @@ jobs: npm run build-translation babel-extract: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@v4 diff --git a/.github/workflows/superset-websocket.yml b/.github/workflows/superset-websocket.yml index f1785a39abe48..ce7ec50a92fbe 100644 --- a/.github/workflows/superset-websocket.yml +++ b/.github/workflows/superset-websocket.yml @@ -18,7 +18,7 @@ concurrency: jobs: app-checks: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@v4 diff --git a/.github/workflows/supersetbot.yml b/.github/workflows/supersetbot.yml index f7e106ed9c7ac..b78fc743023dc 100644 --- a/.github/workflows/supersetbot.yml +++ b/.github/workflows/supersetbot.yml @@ -15,7 +15,7 @@ on: jobs: supersetbot: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 if: > github.event_name == 'workflow_dispatch' || (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@supersetbot')) diff --git a/.github/workflows/tag-release.yml b/.github/workflows/tag-release.yml index 096b1dfa1cbaa..8161304a1c6a4 100644 --- a/.github/workflows/tag-release.yml +++ b/.github/workflows/tag-release.yml @@ -23,7 +23,7 @@ on: - 'false' jobs: config: - runs-on: "ubuntu-22.04" + runs-on: ubuntu-24.04 outputs: has-secrets: ${{ steps.check.outputs.has-secrets }} steps: @@ -39,7 +39,7 @@ jobs: needs: config if: needs.config.outputs.has-secrets name: docker-release - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: build_preset: ["dev", "lean", "py310", "websocket", "dockerize", "py311"] @@ -100,7 +100,7 @@ jobs: update-prs-with-release-info: needs: config if: needs.config.outputs.has-secrets - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: contents: read pull-requests: write diff --git a/.github/workflows/tech-debt.yml b/.github/workflows/tech-debt.yml index c87d0dd1af4c3..1aec723c08543 100644 --- a/.github/workflows/tech-debt.yml +++ b/.github/workflows/tech-debt.yml @@ -8,7 +8,7 @@ on: jobs: config: - runs-on: "ubuntu-22.04" + runs-on: ubuntu-24.04 outputs: has-secrets: ${{ steps.check.outputs.has-secrets }} steps: @@ -23,7 +23,7 @@ jobs: process-and-upload: needs: config if: needs.config.outputs.has-secrets - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 name: Generate Reports steps: - name: Checkout Repository diff --git a/.github/workflows/welcome-new-users.yml b/.github/workflows/welcome-new-users.yml index 2c602967770d0..f973a243c62ea 100644 --- a/.github/workflows/welcome-new-users.yml +++ b/.github/workflows/welcome-new-users.yml @@ -6,7 +6,7 @@ on: jobs: welcome: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 permissions: pull-requests: write diff --git a/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx b/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx index 5cc8ba6d37f61..ea4d389fc7070 100644 --- a/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx +++ b/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx @@ -376,16 +376,13 @@ const Chart = props => { ], ); - const exportCSV = useCallback( - (isFullCSV = false) => { - exportTable('csv', isFullCSV); - }, - [exportTable], - ); + const exportCSV = useCallback(() => { + exportTable('csv', false); + }, [exportTable]); const exportFullCSV = useCallback(() => { - exportCSV(true); - }, [exportCSV]); + exportTable('csv', true); + }, [exportTable]); const exportPivotCSV = useCallback(() => { exportTable('csv', false, true); diff --git a/superset-frontend/src/theme.ts b/superset-frontend/src/theme.ts index 33e7eae582be9..20a874c063375 100644 --- a/superset-frontend/src/theme.ts +++ b/superset-frontend/src/theme.ts @@ -18,5 +18,5 @@ */ import './assets/stylesheets/superset.less'; -// Importing Antd under its own stylesheet to prevent unintentional theming. +// Importing Antd under its own stylesheet to prevent unintentional theming import './assets/stylesheets/antd/index.less'; diff --git a/superset/__init__.py b/superset/__init__.py index c97580b122cea..cbab58e0d2c90 100644 --- a/superset/__init__.py +++ b/superset/__init__.py @@ -34,8 +34,7 @@ # All of the fields located here should be considered legacy. The correct way # to declare "global" dependencies is to define it in extensions.py, # then initialize it in app.create_app(). These fields will be removed -# in subsequent PRs as things are migrated towards the factory -# pattern +# in subsequent PRs as things are migrated towards the factory pattern app: Flask = current_app cache = cache_manager.cache conf = LocalProxy(lambda: current_app.config)