dagster-dbt 0.24.3__tar.gz → 0.28.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/LICENSE +1 -1
  2. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/MANIFEST.in +1 -0
  3. dagster_dbt-0.28.8/PKG-INFO +48 -0
  4. dagster_dbt-0.28.8/README.md +4 -0
  5. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/__init__.py +38 -18
  6. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/asset_decorator.py +36 -24
  7. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/asset_specs.py +24 -31
  8. dagster_dbt-0.28.8/dagster_dbt/asset_utils.py +1222 -0
  9. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/cli/app.py +34 -14
  10. dagster_dbt-0.28.8/dagster_dbt/cloud/__init__.py +10 -0
  11. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/cloud/asset_defs.py +103 -158
  12. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/cloud/cli.py +3 -4
  13. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/cloud/ops.py +7 -5
  14. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/cloud/resources.py +9 -4
  15. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/cloud/types.py +5 -2
  16. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/cloud/utils.py +8 -7
  17. dagster_dbt-0.28.8/dagster_dbt/cloud_v2/__init__.py +10 -0
  18. dagster_dbt-0.28.8/dagster_dbt/cloud_v2/asset_decorator.py +81 -0
  19. dagster_dbt-0.28.8/dagster_dbt/cloud_v2/cli_invocation.py +74 -0
  20. dagster_dbt-0.28.8/dagster_dbt/cloud_v2/client.py +511 -0
  21. dagster_dbt-0.28.8/dagster_dbt/cloud_v2/resources.py +462 -0
  22. dagster_dbt-0.28.8/dagster_dbt/cloud_v2/run_handler.py +251 -0
  23. dagster_dbt-0.28.8/dagster_dbt/cloud_v2/sensor_builder.py +254 -0
  24. dagster_dbt-0.28.8/dagster_dbt/cloud_v2/types.py +143 -0
  25. dagster_dbt-0.28.8/dagster_dbt/compat.py +107 -0
  26. dagster_dbt-0.28.8/dagster_dbt/components/dbt_project/component.py +545 -0
  27. dagster_dbt-0.28.8/dagster_dbt/components/dbt_project/scaffolder.py +65 -0
  28. dagster_dbt-0.28.8/dagster_dbt/core/__init__.py +0 -0
  29. dagster_dbt-0.28.8/dagster_dbt/core/dbt_cli_event.py +612 -0
  30. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/core/dbt_cli_invocation.py +62 -42
  31. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/core/dbt_event_iterator.py +58 -45
  32. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/core/resource.py +138 -326
  33. dagster_dbt-0.28.8/dagster_dbt/core/utils.py +19 -0
  34. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/dagster_dbt_translator.py +278 -49
  35. dagster_dbt-0.28.8/dagster_dbt/dbt_core_version.py +1 -0
  36. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/dbt_manifest.py +6 -5
  37. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/dbt_manifest_asset_selection.py +62 -22
  38. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/dbt_project.py +69 -6
  39. dagster_dbt-0.28.8/dagster_dbt/dbt_project_manager.py +173 -0
  40. dagster_dbt-0.28.8/dagster_dbt/dbt_version.py +0 -0
  41. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/errors.py +4 -0
  42. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/freshness_builder.py +18 -13
  43. dagster_dbt-0.28.8/dagster_dbt/include/pyproject.toml.jinja +28 -0
  44. dagster_dbt-0.28.8/dagster_dbt/include/scaffold/__init__.py.jinja +0 -0
  45. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/include/setup.py.jinja +1 -0
  46. dagster_dbt-0.28.8/dagster_dbt/metadata_set.py +18 -0
  47. dagster_dbt-0.28.8/dagster_dbt/utils.py +229 -0
  48. dagster_dbt-0.28.8/dagster_dbt/version.py +1 -0
  49. dagster_dbt-0.28.8/dagster_dbt.egg-info/PKG-INFO +48 -0
  50. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt.egg-info/SOURCES.txt +16 -0
  51. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt.egg-info/entry_points.txt +3 -0
  52. dagster_dbt-0.28.8/dagster_dbt.egg-info/requires.txt +23 -0
  53. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/setup.py +23 -12
  54. dagster-dbt-0.24.3/PKG-INFO +0 -18
  55. dagster-dbt-0.24.3/README.md +0 -4
  56. dagster-dbt-0.24.3/dagster_dbt/asset_utils.py +0 -1124
  57. dagster-dbt-0.24.3/dagster_dbt/cloud/__init__.py +0 -8
  58. dagster-dbt-0.24.3/dagster_dbt/core/dbt_cli_event.py +0 -485
  59. dagster-dbt-0.24.3/dagster_dbt/core/utils.py +0 -91
  60. dagster-dbt-0.24.3/dagster_dbt/dbt_core_version.py +0 -1
  61. dagster-dbt-0.24.3/dagster_dbt/include/pyproject.toml.jinja +0 -7
  62. dagster-dbt-0.24.3/dagster_dbt/utils.py +0 -143
  63. dagster-dbt-0.24.3/dagster_dbt/version.py +0 -1
  64. dagster-dbt-0.24.3/dagster_dbt.egg-info/PKG-INFO +0 -18
  65. dagster-dbt-0.24.3/dagster_dbt.egg-info/requires.txt +0 -15
  66. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/cli/__init__.py +0 -0
  67. {dagster-dbt-0.24.3/dagster_dbt/core → dagster_dbt-0.28.8/dagster_dbt/components}/__init__.py +0 -0
  68. /dagster-dbt-0.24.3/dagster_dbt/include/scaffold/__init__.py.jinja → /dagster_dbt-0.28.8/dagster_dbt/components/dbt_project/__init__.py +0 -0
  69. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/include/__init__.py +0 -0
  70. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/include/scaffold/assets.py.jinja +0 -0
  71. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/include/scaffold/definitions.py.jinja +0 -0
  72. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/include/scaffold/project.py.jinja +0 -0
  73. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/include/scaffold/schedules.py.jinja +0 -0
  74. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt/py.typed +0 -0
  75. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt.egg-info/dependency_links.txt +0 -0
  76. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt.egg-info/not-zip-safe +0 -0
  77. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/dagster_dbt.egg-info/top_level.txt +0 -0
  78. {dagster-dbt-0.24.3 → dagster_dbt-0.28.8}/setup.cfg +0 -0
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2023 Dagster Labs, Inc".
189
+ Copyright 2025 Dagster Labs, Inc.
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
@@ -3,3 +3,4 @@ recursive-exclude dbt_packages *
3
3
  include LICENSE
4
4
  include dagster_dbt/py.typed
5
5
  recursive-include dagster_dbt/include *
6
+ prune kitchen-sink
@@ -0,0 +1,48 @@
1
+ Metadata-Version: 2.4
2
+ Name: dagster-dbt
3
+ Version: 0.28.8
4
+ Summary: A Dagster integration for dbt
5
+ Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-dbt
6
+ Author: Dagster Labs
7
+ Author-email: hello@dagsterlabs.com
8
+ License: Apache-2.0
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Operating System :: OS Independent
16
+ Requires-Python: >=3.10,<3.15
17
+ License-File: LICENSE
18
+ Requires-Dist: dagster==1.12.8
19
+ Requires-Dist: dbt-core<1.11,>=1.7
20
+ Requires-Dist: gitpython
21
+ Requires-Dist: Jinja2
22
+ Requires-Dist: networkx
23
+ Requires-Dist: orjson
24
+ Requires-Dist: requests
25
+ Requires-Dist: rich
26
+ Requires-Dist: sqlglot[rs]<28.1.0
27
+ Requires-Dist: typer>=0.9.0
28
+ Requires-Dist: packaging
29
+ Provides-Extra: test-bare
30
+ Requires-Dist: pytest-rerunfailures; extra == "test-bare"
31
+ Requires-Dist: pytest-order; extra == "test-bare"
32
+ Provides-Extra: test
33
+ Requires-Dist: pytest-rerunfailures; extra == "test"
34
+ Requires-Dist: pytest-order; extra == "test"
35
+ Requires-Dist: dagster-duckdb; extra == "test"
36
+ Requires-Dist: dagster-duckdb-pandas; extra == "test"
37
+ Requires-Dist: dbt-duckdb<1.9.2; extra == "test"
38
+ Requires-Dist: duckdb<1.4.0; extra == "test"
39
+ Dynamic: author
40
+ Dynamic: author-email
41
+ Dynamic: classifier
42
+ Dynamic: home-page
43
+ Dynamic: license
44
+ Dynamic: license-file
45
+ Dynamic: provides-extra
46
+ Dynamic: requires-dist
47
+ Dynamic: requires-python
48
+ Dynamic: summary
@@ -0,0 +1,4 @@
1
+ # dagster-dbt
2
+
3
+ The docs for `dagster-dbt` can be found
4
+ [here](https://docs.dagster.io/api/python-api/libraries/dagster-dbt).
@@ -1,6 +1,6 @@
1
- from .asset_decorator import dbt_assets as dbt_assets
2
- from .asset_specs import build_dbt_asset_specs as build_dbt_asset_specs
3
- from .asset_utils import (
1
+ from dagster_dbt.asset_decorator import dbt_assets as dbt_assets
2
+ from dagster_dbt.asset_specs import build_dbt_asset_specs as build_dbt_asset_specs
3
+ from dagster_dbt.asset_utils import (
4
4
  build_dbt_asset_selection as build_dbt_asset_selection,
5
5
  build_schedule_from_dbt_selection as build_schedule_from_dbt_selection,
6
6
  default_group_from_dbt_resource_props as default_group_from_dbt_resource_props,
@@ -10,7 +10,7 @@ from .asset_utils import (
10
10
  get_asset_keys_by_output_name_for_source as get_asset_keys_by_output_name_for_source,
11
11
  group_from_dbt_resource_props_fallback_to_directory as group_from_dbt_resource_props_fallback_to_directory,
12
12
  )
13
- from .cloud import (
13
+ from dagster_dbt.cloud import (
14
14
  DbtCloudClientResource as DbtCloudClientResource,
15
15
  DbtCloudOutput as DbtCloudOutput,
16
16
  DbtCloudResource as DbtCloudResource,
@@ -18,28 +18,39 @@ from .cloud import (
18
18
  dbt_cloud_run_op as dbt_cloud_run_op,
19
19
  load_assets_from_dbt_cloud_job as load_assets_from_dbt_cloud_job,
20
20
  )
21
- from .core.dbt_cli_event import DbtCliEventMessage as DbtCliEventMessage
22
- from .core.dbt_cli_invocation import DbtCliInvocation as DbtCliInvocation
23
- from .core.resource import DbtCliResource as DbtCliResource
24
- from .dagster_dbt_translator import (
21
+ from dagster_dbt.cloud_v2 import (
22
+ DbtCloudCredentials as DbtCloudCredentials,
23
+ DbtCloudWorkspace as DbtCloudWorkspace,
24
+ build_dbt_cloud_polling_sensor as build_dbt_cloud_polling_sensor,
25
+ dbt_cloud_assets as dbt_cloud_assets,
26
+ load_dbt_cloud_asset_specs as load_dbt_cloud_asset_specs,
27
+ load_dbt_cloud_check_specs as load_dbt_cloud_check_specs,
28
+ )
29
+ from dagster_dbt.components.dbt_project.component import DbtProjectComponent as DbtProjectComponent
30
+ from dagster_dbt.core.dbt_cli_event import DbtCliEventMessage as DbtCliEventMessage
31
+ from dagster_dbt.core.dbt_cli_invocation import DbtCliInvocation as DbtCliInvocation
32
+ from dagster_dbt.core.resource import DbtCliResource as DbtCliResource
33
+ from dagster_dbt.dagster_dbt_translator import (
25
34
  DagsterDbtTranslator as DagsterDbtTranslator,
26
35
  DagsterDbtTranslatorSettings as DagsterDbtTranslatorSettings,
27
36
  )
28
- from .dbt_manifest_asset_selection import DbtManifestAssetSelection as DbtManifestAssetSelection
29
- from .dbt_project import (
37
+ from dagster_dbt.dbt_manifest_asset_selection import (
38
+ DbtManifestAssetSelection as DbtManifestAssetSelection,
39
+ )
40
+ from dagster_dbt.dbt_project import (
30
41
  DagsterDbtProjectPreparer as DagsterDbtProjectPreparer,
31
42
  DbtProject as DbtProject,
32
43
  DbtProjectPreparer as DbtProjectPreparer,
33
44
  )
34
- from .errors import (
45
+ from dagster_dbt.errors import (
35
46
  DagsterDbtCliRuntimeError as DagsterDbtCliRuntimeError,
36
47
  DagsterDbtCloudJobInvariantViolationError as DagsterDbtCloudJobInvariantViolationError,
37
48
  DagsterDbtError as DagsterDbtError,
38
49
  )
39
- from .freshness_builder import (
50
+ from dagster_dbt.freshness_builder import (
40
51
  build_freshness_checks_from_dbt_assets as build_freshness_checks_from_dbt_assets,
41
52
  )
42
- from .version import __version__ as __version__
53
+ from dagster_dbt.version import __version__ as __version__
43
54
 
44
55
  # isort: split
45
56
 
@@ -47,17 +58,26 @@ from .version import __version__ as __version__
47
58
  # ##### DYNAMIC IMPORTS
48
59
  # ########################
49
60
  import importlib
50
- from typing import Any, Mapping, Sequence, Tuple
61
+ from collections.abc import Mapping, Sequence
62
+ from typing import Any, Final, Tuple # noqa: F401, UP035
51
63
 
52
64
  from dagster._annotations import deprecated
53
- from dagster._core.libraries import DagsterLibraryRegistry
54
65
  from dagster._utils.warnings import deprecation_warning
55
- from typing_extensions import Final
66
+ from dagster_shared.libraries import DagsterLibraryRegistry
67
+
68
+ from dagster_dbt.compat import DBT_PYTHON_VERSION
56
69
 
57
70
  DagsterLibraryRegistry.register("dagster-dbt", __version__)
58
71
 
72
+ if DBT_PYTHON_VERSION is not None:
73
+ DagsterLibraryRegistry.register(
74
+ "dbt-core", DBT_PYTHON_VERSION.base_version, is_dagster_package=False
75
+ )
76
+ else:
77
+ DagsterLibraryRegistry.register("dbt-fusion", "unknown", is_dagster_package=False)
78
+
59
79
 
60
- _DEPRECATED: Final[Mapping[str, Tuple[str, str, str]]] = {
80
+ _DEPRECATED: Final[Mapping[str, tuple[str, str, str]]] = {
61
81
  ##### EXAMPLE
62
82
  # "Foo": (
63
83
  # "dagster.some.module",
@@ -66,7 +86,7 @@ _DEPRECATED: Final[Mapping[str, Tuple[str, str, str]]] = {
66
86
  # ),
67
87
  }
68
88
 
69
- _DEPRECATED_WARNING: Final[Mapping[str, Tuple[str, str, str]]] = {
89
+ _DEPRECATED_WARNING: Final[Mapping[str, tuple[str, str, str]]] = {
70
90
  ##### EXAMPLE
71
91
  # "Foo": (
72
92
  # "dagster.some.module",
@@ -1,4 +1,5 @@
1
- from typing import Any, Callable, Mapping, Optional, Set
1
+ from collections.abc import Callable, Mapping
2
+ from typing import Any, Optional
2
3
 
3
4
  from dagster import (
4
5
  AssetsDefinition,
@@ -11,32 +12,37 @@ from dagster import (
11
12
  )
12
13
  from dagster._utils.warnings import suppress_dagster_warnings
13
14
 
14
- from dagster_dbt.dbt_project import DbtProject
15
-
16
- from .asset_utils import (
15
+ from dagster_dbt.asset_utils import (
17
16
  DAGSTER_DBT_EXCLUDE_METADATA_KEY,
18
17
  DAGSTER_DBT_SELECT_METADATA_KEY,
19
- build_dbt_multi_asset_args,
18
+ DAGSTER_DBT_SELECTOR_METADATA_KEY,
19
+ DBT_DEFAULT_EXCLUDE,
20
+ DBT_DEFAULT_SELECT,
21
+ DBT_DEFAULT_SELECTOR,
22
+ build_dbt_specs,
20
23
  )
21
- from .dagster_dbt_translator import DagsterDbtTranslator, validate_translator
22
- from .dbt_manifest import DbtManifestParam, validate_manifest
24
+ from dagster_dbt.dagster_dbt_translator import DagsterDbtTranslator, validate_translator
25
+ from dagster_dbt.dbt_manifest import DbtManifestParam, validate_manifest
26
+ from dagster_dbt.dbt_project import DbtProject
23
27
 
24
28
 
25
29
  @suppress_dagster_warnings
26
30
  def dbt_assets(
27
31
  *,
28
32
  manifest: DbtManifestParam,
29
- select: str = "fqn:*",
30
- exclude: Optional[str] = None,
33
+ select: str = DBT_DEFAULT_SELECT,
34
+ exclude: Optional[str] = DBT_DEFAULT_EXCLUDE,
35
+ selector: Optional[str] = DBT_DEFAULT_SELECTOR,
31
36
  name: Optional[str] = None,
32
37
  io_manager_key: Optional[str] = None,
33
38
  partitions_def: Optional[PartitionsDefinition] = None,
34
39
  dagster_dbt_translator: Optional[DagsterDbtTranslator] = None,
35
40
  backfill_policy: Optional[BackfillPolicy] = None,
36
41
  op_tags: Optional[Mapping[str, Any]] = None,
37
- required_resource_keys: Optional[Set[str]] = None,
42
+ required_resource_keys: Optional[set[str]] = None,
38
43
  project: Optional[DbtProject] = None,
39
44
  retry_policy: Optional[RetryPolicy] = None,
45
+ pool: Optional[str] = None,
40
46
  ) -> Callable[[Callable[..., Any]], AssetsDefinition]:
41
47
  """Create a definition for how to compute a set of dbt resources, described by a manifest.json.
42
48
  When invoking dbt commands using :py:class:`~dagster_dbt.DbtCliResource`'s
@@ -52,6 +58,8 @@ def dbt_assets(
52
58
  to include. Defaults to ``fqn:*``.
53
59
  exclude (Optional[str]): A dbt selection string for the models in a project that you want
54
60
  to exclude. Defaults to "".
61
+ selector (Optional[str]): A dbt selector for the models in a project that you want to
62
+ include. Cannot be combined with select or exclude. Defaults to None.
55
63
  name (Optional[str]): The name of the op.
56
64
  io_manager_key (Optional[str]): The IO manager key that will be set on each of the returned
57
65
  assets. When other ops are downstream of the loaded assets, the IOManager specified
@@ -72,6 +80,8 @@ def dbt_assets(
72
80
  project location and manifest. Not required, but needed to attach code references from
73
81
  model code to Dagster assets.
74
82
  retry_policy (Optional[RetryPolicy]): The retry policy for the op that computes the asset.
83
+ pool (Optional[str]): A string that identifies the concurrency pool that governs the dbt
84
+ assets' execution.
75
85
 
76
86
  Examples:
77
87
  Running ``dbt build`` for a dbt project:
@@ -303,16 +313,12 @@ def dbt_assets(
303
313
  dagster_dbt_translator = validate_translator(dagster_dbt_translator or DagsterDbtTranslator())
304
314
  manifest = validate_manifest(manifest)
305
315
 
306
- (
307
- deps,
308
- outs,
309
- internal_asset_deps,
310
- check_specs,
311
- ) = build_dbt_multi_asset_args(
316
+ specs, check_specs = build_dbt_specs(
317
+ translator=dagster_dbt_translator,
312
318
  manifest=manifest,
313
- dagster_dbt_translator=dagster_dbt_translator,
314
319
  select=select,
315
- exclude=exclude or "",
320
+ exclude=exclude or DBT_DEFAULT_EXCLUDE,
321
+ selector=selector or DBT_DEFAULT_SELECTOR,
316
322
  io_manager_key=io_manager_key,
317
323
  project=project,
318
324
  )
@@ -329,9 +335,16 @@ def dbt_assets(
329
335
  " with op_tags"
330
336
  )
331
337
 
338
+ if op_tags and DAGSTER_DBT_SELECTOR_METADATA_KEY in op_tags:
339
+ raise DagsterInvalidDefinitionError(
340
+ f"To specify a dbt selector, use the 'selector' argument, not '{DAGSTER_DBT_SELECTOR_METADATA_KEY}'"
341
+ " with op_tags"
342
+ )
343
+
332
344
  resolved_op_tags = {
333
345
  **({DAGSTER_DBT_SELECT_METADATA_KEY: select} if select else {}),
334
346
  **({DAGSTER_DBT_EXCLUDE_METADATA_KEY: exclude} if exclude else {}),
347
+ **({DAGSTER_DBT_SELECTOR_METADATA_KEY: selector} if selector else {}),
335
348
  **(op_tags if op_tags else {}),
336
349
  }
337
350
 
@@ -343,16 +356,15 @@ def dbt_assets(
343
356
  backfill_policy = BackfillPolicy.single_run()
344
357
 
345
358
  return multi_asset(
346
- outs=outs,
347
359
  name=name,
348
- internal_asset_deps=internal_asset_deps,
349
- deps=deps,
360
+ specs=specs,
361
+ check_specs=check_specs,
362
+ can_subset=True,
350
363
  required_resource_keys=required_resource_keys,
351
- compute_kind="dbt",
352
364
  partitions_def=partitions_def,
353
- can_subset=True,
354
365
  op_tags=resolved_op_tags,
355
- check_specs=check_specs,
356
366
  backfill_policy=backfill_policy,
357
367
  retry_policy=retry_policy,
368
+ pool=pool,
369
+ allow_arbitrary_check_specs=True,
358
370
  )
@@ -1,22 +1,26 @@
1
- from typing import Optional, Sequence
1
+ from collections.abc import Sequence
2
+ from typing import Optional
2
3
 
3
- import dagster._check as check
4
- from dagster import AssetDep, AssetKey, AssetSpec
5
- from dagster._annotations import experimental
4
+ from dagster import AssetSpec
6
5
 
7
- from .asset_utils import build_dbt_multi_asset_args
8
- from .dagster_dbt_translator import DagsterDbtTranslator, validate_translator
9
- from .dbt_manifest import DbtManifestParam, validate_manifest
10
- from .dbt_project import DbtProject
6
+ from dagster_dbt.asset_utils import (
7
+ DBT_DEFAULT_EXCLUDE,
8
+ DBT_DEFAULT_SELECT,
9
+ DBT_DEFAULT_SELECTOR,
10
+ build_dbt_specs,
11
+ )
12
+ from dagster_dbt.dagster_dbt_translator import DagsterDbtTranslator, validate_translator
13
+ from dagster_dbt.dbt_manifest import DbtManifestParam, validate_manifest
14
+ from dagster_dbt.dbt_project import DbtProject
11
15
 
12
16
 
13
- @experimental
14
17
  def build_dbt_asset_specs(
15
18
  *,
16
19
  manifest: DbtManifestParam,
17
20
  dagster_dbt_translator: Optional[DagsterDbtTranslator] = None,
18
- select: str = "fqn:*",
19
- exclude: Optional[str] = None,
21
+ select: str = DBT_DEFAULT_SELECT,
22
+ exclude: Optional[str] = DBT_DEFAULT_EXCLUDE,
23
+ selector: Optional[str] = DBT_DEFAULT_SELECTOR,
20
24
  project: Optional[DbtProject] = None,
21
25
  ) -> Sequence[AssetSpec]:
22
26
  """Build a list of asset specs from a set of dbt resources selected from a dbt manifest.
@@ -32,6 +36,8 @@ def build_dbt_asset_specs(
32
36
  to include. Defaults to ``fqn:*``.
33
37
  exclude (Optional[str]): A dbt selection string for the models in a project that you want
34
38
  to exclude. Defaults to "".
39
+ selector (Optional[str]): A dbt selector for the models in a project that you want
40
+ to include. Defaults to None.
35
41
  project (Optional[DbtProject]): A DbtProject instance which provides a pointer to the dbt
36
42
  project location and manifest. Not required, but needed to attach code references from
37
43
  model code to Dagster assets.
@@ -42,31 +48,18 @@ def build_dbt_asset_specs(
42
48
  manifest = validate_manifest(manifest)
43
49
  dagster_dbt_translator = validate_translator(dagster_dbt_translator or DagsterDbtTranslator())
44
50
 
45
- (
46
- _,
47
- outs,
48
- internal_asset_deps,
49
- _,
50
- ) = build_dbt_multi_asset_args(
51
+ specs, _ = build_dbt_specs(
51
52
  manifest=manifest,
52
- dagster_dbt_translator=dagster_dbt_translator,
53
+ translator=dagster_dbt_translator,
53
54
  select=select,
54
- exclude=exclude or "",
55
+ exclude=exclude or DBT_DEFAULT_EXCLUDE,
56
+ selector=selector or DBT_DEFAULT_SELECTOR,
55
57
  io_manager_key=None,
56
58
  project=project,
57
59
  )
58
60
 
59
- specs = [
60
- asset_out.to_spec(
61
- key=check.inst(asset_out.key, AssetKey),
62
- deps=[AssetDep(asset=dep) for dep in internal_asset_deps.get(output_name, set())],
63
- )
61
+ return [
64
62
  # Allow specs to be represented as external assets by adhering to external asset invariants.
65
- ._replace(
66
- skippable=False,
67
- code_version=None,
68
- )
69
- for output_name, asset_out in outs.items()
63
+ spec.replace_attributes(skippable=False, code_version=None)
64
+ for spec in specs
70
65
  ]
71
-
72
- return specs