diff --git a/.changes/unreleased/Features-20220729-173231.yaml b/.changes/unreleased/Features-20220729-173231.yaml new file mode 100644 index 00000000000..c07f453827b --- /dev/null +++ b/.changes/unreleased/Features-20220729-173231.yaml @@ -0,0 +1,7 @@ +kind: Features +body: use MethodName.File when value ends with .csv +time: 2022-07-29T17:32:31.395677157+02:00 +custom: + Author: Goodkat + Issue: "5578" + PR: "5581" diff --git a/core/dbt/graph/selector_spec.py b/core/dbt/graph/selector_spec.py index f929a45b0ad..991ae7fcb89 100644 --- a/core/dbt/graph/selector_spec.py +++ b/core/dbt/graph/selector_spec.py @@ -80,7 +80,7 @@ def __post_init__(self): def default_method(cls, value: str) -> MethodName: if _probably_path(value): return MethodName.Path - elif value.lower().endswith((".sql", ".py")): + elif value.lower().endswith((".sql", ".py", ".csv")): return MethodName.File else: return MethodName.FQN diff --git a/test/unit/test_graph_selector_methods.py b/test/unit/test_graph_selector_methods.py index 3e1738ee7e0..4d225b0874c 100644 --- a/test/unit/test_graph_selector_methods.py +++ b/test/unit/test_graph_selector_methods.py @@ -489,6 +489,17 @@ def table_model_py(seed): path='subdirectory/table_model.py' ) +@pytest.fixture +def table_model_csv(seed): + return make_model( + 'pkg', + 'table_model_csv', + 'select * from {{ ref("seed") }}', + config_kwargs={'materialized': 'table'}, + refs=[seed], + tags=[], + path='subdirectory/table_model.csv' + ) @pytest.fixture def ext_source(): @@ -607,11 +618,11 @@ def namespaced_union_model(seed, ext_source): ) @pytest.fixture -def manifest(seed, source, ephemeral_model, view_model, table_model, table_model_py, ext_source, ext_model, union_model, ext_source_2, +def manifest(seed, source, ephemeral_model, view_model, table_model, table_model_py, table_model_csv, ext_source, ext_model, union_model, ext_source_2, ext_source_other, ext_source_other_2, table_id_unique, table_id_not_null, view_id_unique, ext_source_id_unique, view_test_nothing, namespaced_seed, namespace_model, namespaced_union_model, macro_test_unique, macro_default_test_unique, macro_test_not_null, macro_default_test_not_null): - nodes = [seed, ephemeral_model, view_model, table_model, table_model_py, union_model, ext_model, + nodes = [seed, ephemeral_model, view_model, table_model, table_model_py, table_model_csv, union_model, ext_model, table_id_unique, table_id_not_null, view_id_unique, ext_source_id_unique, view_test_nothing, namespaced_seed, namespace_model, namespaced_union_model] sources = [source, ext_source, ext_source_2, @@ -649,7 +660,7 @@ def test_select_fqn(manifest): assert not search_manifest_using_method(manifest, method, 'ext.unions') # sources don't show up, because selection pretends they have no FQN. Should it? assert search_manifest_using_method(manifest, method, 'pkg') == { - 'union_model', 'table_model', 'table_model_py', 'view_model', 'ephemeral_model', 'seed', + 'union_model', 'table_model', 'table_model_py', 'table_model_csv', 'view_model', 'ephemeral_model', 'seed', 'mynamespace.union_model', 'mynamespace.ephemeral_model', 'mynamespace.seed'} assert search_manifest_using_method( manifest, method, 'ext') == {'ext_model'} @@ -730,6 +741,8 @@ def test_select_file(manifest): manifest, method, 'table_model.sql') == {'table_model'} assert search_manifest_using_method( manifest, method, 'table_model.py') == {'table_model_py'} + assert search_manifest_using_method( + manifest, method, 'table_model.csv') == {'table_model_csv'} assert search_manifest_using_method( manifest, method, 'union_model.sql') == {'union_model', 'mynamespace.union_model'} assert not search_manifest_using_method( @@ -744,7 +757,7 @@ def test_select_package(manifest): assert isinstance(method, PackageSelectorMethod) assert method.arguments == [] - assert search_manifest_using_method(manifest, method, 'pkg') == {'union_model', 'table_model', 'table_model_py', 'view_model', 'ephemeral_model', + assert search_manifest_using_method(manifest, method, 'pkg') == {'union_model', 'table_model', 'table_model_py', 'table_model_csv', 'view_model', 'ephemeral_model', 'seed', 'raw.seed', 'unique_table_model_id', 'not_null_table_model_id', 'unique_view_model_id', 'view_test_nothing', 'mynamespace.seed', 'mynamespace.ephemeral_model', 'mynamespace.union_model', } @@ -763,7 +776,7 @@ def test_select_config_materialized(manifest): assert search_manifest_using_method(manifest, method, 'view') == { 'view_model', 'ext_model'} assert search_manifest_using_method(manifest, method, 'table') == { - 'table_model', 'table_model_py', 'union_model', 'mynamespace.union_model'} + 'table_model', 'table_model_py', 'table_model_csv', 'union_model', 'mynamespace.union_model'} def test_select_test_name(manifest):