Skip to content
Snippets Groups Projects
config.edn 85.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • {:config-paths ["macros" "src"]
    
     {:aliased-namespace-symbol     {:level :warning}
    
      :invalid-arity                {:skip-args [metabase.lib.util.match/match]} ; TODO (cam): can we fix these?
    
      :keyword-binding              {:level :warning}
      :main-without-gen-class       {:level :warning}
      :misplaced-docstring          {:level :warning}
      :missing-body-in-when         {:level :warning}
      :missing-docstring            {:level :warning}
      :missing-else-branch          {:level :warning}
      :namespace-name-mismatch      {:level :warning}
      :non-arg-vec-return-type-hint {:level :warning}
      :reduce-without-init          {:level :warning}
      :redundant-fn-wrapper         {:level :warning}
      :refer-all                    {:level :warning, :exclude [clojure.test]}
      :single-key-in                {:level :warning}
    
      :unsorted-required-namespaces {:level :warning}
    
      :unused-referred-var          {:exclude {compojure.core [GET DELETE POST PUT]}}
      :use                          {:level :warning}
      :warn-on-reflection           {:level :warning}
    
    
      :metabase/defsetting-must-specify-export             {:level :warning}
      :metabase/mbql-query-first-arg                       {:level :warning}
      :metabase/missing-test-expr-requires-in-cljs         {:level :warning}
      :metabase/require-shape-checker                      {:level :warning}
      :metabase/test-helpers-use-non-thread-safe-functions {:level :warning}
      :metabase/validate-logging                           {:level :warning}
    
      :metabase/validate-deftest
      {:level :warning
    
       ;; calling these functions will result in an error in tests marked `^:parallel`
       ;;
       ;; TODO -- these should all be made thread safe if possible or renamed so they end in `!`. Then we can remove them
       ;; from this list because by default anything ending in `!` is considered to be thread-unsafe
    
       #{clojure.core/alter-var-root
         clojure.core/with-redefs
         clojure.core/with-redefs-fn
         metabase.actions.test-util/with-actions
         metabase.actions.test-util/with-actions-disabled
         metabase.actions.test-util/with-actions-enabled
         metabase.actions.test-util/with-actions-test-data
         metabase.actions.test-util/with-actions-test-data-and-actions-enabled
         metabase.actions.test-util/with-actions-test-data-tables
         metabase.analytics.snowplow-test/with-fake-snowplow-collector
         metabase.email-test/with-expected-messages
         metabase.email-test/with-fake-inbox
         metabase.test.data.users/with-group
         metabase.test.data.users/with-group-for-user
    
         metabase.test.util.log/with-log-level
         metabase.test.util.misc/with-single-admin-user
         metabase.test.util/with-all-users-permission
         metabase.test.util/with-discarded-collections-perms-changes
         metabase.test.util/with-env-keys-renamed-by
         metabase.test.util/with-locale
    
         metabase.test.util/with-non-admin-groups-no-root-collection-for-namespace-perms
         metabase.test.util/with-non-admin-groups-no-root-collection-perms
         metabase.test.util/with-temp-env-var-value
         metabase.test.util/with-temp-vals-in-db
         metabase.test.util/with-temporary-raw-setting-values
         metabase.test.util/with-temporary-setting-values
         metabase.test.util/with-user-in-groups
         metabase.test/with-actions
         metabase.test/with-actions-disabled
         metabase.test/with-actions-enabled
         metabase.test/with-actions-test-data
         metabase.test/with-actions-test-data-and-actions-enabled
         metabase.test/with-actions-test-data-tables
         metabase.test/with-all-users-permission
         metabase.test/with-discarded-collections-perms-changes
    
         metabase.test/with-env-keys-renamed-by
         metabase.test/with-expected-messages
         metabase.test/with-fake-inbox
         metabase.test/with-group
         metabase.test/with-group-for-user
         metabase.test/with-locale
         metabase.test/with-log-level
    
         metabase.test/with-non-admin-groups-no-root-collection-for-namespace-perms
         metabase.test/with-non-admin-groups-no-root-collection-perms
         metabase.test/with-single-admin-user
         metabase.test/with-temp-env-var-value
         metabase.test/with-temp-vals-in-db
         metabase.test/with-temporary-raw-setting-values
         metabase.test/with-temporary-setting-values
         metabase.test/with-user-in-groups}
    
       ;; these functions are allowed in `^:parallel` tests even tho they end in `!`
    
       #{clojure.core/assoc!
         clojure.core/compare-and-set!
         clojure.core/conj!
         clojure.core/disj!
         clojure.core/dissoc!
         clojure.core/persistent!
         clojure.core/pop!
         clojure.core/reset!
         clojure.core/reset-vals!
         clojure.core/run!
         clojure.core/swap!
         clojure.core/swap-vals!
         clojure.core/volatile!
         clojure.core/vreset!
         clojure.core/vswap!
         clojure.core.async/<!
         clojure.core.async/<!!
         clojure.core.async/>!
         clojure.core.async/>!!
         clojure.core.async/alt!
         clojure.core.async/alt!!
         clojure.core.async/alts!
         clojure.core.async/alts!!
         clojure.core.async/close!
         clojure.core.async/ioc-alts!
         clojure.core.async/offer!
         clojure.core.async/onto-chan!
         clojure.core.async/onto-chan!!
         clojure.core.async/poll!
         clojure.core.async/put!
         clojure.core.async/take!
         clojure.core.async/to-chan!
         clojure.core.async/to-chan!!
    
         metabase.channel.core/send!
    
         metabase.driver.sql-jdbc.execute/execute-prepared-statement!
         metabase.pulse/send-pulse!
         metabase.query-processor.store/store-database!
         next.jdbc/execute!}}
    
      :metabase/i-like-making-cams-eyes-bleed-with-horrifically-long-tests
      {:level      :warning
       :max-length 180}
    
      ;; this is not enabled here, it is enabled below only for specific namespaces.
      :metabase/disallow-hardcoded-driver-names-in-tests
      ;; don't include `:h2` since that will probably lead to a mountain of tests where we are specifically testing
      ;; middleware or compilation behavior with just H2 since it's the default.
      {:drivers #{ ;; core drivers
                  #_:h2
                  :postgres
                  :mysql
                  ;; module drivers
                  :athena
                  :bigquery-cloud-sdk
                  :druid
                  :druid-jdbc
                  :googleanalytics
                  :mongo
                  :oracle
                  :presto-jdbc
                  :redshift
                  :snowflake
                  :sparksql
                  :sqlite
                  :sqlserver
                  :vertica}}
    
      ;;
      ;; disabled linters
      ;;
    
      :unexpected-recur         {:level :off} ; TODO (cam): I think we just need to tell it how to handle MBQL match and we can enable this?
      :used-underscored-binding {:level :off} ; false positives: see https://github.com/clj-kondo/clj-kondo/issues/2152
    
      ;;
      ;; TODO (cam): here are some more linters we should experiment with enabling -- some might be useful.
      ;;
    
      ;; :docstring-leading-trailing-whitespace {:level :warning}
      ;; :docstring-no-summary                  {:level :warning}
      ;; :shadowed-var                          {:level :warning}
    
    Cam Saul's avatar
    Cam Saul committed
      ;; :def-fn                                {:level :warning}
    
       [(build.uberjar/with-duration-ms)
    
        (cljs.test/is [=? malli=])
    
        (clojure.core.logic/fresh)
        (clojure.core.logic/matcha)
        (clojure.core.logic/run)
    
        (clojure.test/is [query= =? malli= qv=])
    
        instaparse.core/transform
    
        (metabase.async.streaming-response/streaming-response)
        (metabase.driver.druid.query-processor-test/druid-query-returning-rows)
    
        (metabase.lib.util.match/match)
        (metabase.lib.util.match/match-one)
        (metabase.lib.util.match/replace)
        (metabase.lib.util.match/replace-in)
    
        (metabase.query-processor.middleware.cache-backend.interface/with-cached-results)
        (metabase.util.regex/rx [opt])
    
        (taoensso.nippy/extend-freeze)
    
      :deprecated-var
      {:exclude
    
       {metabase.cmd/dump                                                            {:namespaces ["metabase\\.cmd-test" "metabase-enterprise\\.serialization\\.cmd-test"]}
        metabase.cmd/load                                                            {:namespaces ["metabase\\.cmd-test" "metabase-enterprise\\.serialization\\.cmd-test"]}
    
        metabase.db.data-migrations/data-migrations                                  {:namespaces ["metabase\\.db\\.data-migrations"]}
        metabase.db.data-migrations/defmigration                                     {:namespaces ["metabase\\.db\\.data-migrations"]}
        metabase.db.data-migrations/run-migration-if-needed!                         {:namespaces ["metabase\\.db\\.data-migrations"]}
    
        metabase.driver.sql-jdbc.execute.old-impl/set-timezone-sql                   {:namespaces ["metabase\\.driver.*"]}
        metabase.driver.sql-jdbc.execute/set-time-zone-if-supported!                 {:namespaces ["metabase\\.driver.*"]}
        metabase.driver/current-db-time                                              {:namespaces ["metabase.*"]}
        metabase.driver/supports?                                                    {:namespaces ["metabase.*"]}
        metabase.public-settings.premium-features/enable-enhancements?               {:namespaces ["metabase\\.models.*"]}
        metabase.query-processor.middleware.resolve-joins/maybe-resolve-source-table {:namespaces ["metabase.*"]}
        metabase.query-processor.util/normalize-token                                {:namespaces ["metabase.*"]}
        schema.core/both                                                             {:namespaces ["metabase.*"]}
        schema.core/either                                                           {:namespaces ["metabase.*"]}}}
    
      {clojure.core/print                                 {:message "Use metabase.util.log instead of clojure.core/print"}
       clojure.core/println                               {:message "Use metabase.util.log instead of clojure.core/println"}
       clojure.core/printf                                {:message "Use metabase.util.log instead of clojure.core/printf"}
       clojure.core/prn                                   {:message "Use metabase.util.log instead of clojure.core/prn"}
       clojure.core/pr                                    {:message "Use metabase.util.log instead of clojure.core/pr"}
       clojure.core/tap>                                  {:message "Don't use tap> is source code"}
       clojure.core/time                                  {:message "Don't use time in source code"}
       clojure.java.jdbc/get-connection                   {:message "Use sql-jdbc.execute/do-with-connection-with-options (for drivers) or t2/with-connection (for the app DB) instead of jdbc/get-connection"}
       clojure.java.jdbc/with-db-connection               {:message "Use sql-jdbc.execute/do-with-connection-with-options (for drivers) or t2/with-connection (for the app DB) instead of jdbc/with-db-connection"}
       clojure.java.jdbc/with-db-metadata                 {:message "Use sql-jdbc.execute/do-with-connection-with-options + .getMetaData instead of jdbc/with-db-metadata"}
       clojure.pprint/pprint                              {:message "Use metabase.util.log instead of clojure.pprint/pprint"}
       clojure.string/lower-case                          {:message "Use metabase.util/lower-case-en instead of clojure.string/lower-case"}
       clojure.string/upper-case                          {:message "Use metabase.util/upper-case-en instead of clojure.string/upper-case"}
    
       fipp.edn/pprint                                    {:message "Use metabase.util.log instead of fipp.edn/pprint"}
    
       honeysql.core/call                                 {:message "Use hx/call instead because it is Honey SQL 2 friendly"}
       honeysql.core/raw                                  {:message "Use hx/raw instead because it is Honey SQL 2 friendly"}
       java-time/with-clock                               {:message "Use mt/with-clock"}
       java.util.UUID/randomUUID                          {:message "Use clojure.core/random-uuid instead of java.util.UUID/randomUUID"}
       malli.core/explainer                               {:message "Use metabase.util.malli.registry/explainer instead of malli.core/explainer"}
    
       me.flowthing.pp/pprint                             {:message "Use metabase.util.log instead of me.flowthing.pp/pprint"}
    
       medley.core/random-uuid                            {:message "Use clojure.core/random-uuid instead of medley.core/random-uuid"}
    
       metabase.driver/database-supports?                 {:message "Use metabase.driver.util/supports? instead of metabase.driver/database-supports?"}
    
       metabase.lib.equality/find-column-indexes-for-refs {:message "Use lib.equality/closest-matches-in-metadata or lib.equality/find-closest-matches-for-refs instead of lib.equality/find-column-indexes-for-refs"}
       metabase.test/with-temp*                           {:message "Use mt/with-temp instead of mt/with-temp*"}
    
    Ngoc Khuat's avatar
    Ngoc Khuat committed
       toucan2.tools.with-temp                            {:message "Use mt/with-temp instead of t2.with-temp/with-temp"}}
    
      {camel-snake-kebab.core {:message "CSK is not Turkish-safe, use the versions in metabase.util instead."}
       clojure.tools.logging  {:message "Use metabase.util.log instead of clojure.tools.logging directly"}
    
       grouper.core           {:message "Use metabase.util.grouper instead of grouper.core"}
    
       honeysql.core          {:message "Use Honey SQL 2. Honey SQL 1 is removed as a dependency in Metabase 49+."}
       honeysql.format        {:message "Use Honey SQL 2. Honey SQL 1 is removed as a dependency in Metabase 49+."}
       honeysql.helpers       {:message "Use Honey SQL 2. Honey SQL 1 is removed as a dependency in Metabase 49+."}
       honeysql.types         {:message "Use Honey SQL 2. Honey SQL 1 is removed as a dependency in Metabase 49+."}
       honeysql.util          {:message "Use Honey SQL 2. Honey SQL 1 is removed as a dependency in Metabase 49+."}
    
       metabase.util.jvm      {:message "All of metabase.util.jvm is re-exported from metabase.util; prefer that"}}
    
      ;; A "module" is any `metabase.x` namespace in `src`.
      :metabase/ns-module-checker
      {:level :warning
    
       ;; Map of module name => the "core" external public-facing API namespace(s). You have three options here:
       ;;
       ;; 1. Special sentinel value `:any` means means this module does not (yet) have external public-facing API
       ;;    namespace(s). This is mostly a temporary placeholder until we go in and create module namespaces, which means
       ;;    you should go create one.
       ;;
    
       ;; 2. A set of namespace symbols. All namespaces in other modules will only be allowed to use namespaces from
    
       ;;    this set. Ideally this set should only have one namespace, but restricting it to a set of several is still
       ;;    better than `:any`.
       ;;
       ;; 3. `nil` or not listed here -- we default to assuming there is one API namespace that matches the name of the
       ;;    module itself, e.g. the module namespace for `metabase.setup` would be `metabase.setup`.
       ;;
       ;; `nil` or an empty set  Otherwise this should be a set of namespace symbols.
    
       ;;
       ;; PRO TIP: Check out the `dev.deps-graph` namespace for helpful tools to see where a module is used externally.
    
       :api-namespaces
    
       {metabase.actions               #{metabase.actions.core}
    
        metabase.analytics             #{metabase.analytics.prometheus
                                         metabase.analytics.snowplow
    
                                         metabase.analytics.stats
    
                                         metabase.analytics.sdk}                                        ; TODO -- consolidate these into a real API namespace.
    
        metabase.analyze               #{metabase.analyze}
    
        metabase.api                   #{metabase.api.common
                                         metabase.api.dataset
                                         metabase.api.permission-graph
                                         metabase.api.routes}                                           ; TODO -- consolidate these into a real API namespace. I think the `*current-user*` type stuff might need to be moved into a separate module.
        metabase.async                 #{metabase.async.streaming-response
                                         metabase.async.streaming-response.thread-pool
                                         metabase.async.util}                                           ; TODO -- consolidate these into a real API namespace.
    
        metabase.bootstrap             #{metabase.bootstrap}
    
        metabase.cmd                   #{}                                                              ; there are no namespaces here since you shouldn't be using this in any other module.
    
    Ngoc Khuat's avatar
    Ngoc Khuat committed
        metabase.channel               #{metabase.channel.core}
    
        metabase.config                #{metabase.config}
    
        metabase.core                  #{metabase.core.initialization-status}                           ; TODO -- only namespace used outside of EE, this probably belongs in `metabase.server` anyway since that's the only place it's used.
    
        metabase.db                    #{metabase.db
    
                                         metabase.db.metadata-queries                                   ; TODO this should probably be separate from metabase.db
                                         metabase.db.query                                              ; TODO this is mostly util stuff like `metabase.db.query/query` that we don't even need anymore.
                                         metabase.db.setup}                                             ; TODO these are only calling `metabase.db.setup/setup-db!` and there's a slightly different version in `metabase.db`
        metabase.driver                :any                                                             ; TODO -- 19 namespaces!!!! CRY
        metabase.email                 #{metabase.email
                                         metabase.email.messages}                                       ; TODO -- consolidate these into a real API namespace.
        metabase.embed                 #{metabase.embed.settings}
        metabase.events                #{metabase.events}
        metabase.formatter             #{metabase.formatter}
        metabase.integrations          #{metabase.integrations.common
                                         metabase.integrations.google
                                         metabase.integrations.ldap
                                         metabase.integrations.slack}                                   ; TODO -- consolidate these into a real API namespace.
        metabase.legacy-mbql           #{metabase.legacy-mbql.normalize
                                         metabase.legacy-mbql.predicates
                                         metabase.legacy-mbql.schema
                                         metabase.legacy-mbql.schema.helpers
                                         metabase.legacy-mbql.util}                                     ; TODO -- consolidate these into a real API namespace.
        metabase.lib                   :any                                                             ; TODO -- :cry: 34 externally referenced namespaces, but maybe half of them are schema namespaces which technically don't need to be required.
    
        metabase.logger                #{metabase.logger}
    
        metabase.metabot               #{metabase.metabot}
    
        metabase.models                :any                                                             ; TODO -- scream, 62 namespaces used elsewhere, but to be fair a lot of these don't *need* to be required.
    
        metabase.moderation            #{metabase.moderation}
    
        metabase.permissions           #{metabase.permissions.util}                                     ; TODO -- this is currently the only namespace in this module. Give it a real API namespace?
        metabase.plugins               #{metabase.plugins
                                         metabase.plugins.classloader}                                  ; TODO -- not 100% sure the classloader belongs here
        metabase.public-settings       #{metabase.public-settings
                                         metabase.public-settings.premium-features}
        metabase.pulse                 #{metabase.pulse
                                         metabase.pulse.markdown
                                         metabase.pulse.parameters
                                         metabase.pulse.preview
                                         metabase.pulse.render
                                         metabase.pulse.render.image-bundle
                                         metabase.pulse.render.js-svg
                                         metabase.pulse.render.style}                                   ; TODO -- consolidate these into a real API namespace.
        metabase.query-processor       :any                                                             ; TODO omg scream, 29 namespaces used outside of the module. WHAT THE HECC
    
        metabase.query-analysis        #{metabase.query-analysis
                                         metabase.query-analysis.failure-map}
    
        metabase.related               #{metabase.related}
        metabase.sample-data           #{metabase.sample-data}
    
        metabase.search                #{metabase.search}
    
        metabase.server                #{metabase.server
                                         metabase.server.handler
                                         metabase.server.middleware.auth
                                         metabase.server.middleware.exceptions
                                         metabase.server.middleware.json
                                         metabase.server.middleware.misc
                                         metabase.server.middleware.offset-paging
                                         metabase.server.middleware.session
                                         metabase.server.protocols
                                         metabase.server.request.util}                                  ; TODO -- consolidate these into a real API namespace.
    
        metabase.setup                 #{metabase.setup}
    
        metabase.shared                #{metabase.shared.dashboards.constants
                                         metabase.shared.formatting.constants
                                         metabase.shared.formatting.date
                                         metabase.shared.formatting.numbers
                                         metabase.shared.models.visualization-settings
                                         metabase.shared.parameters.parameters
                                         metabase.shared.util.currency
                                         metabase.shared.util.i18n
                                         metabase.shared.util.internal.time-common
                                         metabase.shared.util.namespaces
                                         metabase.shared.util.time}                                     ; TODO -- consolidate these into a real API namespace.
        metabase.sync                  #{metabase.sync
                                         metabase.sync.analyze
                                         metabase.sync.concurrent
                                         metabase.sync.field-values
                                         metabase.sync.schedules
                                         metabase.sync.sync-metadata
                                         metabase.sync.sync-metadata.fields
                                         metabase.sync.sync-metadata.tables
                                         metabase.sync.util}                                            ; TODO -- consolidate these into a real API namespace.
        metabase.task                  #{metabase.task
                                         metabase.task.index-values
                                         metabase.task.persist-refresh}                                 ; TODO -- consolidate these into a real API namespace.
    
        metabase.troubleshooting       #{metabase.troubleshooting}
        metabase.types                 #{metabase.types}
    
        metabase.util                  :any                                                             ; I think util being `:any` is actually something I am ok with. But this has 32 namespaces.
        metabase.xrays                 #{metabase.xrays}}
    
    
       ;; Map of module => other modules you're allowed to use there. You have two options here:
       ;;
       ;; 1. `:any` means namespaces in this module are allowed to use any other module -- allowed modules are not
       ;;    enforced for this module. Module API namespaces for modules that have them defined are still enforced. For
       ;;    ones that are `nil`, please go in and add a list of allowed modules. `:any` is mostly meant a temporary
       ;;    placeholder until we can fill these all out, so feel free to fix these.
       ;;
       ;; 2. A set of module symbols. This is the list of modules that are allowed to be referenced. An empty set means no
       ;;    other modules are allowed to be referenced; this is the default for any modules that aren't listed here.
       :allowed-modules
       {metabase.actions               :any
        metabase.analytics             :any
        metabase.analyze               :any
        metabase.api                   :any
        metabase.async                 :any
    
        metabase.auth-provider         #{metabase.util}
    
        metabase.bootstrap             #{}
        metabase.cmd                   :any
    
        metabase.compatibility         :any
    
    Ngoc Khuat's avatar
    Ngoc Khuat committed
        metabase.channel               :any
    
        metabase.config                #{metabase.plugins}
        metabase.core                  :any
        metabase.db                    :any
        metabase.driver                :any
        metabase.email                 :any
        metabase.embed                 :any
        metabase.events                :any
        metabase.formatter             :any
        metabase.integrations          :any
        metabase.legacy-mbql           :any
        metabase.lib                   :any
        metabase.logger                #{metabase.config
                                         metabase.plugins}
        metabase.metabot               :any
        metabase.models                :any
        metabase.moderation            :any
    
        metabase.permissions           :any
        metabase.plugins               :any
        metabase.public-settings       :any
        metabase.pulse                 :any
        metabase.query-analysis        #{metabase.config
    
                                         metabase.legacy-mbql
    
                                         metabase.models
    
                                         metabase.public-settings
                                         metabase.query-processor
                                         metabase.util}
    
        metabase.query-processor       :any
        metabase.related               :any
        metabase.sample-data           :any
        metabase.search                :any
        metabase.server                :any
        metabase.setup                 :any
        metabase.shared                :any
        metabase.sync                  :any
        metabase.task                  :any
        metabase.troubleshooting       :any
        metabase.types                 #{metabase.util}
        metabase.upload                :any
    
        metabase.util                  :any
        metabase.xrays                 :any}
    
    
       ;; namespaces matching these patterns (with `re-find`) are excluded from the module linter. Since regex literals
       ;; aren't allowed in EDN just used the `(str <regex>)` version i.e. two slashes instead of one.
       ;;
       ;; this is mostly intended for excluding test namespaces or those rare 'glue' namespaces that glue multiple modules
       ;; together, e.g. `metabase.lib.metadata.jvm`.
       :ignored-namespace-patterns
    
       #{"-test$"                     ; anything ending in `-test`
         "test[-.]util"               ; anything that contains `test.util` or `test-util`
         "test\\.impl"                ; anything that contains `test.impl`
         "^metabase\\.test"           ; anything starting with `metabase.test`
         "^metabase\\.http-client$"}} ; `metabase.http-client` which is a test-only namespace despite its name.
    
       {buddy.core.hash                                               buddy-hash
        cheshire.generate                                             json.generate
        clojure.tools.logging                                         log
        clj-http.client                                               http
        clj-ldap.client                                               ldap
        clj-time.coerce                                               time.coerce
        clj-time.format                                               time.format
        clojure.core.async                                            a
        clojure.core.match                                            clojure.core.match ; Prefer :refer [match]
        clojure.data                                                  data
        clojure.math.combinatorics                                    math.combo
        clojure.pprint                                                pprint
        clojure.spec.alpha                                            s
        clojure.string                                                str
        clojure.test                                                  t
        clojure.tools.build.api                                       b
        clojure.tools.namespace.dependency                            ns.deps
        clojure.tools.namespace.find                                  ns.find
        clojure.tools.namespace.parse                                 ns.parse
        colorize.core                                                 colorize
        environ.core                                                  env
        hf.depstar.api                                                depstar
        hiccup.core                                                   hiccup
        hiccup.util                                                   hiccup.util
        honey.sql                                                     sql
        honey.sql.helpers                                             sql.helpers
    
        java-time.api                                                 t
    
        macaw.core                                                    macaw
    
        malli.core                                                    mc
        malli.error                                                   me
        malli.experimental                                            mx
        malli.generator                                               mg
        malli.provider                                                mp
        malli.transform                                               mtx
        malli.util                                                    mut
        medley.core                                                   m
        metabase-enterprise.audit-app.pages.common                    common
        metabase-enterprise.sandbox.api.table                         table
        metabase-enterprise.test                                      met
    
        metabase.analytics.sdk                                        sdk
    
        metabase.analytics.stats                                      stats
    
        metabase.analyze.query-results                                qr
        metabase.analyze.classifiers.category                         classifiers.category
        metabase.analyze.classifiers.core                             classifiers
        metabase.analyze.classifiers.name                             classifiers.name
        metabase.analyze.classifiers.no-preview-display               classifiers.no-preview-display
        metabase.analyze.classifiers.text-fingerprint                 classifiers.text-fingerprint
        metabase.analyze.fingerprint.fingerprinters                   fingerprinters
        metabase.analyze.fingerprint.insights                         insights
        metabase.analyze.fingerprint.schema                           fingerprint.schema
    
        metabase.api.activity                                         api.activity
        metabase.api.alert                                            api.alert
        metabase.api.automagic-dashboards                             api.magic
        metabase.api.bookmark                                         api.bookmark
        metabase.api.card                                             api.card
        metabase.api.card-test                                        api.card-test
        metabase.api.collection                                       api.collection
        metabase.api.common                                           api
        metabase.api.dashboard                                        api.dashboard
        metabase.api.dashboard-test                                   api.dashboard-test
        metabase.api.database                                         api.database
        metabase.api.dataset                                          api.dataset
        metabase.api.email                                            api.email
        metabase.api.embed                                            api.embed
        metabase.api.field                                            api.field
        metabase.api.geojson                                          api.geojson
        metabase.api.ldap                                             api.ldap
        metabase.api.logic-history                                    api.login-history
        metabase.api.metric                                           api.metric
        metabase.api.native-query-snippet                             api.native-query-snippet
        metabase.api.notify                                           api.notify
        metabase.api.permission-graph                                 api.permission-graph
        metabase.api.permissions                                      api.permissions
        metabase.api.permissions-test-util                            perm-test-util
        metabase.api.pivots                                           api.pivots
        metabase.api.premium-features                                 api.premium-features
        metabase.api.preview-embed                                    api.preview-embed
        metabase.api.public                                           api.public
        metabase.api.pulse                                            api.pulse
        metabase.api.revision                                         api.revision
        metabase.api.search                                           api.search
        metabase.api.segment                                          api.segment
        metabase.api.session                                          api.session
        metabase.api.setting                                          api.setting
        metabase.api.setup                                            api.setup
        metabase.api.slack                                            api.slack
        metabase.api.table                                            api.table
        metabase.api.task                                             api.task
        metabase.api.tiles                                            api.tiles
        metabase.api.timeline                                         api.timeline
        metabase.api.timeline-event                                   api.timeline-event
        metabase.api.user                                             api.user
        metabase.api.util                                             api.util
        metabase.async.streaming-response.thread-pool                 thread-pool
    
    Ngoc Khuat's avatar
    Ngoc Khuat committed
        metabase.channel.core                                         channel
    
        metabase.cmd.copy.h2                                          copy.h2
        metabase.config                                               config
        metabase.config.file                                          config.file
        metabase.connection-pool                                      connection-pool
        metabase.db.connection                                        mdb.connection
        metabase.db.jdbc-protocols                                    mdb.jdbc-protocols
        metabase.db.metadata-queries                                  metadata-queries
        metabase.db.spec                                              mdb.spec
        metabase.db.query                                             mdb.query
        metabase.driver.common.parameters                             params
        metabase.driver.common.parameters.dates                       params.dates
        metabase.driver.common.parameters.operators                   params.ops
        metabase.driver.common.parameters.parse                       params.parse
        metabase.driver.common.parameters.values                      params.values
        metabase.driver.druid.client                                  druid.client
        metabase.driver.druid.execute                                 druid.execute
        metabase.driver.druid.js                                      druid.js
        metabase.driver.druid.query-processor                         druid.qp
        metabase.driver.druid.sync                                    druid.sync
        metabase.driver.impl                                          driver.impl
        metabase.driver.mongo.execute                                 mongo.execute
        metabase.driver.mongo.parameters                              mongo.params
        metabase.driver.mongo.query-processor                         mongo.qp
        metabase.driver.mongo.util                                    mongo.util
        metabase.driver.sql                                           driver.sql
        metabase.driver.sql-jdbc.common                               sql-jdbc.common
        metabase.driver.sql-jdbc.connection                           sql-jdbc.conn
        metabase.driver.sql-jdbc.execute                              sql-jdbc.execute
        metabase.driver.sql-jdbc.execute.diagnostic                   sql-jdbc.execute.diagnostic
        metabase.driver.sql-jdbc.execute.legacy-impl                  sql-jdbc.legacy
        metabase.driver.sql-jdbc.execute.old-impl                     sql-jdbc.execute.old
        metabase.driver.sql-jdbc.sync                                 sql-jdbc.sync
        metabase.driver.sql-jdbc.sync.common                          sql-jdbc.sync.common
        metabase.driver.sql-jdbc.sync.describe-database               sql-jdbc.describe-database
        metabase.driver.sql-jdbc.sync.describe-table                  sql-jdbc.describe-table
        metabase.driver.sql-jdbc.sync.interface                       sql-jdbc.sync.interface
        metabase.driver.sql-jdbc.test-util                            sql-jdbc.tu
        metabase.driver.sql.parameters.substitute                     sql.params.substitute
        metabase.driver.sql.parameters.substitution                   sql.params.substitution
        metabase.email-test                                           et
        metabase.email.messages                                       messages
        metabase.formatter                                            formatter
        metabase.http-client                                          client
    
        metabase.legacy-mbql.normalize                                mbql.normalize
        metabase.legacy-mbql.schema                                   mbql.s
        metabase.legacy-mbql.util                                     mbql.u
    
        metabase.lib.util                                             lib.util
    
    Ngoc Khuat's avatar
    Ngoc Khuat committed
        metabase.lib.util.match                                       lib.util.match
    
        metabase.models.activity                                      activity
        metabase.models.application-permissions-revision              a-perm-revision
        metabase.models.bookmark                                      bookmark
        metabase.models.collection                                    collection
        metabase.models.collection.graph                              graph
        metabase.models.collection-permission-graph-revision          c-perm-revision
    
        metabase.models.channel                                       models.channel
    
        metabase.models.dashboard-card                                dashboard-card
        metabase.models.database                                      database
        metabase.models.dependency                                    dependency
        metabase.models.field-values                                  field-values
        metabase.models.interface                                     mi
        metabase.models.moderation-review                             moderation-review
        metabase.models.native-query-snippet                          native-query-snippet
        metabase.models.params                                        params
        metabase.models.permissions                                   perms
        metabase.models.permissions-group                             perms-group
        metabase.models.permissions-group-membership                  perms-group-membership
        metabase.models.permissions-revision                          perms-revision
        metabase.models.permissions.parse                             perms-parse
        metabase.models.pulse                                         pulse
        metabase.models.pulse-channel                                 pulse-channel
        metabase.models.pulse-channel-recipient                       pulse-channel-recipient
        metabase.models.query.permissions                             query-perms
        metabase.models.setting.cache                                 setting.cache
        metabase.models.timeline                                      timeline
        metabase.models.timeline-event                                timeline-event
    
        metabase.analysis.native-query-analyzer                       nqa
        metabase.analysis.native-query-analyzer.parameter-substitution nqa.sub
    
        metabase.plugins.initialize                                   plugins.init
        metabase.public-settings                                      public-settings
        metabase.public-settings.premium-features                     premium-features
        metabase.pulse                                                pulse ; NB some conflicts with metabase.models.pulse
        metabase.pulse.markdown                                       markdown
        metabase.pulse.render                                         render
        metabase.pulse.render.body                                    body
        metabase.pulse.render.style                                   style
        metabase.pulse.test-util                                      pulse.test-util
        metabase.pulse.parameters                                     pulse-params
        metabase.query-processor-test                                 qp.test
        metabase.query-processor.context                              qp.context
        metabase.query-processor.error-type                           qp.error-type
        metabase.query-processor.interface                            qp.i
        metabase.query-processor.middleware.add-dimension-projections qp.add-dimension-projections
        metabase.query-processor.middleware.add-implicit-clauses      qp.add-implicit-clauses
        metabase.query-processor.middleware.add-implicit-joins        qp.add-implicit-joins
        metabase.query-processor.middleware.auto-bucket-datetimes     qp.auto-bucket-datetimes
        metabase.query-processor.middleware.constraints               qp.constraints
        metabase.query-processor.middleware.cumulative-aggregations   qp.cumulative-aggregations
        metabase.query-processor.middleware.parameters.mbql           qp.mbql
        metabase.query-processor.middleware.parameters.native         qp.native
        metabase.query-processor.middleware.permissions               qp.perms
        metabase.query-processor.middleware.pre-alias-aggregations    qp.pre-alias-aggregations
        metabase.query-processor.middleware.resolve-fields            qp.resolve-fields
        metabase.query-processor.middleware.resolve-referenced        qp.resolve-referenced
        metabase.query-processor.middleware.resolve-source-table      qp.resolve-source-table
        metabase.query-processor.middleware.wrap-value-literals       qp.wrap-value-literals
        metabase.query-processor.pivot                                qp.pivot
        metabase.query-processor.streaming                            qp.streaming
        metabase.query-processor.streaming.interface                  qp.si
        metabase.query-processor.streaming.xlsx                       qp.xlsx
        metabase.query-processor.timezone                             qp.timezone
        metabase.query-processor.util                                 qp.util
        metabase.related                                              related
        metabase.search.config                                        search.config
        metabase.search.filter                                        search.filter
        metabase.search.util                                          search.util
        metabase.search.scoring                                       scoring
        metabase.server.middleware.auth                               mw.auth
        metabase.server.middleware.browser-cookie                     mw.browser-cookie
        metabase.server.middleware.exceptions                         mw.exceptions
        metabase.server.middleware.json                               mw.json
        metabase.server.middleware.log                                mw.log
        metabase.server.middleware.misc                               mw.misc
        metabase.server.middleware.offset-paging                      mw.offset-paging
        metabase.server.middleware.security                           mw.security
        metabase.server.middleware.session                            mw.session
        metabase.server.middleware.ssl                                mw.ssl
        metabase.server.request.util                                  req.util
        metabase.server.protocols                                     server.protocols
        metabase.shared.util                                          shared.u
        metabase.shared.util.currency                                 currency
    
        metabase.sync.analyze.fingerprint                             sync.fingerprint
    
        metabase.sync.field-values                                    field-values
        metabase.sync.interface                                       i
        metabase.sync.schedules                                       sync.schedules
        metabase.sync.sync-metadata.fields.our-metadata               fields.our-metadata
        metabase.sync.util                                            sync-util
        metabase.sync.util-test                                       sync.util-test
        metabase.task.sync-databases                                  task.sync-databases
        metabase.test                                                 mt
        metabase.test.data.dataset-definitions                        defs
        metabase.test.data.env.impl                                   tx.env.impl
        metabase.test.data.impl                                       data.impl
        metabase.test.data.users                                      test.users
        metabase.test.domain-entities                                 test.de
        metabase.test.mock.util                                       mock.util
        metabase.test.sync                                            test.sync
        metabase.test.redefs                                          test.redefs
        metabase.test.util.js                                         test.js
        metabase.test.util.timezone                                   test.tz
        metabase.timeseries-query-processor-test.util                 tqpt
        metabase.util.cron                                            u.cron
        metabase.util.date-2                                          u.date
        metabase.util.date-2.common                                   u.date.common
        metabase.util.date-2.parse                                    u.date.parse
        metabase.util.embed                                           embed
        metabase.util.encryption                                      encryption
        metabase.util.encryption-test                                 encryption-test
        metabase.util.files                                           u.files
    
        metabase.util.grouper                                         grouper
    
        metabase.util.honey-sql-2                                     h2x
        metabase.util.i18n                                            i18n
        metabase.util.i18n.impl                                       i18n.impl
        metabase.util.jvm                                             u.jvm
        metabase.util.log                                             log
        metabase.util.macros                                          u.macros
        metabase.util.malli                                           mu
        metabase.util.malli.schema                                    ms
        metabase.util.password                                        u.password
        metabase.util.schema                                          su
        metabase.util.ui-logic                                        ui-logic
        metabase.util.urls                                            urls
    
        metabase.xrays                                                xrays
    
        metabuild-common.core                                         u
        metabuild-common.output                                       out
        metabuild-common.shell                                        shell
        monger.collection                                             mcoll
        ring.mock.request                                             ring.mock
        ring.util.codec                                               codec
        ring.util.response                                            response
        ring.adapter.jetty9.servlet                                   servlet
        saml20-clj.core                                               saml
        toucan.db                                                     db
    
    Cam Saul's avatar
    Cam Saul committed
        toucan.models                                                 models}}}
    
     {cljs.cache/defcache                                                                   clojure.core/deftype
      clojure.core.cache/defcache                                                           clojure.core/deftype
      clojure.core.logic/defne                                                              clj-kondo.lint-as/def-catch-all
      clojure.test.check.clojure-test/defspec                                               clojure.test/deftest
      clojurewerkz.quartzite.jobs/defjob                                                    clojure.core/defn
      metabase-enterprise.serialization.test-util/with-dbs                                  clojure.core/fn
      metabase-enterprise.serialization.test-util/with-random-dump-dir                      clojure.core/let
      metabase.actions.test-util/with-actions                                               clojure.core/let
      metabase.api.common/defroutes                                                         clojure.core/def
      metabase.api.common/let-404                                                           clojure.core/let
      metabase.api.search-test/do-test-users                                                clojure.core/let
      metabase.async.api-response-test/with-response                                        clojure.core/let
      metabase.dashboard-subscription-test/with-dashboard-sub-for-card                      clojure.core/let
    
      metabase.channel.http-test/with-captured-http-requests                                clojure.core/fn
      metabase.channel.http-test/with-server                                                clojure.core/let
    
      metabase.db.custom-migrations/define-migration                                        clj-kondo.lint-as/def-catch-all
      metabase.db.custom-migrations/define-reversible-migration                             clj-kondo.lint-as/def-catch-all
      metabase.db.data-migrations/defmigration                                              clojure.core/def
      metabase.db.liquibase/with-liquibase                                                  clojure.core/let
      metabase.db.schema-migrations-test.impl/with-temp-empty-app-db                        clojure.core/let
      metabase.driver.mongo.connection/with-mongo-client                                    clojure.core/let
      metabase.driver.mongo.connection/with-mongo-database                                  clojure.core/let
      metabase.driver.mongo.query-processor/mongo-let                                       clojure.core/let
      metabase.driver.sql-jdbc.actions/with-jdbc-transaction                                clojure.core/let
      metabase.driver.sql-jdbc.connection/with-connection-spec-for-testing-connection       clojure.core/let
      metabase.driver.sql-jdbc.execute.diagnostic/capturing-diagnostic-info                 clojure.core/fn
      metabase.integrations.ldap/with-ldap-connection                                       clojure.core/fn
      metabase.models.collection-test/with-collection-in-location                           clojure.core/let
      metabase.models.json-migration/def-json-migration                                     clj-kondo.lint-as/def-catch-all
      metabase.models.setting.multi-setting/define-multi-setting                            clojure.core/def
      metabase.models.setting/defsetting                                                    clj-kondo.lint-as/def-catch-all
      metabase.public-settings.premium-features/defenterprise-schema                        clj-kondo.lint-as/def-catch-all
      metabase.public-settings.premium-features/define-premium-feature                      clojure.core/def
      metabase.pulse-test/with-pulse-for-card                                               clojure.core/let
      metabase.query-processor-test.pipeline-queries-test/pmbql-query                       clojure.core/->
      metabase.query-processor-test.pipeline-queries-test/run-pmbql-query                   clojure.core/->
      metabase.query-processor.error-type/deferror                                          clojure.core/def
      metabase.query-processor.middleware.cache.impl/with-reducible-deserialized-results    clojure.core/let
      metabase.query-processor.middleware.process-userland-query-test/with-query-execution! clojure.core/let
      metabase.query-processor.setup/with-qp-setup                                          clojure.core/let
      metabase.shared.util.namespaces/import-fns                                            potemkin/import-vars
      metabase.sync.util/sum-for                                                            clojure.core/for
      metabase.sync.util/with-emoji-progress-bar                                            clojure.core/let
      metabase.test.data.interface/defdataset                                               clojure.core/def
      metabase.test.data.interface/defdataset-edn                                           clojure.core/def
      metabase.test/defdataset                                                              clojure.core/def
      metabase.test/let-url                                                                 clojure.core/let
      metabase.test/with-actions                                                            clojure.core/let
      metabase.test/with-grouper-batches!                                                   clojure.core/fn
      metabase.test/with-open-channels                                                      clojure.core/let
      metabase.test/with-single-admin-user                                                  clojure.core/fn
      metabase.test/with-temp-dir                                                           clojure.core/let
      metabase.test/with-temp-empty-app-db                                                  clojure.core/let
      metabase.test/with-temp-file                                                          clojure.core/let
      metabase.test/with-user-in-groups                                                     clojure.core/let
      metabase.upload-test/with-upload-table!                                               clojure.core/let
      metabase.util.files/with-open-path-to-resource                                        clojure.core/let
      metabase.util.malli.defn/defn                                                         schema.core/defn
      metabase.util.malli.defn/defn-                                                        schema.core/defn
      metabase.util.malli.fn/fn                                                             schema.core/fn
      metabase.util.malli/defmethod                                                         schema.core/defmethod
      metabase.util.malli/defn                                                              schema.core/defn
      metabase.util.malli/defn-                                                             schema.core/defn
      metabase.util.malli/fn                                                                schema.core/fn
      metabase.util.ssh/with-ssh-tunnel                                                     clojure.core/let
      metabase.xrays.domain-entities.malli/defn                                             schema.core/defn
      monger.operators/defoperator                                                          clojure.core/def
      potemkin.types/defprotocol+                                                           clojure.core/defprotocol
      potemkin.types/defrecord+                                                             clojure.core/defrecord
      potemkin.types/deftype+                                                               clojure.core/deftype
      potemkin/defprotocol+                                                                 clojure.core/defprotocol
      potemkin/defrecord+                                                                   clojure.core/defrecord
      potemkin/deftype+                                                                     clojure.core/deftype
      toucan.db/with-call-counting                                                          clojure.core/fn
      toucan2.core/with-call-count                                                          clojure.core/fn}
    
      {cljs.test/deftest                                                                                                         hooks.clojure.test/deftest
    
       cljs.test/is                                                                                                              hooks.clojure.test/is
    
       cljs.test/use-fixtures                                                                                                    hooks.clojure.test/use-fixtures
    
       clojure.core/ns                                                                                                           hooks.clojure.core/lint-ns
    
       clojure.test/deftest                                                                                                      hooks.clojure.test/deftest
       clojure.test/is                                                                                                           hooks.clojure.test/is
    
       clojure.test/use-fixtures                                                                                                 hooks.clojure.test/use-fixtures
    
       metabase-enterprise.advanced-permissions.models.permissions.application-permissions-test/with-new-group-and-current-graph hooks.common/with-two-top-level-bindings
       metabase-enterprise.audit-app.pages-test/with-temp-objects                                                                hooks.common/with-one-binding
    
       metabase-enterprise.cache.config-test/with-temp-persist-models                                                            hooks.common/with-seven-bindings
    
       metabase-enterprise.serialization.test-util/with-temp-dpc                                                                 hooks.toucan2.tools.with-temp/with-temp
    
       metabase.analytics.prometheus-test/with-prometheus-system!                                                                hooks.common/with-two-bindings
       metabase.api.alert-test/with-alert-in-collection!                                                                         hooks.common/with-four-bindings
       metabase.api.automagic-dashboards-test/with-indexed-model!                                                                hooks.metabase.api.automagic-dashboards-test/with-indexed-model!
    
       metabase.api.card-test/with-card-param-values-fixtures                                                                    hooks.common/let-one-with-optional-value
    
       metabase.api.card-test/with-persistence-setup!                                                                            hooks.common/with-one-top-level-binding
    
       metabase.api.card-test/with-temp-native-card!                                                                             hooks.common/with-two-bindings
       metabase.api.card-test/with-temp-native-card-with-params!                                                                 hooks.common/with-two-bindings
    
       metabase.api.collection-test/with-french-user-and-personal-collection!                                                    hooks.common/with-two-top-level-bindings
    
       metabase.api.common/defendpoint                                                                                           hooks.metabase.api.common/defendpoint
       metabase.api.common/defendpoint-async                                                                                     hooks.metabase.api.common/defendpoint
       metabase.api.common/defendpoint-async-schema                                                                              hooks.metabase.api.common/defendpoint
    
       metabase.api.common.internal-test/with-jetty-server                                                                       hooks.common/with-one-binding
    
       metabase.api.dashboard-test/with-chain-filter-fixtures                                                                    hooks.common/let-one-with-optional-value
    
       metabase.api.dashboard-test/with-simple-dashboard-with-tabs                                                               hooks.common/with-one-binding
    
       metabase.api.embed-test/do-response-formats                                                                               hooks.common/with-two-bindings
    
       metabase.api.embed-test/with-chain-filter-fixtures!                                                                       hooks.common/let-one-with-optional-value
    
       metabase.api.embed-test/with-temp-card                                                                                    hooks.common/let-one-with-optional-value
       metabase.api.embed-test/with-temp-dashcard                                                                                hooks.common/let-one-with-optional-value
    
       metabase.api.persist-test/with-setup!                                                                                     hooks.common/with-one-top-level-binding
       metabase.api.public-test/with-required-param-card!                                                                        hooks.common/with-one-binding
    
       metabase.api.public-test/with-temp-public-card                                                                            hooks.common/let-one-with-optional-value
       metabase.api.public-test/with-temp-public-dashboard                                                                       hooks.common/let-one-with-optional-value
       metabase.api.public-test/with-temp-public-dashboard-and-card                                                              hooks.common/with-three-bindings
       metabase.api.search-test/with-search-items-in-collection                                                                  hooks.metabase.api.search-test/with-search-items-in-collection
       metabase.api.search-test/with-search-items-in-root-collection                                                             hooks.common/do*
       metabase.api.user-test/with-temp-user-email                                                                               hooks.common/with-one-binding
       metabase.async.streaming-response-test/with-start-execution-chan                                                          hooks.common/with-one-binding
    
       metabase.dashboard-subscription-test/with-link-card-fixture-for-dashboard                                                 hooks.common/let-second
    
       metabase.db.schema-migrations-test.impl/test-migrations                                                                   hooks.metabase.db.schema-migrations-test.impl/test-migrations
    
       metabase.driver.bigquery-cloud-sdk-test/calculate-bird-scarcity                                                           hooks.metabase.query-processor-test.expressions-test/calculate-bird-scarcity
    
       metabase.driver/register!                                                                                                 hooks.metabase.driver/register!
    
       metabase.legacy-mbql.schema.macros/defclause                                                                              hooks.metabase.legacy-mbql.schemas.macros/defclause
    
       metabase.lib.schema.mbql-clause/define-catn-mbql-clause                                                                   hooks.metabase.lib.schema.mbql-clause/define-mbql-clause
    
       metabase.lib.schema.mbql-clause/define-mbql-clause                                                                        hooks.metabase.lib.schema.mbql-clause/define-mbql-clause
    
       metabase.lib.schema.mbql-clause/define-tuple-mbql-clause                                                                  hooks.metabase.lib.schema.mbql-clause/define-mbql-clause
    
       metabase.lib.test-util.macros/$ids                                                                                        hooks.metabase.test.data/$ids
       metabase.lib.test-util.macros/mbql-query                                                                                  hooks.metabase.test.data/mbql-query
    
       metabase.lib.test-util.macros/with-testing-against-standard-queries                                                       hooks.metabase.lib.test-util.macros/with-testing-against-standard-queries
    
       metabase.models.collection-test/with-collection-hierarchy!                                                                hooks.common/let-one-with-optional-value
    
       metabase.models.collection-test/with-personal-and-impersonal-collections                                                  hooks.common/with-two-bindings
    
       metabase.models.dashboard-tab-test/with-dashtab-in-personal-collection                                                    hooks.common/with-one-top-level-binding
    
       metabase.models.dashboard-test/with-dash-in-collection!                                                                   hooks.common/with-three-bindings
    
       metabase.models.interface/define-batched-hydration-method                                                                 hooks.metabase.models.interface/define-hydration-method
    
       metabase.models.interface/define-simple-hydration-method                                                                  hooks.metabase.models.interface/define-hydration-method
    
       metabase.models.pulse-test/with-dashboard-subscription-in-collection!                                                     hooks.common/with-four-bindings
       metabase.models.pulse-test/with-pulse-in-collection!                                                                      hooks.common/with-four-bindings
    
       metabase.models.setting.multi-setting/define-multi-setting                                                                hooks.metabase.models.setting/define-multi-setting
    
       metabase.models.setting/defsetting                                                                                        hooks.metabase.models.setting/defsetting
    
       metabase.public-settings.premium-features/defenterprise                                                                   hooks.metabase.public-settings.premium-features/defenterprise
    
       metabase.pulse.test-util/checkins-query-card                                                                              hooks.metabase.test.data/$ids
       metabase.query-processor-test.expressions-test/calculate-bird-scarcity                                                    hooks.metabase.query-processor-test.expressions-test/calculate-bird-scarcity
       metabase.query-processor-test.filter-test/count-with-filter-clause                                                        hooks.metabase.test.data/$ids
    
       metabase.query-processor.middleware.cache-test/with-mock-cache!                                                           hooks.common/with-two-bindings
    
       metabase.sample-data-test/with-temp-sample-database-db                                                                    hooks.common/with-one-binding
    
       metabase.stale-test/with-stale-items                                                                                      hooks.toucan2.tools.with-temp/with-temp
    
       metabase.test.data.users/with-group                                                                                       hooks.common/let-one-with-optional-value
       metabase.test.data/$ids                                                                                                   hooks.metabase.test.data/$ids
       metabase.test.data/dataset                                                                                                hooks.metabase.test.data/dataset
       metabase.test.data/mbql-query                                                                                             hooks.metabase.test.data/mbql-query
       metabase.test.data/run-mbql-query                                                                                         hooks.metabase.test.data/mbql-query
       metabase.test.util.async/with-open-channels                                                                               hooks.common/let-with-optional-value-for-last-binding
    
       metabase.test.util.log/with-log-level                                                                                     hooks.common/with-ignored-first-arg
    
       metabase.test.util/discard-setting-changes                                                                                hooks.common/with-ignored-first-arg
       metabase.test.util/with-column-remappings                                                                                 hooks.common/with-ignored-first-arg
       metabase.test.util/with-non-admin-groups-no-root-collection-perms                                                         hooks.common/do*
       metabase.test.util/with-temp-file                                                                                         hooks.metabase.test.util/with-temp-file
       metabase.test.util/with-temporary-setting-values                                                                          hooks.metabase.test.util/with-temporary-setting-values
       metabase.test/$ids                                                                                                        hooks.metabase.test.data/$ids
       metabase.test/dataset                                                                                                     hooks.metabase.test.data/dataset
       metabase.test/discard-setting-changes                                                                                     hooks.common/with-ignored-first-arg
       metabase.test/mbql-query                                                                                                  hooks.metabase.test.data/mbql-query
       metabase.test/query                                                                                                       hooks.metabase.test.data/mbql-query
    
       metabase.test/run-mbql-query                                                                                              hooks.metabase.test.data/mbql-query
    
       metabase.test/test-drivers                                                                                                hooks.common/do*
    
       metabase.test/with-column-remappings                                                                                      hooks.common/with-ignored-first-arg
       metabase.test/with-group                                                                                                  hooks.common/let-one-with-optional-value
       metabase.test/with-log-level                                                                                              hooks.common/with-ignored-first-arg
    
       metabase.test/with-log-messages-for-level                                                                                 hooks.metabase.util.log.capture/with-log-messages-for-level
    
       metabase.test/with-non-admin-groups-no-root-collection-perms                                                              hooks.common/do*
    
       metabase.test/with-temp                                                                                                   hooks.toucan2.tools.with-temp/with-temp
    
       metabase.test/with-temp-file                                                                                              hooks.metabase.test.util/with-temp-file
    
       metabase.test/with-temporary-setting-values                                                                               hooks.metabase.test.util/with-temporary-setting-values
    
       metabase.util.log.capture/with-log-messages-for-level                                                                     hooks.metabase.util.log.capture/with-log-messages-for-level
    
    Cam Saul's avatar
    Cam Saul committed
       metabase.util.log/debug                                                                                                   hooks.metabase.util.log/info
       metabase.util.log/debugf                                                                                                  hooks.metabase.util.log/infof
       metabase.util.log/error                                                                                                   hooks.metabase.util.log/info
       metabase.util.log/errorf                                                                                                  hooks.metabase.util.log/infof
       metabase.util.log/fatal                                                                                                   hooks.metabase.util.log/info
       metabase.util.log/fatalf                                                                                                  hooks.metabase.util.log/infof
    
       metabase.util.log/info                                                                                                    hooks.metabase.util.log/info
       metabase.util.log/infof                                                                                                   hooks.metabase.util.log/infof
       metabase.util.log/trace                                                                                                   hooks.metabase.util.log/info
       metabase.util.log/tracef                                                                                                  hooks.metabase.util.log/infof
       metabase.util.log/warn                                                                                                    hooks.metabase.util.log/info
       metabase.util.log/warnf                                                                                                   hooks.metabase.util.log/infof
       metabase.util.malli.registry/def                                                                                          hooks.metabase.util.malli.registry/def
       metabase.util/format-color                                                                                                hooks.metabase.util/format-color}
    
      {clojurewerkz.quartzite.jobs/build                                             macros.quartz/build-job
       clojurewerkz.quartzite.schedule.cron/schedule                                 macros.quartz/schedule
       clojurewerkz.quartzite.schedule.simple/schedule                               macros.quartz/simple-schedule
       clojurewerkz.quartzite.triggers/build                                         macros.quartz/build-trigger
       metabase-enterprise.sandbox.test-util/with-gtaps!                             macros.metabase-enterprise.sandbox.test-util/with-gtaps!
       metabase-enterprise.sandbox.test-util/with-gtaps-for-user!                    macros.metabase-enterprise.sandbox.test-util/with-gtaps!
       metabase-enterprise.serialization.test-util/with-world                        macros.metabase-enterprise.serialization.test-util/with-world
       metabase-enterprise.test/with-gtaps!                                          macros.metabase-enterprise.sandbox.test-util/with-gtaps!
       metabase-enterprise.test/with-gtaps-for-user!                                 macros.metabase-enterprise.sandbox.test-util/with-gtaps!
       metabase-enterprise.advanced-permissions.api.util-test/with-impersonations!   macros.metabase-enterprise.advanced-permissions.api.util-test/with-impersonations!
       metabase-enterprise.query-reference-validation.api-test/with-test-setup!      macros.metabase-enterprise.query-reference-validation.api-test/with-test-setup!
       metabase.api.card-test/with-ordered-items                                     macros.metabase.api.card-test/with-ordered-items
       metabase.api.collection-test/with-collection-hierarchy!                       macros.metabase.api.collection-test/with-collection-hierarchy!
       metabase.api.collection-test/with-some-children-of-collection!                macros.metabase.api.collection-test/with-some-children-of-collection!
       metabase.api.common/define-routes                                             macros.metabase.api.common/define-routes
       metabase.api.embed-test/with-embedding-enabled-and-temp-card-referencing!     macros.metabase.api.embed-test/with-embedding-enabled-and-temp-card-referencing!
       metabase.api.embed-test/with-embedding-enabled-and-temp-dashcard-referencing! macros.metabase.api.embed-test/with-embedding-enabled-and-temp-dashcard-referencing!
       metabase.api.public-test/with-sharing-enabled-and-temp-card-referencing!      macros.metabase.api.public-test/with-sharing-enabled-and-temp-card-referencing!
       metabase.api.public-test/with-sharing-enabled-and-temp-dashcard-referencing!  macros.metabase.api.public-test/with-sharing-enabled-and-temp-dashcard-referencing!
       metabase.lib.filter/deffilter                                                 macros.metabase.lib.filter/deffilter
       metabase.lib.common/defop                                                     macros.metabase.lib.common/defop
       metabase.models.params.chain-filter-test/chain-filter                         macros.metabase.models.params.chain-filter-test/chain-filter
       metabase.models.params.chain-filter-test/chain-filter-search                  macros.metabase.models.params.chain-filter-test/chain-filter
       metabase.models.query-analysis-test/with-test-setup                           macros.metabase.models.query-analysis-test/with-test-setup
       metabase.models.user-test/with-groups                                         macros.metabase.models.user-test/with-groups
       metabase.query-processor.streaming/streaming-response                         macros.metabase.query-processor.streaming/streaming-response
       metabase.related-test/with-world                                              macros.metabase.related-test/with-world
       metabase.shared.util.namespaces/import-fn                                     macros.metabase.shared.util.namespaces/import-fn
       metabase.task.setup.query-analysis-setup/with-test-setup!                     macros.metabase.task.setup.query-analysis-setup/with-test-setup!
       metabase.test.data.users/with-group-for-user                                  macros.metabase.test.data.users/with-group-for-user
       metabase.test.util/with-temp-env-var-value!                                   macros.metabase.test.util/with-temp-env-var-value!
       metabase.test.util/with-temporary-raw-setting-values                          macros.metabase.test.util/with-temporary-raw-setting-values
       metabase.test/with-group-for-user                                             macros.metabase.test.data.users/with-group-for-user
       metabase.test/with-persistence-enabled!                                       macros.metabase.test.persistence/with-persistence-enabled!
       metabase.test/with-temp-env-var-value!                                        macros.metabase.test.util/with-temp-env-var-value!
       metabase.test/with-temporary-raw-setting-values                               macros.metabase.test.util/with-temporary-raw-setting-values
       metabase.xrays.domain-entities.malli/define-getters-and-setters               macros.metabase.xrays.domain-entities.malli/define-getters-and-setters}}
    
     {:linters {:unresolved-symbol {:level :off}}}
    
     ;;
     ;; TEST CONFIG
     ;;
     :ns-groups
     ;; the following patterns are considered to be test namespaces:
     ;;
     ;; - Any namespace ending in `-test` or `-test.whatever`
    
     ;; - Any namespace containing in `test-util`
    
     ;; - Any namespace that starts with `metabase.test`
     ;;
     ;; this list isn't exhaustive because it misses some stuff like the test runner and HTTP client but it's easier to go
     ;; fix those namespaces than it is to make this regex super hairy.
    
     [{:pattern "(?:.*-test(?:\\..*)?$)|(?:.*test-util)|(?:^metabase\\.test.*)"
    
       :name    test-namespaces}
    
      {:pattern "^(?!.*-test(?:\\..*)?$)(?!.*test-util)(?!^metabase\\.test.*).*$"
    
      {:pattern "(?:(?:^metabase\\.cmd.*)|(?:^build.*)|(?:^metabuild-common.*)|(?:^release.*)|(?:^i18n.*)|(?:^lint-migrations-file$))"
    
    Cam Saul's avatar
    Cam Saul committed
       :name    printable-namespaces}
    
      {:pattern "^metabase\\.(?:(?:lib)|(?:legacy-mbql))\\.*"
    
       :name    metabase-lib}
    
      ;;
      ;; QP source namespaces: `metabase.query-processor.*`, `metabase-enterprise.sandbox.query-processor.*`, and
      ;; `metabase.driver.*`, excluding `-test` namespaces.
      ;;
      {:pattern "metabase(?:(?:(?:-enterprise\\.sandbox)?\\.query-processor\\.)|(?:\\.driver\\.)).*(?<!-test)$"
    
       :name    qp-and-driver-source-namespaces}