[CT-1453] [Spike] A pattern for plugins #6184
Labels
python_api
Issues related to dbtRunner Python entry point
spike
stale
Issues that have gone stale
Team:Adapters
Issues designated for the adapter area of the code
We want
dbt-core
to be much more pluggable in the future, with several supported interfaces. Think: modeling languages, backend implementations, authentication, ...We have a single blessed plugin interface today, for adapter plugins (authentication + runtime engines for models). Basically (or as I understand it), we use
importlib
to dynamically import thedbt-somedb
adapter plugin, and make it available todbt-core
:dbt-core/core/dbt/adapters/factory.py
Line 57 in be4a91a
We don't love the way this works. Specifically:
adapters
moduledbt-core
and plugins is difficult to follow through the code:BaseAdapter
(indbt-core
) →PostgresAdapter
(indbt-postgres
) → parsing, tasks, etc (indbt-core
)What are modern plugin patterns for Python? Let's do some investigation here. Bonus points for architectures that offer a degree of language agnosticism. This is very much aligned with our tech debt initiatives over the next few months, around "API-ification" and logging, and it will be relevant for all our sub-teams into next year.
The text was updated successfully, but these errors were encountered: