fal 0.9.2__py3-none-any.whl → 0.9.4__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.

Potentially problematic release.


This version of fal might be problematic. Click here for more details.

Files changed (93) hide show
  1. _fal_testing/utils.py +2 -2
  2. dbt/adapters/fal/__init__.py +21 -0
  3. dbt/adapters/fal/__version__.py +1 -0
  4. dbt/adapters/fal/connections.py +18 -0
  5. dbt/adapters/fal/impl.py +93 -0
  6. dbt/adapters/fal/load_db_profile.py +80 -0
  7. dbt/adapters/fal/wrappers.py +113 -0
  8. dbt/adapters/fal_experimental/__init__.py +11 -0
  9. dbt/adapters/fal_experimental/__version__.py +1 -0
  10. dbt/adapters/fal_experimental/adapter.py +149 -0
  11. dbt/adapters/fal_experimental/adapter_support.py +234 -0
  12. dbt/adapters/fal_experimental/connections.py +72 -0
  13. dbt/adapters/fal_experimental/impl.py +240 -0
  14. dbt/adapters/fal_experimental/support/athena.py +92 -0
  15. dbt/adapters/fal_experimental/support/bigquery.py +74 -0
  16. dbt/adapters/fal_experimental/support/duckdb.py +28 -0
  17. dbt/adapters/fal_experimental/support/postgres.py +88 -0
  18. dbt/adapters/fal_experimental/support/redshift.py +56 -0
  19. dbt/adapters/fal_experimental/support/snowflake.py +76 -0
  20. dbt/adapters/fal_experimental/support/trino.py +26 -0
  21. dbt/adapters/fal_experimental/telemetry/__init__.py +1 -0
  22. dbt/adapters/fal_experimental/telemetry/telemetry.py +411 -0
  23. dbt/adapters/fal_experimental/teleport.py +192 -0
  24. dbt/adapters/fal_experimental/teleport_adapter_support.py +23 -0
  25. dbt/adapters/fal_experimental/teleport_support/duckdb.py +122 -0
  26. dbt/adapters/fal_experimental/teleport_support/snowflake.py +72 -0
  27. dbt/adapters/fal_experimental/utils/__init__.py +50 -0
  28. dbt/adapters/fal_experimental/utils/environments.py +302 -0
  29. dbt/fal/adapters/python/__init__.py +3 -0
  30. dbt/fal/adapters/python/connections.py +319 -0
  31. dbt/fal/adapters/python/impl.py +291 -0
  32. dbt/fal/adapters/teleport/__init__.py +3 -0
  33. dbt/fal/adapters/teleport/impl.py +103 -0
  34. dbt/fal/adapters/teleport/info.py +73 -0
  35. dbt/include/fal/__init__.py +3 -0
  36. dbt/include/fal/dbt_project.yml +5 -0
  37. dbt/include/fal/macros/materializations/table.sql +46 -0
  38. dbt/include/fal/macros/teleport_duckdb.sql +8 -0
  39. dbt/include/fal/macros/teleport_snowflake.sql +31 -0
  40. dbt/include/fal_experimental/__init__.py +3 -0
  41. dbt/include/fal_experimental/dbt_project.yml +5 -0
  42. dbt/include/fal_experimental/macros/materializations/table.sql +36 -0
  43. fal/__init__.py +61 -11
  44. fal/dbt/__init__.py +11 -0
  45. fal/dbt/cli/__init__.py +1 -0
  46. fal/{cli → dbt/cli}/args.py +7 -2
  47. fal/{cli → dbt/cli}/cli.py +18 -3
  48. fal/{cli → dbt/cli}/dbt_runner.py +1 -1
  49. fal/{cli → dbt/cli}/fal_runner.py +6 -6
  50. fal/{cli → dbt/cli}/flow_runner.py +9 -9
  51. fal/{cli → dbt/cli}/model_generator/model_generator.py +5 -5
  52. fal/{cli → dbt/cli}/selectors.py +2 -2
  53. fal/{fal_script.py → dbt/fal_script.py} +4 -4
  54. {faldbt → fal/dbt/integration}/lib.py +2 -2
  55. {faldbt → fal/dbt/integration}/magics.py +2 -2
  56. {faldbt → fal/dbt/integration}/parse.py +7 -7
  57. {faldbt → fal/dbt/integration}/project.py +7 -7
  58. fal/dbt/integration/utils/yaml_helper.py +80 -0
  59. fal/dbt/new/project.py +43 -0
  60. fal/{node_graph.py → dbt/node_graph.py} +2 -2
  61. fal/{packages → dbt/packages}/dependency_analysis.py +32 -38
  62. fal/{packages → dbt/packages}/environments/__init__.py +3 -3
  63. fal/{packages → dbt/packages}/environments/base.py +2 -2
  64. fal/{packages → dbt/packages}/environments/conda.py +3 -3
  65. fal/{packages → dbt/packages}/environments/virtual_env.py +3 -3
  66. fal/{packages → dbt/packages}/isolated_runner.py +5 -5
  67. fal/{planner → dbt/planner}/executor.py +4 -4
  68. fal/{planner → dbt/planner}/plan.py +3 -3
  69. fal/{planner → dbt/planner}/schedule.py +5 -5
  70. fal/{planner → dbt/planner}/tasks.py +5 -5
  71. fal/{telemetry → dbt/telemetry}/telemetry.py +4 -4
  72. fal/{typing.py → dbt/typing.py} +2 -2
  73. fal/{utils.py → dbt/utils.py} +2 -2
  74. {fal-0.9.2.dist-info → fal-0.9.4.dist-info}/METADATA +98 -117
  75. fal-0.9.4.dist-info/RECORD +91 -0
  76. fal-0.9.4.dist-info/entry_points.txt +4 -0
  77. fal/cli/__init__.py +0 -1
  78. fal-0.9.2.dist-info/RECORD +0 -47
  79. fal-0.9.2.dist-info/entry_points.txt +0 -3
  80. {faldbt → dbt/adapters/fal_experimental}/utils/yaml_helper.py +0 -0
  81. /fal/{cli → dbt/cli}/model_generator/__init__.py +0 -0
  82. /fal/{cli → dbt/cli}/model_generator/module_check.py +0 -0
  83. /fal/{feature_store → dbt/feature_store}/__init__.py +0 -0
  84. /fal/{feature_store → dbt/feature_store}/feature.py +0 -0
  85. /fal/{packages → dbt/integration}/__init__.py +0 -0
  86. {faldbt → fal/dbt/integration}/logger.py +0 -0
  87. /fal/{planner → dbt/integration/utils}/__init__.py +0 -0
  88. {faldbt → fal/dbt/integration}/version.py +0 -0
  89. /fal/{telemetry → dbt/packages}/__init__.py +0 -0
  90. /fal/{packages → dbt/packages}/bridge.py +0 -0
  91. {faldbt → fal/dbt/planner}/__init__.py +0 -0
  92. {faldbt/utils → fal/dbt/telemetry}/__init__.py +0 -0
  93. {fal-0.9.2.dist-info → fal-0.9.4.dist-info}/WHEEL +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fal
3
- Version: 0.9.2
4
- Summary: fal allows you to run python scripts directly from your dbt project.
5
- Home-page: https://github.com/fal-ai/fal/blob/-/projects/fal
6
- Keywords: dbt,pandas
3
+ Version: 0.9.4
4
+ Summary: Run python scripts from any dbt project.
5
+ Home-page: https://github.com/fal-ai/fal
6
+ Keywords: dbt,pandas,fal,runtime
7
7
  Author: Features & Labels
8
8
  Author-email: hello@fal.ai
9
9
  Requires-Python: >=3.7.2,<3.12
@@ -15,50 +15,116 @@ Classifier: Programming Language :: Python :: 3.10
15
15
  Classifier: Programming Language :: Python :: 3.11
16
16
  Provides-Extra: athena
17
17
  Provides-Extra: bigquery
18
- Provides-Extra: cloud
19
- Provides-Extra: dev
20
18
  Provides-Extra: duckdb
21
19
  Provides-Extra: postgres
22
20
  Provides-Extra: redshift
23
21
  Provides-Extra: snowflake
24
- Provides-Extra: test
22
+ Provides-Extra: teleport
23
+ Provides-Extra: trino
25
24
  Requires-Dist: PyYAML (>=6.0,<7.0)
26
25
  Requires-Dist: agate-sql (>=0.5.8,<0.6.0)
27
26
  Requires-Dist: astor (>=0.8.1,<0.9.0)
27
+ Requires-Dist: awswrangler[redshift] (>=3.0.0) ; (python_version >= "3.8") and (extra == "redshift")
28
28
  Requires-Dist: backports.functools_lru_cache (>=1.6.4,<2.0.0)
29
- Requires-Dist: behave (>=1.2.6,<2.0.0) ; extra == "test"
30
- Requires-Dist: black (>=22.3,<23.0) ; extra == "test"
31
29
  Requires-Dist: dbt-core (>=1.5,<=1.5.1)
32
30
  Requires-Dist: deprecation (>=2.1.0,<3.0.0)
33
31
  Requires-Dist: dill (>=0.3.6,<0.3.7)
34
32
  Requires-Dist: duckdb-engine (>=0.1.8,<0.2.0) ; extra == "duckdb"
33
+ Requires-Dist: fal-serverless (>=0.6.35,<0.7.0)
35
34
  Requires-Dist: google-cloud-bigquery[pandas] (>=3.5.0,<3.6.0) ; extra == "bigquery"
36
- Requires-Dist: importlib-metadata (>=4.12.0)
37
- Requires-Dist: matplotlib (>=3.5.2,<4.0.0) ; extra == "dev"
38
- Requires-Dist: mock (>=4.0.3,<5.0.0) ; extra == "test"
39
- Requires-Dist: packaging (>20.9)
35
+ Requires-Dist: importlib-metadata (>=6.0.0,<7.0.0)
36
+ Requires-Dist: packaging (>=23)
40
37
  Requires-Dist: pandas (>=1.3.4,<2.0.0)
41
38
  Requires-Dist: platformdirs (>=2.5.2,<3.0.0)
42
39
  Requires-Dist: posthog (>=1.4.5,<2.0.0)
43
- Requires-Dist: pytest (>=5.2,<6.0) ; extra == "test"
44
- Requires-Dist: pytest-mock (>=3.7.0,<4.0.0) ; extra == "test"
45
- Requires-Dist: requests (>=2.27.1,<3.0.0)
40
+ Requires-Dist: s3fs (>=2022.8.2) ; extra == "teleport"
46
41
  Requires-Dist: snowflake-connector-python[pandas] (>=3.0,<4.0) ; extra == "snowflake"
42
+ Requires-Dist: sqlalchemy (>=1.4.41,<2.0.0)
47
43
  Requires-Dist: sqlalchemy-redshift (>=0.8.9,<0.9.0) ; extra == "redshift"
44
+ Requires-Dist: trino[sqlalchemy] (>=0.321.0,<0.322.0) ; extra == "trino"
48
45
  Requires-Dist: virtualenv (>=20.16.2,<21.0.0)
49
- Project-URL: Documentation, https://docs.fal.ai
50
46
  Project-URL: Repository, https://github.com/fal-ai/fal
51
47
  Description-Content-Type: text/markdown
52
48
 
53
- <!-- <base href="https://github.com/fal-ai/fal/blob/-/projects/fal/" target="_blank" /> -->
49
+ <!-- <base href="https://github.com/fal-ai/fal/blob/-/projects/adapter/" target="_blank" /> -->
54
50
 
55
- # fal: do more with dbt
51
+ # Welcome to dbt-fal 👋 do more with dbt
56
52
 
57
- fal is the easiest way to run Python with your [dbt](https://www.getdbt.com/) project.
53
+ dbt-fal adapter is the easiest way to run your [dbt Python models](https://docs.getdbt.com/docs/building-a-dbt-project/building-models/python-models).
58
54
 
59
- # Introduction
55
+ Starting with dbt v1.3, you can now build your dbt models in Python. This leads to some cool use cases that was once difficult to build with SQL alone. Some examples are:
60
56
 
61
- With the `fal` CLI, you can:
57
+ - Using Python stats libraries to calculate stats
58
+ - Building forecasts
59
+ - Building other predictive models such as classification and clustering
60
+
61
+ This is fantastic! BUT, there is still one issue though! The developer experience with Snowflake and Bigquery is not great, and there is no Python support for Redshift and Postgres.
62
+
63
+ dbt-fal provides the best environment to run your Python models that works with all other data warehouses! With dbt-fal, you can:
64
+
65
+ - Build and test your models locally
66
+ - Isolate each model to run in its own environment with its own dependencies
67
+ - [Coming Soon] Run your Python models in the ☁️ cloud ☁️ with elasticly scaling Python environments.
68
+ - [Coming Soon] Even add GPUs to your models for some heavier workloads such as training ML models.
69
+
70
+ ## Getting Started
71
+
72
+ ### 1. Install dbt-fal
73
+ `pip install dbt-fal[bigquery,snowflake]` *Add your current warehouse here*
74
+
75
+ ### 2. Update your `profiles.yml` and add the fal adapter
76
+
77
+ ```yaml
78
+ jaffle_shop:
79
+ target: dev_with_fal
80
+ outputs:
81
+ dev_with_fal:
82
+ type: fal
83
+ db_profile: dev_bigquery # This points to your main adapter
84
+ dev_bigquery:
85
+ type: bigquery
86
+ ...
87
+ ```
88
+
89
+ Don't forget to point to your main adapter with the `db_profile` attribute. This is how the fal adapter knows how to connect to your data warehouse.
90
+
91
+ ### 3. `dbt run`!
92
+ That is it! It is really that simple 😊
93
+
94
+ ### 4. [🚨 Cool Feature Alert 🚨] Environment management with dbt-fal
95
+ If you want some help with environment management (vs sticking to the default env that the dbt process runs in), you can create a fal_project.yml in the same folder as your dbt project and have “named environments”:
96
+
97
+ In your dbt project folder:
98
+ ```bash
99
+ $ touch fal_project.yml
100
+
101
+ # Paste the config below
102
+ environments:
103
+ - name: ml
104
+ type: venv
105
+ requirements:
106
+ - prophet
107
+ ```
108
+
109
+ and then in your dbt model:
110
+
111
+ ```bash
112
+ $ vi models/orders_forecast.py
113
+
114
+ def model(dbt, fal):
115
+ dbt.config(fal_environment="ml") # Add this line
116
+
117
+ df: pd.DataFrame = dbt.ref("orders_daily")
118
+ ```
119
+
120
+ The `dbt.config(fal_environment=“ml”)` will give you an isolated clean env to run things in, so you dont pollute your package space.
121
+
122
+ ### 5. [Coming Soon™️] Move your compute to the Cloud!
123
+ Let us know if you are interested in this. We are looking for beta users.
124
+
125
+ # `dbt-fal` command line tool
126
+
127
+ With the `dbt-fal` CLI, you can:
62
128
 
63
129
  - [Send Slack notifications](https://github.com/fal-ai/fal/blob/-/examples/slack-example) upon dbt model success or failure.
64
130
  - [Load data from external data sources](https://blog.fal.ai/populate-dbt-models-with-csv-data/) before a model starts running.
@@ -67,14 +133,11 @@ With the `fal` CLI, you can:
67
133
 
68
134
  Head to our [documentation site](https://docs.fal.ai/) for a deeper dive or play with [in-depth examples](https://github.com/fal-ai/fal/blob/-/examples/README.md) to see how fal can help you get more done with dbt.
69
135
 
70
- > ❗️ If you would like to write data back to your data-warehouse, we recommend using the [`dbt-fal`](https://pypi.org/project/dbt-fal/) adapter.
71
-
72
- # Getting Started
73
136
 
74
- ## 1. Install `fal`
137
+ ## 1. Install `dbt-fal`
75
138
 
76
139
  ```bash
77
- $ pip install fal
140
+ $ pip install dbt-fal[postgres]
78
141
  ```
79
142
 
80
143
  ## 2. Go to your dbt project directory
@@ -124,11 +187,11 @@ models:
124
187
  - send_slack_message.py
125
188
  ```
126
189
 
127
- ## 5. Run `fal flow run`
190
+ ## 5. Run `dbt-fal flow run`
128
191
 
129
192
  ```bash
130
- $ fal flow run
131
- # both your dbt models and fal scripts are run
193
+ $ dbt-fal flow run
194
+ # both your dbt models and python scripts are run
132
195
  ```
133
196
 
134
197
  ## 6. Alternatively run `dbt` and `fal` consecutively
@@ -137,44 +200,10 @@ $ fal flow run
137
200
  $ dbt run
138
201
  # Your dbt models are run
139
202
 
140
- $ fal run
203
+ $ dbt-fal run
141
204
  # Your python scripts are run
142
205
  ```
143
206
 
144
- # Examples
145
-
146
- To explore what is possible with fal, take a look at the in-depth examples below. We will be adding more examples here over time:
147
-
148
- - [Example 1: Send Slack notifications](https://github.com/fal-ai/fal/blob/-/examples/slack-example/README.md)
149
- - [Example 2: Use dbt from a Jupyter Notebook](https://github.com/fal-ai/fal/blob/-/examples/write_jupyter_notebook/README.md)
150
- - [Example 3: Read and parse dbt metadata](https://github.com/fal-ai/fal/blob/-/examples/read_dbt_metadata/README.md)
151
- - [Example 4: Metric forecasting](https://github.com/fal-ai/fal/blob/-/examples/metric-forecast/README.md)
152
- - [Example 5: Sentiment analysis on support tickets](https://github.com/fal-ai/fal/blob/-/examples/sentiment-analysis/README.md)
153
- - [Example 6: Anomaly Detection](https://github.com/fal-ai/fal/blob/-/examples/anomaly-detection/README.md)
154
- - [Example 7: Incorporate fal in CI/CD workflow](https://github.com/fal-ai/fal/blob/-/examples/ci_example/README.md)
155
- - [Example 8: Send events to Datadog](https://github.com/fal-ai/fal/blob/-/examples/datadog_event/README.md)
156
- - [Example 9: Write dbt artifacts to GCS](https://github.com/fal-ai/fal/blob/-/examples/write_to_gcs/README.md)
157
- - [Example 10: Write dbt artifacts to AWS S3](https://github.com/fal-ai/fal/blob/-/examples/write_to_aws/README.md)
158
-
159
- [Check out the examples directory for more](https://github.com/fal-ai/fal/blob/-/examples/README.md)
160
-
161
- # How it works?
162
-
163
- `fal` is a command line tool that can read the state of your `dbt` project and help you run Python scripts after your `dbt run`s by leveraging the [`meta` config](https://docs.getdbt.com/reference/resource-configs/meta).
164
-
165
- ```yaml
166
- models:
167
- - name: historical_ozone_levels
168
- ...
169
- meta:
170
- fal:
171
- post-hook:
172
- # scripts will run concurrently
173
- - send_slack_message.py
174
- - another_python_script.py
175
- ```
176
-
177
- `fal` also provides useful helpers within the Python context to seamlessly interact with dbt models: `ref("my_dbt_model_name")` will pull a dbt model into your Python script as a [`pandas.DataFrame`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html).
178
207
 
179
208
  ## Running scripts before dbt runs
180
209
 
@@ -197,11 +226,11 @@ models:
197
226
  - fal_scripts/slack.py
198
227
  ```
199
228
 
200
- `fal flow run` will run `fal_scripts/trigger_fivetran.py`, then the `boston` dbt model, and finally `fal_scripts/slack.py`.
229
+ `dbt-fal flow run` will run `fal_scripts/trigger_fivetran.py`, then the `boston` dbt model, and finally `fal_scripts/slack.py`.
201
230
  If a model is selected with a selection flag (e.g. `--select boston`), the hooks associated to the model will always run with it.
202
231
 
203
232
  ```bash
204
- $ fal flow run --select boston
233
+ $ dbt-fal flow run --select boston
205
234
  ```
206
235
 
207
236
  # Concepts
@@ -312,13 +341,14 @@ from sqlalchemy.types import Integer
312
341
  write_to_model(df, dtype={'value': Integer()})
313
342
  ```
314
343
 
344
+
315
345
  ## Importing `fal` as a Python package
316
346
 
317
347
  You may be interested in accessing dbt models and sources easily from a Jupyter Notebook or another Python script.
318
348
  For that, just import the `fal` package and intantiate a FalDbt project:
319
349
 
320
350
  ```py
321
- from fal import FalDbt
351
+ from fal.dbt import FalDbt
322
352
  faldbt = FalDbt(profiles_dir="~/.dbt", project_dir="../my_project")
323
353
 
324
354
  faldbt.list_sources()
@@ -342,59 +372,10 @@ tickets = faldbt.ref('stg_zendesk_ticket_data')
342
372
  # pandas.DataFrame
343
373
  ```
344
374
 
345
- # Supported `dbt` versions
346
-
347
- The latest `fal` version currently supports dbt `1.4.*`.
348
-
349
- If you need another version, [open an issue](https://github.com/fal-ai/fal/issues/new) and we will take a look!
350
-
351
- # Contributing / Development
352
-
353
- We use Poetry for dependency management and easy development testing.
354
-
355
- Use Poetry shell to trying your changes right away:
356
-
357
- ```sh
358
- ~ $ cd fal
359
-
360
- ~/fal $ poetry install
361
-
362
- ~/fal $ poetry shell
363
- Spawning shell within [...]/fal-eFX98vrn-py3.8
364
-
365
- ~/fal fal-eFX98vrn-py3.8 $ cd ../dbt_project
366
-
367
- ~/dbt_project fal-eFX98vrn-py3.8 $ fal flow run
368
- 19:27:30 Found 5 models, 0 tests, 0 snapshots, 0 analyses, 165 macros, 0 operations, 0 seed files, 1 source, 0 exposures, 0 metrics
369
- 19:27:30 | Starting fal run for following models and scripts:
370
- [...]
371
- ```
372
-
373
- ## Running tests
374
-
375
- Tests rely on a Postgres database to be present, this can be achieved with docker-compose:
376
-
377
- ```sh
378
- ~/fal $ docker-compose -f tests/docker-compose.yml up -d
379
- Creating network "tests_default" with the default driver
380
- Creating fal_db ... done
381
-
382
- # Necessary for the import test
383
- ~/fal $ dbt run --profiles-dir tests/mock/mockProfile --project-dir tests/mock
384
- Running with dbt=1.0.1
385
- [...]
386
- Completed successfully
387
- Done. PASS=5 WARN=0 ERROR=0 SKIP=0 TOTAL=5
388
-
389
- ~/fal $ pytest -s
390
- ```
391
-
392
375
  # Why are we building this?
393
376
 
394
377
  We think `dbt` is great because it empowers data people to get more done with the tools that they are already familiar with.
395
378
 
396
- `dbt`'s SQL only design is powerful, but if you ever want to get out of SQL-land and connect to external services or get into Python-land for any reason, you will have a hard time. We built `fal` to enable Python workloads (sending alerts to Slack, building predictive models, pushing data to non-data-warehouse destinations and more) **right within `dbt`**.
397
-
398
379
  This library will form the basis of our attempt to more comprehensively enable **data science workloads** downstream of `dbt`. And because having reliable data pipelines is the most important ingredient in building predictive analytics, we are building a library that integrates well with dbt.
399
380
 
400
381
  # Have feedback or need help?
@@ -0,0 +1,91 @@
1
+ dbt/adapters/fal/__init__.py,sha256=VwZ08vx2PW89y2oTY0tbB-dIQy3xKc84GmvqbunNPIY,639
2
+ dbt/adapters/fal/__version__.py,sha256=fFFr4WLVlhuwQUM305_QUjACDVG0eb7I7tgznnvNQtU,18
3
+ dbt/adapters/fal/connections.py,sha256=lcgcGlRBfqZq6wR2JKO95iu0oCc_ioyn2COWEjqsMEU,392
4
+ dbt/adapters/fal/impl.py,sha256=lTow7rJMehpk4Fkcz-Qnd-ZomL2IAy8ECNKR9RharOw,3369
5
+ dbt/adapters/fal/load_db_profile.py,sha256=mshPYal9yH6iYh_Ep1Y1GcIapxu1Nw3mINybyCyD3TU,2768
6
+ dbt/adapters/fal/wrappers.py,sha256=q2u36PMExI4TitBkNrbworJkOD_alcgX3RJ57ZiaWxQ,4091
7
+ dbt/adapters/fal_experimental/__init__.py,sha256=dNHVZjPoSJArCgNXagh5SQyRenK6Pi9Q21VwyMhJcVM,344
8
+ dbt/adapters/fal_experimental/__version__.py,sha256=fFFr4WLVlhuwQUM305_QUjACDVG0eb7I7tgznnvNQtU,18
9
+ dbt/adapters/fal_experimental/adapter.py,sha256=Nu1O07l1Vtr9u1IywibIrcdJy-5Nh18o2nBh6aVTbzA,4861
10
+ dbt/adapters/fal_experimental/adapter_support.py,sha256=qfSxls9HvsAmodpgAuEnwodX0JgvL9A0PWkV5NWUjFs,8381
11
+ dbt/adapters/fal_experimental/connections.py,sha256=DF9sQhq-jYSuO97sxrbPOXdEDev2PuVShiG2W8P1QG8,1627
12
+ dbt/adapters/fal_experimental/impl.py,sha256=2G3FfFYFUXCUsuWx72MVZOjob7hwEusm9eAf8cPxwFY,8714
13
+ dbt/adapters/fal_experimental/support/athena.py,sha256=iZrMapDPBtrZeEmzF1S4wx4dMo4gO-rexl-9csBouAo,3192
14
+ dbt/adapters/fal_experimental/support/bigquery.py,sha256=F8jgqerhrL4s-_kThW2RpXdMyykRMgrVGBAS-srmyfU,2686
15
+ dbt/adapters/fal_experimental/support/duckdb.py,sha256=uHvkcH6cLO4Hw-U8U44go0ZfSn9y5ZxOY6aMda6bwak,980
16
+ dbt/adapters/fal_experimental/support/postgres.py,sha256=aHNnKGXmKA6njAKkauvL3-lHoGUPLsHER3iNxx-J_10,2977
17
+ dbt/adapters/fal_experimental/support/redshift.py,sha256=MryR-wmBdZZGB41ZtgtDF7CeqPaqiTe5IOtgF0UfhTM,1633
18
+ dbt/adapters/fal_experimental/support/snowflake.py,sha256=ZC2kthLO08VoVy7xtUPczOpxTpaVXUWAuY2pNDHrYHo,2781
19
+ dbt/adapters/fal_experimental/support/trino.py,sha256=3pDGGsPk0OpXhMd9FFGY16MMEPZTcihWE5uHYlgx8qQ,821
20
+ dbt/adapters/fal_experimental/telemetry/__init__.py,sha256=qYIWiHLzqpDMPAixoGuKXETfub8cNm1TIjP0XE55AmE,25
21
+ dbt/adapters/fal_experimental/telemetry/telemetry.py,sha256=Ov66uo-U6xM58hOJpW6d7feOrG4RC8jIjnlmXqDjFZA,10767
22
+ dbt/adapters/fal_experimental/teleport.py,sha256=kvWDQB_e_RsA6AnwaNU1nk-Bu55bhdc6FtJ2Kv8kA04,6572
23
+ dbt/adapters/fal_experimental/teleport_adapter_support.py,sha256=2iXrpQ9D3jKQqJzph6jfiWt1DSvZedogauzcdWeZUzI,1153
24
+ dbt/adapters/fal_experimental/teleport_support/duckdb.py,sha256=cAdGzcesGQFT3AIHb-c6Td01igr4T7nMox-U7q3sUn8,4719
25
+ dbt/adapters/fal_experimental/teleport_support/snowflake.py,sha256=ag9J6HyHl21TuSRtR6mQhwpr7gdtErRlZR0sk-dR23A,2972
26
+ dbt/adapters/fal_experimental/utils/__init__.py,sha256=o5Nz9NNCM__bhRl3_tb07HRR7ogFuZgi_waCE-BKa9Q,1256
27
+ dbt/adapters/fal_experimental/utils/environments.py,sha256=Xj1mWQb_j6blLImewRI0t03h82QcxSKJK6iASWWKprY,9804
28
+ dbt/adapters/fal_experimental/utils/yaml_helper.py,sha256=k2MtoOHVAHMXSEh6FFYxoSZZx1wmvdf1me7IFVmw19E,1970
29
+ dbt/fal/adapters/python/__init__.py,sha256=1xWOnNgJNaBHowLCAWeIAjpZ3gF1dq9l8nxks5zuqGw,208
30
+ dbt/fal/adapters/python/connections.py,sha256=lE7WGyKBWrU9UEy9rHYhLa8KWzlS4JgJPZYJeEcrmvU,11898
31
+ dbt/fal/adapters/python/impl.py,sha256=VMQCSkMkoolOo9EU1Ny_-8aJlC-bZaiSFf1wCBAfgbU,10015
32
+ dbt/fal/adapters/teleport/__init__.py,sha256=mGP9z0YHVggVxrY7nk1FKINdVhUzyY9RG6mFhOf4sys,181
33
+ dbt/fal/adapters/teleport/impl.py,sha256=1ycpmRHaBskJ6bAZybA2l6bWycpkDSMvS4WGWC6oLT4,3498
34
+ dbt/fal/adapters/teleport/info.py,sha256=gDfqyO4060-UE5OJIxIZ9iAWk8s9bcZLBNpl0zgS-mg,2310
35
+ dbt/include/fal/__init__.py,sha256=vBGWeG-dHHkimfnX8axBJ4IgAowFw8xADmo6Auzn2xc,52
36
+ dbt/include/fal/dbt_project.yml,sha256=ODYEcHaq_MWtZK4XkCLiv1u3ChdQuzYxpxEMn5IiEIo,70
37
+ dbt/include/fal/macros/materializations/table.sql,sha256=skMA8pdSdzceUEtXOA5e0TCIe_zuqwAr4KTDsVMcNEw,1213
38
+ dbt/include/fal/macros/teleport_duckdb.sql,sha256=8N7lZy5H-O8MbWENwq95oGeK6sQqgPf1BOqjX9ujOEY,265
39
+ dbt/include/fal/macros/teleport_snowflake.sql,sha256=mXo2iV4Ocj1ixOPMv4VjD4ha0KrmhkjzbBPtG8xFoeE,921
40
+ dbt/include/fal_experimental/__init__.py,sha256=vBGWeG-dHHkimfnX8axBJ4IgAowFw8xADmo6Auzn2xc,52
41
+ dbt/include/fal_experimental/dbt_project.yml,sha256=r2itIfdWtNTvE9SmRJ0R7FOjCalKWPLjntHr-liYMSc,83
42
+ dbt/include/fal_experimental/macros/materializations/table.sql,sha256=_R7jR1MRMoSO3Pv_UAUBbpEu-tXKOQS7Lr86Udhh38U,989
43
+ fal/__init__.py,sha256=G_s4cL-P9ooLaJk3CEfg_Pu42uQAyYkrcVi9GWPkJFY,1905
44
+ fal/dbt/__init__.py,sha256=IYo6vCmfe9A4eUS5ehCrBXQ7wzF5NsaclsGYDKTBiIw,238
45
+ fal/dbt/cli/__init__.py,sha256=ChDWHUA042He1e4H58zUvTi5Cm4RICNmsABH9Hlzc1I,30
46
+ fal/dbt/cli/args.py,sha256=A6C-FctdpmFI4oipngK1fbTWtyK3lFpP0QmjdhiBX2o,7650
47
+ fal/dbt/cli/cli.py,sha256=fueFoatTjBzZl41KmD7bigtumnDyaaDOokpsWof4EyE,1550
48
+ fal/dbt/cli/dbt_runner.py,sha256=hn1ks7TKJx8Vy-QKdMqNTlgAejb_m4MosM_6VwBDLNA,5482
49
+ fal/dbt/cli/fal_runner.py,sha256=YG_loQxd_SHa72WyjaOPteBlzSzrR3rlKbACzICeCto,5857
50
+ fal/dbt/cli/flow_runner.py,sha256=BkjEXRiNgDUPeQgpwSSiZSvFDxrgKqTy1jlE1-sEbXA,4475
51
+ fal/dbt/cli/model_generator/__init__.py,sha256=OGu8cz3PjjrWqpC4EH7NSBAj57Niyep0Nc_CX4YECYc,56
52
+ fal/dbt/cli/model_generator/model_generator.py,sha256=eyPpxQZXzHvLGXWhF61OcaeSQIS8UO5vqu9inHdfmqw,5543
53
+ fal/dbt/cli/model_generator/module_check.py,sha256=p4PiHsWG5MEebmhOFZaL6KiXd4SrOtKNfEys7twIrAI,3180
54
+ fal/dbt/cli/selectors.py,sha256=aWokwA0BNu8X_LeaMemlK0EaBf-qeR7wSetOw51OuKo,9759
55
+ fal/dbt/fal_script.py,sha256=8O37TWsyDWE-h5nRIV_k_wtyEdjlafIfU41cAcNfGnY,12349
56
+ fal/dbt/feature_store/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ fal/dbt/feature_store/feature.py,sha256=spvdKH5_I1Wm-Su6g7B6IMWkCiuGqNKukjRFS_Wf19E,401
58
+ fal/dbt/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
+ fal/dbt/integration/lib.py,sha256=MWpK4t5DOHprKdJU0zUogqc8bmsmdY5CYZNTmwsSFW4,24589
60
+ fal/dbt/integration/logger.py,sha256=k1dNcifiFLLtI4PnvGoVJ1lGcST4cPNXt2f3tEWIq0c,3273
61
+ fal/dbt/integration/magics.py,sha256=1s-GOz5toPRiUuJfwJ2XLJB_iSrSa22Nl-0rw2Y10bs,1867
62
+ fal/dbt/integration/parse.py,sha256=lHAu0ud95-xArxkoqKbktTjrw2QR0GnRbIRRlXZ7byo,9103
63
+ fal/dbt/integration/project.py,sha256=4PfcjCdvbJsy4jkQl3WAdTkE_GYrrlr0azV3YyVMqN0,27168
64
+ fal/dbt/integration/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
+ fal/dbt/integration/utils/yaml_helper.py,sha256=k2MtoOHVAHMXSEh6FFYxoSZZx1wmvdf1me7IFVmw19E,1970
66
+ fal/dbt/integration/version.py,sha256=hxqo8cVvFN3kzYI4X4ugzAum6XSYUPZWL-AUf-5Rg8Y,317
67
+ fal/dbt/new/project.py,sha256=xZ-tl9n_g_t-M6VeGLwpNjnuyzwJz03uchnKPDWM2ig,1530
68
+ fal/dbt/node_graph.py,sha256=YuhpYR0JRg89XK2pRZs8V7cg32o7y0iDI-WCu8OvnhU,8411
69
+ fal/dbt/packages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
+ fal/dbt/packages/bridge.py,sha256=sMpRp1R3ai3pKPocVJ7B4Mmyec5eYY9Ulm1_cawDx5s,1603
71
+ fal/dbt/packages/dependency_analysis.py,sha256=ugny-4N8UojbhsX7lhvhBm64fvaN4VHx0XgWMMvb1sk,5562
72
+ fal/dbt/packages/environments/__init__.py,sha256=LX8XYJmrWJyAGQSswD9e2lOu1X90V4mPhb2hKapLtmM,805
73
+ fal/dbt/packages/environments/base.py,sha256=Nqjl7h_lndWZpjQ8hJapruPwpWgl4fPZXeJU2vP8_3s,9499
74
+ fal/dbt/packages/environments/conda.py,sha256=RNbjKt2jOTpx229vvBEN4-yqVKuWvc8gJN1nQnUzy6w,4407
75
+ fal/dbt/packages/environments/virtual_env.py,sha256=gqAPil0OfW0jk6FfzoXNKeHMAR3-wSINpxhxYKnkke0,3381
76
+ fal/dbt/packages/isolated_runner.py,sha256=uAbl0dajA3XfeKTzd-XtqivEInCYC7zPnHy3dCalrcY,4823
77
+ fal/dbt/planner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
+ fal/dbt/planner/executor.py,sha256=xnKDM5nA6z7mcf7bR6cvt1FNs5v4NvS6ZS29rEUfdgY,5669
79
+ fal/dbt/planner/plan.py,sha256=pkpkE8Cp_WLyyIQA7aS-47jElPNLfc3LwHxF8JgRC8k,6496
80
+ fal/dbt/planner/schedule.py,sha256=pK7kC-dtu2_5GTnAuyI0vMImIOXHJjAHONJWl2DA_Ls,6790
81
+ fal/dbt/planner/tasks.py,sha256=T1-rAUJz45ea1yhe7BejokeOAhu1wtRxkQ6uwzzq4VY,9079
82
+ fal/dbt/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
+ fal/dbt/telemetry/telemetry.py,sha256=PRVXczIItEZ3W81kizLBE-P0qhV40taRyDfDZFMEwro,11441
84
+ fal/dbt/typing.py,sha256=W7_cI1t6lpRDTwn-b70kRvdaL8D43e6BfTP7g5taqaQ,3060
85
+ fal/dbt/utils.py,sha256=ylry1Tfz88tDXJrkzhZa-N5qPQ1_k6ERRlsFPbM9X6Y,1728
86
+ _fal_testing/__init__.py,sha256=Fxcl2GmqKOhvgGmVoReTVUUnyvYw8tue1Dan3mY--rs,33
87
+ _fal_testing/utils.py,sha256=wuKpLogVzQTVoxzVhgOe42VgnRemJcr8HRiYJ2WauRg,1794
88
+ fal-0.9.4.dist-info/METADATA,sha256=vw9dPhHSM1k-wVkKizyUHVQdWPFKfJ1K0LD-PxJxeLE,12552
89
+ fal-0.9.4.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
90
+ fal-0.9.4.dist-info/entry_points.txt,sha256=je5m-eBDYmMt5iXT5HxuyB3uy4boqglvdAnWhRAxUFw,67
91
+ fal-0.9.4.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ dbt-fal=fal.dbt.cli:cli
3
+ fal=fal.dbt.cli:fal_cli
4
+
fal/cli/__init__.py DELETED
@@ -1 +0,0 @@
1
- from .cli import cli
@@ -1,47 +0,0 @@
1
- fal/__init__.py,sha256=h10jzWqB8kRFSo7rL8m58bO_DxveG-NqXxrFsba8b_U,221
2
- fal/cli/__init__.py,sha256=QPWtj5wDRTINDxVUL7XPqG3HoxHNvYOg08EnuSZB2Hc,21
3
- fal/cli/args.py,sha256=BCHbJ2sxaAuvoyixZkcWHf35GwUe36OTg8OLhuM2zUc,7450
4
- fal/cli/cli.py,sha256=39Kk8NjlsAmjgsKo7XHLvFe4mb_m-VWizEhqm0Vzxss,1019
5
- fal/cli/dbt_runner.py,sha256=5gAIkjqunpfUNejsP2J8pVGJoPgVOQOV7Z8jqFqZHGM,5469
6
- fal/cli/fal_runner.py,sha256=fyoD853IICz2W-eKqz-E3dDCJUS9GCRf4-XpnQpDIsM,5815
7
- fal/cli/flow_runner.py,sha256=xARmNNxtunvBMV0KejSAVOWDrYrDRHPdQHt-iHPEerU,4430
8
- fal/cli/model_generator/__init__.py,sha256=OGu8cz3PjjrWqpC4EH7NSBAj57Niyep0Nc_CX4YECYc,56
9
- fal/cli/model_generator/model_generator.py,sha256=TbhmXWq90C0DudaXZxOnAjZLKz1Oj3dKPdCtz_Pkumk,5505
10
- fal/cli/model_generator/module_check.py,sha256=p4PiHsWG5MEebmhOFZaL6KiXd4SrOtKNfEys7twIrAI,3180
11
- fal/cli/selectors.py,sha256=DuMlyP8nVUDo1J8w5YgjZb62rH_9k6ZlMjoqwZAZIq0,9742
12
- fal/fal_script.py,sha256=Xf1apLJDDcSh_o3cZy0VGYea9Mjyl5TtjY9W44ayUBM,12306
13
- fal/feature_store/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- fal/feature_store/feature.py,sha256=spvdKH5_I1Wm-Su6g7B6IMWkCiuGqNKukjRFS_Wf19E,401
15
- fal/node_graph.py,sha256=2grcZ7CE1cp6YTYJtTLVGokJze0HIFIadhWT-FV3maM,8394
16
- fal/packages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- fal/packages/bridge.py,sha256=sMpRp1R3ai3pKPocVJ7B4Mmyec5eYY9Ulm1_cawDx5s,1603
18
- fal/packages/dependency_analysis.py,sha256=hdutmFD6vlphajNgROL86CuZRfuNK-KpnG5RO92jaSE,5332
19
- fal/packages/environments/__init__.py,sha256=tx4twQe7IYtw2GWc9SA9Whpuvt8UIzf_bYt16ZAZExk,793
20
- fal/packages/environments/base.py,sha256=nKnIVWPx6zEClA5Onp2zh1NUeyJ6Kev-Ly5hmup_2PU,9482
21
- fal/packages/environments/conda.py,sha256=oxeGonFr1sX6lZR6hdwtjgOEgYMBrHQ_-l_RscMN43Y,4395
22
- fal/packages/environments/virtual_env.py,sha256=CD2Wkut_tIQP6K0_mhxriSrkPcQ1nvo6hKJkfMmGaOw,3369
23
- fal/packages/isolated_runner.py,sha256=wbLvsMNy__4r1n1cC8xHcxpTeSs2Hbr8RZEL-wOIASQ,4776
24
- fal/planner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- fal/planner/executor.py,sha256=u5Q5Mt-H2T1fAfPxZ4tgJU66pn0zSz3wk8W9j7n8CQA,5635
26
- fal/planner/plan.py,sha256=_bDaIf4u9482UEthzStzs7vzIZYa4Ii-wNZr5ylgl10,6475
27
- fal/planner/schedule.py,sha256=QAm9yyRFXAqcQlGoGS7UQASCQAdgttrc1qBriRPT0AI,6761
28
- fal/planner/tasks.py,sha256=SLOzOpuJgwuyu_-3cxIoQyMwszwmTv-l4zeQGvToiWs,9041
29
- fal/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- fal/telemetry/telemetry.py,sha256=CiIP1eCX1e0OpsoTBww-ZJrPol7olyCVqO8M_WW-ULI,11416
31
- fal/typing.py,sha256=GmqvSwneozdo3KpEs0i8AswfIkV4Mryt8hQ-RN8LLwE,3043
32
- fal/utils.py,sha256=KbxUa3DfFdSYFzaV11xkaJgBzWwBmhNGidiEk9PvLZ4,1711
33
- faldbt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- faldbt/lib.py,sha256=7MvY_UAbv2R3tA92Ngwroe5sO1eHIrBXUksQJeo_fUs,24563
35
- faldbt/logger.py,sha256=k1dNcifiFLLtI4PnvGoVJ1lGcST4cPNXt2f3tEWIq0c,3273
36
- faldbt/magics.py,sha256=1tpap6rDx7urkXcsIrt29_AyslUEOxhJA7nfgAnpacg,1850
37
- faldbt/parse.py,sha256=7VaoVq7aWIg0zC6Ehf2ECAnfmDQdFUoIbuSTyDDgvi8,9057
38
- faldbt/project.py,sha256=2kVad-n-_E8RFt42-NxJ8TLSJjH98xjsXyCiYw0mvgo,27131
39
- faldbt/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- faldbt/utils/yaml_helper.py,sha256=k2MtoOHVAHMXSEh6FFYxoSZZx1wmvdf1me7IFVmw19E,1970
41
- faldbt/version.py,sha256=hxqo8cVvFN3kzYI4X4ugzAum6XSYUPZWL-AUf-5Rg8Y,317
42
- _fal_testing/__init__.py,sha256=Fxcl2GmqKOhvgGmVoReTVUUnyvYw8tue1Dan3mY--rs,33
43
- _fal_testing/utils.py,sha256=cW4458HXJ95IGzz0h95K0gA45AXgsTCgi-cIGigLSrQ,1786
44
- fal-0.9.2.dist-info/METADATA,sha256=EBvBN4Z8GT7wNoM3Y2dHwQ7kcjVKzHNbPbMS3bwR2AQ,13982
45
- fal-0.9.2.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
46
- fal-0.9.2.dist-info/entry_points.txt,sha256=G6LKzRkodkASbMn1KxCYtGyILAW0dcAcf9ifGYgE3iA,35
47
- fal-0.9.2.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- [console_scripts]
2
- fal=fal.cli:cli
3
-
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes