airflow-dbt-python 3.0.0__py3-none-any.whl → 3.0.2__py3-none-any.whl

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.
@@ -3,4 +3,4 @@
3
3
  __author__ = "Tomás Farías Santana"
4
4
  __copyright__ = "Copyright 2021 Tomás Farías Santana"
5
5
  __title__ = "airflow-dbt-python"
6
- __version__ = "3.0.0"
6
+ __version__ = "3.0.2"
@@ -1 +1 @@
1
- """Hooks module provides DbtHooks and DbtFSHooks."""
1
+ """The hooks module provides Airflow hooks used to interact with dbt."""
@@ -1,4 +1,8 @@
1
- """Provides a hook to interact with a dbt project."""
1
+ """Provides a hook to interact with dbt.
2
+
3
+ Interacting with dbt mainly means setting up a dbt project and running a dbt
4
+ task.
5
+ """
2
6
 
3
7
  from __future__ import annotations
4
8
 
@@ -1,8 +1,7 @@
1
- """The DbtFSHook interface includes methods for downloading and uploading files.
1
+ """A ``DbtFSHook`` can download and upload dbt project files to a filesystem.
2
2
 
3
- Internally, DbtFSHooks can use Airflow hooks to execute the actual operations.
4
-
5
- Currently, only AWS S3 and the local filesystem are supported as remotes.
3
+ By filesystem we understand any storage that can hold dbt project files, like an
4
+ S3 bucket or a git repository.
6
5
  """
7
6
 
8
7
  from abc import ABC, abstractmethod
@@ -157,7 +157,11 @@ class DbtGitFSHook(SSHHook, DbtFSHook):
157
157
  client, path, branch = self.get_git_client_path(source)
158
158
 
159
159
  client.clone(
160
- path, str(destination), mkdir=not destination.exists(), branch=branch
160
+ path,
161
+ str(destination),
162
+ mkdir=not destination.exists(),
163
+ # NOTE: Dulwich expects branch to be bytes if defined.
164
+ branch=branch.encode("utf-8") if isinstance(branch, str) else branch,
161
165
  )
162
166
 
163
167
  def get_git_client_path(self, url: URL) -> Tuple[GitClients, str, Optional[str]]:
@@ -1,4 +1,9 @@
1
- """Provides a hook to get a dbt profile based on the Airflow connection."""
1
+ """Provides hooks to establish a dbt connection with supported targets.
2
+
3
+ The connection details will be extracted from an Airflow connection, and each
4
+ target can interpret connection information differently according to its
5
+ specific connection requirements.
6
+ """
2
7
 
3
8
  from __future__ import annotations
4
9
 
@@ -400,14 +400,15 @@ class DbtRunOperator(DbtBaseOperator):
400
400
  full_refresh: Optional[bool] = None,
401
401
  models: Optional[list[str]] = None,
402
402
  select: Optional[list[str]] = None,
403
- selector_name: Optional[list[str]] = None,
403
+ selector: Optional[str] = None,
404
+ selector_name: Optional[str] = None,
404
405
  exclude: Optional[list[str]] = None,
405
406
  **kwargs,
406
407
  ) -> None:
407
408
  super().__init__(**kwargs)
408
409
  self.full_refresh = full_refresh
409
410
  self.exclude = exclude
410
- self.selector_name = selector_name
411
+ self.selector = selector or selector_name
411
412
  self.select = select or models
412
413
 
413
414
  @property
@@ -432,6 +433,7 @@ class DbtSeedOperator(DbtBaseOperator):
432
433
  select: Optional[list[str]] = None,
433
434
  show: Optional[bool] = None,
434
435
  exclude: Optional[list[str]] = None,
436
+ selector: Optional[str] = None,
435
437
  selector_name: Optional[str] = None,
436
438
  **kwargs,
437
439
  ) -> None:
@@ -440,7 +442,7 @@ class DbtSeedOperator(DbtBaseOperator):
440
442
  self.select = select
441
443
  self.show = show
442
444
  self.exclude = exclude
443
- self.selector_name = selector_name
445
+ self.selector = selector or selector_name
444
446
 
445
447
  @property
446
448
  def command(self) -> str:
@@ -465,6 +467,7 @@ class DbtTestOperator(DbtBaseOperator):
465
467
  models: Optional[list[str]] = None,
466
468
  select: Optional[list[str]] = None,
467
469
  exclude: Optional[list[str]] = None,
470
+ selector: Optional[str] = None,
468
471
  selector_name: Optional[str] = None,
469
472
  indirect_selection: Optional[str] = None,
470
473
  **kwargs,
@@ -473,7 +476,7 @@ class DbtTestOperator(DbtBaseOperator):
473
476
  self.singular = singular
474
477
  self.generic = generic
475
478
  self.exclude = exclude
476
- self.selector_name = selector_name
479
+ self.selector = selector or selector_name
477
480
  self.select = select or models
478
481
  self.indirect_selection = indirect_selection
479
482
 
@@ -500,6 +503,7 @@ class DbtCompileOperator(_GraphRunnableOperator):
500
503
  models: Optional[list[str]] = None,
501
504
  select: Optional[list[str]] = None,
502
505
  exclude: Optional[list[str]] = None,
506
+ selector: Optional[str] = None,
503
507
  selector_name: Optional[str] = None,
504
508
  upload_dbt_project: bool = True,
505
509
  **kwargs,
@@ -508,7 +512,7 @@ class DbtCompileOperator(_GraphRunnableOperator):
508
512
  self.parse_only = parse_only
509
513
  self.full_refresh = full_refresh
510
514
  self.exclude = exclude
511
- self.selector_name = selector_name
515
+ self.selector = selector or selector_name
512
516
  self.select = select or models
513
517
  self.upload_dbt_project = upload_dbt_project
514
518
 
@@ -614,13 +618,14 @@ class DbtSnapshotOperator(DbtBaseOperator):
614
618
  self,
615
619
  select: Optional[list[str]] = None,
616
620
  exclude: Optional[list[str]] = None,
621
+ selector: Optional[str] = None,
617
622
  selector_name: Optional[str] = None,
618
623
  **kwargs,
619
624
  ) -> None:
620
625
  super().__init__(**kwargs)
621
626
  self.select = select
622
627
  self.exclude = exclude
623
- self.selector_name = selector_name
628
+ self.selector = selector or selector_name
624
629
 
625
630
  @property
626
631
  def command(self) -> str:
@@ -644,6 +649,7 @@ class DbtLsOperator(_GraphRunnableOperator):
644
649
  resource_types: Optional[list[str]] = None,
645
650
  select: Optional[list[str]] = None,
646
651
  exclude: Optional[list[str]] = None,
652
+ selector: Optional[str] = None,
647
653
  selector_name: Optional[str] = None,
648
654
  dbt_output: Optional[Output] = None,
649
655
  output_keys: Optional[list[str]] = None,
@@ -654,7 +660,7 @@ class DbtLsOperator(_GraphRunnableOperator):
654
660
  self.resource_types = resource_types
655
661
  self.select = select
656
662
  self.exclude = exclude
657
- self.selector_name = selector_name
663
+ self.selector = selector or selector_name
658
664
  self.dbt_output = dbt_output
659
665
  self.output_keys = output_keys
660
666
  self.indirect_selection = indirect_selection
@@ -727,6 +733,7 @@ class DbtSourceFreshnessOperator(DbtBaseOperator):
727
733
  select: Optional[list[str]] = None,
728
734
  dbt_output: Optional[Union[str, Path]] = None,
729
735
  exclude: Optional[list[str]] = None,
736
+ selector: Optional[str] = None,
730
737
  selector_name: Optional[str] = None,
731
738
  upload_dbt_project: bool = True,
732
739
  **kwargs,
@@ -734,7 +741,7 @@ class DbtSourceFreshnessOperator(DbtBaseOperator):
734
741
  super().__init__(**kwargs)
735
742
  self.select = select
736
743
  self.exclude = exclude
737
- self.selector_name = selector_name
744
+ self.selector = selector or selector_name
738
745
  self.dbt_output = dbt_output
739
746
  self.upload_dbt_project = upload_dbt_project
740
747
 
@@ -759,6 +766,7 @@ class DbtBuildOperator(DbtBaseOperator):
759
766
  full_refresh: Optional[bool] = None,
760
767
  select: Optional[list[str]] = None,
761
768
  exclude: Optional[list[str]] = None,
769
+ selector: Optional[str] = None,
762
770
  selector_name: Optional[str] = None,
763
771
  singular: Optional[bool] = None,
764
772
  generic: Optional[bool] = None,
@@ -770,7 +778,7 @@ class DbtBuildOperator(DbtBaseOperator):
770
778
  self.full_refresh = full_refresh
771
779
  self.select = select
772
780
  self.exclude = exclude
773
- self.selector_name = selector_name
781
+ self.selector = selector or selector_name
774
782
  self.singular = singular
775
783
  self.generic = generic
776
784
  self.show = show
@@ -518,11 +518,13 @@ class SelectionConfig(BaseConfig):
518
518
 
519
519
  exclude: Optional[list[str]] = None
520
520
  select: Optional[list[str]] = None
521
- selector_name: Optional[list[str]] = None
522
521
  selector: Optional[str] = None
523
522
  state: Optional[Union[Path, str]] = None
524
523
  defer_state: Optional[Union[Path, str]] = None
525
524
 
525
+ # Kept for compatibility with dbt versions < 1.5
526
+ selector_name: Optional[str] = None
527
+
526
528
  # Kept for compatibility with dbt versions < 0.21
527
529
  models: Optional[list[str]] = None
528
530
 
@@ -1,49 +1,51 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: airflow-dbt-python
3
- Version: 3.0.0
3
+ Version: 3.0.2
4
4
  Summary: A collection of Airflow operators, hooks, and utilities to execute dbt commands
5
- License: MIT
6
- Author: Tomás Farías Santana
7
- Author-email: tomas@tomasfarias.dev
8
- Requires-Python: >=3.9,<3.13
5
+ Author-email: Tomás Farías Santana <tomas@tomasfarias.dev>
6
+ License-Expression: MIT
7
+ Project-URL: repository, https://github.com/tomasfarias/airflow-dbt-python
8
+ Project-URL: documentation, https://airflow-dbt-python.readthedocs.io
9
9
  Classifier: Development Status :: 5 - Production/Stable
10
10
  Classifier: Intended Audience :: Developers
11
- Classifier: License :: OSI Approved :: MIT License
12
11
  Classifier: Programming Language :: Python :: 3.9
13
12
  Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
14
  Classifier: Programming Language :: Python :: 3.12
16
- Provides-Extra: adapters
15
+ Requires-Python: <3.13,>=3.9
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: apache-airflow>=2.8
19
+ Requires-Dist: contextlib-chdir==1.0.2; python_version < "3.11"
20
+ Requires-Dist: dbt-core<2.0.0,>=1.8.0
17
21
  Provides-Extra: airflow-providers
22
+ Requires-Dist: apache-airflow-providers-amazon>=3.0.0; extra == "airflow-providers"
23
+ Requires-Dist: apache-airflow-providers-google>=11.0.0; extra == "airflow-providers"
24
+ Requires-Dist: apache-airflow-providers-ssh>=3.0.0; extra == "airflow-providers"
25
+ Provides-Extra: adapters
26
+ Requires-Dist: dbt-bigquery<2.0.0,>=1.8.0; extra == "adapters"
27
+ Requires-Dist: dbt-redshift<2.0.0,>=1.8.0; extra == "adapters"
28
+ Requires-Dist: dbt-postgres<2.0.0,>=1.8.0; extra == "adapters"
29
+ Requires-Dist: dbt-snowflake<2.0.0,>=1.8.0; extra == "adapters"
30
+ Requires-Dist: dbt-spark[all]<2.0.0,>=1.8.0; extra == "adapters"
18
31
  Provides-Extra: bigquery
32
+ Requires-Dist: dbt-bigquery<2.0.0,>=1.8.0; extra == "bigquery"
19
33
  Provides-Extra: gcs
34
+ Requires-Dist: apache-airflow-providers-google>=11.0.0; extra == "gcs"
20
35
  Provides-Extra: git
36
+ Requires-Dist: apache-airflow-providers-ssh>=3.0.0; extra == "git"
37
+ Requires-Dist: dulwich>=0.21; extra == "git"
21
38
  Provides-Extra: postgres
39
+ Requires-Dist: dbt-postgres<2.0.0,>=1.8.0; extra == "postgres"
22
40
  Provides-Extra: redshift
41
+ Requires-Dist: dbt-redshift<2.0.0,>=1.8.0; extra == "redshift"
23
42
  Provides-Extra: s3
43
+ Requires-Dist: apache-airflow-providers-amazon>=3.0.0; extra == "s3"
24
44
  Provides-Extra: snowflake
45
+ Requires-Dist: dbt-snowflake<2.0.0,>=1.8.0; extra == "snowflake"
25
46
  Provides-Extra: spark
26
- Requires-Dist: apache-airflow (>=2.8)
27
- Requires-Dist: apache-airflow-providers-amazon (>=3.0.0) ; extra == "airflow-providers"
28
- Requires-Dist: apache-airflow-providers-amazon (>=3.0.0) ; extra == "s3"
29
- Requires-Dist: apache-airflow-providers-google (>=11.0.0) ; extra == "airflow-providers"
30
- Requires-Dist: apache-airflow-providers-google (>=11.0.0) ; extra == "gcs"
31
- Requires-Dist: apache-airflow-providers-ssh (>=3.0.0) ; extra == "airflow-providers"
32
- Requires-Dist: apache-airflow-providers-ssh (>=3.0.0) ; extra == "git"
33
- Requires-Dist: contextlib-chdir (==1.0.2) ; python_version < "3.11"
34
- Requires-Dist: dbt-bigquery (>=1.8.0,<2.0.0) ; extra == "adapters"
35
- Requires-Dist: dbt-bigquery (>=1.8.0,<2.0.0) ; extra == "bigquery"
36
- Requires-Dist: dbt-core (>=1.8.0,<2.0.0)
37
- Requires-Dist: dbt-postgres (>=1.8.0,<2.0.0) ; extra == "adapters"
38
- Requires-Dist: dbt-postgres (>=1.8.0,<2.0.0) ; extra == "postgres"
39
- Requires-Dist: dbt-redshift (>=1.8.0,<2.0.0) ; extra == "adapters"
40
- Requires-Dist: dbt-redshift (>=1.8.0,<2.0.0) ; extra == "redshift"
41
- Requires-Dist: dbt-snowflake (>=1.8.0,<2.0.0) ; extra == "adapters"
42
- Requires-Dist: dbt-snowflake (>=1.8.0,<2.0.0) ; extra == "snowflake"
43
- Requires-Dist: dbt-spark (>=1.8.0,<2.0.0) ; extra == "spark"
44
- Requires-Dist: dbt-spark[all] (>=1.8.0,<2.0.0) ; extra == "adapters"
45
- Requires-Dist: dulwich (>=0.21) ; extra == "git"
46
- Description-Content-Type: text/markdown
47
+ Requires-Dist: dbt-spark<2.0.0,>=1.8.0; extra == "spark"
48
+ Dynamic: license-file
47
49
 
48
50
  # airflow-dbt-python
49
51
 
@@ -101,17 +103,17 @@ git clone https://github.com/tomasfarias/airflow-dbt-python.git
101
103
  cd airflow-dbt-python
102
104
  ```
103
105
 
104
- And installing with *Poetry*:
106
+ And installing with *uv*:
105
107
 
106
108
  ``` shell
107
- poetry install
109
+ uv pip install .
108
110
  ```
109
111
 
110
112
  ## In AWS MWAA
111
113
 
112
114
  Add *airflow-dbt-python* to your `requirements.txt` file and edit your Airflow environment to use this new `requirements.txt` file, or upload it as a plugin.
113
115
 
114
- Read the [documentation](https://airflow-dbt-python.readthedocs.io/en/latest/getting_started.html#installing-in-mwaa) for more a more detailed AWS MWAA installation breakdown.
116
+ Read the [documentation](https://airflow-dbt-python.readthedocs.io/en/latest/getting_started/#installing-in-mwaa) for more a more detailed AWS MWAA installation breakdown.
115
117
 
116
118
  ## In GCP Cloud Composer
117
119
 
@@ -245,7 +247,7 @@ with DAG(
245
247
  ) as dag:
246
248
  dbt_test = DbtTestOperator(
247
249
  task_id="dbt_test",
248
- selector_name="pre-run-tests",
250
+ selector="pre-run-tests",
249
251
  )
250
252
 
251
253
  dbt_seed = DbtSeedOperator(
@@ -268,17 +270,16 @@ More examples can be found in the [`examples/`](examples/) directory and the [do
268
270
 
269
271
  # Development
270
272
 
271
- See the [development documentation](https://airflow-dbt-python.readthedocs.io/en/latest/development.html) for a more in-depth dive into setting up a development environment, running the test-suite, and general commentary on working on *airflow-dbt-python*.
273
+ See the [development documentation](https://airflow-dbt-python.readthedocs.io/en/latest/development/) for a more in-depth dive into setting up a development environment, running the test-suite, and general commentary on working on *airflow-dbt-python*.
272
274
 
273
275
  ## Testing
274
276
 
275
- Tests are run with *pytest*, can be located in `tests/`. To run them locally, you may use *Poetry*:
277
+ Tests are run with *pytest*, can be located in `tests/`. To run them locally, you may use *uv*:
276
278
 
277
279
  ``` shell
278
- poetry run pytest tests/ -vv
280
+ uv run pytest tests/ -vv
279
281
  ```
280
282
 
281
283
  # License
282
284
 
283
285
  This project is licensed under the MIT license. See [LICENSE](LICENSE).
284
-
@@ -0,0 +1,23 @@
1
+ airflow_dbt_python/__init__.py,sha256=qYIsTHy4p3NX0QYIsLdatz6GlnaMwYsSoD3wtPD0BqY,153
2
+ airflow_dbt_python/__version__.py,sha256=XpfEzvJGA12I8I2T2G5WfMpqAiOxGeHUN_TOjQkqQIE,190
3
+ airflow_dbt_python/hooks/__init__.py,sha256=jMdE1qzdpB_4w9IvxTnfB5g6SjEAWq6UDCnQiQi4xLQ,73
4
+ airflow_dbt_python/hooks/dbt.py,sha256=BPomtFF9Lg2YAy28k5EuNn3lRC116t76hjZzzksAqqc,13762
5
+ airflow_dbt_python/hooks/target.py,sha256=K7gmPh_AvoG35uj9Im7MQLL2Xh-CRltQuOLQ_4kvb7s,15411
6
+ airflow_dbt_python/hooks/fs/__init__.py,sha256=xwCCHrTyEAUpQiMajEs5sJUFOQLBctqggROMJXEaWew,5527
7
+ airflow_dbt_python/hooks/fs/gcs.py,sha256=RRF5gvwy_opYIJt6-RF05Ww96SrzIJDrKs859iReRNo,8458
8
+ airflow_dbt_python/hooks/fs/git.py,sha256=OlAOTrZNTTaubU3grgHCwlgEH2Lj8LCSmiPCV09zJMU,7521
9
+ airflow_dbt_python/hooks/fs/local.py,sha256=S9FU3K2U1JwuY4b6PRVzsvAL0cZK1bDVXdfChE3Qk-I,4272
10
+ airflow_dbt_python/hooks/fs/s3.py,sha256=C4l4dalvs2crbl_jDu257_BThF5WOVWvcyDHj1TTNWk,7180
11
+ airflow_dbt_python/operators/__init__.py,sha256=zveHW17YWoCpdsQhCZtvdPoEiFiwWykqPnAnOAQ8vk0,46
12
+ airflow_dbt_python/operators/dbt.py,sha256=yaov5Vd6pjEkO1XVgEPTK_EvTZUHk4Gc6AB8U5pmXjM,28742
13
+ airflow_dbt_python/utils/__init__.py,sha256=J3_g-tV35XkrZSwYULsAq4B0TUa6rw0uxP-LFwl_k2Q,45
14
+ airflow_dbt_python/utils/configs.py,sha256=mIVxjK45O6xXCzDCrCze8hI9JTP4iiabqfTX9dkVdUA,27202
15
+ airflow_dbt_python/utils/enums.py,sha256=rktUM8cTkEUsdNbzd_f6fxfgNiZGifJfOr0zvrsMyuQ,969
16
+ airflow_dbt_python/utils/env.py,sha256=o2Y3RMyXADSpUCU-G0yRiqXB-yo3oPsXtCEI7H5GIyM,646
17
+ airflow_dbt_python/utils/url.py,sha256=Ac7PJMl3AsrVMXGPgFdzOrAVsvCfS4hMWAtwgRMdbP0,16111
18
+ airflow_dbt_python/utils/version.py,sha256=RAMagzZofIAiFUFc9g06yZXM81BaMI3hH58q4xjfE0M,811
19
+ airflow_dbt_python-3.0.2.dist-info/licenses/LICENSE,sha256=8yx5JCe-4cW52JiqVrMlA990r7tuac2foiUryhV9dfY,1073
20
+ airflow_dbt_python-3.0.2.dist-info/METADATA,sha256=275OsE0QAshHk3IQgEaY9LpgN7hgG0iUehj9KiFYIf8,15925
21
+ airflow_dbt_python-3.0.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
22
+ airflow_dbt_python-3.0.2.dist-info/top_level.txt,sha256=4mfoYT9MaEb9h9Cyyu8kJwg34TKh_L3fpq0YWx-q60Y,19
23
+ airflow_dbt_python-3.0.2.dist-info/RECORD,,
@@ -1,4 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.0.1
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ airflow_dbt_python
@@ -1,22 +0,0 @@
1
- airflow_dbt_python/__init__.py,sha256=qYIsTHy4p3NX0QYIsLdatz6GlnaMwYsSoD3wtPD0BqY,153
2
- airflow_dbt_python/__version__.py,sha256=WFA4Co5hdfmcOzgxaBHPRqnEdXVtzV9KpPMwwc5_AAo,190
3
- airflow_dbt_python/hooks/__init__.py,sha256=Myrhulyj0apCqXCPYBGa2z0j9yMHasKN-uPHSSS97ak,53
4
- airflow_dbt_python/hooks/dbt.py,sha256=O-9hDV2RR5j1yXYvU3csEtuKjA53nueEoH4aqvDv_BE,13687
5
- airflow_dbt_python/hooks/fs/__init__.py,sha256=S8oZWd79bPFn73EhsggGj3TEjgQ8XOpxKn2jlRDkATA,5572
6
- airflow_dbt_python/hooks/fs/gcs.py,sha256=RRF5gvwy_opYIJt6-RF05Ww96SrzIJDrKs859iReRNo,8458
7
- airflow_dbt_python/hooks/fs/git.py,sha256=_J7j6bPYfOqCgMmq3xY3za_--lKkVuzp_hLQ-YVVM3A,7362
8
- airflow_dbt_python/hooks/fs/local.py,sha256=S9FU3K2U1JwuY4b6PRVzsvAL0cZK1bDVXdfChE3Qk-I,4272
9
- airflow_dbt_python/hooks/fs/s3.py,sha256=C4l4dalvs2crbl_jDu257_BThF5WOVWvcyDHj1TTNWk,7180
10
- airflow_dbt_python/hooks/target.py,sha256=nCZHutrMjkDiX5q6AQz9AAoHfEDLyJL9wkHk-3-dcMw,15225
11
- airflow_dbt_python/operators/__init__.py,sha256=zveHW17YWoCpdsQhCZtvdPoEiFiwWykqPnAnOAQ8vk0,46
12
- airflow_dbt_python/operators/dbt.py,sha256=-OBXCclWhc2Eur8ZRq24mCf1fsu4xS4cYkkYmJ9v2rU,28372
13
- airflow_dbt_python/utils/__init__.py,sha256=J3_g-tV35XkrZSwYULsAq4B0TUa6rw0uxP-LFwl_k2Q,45
14
- airflow_dbt_python/utils/configs.py,sha256=uZ8il2uDtFQtHZqk-1Z15k79EMdH1oijx_W41milf2Q,27154
15
- airflow_dbt_python/utils/enums.py,sha256=rktUM8cTkEUsdNbzd_f6fxfgNiZGifJfOr0zvrsMyuQ,969
16
- airflow_dbt_python/utils/env.py,sha256=o2Y3RMyXADSpUCU-G0yRiqXB-yo3oPsXtCEI7H5GIyM,646
17
- airflow_dbt_python/utils/url.py,sha256=Ac7PJMl3AsrVMXGPgFdzOrAVsvCfS4hMWAtwgRMdbP0,16111
18
- airflow_dbt_python/utils/version.py,sha256=RAMagzZofIAiFUFc9g06yZXM81BaMI3hH58q4xjfE0M,811
19
- airflow_dbt_python-3.0.0.dist-info/LICENSE,sha256=8yx5JCe-4cW52JiqVrMlA990r7tuac2foiUryhV9dfY,1073
20
- airflow_dbt_python-3.0.0.dist-info/METADATA,sha256=MC1CM3vrEFkh98l3q6BGiWfYs7ZY2oytL_ZaNSXMij4,15884
21
- airflow_dbt_python-3.0.0.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
22
- airflow_dbt_python-3.0.0.dist-info/RECORD,,