Skip to content

Commit

Permalink
use MethodName.File when value ends with .py (#5295)
Browse files Browse the repository at this point in the history
  • Loading branch information
Leo Folsom authored Jul 29, 2022
1 parent c879083 commit 5153023
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 8 deletions.
7 changes: 7 additions & 0 deletions .changes/unreleased/Features-20220526-165323.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
kind: Features
body: allows user to include the file extension for .py models in the dbt run -m command.
time: 2022-05-26T16:53:23.389671-07:00
custom:
Author: leoebfolsom
Issue: "5289"
PR: "5295"
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"):
elif value.lower().endswith((".sql", ".py")):
return MethodName.File
else:
return MethodName.FQN
Expand Down
29 changes: 22 additions & 7 deletions test/unit/test_graph_selector_methods.py
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,19 @@ def table_model(ephemeral_model):
)


@pytest.fixture
def table_model_py(seed):
return make_model(
'pkg',
'table_model_py',
'select * from {{ ref("seed") }}',
config_kwargs={'materialized': 'table'},
refs=[seed],
tags=[],
path='subdirectory/table_model.py'
)


@pytest.fixture
def ext_source():
return make_source(
Expand Down Expand Up @@ -537,7 +550,6 @@ def union_model(seed, ext_source):
tags=['unions'],
)


@pytest.fixture
def table_id_unique(table_model):
return make_unique_test('pkg', table_model, 'id')
Expand Down Expand Up @@ -594,13 +606,12 @@ def namespaced_union_model(seed, ext_source):
tags=['unions'],
)


@pytest.fixture
def manifest(seed, source, ephemeral_model, view_model, table_model, ext_source, ext_model, union_model, ext_source_2,
def manifest(seed, source, ephemeral_model, view_model, table_model, table_model_py, 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, union_model, ext_model,
nodes = [seed, ephemeral_model, view_model, table_model, table_model_py, 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 @@ -638,7 +649,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', 'view_model', 'ephemeral_model', 'seed',
'union_model', 'table_model', 'table_model_py', '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 @@ -717,10 +728,14 @@ def test_select_file(manifest):

assert search_manifest_using_method(
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, 'union_model.sql') == {'union_model', 'mynamespace.union_model'}
assert not search_manifest_using_method(
manifest, method, 'missing.sql')
assert not search_manifest_using_method(
manifest, method, 'missing.py')


def test_select_package(manifest):
Expand All @@ -729,7 +744,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', 'view_model', 'ephemeral_model',
assert search_manifest_using_method(manifest, method, 'pkg') == {'union_model', 'table_model', 'table_model_py', '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 @@ -748,7 +763,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', 'union_model', 'mynamespace.union_model'}
'table_model', 'table_model_py', 'union_model', 'mynamespace.union_model'}


def test_select_test_name(manifest):
Expand Down

0 comments on commit 5153023

Please sign in to comment.