Skip to content

Commit

Permalink
use MethodName.File when value ends with .csv (dbt-labs#5581)
Browse files Browse the repository at this point in the history
* [CT-953] [Feature] Support for .csv files when using file selectors(for seed)

* Added Changelog entry for issue-5578

* Added Unit tests
  • Loading branch information
Goodkat authored and Axel Goblet committed Sep 16, 2022
1 parent c408c13 commit 3a0b89d
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 6 deletions.
7 changes: 7 additions & 0 deletions .changes/unreleased/Features-20220729-173231.yaml
Original file line number Diff line number Diff line change
@@ -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"
2 changes: 1 addition & 1 deletion core/dbt/graph/selector_spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
23 changes: 18 additions & 5 deletions test/unit/test_graph_selector_methods.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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'}
Expand Down Expand Up @@ -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(
Expand All @@ -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',
}
Expand All @@ -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):
Expand Down

0 comments on commit 3a0b89d

Please sign in to comment.