dbt-snowflake icon indicating copy to clipboard operation
dbt-snowflake copied to clipboard

lazy load agate

Open dwreeves opened this issue 10 months ago • 0 comments

resolves #953

Problem

TLDR: lazy-loading agate speeds up the load time of dbt by about 3.5%. Most instances of agate are unnecessary as dbt only uses it in a select few situations, and most instances of agate can be placed behind TYPE_CHECKING.

Already implemented in dbt-adapters and dbt-core.

  • https://github.com/dbt-labs/dbt-adapters/pull/126
  • https://github.com/dbt-labs/dbt-core/pull/9744

Check performed (should return empty list):

import sys
import dbt.adapters.snowflake.impl
print([i for i in sys.modules if "agate" in i])

Solution

from typing import TYPE_CHECKING

Checklist

  • [x] I have read the contributing guide and understand what's expected of me
  • [x] I have run this code in development and it appears to resolve the stated issue
  • [x] This PR includes tests, or tests are not required/relevant for this PR
  • [x] This PR has no interface changes (e.g. macros, cli, logs, json artifacts, config files, adapter interface, etc) or this PR has already received feedback and approval from Product or DX

dwreeves avatar Mar 27 '24 04:03 dwreeves