This is an automated email from the ASF dual-hosted git repository. github-bot pushed a change to branch dependabot/npm_and_yarn/superset-frontend/react-select-4.3.1 in repository https://gitbox.apache.org/repos/asf/superset.git.
discard 10acd93 build(deps): bump react-select from 3.1.0 to 4.3.1 in /superset-frontend add d408ff8 fix(explore): show multi queries results in View query modal and data pane (#15840) add f9b7250 fix: revert DEFAULT_SQLLAB_LIMIT to default (#15869) add 73b436a fix: Unable to create alerts/report after introduced creation_method (#15760) add 4ba1709 fix: Ensure SupersetError.extra is always a dict (#15848) add 65728ea fix(15482): Propagate SupersetSecurityException error (#15874) add 7330aef feat: deprecate plugins by their metadata (#15882) add 9c81599 chore: Adds the tests that need to be coded for the Select component (#15885) add 6d3e19d fix(15403): Re-enable canceling query for Hive and Presto (#15878) add b81f120 add timezone selector component (#15880) add 873daf3 chore: bumping superset-ui 0.17.72 (#15895) add 2f95f81 feat: apply post processing to chart data (#15843) add fb5dce0 chore: implement new mockup to the new viz gallery (2nd iteration) (#15868) add 16a26ba fix: New time range filter initially show advance section (#15889) add f6115a7 fix: Side menu of the dashboard component will scroll out of dashboard (#15888) add 7aeb150 fix: Download as image of dashboard chart did not work (#15897) add 5be0a89 fix: Charts sort by in edit mode gets cut off (#15896) add 62550db fix: Update Query Context on Explore loading (#15865) add 1297fd9 fix(dashboard): Refresh Native Filters when Dashboard refreshes (#15890) add e6a3702 fix(Explore): "Customize" tab rendering behavior (#15841) add 2d00565 Incorrect translations (#15813) add eeba326 chore: set UUID of examples DB (#15724) add 315c52a fix: dashboard url error when edit slug (#15893) add 94e759d chore: bumping superset-ui 0.17.73 (#15901) add 019e746 Update alerts_reports.mdx (#15904) add 3f5237a feat(explore): new datasets have autocomplete filters enabled if UX_BETA is set (#15864) add 663dd3f chore: Improves the layout of the VizTypeGallery component (#15907) add e5540b7 fix: no roles being returned for anonymous user (#15585) add 8c7e09e fix: Select a query from History and Run (#15891) add 2ce676d feat: call screenshot to store `query_context` (#15846) add a3f54a6 chore: small viz gallery tweaks (#15900) add ea49aa3 feat: add timezones to report cron (#15849) add eda38a7 chore: bump superset-ui to 0.17.74 (#15923) add 11b0249 fix: remove unused time column when update dataset (#14969) add bdfc2dc fix: Keep chosen columns sort option when changing a column (#15918) add 32d2aa0 feat: run extra query on QueryObject and add compare operator for post_processing (#15279) add 3adf8e8 feat: send data embedded in report email (#15805) add 671b8f2 chore: Mypy fix **kwargs type (#15823) add 3f6c81b add timezone selector to alerts and reports (#15920) add bfe7eb9 feat(dbc ui): Adding Google Sheets Dynamic Form (#15801) add 7b503fa docs: add .asf.yaml (#15931) add 7b0acc4 chore: Changes the main menu order as defined in SIP-34 (#15929) add ac9c137 fix(dashboard): check dashboard id before calling redux methods (#15921) add 56dd2a3 fix(dashboard): Show the filters popover behind the dashboard header when scrolling (#15933) add 6afa840 feat: send report data to Slack (#15806) add f4739f4 feat: post-processing for pivot table v2 (#15879) add 02f9749 feat(homepage): add more cards and new layout (#15853) add 3b9b2c9 Update ModalHeader.tsx (#15949) add c2e4290 fix(dashboard): Add required message in the tooltip for the time range filter (#15941) add e8f18f4 fix: Drag inner tab to outer tab while editing a dashboard will show an error (#15946) add eb78f43 fix: Name change is not lost in left side of modal when return to edition after aborting changes (#15952) add cc704dd fix: Cancel alert is not appearing to all native filters modal fields (#15925) add 2d61f15 feat: send post-processed data in reports (#15953) add f1b57c0 fix: DB add modal (#15981) add a3a762e fix: Dataset field required 2 clicks to select when dashboard was empty (#15985) add 7e691f9 Update bug_report.md (#15987) add 908db3a fix select width (#15986) add c37c56c Revert "fix: Select a query from History and Run (#15891)" (#15992) add 5fd798a chore: change dropdown icons from horizontal to vertical (#15958) add 324ecb3 fix: three button styles to tertiary (#15978) add b73d7ba fix(dashboard): FilterBox JS error when datasets API is slow (#15993) add c01d42f fix: eliminate cartesian product columns in pivot operator (#15975) add ce6bc3b fix: save DB with with query (#15991) add 46188c1 fix(explore): calculate query staleness correctly (#15994) add a786373 feat: auto sync table columns when change dataset (#15887) add 475f9cd fix: Sort Metrics by ID DESC (order of creation) in the Datasource Editor (#15971) add c77bf26 fix(native-filters): add support for versioned import/export (#16017) add 3061b6a fix(explore): fix undefined error when using dnd (#16020) add 22dc3d1 docs: update api (#16005) add 6095978 docs: add Hydrolix to users list (#15950) add 31d79ff docs: add instructions for how to connect to local database from docker container (#15936) add 5031a67 feat: Self subscribe reports (#16027) add a7f247b chore: Bump Celery (#15927) add 39db6a7 docs: update api 2 (#16032) add e057678 add feature flag to header bar (#16031) add a889cb3 chore: Auto focus the viz gallery select (#16025) add 3f57ea7 fix: missing mulitiple metrics on pivot operator (#16026) add c8a8347 chore: bump superset-ui to 0.17.77 (#16034) add 39913d2 Implement sectionId (#16022) add 76a13df fix: Modal is blinking when opening (#16035) add c0615c5 fix: Ensure table uniqueness on update (#15909) add 5917407 fix(explore): filter popover opening after removing a filter (#16024) add 41e8190 chore: Use datetime.timedelta for defining durations in config (#16029) add 4cb79e5 fix: Fix long dashboards screenshot emails (#15954) add 7b15b76 fix: DB exported with incorrect type (#16037) add 7c059cd fix: make dataset update methods static instead of global (#16044) add ec22acb fix: handle schemas_allowed_for_csv_upload serde (#16038) add 0462252 Revert a7f247b472efedaf13b30fc02e9acdf6fe38795f (#16039) add 430ebe1 fix: sync columns in explore page (#16042) add 69c5cd7 feat: handle subtle bug with load-examples (#16052) add 490890d fix(dashboard): 500 error caused by data_for_slices API (#16053) add 7332055 chore: bump superset-ui to 0.17.78 (#16058) add 1917464 fix: Fix the Select unselect for object values (#16062) add 2c55cc6 fix: Align alert solid small svg center (#15762) add 86cecae fix(native-filters): add support for boolean cols to select (#16061) add 7c95595 fix(docker-compose): Make db service use correct env file (#15659) add 4359650 fix: Adding report bug (#16065) add 7effa44 refactor: adopt --app as celery global option (#16040) add 7ef97a5 feat(explore): add automatic conditional formatter to pivot table v2 (#16045) add 11a2d4d fix: Remove grey bar for TableElement component when `metadata` is empty (#16054) add a59d458 chore(explore): Create new entrypoints for Echarts Timeseries (#15942) add 1dbd1e9 chore: simplify chart permissions (#16078) add af204ff chore(explore): bump deckgl to 0.4.9 (#16086) add e6274e0 change button color (#16093) add b72fd7b fix: load tabbed dash only for tests (#16091) add 2307216 fix(dashboard): user id can be null when there is an anonymous user (#15592) add e6292a8 fix(explore): drag & drop column select component triggering onChange unnecessarily (#16073) add 2bfc1c2 docs: fix link and clarify postgres install instructions (#16101) add 423ff50 chore: Changes the dashboard properties modal to use the new select component (#16064) add e59f318 chore: Changes the RefreshIntervalModal component to use the new select component (#16048) add 6edc1ee chore: Replaces the select for a dropdown button in the CSS editor (#16043) add b80f018 fix: move watermark to about section (#16097) add 772da8d fix(explore): revert dnd column dependency array change to fix infinite rerenders (#16115) add 28c383a fix: migrate_roles (#16098) add 22d8d58 docs: update install-from-scratch instructions for CentOS (#16129) add 85329c3 refactor: remove unnecessary dataset queries from dashboard requests (#16110) add 85ae8e3 refactor: proper TypeError handling in memoize decorator (#16074) add 3bbcc30 fix: virtual dataset wont work (#16132) add ddb5005 fix: test (#16137) add b07c80a Adjust width (#16092) add df50a47 chore: add stats logging to thumbnail api (#16133) add 2db1615 feat: add profiling to Superset pages (#16136) add 6ac4f4e chore(explore): change dnd placeholders (#16116) add 578a9e9 build: Removed jsx-remove-data-test-id usage from code for multi-build-variant testing (#15386) add b7cc89c fix(explore): dnd error when dragging metric if multi: false (#16088) add a518513 feat: added google alert to DB Connection Form (#16095) add 5ce3883 feat: better errors for report in charts and dashboard (#16131) add 606a7bf fix: change Alert Permissions (#16118) add 3712ee0 additional params field fixed (#16161) add 79e8d77 chore: remove TerserPlugin step for build (#16163) add bb1d8fe fix: boolean type into SQL 'in' operator (#16107) add 07f3399 fix: Multiple dashboard refresh triggers for the same session (#16094) add 273ab3d fix: Safari is not showing scroll bars in Explore (#16089) add a702487 feat: add sticky state to tables and loadingcards state. (#16102) add 6e1d16d feat(explore): each control can define its own canDrop for dnd (#16090) add 5488a8a add config to hide some user menu items (#16156) add 63ace7b feat(cross-filters): add support for temporal filters (#16139) add f0e3b68 fix: ensure that users viewing chart does not automatically save edit data (#16077) add fd80ae3 fix: Make sheet_name into a `ValidationInputError` (#16056) add 3f86a54 fix: turn on SSL in database edit form show 500 error (#16151) add 7b3fce7 fix: revert data endpoint name (#16162) add 5e64d65 Hide Safari default tooltip (#16145) add a310248 feat: add chart image info to reports from charts (#16158) add 9f52c10 fix: isDynamic function (#16175) add 2dc0bdd feat: Added multi-regional IPs to Database Connections (#16170) add 628169a feat: change query predicate to text (#16160) add 6df16c4 feat: CLI cleanup (#16178) add a0c9b9d fix: ensure created user entities do not show inside examples (#16176) add 9841c78 chore: switch back tag name to popular from highly-used (#16174) add a30d884 fix: change listivew card layouts to the new homepage card layout (#16171) add 3aefa69 update covid dashboard (#16183) add 4df3672 chore: bump superset-ui to 0.17.82 (#16186) add 98fc29c fix(explore): metric label disappearing in some scenarios (#16190) add 6c304b8 feat: Changing Dataset names (#16199) add ccfc95f fix(explore): adhoc metrics popover resets label after hovering outside (#16196) add b4555df fix: sorting on "Modified By" in chart table (#16208) add c79de7a initial fix (#16212) add 5a84841 fix: pyinstrument dependency (#16211) add 7de54d0 feat: import configuration from directory (#15686) add b61c34f fix(viz): deduce metric name if empty (#16194) add a16e290 fix(explore): conditional formatting value validators (#16230) add 16a9d21 chore: Add feature flags to PR template (#16215) add 2c5731a Show/hide tooltips (#16192) add a1e18ed fix(Explore): Show the tooltip only when label does not fit the container in METRICS/FILTERS/GROUP BY/SORT BY of the DATA panel (#16060) add 67c4c01 fix: remove encryption from db params (#16214) add 1715143 feat: Allow users to connect via legacy SQLA form (#16201) add 9d0dc56 Revert "feat: Changing Dataset names (#16199)" (#16235) add cdcc161 fix: Remove Advanced Analytics tag for 2 charts (#16240) add 5d3d6b6 fix: validate_parameters and query (#16241) add 517a678 fix(dashboard): cross filter chart highlight when filters badge icon clicked (#16233) add d6f9c48 feat(dao): admin can remove self from object owners (#15149) add 6cd15d5 refactor: external metadata fetch API (#16193) add 2611681 fix: skip perms on query context update (#16250) add 4ae88ce chore: bump py version for integration test (#16213) add c09f6ed fix(Dashboard): Omnibar dropdown visibility and keyboard commands (#16168) add 720e5b1 chore: Shows the dataset description in the gallery dropdown (#16200) add f946954 chore: bump superset-ui packages to 0.17.84 (#16251) add a5dbe6a fix examples tab for dashboard (#16253) add 24b43be chore(pylint): Bump Pylint to 2.9.6 (#16146) add 9b2dffe fix: pivot columns with ints for name (#16259) add d46dc9a chore: upgrade mypy and add type guards (#16227) add 3709131 check roles before fetching reports (#16260) add 22231ad Move pagination outside of table (#16232) add 0668eaa chore: Improves the flow to create a new chart (#16252) add 542b864 fix: pivot col names in post_process (#16262) add ee9a384 fix: disable text reports for now (#16257) add 8e07dd2 chore(pylint): Re-enable super-with-arguments check (#16138) add 7b72443 chore(pylint): Reenable ungrouped-imports check (#16256) add b5c7ed9 chore(pylint): Reenable too-many-locals check (#16268) add 36abc51 fix(dashboard): unset empty time filter indicator (#16272) add 0df15bf chore(pylint): Reenable import-outside-toplevel check (#16263) add 36bc7b0 chore(pylint): Reenable too-few-public-methods check (#16264) add be7065f chore(pylint): Reenable raise-missing-from check (#16266) add 2be84e7 chore(explore): remove unnecessary favstar redirect (#16288) add d13b081 fix(explore): let admin overwrite slice (#16290) add 9876c36 Fix table height (#16275) add 5e75baf fix(sqlite): week grain refer to day of week (#16293) add 203c311 feat(explore): make dnd controls clickable (#16119) add f5fbfef timezone editor (#16281) add f581e04 change filter (#16280) add 8a36356 fix: rename Databricks (#16297) add 4119bb9 fix: reverting Dataset names (#16243) add 3c0aefb Revert "fix: disable text reports for now (#16257)" (#16296) add ac8e54d fix: improve pivot post-processing (#16289) add b87e0b3 refactor: rearrange dashboard page js bundles (#16285) add d5f63a7 fix: remove mergepoint from past migration (#16301) add 7a284bb fix: allow reports to update query_context (#16303) add 4960b5e pass correct report_format (#16306) add 9075e42 feat(sqla): apply time grain to all temporal groupbys (#16318) add 482dffb docs: Add Care to users list of Apache Superset (#16308) add 5f060a2 feat: Adding Rockset db engine spec (#16167) add 2c595b0 chore(explore): make metric/column search input clearable (#16320) add a547dcb fix(explore): reordering columns with dnd sometimes glitching (#16322) add efe850b adjust initial state (#16329) add afb8bd5 feat: improve embedded data table in text reports (#16335) add ec8d3b0 fix: send CSV pivoted in reports (#16347) add 42cd21e chore: bump superset-ui to v0.17.85 (#16350) add d75da74 docs: add VkusVill and TechAudit to users list (#16113) add c5c2861 fix: Blank space in Change dataset modal without warning message (#16324) add 86f4e69 chore(viz): bump deckgl plugin to 0.4.11 (#16353) add 37f09bd fix: columns/index rebuild (#16355) add 50d896f fix: Fix parsing onSaving reports toast when user hasn't saved chart (#16330) add 575ee24 fix: call external metadata endpoint with correct rison object (#16369) add ea803c3 feat: Add new dev commands to Makefile (#16327) add 13a2ee3 docs: document FLASK_APP_MUTATOR (#16286) add adebc09 fix: update table ID in query context on chart import (#16374) add 518c3c9 test: Functional RTL for email report modal II (#16148) add 649e509 fix: import dashboard w/o metadata (#16360) add c508199 initial commit (#16380) add a9f502b fix: big number default date format (#16383) add 3faf653 initial commit (#16366) add 970d762 feat: Add extraVolumes and extraVolumeMounts to all main containers (#16361) add 7e4c940 chore(pylint): Enable useless-suppression check (#16388) add bc4b6f0 fix(pylint): Fix master (#16405) add 0cdc767 chore: Displays the dataset description in a tooltip in the datasets list (#16392) add c768941 chore: Changes the DatabaseSelector to use the new Select component (#16334) add a6aad52 fix: regex for multi-region IPs (#16410) add 486ef6b feat: config to customize bootstrap data overrides (#16386) add c14364c chore: Enhance Omnibar (#16273) add 1fc9318 chore: Changes the AlertReportModal to use the new Select component (#16144) add f6637ca fix(api): return total count on related endpoint (#16397) add 9a37ad1 fix: Return original document title when leaving a dashboard (#16323) add 575e7af fix: Show cross filter option only when cross filter is enabled (#16391) add 6a55687 chore: Removes the TODOs and uses the default page size (#16422) add 3586474 fix(explore): retain chart ownership on query context update (#16419) add 81241b6 Revert "fix(explore): let admin overwrite slice (#16290)" (#16408) add c0e9006 feat: add activate command (#16404) add 5eded9f chore(viz): bump superset-ui to 0.17.87 (#16420) add e71c6e6 docs: make FEATURE_FLAGS.md reference a link (#16415) add 631ad02 fix: copy to Clipboard order (#16299) add 5e47298 feat: add Shillelagh DB engine spec (#16416) add 78d8089 fix: Disable Slack notification method if no api token (#16367) add 08b8aa2 fix: setupPlugin in chart list page (#16413) add 6a2cec5 fix(dashboard): undo and redo buttons weird alignment (#16417) add 93c60e4 refactor: sql_json view endpoint (#16441) add db11c3e feat: Draggable and Resizable Modal (#16394) add 18be181 fix(explore): update overwrite button on perm change (#16437) add ec08750 refactor(explore): improve typing for Dnd controls (#16362) add 1badcae feat: add function list to auto-complete to Clickhouse datasource (#16234) add 1c71eda fix(native-filters): handle null values in value filter (#16460) add c66d6d8 chore: fixed slack invite link (#16466) add 577ede4 fix: prevent page crash when chart can't render (#16464) add ac1d779 chore(ci): bump pylint to 2.10.2 (#16463) add 8ad495a perf(dashboard): reduce number of rerenders of Charts (#16444) add f422f1e perf(dashboard): decouple redux props from dashboard components (#16421) add fd64561 docs: make code snippet usable with required imports (#16473) add ee2eccd fix: queryEditor bug (#16452) add a413f79 fix(explore): JS error for creating new metrics from columns (#16477) add 8adc31d Revert "chore: Changes the DatabaseSelector to use the new Select component (#16334)" (#16478) add 147637a fix(native-filters): add handle undefined control value gracefully (#16468) add 62d8ab7 fix: create example DB if needed (#16451) add 1ffd73d chore: Docs/superset1.3 release notes (#16390) add 90e2f09 docs: update entries for v1.2 and v1.3 (#16496) add 8aa24e5 chore: remove myself from codeowners on Preset integration (#16470) add 2199f65 fix: sql lab refetch button (#16469) add 960d1e4 fix: stop endless loading when dataset no longer exist (#16511) add a616b878 make chart rerender on timeseries change (#16411) add e246916 fix: select database fix (#16472) add ad8336a fix: Pin snowflake-sqlalchemy to 1.2.4 (#16515) add d25b096 feat: Add parquet upload (#14449) add f001c44 Make Modal draggable and resizable (#16447) add 1f1e2dd fix: ensure setting operator to `None` (#16371) (#16372) add c5a5cf7 fix(datasets): add support for removing owners (#16461) add 68c2a6d refactor sql_json view endpoint: separate getting and checking existing query to ad hoc methods (#16449) add e024f8c fix: Set correct comparison operator for snowflake-sqlalchemy pinning (#16526) add 80c39da fix: can't drop column when name overlap (#16482) add e947f8a refactor sql_json view endpoint: extract to method reuse code (#16546) add 75a1b19 chore: bump superset-ui to 0.18.0 (#16544) add 2e11b05 chore: bump superset-ui to 0.18.1 (#16563) add 02798a3 fix: Adds a loading message when needed in the Select component (#16531) add 070fdbe fix(tests): make parquet select deterministic with order by (#16570) add a0db536 bump emotion to help with cache clobbering (#16559) add 4e380db fix: Support Jinja template functions in global async queries (#16412) add 9bb890e fix: impersonate user label/tooltip (#16573) add 5f8dff1 docs: update for small typos (#16568) add 359383b feat: Add Aurora Data API engine spec (#16535) add be77ad2 refactor: sql_json view endpoint: encapsulate ctas parameters (#16548) add e60b489 refactor sql_json view endpoint: separate concern into ad hod method (#16595) add df5c0fb feat: Experimental cross-filter plugins (#16594) add 7cbced8 chore(deps): bump superset-ui to 0.18.2 (#16601) add 3fe2e6e Remove export CSV in old filter box (#16592) add 7faa5c6 perf(dashboard): reduce rerenders of DragDroppable (#16525) add effcf3b perf(dashboard): decrease number of rerenders of FiltersBadge (#16545) add 9de2196 fix: TemporalWrapperType string representation (#16614) add 37c2020 chore: Merges latest Select changes (#16587) add 519baa6 fix: params in sql lab are jumpy in the ace editor (#16536) add 420dd5b chore: Pylint downgrade (#16617) add 9dfa33f fix(dnd): make clicked dnd metrics unique (#16632) add 7e09b72 chore: Bump FAB to 3.3.2 (#16615) add 788c0c3 fix(dashboard): label colors included in explore url (#16621) add c66f278 feat: Backend Validation for Creation Method (#16375) add 6465ee7 fix(sqla): support for date adhoc filter (#16634) add d0f69f2 fix: pybabel extract fails (#16629) add e9e6c5d chore: Writes the tests for the new Select component (#16638) add df7d9d5 refactor sql_json view endpoint: separate save query concern into ad hod method (#16646) add 3d0ebd5 chore: Bump Flask-OpenID to 1.3.0 (#16648) add 62637f2 refactor sql_json view endpoint: separate validate the query concern into ad hod method (#16647) add 267b327 refactor sql_json view endpoint: separate query rendering concern into ad hod method (#16649) add dad55a7 refactor sql_json view endpoint: separate set the query's limiting concern into ad hod method (#16653) add 4b70d46 feat(dashboard): Native filters - add type to native filter configuration (#16549) add bb014b5 fix: fix assignment in FilterBoxViz (#16662) add 4dc859f fix: Ensure alerts & reports aren't schduled when flag is off (#16639) add 1429d9d refactor sql_json view endpoint: extract methods and rearrange code ordering (#16675) add 51acada refactor sql_json view endpoint: separate a response creation (#16676) add 668ae23 feat: Tabs in column (#16593) add 1cc7263 refactor: sql_json view endpoint: use execution context instead of query (#16677) add f2bc139 feat: feature flag configurable custom backend (#16618) add 83581b1 feat(sqla): add time grain and time column to jinja params (#16680) add 29b635a refactor sql_json view endpoint: move all logic from view to ExecuteSqlCommand (#16682) add b0b9965 fix: reset perf logger timer for soft navigation for SPA pages (#16668) add c6ac107 feat: show build number value in the About if present in the config (#14955) add 1669947 chore(pylint): Reenable too-many-lines check (#16287) add 376c685 feat: adding logging to validation (#16527) add d984c10 fix: Normalise `*.sh` File Endings (#16608) add ad60c0c fix: remove useless-suppression for pylint (#16696) add 5ac8ac0 fix: don't send invalid URLs back to the user (#16687) add c99cacb fix(explore): only refresh data panel on relevant changes (#16699) add 9e00e4e fix(dataset): create ES-View dataset raise exception #16623 (#16624) add fecd412 fix: Select refactoring known issues (#16666) add 1d890f8 fix(explore): make clicked dnd filters unique (#16700) add 9f5f679 bump sasl (#16669) add 540277e chore: Add option to set a custom color scheme as default (#16540) add 7f804d6 feat: show nice error page in prod (#16695) add b0ac5d1 perf(dashboard): fix filter-box performance bug (#16702) add adc3d24 fix: Ignore case and special keys when searching (#16706) add fb4650a chore(pylint): Remove top-level disable (#16589) add 88c09c2 feat(jinja): improve url parameter formatting (#16711) add 00ca21e fix: report with timeout chart (#16674) add 86290cc chore: Improves the Select component to avoid additional queries when all values have been loaded (#16712) add 092ef5b fix: set importer as owner (#16656) add 21f98dd fix: catch exception when create connection (#16692) add 836b5e2 feat: add support for generic series limit (#16660) add a839649 fix(pandas-postprocessing): percentage compare to use correct column (#16716) add 633f29f Helm chart: Support hostAliases (#16703) add 4e3d4f6 feat: add global max row limit (#16683) add 986ed68 chore: bump path parse module in websocket sidecar app (#16720) add a4f6001 add semantic title to the pull request template (#16693) add cc1c6c1 feat: add resample operator in post processing (#16607) add 7586e47 other: Provide option to add environment variables to only supersetNode (#16627) add 67b1330 chore: bump superset-ui 0.18.5 (#16725) add 985aa06 chore: Upgrade immer package version (#16741) add b92358b ci: bump npm to version 7 (#16748) add 2a25e2d update execution logs and states for alerts (#16736) add a8d5342 chore: add browser info to template (#16732) add f032cc2 fix shared query (#16753) add d375538 only fetch db function when db exists in sql lab (#16754) add 493e804 chore: log URI before downloading data on import (#16762) add 48a61ba fix: handle CTEs with comments on is_select (#16769) add a743526 fix: typo in log (#16767) add 1d5100d fix(dataset): retain is_dttm if set on metadata sync (#16776) add 596e1cd refactor: Changes the DatabaseSelector and TableSelector to use the new Select component (#16483) add b6d78bf refactor: Changes the list views to use the new Select component (#16393) add 9b17e86 chore: Moves messageToasts to the components folder (#14431) add 486e0d4 chore: Upgrade Webpack to v5 (#16701) add 7aed08c build(deps): bump react-select from 3.1.0 to 4.3.1 in /superset-frontend 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 (10acd93) \ N -- N -- N refs/heads/dependabot/npm_and_yarn/superset-frontend/react-select-4.3.1 (7aed08c) 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: .gitattributes | 1 + .github/CODEOWNERS | 6 +- .github/ISSUE_TEMPLATE/bug_report.md | 2 + .github/PULL_REQUEST_TEMPLATE.md | 7 + .github/workflows/bashlib.sh | 7 +- .pre-commit-config.yaml | 3 +- .pylintrc | 23 +- CHANGELOG.md | 742 +- CODE_OF_CONDUCT.md | 2 +- Dockerfile | 2 +- Makefile | 14 +- README.md | 4 +- RELEASING/README.md | 2 + RELEASING/changelog.py | 7 +- RELEASING/release-notes-1-3/README.md | 73 + .../media/dashboard_native_filters_1.jpg | Bin 0 -> 371135 bytes .../release-notes-1-3/media/export_full_csv.png | Bin 0 -> 118424 bytes RELEASING/release-notes-1-3/media/funnel_chart.png | Bin 0 -> 232235 bytes .../release-notes-1-3/media/jinja_templating.png | Bin 0 -> 33792 bytes .../media/native_filters_collapsed.png | Bin 0 -> 333689 bytes .../media/view_query_dashboard.png | Bin 0 -> 290177 bytes RESOURCES/INTHEWILD.md | 5 +- UPDATING.md | 24 +- docker-compose-non-dev.yml | 2 +- docker-compose.yml | 3 + requirements/base.in => docs/.asf.yaml | 10 +- docs/installation.rst | 2 +- docs/package.json | 2 +- docs/src/pages/community.tsx | 2 +- .../pages/docs/Connecting to Databases/index.mdx | 4 +- .../docs/Connecting to Databases/postgres.mdx | 4 +- .../docs/Connecting to Databases/snowflake.mdx | 2 +- docs/src/pages/docs/contributing-page.mdx | 2 +- .../src/pages/docs/installation/alerts_reports.mdx | 1 + .../docs/installation/async_queries_celery.mdx | 2 +- docs/src/pages/docs/installation/configuring.mdx | 25 +- docs/src/pages/docs/installation/index.mdx | 10 + .../pages/docs/installation/installing_scratch.mdx | 12 + .../src/pages/docs/installation/sql_templating.mdx | 39 +- docs/src/pages/docs/security-page.mdx | 4 +- docs/src/resources/openapi.json | 1857 +- helm/superset/Chart.yaml | 2 +- helm/superset/templates/deployment-beat.yaml | 9 + helm/superset/templates/deployment-worker.yaml | 9 + helm/superset/templates/deployment.yaml | 15 + helm/superset/templates/init-job.yaml | 6 + helm/superset/values.yaml | 26 + requirements/base.in | 1 + requirements/base.txt | 103 +- requirements/development.in | 2 +- requirements/development.txt | 55 +- requirements/docker.txt | 8 +- requirements/integration.in | 3 + requirements/integration.txt | 48 +- requirements/testing.in | 5 +- requirements/testing.txt | 60 +- scripts/benchmark_migration.py | 10 +- scripts/ci_check_no_file_changes.sh | 4 +- setup.cfg | 2 +- setup.py | 20 +- superset-frontend/.storybook/main.js | 2 +- superset-frontend/babel.config.js | 4 + .../cypress/integration/chart_list/filter.test.ts | 88 +- .../cypress/integration/dashboard/markdown.test.ts | 22 +- .../integration/dashboard_list/filter.test.ts | 68 +- .../integration/explore/AdhocFilters.test.ts | 4 - .../cypress/integration/explore/control.test.ts | 3 - .../explore/visualizations/line.test.ts | 9 - superset-frontend/cypress-base/package-lock.json | 3009 +- superset-frontend/cypress-base/package.json | 8 +- .../images/icons/alert_solid_small.svg | 4 +- .../icons/{alert_solid_small.svg => ballot.svg} | 6 +- .../icons/{alert_solid_small.svg => category.svg} | 6 +- .../images/icons/more_vert.svg | 24 +- .../icons/{alert_solid_small.svg => tags.svg} | 6 +- superset-frontend/jest.config.js | 4 +- superset-frontend/package-lock.json | 92871 +++++++++++++------ superset-frontend/package.json | 131 +- .../{styleMock.js => mockExportObject.js} | 0 .../__mocks__/{fileMock.js => mockExportString.js} | 0 .../spec/fixtures/mockNativeFilters.ts | 3 + .../mockReportState.js} | 24 +- superset-frontend/spec/fixtures/mockState.js | 4 +- .../{mockState.js => mockStateWithoutUser.tsx} | 16 +- superset-frontend/spec/helpers/reducerIndex.ts | 4 +- superset-frontend/spec/helpers/setup.ts | 2 + .../dashboard/actions/dashboardLayout_spec.js | 2 +- .../components/RefreshIntervalModal_spec.jsx | 6 +- .../dashboard/components/SliceAdder_spec.jsx | 4 +- .../components/gridComponents/ChartHolder_spec.jsx | 4 +- .../components/gridComponents/Markdown_spec.jsx | 4 +- .../nativeFilters/NativeFiltersModal_spec.tsx | 14 +- .../dashboard/fixtures/mockNativeFilters.ts | 4 +- .../dashboard/util/isValidChild_spec.ts | 2 +- .../datasource/DatasourceEditor_spec.jsx | 3 +- .../explore/components/ExploreChartHeader_spec.jsx | 74 - .../explore/components/MetricsControl_spec.jsx | 237 +- .../explore/components/SaveModal_spec.jsx | 8 +- .../explore/components/VizTypeControl_spec.jsx | 4 +- .../spec/javascripts/messageToasts/.eslintrc | 30 - .../javascripts/sqllab/SqlEditorLeftBar_spec.jsx | 10 +- .../spec/javascripts/sqllab/SqlEditor_spec.jsx | 4 +- .../spec/javascripts/sqllab/actions/sqlLab_spec.js | 60 +- superset-frontend/src/CRUD/CollectionTable.tsx | 78 +- superset-frontend/src/SqlLab/actions/sqlLab.js | 56 +- .../src/SqlLab/components/AceEditorWrapper.tsx | 17 +- superset-frontend/src/SqlLab/components/App.jsx | 14 +- .../src/SqlLab/components/ResultSet.tsx | 4 +- .../src/SqlLab/components/ShareSqlLabQuery.tsx | 13 +- .../src/SqlLab/components/SqlEditorLeftBar.jsx | 9 +- .../src/SqlLab/components/TableElement.tsx | 3 +- .../src/SqlLab/reducers/getInitialState.js | 2 +- superset-frontend/src/SqlLab/reducers/index.js | 3 +- superset-frontend/src/SqlLab/reducers/sqlLab.js | 15 +- superset-frontend/src/SqlLab/types.ts | 13 + .../src/addSlice/AddSliceContainer.test.tsx | 24 +- .../src/addSlice/AddSliceContainer.tsx | 351 +- superset-frontend/src/addSlice/App.tsx | 2 +- superset-frontend/src/chart/Chart.jsx | 35 +- superset-frontend/src/chart/ChartRenderer.jsx | 10 +- superset-frontend/src/chart/chartAction.js | 22 +- superset-frontend/src/chart/chartReducer.ts | 19 + superset-frontend/src/common/components/index.tsx | 17 +- superset-frontend/src/components/Button/index.tsx | 6 +- .../src/components/CertifiedIcon/index.tsx | 9 +- .../CopyToClipboard/CopyToClipboard.stories.tsx | 4 +- .../src/components/CopyToClipboard/index.jsx | 2 +- .../src/components/CronPicker/CronPicker.tsx | 4 +- .../DatabaseSelector/DatabaseSelector.test.tsx | 115 +- .../src/components/DatabaseSelector/index.tsx | 367 +- .../src/components/DatePicker/index.tsx | 8 +- .../ErrorMessage/DatabaseErrorMessage.tsx | 11 +- .../src/components/FaveStar/index.tsx | 6 +- .../src/components/FlashProvider/index.tsx | 2 +- superset-frontend/src/components/Form/Form.tsx | 2 + .../src/components/Form/LabeledErrorBoundInput.tsx | 2 +- superset-frontend/src/components/Form/index.tsx | 4 +- superset-frontend/src/components/Icons/Icon.tsx | 10 +- .../src/components/Icons/Icons.stories.tsx | 2 +- superset-frontend/src/components/Icons/index.tsx | 4 + .../src/components/InfoTooltip/index.tsx | 10 +- .../src/components/ListView/CardCollection.tsx | 20 +- .../src/components/ListView/CardSortSelect.tsx | 100 +- .../src/components/ListView/Filters/Base.ts | 8 +- .../src/components/ListView/Filters/DateRange.tsx | 21 +- .../src/components/ListView/Filters/Search.tsx | 41 +- .../src/components/ListView/Filters/Select.tsx | 148 +- .../src/components/ListView/Filters/index.tsx | 29 +- .../src/components/ListView/ListView.test.jsx | 24 +- .../src/components/ListView/ListView.tsx | 26 +- superset-frontend/src/components/ListView/types.ts | 18 +- superset-frontend/src/components/ListView/utils.ts | 2 + .../src/components/ListViewCard/index.tsx | 11 +- .../src/components/Menu/Menu.test.tsx | 7 +- superset-frontend/src/components/Menu/Menu.tsx | 1 + .../src/components/Menu/MenuRight.tsx | 34 +- .../components/MessageToasts/Toast.test.jsx} | 4 +- .../MessageToasts}/Toast.tsx | 3 +- .../MessageToasts/ToastContainer.jsx} | 4 +- .../MessageToasts/ToastPresenter.test.jsx} | 7 +- .../MessageToasts}/ToastPresenter.tsx | 2 +- .../MessageToasts/actions.ts} | 2 +- .../MessageToasts}/getToastsFromPyFlashMessages.js | 4 +- .../getToastsFromPyFlashMessages.test.js} | 5 +- .../components/MessageToasts}/mockMessageToasts.js | 2 +- .../MessageToasts/reducers.js} | 2 +- .../components/MessageToasts/reducers.test.js} | 4 +- .../MessageToasts}/types.ts | 0 .../MessageToasts}/withToasts.tsx | 2 +- .../src/components/Modal/Modal.stories.tsx | 2 + superset-frontend/src/components/Modal/Modal.tsx | 168 +- .../ModalTrigger/ModalTrigger.stories.tsx | 4 + .../src/components/ModalTrigger/index.jsx | 10 + .../OmniContainer/OmniContainer.test.tsx | 63 +- .../src/components/OmniContainer/Omnibar.tsx | 3 +- .../src/components/OmniContainer/index.tsx | 64 +- .../HeaderReportActionsDropdown/index.tsx | 117 + .../src/components/ReportModal/index.test.tsx | 110 + .../src/components/ReportModal/index.tsx | 398 + .../src/components/ReportModal/styles.tsx | 113 + .../components/SearchInput/SearchInput.stories.tsx | 62 - .../components/SearchInput/SearchInput.test.jsx | 93 - .../src/components/SearchInput/index.tsx | 108 - .../src/components/Select/DeprecatedSelect.tsx | 9 +- .../src/components/Select/Select.stories.tsx | 25 +- .../src/components/Select/Select.test.tsx | 638 + superset-frontend/src/components/Select/Select.tsx | 373 +- superset-frontend/src/components/Select/utils.ts | 4 +- .../components/TableLoader/TableLoader.test.tsx | 4 +- .../src/components/TableLoader/index.tsx | 2 +- .../TableSelector/TableSelector.test.jsx | 291 - .../TableSelector/TableSelector.test.tsx | 91 + .../src/components/TableSelector/index.tsx | 479 +- .../src/components/TableView/TableView.tsx | 85 +- .../TimezoneSelector.stories.tsx} | 39 +- .../TimezoneSelector/TimezoneSelector.test.tsx | 48 + .../src/components/TimezoneSelector/index.tsx | 126 + superset-frontend/src/components/Tooltip/index.tsx | 27 +- .../URLShortLinkButton/URLShortLinkButton.test.tsx | 4 +- .../src/components/URLShortLinkButton/index.jsx | 2 +- .../components/WarningIconWithTooltip/index.tsx | 6 +- .../components/dataViewCommon/TableCollection.tsx | 2 +- .../src/dashboard/actions/dashboardLayout.js | 17 +- .../src/dashboard/actions/dashboardState.js | 61 +- superset-frontend/src/dashboard/actions/hydrate.js | 3 +- .../src/dashboard/actions/sliceEntities.js | 2 +- .../components/CssEditor/CssEditor.test.tsx | 26 +- .../src/dashboard/components/CssEditor/index.jsx | 77 +- .../src/dashboard/components/Dashboard.jsx | 8 +- .../DashboardBuilder/DashboardBuilder.tsx | 138 +- .../src/dashboard/components/DashboardGrid.jsx | 22 +- .../DetailsPanel/DetailsPanel.test.tsx | 5 + .../components/FiltersBadge/DetailsPanel/index.tsx | 10 + .../dashboard/components/FiltersBadge/index.tsx | 133 +- .../dashboard/components/FiltersBadge/selectors.ts | 151 +- .../dashboard/components/Header/Header.test.tsx | 169 +- .../src/dashboard/components/Header/index.jsx | 119 +- .../src/dashboard/components/Header/types.ts | 3 +- .../PropertiesModal/PropertiesModal.test.tsx | 14 +- .../dashboard/components/PropertiesModal/index.jsx | 52 +- .../dashboard/components/RefreshIntervalModal.tsx | 13 +- .../src/dashboard/components/SliceAdder.jsx | 5 +- .../src/dashboard/components/SliceHeader/index.tsx | 15 +- .../SliceHeaderControls.test.tsx | 31 +- .../components/SliceHeaderControls/index.tsx | 19 +- .../src/dashboard/components/dnd/DragDroppable.jsx | 9 +- .../components/dnd/dragDroppableConfig.js | 3 + .../dashboard/components/gridComponents/Chart.jsx | 6 +- .../components/gridComponents/ChartHolder.jsx | 25 +- .../dashboard/components/gridComponents/Column.jsx | 2 + .../components/gridComponents/Markdown.jsx | 11 +- .../dashboard/components/gridComponents/Row.jsx | 2 + .../dashboard/components/gridComponents/Tab.jsx | 22 +- .../dashboard/components/gridComponents/Tabs.jsx | 18 +- .../FilterBar/FilterControls/FilterValue.tsx | 16 +- .../components/nativeFilters/FilterBar/utils.ts | 2 +- .../FiltersConfigForm/ColumnSelect.tsx | 2 +- .../FiltersConfigForm/FiltersConfigForm.tsx | 75 +- .../FiltersConfigForm/getControlItemsMap.test.tsx | 10 +- .../FiltersConfigModal/FiltersConfigForm/utils.ts | 1 + .../FiltersConfigModal/FiltersConfigModal.tsx | 8 +- .../FiltersConfigModal/Footer/Footer.tsx | 27 +- .../nativeFilters/FiltersConfigModal/types.ts | 4 +- .../nativeFilters/FiltersConfigModal/utils.ts | 1 + .../dashboard/components/nativeFilters/types.ts | 6 + .../dashboard/components/nativeFilters/utils.ts | 2 + .../src/{messageToasts => dashboard}/constants.ts | 27 +- .../src/dashboard/containers/Chart.jsx | 32 +- .../dashboard/containers/DashboardComponent.jsx | 27 +- .../src/dashboard/containers/DashboardHeader.jsx | 31 +- .../src/dashboard/containers/DashboardPage.tsx | 9 +- .../src/dashboard/reducers/dashboardState.js | 14 + superset-frontend/src/dashboard/types.ts | 4 + .../src/dashboard/util/activeDashboardFilters.js | 4 +- .../util/charts/getFormDataWithExtraFilters.ts | 28 +- superset-frontend/src/dashboard/util/constants.ts | 1 + .../src/dashboard/util/isValidChild.ts | 19 +- .../src/dashboard/util/setPeriodicRunner.ts | 2 +- .../src/datasource/ChangeDatasourceModal.tsx | 13 +- .../src/datasource/DatasourceEditor.jsx | 216 +- .../src/datasource/DatasourceModal.tsx | 2 +- superset-frontend/src/explore/App.jsx | 14 +- .../src/explore/actions/exploreActions.ts | 7 +- .../src/explore/components/Control.tsx | 8 + .../src/explore/components/ControlHeader.jsx | 4 +- .../explore/components/ControlPanelsContainer.tsx | 32 +- .../explore/components/DataTableControl/index.tsx | 45 +- .../DataTableControl/useTableColumns.test.ts | 9 +- .../DataTablesPane/DataTablesPane.test.tsx | 11 +- .../explore/components/DataTablesPane/index.tsx | 50 +- .../DatasourcePanel/DatasourcePanel.test.tsx | 11 +- .../DatasourcePanelDragOption.test.tsx} | 20 +- .../index.tsx | 43 +- .../explore/components/DatasourcePanel/index.tsx | 416 +- .../explore/components/DatasourcePanel/types.ts | 10 + .../explore/components/ExploreActionButtons.tsx | 2 +- .../ExploreAdditionalActionsMenu/index.jsx | 2 + .../src/explore/components/ExploreChartHeader.jsx | 102 +- .../src/explore/components/ExploreChartPanel.jsx | 56 +- .../explore/components/ExploreViewContainer.jsx | 78 +- .../explore/components/PropertiesModal/index.tsx | 2 +- .../src/explore/components/SaveModal.tsx | 16 +- .../AnnotationLayerControl/AnnotationLayer.jsx | 29 +- .../AnnotationLayer.test.tsx | 127 +- .../controls/CollectionControl/index.jsx | 5 +- .../components/controls/ColorSchemeControl.jsx | 5 +- .../ConditionalFormattingControl.tsx | 2 + .../FormattingPopoverContent.tsx | 322 +- .../controls/ConditionalFormattingControl/types.ts | 1 + .../controls/DatasourceControl/index.jsx | 26 +- .../controls/DateFilterControl/DateFilterLabel.tsx | 11 +- .../DndColumnSelectControl/ColumnSelectPopover.tsx | 223 + .../ColumnSelectPopoverTrigger.tsx | 99 + .../DndColumnSelect.test.tsx | 12 +- .../DndColumnSelectControl/DndColumnSelect.tsx | 235 +- .../DndFilterSelect.test.tsx | 49 +- .../DndColumnSelectControl/DndFilterSelect.tsx | 377 +- .../DndMetricSelect.test.tsx | 4 +- .../DndColumnSelectControl/DndMetricSelect.tsx | 299 +- .../DndColumnSelectControl/DndSelectLabel.test.tsx | 10 +- .../DndColumnSelectControl/DndSelectLabel.tsx | 40 +- .../controls/DndColumnSelectControl/Option.tsx | 11 +- .../DndColumnSelectControl/OptionWrapper.test.tsx | 15 +- .../DndColumnSelectControl/OptionWrapper.tsx | 81 +- .../controls/DndColumnSelectControl/types.ts | 46 +- .../DndColumnSelectControl/utils/optionSelector.ts | 12 +- .../FilterControl/AdhocFilterControl/index.jsx | 1 - .../index.tsx | 2 +- .../AdhocFilterPopoverTrigger/index.tsx | 3 +- .../controls/MetricControl/AdhocMetricOption.jsx | 9 +- .../MetricControl/AdhocMetricPopoverTrigger.tsx | 3 +- .../MetricControl/MetricDefinitionOption.jsx | 3 +- .../MetricControl/MetricDefinitionValue.jsx | 4 + .../controls/MetricControl/MetricsControl.jsx | 486 +- .../components/controls/OptionControls/index.tsx | 50 +- .../controls/SelectAsyncControl/index.jsx | 2 +- .../explore/components/controls/ViewQueryModal.tsx | 67 +- .../VizTypeControl/VizTypeControl.test.tsx | 4 +- .../controls/VizTypeControl/VizTypeGallery.tsx | 402 +- .../src/explore/components/optionRenderers.tsx | 1 + .../src/explore/controlPanels/TimeTable.js | 1 + .../explore/exploreUtils/getChartDataUri.test.ts | 2 +- .../src/explore/exploreUtils/getExploreUrl.test.ts | 6 +- .../src/explore/reducers/exploreReducer.js | 1 + .../src/explore/reducers/getInitialState.ts | 15 +- superset-frontend/src/explore/reducers/index.js | 8 +- superset-frontend/src/explore/types.ts | 10 +- .../src/filters/components/GroupBy/index.ts | 1 + .../src/filters/components/Range/index.ts | 1 + .../components/Select/SelectFilterPlugin.tsx | 14 +- .../src/filters/components/Select/index.ts | 1 + .../filters/components/Time/TimeFilterPlugin.tsx | 4 +- .../src/filters/components/Time/index.ts | 1 + .../src/filters/components/TimeColumn/index.ts | 1 + .../src/filters/components/TimeGrain/index.ts | 1 + superset-frontend/src/filters/utils.ts | 18 +- superset-frontend/src/logger/LogUtils.ts | 10 +- superset-frontend/src/profile/App.tsx | 6 +- superset-frontend/src/reports/actions/reports.js | 179 + .../main.js => src/reports/reducers/reports.js} | 61 +- superset-frontend/src/setup/setupColors.ts | 69 +- superset-frontend/src/types/Chart.ts | 1 + .../data/database/state.ts => types/Database.ts} | 14 +- superset-frontend/src/utils/common.js | 15 +- superset-frontend/src/utils/common.test.jsx | 9 +- superset-frontend/src/utils/downloadAsImage.ts | 20 +- superset-frontend/src/views/App.tsx | 65 +- .../src/views/CRUD/alert/AlertList.tsx | 6 +- .../src/views/CRUD/alert/AlertReportModal.test.jsx | 59 +- .../src/views/CRUD/alert/AlertReportModal.tsx | 512 +- .../src/views/CRUD/alert/ExecutionLog.tsx | 2 +- .../CRUD/alert/components/NotificationMethod.tsx | 31 +- superset-frontend/src/views/CRUD/alert/types.ts | 8 +- .../src/views/CRUD/annotation/AnnotationList.tsx | 2 +- .../src/views/CRUD/annotation/AnnotationModal.tsx | 2 +- .../CRUD/annotationlayers/AnnotationLayerModal.tsx | 2 +- .../CRUD/annotationlayers/AnnotationLayersList.tsx | 6 +- .../src/views/CRUD/chart/ChartCard.tsx | 4 +- .../src/views/CRUD/chart/ChartList.tsx | 284 +- .../views/CRUD/csstemplates/CssTemplateModal.tsx | 2 +- .../views/CRUD/csstemplates/CssTemplatesList.tsx | 6 +- .../src/views/CRUD/dashboard/DashboardCard.tsx | 10 +- .../src/views/CRUD/dashboard/DashboardList.tsx | 162 +- .../components/SyntaxHighlighterCopy/index.tsx | 2 +- .../views/CRUD/data/database/DatabaseList.test.jsx | 4 +- .../src/views/CRUD/data/database/DatabaseList.tsx | 2 +- .../DatabaseModal/DatabaseConnectionForm.tsx | 147 +- .../data/database/DatabaseModal/ExtraOptions.tsx | 24 +- .../data/database/DatabaseModal/ModalHeader.tsx | 1 + .../CRUD/data/database/DatabaseModal/index.tsx | 330 +- .../CRUD/data/database/DatabaseModal/styles.ts | 41 + .../src/views/CRUD/data/database/state.ts | 2 +- .../src/views/CRUD/data/database/types.ts | 23 +- .../views/CRUD/data/dataset/AddDatasetModal.tsx | 36 +- .../views/CRUD/data/dataset/DatasetList.test.jsx | 10 +- .../src/views/CRUD/data/dataset/DatasetList.tsx | 13 +- .../src/views/CRUD/data/query/QueryList.tsx | 4 +- .../views/CRUD/data/query/QueryPreviewModal.tsx | 4 +- .../CRUD/data/savedquery/SavedQueryList.test.jsx | 2 +- .../views/CRUD/data/savedquery/SavedQueryList.tsx | 2 +- .../data/savedquery/SavedQueryPreviewModal.tsx | 4 +- superset-frontend/src/views/CRUD/hooks.ts | 45 +- superset-frontend/src/views/CRUD/storageKeys.ts | 3 +- superset-frontend/src/views/CRUD/types.ts | 14 +- superset-frontend/src/views/CRUD/utils.tsx | 160 +- .../src/views/CRUD/welcome/ActivityTable.tsx | 54 +- .../src/views/CRUD/welcome/ChartTable.tsx | 51 +- .../src/views/CRUD/welcome/DashboardTable.tsx | 32 +- .../src/views/CRUD/welcome/EmptyState.tsx | 10 +- .../src/views/CRUD/welcome/SavedQueries.tsx | 21 +- .../src/views/CRUD/welcome/Welcome.test.tsx | 4 +- .../src/views/CRUD/welcome/Welcome.tsx | 103 +- superset-frontend/src/views/store.ts | 4 +- superset-frontend/src/views/types.ts | 3 + .../FilterBox/FilterBoxChartPlugin.js | 2 +- .../{transformProps.js => transformProps.ts} | 8 +- .../FilterBox}/types.ts | 16 +- .../TimeTable/TimeTableChartPlugin.js | 3 +- .../src/visualizations/presets/MainPreset.js | 27 +- superset-frontend/tsconfig.json | 2 +- superset-frontend/webpack.config.js | 136 +- superset-websocket/package-lock.json | 12 +- .../utils/client-ws-app/package-lock.json | 181 +- superset/annotation_layers/annotations/api.py | 8 +- .../annotations/commands/bulk_delete.py | 2 +- .../annotations/commands/create.py | 4 +- .../annotations/commands/delete.py | 2 +- .../annotations/commands/update.py | 4 +- superset/annotation_layers/annotations/dao.py | 4 +- superset/annotation_layers/annotations/schemas.py | 4 +- superset/annotation_layers/api.py | 4 +- superset/annotation_layers/commands/bulk_delete.py | 2 +- superset/annotation_layers/commands/create.py | 4 +- superset/annotation_layers/commands/delete.py | 2 +- superset/annotation_layers/commands/update.py | 4 +- superset/annotation_layers/dao.py | 4 +- superset/charts/api.py | 63 +- superset/charts/commands/bulk_delete.py | 6 +- superset/charts/commands/create.py | 15 +- superset/charts/commands/data.py | 8 +- superset/charts/commands/delete.py | 6 +- superset/charts/commands/exceptions.py | 23 +- superset/charts/commands/export.py | 2 +- superset/charts/commands/importers/dispatcher.py | 1 - superset/charts/commands/importers/v1/__init__.py | 7 + superset/charts/commands/importers/v1/utils.py | 4 + superset/charts/commands/update.py | 43 +- superset/charts/post_processing.py | 321 + superset/charts/schemas.py | 73 +- superset/cli.py | 97 +- superset/commands/base.py | 41 +- superset/commands/importers/v1/__init__.py | 5 +- superset/commands/importers/v1/examples.py | 71 +- superset/commands/importers/v1/utils.py | 14 +- superset/commands/utils.py | 26 +- superset/common/query_actions.py | 16 +- superset/common/query_context.py | 286 +- superset/common/query_object.py | 143 +- superset/common/utils.py | 179 + superset/config.py | 151 +- superset/connectors/base/models.py | 37 +- superset/connectors/connector_registry.py | 9 +- superset/connectors/druid/models.py | 55 +- superset/connectors/druid/views.py | 15 +- superset/connectors/sqla/models.py | 407 +- superset/connectors/sqla/utils.py | 119 + superset/connectors/sqla/views.py | 14 +- superset/constants.py | 24 + superset/css_templates/commands/bulk_delete.py | 2 +- superset/css_templates/dao.py | 4 +- superset/dao/base.py | 6 +- superset/dashboards/api.py | 19 +- superset/dashboards/commands/bulk_delete.py | 6 +- superset/dashboards/commands/create.py | 12 +- superset/dashboards/commands/delete.py | 6 +- superset/dashboards/commands/export.py | 16 +- .../dashboards/commands/importers/dispatcher.py | 1 - superset/dashboards/commands/importers/v0.py | 3 +- .../dashboards/commands/importers/v1/__init__.py | 12 +- superset/dashboards/commands/importers/v1/utils.py | 32 +- superset/dashboards/commands/update.py | 14 +- superset/dashboards/filters.py | 12 +- superset/dashboards/schemas.py | 11 +- superset/databases/api.py | 21 +- superset/databases/commands/create.py | 8 +- superset/databases/commands/delete.py | 2 +- superset/databases/commands/export.py | 24 +- .../databases/commands/importers/dispatcher.py | 1 - superset/databases/commands/test_connection.py | 14 +- superset/databases/commands/update.py | 6 +- superset/databases/commands/validate.py | 17 +- superset/databases/schemas.py | 35 +- superset/datasets/api.py | 6 +- superset/datasets/columns/commands/delete.py | 6 +- superset/datasets/commands/bulk_delete.py | 6 +- superset/datasets/commands/create.py | 11 +- superset/datasets/commands/delete.py | 6 +- superset/datasets/commands/importers/dispatcher.py | 1 - superset/datasets/commands/importers/v0.py | 6 +- superset/datasets/commands/importers/v1/utils.py | 19 +- superset/datasets/commands/refresh.py | 6 +- superset/datasets/commands/update.py | 15 +- superset/datasets/dao.py | 2 +- superset/datasets/metrics/commands/delete.py | 6 +- superset/db_engine_specs/__init__.py | 14 +- superset/db_engine_specs/aurora.py | 46 + superset/db_engine_specs/base.py | 95 +- superset/db_engine_specs/bigquery.py | 15 +- superset/db_engine_specs/clickhouse.py | 55 +- superset/db_engine_specs/databricks.py | 2 +- superset/db_engine_specs/druid.py | 4 +- superset/db_engine_specs/elasticsearch.py | 3 +- superset/db_engine_specs/gsheets.py | 92 +- superset/db_engine_specs/hive.py | 19 +- superset/db_engine_specs/mysql.py | 1 + superset/db_engine_specs/postgres.py | 4 +- superset/db_engine_specs/presto.py | 26 +- superset/db_engine_specs/rockset.py | 68 + .../db_engine_specs/shillelagh.py | 22 +- superset/db_engine_specs/sqlite.py | 3 +- superset/db_engine_specs/trino.py | 5 +- superset/db_engines/hive.py | 8 +- superset/errors.py | 3 +- superset/examples/__init__.py | 2 +- superset/examples/bart_lines.py | 1 + superset/examples/birth_names.py | 6 +- .../dashboards/COVID_Vaccine_Dashboard.yaml | 288 +- .../configs/datasets/examples/FCC_2018_Survey.yaml | 2 +- .../configs/datasets/examples/channel_members.yaml | 2 +- .../configs/datasets/examples/channels.yaml | 2 +- .../datasets/examples/cleaned_sales_data.yaml | 2 +- .../configs/datasets/examples/covid_vaccines.yaml | 2 +- .../configs/datasets/examples/exported_stats.yaml | 2 +- .../datasets/examples/members_channels_2.yaml | 2 +- .../configs/datasets/examples/messages.yaml | 2 +- .../datasets/examples/messages_channels.yaml | 2 +- .../datasets/examples/new_members_daily.yaml | 2 +- .../configs/datasets/examples/threads.yaml | 2 +- .../datasets/examples/unicode_test.test.yaml | 2 +- .../examples/configs/datasets/examples/users.yaml | 378 +- .../examples/users_channels-uzooNNtSRO.yaml | 85 +- .../configs/datasets/examples/users_channels.yaml | 58 +- .../datasets/examples/video_game_sales.yaml | 240 +- superset/examples/countries.py | 1 + superset/examples/country_map.py | 3 +- superset/examples/deck.py | 4 +- superset/examples/energy.py | 1 + superset/examples/flights.py | 12 +- superset/examples/helpers.py | 4 +- superset/examples/long_lat.py | 3 +- superset/examples/multiformat_time_series.py | 3 +- superset/examples/paris.py | 1 + superset/examples/random_time_series.py | 3 +- superset/examples/sf_population_polygons.py | 1 + superset/examples/utils.py | 45 +- superset/examples/world_bank.py | 2 +- superset/exceptions.py | 1 - superset/extensions.py | 14 +- superset/initialization/__init__.py | 89 +- superset/jinja_context.py | 51 +- ...4fbb_add_type_to_native_filter_configuration.py | 121 + ...13dd52_change_fetch_values_predicate_to_text.py | 84 + ...15da_migrate_pivot_table_v2_heatmaps_to_new_.py | 108 + .../31b2a1039d4a_drop_tables_constraint.py | 54 + ...d20ba9ecb33_add_last_saved_at_to_slice_model.py | 66 + ...3605f370a_fix_schemas_allowed_for_csv_upload.py | 82 + .../f6196627326f_update_chart_permissions.py | 73 + superset/models/core.py | 50 +- superset/models/dashboard.py | 12 +- superset/models/reports.py | 9 +- superset/models/schedules.py | 3 + superset/models/slice.py | 19 +- superset/models/sql_types/base.py | 10 +- superset/models/tags.py | 6 +- .../queries/saved_queries/commands/bulk_delete.py | 2 +- .../saved_queries/commands/importers/dispatcher.py | 1 - superset/queries/saved_queries/dao.py | 4 +- superset/reports/api.py | 9 +- superset/reports/commands/alert.py | 12 +- superset/reports/commands/base.py | 14 + superset/reports/commands/bulk_delete.py | 6 +- superset/reports/commands/create.py | 27 +- superset/reports/commands/delete.py | 6 +- superset/reports/commands/exceptions.py | 39 + superset/reports/commands/execute.py | 141 +- superset/reports/commands/update.py | 14 +- superset/reports/dao.py | 29 +- superset/reports/logs/api.py | 4 +- superset/reports/notifications/base.py | 3 + superset/reports/notifications/email.py | 58 +- superset/reports/notifications/slack.py | 93 +- superset/reports/schemas.py | 3 + superset/result_set.py | 2 +- superset/security/manager.py | 43 +- superset/sql_lab.py | 51 +- superset/sql_parse.py | 18 +- superset/sql_validators/base.py | 7 +- superset/sql_validators/presto_db.py | 1 + {tests/unit_tests => superset/sqllab}/__init__.py | 0 superset/sqllab/command.py | 413 + .../base.in => superset/sqllab/command_status.py | 12 +- superset/tasks/alerts/validator.py | 10 +- superset/tasks/async_queries.py | 31 +- superset/tasks/cache.py | 16 +- superset/tasks/cron_util.py | 42 + superset/tasks/scheduler.py | 24 +- superset/tasks/schedules.py | 15 +- .../edit.html | 8 +- .../form_view/csv_to_database_view/edit.html | 2 +- .../form_view/excel_to_database_view/edit.html | 2 +- .../templates/superset/partials/asset_bundle.html | 2 +- superset/translations/zh/LC_MESSAGES/messages.po | 6 +- superset/typing.py | 42 +- superset/utils/async_query_manager.py | 16 +- superset/utils/core.py | 280 +- superset/utils/csv.py | 23 + superset/utils/date_parser.py | 80 +- superset/utils/decorators.py | 3 +- superset/utils/dict_import_export.py | 4 +- superset/utils/encrypt.py | 6 +- superset/utils/feature_flag_manager.py | 18 +- superset/utils/log.py | 4 +- superset/utils/logging_configurator.py | 7 +- superset/utils/memoized.py | 20 +- superset/utils/mock_data.py | 6 +- superset/utils/pandas_postprocessing.py | 145 +- superset/utils/profiler.py | 59 + superset/utils/schema.py | 4 +- superset/utils/sqllab_execution_context.py | 199 + superset/utils/url_map_converters.py | 2 +- superset/utils/webdriver.py | 15 +- superset/views/access_requests.py | 4 +- superset/views/alerts.py | 4 +- superset/views/annotations.py | 6 +- superset/views/api.py | 9 +- superset/views/base.py | 58 +- superset/views/base_api.py | 34 +- superset/views/base_schemas.py | 6 +- superset/views/chart/views.py | 10 +- superset/views/core.py | 462 +- superset/views/css_templates.py | 4 +- superset/views/dashboard/mixin.py | 3 +- superset/views/database/forms.py | 144 +- superset/views/database/mixins.py | 4 +- superset/views/database/validators.py | 4 +- superset/views/database/views.py | 158 +- .../views/datasource}/__init__.py | 0 superset/views/datasource/schemas.py | 54 + .../views/{datasource.py => datasource/views.py} | 100 +- superset/views/filters.py | 3 +- superset/views/log/views.py | 2 +- superset/views/redirects.py | 6 +- superset/views/schedules.py | 12 +- superset/views/sql_lab.py | 4 +- superset/views/utils.py | 122 +- superset/viz.py | 1049 +- tests/integration_tests/access_tests.py | 8 +- tests/integration_tests/alerts_tests.py | 2 +- tests/integration_tests/base_api_tests.py | 34 + tests/integration_tests/base_tests.py | 56 +- tests/integration_tests/celery_tests.py | 7 +- tests/integration_tests/charts/api_tests.py | 181 +- tests/integration_tests/charts/commands_tests.py | 93 +- tests/integration_tests/charts/schema_tests.py | 17 +- tests/integration_tests/commands_test.py | 2 - tests/integration_tests/core_tests.py | 2 +- tests/integration_tests/csv_upload_tests.py | 115 +- tests/integration_tests/dashboard_utils.py | 8 +- tests/integration_tests/dashboards/api_tests.py | 41 +- .../integration_tests/dashboards/commands_tests.py | 12 +- .../dashboards/security/security_rbac_tests.py | 4 +- tests/integration_tests/databases/api_tests.py | 19 +- .../integration_tests/databases/commands_tests.py | 3 +- tests/integration_tests/datasets/api_tests.py | 86 +- tests/integration_tests/datasets/commands_tests.py | 14 +- tests/integration_tests/datasource_tests.py | 180 +- .../db_engine_specs/presto_tests.py | 6 +- .../integration_tests/dict_import_export_tests.py | 5 +- tests/integration_tests/feature_flag_tests.py | 45 +- tests/integration_tests/fixtures/dataframes.py | 9 + tests/integration_tests/fixtures/datasource.py | 274 +- tests/integration_tests/fixtures/importexport.py | 3 +- tests/integration_tests/fixtures/pyodbcRow.py | 5 +- tests/integration_tests/fixtures/query_context.py | 22 +- tests/integration_tests/import_export_tests.py | 34 +- tests/integration_tests/jinja_context_tests.py | 31 + tests/integration_tests/model_tests.py | 60 +- .../pandas_postprocessing_tests.py | 129 +- tests/integration_tests/query_context_tests.py | 116 +- tests/integration_tests/reports/api_tests.py | 242 +- tests/integration_tests/reports/commands_tests.py | 297 +- tests/integration_tests/reports/scheduler_tests.py | 95 +- tests/integration_tests/reports/utils.py | 2 + tests/integration_tests/security/api_tests.py | 1 - tests/integration_tests/security_tests.py | 12 +- tests/integration_tests/sql_validator_tests.py | 1 - tests/integration_tests/sqla_models_tests.py | 41 +- tests/integration_tests/sqllab_tests.py | 12 +- tests/integration_tests/superset_test_config.py | 7 +- .../integration_tests/tasks/async_queries_tests.py | 17 +- tests/integration_tests/utils/core_tests.py | 52 +- tests/integration_tests/utils/csv_tests.py | 1 - tests/integration_tests/utils/date_parser_tests.py | 43 +- tests/integration_tests/utils/hashing_tests.py | 1 - .../utils/public_interfaces_test.py | 9 +- tests/integration_tests/utils_tests.py | 60 +- tests/integration_tests/viz_tests.py | 57 +- tests/unit_tests/{ => charts}/__init__.py | 0 tests/unit_tests/charts/test_post_processing.py | 731 + tests/unit_tests/core_tests.py | 174 + tests/unit_tests/db_engine_specs/test_gsheets.py | 73 +- tests/unit_tests/fixtures/datasets.py | 206 + .../unit_tests/sql_parse_tests.py | 35 +- tests/unit_tests/tasks/test_cron_util.py | 175 + 694 files changed, 87426 insertions(+), 40538 deletions(-) create mode 100644 .gitattributes create mode 100644 RELEASING/release-notes-1-3/README.md create mode 100644 RELEASING/release-notes-1-3/media/dashboard_native_filters_1.jpg create mode 100644 RELEASING/release-notes-1-3/media/export_full_csv.png create mode 100644 RELEASING/release-notes-1-3/media/funnel_chart.png create mode 100644 RELEASING/release-notes-1-3/media/jinja_templating.png create mode 100644 RELEASING/release-notes-1-3/media/native_filters_collapsed.png create mode 100644 RELEASING/release-notes-1-3/media/view_query_dashboard.png copy requirements/base.in => docs/.asf.yaml (93%) copy superset-frontend/images/icons/{alert_solid_small.svg => ballot.svg} (50%) copy superset-frontend/images/icons/{alert_solid_small.svg => category.svg} (50%) copy superset/templates/superset/partials/asset_bundle.html => superset-frontend/images/icons/more_vert.svg (56%) copy superset-frontend/images/icons/{alert_solid_small.svg => tags.svg} (50%) rename superset-frontend/spec/__mocks__/{styleMock.js => mockExportObject.js} (100%) rename superset-frontend/spec/__mocks__/{fileMock.js => mockExportString.js} (100%) copy superset-frontend/spec/{javascripts/messageToasts/mockMessageToasts.js => fixtures/mockReportState.js} (65%) copy superset-frontend/spec/fixtures/{mockState.js => mockStateWithoutUser.tsx} (70%) delete mode 100644 superset-frontend/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx delete mode 100644 superset-frontend/spec/javascripts/messageToasts/.eslintrc rename superset-frontend/{spec/javascripts/messageToasts/components/Toast_spec.jsx => src/components/MessageToasts/Toast.test.jsx} (94%) rename superset-frontend/src/{messageToasts/components => components/MessageToasts}/Toast.tsx (97%) rename superset-frontend/src/{messageToasts/containers/ToastPresenter.jsx => components/MessageToasts/ToastContainer.jsx} (91%) rename superset-frontend/{spec/javascripts/messageToasts/components/ToastPresenter_spec.jsx => src/components/MessageToasts/ToastPresenter.test.jsx} (90%) rename superset-frontend/src/{messageToasts/components => components/MessageToasts}/ToastPresenter.tsx (97%) rename superset-frontend/src/{messageToasts/actions/index.ts => components/MessageToasts/actions.ts} (98%) rename superset-frontend/src/{messageToasts/utils => components/MessageToasts}/getToastsFromPyFlashMessages.js (93%) rename superset-frontend/{spec/javascripts/messageToasts/utils/getToastsFromPyFlashMessages_spec.js => src/components/MessageToasts/getToastsFromPyFlashMessages.test.js} (90%) rename superset-frontend/{spec/javascripts/messageToasts => src/components/MessageToasts}/mockMessageToasts.js (93%) rename superset-frontend/src/{messageToasts/reducers/index.js => components/MessageToasts/reducers.js} (96%) rename superset-frontend/{spec/javascripts/messageToasts/reducers/messageToasts_spec.js => src/components/MessageToasts/reducers.test.js} (90%) rename superset-frontend/src/{messageToasts => components/MessageToasts}/types.ts (100%) rename superset-frontend/src/{messageToasts/enhancers => components/MessageToasts}/withToasts.tsx (98%) create mode 100644 superset-frontend/src/components/ReportModal/HeaderReportActionsDropdown/index.tsx create mode 100644 superset-frontend/src/components/ReportModal/index.test.tsx create mode 100644 superset-frontend/src/components/ReportModal/index.tsx create mode 100644 superset-frontend/src/components/ReportModal/styles.tsx delete mode 100644 superset-frontend/src/components/SearchInput/SearchInput.stories.tsx delete mode 100644 superset-frontend/src/components/SearchInput/SearchInput.test.jsx delete mode 100644 superset-frontend/src/components/SearchInput/index.tsx create mode 100644 superset-frontend/src/components/Select/Select.test.tsx delete mode 100644 superset-frontend/src/components/TableSelector/TableSelector.test.jsx create mode 100644 superset-frontend/src/components/TableSelector/TableSelector.test.tsx copy superset-frontend/src/components/{Modal/Modal.stories.tsx => TimezoneSelector/TimezoneSelector.stories.tsx} (58%) create mode 100644 superset-frontend/src/components/TimezoneSelector/TimezoneSelector.test.tsx create mode 100644 superset-frontend/src/components/TimezoneSelector/index.tsx rename superset-frontend/src/{messageToasts => dashboard}/constants.ts (64%) rename superset-frontend/src/explore/components/DatasourcePanel/{DatasourcePanelDragWrapper/DatasourcePanelDragWrapper.test.tsx => DatasourcePanelDragOption/DatasourcePanelDragOption.test.tsx} (75%) rename superset-frontend/src/explore/components/DatasourcePanel/{DatasourcePanelDragWrapper => DatasourcePanelDragOption}/index.tsx (52%) create mode 100644 superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx create mode 100644 superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopoverTrigger.tsx create mode 100644 superset-frontend/src/reports/actions/reports.js copy superset-frontend/{.storybook/main.js => src/reports/reducers/reports.js} (50%) copy superset-frontend/src/{views/CRUD/data/database/state.ts => types/Database.ts} (78%) rename superset-frontend/src/visualizations/FilterBox/{transformProps.js => transformProps.ts} (91%) copy superset-frontend/src/{explore/components/DatasourcePanel => visualizations/FilterBox}/types.ts (74%) create mode 100644 superset/charts/post_processing.py create mode 100644 superset/common/utils.py create mode 100644 superset/connectors/sqla/utils.py create mode 100644 superset/db_engine_specs/aurora.py create mode 100644 superset/db_engine_specs/rockset.py copy requirements/development.in => superset/db_engine_specs/shillelagh.py (75%) create mode 100644 superset/migrations/versions/021b81fe4fbb_add_type_to_native_filter_configuration.py create mode 100644 superset/migrations/versions/07071313dd52_change_fetch_values_predicate_to_text.py create mode 100644 superset/migrations/versions/143b6f2815da_migrate_pivot_table_v2_heatmaps_to_new_.py create mode 100644 superset/migrations/versions/31b2a1039d4a_drop_tables_constraint.py create mode 100644 superset/migrations/versions/6d20ba9ecb33_add_last_saved_at_to_slice_model.py create mode 100644 superset/migrations/versions/e323605f370a_fix_schemas_allowed_for_csv_upload.py create mode 100644 superset/migrations/versions/f6196627326f_update_chart_permissions.py copy {tests/unit_tests => superset/sqllab}/__init__.py (100%) create mode 100644 superset/sqllab/command.py copy requirements/base.in => superset/sqllab/command_status.py (83%) create mode 100644 superset/tasks/cron_util.py copy superset/templates/superset/form_view/{csv_to_database_view => columnar_to_database_view}/edit.html (89%) create mode 100644 superset/utils/profiler.py create mode 100644 superset/utils/sqllab_execution_context.py copy {tests/unit_tests => superset/views/datasource}/__init__.py (100%) create mode 100644 superset/views/datasource/schemas.py rename superset/views/{datasource.py => datasource/views.py} (53%) copy tests/unit_tests/{ => charts}/__init__.py (100%) create mode 100644 tests/unit_tests/charts/test_post_processing.py create mode 100644 tests/unit_tests/core_tests.py create mode 100644 tests/unit_tests/fixtures/datasets.py copy superset/utils/url_map_converters.py => tests/unit_tests/sql_parse_tests.py (57%) create mode 100644 tests/unit_tests/tasks/test_cron_util.py